From 1c2b707ce847ee59348849f43bf0ac43ddcad131 Mon Sep 17 00:00:00 2001 From: Serge NOEL Date: Fri, 20 Nov 2020 13:56:16 +0100 Subject: [PATCH] Ajout projet webAduc --- Docker/Samba-Ad-DC/Dockerfile | 42 + Docker/Samba-Ad-DC/LICENSE | 674 ++++++++ Docker/Samba-Ad-DC/README.md | 59 + Docker/Samba-Ad-DC/entrypoint.sh | 82 + EasyCloud.code-workspace | 8 + README.md | 9 + Sources/webAduc/.gitignore | 2 + Sources/webAduc/Dockerfile | 12 + .../ITIE-TTF-Modèle de fiche de test.xls | Bin 0 -> 84480 bytes ..., fast, and secure PHP template engine.htm | 811 ++++++++++ .../base.css | 446 ++++++ .../blackfire.png | Bin 0 -> 4315 bytes .../code.css | 496 ++++++ .../colors.css | 39 + .../da02766c-18d7-4302-aede-0547d35f0ad8.png | Bin 0 -> 2458 bytes .../dc.js | 76 + .../dis.htm | 3 + .../event.js | 9 + .../ga.js | 77 + .../jquery-1.js | 4 + .../ld.js | 21 + .../pygments.css | 69 + .../reset-min.css | 7 + .../sensio-labs-product.svg | 47 + .../sensiocloud.svg | 1 + .../sensiolabs.png | Bin 0 -> 1386 bytes .../sensiolabsinsight.png | Bin 0 -> 14546 bytes .../sln.css | 1 + .../sln.js | 262 ++++ ...tion de Twig, un moteur de templates !.htm | 1116 ++++++++++++++ .../1570554156513134.js | 1 + .../2080865.js | 1 + .../2080865_002.js | 18 + .../300lo.json | 1 + .../90dc06697a | 1 + .../_ate.config_resp | 1 + .../amplitude-3.js | 3 + .../analytics.js | 46 + .../analytics_002.js | 9 + .../bat.js | 1 + .../blueshift.js | 1 + .../certif.jpg | Bin 0 -> 54297 bytes .../common-e476c1d1.js | 97 ++ .../conversion_async.js | 21 + .../courseView-a8a0b522.js | 2 + .../fbevents.js | 3 + .../gtm.js | 103 ++ .../identity.js | 1 + .../layers.js | 1 + .../linkid.js | 2 + .../logo_logo-oc.png | Bin 0 -> 7230 bytes .../main-49192b3f.css | 1 + .../master-50071247.css | 1 + .../mode-html.js | 1 + .../mode-php.js | 1 + .../nr-1026.js | 1 + .../polyfill.js | 3 + .../quant.js | 28 + .../rules-p-d1D4hSPec1QW4.js | 6 + .../satismeter.js | 5 + .../sh.htm | 2 + .../theme-monokai.js | 1 + .../track.js | 1 + .../vendors-d45201d4.js | 89 ++ Sources/webAduc/README.md | 10 + .../build/logs/Documentation/README.txt | 1 + .../tests/Documentation Tests/README.md | 1 + .../Spécifications détaillées.odt | Bin 0 -> 66027 bytes Sources/webAduc/tests/func/01-loginTest.php | 49 + Sources/webAduc/tests/func/README.txt | 1 + Sources/webAduc/tests/unit/01-loginTest.php | 30 + Sources/webAduc/tests/unit/README.txt | 1 + Sources/webAduc/tests/unit/phpunit.xml | 20 + Sources/webAduc/tests/unit/skeleton.php | 66 + Sources/webAduc/utils/build/build.xml | 86 ++ .../webAduc/www/android-chrome-192x192.png | Bin 0 -> 20154 bytes .../webAduc/www/android-chrome-512x512.png | Bin 0 -> 67261 bytes Sources/webAduc/www/apple-touch-icon.png | Bin 0 -> 18725 bytes Sources/webAduc/www/basic/index.html | 146 ++ Sources/webAduc/www/basic/root.json | 1 + Sources/webAduc/www/browserconfig.xml | 9 + Sources/webAduc/www/composer.json | 19 + Sources/webAduc/www/composer.lock | 858 +++++++++++ Sources/webAduc/www/favicon-16x16.png | Bin 0 -> 970 bytes Sources/webAduc/www/favicon-32x32.png | Bin 0 -> 1831 bytes Sources/webAduc/www/favicon.ico | Bin 0 -> 10990 bytes Sources/webAduc/www/fbrowser/data/.htaccess | 1 + .../webAduc/www/fbrowser/data/root/README.txt | 1 + .../www/fbrowser/data/root/Test/Test.txt | 0 Sources/webAduc/www/fbrowser/file_sprite.png | Bin 0 -> 19360 bytes Sources/webAduc/www/fbrowser/index.php | 450 ++++++ Sources/webAduc/www/index.php | 90 ++ Sources/webAduc/www/layout.html | 1369 +++++++++++++++++ Sources/webAduc/www/login.js | 47 + Sources/webAduc/www/mstile-150x150.png | Bin 0 -> 13090 bytes Sources/webAduc/www/safari-pinned-tab.svg | 75 + Sources/webAduc/www/site.webmanifest | 19 + Sources/webAduc/www/sitebrowser/class.db.php | 1082 +++++++++++++ .../webAduc/www/sitebrowser/class.tree.php | 986 ++++++++++++ Sources/webAduc/www/sitebrowser/data.sql | 91 ++ Sources/webAduc/www/sitebrowser/index.php | 172 +++ Sources/webAduc/www/src/ajax.php | 10 + Sources/webAduc/www/src/assets/Favicon.png | Bin 0 -> 65023 bytes Sources/webAduc/www/src/assets/Icon.jpg | Bin 0 -> 47819 bytes Sources/webAduc/www/src/class/autoload.php | 4 + Sources/webAduc/www/src/class/ldapClass.php | 492 ++++++ Sources/webAduc/www/src/class/userClass.php | 25 + Sources/webAduc/www/src/components/main.php | 8 + Sources/webAduc/www/src/config/config.php | 7 + Sources/webAduc/www/src/css/layout.css | 66 + Sources/webAduc/www/src/css/login.css | 65 + Sources/webAduc/www/src/css/style.css | 1 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 23384 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23188 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18056 bytes .../www/src/img/apple-touch-icon-57x57.png | Bin 0 -> 4363 bytes .../src/img/icons/android-chrome-192x192.png | Bin 0 -> 24426 bytes .../img/icons/apple-touch-icon-114x114.png | Bin 0 -> 11016 bytes .../img/icons/apple-touch-icon-120x120.png | Bin 0 -> 12024 bytes .../img/icons/apple-touch-icon-144x144.png | Bin 0 -> 15747 bytes .../img/icons/apple-touch-icon-152x152.png | Bin 0 -> 16964 bytes .../img/icons/apple-touch-icon-180x180.png | Bin 0 -> 22211 bytes .../src/img/icons/apple-touch-icon-57x57.png | Bin 0 -> 4363 bytes .../src/img/icons/apple-touch-icon-60x60.png | Bin 0 -> 4680 bytes .../src/img/icons/apple-touch-icon-72x72.png | Bin 0 -> 5946 bytes .../src/img/icons/apple-touch-icon-76x76.png | Bin 0 -> 6407 bytes .../www/src/img/icons/favicon-16x16.png | Bin 0 -> 975 bytes .../www/src/img/icons/favicon-32x32.png | Bin 0 -> 2045 bytes .../www/src/img/icons/favicon-96x96.png | Bin 0 -> 8807 bytes Sources/webAduc/www/src/img/icons/favicon.ico | Bin 0 -> 6668 bytes .../webAduc/www/src/img/icons/manifest.json | Bin 0 -> 215 bytes .../www/src/javascript/copy_of_layout.js | 21 + Sources/webAduc/www/src/javascript/layout.js | 201 +++ Sources/webAduc/www/src/javascript/login.js | 70 + Sources/webAduc/www/src/javascript/login.md | 0 Sources/webAduc/www/src/javascript/main.js | 27 + Sources/webAduc/www/src/javascript/main.md | 6 + .../webAduc/www/src/templates/footer.smarty | 4 + .../webAduc/www/src/templates/header.smarty | 28 + .../webAduc/www/src/templates/login.smarty | 73 + Sources/webAduc/www/src/templates/main.smarty | 62 + 141 files changed, 11677 insertions(+) create mode 100644 Docker/Samba-Ad-DC/Dockerfile create mode 100644 Docker/Samba-Ad-DC/LICENSE create mode 100644 Docker/Samba-Ad-DC/README.md create mode 100755 Docker/Samba-Ad-DC/entrypoint.sh create mode 100644 EasyCloud.code-workspace create mode 100644 Sources/webAduc/.gitignore create mode 100644 Sources/webAduc/Dockerfile create mode 100644 Sources/webAduc/Documentation/ITIE-TTF-Modèle de fiche de test.xls create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine.htm create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/base.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/blackfire.png create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/code.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/colors.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/da02766c-18d7-4302-aede-0547d35f0ad8.png create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dc.js create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dis.htm create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/event.js create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ga.js create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/jquery-1.js create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ld.js create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/pygments.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/reset-min.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensio-labs-product.svg create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiocloud.svg create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiolabs.png create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiolabsinsight.png create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.css create mode 100644 Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !.htm create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/1570554156513134.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865_002.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/300lo.json create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/90dc06697a create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/_ate.config_resp create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/amplitude-3.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics_002.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/bat.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/blueshift.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/certif.jpg create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/common-e476c1d1.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/conversion_async.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/courseView-a8a0b522.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/fbevents.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/gtm.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/identity.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/layers.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/linkid.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/logo_logo-oc.png create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/main-49192b3f.css create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/master-50071247.css create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/mode-html.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/mode-php.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/nr-1026.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/polyfill.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/quant.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/rules-p-d1D4hSPec1QW4.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/satismeter.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/sh.htm create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/theme-monokai.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/track.js create mode 100644 Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/vendors-d45201d4.js create mode 100644 Sources/webAduc/README.md create mode 100644 Sources/webAduc/build/logs/Documentation/README.txt create mode 100644 Sources/webAduc/tests/Documentation Tests/README.md create mode 100644 Sources/webAduc/tests/Documentation Tests/Spécifications détaillées.odt create mode 100644 Sources/webAduc/tests/func/01-loginTest.php create mode 100644 Sources/webAduc/tests/func/README.txt create mode 100644 Sources/webAduc/tests/unit/01-loginTest.php create mode 100644 Sources/webAduc/tests/unit/README.txt create mode 100644 Sources/webAduc/tests/unit/phpunit.xml create mode 100644 Sources/webAduc/tests/unit/skeleton.php create mode 100644 Sources/webAduc/utils/build/build.xml create mode 100644 Sources/webAduc/www/android-chrome-192x192.png create mode 100644 Sources/webAduc/www/android-chrome-512x512.png create mode 100644 Sources/webAduc/www/apple-touch-icon.png create mode 100644 Sources/webAduc/www/basic/index.html create mode 100644 Sources/webAduc/www/basic/root.json create mode 100644 Sources/webAduc/www/browserconfig.xml create mode 100644 Sources/webAduc/www/composer.json create mode 100644 Sources/webAduc/www/composer.lock create mode 100644 Sources/webAduc/www/favicon-16x16.png create mode 100644 Sources/webAduc/www/favicon-32x32.png create mode 100644 Sources/webAduc/www/favicon.ico create mode 100644 Sources/webAduc/www/fbrowser/data/.htaccess create mode 100644 Sources/webAduc/www/fbrowser/data/root/README.txt create mode 100644 Sources/webAduc/www/fbrowser/data/root/Test/Test.txt create mode 100644 Sources/webAduc/www/fbrowser/file_sprite.png create mode 100644 Sources/webAduc/www/fbrowser/index.php create mode 100644 Sources/webAduc/www/index.php create mode 100644 Sources/webAduc/www/layout.html create mode 100644 Sources/webAduc/www/login.js create mode 100644 Sources/webAduc/www/mstile-150x150.png create mode 100644 Sources/webAduc/www/safari-pinned-tab.svg create mode 100644 Sources/webAduc/www/site.webmanifest create mode 100644 Sources/webAduc/www/sitebrowser/class.db.php create mode 100644 Sources/webAduc/www/sitebrowser/class.tree.php create mode 100644 Sources/webAduc/www/sitebrowser/data.sql create mode 100644 Sources/webAduc/www/sitebrowser/index.php create mode 100644 Sources/webAduc/www/src/ajax.php create mode 100644 Sources/webAduc/www/src/assets/Favicon.png create mode 100644 Sources/webAduc/www/src/assets/Icon.jpg create mode 100644 Sources/webAduc/www/src/class/autoload.php create mode 100644 Sources/webAduc/www/src/class/ldapClass.php create mode 100644 Sources/webAduc/www/src/class/userClass.php create mode 100644 Sources/webAduc/www/src/components/main.php create mode 100644 Sources/webAduc/www/src/config/config.php create mode 100644 Sources/webAduc/www/src/css/layout.css create mode 100644 Sources/webAduc/www/src/css/login.css create mode 100644 Sources/webAduc/www/src/css/style.css create mode 100644 Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.ttf create mode 100644 Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.woff create mode 100644 Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.woff2 create mode 100644 Sources/webAduc/www/src/img/apple-touch-icon-57x57.png create mode 100644 Sources/webAduc/www/src/img/icons/android-chrome-192x192.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-114x114.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-120x120.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-144x144.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-152x152.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-180x180.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-57x57.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-60x60.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-72x72.png create mode 100644 Sources/webAduc/www/src/img/icons/apple-touch-icon-76x76.png create mode 100644 Sources/webAduc/www/src/img/icons/favicon-16x16.png create mode 100644 Sources/webAduc/www/src/img/icons/favicon-32x32.png create mode 100644 Sources/webAduc/www/src/img/icons/favicon-96x96.png create mode 100644 Sources/webAduc/www/src/img/icons/favicon.ico create mode 100644 Sources/webAduc/www/src/img/icons/manifest.json create mode 100644 Sources/webAduc/www/src/javascript/copy_of_layout.js create mode 100644 Sources/webAduc/www/src/javascript/layout.js create mode 100644 Sources/webAduc/www/src/javascript/login.js create mode 100644 Sources/webAduc/www/src/javascript/login.md create mode 100644 Sources/webAduc/www/src/javascript/main.js create mode 100644 Sources/webAduc/www/src/javascript/main.md create mode 100644 Sources/webAduc/www/src/templates/footer.smarty create mode 100644 Sources/webAduc/www/src/templates/header.smarty create mode 100644 Sources/webAduc/www/src/templates/login.smarty create mode 100644 Sources/webAduc/www/src/templates/main.smarty diff --git a/Docker/Samba-Ad-DC/Dockerfile b/Docker/Samba-Ad-DC/Dockerfile new file mode 100644 index 0000000..19c511c --- /dev/null +++ b/Docker/Samba-Ad-DC/Dockerfile @@ -0,0 +1,42 @@ +FROM alpine:3.12 +LABEL author="Serge NOEL " \ + name="Samba AD DC - Alpine" \ + description="Provides a Docker image for Samba 4 DC on Alpine Linux." + +# Install +RUN apk add --no-cache samba-dc \ + # Remove default config data, if any + && rm -rf /etc/samba \ + && rm -rf /var/lib/samba \ + && rm -rf /var/log/samba \ + # Create needed symbolic links + && ln -s /samba/etc /etc/samba \ + && ln -s /samba/lib /var/lib/samba \ + && ln -s /samba/log /var/log/samba + +# Ports +EXPOSE 37/udp \ + 53 \ + 88 \ + 123/udp \ + 135/tcp \ + 137/udp \ + 138/udp \ + 139 \ + 389 \ + 445 \ + 464 \ + 636/tcp \ + 49152-65535/tcp \ + 3268/tcp \ + 3269/tcp + +# Volume config +VOLUME ["/samba"] + +# Entrypoint +COPY ./entrypoint.sh / +ENTRYPOINT ["/entrypoint.sh"] +CMD ["samba"] + + diff --git a/Docker/Samba-Ad-DC/LICENSE b/Docker/Samba-Ad-DC/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/Docker/Samba-Ad-DC/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Docker/Samba-Ad-DC/README.md b/Docker/Samba-Ad-DC/README.md new file mode 100644 index 0000000..3909a46 --- /dev/null +++ b/Docker/Samba-Ad-DC/README.md @@ -0,0 +1,59 @@ +# Samba4 AD-DC docker container + +This docker container runs Samba4 as an Active Directory Domain Controller. + +The first time you start the container, samba-tool will be invoked to set it up using the supplied [environment variables](#environment-variables). +After set is complete, the container will continue starting to get the DC up and running. + +The container saves all necessary files within a volume mounted at '/samba'. +See the following examples on how to start/setup the DC. It works best with host networking. With host networking, you'll need to ensure you allow the requisite firewall ports through at the host-level, too. + +## Examples + +### New domain + +```bash +docker run -it \ + -e SAMBA_DC_REALM="samdom.example.com" \ + -e SAMBA_DC_ADMIN_PASSWD="Password1!" \ + -e SAMBA_DC_ACTION="provision" \ + -e SAMBA_DC_DNS_FORWARDER="8.8.8.8 8.8.4.4" \ + -e SAMBA_DC_DOMAIN="SAMDOM_EXAMPLE" \ + -v ${PWD}/samba_provision:/samba \ + --net host --privileged \ + -h dc1.samdom.example.com -P \ + --restart=unless-stopped \ + --name dc1 \ + easylinux/samba-ad-dc +``` + +### Join an existing domain + +```bash +docker run -it \ + -e SAMBA_DC_REALM=samdom.example.com" \ + -e SAMBA_DC_ADMIN_PASSWD="Password1!" \ + -e SAMBA_DC_ACTION="join" \ + -e SAMBA_DC_DNS_FORWARDER="8.8.8.8 8.8.4.4" \ + -e SAMBA_DC_DOMAIN="SAMDOM_EXAMPLE" \ + -e SAMBA_DC_MASTER="192.168.1.2" \ + -v ${PWD}/samba_join:/samba \ + --net host --privileged \ + -h dc2.samdom.example.com -P \ + --restart=unless-stopped \ + --name dc2 \ + easylinux/samba-ad-dc +``` + +## Environment variables + +The following environment variables are all used as part of the DC setup process. +If the DC has been setup, none of htese variables have any effect on the container. + +- `SAMBA_DC_REALM` (*required*) The realm (FQDN) for the domain. (e.q. `samdom.example.com`). +- `SAMBA_DC_ACTION` (*required*) The action to take for setup. Must either be `provision` or `join`. +- `SAMBA_DC_MASTER` (*required for joining*) The master DC to join. Should be an IP address. +- `SAMBA_DC_ADMIN_PASSWD` (*required for joining*) The Administrator password for the domain. Will randomly generate if not specified, but *must* be correct to join an existing domain. +- `SAMBA_DC_DNS_FORWARDER` (*optional*) Space separated list of DNS servers to which recursive queries should be forwarded. +- `SAMBA_OPTIONS` (*optional*) Additional options to samba-tool. See man page for available options. +- `SAMBA_DC_DOMAIN` (*optional*) Short name for the domain to create/join. Set to leftmost part of `SAMBA_DC_REALM` if unspecified. diff --git a/Docker/Samba-Ad-DC/entrypoint.sh b/Docker/Samba-Ad-DC/entrypoint.sh new file mode 100755 index 0000000..a8f8631 --- /dev/null +++ b/Docker/Samba-Ad-DC/entrypoint.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +# Required environment variables +# SAMBA_DC_REALM - Samba Realm +# SAMBA_DC_ACTION - Action to take (provision or join) +# SAMBA_DC_MASTER - Only required or used during domain join. IP Address of existing DC to join. +# SAMBA_DC_ADMIN_PASSWD - Administrator password (only used to provision or join domain). If not specified, will randomly generate. Must be correct to join. + +# Optional environment variables +# SAMBA_DC_DNS_FORWARDER - IP address to forward DNS requests to (accepts space separated list) +# SAMBA_OPTIONS - Raw options to be passed to samba-tool during provision/join +# SAMBA_DC_DOMAIN - Samba AD Domain shortname. Set to leftmost part of SAMBA_DC_REALM if unspecified. + +set -e + +COMMAND=ash + +# Add $COMMAND if needed +if [ "${1:0:1}" = "-" ] +then + set -- $COMMAND "$@" +fi + +info () { + echo "[INFO] $@" +} + +if [ ! -f /samba/etc/smb.conf ]; then + + : "${SAMBA_DC_REALM:?SAMBA_DC_REALM must be set}" + : "${SAMBA_DC_ACTION:?SAMBA_DC_ACTION must be set}" + + SAMBA_DC_ADMIN_PASSWD=${SAMBA_DC_ADMIN_PASSWD:-`(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c20; echo) 2>/dev/null`} + info "Samba Administrator password set to: ${SAMBA_DC_ADMIN_PASSWD}" + + SAMBA_OPTIONS=${SAMBA_OPTIONS:-} + + SAMBA_DC_DOMAIN=${SAMBA_DC_DOMAIN:-${SAMBA_DC_REALM%%.*}} + info "Samba Domain shortname set to: ${SAMBA_DC_DOMAIN}" + mkdir -p /samba/etc /samba/lib /samba/log + case "${SAMBA_DC_ACTION}" in + "join") + : "${SAMBA_DC_MASTER:?SAMBA_DC_MASTER must be set to join a domain}" + info "${SAMBA_DC_DOMAIN} - Begin Domain Joining" + samba-tool domain join "${SAMBA_DC_REALM}" "DC" \ + --server="${SAMBA_DC_MASTER}" \ + --dns-backend="SAMBA_INTERNAL" \ + --username="Administrator" \ + --password="${SAMBA_DC_ADMIN_PASSWD}" \ + --workgroup="${SAMBA_DC_DOMAIN}" \ + $SAMBA_OPTIONS \ + --option="bind interfaces only"="yes" \ + --option="dns forwarder"="${SAMBA_DC_DNS_FORWARDER}" \ + --option="idmap_ldb:use rfc2307"="yes" + info "${SAMBA_DC_DOMAIN} - Domain Joining Successful" + ;; + "provision") + info "${SAMBA_DC_DOMAIN} - Begin Domain Provisioning" + samba-tool domain provision --domain="${SAMBA_DC_DOMAIN}" \ + --adminpass="${SAMBA_DC_ADMIN_PASSWD}" \ + --server-role=dc \ + --realm="${SAMBA_DC_REALM}" \ + --dns-backend="SAMBA_INTERNAL" \ + --use-rfc2307 \ + $SAMBA_OPTIONS \ + --option="bind interfaces only"=yes \ + --option="dns forwarder"="${SAMBA_DC_DNS_FORWARDER}" + info "${SAMBA_DC_DOMAIN} - Domain Provisioning Successful" + ;; + *) + : "${SAMBA_ERROR_OUT:?SAMBA_DC_ACTION must be either 'provision' or 'join'}" + ;; + esac +fi + +if [ "$1" = 'samba' ] +then + exec /usr/sbin/samba -i +fi + +# If we get here, the user wants to run their own command. Let them. +exec "$@" diff --git a/EasyCloud.code-workspace b/EasyCloud.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/EasyCloud.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/README.md b/README.md index 031d406..e038ff6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # Easycloud +## Introduction + +## Fonctionnalités + +* Dhcp +* iPxe +* AD/Ldap +* webAduc +* Stockage des datas dans AD \ No newline at end of file diff --git a/Sources/webAduc/.gitignore b/Sources/webAduc/.gitignore new file mode 100644 index 0000000..cf6d85d --- /dev/null +++ b/Sources/webAduc/.gitignore @@ -0,0 +1,2 @@ +www/vendor/* +www/templates_c/* \ No newline at end of file diff --git a/Sources/webAduc/Dockerfile b/Sources/webAduc/Dockerfile new file mode 100644 index 0000000..46011f7 --- /dev/null +++ b/Sources/webAduc/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.12 + +RUN apk add php7-apache2 php7-ldap php7-session php7-json +RUN sed -i "s|/var/www/localhost/htdocs|/var/www/html|g" /etc/apache2/httpd.conf +# RUN rm /var/log/apache2/access.log /var/log/apache2/error.log +RUN ln -s /dev/stdout /var/log/apache2/access.log +RUN ln -s /dev/stderr /var/log/apache2/error.log +WORKDIR /var/www/html + +VOLUME /var/www/html +EXPOSE 80 +CMD ["/usr/sbin/httpd","-D","FOREGROUND"] \ No newline at end of file diff --git a/Sources/webAduc/Documentation/ITIE-TTF-Modèle de fiche de test.xls b/Sources/webAduc/Documentation/ITIE-TTF-Modèle de fiche de test.xls new file mode 100644 index 0000000000000000000000000000000000000000..64b6384b16ecf8920a2460e38982bd5f310d70c6 GIT binary patch literal 84480 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 + + + + + + + + + + + Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine + + + + + + + + + + + + + + + + + + + +
+
SensioLabs

Since + 1998, SensioLabs has been promoting the Open-Source software movement +by providing quality and performant web application development +products, trainings, and consulting. SensioLabs also supports multiple +important Open-Source projects.
Learn more

In the Spotlight

SensioLabsInsight
Blackfire

Our Blogs

    + Symfony, + SensioLabs, + Insight, + and Blackfire. +
+ +
+
+
+
+
+ a SensioLabs Product +
+
+ +

+ The flexible, fast, and secure
template engine for PHP +

+
+ + +
+
+
+
+
+
+ + You are reading the documentation for Twig 2.x. + + Switch to the documentation for Twig + 1.x. +
+ + +
+ + +
+

Questions & Feedback

+ + +

License

+
+ Twig documentation is licensed under the + new BSD license. +
+
+
+ +
+
+

Twig for Developers

+

This chapter describes the API to Twig and not the template language. It will +be most useful as reference to those implementing the template interface to +the application and not those who are creating Twig templates.

+
+

Basics

+

Twig uses a central object called the environment (of class +Twig_Environment). Instances of this class are used to store the +configuration and extensions, and are used to load templates from the file +system or other locations.

+

Most applications will create one Twig_Environment object on application +initialization and use that to load templates. In some cases it's however +useful to have multiple environments side by side, if different configurations +are in use.

+

The simplest way to configure Twig to load templates for your application +looks roughly like this:

+
1
+2
+3
+4
+5
+6
require_once '/path/to/vendor/autoload.php';
+
+$loader = new Twig_Loader_Filesystem('/path/to/templates');
+$twig = new Twig_Environment($loader, array(
+    'cache' => '/path/to/compilation_cache',
+));
+
+
+

This will create a template environment with the default settings and a loader +that looks up the templates in the /path/to/templates/ folder. Different +loaders are available and you can also write your own if you want to load +templates from a database or other resources.

+
+

Note

+

Notice that the second argument of the environment is an array of options. +The cache option is a compilation cache directory, where Twig caches +the compiled templates to avoid the parsing phase for sub-sequent +requests. It is very different from the cache you might want to add for +the evaluated templates. For such a need, you can use any available PHP +cache library.

+
+
+
+

Rendering Templates

+

To load a template from a Twig environment, call the load() method which +returns a Twig_TemplateWrapper instance:

+
$template = $twig->load('index.html');
+
+
+

To render the template with some variables, call the render() method:

+
echo $template->render(array('the' => 'variables', 'go' => 'here'));
+
+
+
+

Note

+

The display() method is a shortcut to output the template directly.

+
+

You can also load and render the template in one fell swoop:

+
echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here'));
+
+
+

If a template defines blocks, they can be rendered individually via the +renderBlock() call:

+
echo $template->renderBlock('block_name', array('the' => 'variables', 'go' => 'here'));
+
+
+
+
+

Environment Options

+

When creating a new Twig_Environment instance, you can pass an array of +options as the constructor second argument:

+
$twig = new Twig_Environment($loader, array('debug' => true));
+
+
+

The following options are available:

+
    +
  • debug boolean

    +

    When set to true, the generated templates have a +__toString() method that you can use to display the generated nodes +(default to false).

    +
  • +
  • charset string (defaults to utf-8)

    +

    The charset used by the templates.

    +
  • +
  • base_template_class string (defaults to Twig_Template)

    +

    The base template class to use for generated +templates.

    +
  • +
  • cache string or false

    +

    An absolute path where to store the compiled templates, or +false to disable caching (which is the default).

    +
  • +
  • auto_reload boolean

    +

    When developing with Twig, it's useful to recompile the +template whenever the source code changes. If you don't provide a value for +the auto_reload option, it will be determined automatically based on the +debug value.

    +
  • +
  • strict_variables boolean

    +

    If set to false, Twig will silently ignore invalid +variables (variables and or attributes/methods that do not exist) and +replace them with a null value. When set to true, Twig throws an +exception instead (default to false).

    +
  • +
  • autoescape string

    +

    Sets the default auto-escaping strategy (name, html, js, css, +url, html_attr, or a PHP callback that takes the template "filename" +and returns the escaping strategy to use -- the callback cannot be a function +name to avoid collision with built-in escaping strategies); set it to +false to disable auto-escaping. The name escaping strategy determines +the escaping strategy to use for a template based on the template filename +extension (this strategy does not incur any overhead at runtime as +auto-escaping is done at compilation time.)

    +
  • +
  • optimizations integer

    +

    A flag that indicates which optimizations to apply +(default to -1 -- all optimizations are enabled; set it to 0 to +disable).

    +
  • +
+
+
+

Loaders

+

Loaders are responsible for loading templates from a resource such as the file +system.

+
+

Compilation Cache

+

All template loaders can cache the compiled templates on the filesystem for +future reuse. It speeds up Twig a lot as templates are only compiled once; and +the performance boost is even larger if you use a PHP accelerator such as APC. +See the cache and auto_reload options of Twig_Environment above +for more information.

+
+
+

Built-in Loaders

+

Here is a list of the built-in loaders Twig provides:

+
+

Twig_Loader_Filesystem

+

Twig_Loader_Filesystem loads templates from the file system. This loader +can find templates in folders on the file system and is the preferred way to +load them:

+
$loader = new Twig_Loader_Filesystem($templateDir);
+
+
+

It can also look for templates in an array of directories:

+
$loader = new Twig_Loader_Filesystem(array($templateDir1, $templateDir2));
+
+
+

With such a configuration, Twig will first look for templates in +$templateDir1 and if they do not exist, it will fallback to look for them +in the $templateDir2.

+

You can add or prepend paths via the addPath() and prependPath() +methods:

+
$loader->addPath($templateDir3);
+$loader->prependPath($templateDir4);
+
+
+

The filesystem loader also supports namespaced templates. This allows to group +your templates under different namespaces which have their own template paths.

+

When using the setPaths(), addPath(), and prependPath() methods, +specify the namespace as the second argument (when not specified, these +methods act on the "main" namespace):

+
$loader->addPath($templateDir, 'admin');
+
+
+

Namespaced templates can be accessed via the special +@namespace_name/template_path notation:

+
$twig->render('@admin/index.html', array());
+
+
+

Twig_Loader_Filesystem support absolute and relative paths. Using relative +paths is preferred as it makes the cache keys independent of the project root +directory (for instance, it allows warming the cache from a build server where +the directory might be different from the one used on production servers):

+
$loader = new Twig_Loader_Filesystem('templates', getcwd().'/..');
+
+
+
+

Note

+

When not passing the root path as a second argument, Twig uses getcwd() +for relative paths.

+
+
+
+

Twig_Loader_Array

+

Twig_Loader_Array loads a template from a PHP array. It's passed an array +of strings bound to template names:

+
1
+2
+3
+4
+5
+6
$loader = new Twig_Loader_Array(array(
+    'index.html' => 'Hello {{ name }}!',
+));
+$twig = new Twig_Environment($loader);
+
+echo $twig->render('index.html', array('name' => 'Fabien'));
+
+
+

This loader is very useful for unit testing. It can also be used for small +projects where storing all templates in a single PHP file might make sense.

+
+

Tip

+

When using the Array loader with a cache mechanism, you +should know that a new cache key is generated each time a template content +"changes" (the cache key being the source code of the template). If you +don't want to see your cache grows out of control, you need to take care +of clearing the old cache file by yourself.

+
+
+
+

Twig_Loader_Chain

+

Twig_Loader_Chain delegates the loading of templates to other loaders:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
$loader1 = new Twig_Loader_Array(array(
+    'base.html' => '{% block content %}{% endblock %}',
+));
+$loader2 = new Twig_Loader_Array(array(
+    'index.html' => '{% extends "base.html" %}{% block content %}Hello {{ name }}{% endblock %}',
+    'base.html'  => 'Will never be loaded',
+));
+
+$loader = new Twig_Loader_Chain(array($loader1, $loader2));
+
+$twig = new Twig_Environment($loader);
+
+
+

When looking for a template, Twig will try each loader in turn and it will +return as soon as the template is found. When rendering the index.html +template from the above example, Twig will load it with $loader2 but the +base.html template will be loaded from $loader1.

+

Twig_Loader_Chain accepts any loader that implements +Twig_LoaderInterface.

+
+

Note

+

You can also add loaders via the addLoader() method.

+
+
+
+
+

Create your own Loader

+

All loaders implement the Twig_LoaderInterface:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+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
interface Twig_LoaderInterface
+{
+    /**
+     * Returns the source context for a given template logical name.
+     *
+     * @param string $name The template logical name
+     *
+     * @return Twig_Source
+     *
+     * @throws Twig_Error_Loader When $name is not found
+     */
+    public function getSourceContext($name);
+
+    /**
+     * Gets the cache key to use for the cache for a given template name.
+     *
+     * @param string $name The name of the template to load
+     *
+     * @return string The cache key
+     *
+     * @throws Twig_Error_Loader When $name is not found
+     */
+    public function getCacheKey($name);
+
+    /**
+     * Returns true if the template is still fresh.
+     *
+     * @param string    $name The template name
+     * @param timestamp $time The last modification time of the cached template
+     *
+     * @return bool    true if the template is fresh, false otherwise
+     *
+     * @throws Twig_Error_Loader When $name is not found
+     */
+    public function isFresh($name, $time);
+
+    /**
+     * Check if we have the source code of a template, given its name.
+     *
+     * @param string $name The name of the template to check if we can load
+     *
+     * @return bool    If the template source code is handled by this loader or not
+     */
+    public function exists($name);
+}
+
+
+

The isFresh() method must return true if the current cached template +is still fresh, given the last modification time, or false otherwise.

+

The getSourceContext() method must return an instance of Twig_Source.

+
+
+
+

Using Extensions

+

Twig extensions are packages that add new features to Twig. Using an +extension is as simple as using the addExtension() method:

+
$twig->addExtension(new Twig_Extension_Sandbox());
+
+
+

Twig comes bundled with the following extensions:

+
    +
  • Twig_Extension_Core: Defines all the core features of Twig.
  • +
  • Twig_Extension_Escaper: Adds automatic output-escaping and the possibility +to escape/unescape blocks of code.
  • +
  • Twig_Extension_Sandbox: Adds a sandbox mode to the default Twig +environment, making it safe to evaluate untrusted code.
  • +
  • Twig_Extension_Profiler: Enabled the built-in Twig profiler.
  • +
  • Twig_Extension_Optimizer: Optimizes the node tree before compilation.
  • +
+

The core, escaper, and optimizer extensions do not need to be added to the +Twig environment, as they are registered by default.

+
+
+

Built-in Extensions

+

This section describes the features added by the built-in extensions.

+
+

Tip

+

Read the chapter about extending Twig to learn how to create your own +extensions.

+
+
+

Core Extension

+

The core extension defines all the core features of Twig:

+ +
+
+

Escaper Extension

+

The escaper extension adds automatic output escaping to Twig. It defines a +tag, autoescape, and a filter, raw.

+

When creating the escaper extension, you can switch on or off the global +output escaping strategy:

+
$escaper = new Twig_Extension_Escaper('html');
+$twig->addExtension($escaper);
+
+
+

If set to html, all variables in templates are escaped (using the html +escaping strategy), except those using the raw filter:

+
1
{{ article.to_html|raw }}
+
+
+

You can also change the escaping mode locally by using the autoescape tag:

+
1
+2
+3
+4
+5
{% autoescape 'html' %}
+    {{ var }}
+    {{ var|raw }}      {# var won't be escaped #}
+    {{ var|escape }}   {# var won't be double-escaped #}
+{% endautoescape %}
+
+
+
+

Warning

+

The autoescape tag has no effect on included files.

+
+

The escaping rules are implemented as follows:

+
    +
  • Literals (integers, booleans, arrays, ...) used in the template directly as +variables or filter arguments are never automatically escaped:

    +
    1
    +2
    +3
    +4
    {{ "Twig<br />" }} {# won't be escaped #}
    +
    +{% set text = "Twig<br />" %}
    +{{ text }} {# will be escaped #}
    +
    +
    +
  • +
  • Expressions which the result is always a literal or a variable marked safe +are never automatically escaped:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    {{ foo ? "Twig<br />" : "<br />Twig" }} {# won't be escaped #}
    +
    +{% set text = "Twig<br />" %}
    +{{ foo ? text : "<br />Twig" }} {# will be escaped #}
    +
    +{% set text = "Twig<br />" %}
    +{{ foo ? text|raw : "<br />Twig" }} {# won't be escaped #}
    +
    +{% set text = "Twig<br />" %}
    +{{ foo ? text|escape : "<br />Twig" }} {# the result of the expression won't be escaped #}
    +
    +
    +
  • +
  • Escaping is applied before printing, after any other filter is applied:

    +
    1
    {{ var|upper }} {# is equivalent to {{ var|upper|escape }} #}
    +
    +
    +
  • +
  • The raw filter should only be used at the end of the filter chain:

    +
    1
    +2
    +3
    {{ var|raw|upper }} {# will be escaped #}
    +
    +{{ var|upper|raw }} {# won't be escaped #}
    +
    +
    +
  • +
  • Automatic escaping is not applied if the last filter in the chain is marked +safe for the current context (e.g. html or js). escape and +escape('html') are marked safe for HTML, escape('js') is marked +safe for JavaScript, raw is marked safe for everything.

    +
    1
    +2
    +3
    +4
    +5
    {% autoescape 'js' %}
    +    {{ var|escape('html') }} {# will be escaped for HTML and JavaScript #}
    +    {{ var }} {# will be escaped for JavaScript #}
    +    {{ var|escape('js') }} {# won't be double-escaped #}
    +{% endautoescape %}
    +
    +
    +
  • +
+
+

Note

+

Note that autoescaping has some limitations as escaping is applied on +expressions after evaluation. For instance, when working with +concatenation, {{ foo|raw ~ bar }} won't give the expected result as +escaping is applied on the result of the concatenation, not on the +individual variables (so, the raw filter won't have any effect here).

+
+
+
+

Sandbox Extension

+

The sandbox extension can be used to evaluate untrusted code. Access to +unsafe attributes and methods is prohibited. The sandbox security is managed +by a policy instance. By default, Twig comes with one policy class: +Twig_Sandbox_SecurityPolicy. This class allows you to white-list some +tags, filters, properties, and methods:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
$tags = array('if');
+$filters = array('upper');
+$methods = array(
+    'Article' => array('getTitle', 'getBody'),
+);
+$properties = array(
+    'Article' => array('title', 'body'),
+);
+$functions = array('range');
+$policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);
+
+
+

With the previous configuration, the security policy will only allow usage of +the if tag, and the upper filter. Moreover, the templates will only be +able to call the getTitle() and getBody() methods on Article +objects, and the title and body public properties. Everything else +won't be allowed and will generate a Twig_Sandbox_SecurityError exception.

+

The policy object is the first argument of the sandbox constructor:

+
$sandbox = new Twig_Extension_Sandbox($policy);
+$twig->addExtension($sandbox);
+
+
+

By default, the sandbox mode is disabled and should be enabled when including +untrusted template code by using the sandbox tag:

+
1
+2
+3
{% sandbox %}
+    {% include 'user.html' %}
+{% endsandbox %}
+
+
+

You can sandbox all templates by passing true as the second argument of +the extension constructor:

+
$sandbox = new Twig_Extension_Sandbox($policy, true);
+
+
+
+
+

Profiler Extension

+

The profiler extension enables a profiler for Twig templates; it should +only be used on your development machines as it adds some overhead:

+
1
+2
+3
+4
+5
$profile = new Twig_Profiler_Profile();
+$twig->addExtension(new Twig_Extension_Profiler($profile));
+
+$dumper = new Twig_Profiler_Dumper_Text();
+echo $dumper->dump($profile);
+
+
+

A profile contains information about time and memory consumption for template, +block, and macro executions.

+

You can also dump the data in a Blackfire.io +compatible format:

+
$dumper = new Twig_Profiler_Dumper_Blackfire();
+file_put_contents('/path/to/profile.prof', $dumper->dump($profile));
+
+
+

Upload the profile to visualize it (create a free account first):

+
1
blackfire --slot=7 upload /path/to/profile.prof
+
+
+
+
+

Optimizer Extension

+

The optimizer extension optimizes the node tree before compilation:

+
$twig->addExtension(new Twig_Extension_Optimizer());
+
+
+

By default, all optimizations are turned on. You can select the ones you want +to enable by passing them to the constructor:

+
$optimizer = new Twig_Extension_Optimizer(Twig_NodeVisitor_Optimizer::OPTIMIZE_FOR);
+
+$twig->addExtension($optimizer);
+
+
+

Twig supports the following optimizations:

+
    +
  • Twig_NodeVisitor_Optimizer::OPTIMIZE_ALL, enables all optimizations +(this is the default value).
  • +
  • Twig_NodeVisitor_Optimizer::OPTIMIZE_NONE, disables all optimizations. +This reduces the compilation time, but it can increase the execution time +and the consumed memory.
  • +
  • Twig_NodeVisitor_Optimizer::OPTIMIZE_FOR, optimizes the for tag by +removing the loop variable creation whenever possible.
  • +
  • Twig_NodeVisitor_Optimizer::OPTIMIZE_RAW_FILTER, removes the raw +filter whenever possible.
  • +
  • Twig_NodeVisitor_Optimizer::OPTIMIZE_VAR_ACCESS, simplifies the creation +and access of variables in the compiled templates whenever possible.
  • +
+
+
+
+

Exceptions

+

Twig can throw exceptions:

+
    +
  • Twig_Error: The base exception for all errors.
  • +
  • Twig_Error_Syntax: Thrown to tell the user that there is a problem with +the template syntax.
  • +
  • Twig_Error_Runtime: Thrown when an error occurs at runtime (when a filter +does not exist for instance).
  • +
  • Twig_Error_Loader: Thrown when an error occurs during template loading.
  • +
  • Twig_Sandbox_SecurityError: Thrown when an unallowed tag, filter, or +method is called in a sandboxed template.
  • +
+
+
+ +
+ + +
+
+
+ Website powered by Symfony and Twig, deployed on +
+ The Twig logo is © 2010-2017 SensioLabs +
+
+
+ + + \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/base.css b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/base.css new file mode 100644 index 0000000..2eaba2e --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/base.css @@ -0,0 +1,446 @@ +html, body +{ + width: 100%; + height: 100%; + background-color: #d9dadb; +} + +body +{ + font: 1em Georgia, "Times New Roman", serif; + color: #626262; + text-align: left; +} + +h1, h2, h3, h4 +{ + font: 1em Georgia, "Times New Roman", serif; +} + +a +{ + color: #21A6A4; +} + +a:visited +{ + color: #004D7D; +} + +.clearfix:after { + content: "\0020"; + display: block; + height: 0; + clear: both; + visibility: hidden; + overflow: hidden; +} +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} + +.content +{ + width: 947px; + margin: 0 auto; + padding-left: 49px; +} + +.sensio_product +{ + position: absolute; + top: 50px; + right: 30px; +} + +.hd, .bd, .ft +{ + max-width: 1200px; + min-width: 996px; + width: 100%; + _width: expression(document.body.clientWidth >= 1200 ? "1200px": document.body.clientWidth <= 996 ? "996px" :"100%"); + margin: auto; + background-color: #fff; +} + +.hd +{ + background: #fff url("../images/background.png") repeat-x; +} + +.hd .illustration, .hd +{ + height:390px; +} + +.hd .content +{ + padding-top: 110px; + position: relative; +} + +.hd .logo_header +{ + float: left; + padding: 0px 25px 0 0; + height: 91px; + font-size: 76px; + font-family: Arial, sans-serif; + font-weight: bold; +} + +.hd .logo_header a +{ + color: #fff; + text-decoration: none; +} + +.hd .title_header +{ + font-family: Arial, sans-serif; + float: left; + height: 70px; + padding: 14px 0 0 27px; + border-left: 4px solid #8fe6e5; + color: #006f9f; + font-size: 28px; + line-height: 1em; + _line-height: 0.85em; + margin-top: 0px; +} + +.hd .title_header_home +{ + border-left: 4px solid #c4c3c3; +} + +.hd .title_header_home span +{ + color: #d6cecf; +} + +.hd .illustration +{ + background: transparent url(../images/logo.png) no-repeat center 2px; +} + +.menu +{ + padding-top: 95px; + width: 940px; + font-family: Arial, sans-serif; +} + +.menu li +{ + color: #ffffff; + font-size: 1.125em; + display: inline; + padding-right: 30px; +} + +.menu a +{ + color: #ffffff; + text-decoration: none; +} + +.menu a:hover +{ + color: #ffffff; + text-decoration: underline; +} + +.menu a.active +{ + color: #444; +} + +.bd .content +{ + padding-top: 20px; + padding-bottom: 40px; +} + +.bd .content li +{ + list-style: disc; + margin-left: 20px; + padding-bottom: 10px; +} + +.bd h1 +{ + padding: 20px 0 15px 0; + color: #21a6a4; + font-size: 2em; +} + +.bd h3 +{ + padding: 10px 0 5px 0; + color: #21a6a4; + font-size: 1.1em; +} + +.page_title +{ + font-family: Georgia, "Times New Roman", serif; + font-size: 1.79em; + margin-bottom: 40px; +} + +.intro +{ + padding-top: 25px; + width: 625px; + float: left; +} + +.links_intro +{ + padding: 20px 0 0 676px; +} + +.bd .content .links_intro li +{ + padding: 15px 0; + border-radius: 8px; + list-style: none; + margin-left: 0; + text-align: center; + margin-bottom: 20px; +} + +.bd .content .links_intro li a, .bd .content .links_intro li a:hover { + text-decoration: none; + color: #fff; + font-size: 23px; + font-weight: bold; + text-transform: uppercase; + font-family: Arial; +} + +.bd .content .links_intro li a img { + margin-left: 15px; +} + +.intro p +{ + color: #595959; + font-family: Georgia, "Times New Roman", serif; +} + +.box_content +{ + padding: 0 10px; + width: 939px; +} + +.important +{ + margin: 20px 0; + padding-top: 10px; + border-top: 1px solid #bcbcbc; + border-bottom: 1px solid #bcbcbc; +} + +.box_content div +{ + width: 260px; + float: left; +} + +.box_content div.middle +{ + padding: 0 69px; +} + +.box_content h3 +{ + color: #21a6a4; + font-weight: bold; + margin: 10px 0; +} + +.important h3 +{ + color: #db4528; + font-size: 1.27em; +} + +.box_content p +{ + margin: 10px 0 30px; +} + +.box_content p.last +{ + margin: 10px 0; +} + +.bd .author +{ + margin: 0; +} + +h2 +{ + font: 1em Georgia, "Times New Roman", serif; + color: #444; + margin-bottom: 5px; + padding: 15px 0 10px 0; + font-size: 1.4em; +} + +.ft { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + font-size: 15px; + color: #ddd; + background-color: #000; +} + +.ft a { + text-decoration: none; + color: #ddd; +} + +.ft .sc { + width: 100px; + vertical-align: bottom; +} + +.ft .content +{ + padding-top: 20px; + padding-bottom: 20px; + font-size: 0.793em; +} + +em +{ + font-style: italic; +} + +strong +{ + font-weight: bold; +} + +p +{ + margin-bottom: 10px; +} + +.latest +{ + margin-top: 5px; + text-align: left; + font-size: 14px; + font-family: Georgia; + color: #fff; + margin-left: 38px; +} + +.latest a { + font-size: 14px !important; + font-family: Georgia !important; +} + +.contributors +{ + margin-left: 0; + margin-bottom: 0; + margin-top: 30px; + list-style-type: none; +} + +.bd .content .contributors li +{ + float: left; + margin-right: 50px; + margin-left: 0; + width: 250px; + height: 60px; + list-style-type: none; +} + +.contributors small +{ + font-size: 0.7em; + color: #313131; +} + +.contributors .gravatar +{ + float: left; + width: 50px; +} + + +.builtin-reference +{ + min-width: 120px; + float: left; + padding-right: 54px; + padding-bottom: 20px; +} + +.bd .content .builtin-reference li +{ + margin-left: 0; + list-style: none; + padding-bottom: 5px; +} + +.reference-column +{ + float: left; + padding-right: 20px; +} + +.offline-docs +{ + float: right; + padding: 20px; + margin-top: 10px; + width: 200px; + -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; + background: #eee; +} + +.bd .content .offline-docs ul +{ + margin-top: 10px; + text-align: center; +} + +.bd .content .offline-docs li +{ + margin: 10px; + list-style: none; + display: inline; +} + +.rotate-90 { + -ms-transform: rotate(90deg); + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.alert { + background-color: #d9edf7; + border-radius: 4px; + padding: 15px; +} + +a.sensiolabs { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + color: #fff; + letter-spacing: -1px; + font-weight: bold; +} + +.sensiolabs .brand { + color: #92db33; +} diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/blackfire.png b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/blackfire.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9f0cb1f1f64755cfe8b3dcb241a8ab5655deed GIT binary patch literal 4315 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 JPDHLkV1j#@Z=C=D literal 0 HcmV?d00001 diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/code.css b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/code.css new file mode 100644 index 0000000..4b1c8c3 --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/code.css @@ -0,0 +1,496 @@ +img +{ + vertical-align: middle; +} + +ul.error_list +{ + margin: 0; + list-style: none; + color: #f22; +} + +ul.error_list li +{ + list-style: none; +} + +pre +{ + margin: 0; + background-color: #000; + overflow: auto; + line-height: 1.3em; + font-size: 14px; + color: #fff; + background-color: #232125; + padding: 0.7em; + margin-bottom: 10px; +} + +pre code +{ + background-color: #000; +} + +pre.command-line +{ + background-color: #333; + color: #eee; + padding-bottom: 10px; +} + +pre.command-line code +{ + background-color: #333; +} + +blockquote +{ + padding: 2px 20px 5px 45px; + margin: 15px 0; + background-color: #fff; +} + +div.admonition-wrapper +{ + margin: 20px 0; + padding: 15px; + padding-right: 0; + position: relative; +} + +.body-web div.admonition-wrapper +{ + overflow: auto; +} + +div.admonition +{ + background-color: #F5F5F5; + padding: 35px 35px 13px 50px; +} + +div.note +{ + background: url(../images/admonition/note.gif) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.caution +{ + background: url(../images/admonition/caution.gif) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.warning +{ + background: url(../images/admonition/warning.gif) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.tip +{ + background: url(../images/admonition/tip.gif) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.sidebar +{ + background: url(../images/admonition/sidebar.gif) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.seealso +{ + background: url(../images/admonition/seealso.png) no-repeat 0 0; + height: 51px; left: 0; position: absolute; top: 0; width: 51px; +} + +div.admonition-wrapper p.admonition-title +{ + display: none; +} + +p.sidebar-title +{ + margin-top: 10px; + color:#313131; + padding-bottom:20px; + font-style: italic; + font-family: my-sans-serif, Georgia, "Times New Roman", Times, serif; + font-size:20px; +} + +.sidebar h2 +{ + margin: 0; + padding: 0; +} + +blockquote.quote +{ + background: #D7CABA; +} + +.navigation +{ + font-family: my-sans-serif, Arial, sans-serif; + padding: 15px 0; + font-size: 0.9em; +} + +.navigation a +{ + text-decoration: none; +} + +.navigation a:hover +{ + text-decoration: underline; +} + +.navigation .separator +{ + padding: 0 10px; + color: #ccc; +} + +.feedback p +{ + font-family: my-sans-serif, Arial, sans-serif; + color: #858585; + font-size: 0.8em; +} + +.feedback p a, #license a +{ + text-decoration: underline; +} + +.infobar-box +{ + margin-top: 10px; + padding: 10px; + background-color: #f1f1f1; + border: 1px solid #e3e3e3; + -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; + font-family: my-sans-serif, Arial, sans-serif; +} + +.infobar-box h2 +{ + margin: 0; + padding: 0; +} + +.pages +{ + padding: 10px 0 0 0; +} + +.pages ul.inline +{ + display: inline; + padding: 5px 0 0 0; +} + +.pages .inline li +{ + display: inline; + margin: 0 5px; +} + +.infobar-box a +{ + text-decoration: none; + color: #777; +} + +.infobar-box a:hover +{ + text-decoration: underline; +} + +#doc-toc li +{ + padding: 2px; + list-style: square; + margin-left: 15px; +} + +#doc-toc li.current +{ + font-weight: bold; + background-color: #e3e3e3; +} + +#doc-toc ul.inline +{ + padding: 0; + margin: 0; + margin-left: 3px; +} + +#doc-toc .inline li +{ + margin: 0; + padding: 0; +} + +#doc-toc li.separator +{ + color: #ccc; +} + +#license +{ + line-height: 1.3em; + font-size: 0.8em; +} + +#license img +{ + margin-right: 5px; +} + +table.docutils +{ + margin-bottom: 10px; +} + +table.docutils th +{ + font-weight:bold; + background-color: #efefef; +} + +table.docutils td, table.docutils th +{ + padding: 4px 6px; + border: 0; + border-bottom: 1px solid #ddd; + text-align: left; + vertical-align: top; +} + +a.headerlink +{ + padding: 2px; + color: #ddd; + text-decoration: none; + font-size: 80%; +} + +a.reference em, a.internal em +{ + font-style: normal; +} + +#guides ul ul, #contributing ul ul +{ + display: inline; + padding: 5px 0 0 0; +} + +#guides ul ul li, #contributing ul ul li +{ + display: inline; + margin: 0; +} + +.sidebarbox +{ + margin-top: 10px; + padding: 10px; + background-color: #f1f1f1; + border: 1px solid #e3e3e3; + -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; + font-family: my-sans-serif, Arial, sans-serif; +} + +.sidebarbox h2 +{ + margin: 0; + padding: 0; +} + +.sidebarbox h3 +{ + margin: 0; + padding: 0; + margin-top: 5px; +} + +div.breadcrumb h3 +{ + display: none; +} + +.bd .content div.breadcrumb ul +{ + margin: 0; + padding: 0; + list-style: none; + margin-top: 5px; +} + +.bd .content div.breadcrumb li +{ + display: inline; + margin: 0; + padding: 0; + line-height: 0.9em; +} + +.bd .content div.breadcrumb li a +{ + color: #777; + text-decoration: none; +} + +.bd .content div.breadcrumb li a:hover +{ + text-decoration: underline; +} + +.p-Indicator +{ + color: #FF8400; +} + +div.genindex-jumpbox +{ + font-size: 85%; + border: 0; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox +{ + color: #999; +} + +div.genindex-jumpbox strong +{ + font-weight: normal; +} + +div.genindex-jumpbox a +{ + padding: 0 4px; +} + +h2#A, h2#B, h2#C, h2#D, h2#E, h2#F, h2#G, h2#H, h2#I, h2#J, h2#K, h2#L, h2#M, h2#N, h2#O, +h2#P, h2#Q, h2#R, h2#S, h2#T, h2#U, h2#V, h2#W, h2#X, h2#Y, h2#Z +{ + background-color: #eee; + border-bottom: 1px solid #aaa; + font-size: 120%; + font-weight: bold; + margin: 20px 0; + padding: 5px; +} + +.indextable a, div.genindex-jumpbox a +{ + text-decoration: none; +} + +.indextable a:hover, div.genindex-jumpbox a:hover +{ + text-decoration: underline; +} + +.infobar +{ + background-color:#FFFFFF; + float:right; + font-size:0.9em; + margin:15px; + position:relative; + width:300px; + z-index:999; +} + +/* for code block with line numbers */ +table .highlight +{ + margin-bottom: 0; +} + +p.versionadded +{ + background-color: #def; + padding: 10px; + margin-bottom: 12px; + overflow: auto; +} + +.versionmodified +{ + font-style: italic; +} + +div.configuration-block em +{ + margin-bottom: 10px; +} + +div.configuration-block li +{ + padding: 5px; +} + +div.configuration-block em +{ + font-style: normal; + font-size: 90%; +} + +.literal-block +{ + margin-bottom: 10px; + overflow: auto; + max-width: 100%; +} + +.highlighttable +{ + width: 100%; +} + +td.linenos +{ + border: 1px solid #ddd; + border-right: 0; + width: 35px; + min-width: 35px; + text-align: right; +} + +td.code +{ + border: 1px solid #232125; + border-left: 0; +} + +.highlighttable pre +{ + margin: 0; +} + +.linenodiv pre +{ + background-color: #ececec; + color: #aaa; +} + +.navigation { + font-family: Arial,sans-serif; + padding: 15px; + padding-bottom: 0; + font-size: .9em; + text-align: center; +} diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/colors.css b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/colors.css new file mode 100644 index 0000000..8e010ca --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/colors.css @@ -0,0 +1,39 @@ +.hd +{ + background-color: #fff; +} + +.hd .title_header +{ + border-left-color: #e0e9a1; +} + +.intro h2, .box_content h3, .bd h1, a, .bd h3, .bd h2, .bd .content .intro_more li strong +{ + color: #006f9f; +} + +.important h3 +{ + color: #bacf29; +} + +#symfony-api #class-description, #symfony-api #method-details h3 +{ + color: #bacf29 !important; +} + +.links_intro .learn_more +{ + background-color: #bacf29; +} + +.links_intro .certification +{ + background-color: #71b236; +} + +.links_intro .install_now +{ + background-color: #006f9f; +} diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/da02766c-18d7-4302-aede-0547d35f0ad8.png b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/da02766c-18d7-4302-aede-0547d35f0ad8.png new file mode 100644 index 0000000000000000000000000000000000000000..17c72f87125429d96de6a9875c3466c83df86b36 GIT binary patch literal 2458 zcmV;L31#+)P)xQT=lt%y`_x-n3w!;LQDcM+!G*SlFjK-z z6DDOkd4Os%nY<>Q8cNjClt0pB%-|-&Oi4-|8Xh5?PD|Pt6Oz!7Nnlz+;~@be60n7_ zV@Z}J+j=1FYPH&3-RG}=>>6xB+B5UJ_jk`dkKZ}JbG`>!bj_{I11P}E?7vwwRd{Xc z3sxsjKlFw;X`cV5H5}89ZY}QVQ?2muvqfAJHuZlxcIVGWN3V1MWNPl4_S=Vk%&vh7 z-CdXLbByM2QmgcIUW;R*y^bF)FuVE!HGd;l4?ZFQoH+fDPuzRRvyVRaX?x{ous=Ms z#U7rx!ve^u*?)arMXy2Ndq?-OFy-^1t8XHg=_87(Xth7{UNvb{GK?>r=JG4@7}JBA zEUKABITz~FFAv>aSx)xGk!86Om2MrL?BRSmI<@b{kN(4ef8zAs{pWZNz|m9p+V1Rn zj8SZIcI4R1-6MyKV@9WDAFrU5I*YFWkTvKKLyTPaa1#g^)s{s168e)5h0+^e6OoY(Q{PF=(+cERmVyXz2i6 z8kSc=N{!bDqVfZ8#`@s*2kp{a!0%m^$1`r%dw0INd_k=DKCipSr|+}Jr|+@<`QmN% zWBV_*zyD|0>4mS@Cx4Q&M^F9j{Q2?@z~t;h!-9QGFdQj8#mvG<+~`UK5Cf&4-pTeX*A=l z|3+K(Vn9%FFyheP_AVAztB};_?T1Ref$Maj;+|)~MT>nme>TA`09e2xAQ1VMOW)N; z+Sx+6(xBnjnk^)Ph`~?jdh;p{9z^q-hT>nJs1YVgSPU6|&F6jBrKl_czhwTVFSq%h`SQTekDk8s#&?p{^FJPc>4y12F$_~) zex&ZN6|A*hCX?B{s+fo3F8P0bhNFf zymFZKj%_%2-+pysZ<2CTh(Oj`B#0AS%{8w|J&bW415h#UUJ(Zo7Ykg` zdlQx9IBD%>wHC8;dnapQgfUq}90V6|I5IJEqc#}^#UNHGWVf+guh88dP+N`Z>G23- z#i$G7AYxE)v0^^2BS}Da=>N3n?ii0GG(}^ zKTUn+bu&Cna)C0yPk#08&LD{<>TS}!G`7alV#LW*D29<{Quc5Jw{X`Wu{?uJZ1IK|cSu&-mcCad$UeY`N-rQ_SNy*A3SJp{tZ7DFvic`fB)p{d@P1N zf7HL1YYU&F>K)_2vAIutLf!kk4->u?eakYSMd# zPHu=_8NdDO=lgP+DZQ@~FMAv)APNGjQHjCMYsh=OJkLWsclLf_si1U%SgdV2bUl|S zJVg+$5+^QMuNT+pz}f)8K~bzIM)kH=Cq`~cRJQFL*uSh}V+TD+=TC^5f{N1|xHyP7 z)S@yM%k?{;+WGR(GhPLDx z+?r!)B_xQ1bh;l$Qy?y=i?)#KoO2PUH_leRs-DxnJLPrbm^M(;%pVT4Qe;s)C(DNH zP8to1m+~p}_=IZ)wZgWod5kOgVMLrLu4zYT0a_ENP;r{DiK0!I-EFS>;E^xIHZTHs zPDk^E2qKDzAOcnrvR)_0=3ZcKagFy6eUWN8B8hxHa@`0sZ%nXKn26{h zyw$BD&03UZJzH>`Yj-?6T3b7FjkE?fHbH1Pv@JZdmaNl7o4cOz#w%3)H>lQ2bhYP6 zrLx3{OFay6Na2_a7QtH60t#(8Z9=vsL9L8xy>{jvL7G2k^@a!*ZSE~tYccB4p6Mr@ z3;4y^2Uzr9V#DTnPSwAHb*J&1Hi9rFv9?*DqNtq9oHoZAHSv|kF~IOEEY+n1Kd7;_YYY8Fh}{S$bj|_scgy43Zyp|gJUM6Yw+@M?U%q7b)Off* zu(q)6cQQQlUn^XFa|i$ZV#my^cf7PJP6|(JyxNga0l=_O$wLZ)CEvbc5(~ZCU ztB;>L@J{ys&*^lIMn|u77FoMNNZyagRbuT{D|7>>P(ozVVn;>v>9S*=8QyU;`2TGF YFJ;m4dcC~!6951J07*qoM6N<$f=P1K<^TWy literal 0 HcmV?d00001 diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dc.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dc.js new file mode 100644 index 0000000..87691e8 --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dc.js @@ -0,0 +1,76 @@ +(function(){var E;function Aa(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Ba(a){return"function"==typeof a}function Ca(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")}function F(a,b){return void 0==a||"-"==a&&!b||""==a}function Da(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t".indexOf(a.charAt(0));)a=a.substring(1);for(;a&&-1<" \n\r\t".indexOf(a.charAt(a.length-1));)a=a.substring(0,a.length-1);return a} +function Ea(){return Math.round(2147483647*Math.random())}function Fa(){}function G(a,b){if(encodeURIComponent instanceof Function)return b?encodeURI(a):encodeURIComponent(a);H(68);return escape(a)}function I(a){a=a.split("+").join(" ");if(decodeURIComponent instanceof Function)try{return decodeURIComponent(a)}catch(b){H(17)}else H(68);return unescape(a)}var Ga=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}; +function Ia(a,b){if(a){var c=J.createElement("script");c.type="text/javascript";c.async=!0;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0a.split("/")[0].indexOf(":")&&(a=n+f[2].substring(0,f[2].lastIndexOf("/"))+ +"/"+a):a=n+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d.protocol||"").toLowerCase(),host:e[0],port:e[1],path:e[2],Oa:d.search||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b).push(c)}for(var d=Da(b).split("&"),e=0;ef?c(d[e],"1"):c(d[e].substring(0,f),d[e].substring(f+1))}} +function Pa(a,b){if(F(a)||"["==a.charAt(0)&&"]"==a.charAt(a.length-1))return"-";var c=J.domain;return a.indexOf(c+(b&&"/"!=b?b:""))==(0==a.indexOf("http://")?7:0==a.indexOf("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*Math.random()||ld()||(a=["utmt=error","utmerr="+a,"utmwv=5.6.7dc","utmn="+Ea(),"utmsp=1"],b&&a.push("api="+b),c&&a.push("msg="+G(c.substring(0,100))),M.w&&a.push("aip=1"),Sa(a.join("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} +var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0), +ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),jf=N(),Yb=N(),kf=N(),lf=Va("utmtCookieName"),mf=Va("displayFeatures"),Oc=N(),Ie=Va("gtmid"),Ne=Va("uaName"),Oe=Va("uaDomain"),Pe=Va("uaPath"),Je=Va("linkid");var Qe=function(){function a(a,c,d){T(gf.prototype,a,c,d)}a("_createTracker",gf.prototype.hb,55);a("_getTracker",gf.prototype.oa,0);a("_getTrackerByName",gf.prototype.u,51);a("_getTrackers",gf.prototype.pa,130);a("_anonymizeIp",gf.prototype.aa,16);a("_forceSSL",gf.prototype.la,125);a("_getPlugin",Pc,120)},Re=function(){function a(a,c,d){T(U.prototype,a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash", +jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode",xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey", +tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey",rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U.prototype.Fa,1);a("_trackEvent",U.prototype.F,4);a("_trackPageLoadTime", +U.prototype.Ea,100);a("_trackSocial",U.prototype.Ga,104);a("_trackTrans",U.prototype.Ia,18);a("_sendXEvent",U.prototype.ib,78);a("_createEventTracker",U.prototype.ia,74);a("_getVersion",U.prototype.qa,60);a("_setDomainName",U.prototype.B,6);a("_setAllowHash",U.prototype.va,8);a("_getLinkerUrl",U.prototype.na,52);a("_link",U.prototype.link,101);a("_linkByPost",U.prototype.ua,102);a("_setTrans",U.prototype.za,20);a("_addTrans",U.prototype.$,21);a("_addItem",U.prototype.Y,19);a("_clearTrans",U.prototype.ea, +105);a("_setTransactionDelim",U.prototype.Aa,82);a("_setCustomVar",U.prototype.wa,10);a("_deleteCustomVar",U.prototype.ka,35);a("_getVisitorCustomVar",U.prototype.ra,50);a("_setXKey",U.prototype.Ca,83);a("_setXValue",U.prototype.Da,84);a("_getXKey",U.prototype.sa,76);a("_getXValue",U.prototype.ta,77);a("_clearXKey",U.prototype.fa,72);a("_clearXValue",U.prototype.ga,73);a("_createXObj",U.prototype.ja,75);a("_addIgnoredOrganic",U.prototype.W,15);a("_clearIgnoredOrganic",U.prototype.ba,97);a("_addIgnoredRef", +U.prototype.X,31);a("_clearIgnoredRef",U.prototype.ca,32);a("_addOrganic",U.prototype.Z,14);a("_clearOrganic",U.prototype.da,70);a("_cookiePathCopy",U.prototype.ha,30);a("_get",U.prototype.ma,106);a("_set",U.prototype.xa,107);a("_addEventListener",U.prototype.addEventListener,108);a("_removeEventListener",U.prototype.removeEventListener,109);a("_addDevId",U.prototype.V);a("_getPlugin",Pc,122);a("_setPageGroup",U.prototype.ya,126);a("_trackTiming",U.prototype.Ha,124);a("_initData",U.prototype.initData, +2);a("_setVar",U.prototype.Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)} +var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c.apply(this,arguments)}catch(a){throw Ra("exc",b,a&&a.name),a;}}},Qc=function(a,b,c,d){U.prototype[a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e.name),e;}}},V=function(a,b,c,d,e){U.prototype[a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be.name),Be;}}},Se=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=new RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc.test(J.location.hostname)?!0:"/"!==b?!1:0!=a.indexOf("www.google.")&&0!=a.indexOf(".google.")&&0!=a.indexOf("google.")||-1b.length||ad(b[0],c))return!1;b=b.slice(1).join(".").split("|"); +0=b.length)return!0;b=b[1].split(-1==b[1].indexOf(",")?"^":",");for(c=0;cb.length||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]); +Ue(a,b.slice(4).join("."));return!0},Ue=function(a,b){function c(a){return(a=b.match(a+"=(.*?)(?:\\|utm|$)"))&&2==a.length?a[1]:void 0}function d(b,c){c?(c=e?I(c):c.split("%20").join(" "),a.set(b,c)):a.set(b,void 0)}-1==b.indexOf("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/.test(a)};var Uc=function(){this.filters=[]};Uc.prototype.add=function(a,b){this.filters.push({name:a,s:b})};Uc.prototype.cb=function(a){try{for(var b=0;b=100*a.get(vb)&&a.stopPropagation()}function kd(a){ld(a.get(Wa))&&a.stopPropagation()}function md(a){"file:"==J.location.protocol&&a.stopPropagation()}function Ge(a){He()&&a.stopPropagation()} +function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J.location.pathname+J.location.search,!0)}function hf(a){a.get(Wa)&&"UA-XXXXX-X"!=a.get(Wa)||a.stopPropagation()};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.encode=function(){for(var b=[],c=0;c=b[0]||0>=b[1]?"":b.join("x");a.Wa=d}catch(n){H(135)}qd=a}},td=function(){sd();for(var a=qd,b=W.navigator,a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.jb+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a.length,c=W.history.length;0d?(this.i=b.substring(0,d),this.l=b.substring(d+1,c),this.h=b.substring(c+1)):(this.i=b.substring(0,d),this.h=b.substring(d+1));this.Xa=a.slice(1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y.prototype, +"push",Y.prototype.push,5);T(Y.prototype,"_getPlugin",Pc,121);T(Y.prototype,"_createAsyncTracker",Y.prototype.Sa,33);T(Y.prototype,"_getAsyncTracker",Y.prototype.Ta,34);this.I=new Bd;this.eb=[]};E=Y.prototype;E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new Bd;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va.apply(this,arguments),b=Z.eb.concat(b);for(Z.eb=[];0e?b+"#"+d:b+"&"+d;c="";f=b.indexOf("?");0f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f= +0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c];var Be=b.replace(/ /g,"%20"),n=c.replace(/ /g,"%20");if(d==Yc(a+Be+n))return H(128),[Be,n];Be=Be.replace(/\+/g,"%20");n=n.replace(/\+/g,"%20");if(d==Yc(a+Be+n))return H(129),[Be,n];try{var Ja=b.match("utmctr=(.*?)(?:\\|utm|$)");if(Ja&&2==Ja.length&&(Be=b.replace(Ja[1],G(I(Ja[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,n,Ja){var t=ee(a,b);t||(t={},a.get(Cb).push(t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=n;t.country_=Ja;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var n;a:{if(a&&a.items_){n=a.items_;for(var Ja=0;Jab.length||!/^\d+$/.test(b[0])||(b[0]=""+c,Fd(a,"__utmx",b.join("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Xe=function(a){try{var b=La(J.location.href,!1),c=decodeURIComponent(L(b.R.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=decodeURIComponent(K(b.R.get("utm_expid")))||"";d&&(d=d.split(".")[0],a.set(Oc,""+d))}catch(e){H(146)}},k=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc, +""+b)};var ke=function(a,b){var c=Math.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ye()||Ze();if(void 0==c)return!1;var d=c[0];if(void 0==d||Infinity==d||isNaN(d))return!1;0a[b])return!1;return!0},le=function(a){return isNaN(a)||0>a?0:5E3>a?10*Math.floor(a/10):5E4>a?100*Math.floor(a/100):41E5>a?1E3*Math.floor(a/1E3):41E5},je=function(a){for(var b=new yd,c=0;cc.length)){for(var d=[],e=0;e=f)return!1;c=1*(""+c);if(""==a||!wd(a)||""==b||!wd(b)||!xd(c)||isNaN(c)||0>c||0>f||100=a||a>e.get(yb))a=!1;else if(!b||!c||128=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a.match(/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b.push(a);this.set(Ic,b)}};E.initData=function(){this.a.load()}; +E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a.stopPropagation();if("event"===a.get(sc)){var b=(new Date).getTime(),c=a.b(dc,0),d=a.b(Zb,0),c=Math.floor((b-(c!=d?c:1E3*c))/1E3*1);0=a.b(R,0)&&a.stopPropagation()}},pe=function(a){"event"===a.get(sc)&&a.set(R,Math.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a.push(b+"="+c)};this.toString=function(){return a.join("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.6.7dc");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J.location.hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date).getTime());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni", +1);a.get(Ie)&&b.add("utmgtm",a.get(Ie),!0);var c=a.get(Ic);c&&0=a.length)ff(a,b,c);else if(8192>=a.length){if(0<=W.navigator.userAgent.indexOf("Firefox")&&![].reduce)throw new De(a.length);df(a,b)||Ee(a,b)||b()}else throw new Ce(a.length);},ff=function(a,b,c){c=c||Kc()+"/__utm.gif?"; +var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror=null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},df=function(a,b){var c=W.XMLHttpRequest;if(!c)return!1;var d=new c;if(!("withCredentials"in d))return!1;d.open("POST",Kc()+"/p/__utm.gif",!0);d.withCredentials=!0;d.setRequestHeader("Content-Type","text/plain");d.onreadystatechange=function(){4==d.readyState&&(b(),d=null)};d.send(a);return!0},Ee=function(a,b){if(!J.body)return Ve(function(){Ee(a,b)},100),!0; +a=encodeURIComponent(a);try{var c=J.createElement('')}catch(d){c=J.createElement("iframe"),c.name=a}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=Kc()+"/u/post_iframe_dc.html";Ga(W,"beforeunload",function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)});setTimeout(b,1E3);J.body.appendChild(c);c.src=e;return!0};var gf=function(){this.G=this.w=!1;0==Ea()%100&&(H(142),this.G=!0);this.C={};this.D=[];this.U=0;this.S=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=this.bb=void 0;Qe();Re()};E=gf.prototype;E.oa=function(a,b){return this.hb(a,void 0,b)};E.hb=function(a,b,c){b&&H(23);c&&H(67);void 0==b&&(b="~"+M.U++);a=new U(b,a,c);M.C[b]=a;M.D.push(a);return a};E.u=function(a){a=a||"";return M.C[a]||M.hb(void 0,a)};E.pa=function(){return M.D.slice(0)};E.ab=function(){return M.D.length}; +E.aa=function(){this.w=!0};E.la=function(){this.G=!0};var Fe=function(a){if("prerender"==J.visibilityState)return!1;a();return!0};var M=new gf;var Ha=W._gat;Ha&&Ba(Ha._getTracker)?M=Ha:W._gat=M;var Z=new Y;(function(a){if(!Fe(a)){H(123);var b=!1,c=function(){if(!b&&Fe(a)){b=!0;var d=J,e=c;d.removeEventListener?d.removeEventListener("visibilitychange",e,!1):d.detachEvent&&d.detachEvent("onvisibilitychange",e)}};Ga(J,"visibilitychange",c)}})(function(){var a=W._gaq,b=!1;if(a&&Ba(a.push)&&(b="[object Array]"==Object.prototype.toString.call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z.push.apply(Z,a)});function Yc(a){var b=1,c=0,d;if(a)for(b=0,d=a.length-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b;return b};})(); diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dis.htm b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dis.htm new file mode 100644 index 0000000..9bf98df --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/dis.htm @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/event.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/event.js new file mode 100644 index 0000000..ba307eb --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/event.js @@ -0,0 +1,9 @@ +/**/ \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ga.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ga.js new file mode 100644 index 0000000..b670916 --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ga.js @@ -0,0 +1,77 @@ +(function(){var E;function Aa(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Ba(a){return"function"==typeof a}function Ca(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")}function F(a,b){return void 0==a||"-"==a&&!b||""==a}function Da(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t".indexOf(a.charAt(0));)a=a.substring(1);for(;a&&-1<" \n\r\t".indexOf(a.charAt(a.length-1));)a=a.substring(0,a.length-1);return a} +function Ea(){return Math.round(2147483647*Math.random())}function Fa(){}function G(a,b){if(encodeURIComponent instanceof Function)return b?encodeURI(a):encodeURIComponent(a);H(68);return escape(a)}function I(a){a=a.split("+").join(" ");if(decodeURIComponent instanceof Function)try{return decodeURIComponent(a)}catch(b){H(17)}else H(68);return unescape(a)}var Ga=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}; +function Ia(a,b){if(a){var c=J.createElement("script");c.type="text/javascript";c.async=!0;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0a.split("/")[0].indexOf(":")&&(a=k+f[2].substring(0,f[2].lastIndexOf("/"))+ +"/"+a):a=k+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d.protocol||"").toLowerCase(),host:e[0],port:e[1],path:e[2],Oa:d.search||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b).push(c)}for(var d=Da(b).split("&"),e=0;ef?c(d[e],"1"):c(d[e].substring(0,f),d[e].substring(f+1))}} +function Pa(a,b){if(F(a)||"["==a.charAt(0)&&"]"==a.charAt(a.length-1))return"-";var c=J.domain;return a.indexOf(c+(b&&"/"!=b?b:""))==(0==a.indexOf("http://")?7:0==a.indexOf("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*Math.random()||ld()||(a=["utmt=error","utmerr="+a,"utmwv=5.6.7","utmn="+Ea(),"utmsp=1"],b&&a.push("api="+b),c&&a.push("msg="+G(c.substring(0,100))),M.w&&a.push("aip=1"),Sa(a.join("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} +var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0), +ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),Yb=N(),Jc=N(),Kc=N(),Lc=Va("utmtCookieName"),Cd=Va("displayFeatures"),Oc=N(),of=Va("gtmid"),Oe=Va("uaName"),Pe=Va("uaDomain"),Qe=Va("uaPath"),pf=Va("linkid");var Re=function(){function a(a,c,d){T(qf.prototype,a,c,d)}a("_createTracker",qf.prototype.hb,55);a("_getTracker",qf.prototype.oa,0);a("_getTrackerByName",qf.prototype.u,51);a("_getTrackers",qf.prototype.pa,130);a("_anonymizeIp",qf.prototype.aa,16);a("_forceSSL",qf.prototype.la,125);a("_getPlugin",Pc,120)},Se=function(){function a(a,c,d){T(U.prototype,a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash", +jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode",xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey", +tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey",rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U.prototype.Fa,1);a("_trackEvent",U.prototype.F,4);a("_trackPageLoadTime", +U.prototype.Ea,100);a("_trackSocial",U.prototype.Ga,104);a("_trackTrans",U.prototype.Ia,18);a("_sendXEvent",U.prototype.ib,78);a("_createEventTracker",U.prototype.ia,74);a("_getVersion",U.prototype.qa,60);a("_setDomainName",U.prototype.B,6);a("_setAllowHash",U.prototype.va,8);a("_getLinkerUrl",U.prototype.na,52);a("_link",U.prototype.link,101);a("_linkByPost",U.prototype.ua,102);a("_setTrans",U.prototype.za,20);a("_addTrans",U.prototype.$,21);a("_addItem",U.prototype.Y,19);a("_clearTrans",U.prototype.ea, +105);a("_setTransactionDelim",U.prototype.Aa,82);a("_setCustomVar",U.prototype.wa,10);a("_deleteCustomVar",U.prototype.ka,35);a("_getVisitorCustomVar",U.prototype.ra,50);a("_setXKey",U.prototype.Ca,83);a("_setXValue",U.prototype.Da,84);a("_getXKey",U.prototype.sa,76);a("_getXValue",U.prototype.ta,77);a("_clearXKey",U.prototype.fa,72);a("_clearXValue",U.prototype.ga,73);a("_createXObj",U.prototype.ja,75);a("_addIgnoredOrganic",U.prototype.W,15);a("_clearIgnoredOrganic",U.prototype.ba,97);a("_addIgnoredRef", +U.prototype.X,31);a("_clearIgnoredRef",U.prototype.ca,32);a("_addOrganic",U.prototype.Z,14);a("_clearOrganic",U.prototype.da,70);a("_cookiePathCopy",U.prototype.ha,30);a("_get",U.prototype.ma,106);a("_set",U.prototype.xa,107);a("_addEventListener",U.prototype.addEventListener,108);a("_removeEventListener",U.prototype.removeEventListener,109);a("_addDevId",U.prototype.V);a("_getPlugin",Pc,122);a("_setPageGroup",U.prototype.ya,126);a("_trackTiming",U.prototype.Ha,124);a("_initData",U.prototype.initData, +2);a("_setVar",U.prototype.Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)} +var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c.apply(this,arguments)}catch(a){throw Ra("exc",b,a&&a.name),a;}}},Qc=function(a,b,c,d){U.prototype[a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e.name),e;}}},V=function(a,b,c,d,e){U.prototype[a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be.name),Be;}}},Te=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=new RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc.test(J.location.hostname)?!0:"/"!==b?!1:0!=a.indexOf("www.google.")&&0!=a.indexOf(".google.")&&0!=a.indexOf("google.")||-1b.length||ad(b[0],c))return!1;b=b.slice(1).join(".").split("|"); +0=b.length)return!0;b=b[1].split(-1==b[1].indexOf(",")?"^":",");for(c=0;cb.length||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]); +Ve(a,b.slice(4).join("."));return!0},Ve=function(a,b){function c(a){return(a=b.match(a+"=(.*?)(?:\\|utm|$)"))&&2==a.length?a[1]:void 0}function d(b,c){c?(c=e?I(c):c.split("%20").join(" "),a.set(b,c)):a.set(b,void 0)}-1==b.indexOf("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/.test(a)};var Uc=function(){this.filters=[]};Uc.prototype.add=function(a,b){this.filters.push({name:a,s:b})};Uc.prototype.cb=function(a){try{for(var b=0;b=100*a.get(vb)&&a.stopPropagation()}function kd(a){ld(a.get(Wa))&&a.stopPropagation()}function md(a){"file:"==J.location.protocol&&a.stopPropagation()}function Ge(a){He()&&a.stopPropagation()} +function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J.location.pathname+J.location.search,!0)}function lf(a){a.get(Wa)&&"UA-XXXXX-X"!=a.get(Wa)||a.stopPropagation()};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.encode=function(){for(var b=[],c=0;c=b[0]||0>=b[1]?"":b.join("x");a.Wa=d}catch(k){H(135)}qd=a}},td=function(){sd();for(var a=qd,b=W.navigator,a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.jb+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a.length,c=W.history.length;0d?(this.i=b.substring(0,d),this.l=b.substring(d+1,c),this.h=b.substring(c+1)):(this.i=b.substring(0,d),this.h=b.substring(d+1));this.Xa=a.slice(1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y.prototype, +"push",Y.prototype.push,5);T(Y.prototype,"_getPlugin",Pc,121);T(Y.prototype,"_createAsyncTracker",Y.prototype.Sa,33);T(Y.prototype,"_getAsyncTracker",Y.prototype.Ta,34);this.I=new nf;this.eb=[]};E=Y.prototype;E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new nf;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va.apply(this,arguments),b=Z.eb.concat(b);for(Z.eb=[];0e?b+"#"+d:b+"&"+d;c="";f=b.indexOf("?");0f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f= +0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c];var Be=b.replace(/ /g,"%20"),k=c.replace(/ /g,"%20");if(d==Yc(a+Be+k))return H(128),[Be,k];Be=Be.replace(/\+/g,"%20");k=k.replace(/\+/g,"%20");if(d==Yc(a+Be+k))return H(129),[Be,k];try{var Ja=b.match("utmctr=(.*?)(?:\\|utm|$)");if(Ja&&2==Ja.length&&(Be=b.replace(Ja[1],G(I(Ja[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,k,Ja){var t=ee(a,b);t||(t={},a.get(Cb).push(t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=k;t.country_=Ja;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var k;a:{if(a&&a.items_){k=a.items_;for(var Ja=0;Jab.length||!/^\d+$/.test(b[0])||(b[0]=""+c,Fd(a,"__utmx",b.join("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Ye=function(a){try{var b=La(J.location.href,!1),c=decodeURIComponent(L(b.R.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=decodeURIComponent(K(b.R.get("utm_expid")))||"";d&&(d=d.split(".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc, +""+b)};var ke=function(a,b){var c=Math.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ze()||$e();if(void 0==c)return!1;var d=c[0];if(void 0==d||Infinity==d||isNaN(d))return!1;0a[b])return!1;return!0},le=function(a){return isNaN(a)||0>a?0:5E3>a?10*Math.floor(a/10):5E4>a?100*Math.floor(a/100):41E5>a?1E3*Math.floor(a/1E3):41E5},je=function(a){for(var b=new yd,c=0;cc.length)){for(var d=[],e=0;e=f)return!1;c=1*(""+c);if(""==a||!wd(a)||""==b||!wd(b)||!xd(c)||isNaN(c)||0>c||0>f||100=a||a>e.get(yb))a=!1;else if(!b||!c||128=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a.match(/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b.push(a);this.set(Ic,b)}};E.initData=function(){this.a.load()}; +E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a.stopPropagation();if("event"===a.get(sc)){var b=(new Date).getTime(),c=a.b(dc,0),d=a.b(Zb,0),c=Math.floor((b-(c!=d?c:1E3*c))/1E3*1);0=a.b(R,0)&&a.stopPropagation()}},pe=function(a){"event"===a.get(sc)&&a.set(R,Math.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a.push(b+"="+c)};this.toString=function(){return a.join("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.6.7");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J.location.hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date).getTime());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni",1); +a.get(of)&&b.add("utmgtm",a.get(of),!0);var c=a.get(Ic);c&&0=a.length)gf(a,b,c);else if(8192>=a.length){if(0<=W.navigator.userAgent.indexOf("Firefox")&&![].reduce)throw new De(a.length);df(a,b)||ef(a,b)||Ee(a,b)||b()}else throw new Ce(a.length);},gf=function(a,b,c){c=c||Ne()+"/__utm.gif?"; +var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror=null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},ef=function(a,b){if(0!=Ne().indexOf(J.location.protocol))return!1;var c;c=W.XDomainRequest;if(!c)return!1;c=new c;c.open("POST",Ne()+"/p/__utm.gif");c.onerror=function(){b()};c.onload=b;c.send(a);return!0},df=function(a,b){var c=W.XMLHttpRequest;if(!c)return!1;var d=new c;if(!("withCredentials"in d))return!1;d.open("POST",Ne()+"/p/__utm.gif",!0);d.withCredentials= +!0;d.setRequestHeader("Content-Type","text/plain");d.onreadystatechange=function(){4==d.readyState&&(b(),d=null)};d.send(a);return!0},Ee=function(a,b){if(!J.body)return We(function(){Ee(a,b)},100),!0;a=encodeURIComponent(a);try{var c=J.createElement('')}catch(d){c=J.createElement("iframe"),c.name=a}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=Ne()+"/u/post_iframe.html";Ga(W,"beforeunload",function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)}); +setTimeout(b,1E3);J.body.appendChild(c);c.src=e;return!0};var qf=function(){this.G=this.w=!1;0==Ea()%1E4&&(H(142),this.G=!0);this.C={};this.D=[];this.U=0;this.S=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=this.bb=void 0;Re();Se()};E=qf.prototype;E.oa=function(a,b){return this.hb(a,void 0,b)};E.hb=function(a,b,c){b&&H(23);c&&H(67);void 0==b&&(b="~"+M.U++);a=new U(b,a,c);M.C[b]=a;M.D.push(a);return a};E.u=function(a){a=a||"";return M.C[a]||M.hb(void 0,a)};E.pa=function(){return M.D.slice(0)};E.ab=function(){return M.D.length}; +E.aa=function(){this.w=!0};E.la=function(){this.G=!0};var Fe=function(a){if("prerender"==J.visibilityState)return!1;a();return!0};var M=new qf;var Ha=W._gat;Ha&&Ba(Ha._getTracker)?M=Ha:W._gat=M;var Z=new Y;(function(a){if(!Fe(a)){H(123);var b=!1,c=function(){if(!b&&Fe(a)){b=!0;var d=J,e=c;d.removeEventListener?d.removeEventListener("visibilitychange",e,!1):d.detachEvent&&d.detachEvent("onvisibilitychange",e)}};Ga(J,"visibilitychange",c)}})(function(){var a=W._gaq,b=!1;if(a&&Ba(a.push)&&(b="[object Array]"==Object.prototype.toString.call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z.push.apply(Z,a)});function Yc(a){var b=1,c=0,d;if(a)for(b=0,d=a.length-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b;return b};})(); diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/jquery-1.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/jquery-1.js new file mode 100644 index 0000000..16ad06c --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/jquery-1.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ld.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ld.js new file mode 100644 index 0000000..c861cca --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/ld.js @@ -0,0 +1,21 @@ +if(!window.criteo_q||window.criteo_q instanceof Array){var oldQueue=window.criteo_q||[];window.criteo_q=function(){var e={bodyReady:!1,domReady:!1,queue:[],actions:[],disingScheduled:[],accounts:[],acid:null,axid:null,pxsig:null,ccp:null},d={tagVersion:"4.1.0",handlerUrlPrefix:("https:"===document.location.protocol?"https://sslwidget.":"http://widget.")+"criteo.com/event",handlerResponseType:"single",responseType:"js",handlerParams:{v:"4.1.0"},extraData:[],customerInfo:[],manualDising:!1,manualFlush:!1, +disOnce:!1,partialDis:!1,eventMap:{applaunched:"al",viewitem:"vp",viewhome:"vh",viewlist:"vl",viewbasket:"vb",viewsearch:"vs",tracktransaction:"vc",calldising:"dis",setdata:"exd",setemail:"ce"},propMap:{event:"e",account:"a",currency:"c",product:"p",item:"p","item.id":"i","item.price":"pr","item.quantity":"q","product.id":"i","product.price":"pr","product.quantity":"q",data:"d",keywords:"kw",checkin_date:"din",checkout_date:"dout",deduplication:"dd",attribution:"at","attribution.channel":"ac","attribution.value":"v", +user_segment:"si",new_customer:"nc",customer_id:"ci",email:"m",hash_method:"h",transaction_value:"tv",responseType:"rt"},setters:{seturl:{cfg:"handlerUrlPrefix",evt:"url"},setaccount:{cfg:"account",evt:"account"},setcalltype:{cfg:"handlerResponseType",evt:"type"},setresponsetype:{cfg:"responseType",evt:"type"},oninitialized:{cfg:"onInitialized",evt:"callback"},ondomready:{cfg:"onDOMReady",evt:"callback"},beforeappend:{cfg:"beforeAppend",evt:"callback"},aftereval:{cfg:"afterEval",evt:"callback"},onflush:{cfg:"onFlush", +evt:"callback"}},flags:{disonce:"disOnce",manualdising:"manualDising",manualflush:"manualFlush",nopartialflush:"noPartialFlush",disonpartialflush:"partialDis"}},l=function(a){var b;return 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiocloud.svg b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiocloud.svg new file mode 100644 index 0000000..4837dec --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiocloud.svg @@ -0,0 +1 @@ +Asset 7 diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiolabs.png b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sensiolabs.png new file mode 100644 index 0000000000000000000000000000000000000000..6342f2442c4a91625e3ee21e80578a728116d482 GIT binary patch literal 1386 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 literal 0 HcmV?d00001 diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.css b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.css new file mode 100644 index 0000000..0359775 --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.css @@ -0,0 +1 @@ +#sln div,#sln span,#sln applet,#sln object,#sln iframe,#sln h1,#sln h2,#sln h3,#sln h4,#sln h5,#sln h6,#sln p,#sln blockquote,#sln pre,#sln a,#sln abbr,#sln acronym,#sln address,#sln big,#sln cite,#sln code,#sln del,#sln dfn,#sln em,#sln img,#sln ins,#sln kbd,#sln q,#sln s,#sln samp,#sln small,#sln strike,#sln strong,#sln sub,#sln sup,#sln tt,#sln var,#sln b,#sln u,#sln i,#sln center,#sln dl,#sln dt,#sln dd,#sln ol,#sln ul,#sln li,#sln fieldset,#sln form,#sln label,#sln legend,#sln table,#sln caption,#sln tbody,#sln tfoot,#sln thead,#sln tr,#sln th,#sln td,#sln article,#sln aside,#sln canvas,#sln details,#sln embed,#sln figure,#sln figcaption,#sln footer,#sln header,#sln hgroup,#sln menu,#sln nav,#sln output,#sln ruby,#sln section,#sln summary,#sln time,#sln mark,#sln audio,#sln video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}#sln article,#sln aside,#sln details,#sln figcaption,#sln figure,#sln footer,#sln header,#sln hgroup,#sln menu,#sln nav,#sln section{display:block}#sln ol,#sln ul{list-style:none}#sln blockquote,#sln q{quotes:none}#sln blockquote:before,#sln blockquote:after,#sln q:before,#sln q:after{content:'';content:none}#sln table{border-collapse:collapse;border-spacing:0}#sln .sln-dropdown{background-color:#0f0f0f;color:#b7b7b7;padding-top:35px;padding-bottom:35px;line-height:20px}#sln .sln-dropdown-network img{margin-bottom:15px}#sln .sln-dropdown-network p{color:#b7b7b7;margin-bottom:25px;padding-right:35px}#sln .sln-dropdown-network .sln-websites li{display:inline}#sln .sln-dropdown-network .sln-websites li:before{padding-left:7px;padding-right:7px;content:"|"}#sln .sln-dropdown-network .sln-websites li:first-child:before,#sln .sln-dropdown-network .sln-websites li.first:before{content:"";padding:0}#sln .sln-dropdown-network .sln-websites li.first:before{padding-left:7px}#sln .sln-dropdown-network .sln-right-box{margin-left:30px;margin-bottom:25px;width:auto;min-width:510px;float:left}#sln .sln-dropdown-network .sln-right-box:last-child{margin-bottom:0}#sln .sln-dropdown-network .sln-right-box .sln-row{margin-left:0;padding-bottom:25px}#sln .sln-dropdown-network .sln-right-box .sln-row:last-child{padding-bottom:0}#sln .sln-dropdown-network .sln-right-box .sln-row .sln-span3{width:39%;float:right}#sln .sln-dropdown-network .sln-right-box .sln-row .sln-span3:first-child{float:left}#sln .sln-dropdown-network .sln-products-listing{background:transparent url(/images/sln-v2/border.gif) repeat-y 50% 0}#sln .sln-dropdown-network .sln-our-blogs h2{display:inline}#sln .sln-dropdown-user{color:#fff}#sln .sln-dropdown-user ul{border-top:1px solid #373737;margin-bottom:15px}#sln .sln-dropdown-user ul li{border-bottom:1px solid #373737;line-height:50px}#sln .sln-dropdown-user ul li img{margin-right:15px}#sln .sln-dropdown-user .sln-separator{margin-bottom:15px}#sln .sln-dropdown-user .sln-user-actions{float:right}#sln .sln-dropdown-search{background-color:#e5e5e5;padding-top:0}@media(min-width:978px) and (max-width:1198px){#sln .sln-dropdown-network .sln-products-listing{min-width:inherit;max-width:420px}}@media(min-width:768px) and (max-width:978px){#sln .sln-dropdown-network .sln-products-listing{min-width:inherit;max-width:342px}}@media(max-width:551px){#sln .sln-dropdown-network .sln-products-listing{background:transparent;min-width:inherit}#sln .sln-dropdown-network .sln-products-listing .sln-row{padding-bottom:0}#sln .sln-dropdown-network .sln-products-listing .sln-row .sln-span3{float:none;width:100%;padding-bottom:25px}}#sln{background-color:#2f2f2f;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:#b7b7b7;font-size:13px;min-height:36px;height:36px}#sln h2{color:#fff;margin-bottom:10px;font-size:16px;font-weight:bold}#sln img{vertical-align:middle}#sln .sln-bar{*position:relative;*z-index:2;overflow:visible;margin-bottom:18px;position:fixed;top:0;right:0;left:0;z-index:9000;margin-bottom:0;color:#b7b7b7;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif}#sln .sln-bar a{text-decoration:none}#sln .sln-bar a,#sln .sln-bar a:hover{color:#82e83e}#sln .sln-bar a:hover{text-decoration:underline}#sln .sln-bar ul{list-style:none}#sln .sln-bar-inner{min-height:36px;padding-left:0;padding-right:0;background-color:#2f2f2f}#sln .sln-bar-inner div{height:36px}#sln .sln-container{margin-left:auto;margin-right:auto}#sln .nav-collapse.collapse{height:auto}#sln .sln-network,#sln .sln-ad,#sln .sln-user,#sln .sln-search{line-height:34px}#sln .sln-network,#sln .sln-ad{float:left}#sln .sln-user,#sln .sln-search{float:right}#sln .sln-network,#sln .sln-user{background-color:#000}#sln .sln-network{margin-right:10px;width:175px}#sln .sln-network a,#sln .sln-network a:hover{padding-left:15px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;text-decoration:none;color:white;padding-right:18px;background:url("../images/sln-v2/triangle-down.png") no-repeat scroll right 6px transparent}#sln .sln-network a span,#sln .sln-network a:hover span{color:#82e83e}#sln .sln-ad{white-space:nowrap}#sln .sln-ad img{margin-right:8px}#sln .sln-ad a,#sln .sln-ad a:hover{color:#fff;font-size:12px;text-decoration:none}#sln .sln-ad a:hover{color:#82e83e}#sln .sln-user{min-width:50px;background-color:#000;padding-left:3px}#sln .sln-user a,#sln .sln-user a:hover{color:#fff;text-decoration:none;margin-right:10px;background:url("../images/sln-v2/triangle-down.png") no-repeat scroll right 5px transparent}#sln .sln-user a img,#sln .sln-user a:hover img{margin-right:8px}#sln .sln-user a .sln-notification-count,#sln .sln-user a:hover .sln-notification-count{margin-left:7px;margin-right:15px;background-color:#9f3;color:#000;-moz-border-radius:10px;-webkit-border-radius:10px;-o-border-radius:10px;border-radius:10px;padding:0 5px 0 5px;font-weight:bold;font-size:12px}#sln .sln-user a .sln-user-name,#sln .sln-user a:hover .sln-user-name{padding-right:20px}#sln .sln-user a.sln-connect{display:inline-block;padding-left:36px;padding-right:14px;margin:0;font:13px/36px bold Helvetica,arial,sans-serif;color:#292929;font-weight:bold;background-color:#d9d9d9;background-image:url(/images/sln-v2/picto-connectwithSLBlack.png);background-repeat:no-repeat;background-position:9px 11px;background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,-moz-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,-webkit-gradient(linear,left top,left bottom,color-stop(0%,#eaeaea),color-stop(100%,#c2c2c2));background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,-webkit-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,-o-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,-ms-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:url(/images/sln-v2/picto-connectwithSLBlack.png) no-repeat 9px 11px,linear-gradient(to bottom,#eaeaea 0,#c2c2c2 100%)}#sln .sln-user a.sln-connect:hover{color:white;background-color:#69cd26;background-image:url(/images/sln-v2/picto-connectwithSL.png);background-repeat:no-repeat;background-position:9px 11px;background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-moz-linear-gradient(top,#82e83e 0,#53b610 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-gradient(linear,left top,left bottom,color-stop(0%,#82e83e),color-stop(100%,#53b610));background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-linear-gradient(top,#82e83e 0,#53b610 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-o-linear-gradient(top,#82e83e 0,#53b610 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-ms-linear-gradient(top,#82e83e 0,#53b610 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,linear-gradient(to bottom,#82e83e 0,#53b610 100%)}#sln .sln-user-unconfirmed{background:#a33}#sln .sln-search img{margin-left:13px;margin-right:13px;vertical-align:top;margin-top:10px}#sln .sln-search .sln-search-activated{background-color:#e5e5e5;width:200px}#sln .sln-search form,#sln .sln-search input{display:inline;background-color:#e5e5e5;color:#727272;font-style:italic;height:36px;padding:0;margin:0}#sln .sln-search input{border:0;width:100px;height:36px}#sln .sln-search input,#sln .sln-search input:focus{box-shadow:none}#sln .sln-row{margin-left:-20px;*zoom:1}#sln .sln-row:before,#sln .sln-row:after{display:table;content:""}#sln .sln-row:after{clear:both}#sln [class*="sln-span"]{float:left;margin-left:20px}#sln .sln-span3{width:220px}#sln .sln-span6{width:460px}#sln .sln-span9{width:700px}#sln .sln-span12,#sln .sln-container{width:940px}#sln .sln-offset9{margin-left:740px}ul.sln-autocomplete-menu{background:none repeat scroll 0 0 #e5e5e5;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:#b7b7b7;border:1px solid #e5e5e5;border-right:0;left:auto!important;padding:0;position:absolute;right:0!important;top:34px!important;width:370px;z-index:1000!important}ul.sln-autocomplete-menu li{display:list-item;font-size:13px}ul.sln-autocomplete-menu li a{display:block;padding-left:5px}ul.sln-autocomplete-menu li.all-results,ul.sln-autocomplete-menu li.ui-menu-item{background:none repeat scroll 0 0 white;border-top:1px solid #eee;margin-left:110px;min-height:40px;width:260px}ul.sln-autocomplete-menu li.all-results a,ul.sln-autocomplete-menu li.ui-menu-item a{cursor:pointer;line-height:40px}ul.sln-autocomplete-menu li.all-results.first,ul.sln-autocomplete-menu li.ui-menu-item.first{margin-top:-41px}ul.sln-autocomplete-menu li.ui-menu-item:hover{border-top:1px solid #e5e5e5}ul.sln-autocomplete-menu li.ui-autocomplete-category{background:none repeat scroll 0 0 #e5e5e5;border-top:1px solid #e5e5e5;font-weight:bold;line-height:40px;padding-right:10px;text-align:right;width:100px}ul.sln-autocomplete-menu li.ui-autocomplete-category:first-letter {text-transform:uppercase}ul.sln-autocomplete-menu .ui-state-hover,ul.sln-autocomplete-menu .ui-widget-content .ui-state-hover,ul.sln-autocomplete-menu .ui-widget-header .ui-state-hover,ul.sln-autocomplete-menu .ui-state-focus,ul.sln-autocomplete-menu .ui-widget-content .ui-state-focus,ul.sln-autocomplete-menu .ui-widget-header .ui-state-focus{background:none repeat scroll 0 0 #e5e5e5;color:#727272}#sln div.sln-notifications-container h2{margin-bottom:0}#sln div.sln-notifications-container ul{margin-bottom:10px}#sln div.sln-notifications-container ul li.sln-notification{border-bottom:1px solid #373737;line-height:60px}#sln div.sln-notifications-container ul li.sln-notification img{padding-right:10px}#sln .sln-hidden{display:none;visibility:hidden}#sln .sln-visible-phone{display:none!important}#sln .sln-visible-tablet{display:none!important}#sln .sln-hidden-desktop{display:none!important}@media(max-width:767px){#sln .sln-visible-phone{display:inherit!important}#sln .sln-hidden-phone{display:none!important}#sln .sln-hidden-desktop{display:inherit!important}#sln .sln-visible-desktop{display:none!important}#sln .sln-bar{position:static}#sln .sln-container{width:auto;padding:0 20px}#sln .sln-row{margin-left:0}#sln .sln-row>[class*="span"]{float:none;display:block;width:auto;margin:0}#sln .sln-network{width:70px}#sln .sln-network a,#sln .sln-network a:hover{background:url("../images/sln-v2/triangle-down.png") no-repeat scroll 45px 14px transparent}#sln .sln-user a img,#sln .sln-user a:hover img{margin-right:0}#sln .sln-search .sln-search-activated{width:120px}#sln .sln-search .sln-search-activated input{width:50px}#sln .sln .sln-dropdown-network p{margin-bottom:5px}#sln h2{margin-top:10px}#sln .sln-dropdown{padding-top:15px;padding-bottom:15px}#sln .sln-dropdown-user .sln-user-actions{float:none}}@media(max-width:360px){#sln .sln-network{width:60px;margin-right:5px}#sln .sln-network a,#sln .sln-network a:hover{background-position:40px 14px;padding-left:10px;padding-right:15px}#sln .sln-ad{position:absolute;top:0;left:60px;right:46px;overflow:hidden}#sln .sln-user{position:absolute;top:0;right:0;min-width:36px;padding-left:0}#sln .sln-user a.sln-connect{padding-right:0;font-size:0;position:absolute;top:0;right:0}#sln .sln-user a.sln-user-connected{margin-right:0;padding-right:2px}#sln .sln-user a img,#sln .sln-user a:hover img{margin-right:13px}}@media(min-width:768px) and (max-width:979px){#sln .sln-visible-tablet{display:inherit!important}#sln .sln-hidden-tablet{display:none!important}#sln .sln-hidden-desktop{display:inherit!important}#sln .sln-visible-desktop{display:none!important}#sln .sln-row{margin-left:-20px;*zoom:1}#sln .sln-row:before,#sln .sln-row:after{display:table;content:""}#sln .sln-row:after{clear:both}#sln [class*="sln-span"]{float:left;margin-left:20px}#sln .sln-span3{width:166px}#sln .sln-span6{width:352px}#sln .sln-span9{width:538px}#sln .sln-span12,#sln .sln-container{width:724px}#sln .sln-offset9{margin-left:578px}}@media(min-width:1199px){#sln .sln-row{margin-left:-30px;*zoom:1}#sln .sln-row:before,#sln .sln-row:after{display:table;content:""}#sln .sln-row:after{clear:both}#sln [class*="sln-span"]{float:left;margin-left:30px}#sln .sln-span3{width:270px}#sln .sln-span6{width:570px}#sln .sln-span9{width:870px}#sln .sln-span12,#sln .sln-container{width:1170px}#sln .sln-offset9{margin-left:930px}}.connect-with-sensiolabs{padding-left:36px;box-shadow:0 1px 1px rgba(0,0,0,0.5);background-color:#ababab;background-image:url(/images/sln-v2/picto-connectwithSL.png);background-repeat:no-repeat;background-position:9px 11px;background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-moz-linear-gradient(top,#c0c0c0 0,#868585 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-gradient(linear,left top,left bottom,color-stop(0%,#c0c0c0),color-stop(100%,#868585));background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-linear-gradient(top,#c0c0c0 0,#868585 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-o-linear-gradient(top,#c0c0c0 0,#868585 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-ms-linear-gradient(top,#c0c0c0 0,#868585 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,linear-gradient(to bottom,#c0c0c0 0,#868585 100%)}.connect-with-sensiolabs,.connect-with-sensiolabs span{display:inline-block;min-height:36px}.connect-with-sensiolabs span{font:13px/36px bold Helvetica,arial,sans-serif;color:#292929;padding:0 10px;background:#d9d9d9;background:-moz-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#eaeaea),color-stop(100%,#c2c2c2));background:-webkit-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:-o-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:-ms-linear-gradient(top,#eaeaea 0,#c2c2c2 100%);background:linear-gradient(to bottom,#eaeaea 0,#c2c2c2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#eaeaea,endColorstr=#c2c2c2,GradientType=0)}.connect-with-sensiolabs:hover{background-color:#54b314;background-image:url(/images/sln-v2/picto-connectwithSL.png);background-repeat:no-repeat;background-position:9px 11px;background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-moz-linear-gradient(top,#6adb1f 0,#40910b 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-gradient(linear,left top,left bottom,color-stop(0%,#6adb1f),color-stop(100%,#40910b));background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-webkit-linear-gradient(top,#6adb1f 0,#40910b 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-o-linear-gradient(top,#6adb1f 0,#40910b 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,-ms-linear-gradient(top,#6adb1f 0,#40910b 100%);background:url(/images/sln-v2/picto-connectwithSL.png) no-repeat 9px 11px,linear-gradient(to bottom,#6adb1f 0,#40910b 100%)}.connect-with-sensiolabs:hover span{background:#69cd26;background:-moz-linear-gradient(top,#82e83e 0,#53b610 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#82e83e),color-stop(100%,#53b610));background:-webkit-linear-gradient(top,#82e83e 0,#53b610 100%);background:-o-linear-gradient(top,#82e83e 0,#53b610 100%);background:-ms-linear-gradient(top,#82e83e 0,#53b610 100%);background:linear-gradient(to bottom,#82e83e 0,#53b610 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#82e83e,endColorstr=#53b610,GradientType=0)} \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.js b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.js new file mode 100644 index 0000000..636ce3d --- /dev/null +++ b/Sources/webAduc/Documentation/Twig for Developers - Documentation - Twig - The flexible, fast, and secure PHP template engine_fichiers/sln.js @@ -0,0 +1,262 @@ + +var SLNBar = { + 'ads': '\x5B\x7B\x22href\x22\x3A\x22https\x3A\x5C\x2F\x5C\x2Fblackfire.io\x5C\x2F\x22,\x22icon\x22\x3A\x22https\x3A\x5C\x2F\x5C\x2Fdoschzharf1i9.cloudfront.net\x5C\x2Fpersonal_assets\x5C\x2Fsln\x5C\x2F30x30\x5C\x2F1c5498dd\x2D0649\x2D4d42\x2Daf4b\x2D1de957825f62.png\x22,\x22short_text\x22\x3A\x22Blackfire.io\x22,\x22medium_text\x22\x3A\x22Blackfire.io\x3A\x20Fire\x20up\x20your\x20PHP\x20apps\x20performance\x22,\x22long_text\x22\x3A\x22Blackfire.io\x3A\x20Fire\x20up\x20your\x20PHP\x20apps\x20performance\x22,\x22ga\x22\x3A\x22blackfire\x22\x7D,\x7B\x22href\x22\x3A\x22https\x3A\x5C\x2F\x5C\x2Fsensiolabs.com\x5C\x2Fen\x5C\x2Ftwig\x5C\x2Fcertification.html\x22,\x22icon\x22\x3A\x22https\x3A\x5C\x2F\x5C\x2Fdoschzharf1i9.cloudfront.net\x5C\x2Fpersonal_assets\x5C\x2Fsln\x5C\x2F30x30\x5C\x2Fda02766c\x2D18d7\x2D4302\x2Daede\x2D0547d35f0ad8.png\x22,\x22short_text\x22\x3A\x22Twig\x20Certification\x22,\x22medium_text\x22\x3A\x22Twig\x20Certification\x20now\x20available\x22,\x22long_text\x22\x3A\x22Twig\x20Certification\x20now\x20available\x20in\x204,000\x20exam\x20centers\x20around\x20the\x20world\x22,\x22ga\x22\x3A\x22twig_certification\x22\x7D\x5D', + 'isAuthenticated': null, + 'uuid': '', + 'fullName': '', + 'needsEmailConfirmation': false, + 'urlConnectHomepage': 'https\x3A\x2F\x2Fconnect.sensiolabs.com\x2F', + 'urlConnectAccount': 'https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fme', + 'urlConnectLogout': 'https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Flogout', + 'urlConnectButton': '', + 'searchActive' : false, + 'searchPlaceholder': 'Search', + 'searchUrl': '', + 'searchUrlAutocomplete': '', + 'searchUrlMethod': 'GET', + 'searchAutocompleteMethod': 'GET', + 'searchApiAlternateShow': '', + 'searchApiImageShow': '', + 'searchAutocompleteSelect': function (event, ui) { + if (ui.item.path) { + $("#sln-autocomplete").val(ui.item.label); + window.location.href = ui.item.path; + + return false; + } + }, + 'searchAutocompleteRenderItem': function(){}, + 'actions': {}, + 'separatedActions': {}, + + 'render': function() { + template = '\x3Cdiv\x20class\x3D\x22sln\x2Dbar\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dbar\x2Dinner\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dnetwork\x22\x3E\x3Ca\x20href\x3D\x22\x23\x22\x20class\x3D\x22sln\x2Dhidden\x2Dphone\x22\x3ESensioLabs\x3Cspan\x3EWorld\x3C\x2Fspan\x3E\x3C\x2Fa\x3E\x3Ca\x20href\x3D\x22\x23\x22\x20class\x3D\x22sln\x2Dvisible\x2Dphone\x22\x3ESL\x3Cspan\x3EW\x3C\x2Fspan\x3E\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x20__AD__\x20__SEARCH__\x20__USER__\x0A\x20\x20\x20\x20\x3C\x2Fdiv\x3E\x0A\x20\x20\x20\x20__DROPDOWN_NETWORK__\x0A\x20\x20\x20\x20__DROPDOWN_USER__\x0A\x3C\x2Fdiv\x3E'; + + template = template.replace(/__AD__/g, this.renderAds()) + .replace(/__SEARCH__/g, this.renderSearch()) + .replace(/__USER__/g, this.renderUser()) + .replace(/__USER_CONTAINER_CLASS__/g, this.needsEmailConfirmation ? 'sln-user sln-user-unconfirmed' : 'sln-user') + .replace(/__DROPDOWN_NETWORK__/g, this.renderDropdownNetwork()) + .replace(/__DROPDOWN_USER__/g, this.renderDropdownUser()) + .replace(/__DROPDOWN_SEARCH__/g, this.renderDropdownSearch()); + + return template; + }, + 'renderSearch': function() { + template = '\x3Cdiv\x20class\x3D\x22sln\x2Dsearch\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dsearch\x2Ddeactivated\x22\x3E\x3Ca\x20href\x3D\x22\x23\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fimages\x2Fsln\x2Dv2\x2Fsearch.png\x22\x20\x2F\x3E\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dsearch\x2Dactivated\x20sln\x2Dhidden\x22\x3E\x3Ca\x20href\x3D\x22\x23\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fimages\x2Fsln\x2Dv2\x2Fsearch\x2Dalt.png\x22\x20\x2F\x3E\x3C\x2Fa\x3E\x3Cform\x20method\x3D\x22__METHOD__\x22\x20action\x3D\x22__ACTION__\x22\x3E\x3Cinput\x20name\x3D\x22q\x22\x20id\x3D\x22sln\x2Dautocomplete\x22\x20type\x3D\x22text\x22\x20placeholder\x3D\x22__PLACEHOLDER__\x22\x20\x2F\x3E\x3C\x2Fform\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E'; + if (this.searchActive == true) { + return template.replace(/__METHOD__/g, this.searchUrlMethod) + .replace(/__ACTION__/g, this.searchUrl) + .replace(/__PLACEHOLDER__/g, this.searchPlaceholder); + } + + return ''; + }, + 'renderUser': function() { + template = '\x3Cdiv\x20class\x3D\x22__USER_CONTAINER_CLASS__\x22\x3E\x20__USER_STATE__\x20\x3C\x2Fdiv\x3E'; + if (this.isAuthenticated) { + state = '\x3Ca\x20class\x3D\x22sln\x2Duser\x2Dconnected\x22\x20href\x3D\x22\x23\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fapi\x2Fimages\x2F__UUID__.png\x22\x20width\x3D\x2230\x22\x20height\x3D\x2230\x22\x20alt\x3D\x22__FULLNAME__\x22\x2F\x3E\x3Cspan\x20class\x3D\x22sln\x2Duser\x2Dname\x20sln\x2Dhidden\x2Dphone\x22\x3E__FULLNAME_HTML__\x3C\x2Fspan\x3E\x3C\x2Fa\x3E'; + state = state.replace(/__UUID__/g, this.uuid) + .replace(/__FULLNAME__/g, this.fullName) + .replace(/__FULLNAME_HTML__/g, this.fullName + (this.needsEmailConfirmation ? ' unconfirmed' : '')); + + return template.replace(/__USER_STATE__/g, state); + } else if (!this.isAuthenticated && this.urlConnectButton != '') { + state = '\x3Ca\x20href\x3D\x22__CONNECT_URL__\x22\x20class\x3D\x22sln\x2Dconnect\x22\x3E\x20Connect\x20\x3C\x2Fa\x3E'; + state = state.replace(/__CONNECT_URL__/g, this.urlConnectButton); + + return template.replace(/__USER_STATE__/g, state); + } + + return ''; + }, + 'renderDropdownNetwork': function() { + return '\x3Cdiv\x20class\x3D\x22sln\x2Ddropdown\x2Dnetwork\x20sln\x2Ddropdown\x20sln\x2Dhidden\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dcontainer\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan6\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fimages\x2Fsln\x2Dv2\x2Fsensiolabs.png\x22\x20alt\x3D\x22SensioLabs\x22\x20\x2F\x3E\x3Cp\x3ESince\x201998,\x20SensioLabs\x20has\x20been\x20promoting\x20the\x20Open\x2DSource\x20software\x20movement\x20by\x20providing\x20quality\x20and\x20performant\x20web\x20application\x20development\x20products,\x20trainings,\x20\x20and\x20consulting.\x20SensioLabs\x20also\x20supports\x20multiple\x20important\x20Open\x2DSource\x20projects.\x20\x3Cbr\x20\x2F\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_learn_more\x22\x20href\x3D\x22http\x3A\x2F\x2Fsensiolabs.com\x2Fen\x22\x3ELearn\x20more\x3C\x2Fa\x3E\x3C\x2Fp\x3E\x3Cdiv\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_sl_international\x22\x20href\x3D\x22http\x3A\x2F\x2Fsensiolabs.com\x2Fen\x22\x3EInternational\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x3Cul\x20class\x3D\x22sln\x2Dwebsites\x22\x3E\x3Cli\x3ELocal\x3A\x3C\x2Fli\x3E\x3Cli\x20class\x3D\x22first\x22\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_sl_FR\x22\x20href\x3D\x22http\x3A\x2F\x2Fsensiolabs.com\x2Ffr\x22\x3EFrance\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_sl_DE\x22\x20href\x3D\x22http\x3A\x2F\x2Fsensiolabs.de\x2F\x22\x3EGermany\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x20sln\x2Dads\x22\x3E\x3Ch2\x3EIn\x20the\x20Spotlight\x3C\x2Fh2\x3E\x3Cdiv\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_insight_thumb\x22\x20href\x3D\x22https\x3A\x2F\x2Finsight.sensiolabs.com\x2F\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fimages\x2Fsln\x2Dv2\x2Fsensiolabsinsight.png\x22\x20alt\x3D\x22SensioLabsInsight\x22\x20\x2F\x3E\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_blackfire_thumb\x22\x20href\x3D\x22https\x3A\x2F\x2Fblackfire.io\x22\x3E\x3Cimg\x20src\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fimages\x2Fsln\x2Dv2\x2Fblackfire.png\x22\x20alt\x3D\x22Blackfire\x22\x20\x2F\x3E\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan6\x20sln\x2Dproducts\x2Dlisting\x20sln\x2Dright\x2Dbox\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x22\x3E\x3Ch2\x3EOpen\x20Source\x3C\x2Fh2\x3E\x3Cul\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_sf\x22\x20href\x3D\x22http\x3A\x2F\x2Fsymfony.com\x2F\x22\x3ESymfony\x20\x2D\x20Web\x20framework\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_twig\x22\x20href\x3D\x22http\x3A\x2F\x2Ftwig.sensiolabs.org\x2F\x22\x3ETwig\x20\x2D\x20Templating\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x20\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_silex\x22\x20href\x3D\x22http\x3A\x2F\x2Fsilex.sensiolabs.org\x2F\x22\x3ESilex\x20\x2D\x20Micro\x2Dframework\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_swift\x22\x20href\x3D\x22http\x3A\x2F\x2Fwww.swiftmailer.org\x2F\x22\x3ESwift\x20Mailer\x20\x2D\x20E\x2DMailing\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x22\x3E\x3Ch2\x3EProducts\x3C\x2Fh2\x3E\x3Cul\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_insight\x22\x20href\x3D\x22https\x3A\x2F\x2Finsight.sensiolabs.com\x22\x3EInsight\x3A\x20PHP\x20Quality\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_profiler\x22\x20href\x3D\x22https\x3A\x2F\x2Fblackfire.io\x22\x3EBlackfire\x3A\x20Web\x20App\x20performance\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_sensiocloud\x22\x20href\x3D\x22https\x3A\x2F\x2Fsensio.cloud\x22\x3ESensioCloud\x3A\x20PaaS\x20for\x20Symfony\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_security_checker\x22\x20href\x3D\x22https\x3A\x2F\x2Fsecurity.sensiolabs.org\x2F\x22\x3ESecurity\x20checker\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x22\x3E\x3Ch2\x3ESolutions\x20\x26amp\x3B\x20Services\x3C\x2Fh2\x3E\x3Cul\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_training\x22\x20href\x3D\x22https\x3A\x2F\x2Ftraining.sensiolabs.com\x2F\x22\x3ETraining\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_certification\x22\x20href\x3D\x22https\x3A\x2F\x2Fsensiolabs.com\x2Fcertification\x22\x3ECertification\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_services\x22\x20\x20href\x3D\x22https\x3A\x2F\x2Fsensiolabs.com\x2Fsolutions\x22\x3ETechnical\x20Solutions\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_university\x22\x20href\x3D\x22https\x3A\x2F\x2Fsensiolabs.com\x2Fen\x2Funiversity\x2Findex.html\x22\x3ESensioLabs\x20University\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_experts\x22\x20href\x3D\x22http\x3A\x2F\x2Fexpert.sensiolabs.com\x2F\x22\x3EExperts\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan3\x22\x3E\x3Ch2\x3ECommunity\x3C\x2Fh2\x3E\x3Cul\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_connect\x22\x20href\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2F\x22\x3ECommunity\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_live\x22\x20href\x3D\x22http\x3A\x2F\x2Flive.symfony.com\x22\x3EConferences\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_youtube\x22\x20href\x3D\x22https\x3A\x2F\x2Fwww.youtube.com\x2Fuser\x2FSensioLabs\x22\x3EVideos\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_partners\x22\x20href\x3D\x22https\x3A\x2F\x2Fnetwork.sensiolabs.com\x2Fen\x2F\x22\x3EPartners\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3Cli\x3E\x3Ca\x20data\x2Dga\x3D\x22sln_job_board\x22\x20href\x3D\x22http\x3A\x2F\x2Fjobs.sensiolabs.com\x2F\x22\x3EJob\x20Board\x3C\x2Fa\x3E\x3C\x2Fli\x3E\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dright\x2Dbox\x20sln\x2Dour\x2Dblogs\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x20\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan5\x22\x3E\x3Ch2\x3EOur\x20Blogs\x3C\x2Fh2\x3E\x26nbsp\x3B\x26nbsp\x3B\x26nbsp\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3Ca\x20href\x3D\x22http\x3A\x2F\x2Fsymfony.com\x2Fblog\x2F\x22\x3ESymfony\x3C\x2Fa\x3E,\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3Ca\x20href\x3D\x22http\x3A\x2F\x2Fblog.sensiolabs.com\x2F\x22\x3ESensioLabs\x3C\x2Fa\x3E,\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3Ca\x20href\x3D\x22http\x3A\x2F\x2Fblog.insight.sensiolabs.com\x2F\x22\x3EInsight\x3C\x2Fa\x3E,\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20\x3Ca\x20href\x3D\x22http\x3A\x2F\x2Fblog.blackfire.io\x2F\x22\x3EBlackfire\x3C\x2Fa\x3E.\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E'; + }, + 'renderDropdownUser': function() { + template = '\x3Cdiv\x20class\x3D\x22sln\x2Ddropdown\x2Duser\x20sln\x2Ddropdown\x20sln\x2Dhidden\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dcontainer\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Duser\x2Dactions\x20sln\x2Dspan3\x22\x3E\x3Ch2\x3EYour\x20actions\x3C\x2Fh2\x3E\x3Cul\x3E\x20__ACTIONS__\x20\x3C\x2Ful\x3E\x3C\x2Fdiv\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dspan9\x20sln\x2Dnotifications\x2Dcontainer\x22\x3E\x3Ch2\x3EYour\x20notifications\x3A\x3C\x2Fh2\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20In\x20order\x20to\x20see\x20your\x20notifications,\x20please\x20\x3Ca\x20href\x3D\x22https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Flogin\x22\x3Elogin\x20to\x20your\x20SensioLabs\x20account\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E'; + if (!this.isAuthenticated) { + return ''; + } + + var processActions = function(actions) { + actionList = ''; + for (key in actions) { + action = actions[key]; + actionTemplate = '\x3Cli\x3E\x3Ca\x20href\x3D\x22__HREF__\x22\x3E__TEXT__\x3C\x2Fa\x3E\x3C\x2Fli\x3E'; + actionTemplate = actionTemplate.replace(/__HREF__/g, action.url); + actionTemplate = actionTemplate.replace(/__TEXT__/g, action.label); + + actionList += actionTemplate; + } + + return actionList; + } + + actions = processActions(this.actions); + separated = processActions(this.separatedActions); + if (separated != '') { + actions += '\x3Cli\x20class\x3D\x22sln\x2Dseparator\x22\x3E\x3C\x2Fli\x3E'; + actions += separated; + } + + return template.replace(/__ACTIONS__/g, actions); + }, + 'renderAds': function() { + var ads = jQuery.parseJSON(this.ads); + if (ads && ads.length > 0) { + var ad = ads[Math.floor((Math.random()*ads.length))]; + template = '\x3Cdiv\x20class\x3D\x22sln\x2Dad\x22\x3E\x3Ca\x20href\x3D\x22__HREF__\x22\x20data\x2Dga\x3D\x22__GA__\x22\x20class\x3D\x22sln\x2Dvisible\x2Dphone\x22\x3E\x3Cimg\x20src\x3D\x22__ICON__\x22\x20\x2F\x3E__TEXT_SHORT__\x3C\x2Fa\x3E\x3Ca\x20href\x3D\x22__HREF__\x22\x20data\x2Dga\x3D\x22__GA__\x22\x20class\x3D\x22sln\x2Dvisible\x2Dtablet\x22\x3E\x3Cimg\x20src\x3D\x22__ICON__\x22\x20\x2F\x3E__TEXT_MEDIUM__\x3C\x2Fa\x3E\x3Ca\x20href\x3D\x22__HREF__\x22\x20data\x2Dga\x3D\x22__GA__\x22\x20class\x3D\x22sln\x2Dvisible\x2Ddesktop\x22\x3E\x3Cimg\x20src\x3D\x22__ICON__\x22\x20\x2F\x3E__TEXT_LONG__\x3C\x2Fa\x3E\x3C\x2Fdiv\x3E'; + return template.replace(/__HREF__/g, ad.href) + .replace(/__ICON__/g, ad.icon) + .replace(/__TEXT_SHORT__/g, ad.short_text) + .replace(/__TEXT_MEDIUM__/g, ad.medium_text) + .replace(/__TEXT_LONG__/g, ad.long_text) + .replace(/__GA__/g, ad.ga); + } + + return ''; + }, + 'renderDropdownSearch': function() { + if (!this.searchActive) { + return ''; + } + + return '\x3Cdiv\x20class\x3D\x22sln\x2Ddropdown\x20sln\x2Ddropdown\x2Dsearch\x20sln\x2Dhidden\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Dcontainer\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Drow\x22\x3E\x3Cdiv\x20class\x3D\x22sln\x2Doffset9\x20sln\x2Dspan3\x20sln\x2Dautocomplete\x2Dcontainer\x22\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E\x3C\x2Fdiv\x3E'; + }, + 'bindEvents': function() { + jQuery('.sln-network a').click(function(e) { + e.preventDefault(); + jQuery('.sln-dropdown-user').addClass('sln-hidden'); + jQuery('.sln-dropdown-network').toggleClass('sln-hidden sln-open'); + jQuery('.sln-search-activated').addClass('sln-hidden'); + jQuery('.sln-search-deactivated').removeClass('sln-hidden'); + jQuery('#sln').height($('.sln-bar').outerHeight()); + + jQuery('.sln-dropdown-network.sln-open a').click(function () { + _gaq.push(['sln._trackEvent', 'Toolbar', 'click', 'ad_'+jQuery(this).attr('data-ga')]); + }); + }); + + if (this.isAuthenticated) { + jQuery('.sln-user a').click(function(e) { + e.preventDefault(); + jQuery('.sln-dropdown-network').addClass('sln-hidden'); + jQuery('.sln-dropdown-user').toggleClass('sln-hidden'); + jQuery('.sln-search-activated').addClass('sln-hidden'); + jQuery('.sln-search-deactivated').removeClass('sln-hidden'); + jQuery('#sln').height($('.sln-bar').outerHeight()); + }); + } + if (this.searchActive) { + jQuery('.sln-search a').click(function(e) { + e.preventDefault(); + jQuery('.sln-dropdown-user').addClass('sln-hidden'); + jQuery('.sln-dropdown-network').addClass('sln-hidden'); + jQuery('.sln-search-activated').toggleClass('sln-hidden'); + jQuery('.sln-search-deactivated').toggleClass('sln-hidden'); + jQuery('#sln').height($('.sln-bar').outerHeight()); + }); + + this.bindSearch(); + } + + jQuery('.sln-ad a').click(function() { + _gaq.push(['sln._trackEvent', 'Ads', 'Ads', 'ad_'+jQuery(this).attr('data-ga')]); + }); + + }, + 'loadNotifications': function() { + jQuery('.sln-notification-count').remove(); + jQuery.ajax('https\x3A\x2F\x2Fconnect.sensiolabs.com\x2Fnotifications', { + headers: {'Accept': 'application/json'}, + xhrFields: { + withCredentials: true + }, + statusCode: { + 200: function(data, textStatus, jqXHR) { + if ('object' !== typeof data) { + data = jQuery.parseJSON(data); + } + jQuery('.sln-notifications-container').html(data.body); + if (data.count > 0) { + jQuery('.sln-user-connected').append(''+data.count+'') + } + jQuery('#sln').height(jQuery('.sln-bar').outerHeight(true)); + }, + 401: function(data, textStatus, jqXHR) { + } + } + }) + }, + 'bindSearch': function() { + $.widget("custom.slncomplete", $.ui.autocomplete, { + _renderMenu: function (ul, items) { + ul.addClass('sln-autocomplete-menu'); + ul.removeClass("ui-autocomplete"); + + var self = this, currentCategory = ""; + var group = "primary"; + var first = ''; + + $.each (items, function (index, item) { + if (item.category != currentCategory) { + ul.append("
  • " + item.category + "
  • "); + currentCategory = item.category; + if ("primary" == group) { + group = "secondary"; + } else { + group = "primary"; + } + first = 'first'; + } + self._renderItem({ ul: ul, item: item, group: group, first: first }); + first = ''; + }); + + ul.prepend("
  • Show all results...
  • "); + $('.sln_autocomplete .all-results a').click(function(e){window.location = $(this).attr('href');e.preventDefault();}); + } + }); + if (0 != $("#sln-autocomplete").length) { + $("#sln-autocomplete").slncomplete({ + source: this.searchUrlAutocomplete, + minLength: 2, + select: SLNBar.searchAutocompleteSelect + }).data("slncomplete")._renderItem = SLNBar.searchAutocompleteRenderItem; + } + } +} + +var _gaq = _gaq || []; +(function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); +})(); + + jQuery.get('\x2Fjs\x2Fsln_customize.js', function (data) { + jQuery(document).ready(function() { + if (null === SLNBar.isAuthenticated) { + SLNBar.isAuthenticated = false; + eval(data); + } + }) + }); + +_gaq.push(['sln._setAccount', 'UA-1221949-8']); +_gaq.push(['sln._setAllowLinker', true]); +_gaq.push(['sln._setCustomVar', 1, 'is_connected', 'no']); +_gaq.push(['sln._trackPageview']); + +(function() { + var crit = document.createElement('script'); crit.type = 'text/javascript'; crit.async = true; + crit.src = '//static.criteo.net/js/ld/ld.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(crit, s); +})(); + +window.criteo_q = window.criteo_q || []; +window.criteo_q.push ( + { event: "setAccount", account: 14086 }, + { event: "viewHome"} +); diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !.htm b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !.htm new file mode 100644 index 0000000..30f5b66 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !.htm @@ -0,0 +1,1116 @@ + + + +Utilisation de Twig, un moteur de templates ! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    +
    +
    +
    +
    +

    dans

    Voir aussi les ... cours non certifiants correspondant à cette recherche

    +
    +
    +
    +
    +
    +
    Fil d'Ariane
    + +
    +
    +
    +
    +
    +
    +
    Mis à jour le mardi 4 avril 2017
    • 30 minutes
    • +Facile +
    +
    + +
    + + + +
    +

    Ce cours est visible gratuitement en ligne.

    +J'ai tout compris ! +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +Connectez-vous ou inscrivez-vous pour bénéficier de toutes les fonctionnalités de ce cours ! +
    +

    Introduction du cours

    + +
    +
    +
    +

    Bonjour à tous,

    Aujourd'hui + je vous propose de découvrir un moteur de templates du nom de Twig. +Twig est le moteur de templates présent dans le célèbre framework Symfony. + Ce cours portera sur son utilisation "seule" (c'est-à-dire sans +Symfony) mais il faut savoir que la syntaxe que vous apprendrez à mettre + dans vos templates sera valable pour ce cours et pour l'utilisation des + templates avec Symfony (ou si le moteur est intégré dans un autre +framework).

    Twig est + un moteur de templates PHP. Je vous conseille donc d'avoir de bonnes +bases en PHP et si possible en orienté objet (bien que ça ne soit pas +indispensable). Une petite note : la syntaxe du moteur est énormément +inspirée de Jinja, le moteur de templates du framework web Python Django. Un cours est d'ailleurs disponible sur le site.

    Je vous souhaite une agréable lecture !

    Qu'est ce qu'un moteur de templates ?

    Twig + n'est pas le seul moteur de templates qui existe, et ce n'est pas non +plus le meilleur. C'est un moteur parmi tant d'autres. Au même titre que + Twig, ce cours n'est pas le seul à traiter du sujet. Vous pouvez +également lire ces tutoriels :

    Présentation

    Je + vais ici vous expliquer le fonctionnement d'un "moteur de templates". +Pour cela, je vous propose un exemple : la création d'un blog basique. +L'organisation des fichiers que je vous propose ici est personnelle, +c'est normal si pour vous la conception d'un blog est différente. Les +grandes lignes sont là.

    Pour + créer votre blog, vous allez d'abord récupérer votre contenu stocké en +base de données. Vous allez ensuite afficher via une boucle les +différents articles. Dans certains cas, vous incluez aussi un en-tête et + un pied de page.

    <?php include 'inc/header.php'; ?> +
    +
    <?php +
    +
    $articles = $db->query('SELECT * FROM blog'); +
    +
    while($article = $articles->fetch()) { +
    +
    ?> +
    <div class="article"> +
    +
    <div class="title"><?php echo $article['title']; ?></div> +
    <div class="content"> +
    <?php echo $article['content']; ?> +
    </div> +
    +
    </div> +
    } +
    +
    +
    <?php include 'inc/footer.php'; ?> +

    Je n'explique pas ce code. Il est relativement simple.

    Le + moteur de templates va vous obliger à utiliser deux fichiers (plus si +vous utilisez le modèle MVC). Vous allez d'une part avoir un fichier PHP + avec l'obtention du contenu en base de données, des variables, la +gestion des sessions, etc. et un fichier template qui gérera l'affichage + de vos pages. Normalement, plus aucun code HTML ne doit apparaître dans + vos fichiers PHP.

    Voici donc ce que pourrait donner notre exemple précédent avec un moteur de templates :

    <?php include 'inc/header.php'; ?> +
    +
    +
    <?php +
    +
    $articlesQuery = $db->query('SELECT * FROM blog'); +
    $articles = $articlesQuery->fetchAll(); +
    +
    $template = $twig->loadTemplate('blog.twig'); +
    echo $template->render(array( +
    'articles' => $articles, +
    )); +
    ?> +
    <?php include 'inc/footer.php'; ?> +
    {% for key, article in articles %} +
    <div class="article"> +
    +
    <div class="title">{{ article.title }}</div> +
    <div class="content"> +
    {{ article.content }} +
    </div> +
    +
    </div> +
    {% endfor %} +

    Je n'explique pas ce code pour le moment car vous allez apprendre cette syntaxe dans la suite du cours.

    Pourquoi utiliser un moteur de templates ?

    Depuis + tout à l'heure je vous parle de Twig et je viens même de vous montrer +les grandes lignes de son fonctionnement. Mais vous vous demandez +peut-être pourquoi utiliser un moteur de templates ? Quel(s) avantage(s) + peut-on avoir à l'utiliser par rapport à du PHP "classique" ?.

    On peut y voir plusieurs avantages notables :

    • Le code est plus clair : on sait où est le code HTML et on ne doit pas chercher après dans le code PHP

    • Pour + reprendre la phrase du dessus on peut noter le fait que vous savez quel + fichier éditer quand vous savez d'où vient l'erreur. De plus pour +reprendre l'exemple du blog, si un jour vous voulez modifier simplement +l'affichage des billets, vous savez quelle partie du code éditer et vous + n'avez pas à chercher.

    • Si + vous travaillez avec un graphiste, c'est un réel plus. Les graphistes +connaissent généralement HTML et CSS et pas toujours PHP. Le graphiste +s'y retrouve donc beaucoup plus facilement.

    Je + pourrais en citer d'autres mais je pense que ce sont les plus +importants qui m'ont fait adopter un tel système pour des sites de +petites et moyennes tailles.

    Si je vous ai convaincu, je vous propose de lire la suite de ce cours pour voir comment mettre en place Twig.

    Mise en place

    Avant + de mettre en place le moteur sur votre site, il vous faut le +télécharger. Je vous propose donc de lire la partie qui vous concerne +pour le faire. Si vous ne savez pas laquelle choisir, lisez la partie +juste en dessous.

    Via une archive

    Pour télécharger Twig via une archive rien de plus simple, rendez vous sur le site + et cliquez sur le lien "Install now". Choisissez ensuite votre archive +(en tar ou en zip). Si vous ne savez pas trop, je vous conseille de +prendre tar si vous êtes sur un système (de type) UNIX et zip sur un +système Windows.

    Vous + devez maintenant décompresser l'archive et copier les fichiers dans un +dossier nommé "twig" dans le dossier de votre site. Vous pouvez, si vous + le souhaitez, l'appeler différemment ; en sachant que dans ce cours je +pars du principe que vous avez appelé votre dossier contenant ces +sources "twig".

    Vous pouvez vous rendre à la partie "Mise en place"

    Via git

    Si vous voulez passer par Git, il vous suffit de vous placer dans le répertoire de votre site et de faire :

    git clone http://github.com/fabpot/twig

    Un dossier twig contenant les fichiers sources va être créé. Vous pouvez vous rendre à la partie "Mise en place"

    Via Subversion

    Pour cloner le dépôt SVN, placez-vous dans le répertoire de votre projet et tapez :

    svn co http://svn.twig-project.org/trunk/ twig

    Un dossier twig contenant les fichiers sources va être créé. Vous pouvez vous rendre à la partie "Mise en place"

    Installation via PEAR

    Pour les fans de PEAR, vous pouvez vous rendre sur la page dédiée à PEAR.

    Note : à ma connaissance il n'existe pas de dépôt pour Mercurial ou pour CVS.

    Mise en place

    Si + vous le souhaitez, vous pouvez supprimer tous les fichiers et dossiers +sauf le dossier lib et son contenu. Je vous conseille de laisser le +dossier tel quel et de ne pas changer les fichiers de place.

    Twig + est un moteur de templates réalisé avec le langage PHP en orienté +objet. Il va donc falloir créer une instance des classes en question. +Voici donc le code que vous devez mettre en début de chaque fichier (que + je vous conseille de charger via include).

    Avant tout, je vous demanderais de créer un dossier "templates" contenant les templates de votre site.

    <?php +
    require_once __DIR__ . '/vendor/autoload.php'; +
    +
    $loader = new Twig_Loader_Filesystem('templates'); // Dossier contenant les templates +
    $twig = new Twig_Environment($loader, array( +
    'cache' => false +
    )); +

    Le + code ici est assez simple. On inclut le fichier Autoloader.php. +Ensuite, on indique le fichier où se trouvent nos templates. Pour finir, + on demande à Twig d'aller chercher les templates dans le dossier +indiqué précédemment et on lui indique quelques options pour plus de +"souplesse" pendant le développement de notre projet.

    D'ailleurs, ici je n'ai mis que le cache mais il y a d'autres options possibles :

    • cache + : prend en argument le dossier où vous stockez les templates en cache +ou bien false pour ne pas s'en servir. Je me permet de vous donner un +conseil : en production, le cache peut être une bonne chose mais en +développement le mieux est de le mettre à false.

    • charset : par défaut à utf-8, définit l'encodage de votre projet.

    • autoescape : échappe automatiquement les variables. Le code HTML contenu dedans n'est donc pas interprété. Par défaut à true.

    Pour plus d'options, je vous renvoie vers cette section de la documentation.

    Sachez + aussi que si vous le souhaitez, vous pouvez mettre plusieurs dossiers +contenants les templates. En sachant que Twig va d'abord regarder dans +le premier, puis le suivant et ainsi de suite. Je vous montre ici un +code demandant à Twig d'aller chercher dans deux dossiers différents, +mais vous pouvez en mettre plus :

    <?php +
    $loader = new Twig_Loader_Filesystem(array('templates', 'views')); +

    Notre premier template

    Je + vous propose maintenant de voir la création de notre premier template. +Avant toutes choses, créez un fichier appelé index.twig dans le dossier +dans lequel vous stockez vos templates.

    Ouvrez ce fichier avec votre éditeur favori et mettez-y le code suivant :

    Vous venez de créer votre premier template avec {{ moteur_name }} ! +

    Nous + reviendrons juste après sur cette portion de code. Ensuite, créez un +fichier à la racine de votre site appelé index.php et mettez-y le code +suivant (n'oubliez pas d'y inclure le fichier contenant le code qui +instancie le moteur).

    <?php +
    $template = $twig->loadTemplate('index.twig'); +
    echo $template->render(array( +
    'moteur_name' => 'Twig' +
    )); +
    ?> +

    Vous pouvez aussi écrire ce qu'il y a au dessus de cette façon :

    <?php +
    echo $twig->render('index.twig', array( +
    'moteur_name' => 'Twig' +
    )); +
    ?> +

    Il n'y a pas énormément de différences mais cette portion de code est plus courte que la précédente.

    Quand + vous ouvrez le fichier, vous voyez "Vous venez de créer votre premier +template avec Twig". En fait, dans le template le {{ moteur_name }} est +le nom de la variable que vous avez passé à Twig lors de l'affichage du +template. Il s'agit de cette portion de code.

    <?php +
    echo $template->render(array( +
    'moteur_name' => 'Twig' +
    )); +
    ?> +

    Dans cet exemple, j'ai mis du texte entre guillemets, mais rien ne vous empêche de mettre des variables, des tableaux, etc.

    Pour + l'instant c'est plus que basique. Heureusement, Twig nous permet de +faire bien plus de choses que ça. Je vous propose donc de voir les +possibilités que nous offre Twig dans la partie suivante.

    Syntaxe de base

    Cette + partie est certainement la plus importante de ce cours. Vous allez +apprendre à remplir vos templates avec la syntaxe proposée par le +moteur. Vous pourrez donc faire des opérations complexes comme les +conditions, les boucles, etc.

    Affichage des variables et tableaux

    Lors + de l'affichage d'un template (vu un petit peu plus haut), vous passez +en argument des variables, des tableaux, etc. Voyons un peu l'affichage +côté template.

    Votre nom est : {{ name }} +

    Pour afficher une variable, il faut la placer entre accolades.

    Supposons que vous voulez passer un tableau à votre template, il vous suffit de faire :

    {{ array['key'] }} +
    {{ array.key }} <!-- fait exactement la même chose qu'au dessus --> +

    Les filtres

    Les + filtres sont un concept que vous ne connaissez peut-être pas. En fait, +un filtre agit comme une fonction. Il sont déjà définis mais vous pouvez + créer les vôtres si vous le souhaitez. Pour appliquer un filtre à une +variable, il faut séparer le nom de la variable et celui du filtre par +un pipe ( | ). Je vous propose ici de voir quelques filtres utiles.

    • upper : met la chaîne de caractères qui le concerne en majuscule ;

    • lower : fait exactement l'inverse d'upper et va mettre toutes les lettres en minuscule ;

    • title : met la première lettre de chaque mot de la chaîne de caractère en majuscule. Comme un titre de noblesse ;

    • length : retourne le nombre de caractères dont la chaîne se compose ;

    • escape + & e : pour échapper du code HTML vous pouvez utiliser escape ou e. +Tous deux font la même chose mais l'un est plus court que l'autre.

    Il y a encore beaucoup d'autres filtres proposés par Twig, en voici la liste.

    Les filtres sur les blocs

    Si + vous le souhaitez, plutôt que d'appliquer un filtre à chacune de vos +variables, si vous comptez le faire sur beaucoup de variables ou une +partie de votre site en particulier, je vous conseille de passer par +cette méthode :

    {% filter upper %} +
    je vais être écrit en majuscule +
    {{ moi_aussi }} +
    {% endfilter %} +

    Vous pouvez aussi chaîner les filtres en en mettant plusieurs à la suite :

    {% filter upper|escape %} +
    je vais être écrit en majuscule <em>et échappé</em> +
    {% endfilter %} +

    Concernant + le filtre escape, un bloc spécial a été prévu à cet effet. Ainsi, si +par exemple vous avez mis lors de l'initialisation de Twig autoespace à +true, vous pouvez faire ceci :

    {% autoescape false %} +
    <strong>Je vais être affiché en gras</strong> +
    {% endautoescape %} +

    Les commentaires

    Ici, + c'est juste un petit plus. Ça n'est pas vraiment utile (c'est moins +intuitif, dira-t-on) si vous n'avez pas l'habitude de les utiliser. +C'est un plus pour ceux qui utilisent Django par exemple :

    {# Je suis un commentaire #} +

    Les conditions

    Pour faire des conditions, rien de plus simple :

    {% if online > 1 %} +
    Il y a {{ online }} membres en ligne +
    {% elseif online == 1 %} +
    Il n'y a qu'un seul utilisateur en ligne (Vous !) +
    {% else %} +
    Il n'y a aucun utilisateur en ligne. Cette phrase ne sera, en principe, jamais lue sauf par toi. Ô grand développeur !. +
    {% endif %} +

    Les tests utiles (built-in tests)

    Les + tests utiles vous permettent de réaliser des conditions plus "poussées" + et plus intuitives. Par exemple, avec, vous pouvez savoir si une +variable est divisible par 10 ou si une variable est définie.

    defined

    Celui-ci vous permet de savoir si une variable est définie ou pas. Il renverra true si c'est le cas et false si ça ne l'est pas.

    {% if session.pseudo is defined %} +
    Votre pseudo est {{ session.pseudo}} . +
    {% endif %} +

    divisibleby

    Une test très intéressant est celui de savoir si votre variable est divisible par un certain nombre.

    {% if equipe.volley is divisibleby(6) %} +
    L'équipe sera divisé en 2 équipes de 6. +
    {% endif %} +

    empty

    Verifie si une variable est vide ou pas.

    {% if equipe.volley is empty %} +
    Le match est annulé. +
    {% endif %} +

    Il y a encore beaucoup d'autres test-utiles mais je pense que vous avez compris le principe. Je vous renvoie donc vers la liste de ces tests.

    La boucle for

    Ici rien de bien compliqué. Je vais surtout vous donner des exemples car il n'y a pas grand-choses à dire sur cette boucle.

    {% for i in 0..50 %} +
    Ceci est la ligne {{ i }} +
    {% enfor %} +

    En sachant que ce que je viens de vous montrer marche aussi avec des lettres :

    {% for lettre in 'a'..'z' %} +
    La lettre {{ letter }} est lettre numéro {{ loop.index }} de l'alphabet. +
    +
    {% endfor %} +

    Si + vous vous demandez d'où je sors le loop.index, il contient en fait le +numéro de tour de boucle actuel. Vous pouvez voir d'autres variables de +ce type ici (en scrollant un peu selon la taille de votre écran ; il s'agit du tableau).
    Vous pouvez également parcourir vos tableaux avec :

    {% for joueur in club %} +
    Le joueur {{ joueur.nom }} joue dans l'équipe {{ joueur.equipe }} +
    {% endfor %} +

    Depuis + la version 1.2 de Twig, il est possible de lancer une boucle selon une +condition dans le même "bloc". Ce n'est pas très clair alors je vous +propose un exemple.

    {% for joueur in club if equipe is not empty %} +
    Le joueur {{ joueur.nom }} joue dans l'équipe {{ joueur.equipe }} +
    {% endfor %} +

    Définir des variables

    J'ai + décidé de mettre cette partie en dernier pour une raison bien +particulière. La logique d'un moteur de template veut qu'on sépare les +variables et les fonctions php de l'affichage du contenu. Déclarer des +variables dans un template casse la logique du système. Je vous le +montre quand même car c'est quand même vous qui allez entretenir le code + que vous écrivez par la suite (en principe) et vous faîtes comme vous +le souhaitez.

    {% set var = "val" %} +

    Vous + pouvez aussi définir des variables comme en Javascript. C'est à dire en + mettant une seule fois "set" et en mettant à la suite les différentes +variables séparées par des virgules :

    {% set mascotte, os = 'beastie', 'bsd' %} +

    Quelques ajouts pratiques

    Voici quelques fonctions, pas indispensables, mais qui peuvent se révéler utiles.

    Les includes

    Vous pouvez aussi inclure des templates comme avec la fonction include de PHP. Pas besoin de vous écrire un roman :

    {% include 'header.twig' %} +

    Une chose que j'ai vraiment adorée c'est de pouvoir inclure des pages en leur restreignant l'accès à certaines variables.

    {% include 'fichier.twig' with {'var': 'val'} only %} +

    Ici, + la page n'aura accès qu'à la variable var. Le only lui empêche +d'accéder aux autres. Vous pouvez bien évidemment enlever le only pour +que la page accède aux autres variables.

    Une chose que j'ai aussi beaucoup aimée c'est la possibilité d'inclure des pages selon une condition. Par exemple :

    {% include online ? 'options.twig' : 'connexion.twig' %} +

    Un + dernier point sur les include est le fait que vous pouvez inclure un +template, lui passer des variables ou lui restreindre l'accès à +certaines et indiquer à Twig que si le template est inexistant, aucune +erreur ne sera renvoyée.

    {% include "sidebar.html" ignore missing %} +
    {% include "sidebar.html" ignore missing with {'foo': 'bar} %} +
    {% include "sidebar.html" ignore missing only %} +

    Cet exemple est tiré de la documentation.

    Les imports

    On passe maintenant à une fonctionnalité que j'apprécie énormément : les imports.

    Twig + vous propose de créer un système équivalent aux helpers. Je vous copie +le code de la documentation que je trouve tout simplement génial !
    Supposons que cette page s'appelle forms.html :

    {% macro input(name, value, type, size) %} +
    <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" /> +
    {% endmacro %} +
    +
    {% macro textarea(name, value, rows) %} +
    <textarea name="{{ name }}" rows="{{ rows|default(10) }}" cols="{{ cols|default(40) }}">{{ value|e }}</textarea> +
    {% endmacro %} +

    Et maintenant dans votre template, mettez le code suivant :

    {% import 'forms.html' as forms %} +
    +
    <dl> +
    <dt>Username</dt> +
    <dd>{{ forms.input('username') }}</dd> +
    <dt>Password</dt> +
    <dd>{{ forms.input('password', none, 'password') }}</dd> +
    </dl> +
    <p>{{ forms.textarea('comment') }}</p> +

    Les + formulaires sont un aspect récurrent et assez prise de tête quelques +fois. Cette fonctionnalité permet un réel gain de temps !

    Héritage

    Une + autre fonctionnalité qui m'a beaucoup plu est la possibilité d'héritage + entre templates. Dans la plupart des cas, vous avez une charte définie +pour votre site et à part le contenu, peu de choses changent dans la +présentation de votre page. Avec Twig, vous pouvez définir un template +avec votre header, votre footer (ce n'est qu'un exemple) et faire un +héritage entre les deux templates (celui qui affiche le contenu et celui + contenant le header et le footer) pour que vous n'ayez qu'à modifier un + seul fichier si vous voulez changer la structure de votre site. Je vous + prends encore un exemple de la documentation. En premier le template +parent et en second le template qui hérite du premier (l'enfant).

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +
    <html lang="en"> +
    <head> +
    {% block head %} +
    <link rel="stylesheet" href="style.css" /> +
    <title>{% block title %}{% endblock %} - My Webpage</title> +
    {% endblock %} +
    </head> +
    <body> +
    <div id="content">{% block content %}{% endblock %}</div> +
    <div id="footer"> +
    {% block footer %} +
    &copy; Copyright 2009 by <a href="http://domain.invalid/">you</a>. +
    {% endblock %} +
    </div> +
    </body> +
    </html> +
    {% extends "base.html" %} +
    +
    {% block title %}Index{% endblock %} +
    {% block head %} +
    {{ parent() }} +
    <style type="text/css"> +
    .important { color: #336699; } +
    </style> +
    {% endblock %} +
    {% block content %} +
    <h1>Index</h1> +
    <p class="important"> +
    Welcome on my awesome homepage. +
    </p> +
    {% endblock %} +

    Dans + cet exemple, le template parent s'appelle base.html. Un petit point +dans le template enfant. Dans le block head, il y a un {{ parent() }}. +Cette fonction signifie que le bloc n'est pas nettoyé et le contenu du +bloc head sera celui présent dans le template parent et le template +enfant. Pratique non ?

    Fonctionnalités côté PHP

    Pour + l'instant je vous ai montré des fonctionnalités en majorité valables +pour les templates. Je vous propose ici de voir certains points +intéressants côté PHP.

    Modifier les tags

    Par + défaut, Twig utilise la syntaxe des templates jinja. Pour afficher une +variable il faut faire {{ variable }} et pour des instructions comme la +boucle for, ou les conditions il faut faire {% if confition %}. Twig +vous permet de modifier ces tags. Vous pouvez par exemple mettre les +tags erb (moteur de template Ruby présent dans Ruby on Rails et Sinatra pour ne citer qu'eux) :

    <?php +
    $syntaxe = new Twig_Lexer($twig, array( +
    'tag_comment' => array('#', '#'), +
    'tag_block' => array('<%', '%>'), +
    'tag_variable' => array('<%=', '%>') +
    )); +

    Ensuite, il faut indiquer au moteur que vous voulez modifier la syntaxe dans vos templates.

    <?php $twig->setLexer($syntaxe); ?> +

    La + variable $twig représente l'instance de la classe Twig_Environnement(). + Si votre instance de la classe s'appelle différemment, changez en +conséquence.

    Étendre Twig

    Les + personnes utilisant des moteurs de templates sont nombreuses. Mais tout + le monde ne l'utilise pas pour des projets de même taille. Twig peut +donc être "étendu", c'est-à-dire qu'on peut lui rajouter des +fonctionnalités très simplement grâce à des méthodes qui font tout le +travail à notre place. Ça nous évite de toucher au code source pour +ajouter un simple filtre par exemple.

    Je vous propose ici de voir comment ajouter vos propres filtres et objets.

    Ajouter un objet "global"

    Un + objet global, avec Twig, est un objet accessible depuis n'importe quel +template. La documentation montre, par exemple, comment rajouter un +objet "text" ayant une méthode lipsum. Je vous propose ici de voir +comment intégrer cet objet.

    Tout d'abord, il faut créer un fichier contenant une nouvelle classe :

    <?php +
    class Text { +
    +
    public $lipsum_text = 'Lorem ipsum dolor sit amet'; +
    +
    +
    /** +
    * @param none +
    * @return lipsum_text +
    */ +
    +
    public function lipsum() { +
    +
    return $this->lipsum_text; +
    +
    } +
    } +

    Ensuite, + indiquez à Twig que vous voulez ajouter votre objet dans les templates +(il faut que le fichier contenant la classe soit inclus dans le fichier +contenant cette instruction).

    <?php $twig->addGlobal('text', new Text()); +

    Le + premier argument représente le nom de votre objet dans les templates et + le second est une instance de la classe que vous avez précédemment +créée. Et maintenant dans vos templates vous pouvez faire :

    Voici un texte : <br /> +
    {{ text.lipsum() }} +

    Ajouter des filtres

    Maintenant + que vous avez compris le principe pour les objets, les filtres vont +aller tout seuls. C'est la même marche à suivre que précédemment. Ici +vous créez une fonction (pas forcément une méthode de classe) et vous +demandez à Twig de l'ajouter au parseur. Ici je vais vous montrer +comment ajouter le filtre lower (même s'il existe déjà, c'est juste pour + l'exemple).

    <?php $twig->addFilter('lower', new Twig_Filter_Function('strtolower')); ?> +

    Ici, + je n'ai pas eu à créer la fonction car elle est native mais vous pouvez + mettre les vôtres sans aucun problème. Vous pouvez aussi appeler la +méthode d'une classe mais attention, il faut que la méthode soit statique. Par exemple :

    <?php $twig->addFilter('monfiltre', new Twig_Filter_Function('MaClasse::MaMethode')); ?> +

    Ce + cours s'achève là. Je vous invite à poster un commentaire si vous avez +des suggestions, des points que vous ne trouvez pas clairs, etc. Pour ce + qui est de l'aide, je vous renvoie vers le forum php.

    Avant de vous quitter, je peux vous conseiller quelques liens :

    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +Exemple de certificat de réussite +
    +
    +Exemple de certificat de réussite +
    +
    + +
    +
    + +
    +
    +
    + + + + + + + + + + + +
    \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/1570554156513134.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/1570554156513134.js new file mode 100644 index 0000000..b778f75 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/1570554156513134.js @@ -0,0 +1 @@ +fbq.registerPlugin("1570554156513134", {__fbEventsPlugin: 1, plugin: function(fbq, instance) { if (!instance.pixelsByID.hasOwnProperty("1570554156513134")) { fbq.init("1570554156513134"); }instance.configLoaded("1570554156513134"); }}); \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865.js new file mode 100644 index 0000000..c019466 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865.js @@ -0,0 +1 @@ +// Excluding messages \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865_002.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865_002.js new file mode 100644 index 0000000..4bcaae7 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/2080865_002.js @@ -0,0 +1,18 @@ +/** + * HubSpot Analytics Tracking Code Build Number 1.155 + * Copyright 2017 HubSpot, Inc. http://www.hubspot.com + */ +var _hsq = _hsq || []; +var _paq = _paq || []; +_hsq.push(['setPortalId', 2080865]); +_hsq.push(['trackPageView']); +_hsq.push(['setLegacy', false]); +_hsq.push(['addCookieDomain', '.hs-sites.com']); +_hsq.push(['addCookieDomain', '.openclassrooms.com']); +_hsq.push(['enableAutomaticLinker', true]); +_hsq.push(['embedHubSpotScript', 'https://api.usemessages.com/messages/v2/embed/2080865.js', 'messages-2080865']); +/** _anon_wrapper_ **/ (function() { +function load(){function t(t){try{if("function"==typeof t)t(s,hstc);else if(t&&hstc.utils.isArray(t)&&s[t[0]])return s[t[0]].apply(s,t.slice(1))}catch(e){hstc.utils.logError(e)}}function e(){if(!r){for(r=win[ran_param]=!0,hstc.log("Processing HSQ"),hstc.utils.search2dArray(i,1,["setCookiesToSubdomain","addCookieDomain"],t),s._initialize(i),hstc.utils.search2dArray(i,1,PRIORITY_FUNCTIONS,t);i.length;)t(i.shift());i.push=t}}function n(){var t=context.getDocument();return!t.readyState||"complete"==t.readyState||t.addEventListener&&"loaded"==t.readyState?(e(),!0):!1}win[loaded_param]=!0;var i=win[hsq];hstc.utils.isArray(i)||(i=[]);var r=win[ran_param]||!1,s=new hstc.tracking.Tracker(context);n()||hstc.utils.addEventListener(win,"load",e,!0)}var hstc=hstc||{};hstc.JS_VERSION=1.1,hstc.ANALYTICS_HOST="track.hubspot.com";var hstc=hstc||{};hstc.Math={uuid:function(){if(window.navigator.userAgent.indexOf("googleweblight")>-1)return hstc.Math._mathRandomUuid();var t=window.crypto||window.msCrypto;return"undefined"!=typeof t&&"undefined"!=typeof t.getRandomValues&&"undefined"!=typeof window.Uint16Array?hstc.Math._cryptoUuid():hstc.Math._mathRandomUuid()},_mathRandomUuid:function(){var t=(new Date).getTime();return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"===e?n:3&n|8).toString(16)})},_cryptoUuid:function(){var t=window.crypto||window.msCrypto,e=new Uint16Array(8);t.getRandomValues(e);var n=function(t){for(var e=t.toString(16);e.length<4;)e="0"+e;return e};return n(e[0])+n(e[1])+n(e[2])+n(e[3])+n(e[4])+n(e[5])+n(e[6])+n(e[7])}},Math.uuid=Math.uuid||function(){return hstc.utils.logError(new Error("Attempt to use Math.uuid()")),hstc.Math.uuid()};var hstc=hstc||{};hstc.debug=!1,hstc.log=function(){try{var t=new hstc.cookies.Cookie,e="hs_dbg",n=document.location.hash.indexOf("#hsdbg")>-1;if(hstc.debug||n||"1"===t.get(e)){var i=window.console;i&&"function"==typeof i.log&&i.log.apply(i,arguments),t.set(e,1)}}catch(r){}};var hstc=hstc||{};hstc.global={},hstc.global.Context=function(t,e,n,i,r,s,o){this.doc=t||document,this.nav=e||navigator,this.scr=n||screen,this.win=i||window,this.loc=r||this.win.location,this.top=s||top,this.parent=o||parent},hstc.global.Context.prototype.getDocument=function(){return this.doc},hstc.global.Context.prototype.getNavigator=function(){return this.nav},hstc.global.Context.prototype.getScreen=function(){return this.scr},hstc.global.Context.prototype.getWindow=function(){return this.win},hstc.global.Context.prototype.getLocation=function(){return this.loc},hstc.global.Context.prototype.getHostName=function(){try{return this.loc.hostname}catch(t){return this.doc.domain}},hstc.global.Context.prototype.getTop=function(){return this.top},hstc.global.Context.prototype.getParent=function(){return this.parent},hstc.global.Context.prototype.getReferrer=function(){var t="";try{t=this.top.document.referrer}catch(e){if(parent)try{t=this.parent.document.referrer}catch(n){t=""}}return""===t&&(t=this.doc.referrer),t},hstc.global.Context.prototype.getCharacterSet=function(){return this.doc.characterSet?this.doc.characterSet:this.doc.charset?this.doc.charset:""},hstc.global.Context.prototype.getLanguage=function(){return this.nav.language?this.nav.language:this.nav.browserLanguage?this.nav.browserLanguage:""};var hstc=hstc||{};hstc.utils={},hstc.utils.tostr=function(){return Object.prototype.toString}(),hstc.utils.getNextWeekStart=function(t){var e=t||new Date,n=e.getDay(),i=e.getDate()+(0==n?7:7-n);return hstc.utils.clearTimePart(new Date(e.setDate(i)))},hstc.utils.getNextMonthStart=function(t){for(var e=t||new Date,n=e.getMonth(),i=0;n==e.getMonth();)i++,e.setDate(e.getDate()+1);return hstc.utils.clearTimePart(e)},hstc.utils.clearTimePart=function(t){return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),t},hstc.utils.truncateString=function(t,e){return t?t.length>e?t.substr(0,e):t:""},hstc.utils.search2dArray=function(t,e,n,i){for(var r=0;re?t.length+e:e,t.push.apply(t,i)},hstc.utils.isArray=function(t){return"[object Array]"===hstc.utils.tostr.call(t)},hstc.utils.inArray=function(t,e){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},hstc.utils.extend=function(){var t,e=arguments[0]||{},n=1,i=arguments.length,r=!1;for("boolean"==typeof e&&(r=e,e=arguments[1]||{},n=2),"object"==typeof e||hstc.utils.isFunction(e)||(e={}),i==n&&(e=this,--n);i>n;n++)if(null!=(t=arguments[n]))for(var s in t){var o=e[s],c=t[s];e!==c&&(r&&c&&"object"==typeof c&&!c.nodeType?e[s]=hstc.utils.extend(r,o||(null!==c.length?[]:{}),c):void 0!==c&&(e[s]=c))}return e},hstc.utils.each=function(t,e){var n,i=0,r=t.length;if(void 0===r){for(n in t)if(e.call(t[n],n,t[n])===!1)break}else for(var s=t[0];r>i&&e.call(s,i,s)!==!1;s=t[++i]);return t},hstc.utils.isDefined=function(t){return"undefined"!=typeof t},hstc.utils.addEventListener=function(t,e,n,i){return t.addEventListener?(t.addEventListener(e,n,i),!0):t.attachEvent?t.attachEvent("on"+e,n):void(t["on"+e]=n)},hstc.utils.preventDefault=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1},hstc.utils.loadImage=function(t,e,n){var i=new Date,r=new Image(1,1);expireDateTime=i.getTime()+e,r.onload=function(){n&&n()},r.src=t},hstc.utils.isEmpty=function(t){return void 0==t||"-"==t||""==t},hstc.utils.isEmptyObject=function(t){for(var e in t)return!1;return!0},hstc.utils.safeString=function(t){return hstc.utils.isEmpty(t)?"":t},hstc.utils.makeLowerCase=function(t){return hstc.utils.safeString(t).toLowerCase()},hstc.utils.encodeParam=function(t,e){var n=encodeURIComponent;return n instanceof Function?e?encodeURI(t):n(t):escape(t)},hstc.utils.decodeParam=function(t,e){var n,i=decodeURIComponent;if(t=t.split("+").join(" "),i instanceof Function)try{n=e?decodeURI(t):i(t)}catch(r){n=unescape(t)}else n=unescape(t);return n},hstc.utils.isFunction=function(t){return"[object Function]"===hstc.utils.tostr.call(t)},hstc.utils.utcnow=function(){return(new Date).getTime()},hstc.utils.hashDomain=function(e){var n=0;for(t=e.length-1;t>=0;t--){var i=e.charCodeAt(t);n=(n<<6&268435455)+i+(i<<14),i=266338304&n,n=0!==i?n^i>>21:n}return n},hstc.utils.extractDomain=function(t){var e=t.split(".");return e.length>2&&(e=e.slice(1)),"."+e.join(".")},hstc.utils.createElement=function(t){var e=document.createDocumentFragment(),n=document.createElement("div");for(n.innerHTML=t;n.firstChild;)e.appendChild(n.firstChild);return e},hstc.utils.deparam=function(t,e){var n={},i={"true":!0,"false":!1,"null":null};return t=hstc.utils.trim(hstc.utils.safeString(t)),(hstc.utils.startsWith(t,"?")||hstc.utils.startsWith(t,"#"))&&(t=t.slice(1)),hstc.utils.each(t.split("+").join(" ").split("&"),function(t,r){var s,o=r.split("="),c=hstc.utils.decodeParam(o[0]),a=n,h=0,u=c.split("]["),l=u.length-1;if(/\[/.test(u[0])&&/\]$/.test(u[l])?(u[l]=u[l].replace(/\]$/,""),u=u.shift().split("[").concat(u),l=u.length-1):l=0,2===o.length)if(s=hstc.utils.decodeParam(o[1]),e&&(s=s&&!isNaN(s)?+s:"undefined"===s?void 0:void 0!==i[s]?i[s]:s),l)for(;l>=h;h++)c=""===u[h]?a.length:u[h],a=a[c]=l>h?a[c]||(u[h+1]&&isNaN(u[h+1])?{}:[]):s;else hstc.utils.isArray(n[c])?n[c].push(s):void 0!==n[c]?n[c]=[n[c],s]:n[c]=s;else c&&(n[c]=e?void 0:"")}),n},hstc.utils.param=function(t,e){function n(t,e){i[i.length]=hstc.utils.encodeParam(t)+"="+hstc.utils.encodeParam(e)}var i=[];e=e||"&";for(var r in t)hstc.utils.isArray(t[r])?hstc.utils.each(t[r],function(){n(r,this)}):n(r,hstc.utils.isFunction(t[r])?t[r]():t[r]);return i.join(e).replace(/%20/g,"+")},hstc.utils.updateQueryStringParameter=function(t,e,n){var i=new RegExp("([?|&])"+e+"=.*?(&|#|$)(.*)","gi");if(i.test(t))return n?t.replace(i,"$1"+e+"="+n+"$2$3"):t.replace(i,"$1$3").replace(/(&|\?)$/,"");if(n){var r=-1!==t.indexOf("?")?"&":"?",s=t.split("#");return t=s[0]+r+e+"="+n,s[1]&&(t+="#"+s[1]),t}return t},hstc.utils.trim=function(t){return(t||"").replace(/^\s+|\s+$/g,"")},hstc.utils.startsWith=function(t,e){return t.substr(0,e.length)==e},hstc.utils.endsWith=function(t,e){var n=t.length-e.length;return n>=0&&t.lastIndexOf(e)===n},hstc.utils.mergeObject=function(t,e){if(t=t||{},!e)return e;for(var n in e)t[n]=e[n];return t},hstc.utils.hasClass=function(t,e){return t&&t.className?hstc.utils.inArray(e,t.className.split(" "))>-1:void 0},hstc.utils.stripNumericBrackets=function(t){return(t||"").replace(/(^.+?)\[(.+?)\]/,"$1_$2")},hstc.utils.parseCurrency=function(t,e){if("number"==typeof t)return t;var n=t.match(/([^\d]*)([\d\.,]+)([^\d\.,]*)/);if(n){var i,r=n[2],s=r.split("."),o=r.split(",");i=s.length>2||2==s.length&&s[1].length>2&&(0===o.length||s[0].length1?(decimalPart=i.pop(),c=i.join("")):c=i.join(""),c=c.replace(/[\.,]/g,"");var a=parseInt(c);return decimalPart&&(a+=parseFloat(decimalPart)/Math.pow(10,decimalPart.length)),a}return null},hstc.utils.logError=function(t,e){e=e||{};var n={w:hstc.utils.utcnow(),m:t.message||t.toString?t.toString():"-",j:hstc.JS_VERSION};n=hstc.utils.extend(n,e),t.name&&(n.n=t.name),t.fileName&&(n.f=t.fileName),t.lineNumber&&(n.l=t.lineNumber);try{n.x=t.stack||t.stacktrace||""}catch(i){}hstc.log("Encountered a JS error"),hstc.log(n),hstc.utils.loadImage("//"+hstc.ANALYTICS_HOST+"/__pto.gif?"+hstc.utils.param(n))},hstc.utils.objectsAreEqual=function(t,e){return eq(t,e,[])},hstc.utils.eq=function(t,e,n){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return t===e;if(t._chain&&(t=t._wrapped),e._chain&&(e=e._wrapped),t.isEqual&&_.isFunction(t.isEqual))return t.isEqual(e);if(e.isEqual&&_.isFunction(e.isEqual))return e.isEqual(t);var i=toString.call(t);if(i!=toString.call(e))return!1;switch(i){case"[object String]":return t==String(e);case"[object Number]":return t!=+t?e!=+e:0==t?1/t==1/e:t==+e;case"[object Date]":case"[object Boolean]":return+t==+e;case"[object RegExp]":return t.source==e.source&&t.global==e.global&&t.multiline==e.multiline&&t.ignoreCase==e.ignoreCase}if("object"!=typeof t||"object"!=typeof e)return!1;for(var r=n.length;r--;)if(n[r]==t)return!0;n.push(t);var s=0,o=!0;if("[object Array]"==i){if(s=t.length,o=s==e.length)for(;s--&&(o=s in t==s in e&&eq(t[s],e[s],n)););}else{if("constructor"in t!="constructor"in e||t.constructor!=e.constructor)return!1;for(var c in t)if(_.has(t,c)&&(s++,!(o=_.has(e,c)&&eq(t[c],e[c],n))))break;if(o){for(c in e)if(_.has(e,c)&&!s--)break;o=!s}}return n.pop(),o};var hstc=hstc||{};hstc.cookies={},hstc.cookies.Cookie=function(t){this.context=t||new hstc.global.Context,this.cookies=[],this.currentDomain=null,this.domains=[]},hstc.cookies.Cookie.prototype.addDomain=function(t){hstc.utils.endsWith("."+this.context.getHostName(),t)&&(!this.currentDomain||t.length0)||(i=n.expires+n.path+n.secure,this._writeCookie(t+"="+e+i)),this.get(t)&&this.cookies.push({name:t,value:e,extras:i})},hstc.cookies.Cookie.prototype._writeCookie=function(t){this.context.getDocument().cookie=t},hstc.cookies.Cookie.prototype.get=function(t){var e=new RegExp("(^|;)[ ]*"+t+"=([^;]*)"),n=e.exec(this.context.getDocument().cookie);return n?hstc.utils.decodeParam(n[2],!0):""},hstc.cookies.Cookie.prototype.has=function(t){if(hstc.utils.isDefined(this.context.getNavigator().cookieEnabled)||"cookie"in this.context.getDocument()&&this.context.getDocument().cookie.length>0)return!0;if(t)return!1;var e="__hs_testcookie";return this.set(e,"1"),"1"===this.get(e)},hstc.cookies.Cookie.prototype.remove=function(t){this.set(t,"",{expiryDate:"Thu, 01-Jan-1970 00:00:01 GMT"})},hstc.cookies.Cookie.prototype.removeAll=function(){for(var t=0;t0){hstc.log("Updating existing "+t+" hidden fields with new value");for(var n=0;nr;r++){var s=this.targetedContentMetadata[r];3===s.length&&n.push(s[0]+"-"+s[1]+"-"+s[2])}n.length&&(t.tc=n)}var o=this.context.getReferrer();hstc.utils.isEmpty(o)||(t.r=o);var c=this.context.getDocument().title;return hstc.utils.isEmpty(c)||(t.t=c),t},hstc.tracking.Tracker.prototype._getClientInfo=function(){var t={},e=this.context.getScreen();e&&(t.sd=e.width+"x"+e.height,t.cd=e.colorDepth+"-bit");var n=this.context.getCharacterSet();hstc.utils.isEmpty(n)||(t.cs=n);var i=this.context.getNavigator(),r=i.language?i.language:i.browserLanguage?i.browserLanguage:"";if(hstc.utils.isEmpty(r)||(t.ln=hstc.utils.makeLowerCase(r)),!this._hasDoNotTrack()){var s=this._getFingerprint();null!==s&&(t.bfp=s)}return t},hstc.tracking.Tracker.prototype._hasDoNotTrack=function(){try{if(this.cookie.get(hstc.tracking.Tracker.DO_NOT_TRACK)&&"yes"==this.cookie.get(hstc.tracking.Tracker.DO_NOT_TRACK))return!0}catch(t){}return!1},hstc.tracking.Tracker.prototype.showTargetedElements=function(){hstc.utils.each(this.clickSelectors,function(t,e){hstc.utils.each(hstc.find(e),function(t,e){e._hs_oldStyle=e.style.border,e.style.border="dotted 2px red"})})},hstc.tracking.Tracker.prototype.hideTargetedElements=function(){var t=function(t,e){hstc.utils.each(hstc.find(e),function(t,e){hstc.utils.isDefined(e._hs_oldStyle)&&(e.style.border=e._hs_oldStyle)})};hstc.utils.each(this.clickSelectors,t)},hstc.tracking.Tracker.prototype._handleMigrations=function(){var t=new hstc.migrations.MigrationHelper(this.context,this.cookie);if(this.migrationHelper=t,this.addUserTokenListener(function(e){t.insertUserTokenIntoForms.call(t,e)}),this.cookiesEnabled){this.addUserTokenListener(function(e){t.ensureHubspotutk.call(t,e)});var e=t.getHubspotutk()||window.hubspotutk,n=this.cookie.get(hstc.tracking.Utk.COOKIE);if(!hstc.utils.isEmpty(e)&&/[0123456789abcdef]{32}/.test(e)&&hstc.utils.isEmpty(n)){var i=hstc.tracking.Utk.parse(this.cookie,e);this._manageCookies(i)}t.clearFirstVisitCookie()}},hstc.tracking.Tracker.prototype._handlePrivacy=function(t){var e=null,n=null,i=null,r=null,s=!1,o=!1;hstc.utils.search2dArray(t,1,["setPrivacyPolicyWording","setPrivacyAcceptWording","setPrivacyDismissWording","setPrivacyDisclaimerWording","setPrivacyActive","setPrivacyHideDecline"],function(c,a){var h=c[0];"setPrivacyPolicyWording"===h?e=c[1]:"setPrivacyAcceptWording"===h?n=c[1]:"setPrivacyDismissWording"===h?i=c[1]:"setPrivacyDisclaimerWording"==h?r=c[1]:"setPrivacyActive"==h?s=c[1]:"setPrivacyHideDecline"==h&&(o=c[1]),delete t[a]});var c=this;hstc.utils.search2dArray(t,1,["setPrivacyPolicy"],function(a,h){a[1](c,hstc,s,e,n,i,r,o),delete t[h]})},hstc.tracking.Tracker.prototype._getFingerprint=function(){try{return(new hstc.Fingerprint).get()}catch(t){return hstc.utils.logError(t),null}},hstc.tracking.Tracker.prototype._getUrlParams=function(){var t,e,n=this.context.getLocation();try{t=n.search,e=n.hash}catch(i){t=window.location.search,e=window.location.hash}return hstc.utils.deparam(t||e)},hstc.tracking.Tracker.prototype.embedHubSpotScript=function(t,n){if(!document.getElementById(n)){var i=document.createElement("script");i.src=t,i.type="text/javascript",i.id=n,e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(i,e)}},hstc.tracking.Utk=function(t,e,n,i,r,s,o,c,a){this.context=t?t.context:new hstc.global.Context,this.cookie=t||new hstc.cookies.Cookie(this.context),this.rawDomain=this.cookie.currentDomain||hstc.utils.extractDomain(this.context.getHostName()),this.domain=e&&!c?e:hstc.utils.hashDomain(this.rawDomain),this.visitor=n?n.toLowerCase():hstc.Math.uuid(),this.initial=i||hstc.utils.utcnow(),this.previous=r||hstc.utils.utcnow(),this.current=s||hstc.utils.utcnow(),this.session=o||1,this.recovered=c,this.returningVisitor=a},hstc.tracking.Utk.COOKIE="__hstc",hstc.tracking.Utk.EXPIRATION=730,hstc.tracking.Utk.parse=function(t,e){var n=t?t.context:new hstc.global.Context; +t=t||new hstc.cookies.Cookie(n);var i=e?!1:!0;e=e||t.get(hstc.tracking.Utk.COOKIE);try{var r=e.split(".");if(6==r.length&&r[1].length>0)return r[5]=parseInt(r[5],10),new hstc.tracking.Utk(t,r[0],r[1],r[2],r[3],r[4],r[5],i,!0);if(1==r.length&&r[0].length>0)return new hstc.tracking.Utk(t,null,r[0],null,null,null,null,!0,!1)}catch(s){}return new hstc.tracking.Utk(t)},hstc.tracking.Utk.prototype.isNew=function(){return!this.returningVisitor},hstc.tracking.Utk.prototype.rotate=function(t){this.previous=this.current||t,this.current=t,this.session+=1},hstc.tracking.Utk.prototype.get=function(){var t=[this.domain,this.visitor,this.initial,this.previous,this.current,this.session];return t.join(".")},hstc.tracking.Utk.prototype.save=function(){this.cookie.set(hstc.tracking.Utk.COOKIE,this.get(),{daysToExpire:hstc.tracking.Utk.EXPIRATION})},hstc.tracking.Utk.prototype.resetDomain=function(){this.domain=hstc.utils.hashDomain(this.rawDomain)},hstc.tracking.Session=function(t,e,n,i,r){this.context=t?t.context:new hstc.global.Context,this.cookie=t||new hstc.cookies.Cookie(this.context),this.rawDomain=this.cookie.currentDomain||hstc.utils.extractDomain(this.context.getHostName()),this.domain=e&&!r?e:hstc.utils.hashDomain(this.rawDomain),this.viewCount=n||1,this.start=i||hstc.utils.utcnow(),this.recovered=r},hstc.tracking.Session.COOKIE="__hssc",hstc.tracking.Session.RESTART_COOKIE="__hssrc",hstc.tracking.Session.prototype.isNew=function(){return this.recovered!==!0},hstc.tracking.Session.parse=function(t,e){var n=t?t.context:new hstc.global.Context;t=t||new hstc.cookies.Cookie(n);var i=e?!1:!0;if(e||"1"===t.get(hstc.tracking.Session.RESTART_COOKIE)){e=e||t.get(hstc.tracking.Session.COOKIE);try{var r=e.split(".");if(3==r.length)return new hstc.tracking.Session(t,r[0],r[1],r[2],i)}catch(s){}}return new hstc.tracking.Session(t)},hstc.tracking.Session.prototype.increment=function(){try{this.viewCount=parseInt(this.viewCount||1,10)+1}catch(t){this.viewCount=1}},hstc.tracking.Session.prototype.get=function(){var t=[this.domain,this.viewCount,this.start];return t.join(".")},hstc.tracking.Session.prototype.save=function(){this.cookie.set(hstc.tracking.Session.RESTART_COOKIE,"1"),this.cookie.set(hstc.tracking.Session.COOKIE,this.get(),{minsToExpire:30})},hstc.tracking.Session.prototype.merge=function(t){return t.start&&t.startS.cacheLength&&delete t[e.shift()],t[n]=i}var e=[];return t}function i(t){return t[F]=!0,t}function r(t){var e=L.createElement("div");try{return!!t(e)}catch(n){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function s(t,e){for(var n=t.split("|"),i=t.length;i--;)S.attrHandle[n[i]]=e}function o(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||X)-(~t.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function c(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function a(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function h(t){return i(function(e){return e=+e,i(function(n,i){for(var r,s=t([],n.length,e),o=s.length;o--;)n[r=s[o]]&&(n[r]=!(i[r]=n[r]))})})}function u(){}function l(t,n){var i,r,s,o,c,a,h,u=B[t+" "];if(u)return n?0:u.slice(0);for(c=t,a=[],h=S.preFilter;c;){(!i||(r=ut.exec(c)))&&(r&&(c=c.slice(r[0].length)||c),a.push(s=[])),i=!1,(r=lt.exec(c))&&(i=r.shift(),s.push({value:i,type:r[0].replace(ht," ")}),c=c.slice(i.length));for(o in S.filter)!(r=mt[o].exec(c))||h[o]&&!(r=h[o](r))||(i=r.shift(),s.push({value:i,type:o,matches:r}),c=c.slice(i.length));if(!i)break}return n?c.length:c?e.error(t):B(t,a).slice(0)}function g(t){for(var e=0,n=t.length,i="";n>e;e++)i+=t[e].value;return i}function p(t,e,n){var i=e.dir,r=n&&"parentNode"===i,s=q++;return e.first?function(e,n,s){for(;e=e[i];)if(1===e.nodeType||r)return t(e,n,s)}:function(e,n,o){var c,a,h,u=K+" "+s;if(o){for(;e=e[i];)if((1===e.nodeType||r)&&t(e,n,o))return!0}else for(;e=e[i];)if(1===e.nodeType||r)if(h=e[F]||(e[F]={}),(a=h[i])&&a[0]===u){if((c=a[1])===!0||c===b)return c===!0}else if(a=h[i]=[u],a[1]=t(e,n,o)||b,a[1]===!0)return!0}}function f(t){return t.length>1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function d(t,e,n,i,r){for(var s,o=[],c=0,a=t.length,h=null!=e;a>c;c++)(s=t[c])&&(!n||n(s,i,r))&&(o.push(s),h&&e.push(c));return o}function m(t,e,n,r,s,o){return r&&!r[F]&&(r=m(r)),s&&!s[F]&&(s=m(s,o)),i(function(i,o,c,a){var h,u,l,g=[],p=[],f=o.length,m=i||v(e||"*",c.nodeType?[c]:c,[]),y=!t||!i&&e?m:d(m,g,t,c,a),k=n?s||(i?t:f||r)?[]:o:y;if(n&&n(y,k,c,a),r)for(h=d(k,p),r(h,[],c,a),u=h.length;u--;)(l=h[u])&&(k[p[u]]=!(y[p[u]]=l));if(i){if(s||t){if(s){for(h=[],u=k.length;u--;)(l=k[u])&&h.push(y[u]=l);s(null,k=[],h,a)}for(u=k.length;u--;)(l=k[u])&&(h=s?nt.call(i,l):g[u])>-1&&(i[h]=!(o[h]=l))}}else k=d(k===o?k.splice(f,k.length):k),s?s(null,o,k,a):tt.apply(o,k)})}function y(t){for(var e,n,i,r=t.length,s=S.relative[t[0].type],o=s||S.relative[" "],c=s?1:0,a=p(function(t){return t===e},o,!0),h=p(function(t){return nt.call(e,t)>-1},o,!0),u=[function(t,n,i){return!s&&(i||n!==I)||((e=n).nodeType?a(t,n,i):h(t,n,i))}];r>c;c++)if(n=S.relative[t[c].type])u=[p(f(u),n)];else{if(n=S.filter[t[c].type].apply(null,t[c].matches),n[F]){for(i=++c;r>i&&!S.relative[t[i].type];i++);return m(c>1&&f(u),c>1&&g(t.slice(0,c-1).concat({value:" "===t[c-2].type?"*":""})).replace(ht,"$1"),n,i>c&&y(t.slice(c,i)),r>i&&y(t=t.slice(i)),r>i&&g(t))}u.push(n)}return f(u)}function k(t,n){var r=0,s=n.length>0,o=t.length>0,c=function(i,c,a,h,u){var l,g,p,f=[],m=0,y="0",k=i&&[],v=null!=u,w=I,C=i||o&&S.find.TAG("*",u&&c.parentNode||c),x=K+=null==w?1:Math.random()||.1,T=C.length;for(v&&(I=c!==L&&c,b=r);y!==T&&null!=(l=C[y]);y++){if(o&&l){for(g=0;p=t[g++];)if(p(l,c,a)){h.push(l);break}v&&(K=x,b=++r)}s&&((l=!p&&l)&&m--,i&&k.push(l))}if(m+=y,s&&y!==m){for(g=0;p=n[g++];)p(k,f,c,a);if(i){if(m>0)for(;y--;)k[y]||f[y]||(f[y]=Y.call(h));f=d(f)}tt.apply(h,f),v&&!i&&f.length>0&&m+n.length>1&&e.uniqueSort(h)}return v&&(K=x,I=w),k};return s?i(c):c}function v(t,n,i){for(var r=0,s=n.length;s>r;r++)e(t,n[r],i);return i}function w(t,e,n,i){var r,s,o,c,a,h=l(t);if(!i&&1===h.length){if(s=h[0]=h[0].slice(0),s.length>2&&"ID"===(o=s[0]).type&&T.getById&&9===e.nodeType&&P&&S.relative[s[1].type]){if(e=(S.find.ID(o.matches[0].replace(xt,Tt),e)||[])[0],!e)return n;t=t.slice(s.shift().value.length)}for(r=mt.needsContext.test(t)?0:s.length;r--&&(o=s[r],!S.relative[c=o.type]);)if((a=S.find[c])&&(i=a(o.matches[0].replace(xt,Tt),gt.test(s[0].type)&&e.parentNode||e))){if(s.splice(r,1),t=i.length&&g(s),!t)return tt.apply(n,i),n;break}}return D(t,h)(i,e,!P,n,gt.test(t)),n}function C(t){if(!t)return null;var e=/\[\w+(\*|\$|\||~|!|\^)?=(.+)]/,n=e.test(t);if(n&&(n=e.exec(t),n&&3==n.length)){var i=/'.+'/,r=/".+"/;if(!i.test(n[2])&&!r.test(n[2]))return t.replace("="+n[2],"='"+n[2]+"'")}}var x,T,b,S,E,_,D,I,N,A,L,O,P,M,R,U,j,F="sizzle"+-new Date,H=t.document,K=0,q=0,$=n(),B=n(),V=n(),W=!1,z=function(t,e){return t===e?(W=!0,0):0},G="undefined",X=1<<31,Q={}.hasOwnProperty,J=[],Y=J.pop,Z=J.push,tt=J.push,et=J.slice,nt=J.indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(this[e]===t)return e;return-1},it="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",rt="[\\x20\\t\\r\\n\\f]",st="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=st.replace("w","w#"),ct="\\["+rt+"*("+st+")"+rt+"*(?:([*^$|!~]?=)"+rt+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+ot+")|)|)"+rt+"*\\]",at=":("+st+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+ct.replace(3,8)+")*)|.*)\\)|)",ht=new RegExp("^"+rt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+rt+"+$","g"),ut=new RegExp("^"+rt+"*,"+rt+"*"),lt=new RegExp("^"+rt+"*([>+~]|"+rt+")"+rt+"*"),gt=new RegExp(rt+"*[+~]"),pt=new RegExp("="+rt+"*([^\\]'\"]*)"+rt+"*\\]","g"),ft=new RegExp(at),dt=new RegExp("^"+ot+"$"),mt={ID:new RegExp("^#("+st+")"),CLASS:new RegExp("^\\.("+st+")"),TAG:new RegExp("^("+st.replace("w","w*")+")"),ATTR:new RegExp("^"+ct),PSEUDO:new RegExp("^"+at),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+rt+"*(even|odd|(([+-]|)(\\d*)n|)"+rt+"*(?:([+-]|)"+rt+"*(\\d+)|))"+rt+"*\\)|)","i"),bool:new RegExp("^(?:"+it+")$","i"),needsContext:new RegExp("^"+rt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+rt+"*((?:-\\d)?\\d*)"+rt+"*\\)|)(?=[^-]|$)","i")},yt=/^[^{]+\{\s*\[native \w/,kt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,vt=/^(?:input|select|textarea|button)$/i,wt=/^h\d$/i,Ct=/'|\\/g,xt=new RegExp("\\\\([\\da-f]{1,6}"+rt+"?|("+rt+")|.)","ig"),Tt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)};try{tt.apply(J=et.call(H.childNodes),H.childNodes),J[H.childNodes.length].nodeType}catch(bt){tt={apply:J.length?function(t,e){Z.apply(t,et.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}_=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return e?"HTML"!==e.nodeName:!1},T=e.support={},A=e.setDocument=function(t){var e=t?t.ownerDocument||t:H,n=e.defaultView;return e!==L&&9===e.nodeType&&e.documentElement?(L=e,O=e.documentElement,P=!_(e),n&&n.attachEvent&&n!==n.top&&n.attachEvent("onbeforeunload",function(){A()}),T.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),T.getElementsByTagName=r(function(t){return t.appendChild(e.createComment("")),!t.getElementsByTagName("*").length}),T.getElementsByClassName=r(function(t){return t.innerHTML="
    ",t.firstChild.className="i",2===t.getElementsByClassName("i").length}),T.getById=r(function(t){return O.appendChild(t).id=F,!e.getElementsByName||!e.getElementsByName(F).length}),T.getById?(S.find.ID=function(t,e){if(typeof e.getElementById!==G&&P){var n=e.getElementById(t);return n&&n.parentNode?[n]:[]}},S.filter.ID=function(t){var e=t.replace(xt,Tt);return function(t){return t.getAttribute("id")===e}}):(delete S.find.ID,S.filter.ID=function(t){var e=t.replace(xt,Tt);return function(t){var n=typeof t.getAttributeNode!==G&&t.getAttributeNode("id");return n&&n.value===e}}),S.find.TAG=T.getElementsByTagName?function(t,e){return typeof e.getElementsByTagName!==G?e.getElementsByTagName(t):void 0}:function(t,e){var n,i=[],r=0,s=e.getElementsByTagName(t);if("*"===t){for(;n=s[r++];)1===n.nodeType&&i.push(n);return i}return s},S.find.CLASS=T.getElementsByClassName&&function(t,e){return typeof e.getElementsByClassName!==G&&P?e.getElementsByClassName(t):void 0},R=[],M=[],(T.qsa=yt.test(e.querySelectorAll))&&(r(function(t){t.innerHTML="",t.querySelectorAll("[selected]").length||M.push("\\["+rt+"*(?:value|"+it+")"),t.querySelectorAll(":checked").length||M.push(":checked")}),r(function(t){var n=e.createElement("input");n.setAttribute("type","hidden"),t.appendChild(n).setAttribute("t",""),t.querySelectorAll("[t^='']").length&&M.push("[*^$]="+rt+"*(?:''|\"\")"),t.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),M.push(",.*:")})),(T.matchesSelector=yt.test(U=O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&r(function(t){T.disconnectedMatch=U.call(t,"div"),U.call(t,"[s!='']:x"),R.push("!=",at)}),M=M.length&&new RegExp(M.join("|")),R=R.length&&new RegExp(R.join("|")),j=yt.test(O.contains)||O.compareDocumentPosition?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},z=O.compareDocumentPosition?function(t,n){if(t===n)return W=!0,0;var i=n.compareDocumentPosition&&t.compareDocumentPosition&&t.compareDocumentPosition(n);return i?1&i||!T.sortDetached&&n.compareDocumentPosition(t)===i?t===e||j(H,t)?-1:n===e||j(H,n)?1:N?nt.call(N,t)-nt.call(N,n):0:4&i?-1:1:t.compareDocumentPosition?-1:1}:function(t,n){var i,r=0,s=t.parentNode,c=n.parentNode,a=[t],h=[n];if(t===n)return W=!0,0;if(!s||!c)return t===e?-1:n===e?1:s?-1:c?1:N?nt.call(N,t)-nt.call(N,n):0;if(s===c)return o(t,n);for(i=t;i=i.parentNode;)a.unshift(i);for(i=n;i=i.parentNode;)h.unshift(i);for(;a[r]===h[r];)r++;return r?o(a[r],h[r]):a[r]===H?-1:h[r]===H?1:0},e):L},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==L&&A(t),n=n.replace(pt,"='$1']"),T.matchesSelector&&P&&(!R||!R.test(n))&&(!M||!M.test(n)))try{var i=U.call(t,n);if(i||T.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(r){}return e(n,L,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==L&&A(t),j(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==L&&A(t);var n=S.attrHandle[e.toLowerCase()],i=n&&Q.call(S.attrHandle,e.toLowerCase())?n(t,e,!P):void 0;return void 0===i?T.attributes||!P?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null:i},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(W=!T.detectDuplicates,N=!T.sortStable&&t.slice(0),t.sort(z),W){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return t},E=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=E(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i];i++)n+=E(e);return n},S=e.selectors={cacheLength:50,createPseudo:i,match:mt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(xt,Tt),t[3]=(t[4]||t[5]||"").replace(xt,Tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[5]&&t[2];return mt.CHILD.test(t[0])?null:(t[3]&&void 0!==t[4]?t[2]=t[4]:n&&ft.test(n)&&(e=l(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(xt,Tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=$[t+" "];return e||(e=new RegExp("(^|"+rt+")"+t+"("+rt+"|$)"))&&$(t,function(t){return e.test("string"==typeof t.className&&t.className||typeof t.getAttribute!==G&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var s=e.attr(r,t);return null==s?"!="===n:n?(s+="","="===n?s===i:"!="===n?s!==i:"^="===n?i&&0===s.indexOf(i):"*="===n?i&&s.indexOf(i)>-1:"$="===n?i&&s.slice(-i.length)===i:"~="===n?(" "+s+" ").indexOf(i)>-1:"|="===n?s===i||s.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(t,e,n,i,r){var s="nth"!==t.slice(0,3),o="last"!==t.slice(-4),c="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,a){var h,u,l,g,p,f,d=s!==o?"nextSibling":"previousSibling",m=e.parentNode,y=c&&e.nodeName.toLowerCase(),k=!a&&!c;if(m){if(s){for(;d;){for(l=e;l=l[d];)if(c?l.nodeName.toLowerCase()===y:1===l.nodeType)return!1;f=d="only"===t&&!f&&"nextSibling"}return!0}if(f=[o?m.firstChild:m.lastChild],o&&k){for(u=m[F]||(m[F]={}),h=u[t]||[],p=h[0]===K&&h[1],g=h[0]===K&&h[2],l=p&&m.childNodes[p];l=++p&&l&&l[d]||(g=p=0)||f.pop();)if(1===l.nodeType&&++g&&l===e){u[t]=[K,p,g];break}}else if(k&&(h=(e[F]||(e[F]={}))[t])&&h[0]===K)g=h[1];else for(;(l=++p&&l&&l[d]||(g=p=0)||f.pop())&&((c?l.nodeName.toLowerCase()!==y:1!==l.nodeType)||!++g||(k&&((l[F]||(l[F]={}))[t]=[K,g]),l!==e)););return g-=r,g===i||g%i===0&&g/i>=0}}},PSEUDO:function(t,n){var r,s=S.pseudos[t]||S.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return s[F]?s(n):s.length>1?(r=[t,t,"",n],S.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=s(t,n),o=r.length;o--;)i=nt.call(t,r[o]),t[i]=!(e[i]=r[o])}):function(t){return s(t,0,r)}):s}},pseudos:{not:i(function(t){var e=[],n=[],r=D(t.replace(ht,"$1"));return r[F]?i(function(t,e,n,i){for(var s,o=r(t,null,i,[]),c=t.length;c--;)(s=o[c])&&(t[c]=!(e[c]=s))}):function(t,i,s){return e[0]=t,r(e,null,s,n),!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return function(e){return(e.textContent||e.innerText||E(e)).indexOf(t)>-1}}),lang:i(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xt,Tt).toLowerCase(),function(e){var n;do if(n=P?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===O},focus:function(t){return t===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return t.disabled===!1},disabled:function(t){return t.disabled===!0},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeName>"@"||3===t.nodeType||4===t.nodeType)return!1;return!0},parent:function(t){return!S.pseudos.empty(t)},header:function(t){return wt.test(t.nodeName)},input:function(t){return vt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||e.toLowerCase()===t.type)},first:h(function(){return[0]}),last:h(function(t,e){return[e-1]}),eq:h(function(t,e,n){return[0>n?n+e:n]}),even:h(function(t,e){for(var n=0;e>n;n+=2)t.push(n);return t}),odd:h(function(t,e){for(var n=1;e>n;n+=2)t.push(n);return t}),lt:h(function(t,e,n){for(var i=0>n?n+e:n;--i>=0;)t.push(i);return t}),gt:h(function(t,e,n){for(var i=0>n?n+e:n;++ir;r++)if(n.call(i,t[r],r,t)==={})return}else for(var o in t)if(t.hasOwnProperty(o)&&n.call(i,t[o],o,t)==={})return},this.map=function(t,e,i){var r=[];return null==t?r:n&&t.map===n?t.map(e,i):(this.each(t,function(t,n,s){r[r.length]=e.call(i,t,n,s)}),r)},"object"==typeof t?(this.hasher=t.hasher,this.screen_resolution=t.screen_resolution,this.screen_orientation=t.screen_orientation):"function"==typeof t&&(this.hasher=t)};return t.prototype={get:function(){var t=[];if(t.push(navigator.userAgent),t.push(navigator.language),t.push(screen.colorDepth),this.screen_resolution){var e=this.getScreenResolution();"undefined"!=typeof e&&t.push(e.join("x"))}return t.push((new Date).getTimezoneOffset()),t.push(this.hasSessionStorage()),t.push(this.hasLocalStorage()),t.push(!!window.indexedDB),document&&document.body?t.push(typeof document.body.addBehavior):t.push("undefined"),t.push(typeof window.openDatabase),t.push(navigator.cpuClass),t.push(navigator.platform),t.push(navigator.doNotTrack),this.hasher?this.hasher(t.join("###"),31):this.murmurhash3_32_gc(t.join("###"),31)},murmurhash3_32_gc:function(t,e){var n,i,r,s,o,c,a,h;for(n=3&t.length,i=t.length-n,r=e,o=3432918353,c=461845907,h=0;i>h;)a=255&t.charCodeAt(h)|(255&t.charCodeAt(++h))<<8|(255&t.charCodeAt(++h))<<16|(255&t.charCodeAt(++h))<<24,++h,a=(65535&a)*o+(((a>>>16)*o&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(65535&a)*c+(((a>>>16)*c&65535)<<16)&4294967295,r^=a,r=r<<13|r>>>19,s=5*(65535&r)+((5*(r>>>16)&65535)<<16)&4294967295,r=(65535&s)+27492+(((s>>>16)+58964&65535)<<16);switch(a=0,n){case 3:a^=(255&t.charCodeAt(h+2))<<16;case 2:a^=(255&t.charCodeAt(h+1))<<8;case 1:a^=255&t.charCodeAt(h),a=(65535&a)*o+(((a>>>16)*o&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(65535&a)*c+(((a>>>16)*c&65535)<<16)&4294967295,r^=a}return r^=t.length,r^=r>>>16,r=2246822507*(65535&r)+((2246822507*(r>>>16)&65535)<<16)&4294967295,r^=r>>>13,r=3266489909*(65535&r)+((3266489909*(r>>>16)&65535)<<16)&4294967295,r^=r>>>16,r>>>0},hasLocalStorage:function(){try{return!!window.localStorage}catch(t){return!0}},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(t){return!0}},getScreenResolution:function(){var t;return t=this.screen_orientation?screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height]:[screen.height,screen.width]}},t});var PRIORITY_FUNCTIONS=["setPortalId","setCanonicalUrl","setPath","setContentType","setContentMetadata","setPageId","setTargetedContentMetadata","identify","setDebugMode","setLimitTrackingToCookieDomains"],hsq="_hsq",ran_param="_hstc_ran",loaded_param="_hstc_loaded";try{var context=new hstc.global.Context,win=context.getWindow();win[loaded_param]?hstc.utils.logError(new Error("Found multiple instances of the tracking code. Preventing additional tracker.")):load()}catch(err){hstc.utils.logError(err)} + +})(); /** _anon_wrapper_ **/ diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/300lo.json b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/300lo.json new file mode 100644 index 0000000..a763883 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/300lo.json @@ -0,0 +1 @@ +addthis.cbs.oln9_15841865294629110({"bt2":"590c35b5001us0002","loc":"MDAwMDBFVUZSMDAyMjg5MTgyMzAwMDAwMDAwVg==","pixels":[{"url":"https://pm.w55c.net/ping_match.gif?st=addthis&rurl=https%3A%2F%2Fsu.addthis.com%2Fred%2Fusync%3Fpid%3D5%26puid%3D_wfivefivec_%26ssrc%3D1","id":5846,"isHttp":false}]}); \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/90dc06697a b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/90dc06697a new file mode 100644 index 0000000..3057913 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/90dc06697a @@ -0,0 +1 @@ +NREUM.setToken({'stn':0,'err':0,'ins':0,'cap':0,'spa':0}) \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/_ate.config_resp b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/_ate.config_resp new file mode 100644 index 0000000..e3bde06 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/_ate.config_resp @@ -0,0 +1 @@ +_ate.track.config_resp({"pc":"shin","tool-config":{"_default":{"widgets":{"11ia":{"widgetId":"11ia","shareCountThreshold":0,"services":"facebook,twitter,google_plusone_share","numPreferredServices":5,"borderRadius":"0%","size":"32px","thirdPartyButtons":false,"elements":".addthis_sharing_toolbox","responsive":"0px","style":"fixed","id":"shin","hideLabel":true}}}},"subscription":{"active":true,"edition":"BASIC","tier":"basic","reducedBranding":false,"insightsEnabled":false},"customMessageTemplates":[],"pro-config":{"_default":{"widgets":{"shin":{"widgetId":"11ia","shareCountThreshold":0,"services":"facebook,twitter,google_plusone_share","numPreferredServices":5,"borderRadius":"0%","size":"32px","thirdPartyButtons":false,"elements":".addthis_sharing_toolbox","responsive":"0px","style":"fixed","id":"shin","hideLabel":true}}}}}); \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/amplitude-3.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/amplitude-3.js new file mode 100644 index 0000000..8f2838a --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/amplitude-3.js @@ -0,0 +1,3 @@ +(function umd(require){if("object"==typeof exports){module.exports=require("1")}else if("function"==typeof define&&define.amd){define(function(){return require("1")})}else{this["amplitude"]=require("1")}})(function outer(modules,cache,entries){var global=function(){return this}();function require(name,jumped){if(cache[name])return cache[name].exports;if(modules[name])return call(name,require);throw new Error('cannot find module "'+name+'"')}function call(id,require){var m=cache[id]={exports:{}};var mod=modules[id];var name=mod[2];var fn=mod[0];fn.call(m.exports,function(req){var dep=modules[id][1][req];return require(dep?dep:req)},m,m.exports,outer,modules,cache,entries);if(name)cache[name]=cache[id];return cache[id].exports}for(var id in entries){if(entries[id]){global[entries[id]]=require(id)}else{require(id)}}require.duo=true;require.cache=cache;require.modules=modules;return require}({1:[function(require,module,exports){var Amplitude=require("./amplitude");var old=window.amplitude||{};var newInstance=new Amplitude;newInstance._q=old._q||[];for(var instance in old._iq){if(old._iq.hasOwnProperty(instance)){newInstance.getInstance(instance)._q=old._iq[instance]._q||[]}}module.exports=newInstance},{"./amplitude":2}],2:[function(require,module,exports){var AmplitudeClient=require("./amplitude-client");var Constants=require("./constants");var Identify=require("./identify");var object=require("object");var Revenue=require("./revenue");var type=require("./type");var utils=require("./utils");var version=require("./version");var DEFAULT_OPTIONS=require("./options");var Amplitude=function Amplitude(){this.options=object.merge({},DEFAULT_OPTIONS);this._q=[];this._instances={}};Amplitude.prototype.Identify=Identify;Amplitude.prototype.Revenue=Revenue;Amplitude.prototype.getInstance=function getInstance(instance){instance=utils.isEmptyString(instance)?Constants.DEFAULT_INSTANCE:instance.toLowerCase();var client=this._instances[instance];if(client===undefined){client=new AmplitudeClient(instance);this._instances[instance]=client}return client};Amplitude.prototype.init=function init(apiKey,opt_userId,opt_config,opt_callback){this.getInstance().init(apiKey,opt_userId,opt_config,function(instance){this.options=instance.options;if(type(opt_callback)==="function"){opt_callback(instance)}}.bind(this))};Amplitude.prototype.runQueuedFunctions=function(){for(var i=0;ithis.options.sessionTimeout){this._newSession=true;this._sessionId=now;if(this.options.saveParamsReferrerOncePerSession){this._trackParamsAndReferrer()}}if(!this.options.saveParamsReferrerOncePerSession){this._trackParamsAndReferrer()}this._lastEventTime=now;_saveCookieData(this);this._sendEventsIfReady()}catch(e){utils.log(e)}finally{if(type(opt_callback)==="function"){opt_callback(this)}}};AmplitudeClient.prototype._trackParamsAndReferrer=function _trackParamsAndReferrer(){if(this.options.includeUtm){this._initUtmData()}if(this.options.includeReferrer){this._saveReferrer(this._getReferrer())}if(this.options.includeGclid){this._saveGclid(this._getUrlParams())}};var _parseConfig=function _parseConfig(options,config){if(type(config)!=="object"){return}var parseValidateAndLoad=function parseValidateAndLoad(key){if(!DEFAULT_OPTIONS.hasOwnProperty(key)){return}var inputValue=config[key];var expectedType=type(DEFAULT_OPTIONS[key]);if(!utils.validateInput(inputValue,key+" option",expectedType)){return}if(expectedType==="boolean"){options[key]=!!inputValue}else if(expectedType==="string"&&!utils.isEmptyString(inputValue)||expectedType==="number"&&inputValue>0){options[key]=inputValue}};for(var key in config){if(config.hasOwnProperty(key)){parseValidateAndLoad(key)}}};AmplitudeClient.prototype.runQueuedFunctions=function(){for(var i=0;i=this.options.eventUploadThreshold){this.sendEvents(callback);return true}if(!this._updateScheduled){this._updateScheduled=true;setTimeout(function(){this._updateScheduled=false;this.sendEvents()}.bind(this),this.options.eventUploadPeriodMillis)}return false};AmplitudeClient.prototype._getFromStorage=function _getFromStorage(storage,key){return storage.getItem(key+this._storageSuffix)};AmplitudeClient.prototype._setInStorage=function _setInStorage(storage,key,value){storage.setItem(key+this._storageSuffix,value)};var _upgradeCookeData=function _upgradeCookeData(scope){var cookieData=scope.cookieStorage.get(scope.options.cookieName);if(type(cookieData)==="object"&&cookieData.deviceId&&cookieData.sessionId&&cookieData.lastEventTime){return}var _getAndRemoveFromLocalStorage=function _getAndRemoveFromLocalStorage(key){var value=localStorage.getItem(key);localStorage.removeItem(key);return value};var apiKeySuffix=type(scope.options.apiKey)==="string"&&"_"+scope.options.apiKey.slice(0,6)||"";var localStorageDeviceId=_getAndRemoveFromLocalStorage(Constants.DEVICE_ID+apiKeySuffix);var localStorageUserId=_getAndRemoveFromLocalStorage(Constants.USER_ID+apiKeySuffix);var localStorageOptOut=_getAndRemoveFromLocalStorage(Constants.OPT_OUT+apiKeySuffix);if(localStorageOptOut!==null&&localStorageOptOut!==undefined){localStorageOptOut=String(localStorageOptOut)==="true"}var localStorageSessionId=parseInt(_getAndRemoveFromLocalStorage(Constants.SESSION_ID));var localStorageLastEventTime=parseInt(_getAndRemoveFromLocalStorage(Constants.LAST_EVENT_TIME));var localStorageEventId=parseInt(_getAndRemoveFromLocalStorage(Constants.LAST_EVENT_ID));var localStorageIdentifyId=parseInt(_getAndRemoveFromLocalStorage(Constants.LAST_IDENTIFY_ID));var localStorageSequenceNumber=parseInt(_getAndRemoveFromLocalStorage(Constants.LAST_SEQUENCE_NUMBER));var _getFromCookie=function _getFromCookie(key){return type(cookieData)==="object"&&cookieData[key]};scope.options.deviceId=_getFromCookie("deviceId")||localStorageDeviceId;scope.options.userId=_getFromCookie("userId")||localStorageUserId;scope._sessionId=_getFromCookie("sessionId")||localStorageSessionId||scope._sessionId;scope._lastEventTime=_getFromCookie("lastEventTime")||localStorageLastEventTime||scope._lastEventTime;scope._eventId=_getFromCookie("eventId")||localStorageEventId||scope._eventId;scope._identifyId=_getFromCookie("identifyId")||localStorageIdentifyId||scope._identifyId;scope._sequenceNumber=_getFromCookie("sequenceNumber")||localStorageSequenceNumber||scope._sequenceNumber;scope.options.optOut=localStorageOptOut||false;if(cookieData&&cookieData.optOut!==undefined&&cookieData.optOut!==null){scope.options.optOut=String(cookieData.optOut)==="true"}_saveCookieData(scope)};var _loadCookieData=function _loadCookieData(scope){var cookieData=scope.cookieStorage.get(scope.options.cookieName+scope._storageSuffix);if(type(cookieData)==="object"){if(cookieData.deviceId){scope.options.deviceId=cookieData.deviceId}if(cookieData.userId){scope.options.userId=cookieData.userId}if(cookieData.optOut!==null&&cookieData.optOut!==undefined){scope.options.optOut=cookieData.optOut}if(cookieData.sessionId){scope._sessionId=parseInt(cookieData.sessionId)}if(cookieData.lastEventTime){scope._lastEventTime=parseInt(cookieData.lastEventTime)}if(cookieData.eventId){scope._eventId=parseInt(cookieData.eventId)}if(cookieData.identifyId){scope._identifyId=parseInt(cookieData.identifyId)}if(cookieData.sequenceNumber){scope._sequenceNumber=parseInt(cookieData.sequenceNumber)}}};var _saveCookieData=function _saveCookieData(scope){scope.cookieStorage.set(scope.options.cookieName+scope._storageSuffix,{deviceId:scope.options.deviceId,userId:scope.options.userId,optOut:scope.options.optOut,sessionId:scope._sessionId,lastEventTime:scope._lastEventTime,eventId:scope._eventId,identifyId:scope._identifyId,sequenceNumber:scope._sequenceNumber})};AmplitudeClient.prototype._initUtmData=function _initUtmData(queryParams,cookieParams){queryParams=queryParams||this._getUrlParams();cookieParams=cookieParams||this.cookieStorage.get("__utmz");var utmProperties=getUtmData(cookieParams,queryParams);_sendParamsReferrerUserProperties(this,utmProperties)};var _sendParamsReferrerUserProperties=function _sendParamsReferrerUserProperties(scope,userProperties){if(type(userProperties)!=="object"||Object.keys(userProperties).length===0){return}var identify=new Identify;for(var key in userProperties){if(userProperties.hasOwnProperty(key)){identify.setOnce("initial_"+key,userProperties[key]);identify.set(key,userProperties[key])}}scope.identify(identify)};AmplitudeClient.prototype._getReferrer=function _getReferrer(){return document.referrer};AmplitudeClient.prototype._getUrlParams=function _getUrlParams(){return location.search};AmplitudeClient.prototype._saveGclid=function _saveGclid(urlParams){var gclid=utils.getQueryParam("gclid",urlParams);if(utils.isEmptyString(gclid)){return}var gclidProperties={gclid:gclid};_sendParamsReferrerUserProperties(this,gclidProperties)};AmplitudeClient.prototype._getDeviceIdFromUrlParam=function _getDeviceIdFromUrlParam(urlParams){return utils.getQueryParam(Constants.AMP_DEVICE_ID_PARAM,urlParams)};AmplitudeClient.prototype._getReferringDomain=function _getReferringDomain(referrer){if(utils.isEmptyString(referrer)){return null}var parts=referrer.split("/");if(parts.length>=3){return parts[2]}return null};AmplitudeClient.prototype._saveReferrer=function _saveReferrer(referrer){if(utils.isEmptyString(referrer)){return}var referrerInfo={referrer:referrer,referring_domain:this._getReferringDomain(referrer)};_sendParamsReferrerUserProperties(this,referrerInfo)};AmplitudeClient.prototype.saveEvents=function saveEvents(){try{this._setInStorage(localStorage,this.options.unsentKey,JSON.stringify(this._unsentEvents))}catch(e){}try{this._setInStorage(localStorage,this.options.unsentIdentifyKey,JSON.stringify(this._unsentIdentifys))}catch(e){}};AmplitudeClient.prototype.setDomain=function setDomain(domain){if(!utils.validateInput(domain,"domain","string")){return}try{this.cookieStorage.options({domain:domain});this.options.domain=this.cookieStorage.options().domain;_loadCookieData(this);_saveCookieData(this)}catch(e){utils.log(e)}};AmplitudeClient.prototype.setUserId=function setUserId(userId){try{this.options.userId=userId!==undefined&&userId!==null&&""+userId||null;_saveCookieData(this)}catch(e){utils.log(e)}};AmplitudeClient.prototype.setGroup=function(groupType,groupName){if(!this._apiKeySet("setGroup()")||!utils.validateInput(groupType,"groupType","string")||utils.isEmptyString(groupType)){return}var groups={};groups[groupType]=groupName;var identify=(new Identify).set(groupType,groupName);this._logEvent(Constants.IDENTIFY_EVENT,null,null,identify.userPropertiesOperations,groups,null,null)};AmplitudeClient.prototype.setOptOut=function setOptOut(enable){if(!utils.validateInput(enable,"enable","boolean")){return}try{this.options.optOut=enable;_saveCookieData(this)}catch(e){utils.log(e)}};AmplitudeClient.prototype.regenerateDeviceId=function regenerateDeviceId(){this.setDeviceId(UUID()+"R")};AmplitudeClient.prototype.setDeviceId=function setDeviceId(deviceId){if(!utils.validateInput(deviceId,"deviceId","string")){return}try{if(!utils.isEmptyString(deviceId)){this.options.deviceId=""+deviceId;_saveCookieData(this)}}catch(e){utils.log(e)}};AmplitudeClient.prototype.setUserProperties=function setUserProperties(userProperties){if(!this._apiKeySet("setUserProperties()")||!utils.validateInput(userProperties,"userProperties","object")){return}var sanitized=utils.truncate(utils.validateProperties(userProperties));if(Object.keys(sanitized).length===0){return}var identify=new Identify;for(var property in sanitized){if(sanitized.hasOwnProperty(property)){identify.set(property,sanitized[property])}}this.identify(identify)};AmplitudeClient.prototype.clearUserProperties=function clearUserProperties(){if(!this._apiKeySet("clearUserProperties()")){return}var identify=new Identify;identify.clearAll();this.identify(identify)};var _convertProxyObjectToRealObject=function _convertProxyObjectToRealObject(instance,proxy){for(var i=0;i0){return this._logEvent(Constants.IDENTIFY_EVENT,null,null,identify_obj.userPropertiesOperations,null,null,opt_callback)}}else{utils.log("Invalid identify input type. Expected Identify object but saw "+type(identify_obj))}if(type(opt_callback)==="function"){opt_callback(0,"No request sent")}};AmplitudeClient.prototype.setVersionName=function setVersionName(versionName){if(!utils.validateInput(versionName,"versionName","string")){return}this.options.versionName=versionName};AmplitudeClient.prototype._logEvent=function _logEvent(eventType,eventProperties,apiProperties,userProperties,groups,timestamp,callback){_loadCookieData(this);if(!eventType||this.options.optOut){if(type(callback)==="function"){callback(0,"No request sent")}return}try{var eventId;if(eventType===Constants.IDENTIFY_EVENT){eventId=this.nextIdentifyId()}else{eventId=this.nextEventId()}var sequenceNumber=this.nextSequenceNumber();var eventTime=type(timestamp)==="number"?timestamp:(new Date).getTime();if(!this._sessionId||!this._lastEventTime||eventTime-this._lastEventTime>this.options.sessionTimeout){this._sessionId=eventTime}this._lastEventTime=eventTime;_saveCookieData(this);userProperties=userProperties||{};apiProperties=apiProperties||{};eventProperties=eventProperties||{};groups=groups||{};var event={device_id:this.options.deviceId,user_id:this.options.userId,timestamp:eventTime,event_id:eventId,session_id:this._sessionId||-1,event_type:eventType,version_name:this.options.versionName||null,platform:this.options.platform,os_name:this._ua.browser.name||null,os_version:this._ua.browser.major||null,device_model:this._ua.os.name||null,language:this.options.language,api_properties:apiProperties,event_properties:utils.truncate(utils.validateProperties(eventProperties)),user_properties:utils.truncate(utils.validateProperties(userProperties)),uuid:UUID(),library:{name:"amplitude-js",version:version},sequence_number:sequenceNumber,groups:utils.truncate(utils.validateGroups(groups)),user_agent:this._userAgent};if(eventType===Constants.IDENTIFY_EVENT){this._unsentIdentifys.push(event);this._limitEventsQueued(this._unsentIdentifys)}else{this._unsentEvents.push(event);this._limitEventsQueued(this._unsentEvents)}if(this.options.saveEvents){this.saveEvents()}if(!this._sendEventsIfReady(callback)&&type(callback)==="function"){callback(0,"No request sent")}return eventId}catch(e){utils.log(e)}};AmplitudeClient.prototype._limitEventsQueued=function _limitEventsQueued(queue){if(queue.length>this.options.savedMaxCount){queue.splice(0,queue.length-this.options.savedMaxCount)}};AmplitudeClient.prototype.logEvent=function logEvent(eventType,eventProperties,opt_callback){return this.logEventWithTimestamp(eventType,eventProperties,null,opt_callback)};AmplitudeClient.prototype.logEventWithTimestamp=function logEvent(eventType,eventProperties,timestamp,opt_callback){if(!this._apiKeySet("logEvent()")||!utils.validateInput(eventType,"eventType","string")||utils.isEmptyString(eventType)){if(type(opt_callback)==="function"){opt_callback(0,"No request sent")}return-1}return this._logEvent(eventType,eventProperties,null,null,null,timestamp,opt_callback)};AmplitudeClient.prototype.logEventWithGroups=function(eventType,eventProperties,groups,opt_callback){if(!this._apiKeySet("logEventWithGroup()")||!utils.validateInput(eventType,"eventType","string")){if(type(opt_callback)==="function"){opt_callback(0,"No request sent")}return-1}return this._logEvent(eventType,eventProperties,null,null,groups,null,opt_callback)};var _isNumber=function _isNumber(n){return!isNaN(parseFloat(n))&&isFinite(n)};AmplitudeClient.prototype.logRevenueV2=function logRevenueV2(revenue_obj){if(!this._apiKeySet("logRevenueV2()")){return}if(type(revenue_obj)==="object"&&revenue_obj.hasOwnProperty("_q")){revenue_obj=_convertProxyObjectToRealObject(new Revenue,revenue_obj)}if(revenue_obj instanceof Revenue){if(revenue_obj&&revenue_obj._isValidRevenue()){return this.logEvent(Constants.REVENUE_EVENT,revenue_obj._toJSONObject())}}else{utils.log("Invalid revenue input type. Expected Revenue object but saw "+type(revenue_obj))}};AmplitudeClient.prototype.logRevenue=function logRevenue(price,quantity,product){if(!this._apiKeySet("logRevenue()")||!_isNumber(price)||quantity!==undefined&&!_isNumber(quantity)){return-1}return this._logEvent(Constants.REVENUE_EVENT,{},{productId:product,special:"revenue_amount",quantity:quantity||1,price:price},null,null,null,null)};AmplitudeClient.prototype.removeEvents=function removeEvents(maxEventId,maxIdentifyId){_removeEvents(this,"_unsentEvents",maxEventId);_removeEvents(this,"_unsentIdentifys",maxIdentifyId)};var _removeEvents=function _removeEvents(scope,eventQueue,maxId){if(maxId<0){return}var filteredEvents=[];for(var i=0;imaxId){filteredEvents.push(scope[eventQueue][i])}}scope[eventQueue]=filteredEvents};AmplitudeClient.prototype.sendEvents=function sendEvents(callback){if(!this._apiKeySet("sendEvents()")||this._sending||this.options.optOut||this._unsentCount()===0){if(type(callback)==="function"){callback(0,"No request sent")}return}this._sending=true;var protocol=this.options.forceHttps?"https":"https:"===window.location.protocol?"https":"http";var url=protocol+"://"+this.options.apiEndpoint+"/";var numEvents=Math.min(this._unsentCount(),this.options.uploadBatchSize);var mergedEvents=this._mergeEventsAndIdentifys(numEvents);var maxEventId=mergedEvents.maxEventId;var maxIdentifyId=mergedEvents.maxIdentifyId;var events=JSON.stringify(mergedEvents.eventsToSend);var uploadTime=(new Date).getTime();var data={client:this.options.apiKey,e:events,v:Constants.API_VERSION,upload_time:uploadTime,checksum:md5(Constants.API_VERSION+this.options.apiKey+events+uploadTime)};var scope=this;new Request(url,data).send(function(status,response){scope._sending=false;try{if(status===200&&response==="success"){scope.removeEvents(maxEventId,maxIdentifyId);if(scope.options.saveEvents){scope.saveEvents()}if(!scope._sendEventsIfReady(callback)&&type(callback)==="function"){callback(status,response)}}else if(status===413){if(scope.options.uploadBatchSize===1){scope.removeEvents(maxEventId,maxIdentifyId)}scope.options.uploadBatchSize=Math.ceil(numEvents/2);scope.sendEvents(callback)}else if(type(callback)==="function"){callback(status,response)}}catch(e){}})};AmplitudeClient.prototype._mergeEventsAndIdentifys=function _mergeEventsAndIdentifys(numEvents){var eventsToSend=[];var eventIndex=0;var maxEventId=-1;var identifyIndex=0;var maxIdentifyId=-1;while(eventsToSend.length=this._unsentIdentifys.length;var noEvents=eventIndex>=this._unsentEvents.length;if(noEvents&&noIdentifys){utils.log("Merging Events and Identifys, less events and identifys than expected");break}else if(noIdentifys){event=this._unsentEvents[eventIndex++];maxEventId=event.event_id}else if(noEvents){event=this._unsentIdentifys[identifyIndex++];maxIdentifyId=event.event_id}else{if(!("sequence_number"in this._unsentEvents[eventIndex])||this._unsentEvents[eventIndex].sequence_number>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+Base64._keyStr.charAt(enc1)+Base64._keyStr.charAt(enc2)+Base64._keyStr.charAt(enc3)+Base64._keyStr.charAt(enc4)}return output},decode:function(input){try{if(window.btoa&&window.atob){return decodeURIComponent(escape(window.atob(input)))}}catch(e){}return Base64._decode(input)},_decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}output=UTF8.decode(output);return output}};module.exports=Base64},{"./utf8":23}],23:[function(require,module,exports){var UTF8={encode:function(s){var utftext="";for(var n=0;n127&&c<2048){utftext+=String.fromCharCode(c>>6|192);utftext+=String.fromCharCode(c&63|128)}else{utftext+=String.fromCharCode(c>>12|224);utftext+=String.fromCharCode(c>>6&63|128);utftext+=String.fromCharCode(c&63|128)}}return utftext},decode:function(utftext){var s="";var i=0;var c=0,c1=0,c2=0;while(i191&&c<224){c1=utftext.charCodeAt(i+1);s+=String.fromCharCode((c&31)<<6|c1&63);i+=2}else{c1=utftext.charCodeAt(i+1);c2=utftext.charCodeAt(i+2);s+=String.fromCharCode((c&15)<<12|(c1&63)<<6|c2&63);i+=3}}return s}};module.exports=UTF8},{}],14:[function(require,module,exports){var json=window.JSON||{};var stringify=json.stringify;var parse=json.parse;module.exports=parse&&stringify?JSON:require("json-fallback")},{"json-fallback":24}],24:[function(require,module,exports){(function(){"use strict";var JSON=module.exports={};function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var cx,escapable,gap,indent,meta,rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;iconstants.MAX_STRING_LENGTH?value.substring(0,constants.MAX_STRING_LENGTH):value}return value};var validateInput=function validateInput(input,name,expectedType){if(type(input)!==expectedType){log("Invalid "+name+" input type. Expected "+expectedType+" but received "+type(input));return false}return true};var validateProperties=function validateProperties(properties){var propsType=type(properties);if(propsType!=="object"){log("Error: invalid properties format. Expecting Javascript object, received "+propsType+", ignoring");return{}}if(Object.keys(properties).length>constants.MAX_PROPERTY_KEYS){log("Error: too many properties (more than 1000), ignoring");return{}}var copy={};for(var property in properties){if(!properties.hasOwnProperty(property)){continue}var key=property;var keyType=type(key);if(keyType!=="string"){key=String(key);log("WARNING: Non-string property key, received type "+keyType+', coercing to string "'+key+'"')}var value=validatePropertyValue(key,properties[property]);if(value===null){continue}copy[key]=value}return copy};var invalidValueTypes=["null","nan","undefined","function","arguments","regexp","element"];var validatePropertyValue=function validatePropertyValue(key,value){var valueType=type(value);if(invalidValueTypes.indexOf(valueType)!==-1){log('WARNING: Property key "'+key+'" with invalid value type '+valueType+", ignoring");value=null}else if(valueType==="error"){value=String(value);log('WARNING: Property key "'+key+'" with value type error, coercing to '+value)}else if(valueType==="array"){var arrayCopy=[];for(var i=0;i0){if(!this.userPropertiesOperations.hasOwnProperty(AMP_OP_CLEAR_ALL)){utils.log("Need to send $clearAll on its own Identify object without any other operations, skipping $clearAll")}return this}this.userPropertiesOperations[AMP_OP_CLEAR_ALL]="-";return this};Identify.prototype.prepend=function(property,value){this._addOperation(AMP_OP_PREPEND,property,value);return this};Identify.prototype.set=function(property,value){this._addOperation(AMP_OP_SET,property,value);return this};Identify.prototype.setOnce=function(property,value){this._addOperation(AMP_OP_SET_ONCE,property,value);return this};Identify.prototype.unset=function(property){this._addOperation(AMP_OP_UNSET,property,"-");return this};Identify.prototype._addOperation=function(operation,property,value){if(this.userPropertiesOperations.hasOwnProperty(AMP_OP_CLEAR_ALL)){utils.log("This identify already contains a $clearAll operation, skipping operation "+operation);return}if(this.properties.indexOf(property)!==-1){utils.log('User property "'+property+'" already used in this identify, skipping operation '+operation);return}if(!this.userPropertiesOperations.hasOwnProperty(operation)){this.userPropertiesOperations[operation]={}}this.userPropertiesOperations[operation][property]=value;this.properties.push(property)};module.exports=Identify},{"./type":8,"./utils":9}],16:[function(require,module,exports){(function($){"use strict";function safe_add(x,y){var lsw=(x&65535)+(y&65535),msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bit_rol(num,cnt){return num<>>32-cnt}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)}function md5_ff(a,b,c,d,x,s,t){return md5_cmn(b&c|~b&d,a,b,x,s,t)}function md5_gg(a,b,c,d,x,s,t){return md5_cmn(b&d|c&~d,a,b,x,s,t)}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|~d),a,b,x,s,t)}function binl_md5(x,len){x[len>>5]|=128<>>9<<4)+14]=len;var i,olda,oldb,oldc,oldd,a=1732584193,b=-271733879,c=-1732584194,d=271733878;for(i=0;i>5]>>>i%32&255)}return output}function rstr2binl(input){var i,output=[];output[(input.length>>2)-1]=undefined;for(i=0;i>5]|=(input.charCodeAt(i/8)&255)<16){bkey=binl_md5(bkey,key.length*8)}for(i=0;i<16;i+=1){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828}hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128))}function rstr2hex(input){var hex_tab="0123456789abcdef",output="",x,i;for(i=0;i>>4&15)+hex_tab.charAt(x&15)}return output}function str2rstr_utf8(input){return unescape(encodeURIComponent(input))}function raw_md5(s){return rstr_md5(str2rstr_utf8(s))}function hex_md5(s){return rstr2hex(raw_md5(s))}function raw_hmac_md5(k,d){return rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d))}function hex_hmac_md5(k,d){return rstr2hex(raw_hmac_md5(k,d))}function md5(string,key,raw){if(!key){if(!raw){return hex_md5(string)}return raw_md5(string)}if(!raw){return hex_hmac_md5(key,string)}return raw_hmac_md5(key,string)}if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=md5}exports.md5=md5}else{if(typeof define==="function"&&define.amd){define(function(){return md5})}else{$.md5=md5}}})(this)},{}],6:[function(require,module,exports){var has=Object.prototype.hasOwnProperty;exports.keys=Object.keys||function(obj){var keys=[];for(var key in obj){if(has.call(obj,key)){keys.push(key)}}return keys};exports.values=function(obj){var vals=[];for(var key in obj){if(has.call(obj,key)){vals.push(obj[key])}}return vals};exports.merge=function(a,b){for(var key in b){if(has.call(b,key)){a[key]=b[key]}}return a};exports.length=function(obj){return exports.keys(obj).length};exports.isEmpty=function(obj){return 0==exports.length(obj)}},{}],17:[function(require,module,exports){var querystring=require("querystring");var Request=function(url,data){this.url=url;this.data=data||{}};Request.prototype.send=function(callback){var isIE=window.XDomainRequest?true:false;if(isIE){var xdr=new window.XDomainRequest;xdr.open("POST",this.url,true);xdr.onload=function(){callback(200,xdr.responseText)};xdr.onerror=function(){if(xdr.responseText==="Request Entity Too Large"){callback(413,xdr.responseText)}else{callback(500,xdr.responseText)}};xdr.ontimeout=function(){};xdr.onprogress=function(){};xdr.send(querystring.stringify(this.data))}else{var xhr=new XMLHttpRequest;xhr.open("POST",this.url,true);xhr.onreadystatechange=function(){if(xhr.readyState===4){callback(xhr.status,xhr.responseText)}};xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");xhr.send(querystring.stringify(this.data))}};module.exports=Request},{querystring:26}],26:[function(require,module,exports){var encode=encodeURIComponent;var decode=decodeURIComponent;var trim=require("trim");var type=require("type");exports.parse=function(str){if("string"!=typeof str)return{};str=trim(str);if(""==str)return{};if("?"==str.charAt(0))str=str.slice(1);var obj={};var pairs=str.split("&");for(var i=0;i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}}}i+=2}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,uuid)};module.exports=uuid},{}],10:[function(require,module,exports){module.exports="3.4.0"},{}],11:[function(require,module,exports){var language=require("./language");module.exports={apiEndpoint:"api.amplitude.com",cookieExpiration:365*10,cookieName:"amplitude_id",domain:"",includeReferrer:false,includeUtm:false,language:language.language,optOut:false,platform:"Web",savedMaxCount:1e3,saveEvents:true,sessionTimeout:30*60*1e3,unsentKey:"amplitude_unsent",unsentIdentifyKey:"amplitude_unsent_identify",uploadBatchSize:100,batchEvents:false,eventUploadThreshold:30,eventUploadPeriodMillis:30*1e3,forceHttps:false,includeGclid:false,saveParamsReferrerOncePerSession:true,deviceIdFromUrlParam:false}},{"./language":29}],29:[function(require,module,exports){var getLanguage=function(){return navigator&&(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage)||undefined};module.exports={language:getLanguage()}},{}]},{},{1:""})); \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics.js new file mode 100644 index 0000000..a3dccfd --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics.js @@ -0,0 +1,46 @@ +(function(){var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b\x3c/script>')):(c=M.createElement("script"), +c.type="text/javascript",c.async=!0,c.src=a,d&&(c.onload=d),b&&(c.id=b),a=M.getElementsByTagName("script")[0],a.parentNode.insertBefore(c,a)))},Ud=function(){return"https:"==M.location.protocol},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},ya=function(a){var b=M.referrer;if(/^https?:\/\//i.test(b)){if(a)return b;a="//"+M.location.hostname; +var c=b.indexOf(a);if(5==c||6==c)if(a=b.charAt(c+a.length),"/"==a||"?"==a||""==a||":"==a)return;return b}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c){var d=O.XMLHttpRequest;if(!d)return!1;var e=new d;if(!("withCredentials"in e))return!1; +e.open("POST",a,!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onreadystatechange=function(){4==e.readyState&&(c(),e=null)};e.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*Math.random()||G("?")||(a=["t=error","_e="+a,"_v=j53","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc(oc()+"/collect",a.join("&"),ua))};var h=function(a){var b=O.gaData=O.gaData||{};return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";} +function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];Qa.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});b.push("z="+Bd());a.set(Ra,b.join("&"),!0)} +function Sa(a){var b=P(a,gd)||oc()+"/collect",c=P(a,fa);!c&&a.get(Vd)&&(c="beacon");if(c){var d=P(a,Ra),e=a.get(Ia),e=e||ua;"image"==c?wc(b,d,e):"xhr"==c&&wd(b,d,e)||"beacon"==c&&x(b,d,e)||ba(b,d,e)}else ba(b,P(a,Ra),a.get(Ia));b=a.get(Na);b=h(b);c=b.hitcount;b.hitcount=c?c+1:1;b=a.get(Na);delete h(b).pending_experiments;a.set(Ia,ua,!0)} +function Hc(a){(O.gaData=O.gaData||{}).expId&&a.set(Nc,(O.gaData=O.gaData||{}).expId);(O.gaData=O.gaData||{}).expVar&&a.set(Oc,(O.gaData=O.gaData||{}).expVar);var b=a.get(Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";} +function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){var c=R(a,Wa),d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee},Qa=new ee,Za=[];Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:1*a};Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)}; +var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)},bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=Qa.get(a);if(!b)for(var c=0;c=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&!a.I){a.I=!0;var c= +aa(b);b=0b.length)){for(var c=[], +d=0;d=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||!1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;carguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(qc[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={},Ed(this.ra,this.b)&&da(this.b.get(Na)))}};pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var td=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=td.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.C=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.C,this.i="require"==this.C,this.g="provide"==this.C,this.ba="remove"==this.C),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.C)throw"abort";if(this.i&&(!qa(b)||""==b))throw"abort"; +if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47}; +var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);if(p.test(b)){J(52);a=N.j(a);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get(">m")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.ja=String(a.get(Q)), +d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));a=d.B;c=(new Date).getTime();O[a]=O[a]||[];c={"gtm.start":c};e||(c.event="gtm.js");O[a].push(c);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);c&&(c&&0<=c.indexOf("/")||(c=(Ba||Ud()?"https:":"http:")+"//www.google-analytics.com/plugins/ua/"+c),d=ae(c),a=d.protocol,c=M.location.protocol,("https:"==a||a==c||("http:"!=a?0:"http:"== +c))&&B(d)&&(wa(d.url,void 0,e),$d.set(b,!0)))}},v=function(a,b){var c=A.get(a)||[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;ca.split("/")[0].indexOf(":")&&(a=ca+e[2].substring(0, +e[2].lastIndexOf("/"))+"/"+a);c.href=a;d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments),b=Z.f.concat(b);for(Z.f=[];0c;c++){var d=b[c].src;if(d&&0==d.indexOf("https://www.google-analytics.com/analytics")){J(33); +b=!0;break a}}b=!1}b&&(Ba=!0)}Ud()||Ba||!Ed(new Od(1E4))||(J(36),Ba=!0);(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b>21:b}return b};})(window); diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics_002.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics_002.js new file mode 100644 index 0000000..5f9d0cd --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/analytics_002.js @@ -0,0 +1,9 @@ +!function(t){"function"==typeof t&&t.amd&&(t=undefined);!function e(t,n,o){function i(a,s){if(!n[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(r)return r(a,!0);var p=new Error("Cannot find module '"+a+"'");throw p.code="MODULE_NOT_FOUND",p}var u=n[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return i(n||e)},u,u.exports,e,t,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a0;){var r=o.shift(),a=r.shift();"function"==typeof n[a]&&n[a].apply(n,r)}o=null;e.analytics=n}).call(this,"undefined"!=typeof window&&window.document&&window.document.implementation?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{})},{"./analytics":1}],3:[function(t,e,n){"use strict";e.exports={"adlearn-open-platform":t("@segment/analytics.js-integration-adlearn-open-platform"),"adobe-analytics":t("@segment/analytics.js-integration-adobe-analytics"),"adometry":t("@segment/analytics.js-integration-adometry"),"adroll":t("@segment/analytics.js-integration-adroll"),"adwords":t("@segment/analytics.js-integration-adwords"),"alexa":t("@segment/analytics.js-integration-alexa"),"ambassador":t("@segment/analytics.js-integration-ambassador"),"amplitude":t("@segment/analytics.js-integration-amplitude"),"appboy":t("@segment/analytics.js-integration-appboy"),"appcues":t("@segment/analytics.js-integration-appcues"),"appnexus":t("@segment/analytics.js-integration-appnexus"),"atatus":t("@segment/analytics.js-integration-atatus"),"autosend":t("@segment/analytics.js-integration-autosend"),"awesm":t("@segment/analytics.js-integration-awesm"),"bing-ads":t("@segment/analytics.js-integration-bing-ads"),"blueshift":t("@segment/analytics.js-integration-blueshift"),"boomtrain":t("@segment/analytics.js-integration-boomtrain"),"bronto":t("@segment/analytics.js-integration-bronto"),"bugherd":t("@segment/analytics.js-integration-bugherd"),"bugsnag":t("@segment/analytics.js-integration-bugsnag"),"chameleon":t("@segment/analytics.js-integration-chameleon"),"chartbeat":t("@segment/analytics.js-integration-chartbeat"),"clicky":t("@segment/analytics.js-integration-clicky"),"comscore":t("@segment/analytics.js-integration-comscore"),"convertro":t("@segment/analytics.js-integration-convertro"),"crazy-egg":t("@segment/analytics.js-integration-crazy-egg"),"curebit":t("@segment/analytics.js-integration-curebit"),"customerio":t("@segment/analytics.js-integration-customerio"),"doubleclick-floodlight":t("@segment/analytics.js-integration-doubleclick-floodlight"),"drift":t("@segment/analytics.js-integration-drift"),"drip":t("@segment/analytics.js-integration-drip"),"elevio":t("@segment/analytics.js-integration-elevio"),"eloqua":t("@segment/analytics.js-integration-eloqua"),"email-aptitude":t("@segment/analytics.js-integration-email-aptitude"),"errorception":t("@segment/analytics.js-integration-errorception"),"evergage":t("@segment/analytics.js-integration-evergage"),"extole":t("@segment/analytics.js-integration-extole"),"facebook-conversion-tracking":t("@segment/analytics.js-integration-facebook-conversion-tracking"),"facebook-custom-audiences":t("@segment/analytics.js-integration-facebook-custom-audiences"),"facebook-pixel":t("@segment/analytics.js-integration-facebook-pixel"),"foxmetrics":t("@segment/analytics.js-integration-foxmetrics"),"fullstory":t("@segment/analytics.js-integration-fullstory"),"gauges":t("@segment/analytics.js-integration-gauges"),"get-satisfaction":t("@segment/analytics.js-integration-get-satisfaction"),"google-analytics":t("@segment/analytics.js-integration-google-analytics"),"google-tag-manager":t("@segment/analytics.js-integration-google-tag-manager"),"gosquared":t("@segment/analytics.js-integration-gosquared"),"heap":t("@segment/analytics.js-integration-heap"),"hellobar":t("@segment/analytics.js-integration-hellobar"),"hittail":t("@segment/analytics.js-integration-hittail"),"hubspot":t("@segment/analytics.js-integration-hubspot"),"improvely":t("@segment/analytics.js-integration-improvely"),"inspectlet":t("@segment/analytics.js-integration-inspectlet"),"intercom":t("@segment/analytics.js-integration-intercom"),"keen-io":t("@segment/analytics.js-integration-keen-io"),"kenshoo":t("@segment/analytics.js-integration-kenshoo"),"kenshoo-infinity":t("@segment/analytics.js-integration-kenshoo-infinity"),"kissmetrics":t("@segment/analytics.js-integration-kissmetrics"),"klaviyo":t("@segment/analytics.js-integration-klaviyo"),"livechat":t("@segment/analytics.js-integration-livechat"),"localytics":t("@segment/analytics.js-integration-localytics"),"lucky-orange":t("@segment/analytics.js-integration-lucky-orange"),"lytics":t("@segment/analytics.js-integration-lytics"),"madkudu":t("@segment/analytics.js-integration-madkudu"),"marketo":t("@segment/analytics.js-integration-marketo"),"mediamath":t("@segment/analytics.js-integration-mediamath"),"mixpanel":t("@segment/analytics.js-integration-mixpanel"),"mojn":t("@segment/analytics.js-integration-mojn"),"monetate":t("@segment/analytics.js-integration-monetate"),"mouseflow":t("@segment/analytics.js-integration-mouseflow"),"mousestats":t("@segment/analytics.js-integration-mousestats"),"nanigans":t("@segment/analytics.js-integration-nanigans"),"navilytics":t("@segment/analytics.js-integration-navilytics"),"nudgespot":t("@segment/analytics.js-integration-nudgespot"),"olark":t("@segment/analytics.js-integration-olark"),"omniture":t("@segment/analytics.js-integration-omniture"),"onespot":t("@segment/analytics.js-integration-onespot"),"optimizely":t("@segment/analytics.js-integration-optimizely"),"outbound":t("@segment/analytics.js-integration-outbound"),"pardot":t("@segment/analytics.js-integration-pardot"),"parsely":t("@segment/analytics.js-integration-parsely"),"pendo":t("@segment/analytics.js-integration-pendo"),"perfect-audience":t("@segment/analytics.js-integration-perfect-audience"),"pingdom":t("@segment/analytics.js-integration-pingdom"),"piwik":t("@segment/analytics.js-integration-piwik"),"qualaroo":t("@segment/analytics.js-integration-qualaroo"),"quantcast":t("@segment/analytics.js-integration-quantcast"),"quanticmind":t("@segment/analytics.js-integration-quanticmind"),"ramen":t("@segment/analytics.js-integration-ramen"),"rockerbox":t("@segment/analytics.js-integration-rockerbox"),"rocket-fuel":t("@segment/analytics.js-integration-rocket-fuel"),"rollbar":t("@segment/analytics.js-integration-rollbar"),"route":t("@segment/analytics.js-integration-route"),"saasquatch":t("@segment/analytics.js-integration-saasquatch"),"satismeter":t("@segment/analytics.js-integration-satismeter"),"segmentio":t("@segment/analytics.js-integration-segmentio"),"sentry":t("@segment/analytics.js-integration-sentry"),"shareasale":t("@segment/analytics.js-integration-shareasale"),"simplereach":t("@segment/analytics.js-integration-simplereach"),"simplifi":t("@segment/analytics.js-integration-simplifi"),"snapengage":t("@segment/analytics.js-integration-snapengage"),"spinnakr":t("@segment/analytics.js-integration-spinnakr"),"steelhouse":t("@segment/analytics.js-integration-steelhouse"),"stripe-radar":t("@segment/analytics.js-integration-stripe-radar"),"supporthero":t("@segment/analytics.js-integration-supporthero"),"taplytics":t("@segment/analytics.js-integration-taplytics"),"tapstream":t("@segment/analytics.js-integration-tapstream"),"tell-apart":t("@segment/analytics.js-integration-tell-apart"),"totango":t("@segment/analytics.js-integration-totango"),"trackjs":t("@segment/analytics.js-integration-trackjs"),"tvsquared":t("@segment/analytics.js-integration-tvsquared"),"twitter-ads":t("@segment/analytics.js-integration-twitter-ads"),"userlike":t("@segment/analytics.js-integration-userlike"),"uservoice":t("@segment/analytics.js-integration-uservoice"),"vero":t("@segment/analytics.js-integration-vero"),"visual-website-optimizer":t("@segment/analytics.js-integration-visual-website-optimizer"),"webengage":t("@segment/analytics.js-integration-webengage"),"wishpond":t("@segment/analytics.js-integration-wishpond"),"woopra":t("@segment/analytics.js-integration-woopra"),"wootric":t("@segment/analytics.js-integration-wootric"),"yandex-metrica":t("@segment/analytics.js-integration-yandex-metrica"),"yellowhammer":t("@segment/analytics.js-integration-yellowhammer"),"zopim":t("@segment/analytics.js-integration-zopim")}},{"@segment/analytics.js-integration-adlearn-open-platform":33,"@segment/analytics.js-integration-adobe-analytics":34,"@segment/analytics.js-integration-adometry":41,"@segment/analytics.js-integration-adroll":42,"@segment/analytics.js-integration-adwords":49,"@segment/analytics.js-integration-alexa":50,"@segment/analytics.js-integration-ambassador":51,"@segment/analytics.js-integration-amplitude":52,"@segment/analytics.js-integration-appboy":53,"@segment/analytics.js-integration-appcues":60,"@segment/analytics.js-integration-appnexus":61,"@segment/analytics.js-integration-atatus":62,"@segment/analytics.js-integration-autosend":63,"@segment/analytics.js-integration-awesm":64,"@segment/analytics.js-integration-bing-ads":65,"@segment/analytics.js-integration-blueshift":66,"@segment/analytics.js-integration-boomtrain":67,"@segment/analytics.js-integration-bronto":68,"@segment/analytics.js-integration-bugherd":75,"@segment/analytics.js-integration-bugsnag":76,"@segment/analytics.js-integration-chameleon":77,"@segment/analytics.js-integration-chartbeat":78,"@segment/analytics.js-integration-clicky":79,"@segment/analytics.js-integration-comscore":80,"@segment/analytics.js-integration-convertro":81,"@segment/analytics.js-integration-crazy-egg":88,"@segment/analytics.js-integration-curebit":89,"@segment/analytics.js-integration-customerio":96,"@segment/analytics.js-integration-doubleclick-floodlight":97,"@segment/analytics.js-integration-drift":104,"@segment/analytics.js-integration-drip":105,"@segment/analytics.js-integration-elevio":112,"@segment/analytics.js-integration-eloqua":114,"@segment/analytics.js-integration-email-aptitude":115,"@segment/analytics.js-integration-errorception":116,"@segment/analytics.js-integration-evergage":118,"@segment/analytics.js-integration-extole":119,"@segment/analytics.js-integration-facebook-conversion-tracking":120,"@segment/analytics.js-integration-facebook-custom-audiences":121,"@segment/analytics.js-integration-facebook-pixel":128,"@segment/analytics.js-integration-foxmetrics":135,"@segment/analytics.js-integration-fullstory":142,"@segment/analytics.js-integration-gauges":144,"@segment/analytics.js-integration-get-satisfaction":145,"@segment/analytics.js-integration-google-analytics":146,"@segment/analytics.js-integration-google-tag-manager":153,"@segment/analytics.js-integration-gosquared":160,"@segment/analytics.js-integration-heap":167,"@segment/analytics.js-integration-hellobar":174,"@segment/analytics.js-integration-hittail":175,"@segment/analytics.js-integration-hubspot":176,"@segment/analytics.js-integration-improvely":183,"@segment/analytics.js-integration-inspectlet":184,"@segment/analytics.js-integration-intercom":185,"@segment/analytics.js-integration-keen-io":186,"@segment/analytics.js-integration-kenshoo":194,"@segment/analytics.js-integration-kenshoo-infinity":187,"@segment/analytics.js-integration-kissmetrics":195,"@segment/analytics.js-integration-klaviyo":196,"@segment/analytics.js-integration-livechat":203,"@segment/analytics.js-integration-localytics":204,"@segment/analytics.js-integration-lucky-orange":205,"@segment/analytics.js-integration-lytics":212,"@segment/analytics.js-integration-madkudu":213,"@segment/analytics.js-integration-marketo":214,"@segment/analytics.js-integration-mediamath":215,"@segment/analytics.js-integration-mixpanel":216,"@segment/analytics.js-integration-mojn":217,"@segment/analytics.js-integration-monetate":218,"@segment/analytics.js-integration-mouseflow":225,"@segment/analytics.js-integration-mousestats":226,"@segment/analytics.js-integration-nanigans":227,"@segment/analytics.js-integration-navilytics":229,"@segment/analytics.js-integration-nudgespot":230,"@segment/analytics.js-integration-olark":231,"@segment/analytics.js-integration-omniture":232,"@segment/analytics.js-integration-onespot":233,"@segment/analytics.js-integration-optimizely":234,"@segment/analytics.js-integration-outbound":236,"@segment/analytics.js-integration-pardot":238,"@segment/analytics.js-integration-parsely":241,"@segment/analytics.js-integration-pendo":242,"@segment/analytics.js-integration-perfect-audience":249,"@segment/analytics.js-integration-pingdom":256,"@segment/analytics.js-integration-piwik":257,"@segment/analytics.js-integration-qualaroo":258,"@segment/analytics.js-integration-quantcast":259,"@segment/analytics.js-integration-quanticmind":266,"@segment/analytics.js-integration-ramen":267,"@segment/analytics.js-integration-rockerbox":268,"@segment/analytics.js-integration-rocket-fuel":269,"@segment/analytics.js-integration-rollbar":270,"@segment/analytics.js-integration-route":271,"@segment/analytics.js-integration-saasquatch":272,"@segment/analytics.js-integration-satismeter":273,"@segment/analytics.js-integration-segmentio":274,"@segment/analytics.js-integration-sentry":275,"@segment/analytics.js-integration-shareasale":276,"@segment/analytics.js-integration-simplereach":283,"@segment/analytics.js-integration-simplifi":284,"@segment/analytics.js-integration-snapengage":285,"@segment/analytics.js-integration-spinnakr":286,"@segment/analytics.js-integration-steelhouse":287,"@segment/analytics.js-integration-stripe-radar":288,"@segment/analytics.js-integration-supporthero":295,"@segment/analytics.js-integration-taplytics":296,"@segment/analytics.js-integration-tapstream":297,"@segment/analytics.js-integration-tell-apart":298,"@segment/analytics.js-integration-totango":305,"@segment/analytics.js-integration-trackjs":306,"@segment/analytics.js-integration-tvsquared":307,"@segment/analytics.js-integration-twitter-ads":308,"@segment/analytics.js-integration-userlike":315,"@segment/analytics.js-integration-uservoice":316,"@segment/analytics.js-integration-vero":317,"@segment/analytics.js-integration-visual-website-optimizer":318,"@segment/analytics.js-integration-webengage":325,"@segment/analytics.js-integration-wishpond":326,"@segment/analytics.js-integration-woopra":327,"@segment/analytics.js-integration-wootric":328,"@segment/analytics.js-integration-yandex-metrica":329,"@segment/analytics.js-integration-yellowhammer":330,"@segment/analytics.js-integration-zopim":331}],4:[function(t,e,n){"use strict";var o=t("@ndhoule/arity"),i=Object.prototype.toString,r=function(t){return"function"==typeof t},a=function(t){var e=typeof t;return"number"===e||"object"===e&&"[object Number]"===i.call(t)},s=function(t,e){if(!a(t))throw new TypeError("Expected a number but received "+typeof t);if(!r(e))throw new TypeError("Expected a function but received "+typeof e);var n=0;return o(e.length,function(){n+=1;if(!(n",h);return h}var i=t("debug")("analytics.js:normalize"),r=t("@ndhoule/defaults"),a=t("@ndhoule/each"),s=t("@ndhoule/includes"),c=t("@ndhoule/map"),p=t("component-type"),u=Object.prototype.hasOwnProperty;e.exports=o;var d=["integrations","anonymousId","timestamp","context"]},{"@ndhoule/defaults":7,"@ndhoule/each":9,"@ndhoule/includes":14,"@ndhoule/map":16,"component-type":375,"debug":378}],29:[function(t,e,n){"use strict";function o(){return{path:i(),referrer:document.referrer,search:location.search,title:document.title,url:r(location.search)}}function i(){var t=a();return t?c.parse(t).pathname:window.location.pathname}function r(t){var e=a();if(e)return s("?",e)?e:e+t;var n=window.location.href,o=n.indexOf("#");return-1===o?n:n.slice(0,o)}var a=t("@segment/canonical"),s=t("@ndhoule/includes"),c=t("component-url");e.exports=o},{"@ndhoule/includes":14,"@segment/canonical":338,"component-url":376}],30:[function(t,e,n){"use strict";function o(t){this.options(t)}var i=t("bind-all"),r=t("@ndhoule/defaults"),a=t("@segment/store");o.prototype.options=function(t){if(0===arguments.length)return this._options;t=t||{};r(t,{enabled:!0});this.enabled=t.enabled&&a.enabled;this._options=t};o.prototype.set=function(t,e){return!!this.enabled&&a.set(t,e)};o.prototype.get=function(t){return this.enabled?a.get(t):null};o.prototype.remove=function(t){return!!this.enabled&&a.remove(t)};e.exports=i(new o);e.exports.Store=o},{"@ndhoule/defaults":7,"@segment/store":357,"bind-all":363}],31:[function(t,e,n){"use strict";function o(t){this.defaults=o.defaults;this.debug=s;i.call(this,t)}var i=t("./entity"),r=t("bind-all"),a=t("./cookie"),s=t("debug")("analytics:user"),c=t("inherits"),p=t("component-cookie"),u=t("uuid");o.defaults={persist:!0,cookie:{key:"ajs_user_id",oldKey:"ajs_user"},localStorage:{key:"ajs_user_traits"}};c(o,i);o.prototype.id=function(t){var e=this._getId(),n=i.prototype.id.apply(this,arguments);if(null==e)return n;e!=t&&t&&this.anonymousId(null);return n};o.prototype.anonymousId=function(t){var e=this.storage();if(arguments.length){e.set("ajs_anonymous_id",t);return this}t=e.get("ajs_anonymous_id");if(t)return t;t=p("_sio");if(t){t=t.split("----")[0];e.set("ajs_anonymous_id",t);e.remove("_sio");return t}t=u.v4();e.set("ajs_anonymous_id",t);return e.get("ajs_anonymous_id")};o.prototype.logout=function(){i.prototype.logout.call(this);this.anonymousId(null)};o.prototype.load=function(){this._loadOldCookie()||i.prototype.load.call(this)};o.prototype._loadOldCookie=function(){var t=a.get(this._options.cookie.oldKey);if(!t)return!1;this.id(t.id);this.traits(t.traits);a.remove(this._options.cookie.oldKey);return!0};e.exports=r(new o);e.exports.User=o},{"./cookie":23,"./entity":24,"bind-all":363,"component-cookie":366,"debug":378,"inherits":386,"uuid":440}],32:[function(t,e,n){e.exports={"_args":[[{"raw":"@segment/analytics.js-core@^3.0.0","scope":"@segment","escapedName":"@segment%2fanalytics.js-core","name":"@segment/analytics.js-core","rawSpec":"^3.0.0","spec":">=3.0.0 <4.0.0","type":"range"},"/home/ubuntu/analytics.js-private"]],"_from":"@segment/analytics.js-core@>=3.0.0 <4.0.0","_id":"@segment/analytics.js-core@3.0.0","_inCache":!0,"_location":"/@segment/analytics.js-core","_nodeVersion":"4.4.5","_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/analytics.js-core-3.0.0.tgz_1464222726516_0.005199481267482042"},"_npmUser":{"name":"segment","email":"tools+npm@segment.com"},"_npmVersion":"2.15.5","_phantomChildren":{},"_requested":{"raw":"@segment/analytics.js-core@^3.0.0","scope":"@segment","escapedName":"@segment%2fanalytics.js-core","name":"@segment/analytics.js-core","rawSpec":"^3.0.0","spec":">=3.0.0 <4.0.0","type":"range"},"_requiredBy":["#DEV:/"],"_resolved":"https://registry.npmjs.org/@segment/analytics.js-core/-/analytics.js-core-3.0.0.tgz","_shasum":"166e682023e6086d41e53abe5cddb23bf02b14ed","_shrinkwrap":null,"_spec":"@segment/analytics.js-core@^3.0.0","_where":"/home/ubuntu/analytics.js-private","author":{"name":"Segment","email":"friends@segment.com"},"bugs":{"url":"https://github.com/segmentio/analytics.js-core/issues"},"dependencies":{"@ndhoule/after":"^1.0.0","@ndhoule/clone":"^1.0.0","@ndhoule/defaults":"^2.0.1","@ndhoule/each":"^2.0.1","@ndhoule/extend":"^2.0.0","@ndhoule/foldl":"^2.0.1","@ndhoule/includes":"^2.0.1","@ndhoule/keys":"^2.0.0","@ndhoule/map":"^2.0.1","@ndhoule/pick":"^2.0.0","@segment/canonical":"^1.0.0","@segment/is-meta":"^1.0.0","@segment/isodate":"^1.0.2","@segment/isodate-traverse":"^1.0.1","@segment/prevent-default":"^1.0.0","@segment/store":"^1.3.20","@segment/top-domain":"^3.0.0","bind-all":"^1.0.0","component-cookie":"^1.1.2","component-emitter":"^1.2.1","component-event":"^0.1.4","component-querystring":"^2.0.0","component-type":"^1.2.1","component-url":"^0.2.1","debug":"^0.7.4","inherits":"^2.0.1","install":"^0.7.3","is":"^3.1.0","json3":"^3.3.2","new-date":"^1.0.0","next-tick":"^0.2.2","segmentio-facade":"^3.0.2","uuid":"^2.0.2"},"description":"The hassle-free way to integrate analytics into any web application.","devDependencies":{"@segment/analytics.js-integration":"^2.0.0","@segment/eslint-config":"^3.1.1","browserify":"^13.0.0","browserify-istanbul":"^2.0.0","compat-trigger-event":"^1.0.0","component-each":"^0.2.6","eslint":"^2.9.0","eslint-plugin-mocha":"^2.2.0","eslint-plugin-require-path-exists":"^1.1.5","istanbul":"^0.4.3","jquery":"^1.12.3","karma":"^0.13.22","karma-browserify":"^5.0.4","karma-chrome-launcher":"^1.0.1","karma-coverage":"^1.0.0","karma-junit-reporter":"^1.0.0","karma-mocha":"^1.0.1","karma-phantomjs-launcher":"^1.0.0","karma-sauce-launcher":"^1.0.0","karma-spec-reporter":"0.0.26","mocha":"^2.2.5","phantomjs-prebuilt":"^2.1.7","proclaim":"^3.4.1","sinon":"^1.7.3","watchify":"^3.7.0"},"directories":{},"dist":{"shasum":"166e682023e6086d41e53abe5cddb23bf02b14ed","tarball":"https://registry.npmjs.org/@segment/analytics.js-core/-/analytics.js-core-3.0.0.tgz"},"homepage":"https://github.com/segmentio/analytics.js-core#readme","keywords":["analytics","analytics.js","segment","segment.io"],"license":"SEE LICENSE IN LICENSE","main":"lib/index.js","maintainers":[{"name":"segment","email":"tools+npm@segment.com"}],"name":"@segment/analytics.js-core","optionalDependencies":{},"readme":"ERROR: No README data found!","repository":{"type":"git","url":"git+https://github.com/segmentio/analytics.js-core.git"},"scripts":{"test":"make test"},"version":"3.0.0"}},{}],33:[function(t,e,n){;var i=t("@segment/analytics.js-integration");e.exports=function(){};e.exports.Integration=i("empty");},{"@ndhoule/each":9,"@segment/analytics.js-integration":332}],34:[function(t,e,n){;var m=t("@segment/analytics.js-integration");e.exports=function(){};e.exports.Integration=m("empty");},{"@ndhoule/each":9,"@segment/analytics.js-integration":35,"@segment/to-iso-string":358,"@segment/trample":360,"obj-case":404,"segmentio-facade":418}],35:[function(t,e,n){"use strict";function o(t){function e(n){if(n&&n.addIntegration)return n.addIntegration(e);this.debug=a("analytics:integration:"+p(t));this.options=s(r(n)||{},this.defaults);this._queue=[];this.once("ready",i(this,this.flush));e.emit("construct",this);this.ready=i(this,this.ready);this._wrapInitialize();this._wrapPage();this._wrapTrack()}e.prototype.defaults={};e.prototype.globals=[];e.prototype.templates={};e.prototype.name=t;c(e,d);c(e.prototype,u);return e}var i=t("component-bind"),r=t("@ndhoule/clone"),a=t("debug"),s=t("@ndhoule/defaults"),c=t("@ndhoule/extend"),p=t("slug-component"),u=t("./protos"),d=t("./statics");e.exports=o},{"./protos":36,"./statics":37,"@ndhoule/clone":6,"@ndhoule/defaults":7,"@ndhoule/extend":12,"component-bind":364,"debug":39,"slug-component":424}],36:[function(t,e,n){"use strict";function o(t){return m.array(t)?l(i,t)?"mixed":"array":m.object(t)?"map":"unknown"}function i(t){return!!m.object(t)&&(!!m.string(t.key)&&!!b.call(t,"value"))}function r(t,e){e=e||function(){};var n=new Image;n.onerror=a(e,"failed to load pixel",n);n.onload=function(){e()};n.src=t.src;n.width=1;n.height=1;return n}function a(t,e,n){return function(o){o=o||window.event;var i=new Error(e);i.event=o;i.source=n;t(i)}}function s(t,e){return g(function(t,n,o){t[o]=n.replace(/\{\{\ *(\w+)\ *\}\}/g,function(t,n){return e[n]});return t},{},t.attrs)}var c=t("component-emitter"),p=t("@ndhoule/after"),u=t("@ndhoule/each"),d=t("analytics-events"),l=t("@ndhoule/every"),f=t("@segment/fmt"),g=t("@ndhoule/foldl"),m=t("is"),h=t("load-iframe"),y=t("@segment/load-script"),v=t("next-tick"),w=t("to-no-case"),b=Object.prototype.hasOwnProperty,_=function(){},k=window.onerror;c(n);n.initialize=function(){var t=this.ready;v(t)};n.loaded=function(){return!1};n.page=function(t){};n.track=function(t){};n.map=function(t,e){var n=w(e),i=o(t);return"unknown"===i?[]:g(function(t,e,o){var r,a;if("map"===i){r=o;a=e}if("array"===i){r=e;a=e}if("mixed"===i){r=e.key;a=e.value}w(r)===n&&t.push(a);return t},[],t)};n.invoke=function(t){if(this[t]){var e=Array.prototype.slice.call(arguments,1);if(!this._ready)return this.queue(t,e);var n;try{this.debug("%s with %o",t,e);n=this[t].apply(this,e)}catch(o){this.debug("error %o calling %s with %o",o,t,e)}return n}};n.queue=function(t,e){this._queue.push({method:t,args:e})};n.flush=function(){this._ready=!0;var t=this;u(function(e){t[e.method].apply(t,e.args)},this._queue);this._queue.length=0};n.reset=function(){for(var t=0;t=31||"undefined"!=typeof navigator&&navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function r(t){var e=this.useColors;t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+n.humanize(this.diff);if(e){var o="color: "+this.color;t.splice(1,0,o,"color: inherit");var i=0,r=0;t[0].replace(/%[a-zA-Z%]/g,function(t){if("%%"!==t){i++;"%c"===t&&(r=i)}});t.splice(r,0,o)}}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(t){try{null==t?n.storage.removeItem("debug"):n.storage.debug=t}catch(e){}}function c(){var t;try{t=n.storage.debug}catch(e){}!t&&void 0!==o&&"env"in o&&(t=o.env.DEBUG);return t}n=e.exports=t("./debug");n.log=a;n.formatArgs=r;n.save=s;n.load=c;n.useColors=i;n.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}();n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];n.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};n.enable(c())}).call(this,t("_process"))},{"./debug":40,"_process":410}],40:[function(t,e,n){function o(t){var e,o=0;for(e in t){o=(o<<5)-o+t.charCodeAt(e);o|=0}return n.colors[Math.abs(o)%n.colors.length]}function i(t){function e(){if(e.enabled){var t=e,o=+new Date,i=o-(p||o);t.diff=i;t.prev=p;t.curr=o;p=o;for(var r=new Array(arguments.length),a=0;a').mapping("events");a.prototype.initialize=function(){var t=this.loaded,e=this.ready;this.load(function(){r(t,e)})};a.prototype.loaded=function(){return!(!document.body||!window.google_trackConversion)};a.prototype.page=function(t){var e=this.options.remarketing,n=this.options.conversionId,o=t.properties();window.google_trackConversion({google_conversion_id:n,google_custom_params:{},google_remarketing_only:!1});e&&window.google_trackConversion({google_conversion_id:n,google_custom_params:o,google_remarketing_only:!0})};a.prototype.track=function(t){var e=this.options.conversionId,n=t.properties(),i=this.options.remarketing,r=this.events(t.event()),a=t.revenue()||0,s=this.options.whitelist.indexOf(t.event())>-1,c=!1;o(function(t){delete n.revenue;window.google_trackConversion({google_conversion_id:e,google_custom_params:n,google_conversion_language:"en",google_conversion_format:"3",google_conversion_color:"ffffff",google_conversion_label:t,google_conversion_value:a,google_remarketing_only:!1});if(!c&&i){window.google_trackConversion({google_conversion_id:e,google_custom_params:n,google_remarketing_only:!0});c=!0}},r);!c&&s&&window.google_trackConversion({google_conversion_id:e,google_custom_params:n,google_remarketing_only:!0})};},{"@ndhoule/each":9,"@segment/analytics.js-integration":332,"do-when":379}],50:[function(t,e,n){;var o=t("@segment/analytics.js-integration");e.exports=function(){};e.exports.Integration=o("empty");},{"@segment/analytics.js-integration":332}],51:[function(t,e,n){;var c=t("@segment/analytics.js-integration");e.exports=function(){};e.exports.Integration=c("empty");},{"@segment/analytics.js-integration":332}],52:[function(t,e,n){;"use strict";var o=t("component-bind"),i=t("@segment/analytics.js-integration"),r=t("@segment/top-domain"),a=t("do-when"),s=t("is"),c=t("@ndhoule/each"),p="function"==typeof window.define&&window.define.amd,u="//d24n15hnbwhuhn.cloudfront.net/libs/amplitude-3.4.0-min.gz.js",d=e.exports=i("Amplitude").global("amplitude").option("apiKey","").option("trackAllPages",!1).option("trackNamedPages",!0).option("trackCategorizedPages",!0).option("trackUtmProperties",!0).option("trackReferrer",!1).option("batchEvents",!1).option("eventUploadThreshold",30).option("eventUploadPeriodMillis",3e4).option("useLogRevenueV2",!1).option("forceHttps",!1).option("trackGclid",!1).option("saveParamsReferrerOncePerSession",!0).option("deviceIdFromUrlParam",!1).option("mapQueryParams",{}).tag(' \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/theme-monokai.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/theme-monokai.js new file mode 100644 index 0000000..c911e75 --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/theme-monokai.js @@ -0,0 +1 @@ +define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file diff --git a/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/track.js b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/track.js new file mode 100644 index 0000000..458ceae --- /dev/null +++ b/Sources/webAduc/Documentation/Utilisation de Twig, un moteur de templates !_fichiers/track.js @@ -0,0 +1 @@ +(function(){function c(a){if(document.cookie.length>0){c_start=document.cookie.indexOf(a+"=");if(c_start!=-1)return c_start=c_start+a.length+1,c_end=document.cookie.indexOf(";",c_start),c_end==-1&&(c_end=document.cookie.length),unescape(document.cookie.substring(c_start,c_end))}return""}function d(a,b,d){var e=document.location.host.toLowerCase().split(":")[0],f=e.split("."),g=[];if(f.length==1){var h=new Date;h.setDate(h.getDate()+d),document.cookie=a+"="+escape(b)+(d==null?"":";expires="+h.toUTCString())+";path=/"}else for(var i=f.length-1;i>=0;i--){g.push(f[i]);var j="."+g.slice().reverse().join("."),h=new Date;h.setDate(h.getDate()+d),document.cookie=a+"="+escape(b)+(d==null?"":";expires="+h.toUTCString())+";domain="+j+";path=/";if(c(a)==b)break}}function e(a){return f(a)==="function"}function f(a){return a==null?String(a):b[Object.prototype.toString.call(a)]||"object"}function g(b){var c=[],d=function(a,b){b=e(b)?b():b,c[c.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};for(var f in b)b.hasOwnProperty(f)&&h(f,b[f],d);return c.join("&").replace(a,"+")}function h(a,b,c){if(b!=null&&typeof b=="object")for(var d in b)b.hasOwnProperty(d)&&h(a+"["+d+"]",b[d]==null?"":b[d],c);else c(a,b)}function i(){var a=function(){return((1+Math.random())*65536|0).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}function j(){var a=c(_cio.cookieNamespace);return a||(a=i(),d(_cio.cookieNamespace,a,1)),a}function k(){return c(_cio.cookieNamespace+"id")}function l(a,b){var c,d,e=document.getElementById("cio-tracker");return e&&(d=e.getAttribute("data-site-id"),c=e.src.replace("assets.customer.io","track.customer.io"),c=c.replace("/assets/track.js","/events/"+a+".gif"),c=c.replace("/assets_dev/track.js","/events/"+a+".gif"),c=c.replace(/\/events\/.*\.gif/,"/events/"+a+".gif"),c=c.replace(/^(http|https):/,""),c=c.replace(/^\/\//,""),b.site_id=d,b.timestamp=(new Date).getTime(),c+="?"+g(b)),"https://"+c}function m(a,b){b.s=j(),b.c=k();var c=new Image;c.src=l(a,b),_cio.images.push(c)}function n(a,b){_cio.pageHasLoaded?m(a,b):setTimeout(function(){n(a,b)},50)}var a=/%20/g,b={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object"};if(f(_cio)=="array"){var o=_cio.slice(0);_cio={images:[],pageHasLoaded:!1,cookieNamespace:"_cio",load:function(){_cio.pageHasLoaded=!0},push:function(a){var b=a.shift();_cio[b].apply(this,a)},identify:function(a){var b=c(_cio.cookieNamespace+"id"),e=a.id||a.id_secure;b&&b!=e&&(guid=i(),d(_cio.cookieNamespace,guid,1)),d(_cio.cookieNamespace+"id",e,1),n("identify",{user:a})},sidentify:function(a){a._secure=!0,_cio.identify(a)},track:function(a,b){n("event",{name:a,data:b||{}})},page:function(a,b){n("page",{name:a,data:b||{}})},cookie:function(a){_cio.cookieNamespace=a}},function(){var a={width:window.innerWidth,height:window.innerHeight};document.referrer&&document.referrer!=""&&(a.referrer=document.referrer),_cio.page(document.location.href,a)}();for(var p=0;p0&&t-1 in e)}function s(e,t,n){if(ce.isFunction(t))return ce.grep(e,(function(e,r){return!!t.call(e,r,e)!==n}));if(t.nodeType)return ce.grep(e,(function(e){return e===t!==n}));if("string"==typeof t){if(_e.test(t))return ce.filter(t,e,n);t=ce.filter(t,e)}return ce.grep(e,(function(e){return re.call(t,e)>-1!==n}))}function u(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function c(e){var t={};return ce.each(e.match(ke)||[],(function(e,n){t[n]=!0})),t}function l(){Z.removeEventListener("DOMContentLoaded",l),n.removeEventListener("load",l),ce.ready()}function f(){this.expando=ce.expando+f.uid++}function p(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Ae,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:Re.test(n)?ce.parseJSON(n):n)}catch(e){}je.set(e,t,n)}else n=void 0;return n}function h(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),c=n&&n[3]||(ce.cssNumber[t]?"":"px"),l=(ce.cssNumber[t]||"px"!==c&&+u)&&Me.exec(ce.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do o=o||".5",l/=o,ce.style(e,t,l+c);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function d(e,t){var n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&ce.nodeName(e,t)?ce.merge([e],n):n}function v(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(c=ce.contains(o.ownerDocument,o),a=d(f.appendChild(o),"script"),c&&v(a),n)for(l=0;o=a[l++];)Ue.test(o.type||"")&&n.push(o);return f}function g(){return!0}function y(){return!1}function _(){try{return Z.activeElement}catch(e){}}function b(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)b(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=y;else if(!i)return e;return 1===o&&(a=i,i=function(e){return ce().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=ce.guid++)),e.each((function(){ce.event.add(this,t,i,r,n)}))}function w(e,t){return ce.nodeName(e,"table")&&ce.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function x(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function C(e){var t=Ye.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function E(e,t){var n,r,i,o,a,s,u,c;if(1===t.nodeType){if(Oe.hasData(e)&&(o=Oe.access(e),a=Oe.set(t,o),c=o.events)){delete a.handle,a.events={};for(i in c)for(n=0,r=c[i].length;n1&&"string"==typeof h&&!se.checkClone&&$e.test(h))return e.each((function(i){var o=e.eq(i);v&&(t[0]=h.call(this,i,o.html())),S(o,t,n,r)}));if(f&&(i=m(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(a=ce.map(d(i,"script"),x),s=a.length;l")).appendTo(t.documentElement),t=Qe[0].contentDocument,t.write(),t.close(),n=P(e,t),Qe.detach()),Ge[e]=n),n}function j(e,t,n){var r,i,o,a,s=e.style;return n=n||et(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ce.contains(e.ownerDocument,e)||(a=ce.style(e,t)),n&&!se.pixelMarginRight()&&Ze.test(a)&&Je.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0!==a?a+"":a}function R(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function A(e){if(e in st)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=at.length;n--;)if(e=at[n]+t,e in st)return e}function N(e,t,n){var r=Me.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function M(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;o<4;o+=2)"margin"===n&&(a+=ce.css(e,n+De[o],!0,i)),r?("content"===n&&(a-=ce.css(e,"padding"+De[o],!0,i)),"margin"!==n&&(a-=ce.css(e,"border"+De[o]+"Width",!0,i))):(a+=ce.css(e,"padding"+De[o],!0,i),"padding"!==n&&(a+=ce.css(e,"border"+De[o]+"Width",!0,i)));return a}function D(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=et(e),a="border-box"===ce.css(e,"boxSizing",!1,o);if(i<=0||null==i){if(i=j(e,t,o),(i<0||null==i)&&(i=e.style[t]),Ze.test(i))return i;r=a&&(se.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+M(e,t,n||(a?"border":"content"),r,o)+"px"}function F(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isPlainObject:function(e){var t;if("object"!==ce.type(e)||e.nodeType||ce.isWindow(e))return!1;if(e.constructor&&!ae.call(e,"constructor")&&!ae.call(e.constructor.prototype||{},"isPrototypeOf"))return!1;for(t in e);return void 0===t||ae.call(e,t)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ie[oe.call(e)]||"object":typeof e},globalEval:function(e){var t,n=eval;e=ce.trim(e),e&&(1===e.indexOf("use strict")?(t=Z.createElement("script"),t.text=e,Z.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(fe,"ms-").replace(pe,he)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(a(e))for(n=e.length;rx.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[U]=!0,e}function i(e){var t=A.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)x.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||$)-(~e.sourceIndex||$);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r((function(t){return t=+t,r((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function l(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function p(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function v(e,n,r){for(var i=0,o=n.length;i-1&&(r[c]=!(a[c]=f))}}else _=m(_===a?_.splice(d,_.length):_),o?o(null,a,_,u):J.apply(a,_)}))}function y(e){for(var t,n,r,i=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=h((function(e){return e===t}),a,!0),c=h((function(e){return ee(t,e)>-1}),a,!0),l=[function(e,n,r){var i=!o&&(r||n!==P)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,i}];s1&&d(l),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,c){var l,f,p,h=0,d="0",v=r&&[],g=[],y=P,_=r||o&&x.find.TAG("*",c),b=q+=null==y?1:Math.random()||.1,w=_.length;for(c&&(P=a===A||a||c);d!==w&&null!=(l=_[d]);d++){if(o&&l){for(f=0,a||l.ownerDocument===A||(R(l),s=!M);p=e[f++];)if(p(l,a||A,s)){u.push(l);break}c&&(q=b)}i&&((l=!p&&l)&&h--,r&&v.push(l))}if(h+=d,i&&d!==h){for(f=0;p=n[f++];)p(v,g,a,s);if(r){if(h>0)for(;d--;)v[d]||g[d]||(g[d]=Q.call(u));g=m(g)}J.apply(u,g),c&&!r&&g.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(q=b,P=y),v};return i?r(a):a}var b,w,x,C,E,k,S,T,P,O,j,R,A,N,M,D,F,I,L,U="sizzle"+1*new Date,H=e.document,q=0,z=0,B=n(),W=n(),V=n(),K=function(e,t){return e===t&&(j=!0),0},$=1<<31,Y={}.hasOwnProperty,X=[],Q=X.pop,G=X.push,J=X.push,Z=X.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ve=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ge=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,_e=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},xe=function(){R()};try{J.apply(X=Z.call(H.childNodes),H.childNodes),X[H.childNodes.length].nodeType}catch(e){J={apply:X.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},R=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:H;return r!==A&&9===r.nodeType&&r.documentElement?(A=r,N=A.documentElement,M=!E(A),(n=A.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",xe,!1):n.attachEvent&&n.attachEvent("onunload",xe)),w.attributes=i((function(e){return e.className="i",!e.getAttribute("className")})),w.getElementsByTagName=i((function(e){return e.appendChild(A.createComment("")),!e.getElementsByTagName("*").length})),w.getElementsByClassName=me.test(A.getElementsByClassName),w.getById=i((function(e){return N.appendChild(e).id=U,!A.getElementsByName||!A.getElementsByName(U).length})),w.getById?(x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&M){var n=t.getElementById(e);return n?[n]:[]}},x.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete x.find.ID,x.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),x.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&M)return t.getElementsByClassName(e)},F=[],D=[],(w.qsa=me.test(A.querySelectorAll))&&(i((function(e){N.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&D.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||D.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+U+"-]").length||D.push("~="),e.querySelectorAll(":checked").length||D.push(":checked"),e.querySelectorAll("a#"+U+"+*").length||D.push(".#.+[+~]")})),i((function(e){var t=A.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&D.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||D.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),D.push(",.*:")}))),(w.matchesSelector=me.test(I=N.matches||N.webkitMatchesSelector||N.mozMatchesSelector||N.oMatchesSelector||N.msMatchesSelector))&&i((function(e){w.disconnectedMatch=I.call(e,"div"),I.call(e,"[s!='']:x"),F.push("!=",oe)})),D=D.length&&new RegExp(D.join("|")),F=F.length&&new RegExp(F.join("|")),t=me.test(N.compareDocumentPosition),L=t||me.test(N.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},K=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===A||e.ownerDocument===H&&L(H,e)?-1:t===A||t.ownerDocument===H&&L(H,t)?1:O?ee(O,e)-ee(O,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===A?-1:t===A?1:i?-1:o?1:O?ee(O,e)-ee(O,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===H?-1:u[r]===H?1:0},A):A},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==A&&R(e),n=n.replace(le,"='$1']"),w.matchesSelector&&M&&!V[n+" "]&&(!F||!F.test(n))&&(!D||!D.test(n)))try{var r=I.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,A,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==A&&R(e),L(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==A&&R(e);var n=x.attrHandle[t.toLowerCase()],r=n&&Y.call(x.attrHandle,t.toLowerCase())?n(e,t,!M):void 0;return void 0!==r?r:w.attributes||!M?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,O=!w.sortStable&&e.slice(0),e.sort(K),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return O=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},x=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=k(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&B(e,(function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,v=o!==a?"nextSibling":"previousSibling",m=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!u&&!s,_=!1;if(m){if(o){for(;v;){for(p=t;p=p[v];)if(s?p.nodeName.toLowerCase()===g:1===p.nodeType)return!1;d=v="only"===e&&!d&&"nextSibling"}return!0}if(d=[a?m.firstChild:m.lastChild],a&&y){for(p=m,f=p[U]||(p[U]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===q&&c[1],_=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[v]||(_=h=0)||d.pop();)if(1===p.nodeType&&++_&&p===t){l[e]=[q,h,_];break}}else if(y&&(p=t,f=p[U]||(p[U]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===q&&c[1],_=h),_===!1)for(;(p=++h&&p&&p[v]||(_=h=0)||d.pop())&&((s?p.nodeName.toLowerCase()!==g:1!==p.nodeType)||!++_||(y&&(f=p[U]||(p[U]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[q,_]),p!==t)););return _-=i,_===r||_%r===0&&_/r>=0}}},PSEUDO:function(e,n){var i,o=x.pseudos[e]||x.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[U]?o(n):o.length>1?(i=[e,e,"",n],x.setFilters.hasOwnProperty(e.toLowerCase())?r((function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])})):function(e){return o(e,0,i)}):o}},pseudos:{not:r((function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[U]?r((function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}})),has:r((function(e){return function(n){return t(e,n).length>0}})),contains:r((function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}})),lang:r((function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=M?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===N},focus:function(e){return e===A.activeElement&&(!A.hasFocus||A.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return ve.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c((function(){return[0]})),last:c((function(e,t){return[t-1]})),eq:c((function(e,t,n){return[n<0?n+t:n]})),even:c((function(e,t){for(var n=0;n=0;)e.push(r);return e})),gt:c((function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&M&&x.relative[o[1].type]){if(t=(x.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!x.relative[s=a.type]);)if((u=x.find[s])&&(r=u(a.matches[0].replace(be,we),ye.test(o[0].type)&&l(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return J.apply(n,r),n;break}}return(c||S(e,f))(r,t,!M,n,!t||ye.test(e)&&l(t.parentNode)||t),n},w.sortStable=U.split("").sort(K).join("")===U,w.detectDuplicates=!!j,R(),w.sortDetached=i((function(e){return 1&e.compareDocumentPosition(A.createElement("div"))})),i((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||o("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),w.attributes&&i((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||o("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),i((function(e){return null==e.getAttribute("disabled")}))||o(te,(function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),t})(n);ce.find=de,ce.expr=de.selectors,ce.expr[":"]=ce.expr.pseudos,ce.uniqueSort=ce.unique=de.uniqueSort,ce.text=de.getText,ce.isXMLDoc=de.isXML,ce.contains=de.contains;var ve=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},me=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},ge=ce.expr.match.needsContext,ye=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,_e=/^.[^:#\[\.,]*$/;ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,(function(e){return 1===e.nodeType})))},ce.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter((function(){for(t=0;t1?ce.unique(r):r),r.selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&ge.test(e)?ce(e):e||[],!1).length}});var be,we=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,xe=ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||be,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:we.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:Z,!0)),ye.test(r[1])&&ce.isPlainObject(t))for(r in t)ce.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=Z.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=Z,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ce.isFunction(e)?void 0!==n.ready?n.ready(e):e(ce):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ce.makeArray(e,this))};xe.prototype=ce.fn,be=ce(Z);var Ce=/^(?:parents|prev(?:Until|All))/,Ee={children:!0,contents:!0,next:!0,prev:!0};ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?re.call(ce(e),this[0]):re.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ve(e,"parentNode")},parentsUntil:function(e,t,n){return ve(e,"parentNode",n)},next:function(e){return u(e,"nextSibling")},prev:function(e){return u(e,"previousSibling")},nextAll:function(e){return ve(e,"nextSibling")},prevAll:function(e){return ve(e,"previousSibling")},nextUntil:function(e,t,n){return ve(e,"nextSibling",n)},prevUntil:function(e,t,n){return ve(e,"previousSibling",n)},siblings:function(e){return me((e.parentNode||{}).firstChild,e)},children:function(e){return me(e.firstChild)},contents:function(e){return e.contentDocument||ce.merge([],e.childNodes)}},(function(e,t){ce.fn[e]=function(n,r){var i=ce.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=ce.filter(r,i)),this.length>1&&(Ee[e]||ce.uniqueSort(i),Ce.test(e)&&i.reverse()),this.pushStack(i)}}));var ke=/\S+/g;ce.Callbacks=function(e){e="string"==typeof e?c(e):ce.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?ce.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},ce.extend({Deferred:function(e){var t=[["resolve","done",ce.Callbacks("once memory"),"resolved"],["reject","fail",ce.Callbacks("once memory"),"rejected"],["notify","progress",ce.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ce.Deferred((function(n){ce.each(t,(function(t,o){var a=ce.isFunction(e[t])&&e[t];i[o[1]]((function(){var e=a&&a.apply(this,arguments);e&&ce.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)}))})),e=null})).promise()},promise:function(e){return null!=e?ce.extend(e,r):r}},i={};return r.pipe=r.then,ce.each(t,(function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add((function(){n=s}),t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith})),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ee.call(arguments),a=o.length,s=1!==a||e&&ce.isFunction(e.promise)?a:0,u=1===s?e:ce.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ee.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(Se.resolveWith(Z,[ce]),ce.fn.triggerHandler&&(ce(Z).triggerHandler("ready"),ce(Z).off("ready"))))}}),ce.ready.promise=function(e){return Se||(Se=ce.Deferred(),"complete"===Z.readyState||"loading"!==Z.readyState&&!Z.documentElement.doScroll?n.setTimeout(ce.ready):(Z.addEventListener("DOMContentLoaded",l),n.addEventListener("load",l))),Se.promise(e)},ce.ready.promise();var Te=function(e,t,n,r,i,o,a){var s=0,u=e.length,c=null==n;if("object"===ce.type(n)){i=!0;for(s in n)Te(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,ce.isFunction(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(ce(e),n)})),t))for(;s-1&&void 0!==n&&je.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){je.remove(this,e)}))}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Oe.get(e,t),n&&(!r||ce.isArray(n)?r=Oe.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t),a=function(){ce.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Oe.get(e,n)||Oe.access(e,n,{empty:ce.Callbacks("once memory").add((function(){Oe.remove(e,[t+"queue",n])}))})}}),ce.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length",""],thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};He.optgroup=He.option,He.tbody=He.tfoot=He.colgroup=He.caption=He.thead,He.th=He.td;var qe=/<|&#?\w+;/;!(function(){var e=Z.createDocumentFragment(),t=e.appendChild(Z.createElement("div")),n=Z.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),se.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",se.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue})();var ze=/^key/,Be=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,We=/^([^.]*)(?:\.(.+)|)/;ce.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,h,d,v,m=Oe.get(e);if(m)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=ce.guid++),(u=m.events)||(u=m.events={}),(a=m.handle)||(a=m.handle=function(t){return"undefined"!=typeof ce&&ce.event.triggered!==t.type?ce.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(ke)||[""],c=t.length;c--;)s=We.exec(t[c])||[],h=v=s[1],d=(s[2]||"").split(".").sort(),h&&(f=ce.event.special[h]||{},h=(i?f.delegateType:f.bindType)||h,f=ce.event.special[h]||{},l=ce.extend({type:h,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:d.join(".")},o),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,a)!==!1||e.addEventListener&&e.addEventListener(h,a)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),ce.event.global[h]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,h,d,v,m=Oe.hasData(e)&&Oe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(ke)||[""],c=t.length;c--;)if(s=We.exec(t[c])||[],h=v=s[1],d=(s[2]||"").split(".").sort(),h){for(f=ce.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)l=p[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));a&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||ce.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)ce.event.remove(e,h+t[c],n,r,!0);ce.isEmptyObject(u)&&Oe.remove(e,"handle events")}},dispatch:function(e){e=ce.event.fix(e);var t,n,r,i,o,a=[],s=ee.call(arguments),u=(Oe.get(this,"events")||{})[e.type]||[],c=ce.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ce.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:ce.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]*)\/>/gi,Ke=/\s*$/g;ce.extend({htmlPrefilter:function(e){return e.replace(Ve,"<$1>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=ce.contains(e.ownerDocument,e);if(!(se.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=d(s),o=d(e),r=0,i=o.length;r0&&v(a,!u&&d(e,"script")),s},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if(Pe(n)){if(t=n[Oe.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[Oe.expando]=void 0}n[je.expando]&&(n[je.expando]=void 0)}}}),ce.fn.extend({domManip:S,detach:function(e){return T(this,e,!0)},remove:function(e){return T(this,e)},text:function(e){return Te(this,(function(e){return void 0===e?ce.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return S(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=w(this,e);t.appendChild(e)}}))},prepend:function(){return S(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=w(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return S(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return S(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(d(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return ce.clone(this,e,t)}))},html:function(e){return Te(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ke.test(e)&&!He[(Le.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n1)},show:function(){return F(this,!0)},hide:function(){return F(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){Fe(this)?ce(this).show():ce(this).hide()}))}}),ce.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ce.cssProps[e.prop]]&&!ce.cssHooks[e.prop]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=I.prototype.init,ce.fx.step={};var ut,ct,lt=/^(?:toggle|show|hide)$/,ft=/queueHooks$/;ce.Animation=ce.extend(B,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return h(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){ce.isFunction(e)?(t=e,e=["*"]):e=e.match(ke);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each((function(){ce.removeAttr(this,e)}))}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(t=t.toLowerCase(),i=ce.attrHooks[t]||(ce.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=ce.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!se.radioValue&&"radio"===t&&ce.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(ke);if(o&&1===e.nodeType)for(;n=o[i++];)r=ce.propFix[n]||n,ce.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),pt={set:function(e,t,n){return t===!1?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=ht[t]||ce.find.attr;ht[t]=function(e,t,r){var i,o;return r||(o=ht[t],ht[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,ht[t]=o),i}}));var dt=/^(?:input|select|textarea|button)$/i,vt=/^(?:a|area)$/i;ce.fn.extend({prop:function(e,t){return Te(this,ce.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[ce.propFix[e]||e]}))}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):dt.test(e.nodeName)||vt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),se.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){ce.propFix[this.toLowerCase()]=this}));var mt=/[\t\r\n\f]/g;ce.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(ce.isFunction(e))return this.each((function(t){ce(this).addClass(e.call(this,t,W(this)))}));if("string"==typeof e&&e)for(t=e.match(ke)||[];n=this[u++];)if(i=W(n),r=1===n.nodeType&&(" "+i+" ").replace(mt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=ce.trim(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(ce.isFunction(e))return this.each((function(t){ce(this).removeClass(e.call(this,t,W(this)))}));if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(ke)||[];n=this[u++];)if(i=W(n),r=1===n.nodeType&&(" "+i+" ").replace(mt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=ce.trim(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ce.isFunction(e)?this.each((function(n){ce(this).toggleClass(e.call(this,n,W(this),t),t)})):this.each((function(){var t,r,i,o;if("string"===n)for(r=0,i=ce(this),o=e.match(ke)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=W(this),t&&Oe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Oe.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+W(n)+" ").replace(mt," ").indexOf(t)>-1)return!0;return!1}});var gt=/\r/g,yt=/[\x20\t\r\n\f]+/g;ce.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=ce.isFunction(e),this.each((function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,ce(this).val()):e,null==i?i="":"number"==typeof i?i+="":ce.isArray(i)&&(i=ce.map(i,(function(e){return null==e?"":e+""}))),t=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}));if(i)return t=ce.valHooks[i.type]||ce.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(gt,""):null==n?"":n)}}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:ce.trim(ce.text(e)).replace(yt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],(function(){ce.valHooks[this]={set:function(e,t){if(ce.isArray(t))return e.checked=ce.inArray(ce(e).val(),t)>-1}},se.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}));var _t=/^(?:focusinfocus|focusoutblur)$/;ce.extend(ce.event,{trigger:function(e,t,r,i){var o,a,s,u,c,l,f,p=[r||Z],h=ae.call(e,"type")?e.type:e,d=ae.call(e,"namespace")?e.namespace.split("."):[];if(a=s=r=r||Z,3!==r.nodeType&&8!==r.nodeType&&!_t.test(h+ce.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,e=e[ce.expando]?e:new ce.Event(h,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=d.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:ce.makeArray(t,[e]),f=ce.event.special[h]||{},i||!f.trigger||f.trigger.apply(r,t)!==!1)){if(!i&&!f.noBubble&&!ce.isWindow(r)){for(u=f.delegateType||h,_t.test(u+h)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||Z)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!e.isPropagationStopped();)e.type=o>1?u:f.bindType||h,l=(Oe.get(a,"events")||{})[e.type]&&Oe.get(a,"handle"),l&&l.apply(a,t),l=c&&a[c],l&&l.apply&&Pe(a)&&(e.result=l.apply(a,t),e.result===!1&&e.preventDefault());return e.type=h,i||e.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),t)!==!1||!Pe(r)||c&&ce.isFunction(r[h])&&!ce.isWindow(r)&&(s=r[c],s&&(r[c]=null),ce.event.triggered=h,r[h](),ce.event.triggered=void 0,s&&(r[c]=s)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each((function(){ce.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}}),ce.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),(function(e,t){ce.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),ce.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),se.focusin="onfocusin"in n,se.focusin||ce.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){ce.event.simulate(t,e.target,ce.event.fix(e))};ce.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Oe.access(r,t);i||r.addEventListener(e,n,!0),Oe.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Oe.access(r,t)-1;i?Oe.access(r,t,i):(r.removeEventListener(e,n,!0),Oe.remove(r,t))}}}));var bt=n.location,wt=ce.now(),xt=/\?/;ce.parseJSON=function(e){return JSON.parse(e+"")},ce.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||ce.error("Invalid XML: "+e),t};var Ct=/#.*$/,Et=/([?&])_=[^&]*/,kt=/^(.*?):[ \t]*([^\r\n]*)$/gm,St=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Tt=/^(?:GET|HEAD)$/,Pt=/^\/\//,Ot={},jt={},Rt="*/".concat("*"),At=Z.createElement("a");At.href=bt.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:St.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ce.parseJSON,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$($(e,ce.ajaxSettings),t):$(ce.ajaxSettings,e)},ajaxPrefilter:V(Ot),ajaxTransport:V(jt),ajax:function(e,t){function r(e,t,r,s){var c,f,y,_,w,C=t;2!==b&&(b=2,u&&n.clearTimeout(u),i=void 0,a=s||"",x.readyState=e>0?4:0,c=e>=200&&e<300||304===e,r&&(_=Y(p,x,r)),_=X(p,_,x,c),c?(p.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(ce.lastModified[o]=w),w=x.getResponseHeader("etag"),w&&(ce.etag[o]=w)),204===e||"HEAD"===p.type?C="nocontent":304===e?C="notmodified":(C=_.state,f=_.data,y=_.error,c=!y)):(y=C,!e&&C||(C="error",e<0&&(e=0))),x.status=e,x.statusText=(t||C)+"",c?v.resolveWith(h,[f,C,x]):v.rejectWith(h,[x,C,y]),x.statusCode(g),g=void 0,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[x,p,c?f:y]),m.fireWith(h,[x,C]),l&&(d.trigger("ajaxComplete",[x,p]),--ce.active||ce.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,o,a,s,u,c,l,f,p=ce.ajaxSetup({},t),h=p.context||p,d=p.context&&(h.nodeType||h.jquery)?ce(h):ce.event,v=ce.Deferred(),m=ce.Callbacks("once memory"),g=p.statusCode||{},y={},_={},b=0,w="canceled",x={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!s)for(s={};t=kt.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=_[n]=_[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)g[t]=[g[t],e[t]];else x.always(e[x.status]);return this},abort:function(e){var t=e||w;return i&&i.abort(t),r(0,t),this}};if(v.promise(x).complete=m.add,x.success=x.done,x.error=x.fail,p.url=((e||p.url||bt.href)+"").replace(Ct,"").replace(Pt,bt.protocol+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=ce.trim(p.dataType||"*").toLowerCase().match(ke)||[""],null==p.crossDomain){c=Z.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=At.protocol+"//"+At.host!=c.protocol+"//"+c.host}catch(e){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=ce.param(p.data,p.traditional)),K(Ot,p,t,x),2===b)return x;l=ce.event&&p.global,l&&0===ce.active++&&ce.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Tt.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(xt.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=Et.test(o)?o.replace(Et,"$1_="+wt++):o+(xt.test(o)?"&":"?")+"_="+wt++)),p.ifModified&&(ce.lastModified[o]&&x.setRequestHeader("If-Modified-Since",ce.lastModified[o]),ce.etag[o]&&x.setRequestHeader("If-None-Match",ce.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||t.contentType)&&x.setRequestHeader("Content-Type",p.contentType),x.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Rt+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)x.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(h,x,p)===!1||2===b))return x.abort();w="abort";for(f in{success:1,error:1,complete:1})x[f](p[f]);if(i=K(jt,p,t,x)){if(x.readyState=1,l&&d.trigger("ajaxSend",[x,p]),2===b)return x;p.async&&p.timeout>0&&(u=n.setTimeout((function(){x.abort("timeout")}),p.timeout));try{b=1,i.send(y,r)}catch(e){if(!(b<2))throw e;r(-1,e)}}else r(-1,"No Transport");return x},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],(function(e,t){ce[t]=function(e,n,r,i){return ce.isFunction(n)&&(i=i||r,r=n,n=void 0),ce.ajax(ce.extend({url:e,type:t,dataType:i,data:n,success:r},ce.isPlainObject(e)&&e))}})),ce._evalUrl=function(e){return ce.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},ce.fn.extend({wrapAll:function(e){var t;return ce.isFunction(e)?this.each((function(t){ce(this).wrapAll(e.call(this,t))})):(this[0]&&(t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this)},wrapInner:function(e){return ce.isFunction(e)?this.each((function(t){ce(this).wrapInner(e.call(this,t))})):this.each((function(){var t=ce(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=ce.isFunction(e);return this.each((function(n){ce(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(){return this.parent().each((function(){ce.nodeName(this,"body")||ce(this).replaceWith(this.childNodes)})).end()}}),ce.expr.filters.hidden=function(e){return!ce.expr.filters.visible(e)},ce.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var Nt=/%20/g,Mt=/\[\]$/,Dt=/\r?\n/g,Ft=/^(?:submit|button|image|reset|file)$/i,It=/^(?:input|select|textarea|keygen)/i;ce.param=function(e,t){var n,r=[],i=function(e,t){t=ce.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ce.ajaxSettings&&ce.ajaxSettings.traditional),ce.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,(function(){i(this.name,this.value)}));else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(Nt,"+")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&It.test(this.nodeName)&&!Ft.test(e)&&(this.checked||!Ie.test(e))})).map((function(e,t){var n=ce(this).val();return null==n?null:ce.isArray(n)?ce.map(n,(function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}})):{name:t.name,value:n.replace(Dt,"\r\n")}})).get()}}),ce.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Lt={0:200,1223:204},Ut=ce.ajaxSettings.xhr();se.cors=!!Ut&&"withCredentials"in Ut,se.ajax=Ut=!!Ut,ce.ajaxTransport((function(e){var t,r;if(se.cors||Ut&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"); +for(a in i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Lt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),ce.ajaxTransport("script",(function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=ce(" + + + + + \ No newline at end of file diff --git a/Sources/webAduc/www/basic/root.json b/Sources/webAduc/www/basic/root.json new file mode 100644 index 0000000..8560404 --- /dev/null +++ b/Sources/webAduc/www/basic/root.json @@ -0,0 +1 @@ +[{"id":1,"text":"Root node","children":[{"id":2,"text":"Child node 1"},{"id":3,"text":"Child node 2"}]}] \ No newline at end of file diff --git a/Sources/webAduc/www/browserconfig.xml b/Sources/webAduc/www/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/Sources/webAduc/www/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/Sources/webAduc/www/composer.json b/Sources/webAduc/www/composer.json new file mode 100644 index 0000000..df2dda1 --- /dev/null +++ b/Sources/webAduc/www/composer.json @@ -0,0 +1,19 @@ +{ + "name": "snoel/phpaduc", + "description": "Web manager for samba AD domain", + "type": "project", + "license": "GNU/Gpl", + "authors": [{ + "name": "Serge NOEL", + "email": "serge.noel@net6a.com" + }], + "require": { + "php": "7.*", + "components/jquery": "3.*", + "components/jqueryui": "1.*", + "vakata/jstree": "3.*", + "twbs/bootstrap": "4.*", + "smarty/smarty": "3.*", + "adldap2/adldap2": "10.*" + } +} \ No newline at end of file diff --git a/Sources/webAduc/www/composer.lock b/Sources/webAduc/www/composer.lock new file mode 100644 index 0000000..6ab9fe7 --- /dev/null +++ b/Sources/webAduc/www/composer.lock @@ -0,0 +1,858 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7e3aa01c6b3577f1bd7b3c4f03e0093a", + "packages": [ + { + "name": "adldap2/adldap2", + "version": "v10.3.1", + "source": { + "type": "git", + "url": "https://github.com/Adldap2/Adldap2.git", + "reference": "936a4e2eb925d005198f716a75bb78068c4de94d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Adldap2/Adldap2/zipball/936a4e2eb925d005198f716a75bb78068c4de94d", + "reference": "936a4e2eb925d005198f716a75bb78068c4de94d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-ldap": "*", + "illuminate/contracts": "~5.0|~6.0|~7.0|~8.0", + "php": ">=7.0", + "psr/log": "~1.0", + "psr/simple-cache": "~1.0", + "tightenco/collect": "~5.0|~6.0|~7.0|~8.0" + }, + "require-dev": { + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~6.0|~7.0|~8.0" + }, + "suggest": { + "ext-fileinfo": "fileinfo is required when retrieving user encoded thumbnails" + }, + "type": "library", + "autoload": { + "psr-4": { + "Adldap\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Steve Bauman", + "email": "steven_bauman@outlook.com", + "role": "Developer" + } + ], + "description": "A PHP LDAP Package for humans.", + "keywords": [ + "active directory", + "ad", + "adLDAP", + "adldap2", + "directory", + "ldap", + "windows" + ], + "time": "2020-09-09T12:55:51+00:00" + }, + { + "name": "components/jquery", + "version": "3.5.1", + "source": { + "type": "git", + "url": "https://github.com/components/jquery.git", + "reference": "b33e8f0f9a1cb2ae390cf05d766a900b53d2125b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jquery/zipball/b33e8f0f9a1cb2ae390cf05d766a900b53d2125b", + "reference": "b33e8f0f9a1cb2ae390cf05d766a900b53d2125b", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "jquery.js" + ], + "files": [ + "jquery.min.js", + "jquery.min.map", + "jquery.slim.js", + "jquery.slim.min.js", + "jquery.slim.min.map" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "JS Foundation and other contributors" + } + ], + "description": "jQuery JavaScript Library", + "homepage": "http://jquery.com", + "time": "2020-05-05T13:21:02+00:00" + }, + { + "name": "components/jqueryui", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/components/jqueryui.git", + "reference": "44ecf3794cc56b65954cc19737234a3119d036cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jqueryui/zipball/44ecf3794cc56b65954cc19737234a3119d036cc", + "reference": "44ecf3794cc56b65954cc19737234a3119d036cc", + "shasum": "" + }, + "require": { + "components/jquery": ">=1.6" + }, + "type": "component", + "extra": { + "component": { + "name": "jquery-ui", + "scripts": [ + "jquery-ui.js" + ], + "files": [ + "ui/**", + "themes/**", + "jquery-ui.min.js" + ], + "shim": { + "deps": [ + "jquery" + ], + "exports": "jQuery" + } + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "jQuery UI Team", + "homepage": "http://jqueryui.com/about" + }, + { + "name": "Joern Zaefferer", + "email": "joern.zaefferer@gmail.com", + "homepage": "http://bassistance.de" + }, + { + "name": "Scott Gonzalez", + "email": "scott.gonzalez@gmail.com", + "homepage": "http://scottgonzalez.com" + }, + { + "name": "Kris Borchers", + "email": "kris.borchers@gmail.com", + "homepage": "http://krisborchers.com" + }, + { + "name": "Mike Sherov", + "email": "mike.sherov@gmail.com", + "homepage": "http://mike.sherov.com" + }, + { + "name": "TJ VanToll", + "email": "tj.vantoll@gmail.com", + "homepage": "http://tjvantoll.com" + }, + { + "name": "Corey Frang", + "email": "gnarf37@gmail.com", + "homepage": "http://gnarf.net" + }, + { + "name": "Felix Nagel", + "email": "info@felixnagel.com", + "homepage": "http://www.felixnagel.com" + } + ], + "description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.", + "time": "2016-09-16T05:47:55+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v8.15.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "d9e6a156efb8332dcce427b7d1ccd2706609bfa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/d9e6a156efb8332dcce427b7d1ccd2706609bfa5", + "reference": "d9e6a156efb8332dcce427b7d1ccd2706609bfa5", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "time": "2020-11-10T15:48:45+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "smarty/smarty", + "version": "v3.1.36", + "source": { + "type": "git", + "url": "https://github.com/smarty-php/smarty.git", + "reference": "fd148f7ade295014fff77f89ee3d5b20d9d55451" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/fd148f7ade295014fff77f89ee3d5b20d9d55451", + "reference": "fd148f7ade295014fff77f89ee3d5b20d9d55451", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "phpunit/phpunit": "6.4.1", + "smarty/smarty-lexer": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "libs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Monte Ohrt", + "email": "monte@ohrt.com" + }, + { + "name": "Uwe Tews", + "email": "uwe.tews@googlemail.com" + }, + { + "name": "Rodney Rehm", + "email": "rodney.rehm@medialize.de" + } + ], + "description": "Smarty - the compiling PHP template engine", + "homepage": "http://www.smarty.net", + "keywords": [ + "templating" + ], + "time": "2020-04-14T14:44:26+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", + "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-27T10:11:13+00:00" + }, + { + "name": "tightenco/collect", + "version": "v8.14.0", + "source": { + "type": "git", + "url": "https://github.com/tighten/collect.git", + "reference": "8f79c602c872afd7c9371e193d6aa4ed13e97661" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tighten/collect/zipball/8f79c602c872afd7c9371e193d6aa4ed13e97661", + "reference": "8f79c602c872afd7c9371e193d6aa4ed13e97661", + "shasum": "" + }, + "require": { + "php": "^7.2", + "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "nesbot/carbon": "^2.23.0", + "phpunit/phpunit": "^8.3" + }, + "type": "library", + "autoload": { + "files": [ + "src/Collect/Support/helpers.php", + "src/Collect/Support/alias.php" + ], + "psr-4": { + "Tightenco\\Collect\\": "src/Collect" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "description": "Collect - Illuminate Collections as a separate package.", + "keywords": [ + "collection", + "laravel" + ], + "time": "2020-11-16T18:55:11+00:00" + }, + { + "name": "twbs/bootstrap", + "version": "v4.5.3", + "source": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git", + "reference": "a716fb03f965dc0846df479e14388b1b4b93d7ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twbs/bootstrap/zipball/a716fb03f965dc0846df479e14388b1b4b93d7ce", + "reference": "a716fb03f965dc0846df479e14388b1b4b93d7ce", + "shasum": "" + }, + "replace": { + "twitter/bootstrap": "self.version" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Otto", + "email": "markdotto@gmail.com" + }, + { + "name": "Jacob Thornton", + "email": "jacobthornton@gmail.com" + } + ], + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "homepage": "https://getbootstrap.com/", + "keywords": [ + "JS", + "css", + "framework", + "front-end", + "mobile-first", + "responsive", + "sass", + "web" + ], + "funding": [ + { + "url": "https://opencollective.com/bootstrap", + "type": "open_collective" + } + ], + "time": "2020-10-13T15:38:30+00:00" + }, + { + "name": "vakata/jstree", + "version": "3.3.10", + "source": { + "type": "git", + "url": "https://github.com/vakata/jstree.git", + "reference": "6dce2271757dd0bd4cd0e941bd093c6678e98faf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vakata/jstree/zipball/6dce2271757dd0bd4cd0e941bd093c6678e98faf", + "reference": "6dce2271757dd0bd4cd0e941bd093c6678e98faf", + "shasum": "" + }, + "require": { + "components/jquery": ">=1.9.1" + }, + "suggest": { + "robloach/component-installer": "Allows installation of Components via Composer" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "dist/jstree.js" + ], + "styles": [ + "dist/themes/default/style.css" + ], + "images": [ + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ], + "files": [ + "dist/jstree.min.js", + "dist/themes/default/style.min.css", + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Bozhanov", + "email": "jstree@jstree.com" + } + ], + "description": "jsTree is jquery plugin, that provides interactive trees.", + "homepage": "http://jstree.com", + "time": "2020-06-16T11:17:46+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "7.*" + }, + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/Sources/webAduc/www/favicon-16x16.png b/Sources/webAduc/www/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..00cb36b832acb4db21ce2b73718916e46c4e08a9 GIT binary patch literal 970 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 literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/favicon.ico b/Sources/webAduc/www/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..64a667d5e515c0157bc4e4a1e999101353ae905b GIT binary patch literal 10990 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 F{|gGpvSt7P literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/fbrowser/data/.htaccess b/Sources/webAduc/www/fbrowser/data/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/Sources/webAduc/www/fbrowser/data/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/Sources/webAduc/www/fbrowser/data/root/README.txt b/Sources/webAduc/www/fbrowser/data/root/README.txt new file mode 100644 index 0000000..ad8b75d --- /dev/null +++ b/Sources/webAduc/www/fbrowser/data/root/README.txt @@ -0,0 +1 @@ +Conteneur \ No newline at end of file diff --git a/Sources/webAduc/www/fbrowser/data/root/Test/Test.txt b/Sources/webAduc/www/fbrowser/data/root/Test/Test.txt new file mode 100644 index 0000000..e69de29 diff --git a/Sources/webAduc/www/fbrowser/file_sprite.png b/Sources/webAduc/www/fbrowser/file_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..5d68245cb819c6776a1d7b012bb9f7690fb3505d GIT binary patch literal 19360 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 && strlen($this->base)) { + if(strpos($temp, $this->base) !== 0) { throw new Exception('Path is not inside base ('.$this->base.'): ' . $temp); } + } + return $temp; + } + protected function path($id) { + $id = str_replace('/', DIRECTORY_SEPARATOR, $id); + $id = trim($id, DIRECTORY_SEPARATOR); + $id = $this->real($this->base . DIRECTORY_SEPARATOR . $id); + return $id; + } + protected function id($path) { + $path = $this->real($path); + $path = substr($path, strlen($this->base)); + $path = str_replace(DIRECTORY_SEPARATOR, '/', $path); + $path = trim($path, '/'); + return strlen($path) ? $path : '/'; + } + + public function __construct($base) { + $this->base = $this->real($base); + if(!$this->base) { throw new Exception('Base directory does not exist'); } + } + public function lst($id, $with_root = false) { + $dir = $this->path($id); + $lst = @scandir($dir); + if(!$lst) { throw new Exception('Could not list path: ' . $dir); } + $res = array(); + foreach($lst as $item) { + if($item == '.' || $item == '..' || $item === null) { continue; } + $tmp = preg_match('([^ a-zа-я-_0-9.]+)ui', $item); + if($tmp === false || $tmp === 1) { continue; } + if(is_dir($dir . DIRECTORY_SEPARATOR . $item)) { + $res[] = array('text' => $item, 'children' => true, 'id' => $this->id($dir . DIRECTORY_SEPARATOR . $item), 'icon' => 'folder'); + } + else { + $res[] = array('text' => $item, 'children' => false, 'id' => $this->id($dir . DIRECTORY_SEPARATOR . $item), 'type' => 'file', 'icon' => 'file file-'.substr($item, strrpos($item,'.') + 1)); + } + } + if($with_root && $this->id($dir) === '/') { + $res = array(array('text' => basename($this->base), 'children' => $res, 'id' => '/', 'icon'=>'folder', 'state' => array('opened' => true, 'disabled' => true))); + } + return $res; + } + public function data($id) { + if(strpos($id, ":")) { + $id = array_map(array($this, 'id'), explode(':', $id)); + return array('type'=>'multiple', 'content'=> 'Multiple selected: ' . implode(' ', $id)); + } + $dir = $this->path($id); + if(is_dir($dir)) { + return array('type'=>'folder', 'content'=> $id); + } + if(is_file($dir)) { + $ext = strpos($dir, '.') !== FALSE ? substr($dir, strrpos($dir, '.') + 1) : ''; + $dat = array('type' => $ext, 'content' => ''); + switch($ext) { + case 'txt': + case 'text': + case 'md': + case 'js': + case 'json': + case 'css': + case 'html': + case 'htm': + case 'xml': + case 'c': + case 'cpp': + case 'h': + case 'sql': + case 'log': + case 'py': + case 'rb': + case 'htaccess': + case 'php': + $dat['content'] = file_get_contents($dir); + break; + case 'jpg': + case 'jpeg': + case 'gif': + case 'png': + case 'bmp': + $dat['content'] = 'data:'.finfo_file(finfo_open(FILEINFO_MIME_TYPE), $dir).';base64,'.base64_encode(file_get_contents($dir)); + break; + default: + $dat['content'] = 'File not recognized: '.$this->id($dir); + break; + } + return $dat; + } + throw new Exception('Not a valid selection: ' . $dir); + } + public function create($id, $name, $mkdir = false) { + $dir = $this->path($id); + if(preg_match('([^ a-zа-я-_0-9.]+)ui', $name) || !strlen($name)) { + throw new Exception('Invalid name: ' . $name); + } + if($mkdir) { + mkdir($dir . DIRECTORY_SEPARATOR . $name); + } + else { + file_put_contents($dir . DIRECTORY_SEPARATOR . $name, ''); + } + return array('id' => $this->id($dir . DIRECTORY_SEPARATOR . $name)); + } + public function rename($id, $name) { + $dir = $this->path($id); + if($dir === $this->base) { + throw new Exception('Cannot rename root'); + } + if(preg_match('([^ a-zа-я-_0-9.]+)ui', $name) || !strlen($name)) { + throw new Exception('Invalid name: ' . $name); + } + $new = explode(DIRECTORY_SEPARATOR, $dir); + array_pop($new); + array_push($new, $name); + $new = implode(DIRECTORY_SEPARATOR, $new); + if($dir !== $new) { + if(is_file($new) || is_dir($new)) { throw new Exception('Path already exists: ' . $new); } + rename($dir, $new); + } + return array('id' => $this->id($new)); + } + public function remove($id) { + $dir = $this->path($id); + if($dir === $this->base) { + throw new Exception('Cannot remove root'); + } + if(is_dir($dir)) { + foreach(array_diff(scandir($dir), array(".", "..")) as $f) { + $this->remove($this->id($dir . DIRECTORY_SEPARATOR . $f)); + } + rmdir($dir); + } + if(is_file($dir)) { + unlink($dir); + } + return array('status' => 'OK'); + } + public function move($id, $par) { + $dir = $this->path($id); + $par = $this->path($par); + $new = explode(DIRECTORY_SEPARATOR, $dir); + $new = array_pop($new); + $new = $par . DIRECTORY_SEPARATOR . $new; + rename($dir, $new); + return array('id' => $this->id($new)); + } + public function copy($id, $par) { + $dir = $this->path($id); + $par = $this->path($par); + $new = explode(DIRECTORY_SEPARATOR, $dir); + $new = array_pop($new); + $new = $par . DIRECTORY_SEPARATOR . $new; + if(is_file($new) || is_dir($new)) { throw new Exception('Path already exists: ' . $new); } + + if(is_dir($dir)) { + mkdir($new); + foreach(array_diff(scandir($dir), array(".", "..")) as $f) { + $this->copy($this->id($dir . DIRECTORY_SEPARATOR . $f), $this->id($new)); + } + } + if(is_file($dir)) { + copy($dir, $new); + } + return array('id' => $this->id($new)); + } +} + +if(isset($_GET['operation'])) { + $fs = new fs(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'root' . DIRECTORY_SEPARATOR); + try { + $rslt = null; + switch($_GET['operation']) { + case 'get_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $rslt = $fs->lst($node, (isset($_GET['id']) && $_GET['id'] === '#')); + break; + case "get_content": + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $rslt = $fs->data($node); + break; + case 'create_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $rslt = $fs->create($node, isset($_GET['text']) ? $_GET['text'] : '', (!isset($_GET['type']) || $_GET['type'] !== 'file')); + break; + case 'rename_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $rslt = $fs->rename($node, isset($_GET['text']) ? $_GET['text'] : ''); + break; + case 'delete_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $rslt = $fs->remove($node); + break; + case 'move_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $parn = isset($_GET['parent']) && $_GET['parent'] !== '#' ? $_GET['parent'] : '/'; + $rslt = $fs->move($node, $parn); + break; + case 'copy_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : '/'; + $parn = isset($_GET['parent']) && $_GET['parent'] !== '#' ? $_GET['parent'] : '/'; + $rslt = $fs->copy($node, $parn); + break; + default: + throw new Exception('Unsupported operation: ' . $_GET['operation']); + break; + } + header('Content-Type: application/json; charset=utf-8'); + echo json_encode($rslt); + } + catch (Exception $e) { + header($_SERVER["SERVER_PROTOCOL"] . ' 500 Server Error'); + header('Status: 500 Server Error'); + echo $e->getMessage(); + } + die(); +} +?> + + + + + + Title + + + + + +
    +
    +
    + + + +
    Select a file from the tree.
    +
    +
    + + + + + + \ No newline at end of file diff --git a/Sources/webAduc/www/index.php b/Sources/webAduc/www/index.php new file mode 100644 index 0000000..65ef0e3 --- /dev/null +++ b/Sources/webAduc/www/index.php @@ -0,0 +1,90 @@ + 7.3 + * + * LICENSE: This source file is subject to version 3.01 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_01.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Main + * @package phpAduc + * @author Serge NOEL + * @copyright 2016-2020 Easylinux + * @license http://opensource.org/licenses/gpl-license.php GNU Public License + * @version GIT: 2.0 + * @link ../tests/Documentation Tests/Documentation.odt + */ +// Charge les classes installées par Composer +require_once 'vendor/autoload.php'; +// Lire la configuration du site +require_once 'src/config/config.php'; +require_once 'src/class/autoload.php'; +session_start(); + +/* Initialisation de Smarty */ +$smarty = new Smarty(); +// Définir le dossier templates +$smarty->setTemplateDir('src/templates'); +$smarty->setConfigDir('src/templates/configs'); + +// Définir le dossier qui recoit les templates compilés +$smarty->setCompileDir('templates_c'); +$smarty->setCacheDir('src/templates_c/cache'); + +// Lire la page demandée +$Action=filter_input(INPUT_POST,'Action',FILTER_SANITIZE_STRING); +if(!isset($_SESSION['Loggued']) && $Action=="") +{ + $Action='Login'; +} + +error_log("Appel avec $Action"); +switch($Action) +{ + case 'tryLogin': + error_log('tryLogin '); + $Usr=new userClass(); + $sLogin=filter_input(INPUT_POST,'sLogin',FILTER_SANITIZE_STRING); + $sPasswd=filter_input(INPUT_POST,'sPassword',FILTER_SANITIZE_STRING); + if($Usr->isValid($sLogin,$sPasswd)) + { + $template='main.smarty'; + $component='main'; + $_SESSION['loggued']=true; + } + else + { + $template='login.smarty'; + $component=""; + $smarty->assign('error','Compte ou mot de passe invalide !'); + $smarty->assign('Title',"easyCloud"); + } + break; + + case 'Logout': + unset($_SESSION['Loggued']); + + case 'Login': + $template='login.smarty'; + $component=""; + break; + + default: + $component=strtolower($Action); + $template="$component.smarty"; + break; +} + +if($component!="") +{ + require_once("src/components/$component.php"); +} + +$smarty->assign('Title',"easyCloud"); +echo $smarty->display($template); \ No newline at end of file diff --git a/Sources/webAduc/www/layout.html b/Sources/webAduc/www/layout.html new file mode 100644 index 0000000..e7c405d --- /dev/null +++ b/Sources/webAduc/www/layout.html @@ -0,0 +1,1369 @@ + + + + + + + + + + + + + Interface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    + remove + drag +
    9 3
    +
    +
    +
    +
    + remove + drag + + + Position + + + Inverse + + +
    Navbar
    +
    + + + +
    +
    +
    + remove + drag + + Well + +
    Jumbotron
    +
    +
    +

    Hello, world!

    +

    This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.

    +

    Learn more

    +
    +
    +
    +
    +
    +
    +
    +
    + remove + drag +
    4 4 4
    +
    +
    +
    +
    + remove + drag +
    Text
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +
    +
    +
    + remove + drag +
    Text
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +
    +
    +
    + remove + drag +
    Text
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +
    +
    +
    +
    + +
    + + +
    + + + + + + + + diff --git a/Sources/webAduc/www/login.js b/Sources/webAduc/www/login.js new file mode 100644 index 0000000..eb5c3dd --- /dev/null +++ b/Sources/webAduc/www/login.js @@ -0,0 +1,47 @@ +$(document).ready(function(){ + + $('input[type=password]').keyup(function() { + var pswd = $(this).val(); + + //validate the length + if ( pswd.length < 8 ) { + $('#length').removeClass('valid').addClass('invalid'); + } else { + $('#length').removeClass('invalid').addClass('valid'); + } + + //validate letter + if ( pswd.match(/[A-z]/) ) { + $('#letter').removeClass('invalid').addClass('valid'); + } else { + $('#letter').removeClass('valid').addClass('invalid'); + } + + //validate capital letter + if ( pswd.match(/[A-Z]/) ) { + $('#capital').removeClass('invalid').addClass('valid'); + } else { + $('#capital').removeClass('valid').addClass('invalid'); + } + + //validate number + if ( pswd.match(/\d/) ) { + $('#number').removeClass('invalid').addClass('valid'); + } else { + $('#number').removeClass('valid').addClass('invalid'); + } + + //validate space + if ( pswd.match(/[^a-zA-Z0-9\-\/]/) ) { + $('#space').removeClass('invalid').addClass('valid'); + } else { + $('#space').removeClass('valid').addClass('invalid'); + } + + }).focus(function() { + $('#pswd_info').show(); + }).blur(function() { + $('#pswd_info').hide(); + }); + +}); \ No newline at end of file diff --git a/Sources/webAduc/www/mstile-150x150.png b/Sources/webAduc/www/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..fa75630745d12e572d643585c15e907ee885defd GIT binary patch literal 13090 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 Hi~|1;rw@-| literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/safari-pinned-tab.svg b/Sources/webAduc/www/safari-pinned-tab.svg new file mode 100644 index 0000000..c81aeee --- /dev/null +++ b/Sources/webAduc/www/safari-pinned-tab.svg @@ -0,0 +1,75 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + diff --git a/Sources/webAduc/www/site.webmanifest b/Sources/webAduc/www/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/Sources/webAduc/www/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/Sources/webAduc/www/sitebrowser/class.db.php b/Sources/webAduc/www/sitebrowser/class.db.php new file mode 100644 index 0000000..639817c --- /dev/null +++ b/Sources/webAduc/www/sitebrowser/class.db.php @@ -0,0 +1,1082 @@ +query('UPDATE table SET value = 1 WHERE id = ?', array(1)); +// get all results as array +$db->all('SELECT * FROM table WHERE id = ?', array(1), "array_key", bool_skip_key, "assoc"/"num"); +// get one result +$db->one('SELECT * FROM table WHERE id = ?', array(1), "assoc"/"num"); +// get a traversable object to pass to foreach, or use count(), or use direct access: [INDEX] +$db->get('SELECT * FROM table WHERE id = ?', array(1), "assoc"/"num")[1]; +*/ + +namespace +{ + class db + { + private function __construct() { + } + public function __clone() { + throw new \vakata\database\Exception('Cannot clone static DB'); + } + public static function get($settings = null) { + return new \vakata\database\DBC($settings); + } + public static function getc($settings = null, \vakata\cache\ICache $c = null) { + if($c === null) { $c = \vakata\cache\cache::inst(); } + return new \vakata\database\DBCCached($settings, $c); + } + } +} + +namespace vakata\database +{ + class Exception extends \Exception + { + } + + class Settings + { + public $type = null; + public $username = 'root'; + public $password = null; + public $database = null; + public $servername = 'localhost'; + public $serverport = null; + public $persist = false; + public $timezone = null; + public $charset = 'UTF8'; + + public function __construct($settings) { + $str = parse_url($settings); + if(!$str) { + throw new Exception('Malformed DB settings string: ' . $settings); + } + if(array_key_exists('scheme',$str)) { + $this->type = rawurldecode($str['scheme']); + } + if(array_key_exists('user',$str)) { + $this->username = rawurldecode($str['user']); + } + if(array_key_exists('pass',$str)) { + $this->password = rawurldecode($str['pass']); + } + if(array_key_exists('path',$str)) { + $this->database = trim(rawurldecode($str['path']),'/'); + } + if(array_key_exists('host',$str)) { + $this->servername = rawurldecode($str['host']); + } + if(array_key_exists('port',$str)) { + $this->serverport = rawurldecode($str['port']); + } + if(array_key_exists('query',$str)) { + parse_str($str['query'], $str); + $this->persist = (array_key_exists('persist', $str) && $str['persist'] === 'TRUE'); + if(array_key_exists('charset', $str)) { + $this->charset = $str['charset']; + } + if(array_key_exists('timezone', $str)) { + $this->timezone = $str['timezone']; + } + } + } + } + + interface IDB + { + public function connect(); + public function query($sql, $vars); + public function get($sql, $data, $key, $skip_key, $mode); + public function all($sql, $data, $key, $skip_key, $mode); + public function one($sql, $data, $mode); + public function raw($sql); + public function prepare($sql); + public function execute($data); + public function disconnect(); + } + + interface IDriver + { + public function prepare($sql); + public function execute($data); + public function query($sql, $data); + public function nextr($result); + public function seek($result, $row); + public function nf($result); + public function af(); + public function insert_id(); + public function real_query($sql); + public function get_settings(); + } + + abstract class ADriver implements IDriver + { + protected $lnk = null; + protected $settings = null; + + public function __construct(Settings $settings) { + $this->settings = $settings; + } + public function __destruct() { + if($this->is_connected()) { + $this->disconnect(); + } + } + public function get_settings() { + return $this->settings; + } + + public function connect() { + } + public function is_connected() { + return $this->lnk !== null; + } + public function disconnect() { + } + public function query($sql, $data = array()) { + return $this->execute($this->prepare($sql), $data); + } + public function prepare($sql) { + if(!$this->is_connected()) { $this->connect(); } + return $sql; + } + public function execute($sql, $data = array()) { + if(!$this->is_connected()) { $this->connect(); } + if(!is_array($data)) { $data = array(); } + $binder = '?'; + if(strpos($sql, $binder) !== false && is_array($data) && count($data)) { + $tmp = explode($binder, $sql); + if(!is_array($data)) { $data = array($data); } + $data = array_values($data); + if(count($data) >= count($tmp)) { $data = array_slice($data, 0, count($tmp)-1); } + $sql = $tmp[0]; + foreach($data as $i => $v) { + $sql .= $this->escape($v) . $tmp[($i + 1)]; + } + } + return $this->real_query($sql); + } + + public function real_query($sql) { + if(!$this->is_connected()) { $this->connect(); } + } + protected function escape($input) { + if(is_array($input)) { + foreach($input as $k => $v) { + $input[$k] = $this->escape($v); + } + return implode(',',$input); + } + if(is_string($input)) { + $input = addslashes($input); + return "'".$input."'"; + } + if(is_bool($input)) { + return $input === false ? 0 : 1; + } + if(is_null($input)) { + return 'NULL'; + } + return $input; + } + + public function nextr($result) {} + public function nf($result) {} + public function af() {} + public function insert_id() {} + public function seek($result, $row) {} + } + + class Result implements \Iterator, \ArrayAccess, \Countable + { + protected $all = null; + protected $rdy = false; + protected $rslt = null; + protected $mode = null; + protected $fake = null; + protected $skip = false; + + protected $fake_key = 0; + protected $real_key = 0; + public function __construct(Query $rslt, $key = null, $skip_key = false, $mode = 'assoc') { + $this->rslt = $rslt; + $this->mode = $mode; + $this->fake = $key; + $this->skip = $skip_key; + } + public function count() { + return $this->rdy ? count($this->all) : $this->rslt->nf(); + } + public function current() { + if(!$this->count()) { + return null; + } + if($this->rdy) { + return current($this->all); + } + $tmp = $this->rslt->row(); + $row = array(); + switch($this->mode) { + case 'num': + foreach($tmp as $k => $v) { + if(is_int($k)) { + $row[$k] = $v; + } + } + break; + case 'both': + $row = $tmp; + break; + case 'assoc': + default: + foreach($tmp as $k => $v) { + if(!is_int($k)) { + $row[$k] = $v; + } + } + break; + } + if($this->fake) { + $this->fake_key = $row[$this->fake]; + } + if($this->skip) { + unset($row[$this->fake]); + } + if(is_array($row) && count($row) === 1) { + $row = current($row); + } + return $row; + } + public function key() { + if($this->rdy) { + return key($this->all); + } + return $this->fake ? $this->fake_key : $this->real_key; + } + public function next() { + if($this->rdy) { + return next($this->all); + } + $this->rslt->nextr(); + $this->real_key++; + } + public function rewind() { + if($this->rdy) { + return reset($this->all); + } + if($this->real_key !== null) { + $this->rslt->seek(($this->real_key = 0)); + } + $this->rslt->nextr(); + } + public function valid() { + if($this->rdy) { + return current($this->all) !== false; + } + return $this->rslt->row() !== false && $this->rslt->row() !== null; + } + + public function one() { + $this->rewind(); + return $this->current(); + } + public function get() { + if(!$this->rdy) { + $this->all = array(); + foreach($this as $k => $v) { + $this->all[$k] = $v; + } + $this->rdy = true; + } + return $this->all; + } + public function offsetExists($offset) { + if($this->rdy) { + return isset($this->all[$offset]); + } + if($this->fake === null) { + return $this->rslt->seek(($this->real_key = $offset)); + } + $this->get(); + return isset($this->all[$offset]); + } + public function offsetGet($offset) { + if($this->rdy) { + return $this->all[$offset]; + } + if($this->fake === null) { + $this->rslt->seek(($this->real_key = $offset)); + $this->rslt->nextr(); + return $this->current(); + } + $this->get(); + return $this->all[$offset]; + } + public function offsetSet ($offset, $value ) { + throw new Exception('Cannot set result'); + } + public function offsetUnset ($offset) { + throw new Exception('Cannot unset result'); + } + public function __sleep() { + $this->get(); + return array('all', 'rdy', 'mode', 'fake', 'skip'); + } + public function __toString() { + return print_r($this->get(), true); + } + } + + class Query + { + protected $drv = null; + protected $sql = null; + protected $prp = null; + protected $rsl = null; + protected $row = null; + protected $num = null; + protected $aff = null; + protected $iid = null; + + public function __construct(IDriver $drv, $sql) { + $this->drv = $drv; + $this->sql = $sql; + $this->prp = $this->drv->prepare($sql); + } + public function execute($vars = array()) { + $this->rsl = $this->drv->execute($this->prp, $vars); + $this->num = (is_object($this->rsl) || is_resource($this->rsl)) && is_callable(array($this->drv, 'nf')) ? (int)@$this->drv->nf($this->rsl) : 0; + $this->aff = $this->drv->af(); + $this->iid = $this->drv->insert_id(); + return $this; + } + public function result($key = null, $skip_key = false, $mode = 'assoc') { + return new Result($this, $key, $skip_key, $mode); + } + public function row() { + return $this->row; + } + public function f($field) { + return $this->row[$field]; + } + public function nextr() { + $this->row = $this->drv->nextr($this->rsl); + return $this->row !== false && $this->row !== null; + } + public function seek($offset) { + return @$this->drv->seek($this->rsl, $offset) ? true : false; + } + public function nf() { + return $this->num; + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + } + + class DBC implements IDB + { + protected $drv = null; + protected $que = null; + + public function __construct($drv = null) { + if(!$drv && defined('DATABASE')) { + $drv = DATABASE; + } + if(!$drv) { + $this->error('Could not create database (no settings)'); + } + if(is_string($drv)) { + $drv = new \vakata\database\Settings($drv); + } + if($drv instanceof Settings) { + $tmp = '\\vakata\\database\\' . $drv->type . '_driver'; + if(!class_exists($tmp)) { + $this->error('Could not create database (no driver: '.$drv->type.')'); + } + $drv = new $tmp($drv); + } + if(!($drv instanceof IDriver)) { + $this->error('Could not create database - wrong driver'); + } + $this->drv = $drv; + } + + public function connect() { + if(!$this->drv->is_connected()) { + try { + $this->drv->connect(); + } + catch (Exception $e) { + $this->error($e->getMessage(), 1); + } + } + return true; + } + public function disconnect() { + if($this->drv->is_connected()) { + $this->drv->disconnect(); + } + } + + public function prepare($sql) { + try { + $this->que = new Query($this->drv, $sql); + return $this->que; + } catch (Exception $e) { + $this->error($e->getMessage(), 2); + } + } + public function execute($data = array()) { + try { + return $this->que->execute($data); + } catch (Exception $e) { + $this->error($e->getMessage(), 3); + } + } + public function query($sql, $data = array()) { + try { + $this->que = new Query($this->drv, $sql); + return $this->que->execute($data); + } + catch (Exception $e) { + $this->error($e->getMessage(), 4); + } + } + public function get($sql, $data = array(), $key = null, $skip_key = false, $mode = 'assoc') { + return $this->query($sql, $data)->result($key, $skip_key, $mode); + } + public function all($sql, $data = array(), $key = null, $skip_key = false, $mode = 'assoc') { + return $this->get($sql, $data, $key, $skip_key, $mode)->get(); + } + public function one($sql, $data = array(), $mode = 'assoc') { + return $this->query($sql, $data)->result(null, false, $mode)->one(); + } + public function raw($sql) { + return $this->drv->real_query($sql); + } + public function get_driver() { + return $this->drv->get_settings()->type; + } + + public function __call($method, $args) { + if($this->que && is_callable(array($this->que, $method))) { + try { + return call_user_func_array(array($this->que, $method), $args); + } catch (Exception $e) { + $this->error($e->getMessage(), 5); + } + } + } + + protected final function error($error = '') { + $dirnm = defined('LOGROOT') ? LOGROOT : realpath(dirname(__FILE__)); + @file_put_contents( + $dirnm . DIRECTORY_SEPARATOR . '_errors_sql.log', + '[' . date('d-M-Y H:i:s') . '] ' . $this->settings->type . ' > ' . preg_replace("@[\s\r\n\t]+@", ' ', $error) . "\n", + FILE_APPEND + ); + throw new Exception($error); + } + } + + class DBCCached extends DBC + { + protected $cache_inst = null; + protected $cache_nmsp = null; + public function __construct($settings = null, \vakata\cache\ICache $c = null) { + parent::__construct($settings); + $this->cache_inst = $c; + $this->cache_nmsp = 'DBCCached_' . md5(serialize($this->drv->get_settings())); + } + public function cache($expires, $sql, $data = array(), $key = null, $skip_key = false, $mode = 'assoc') { + $arg = func_get_args(); + array_shift($arg); + $key = md5(serialize($arg)); + if(!$this->cache_inst) { + return call_user_func_array(array($this, 'all'), $arg); + } + + $tmp = $this->cache_inst->get($key, $this->cache_nmsp); + if(!$tmp) { + $this->cache_inst->prep($key, $this->cache_nmsp); + $tmp = call_user_func_array(array($this, 'all'), $arg); + $this->cache_inst->set($key, $tmp, $this->cache_nmsp, $expires); + } + return $tmp; + } + public function clear() { + if($this->cache_inst) { + $this->cache_inst->clear($this->cache_nmsp); + } + } + } + + class mysqli_driver extends ADriver + { + protected $iid = 0; + protected $aff = 0; + protected $mnd = false; + + public function __construct($settings) { + parent::__construct($settings); + if(!$this->settings->serverport) { $this->settings->serverport = 3306; } + $this->mnd = function_exists('mysqli_fetch_all'); + } + + public function connect() { + $this->lnk = new \mysqli( + ($this->settings->persist ? 'p:' : '') . $this->settings->servername, + $this->settings->username, + $this->settings->password, + $this->settings->database, + $this->settings->serverport + ); + if($this->lnk->connect_errno) { + throw new Exception('Connect error: ' . $this->lnk->connect_errno); + } + if(!$this->lnk->set_charset($this->settings->charset)) { + throw new Exception('Charset error: ' . $this->lnk->connect_errno); + } + if($this->settings->timezone) { + @$this->lnk->query("SET time_zone = '" . addslashes($this->settings->timezone) . "'"); + } + return true; + } + public function disconnect() { + if($this->is_connected()) { + @$this->lnk->close(); + } + } + public function real_query($sql) { + if(!$this->is_connected()) { $this->connect(); } + $temp = $this->lnk->query($sql); + if(!$temp) { + throw new Exception('Could not execute query : ' . $this->lnk->error . ' <'.$sql.'>'); + } + $this->iid = $this->lnk->insert_id; + $this->aff = $this->lnk->affected_rows; + return $temp; + } + public function nextr($result) { + if($this->mnd) { + return $result->fetch_array(MYSQLI_BOTH); + } + else { + $ref = $result->result_metadata(); + if(!$ref) { return false; } + $tmp = mysqli_fetch_fields($ref); + if(!$tmp) { return false; } + $ref = array(); + foreach($tmp as $col) { $ref[$col->name] = null; } + $tmp = array(); + foreach($ref as $k => $v) { $tmp[] =& $ref[$k]; } + if(!call_user_func_array(array($result, 'bind_result'), $tmp)) { return false; } + if(!$result->fetch()) { return false; } + $tmp = array(); + $i = 0; + foreach($ref as $k => $v) { $tmp[$i++] = $v; $tmp[$k] = $v; } + return $tmp; + } + } + public function seek($result, $row) { + $temp = $result->data_seek($row); + return $temp; + } + public function nf($result) { + return $result->num_rows; + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + public function prepare($sql) { + if(!$this->is_connected()) { $this->connect(); } + $temp = $this->lnk->prepare($sql); + if(!$temp) { + throw new Exception('Could not prepare : ' . $this->lnk->error . ' <'.$sql.'>'); + } + return $temp; + } + public function execute($sql, $data = array()) { + if(!$this->is_connected()) { $this->connect(); } + if(!is_array($data)) { $data = array(); } + if(is_string($sql)) { + return parent::execute($sql, $data); + } + + $data = array_values($data); + if($sql->param_count) { + if(count($data) < $sql->param_count) { + throw new Exception('Prepared execute - not enough parameters.'); + } + $ref = array(''); + foreach($data as $i => $v) { + switch(gettype($v)) { + case "boolean": + case "integer": + $data[$i] = (int)$v; + $ref[0] .= 'i'; + $ref[$i+1] =& $data[$i]; + break; + case "double": + $ref[0] .= 'd'; + $ref[$i+1] =& $data[$i]; + break; + case "array": + $data[$i] = implode(',',$v); + $ref[0] .= 's'; + $ref[$i+1] =& $data[$i]; + break; + case "object": + case "resource": + $data[$i] = serialize($data[$i]); + $ref[0] .= 's'; + $ref[$i+1] =& $data[$i]; + break; + default: + $ref[0] .= 's'; + $ref[$i+1] =& $data[$i]; + break; + } + } + call_user_func_array(array($sql, 'bind_param'), $ref); + } + $rtrn = $sql->execute(); + if(!$this->mnd) { + $sql->store_result(); + } + if(!$rtrn) { + throw new Exception('Prepared execute error : ' . $this->lnk->error); + } + $this->iid = $this->lnk->insert_id; + $this->aff = $this->lnk->affected_rows; + if(!$this->mnd) { + return $sql->field_count ? $sql : $rtrn; + } + else { + return $sql->field_count ? $sql->get_result() : $rtrn; + } + } + + protected function escape($input) { + if(is_array($input)) { + foreach($input as $k => $v) { + $input[$k] = $this->escape($v); + } + return implode(',',$input); + } + if(is_string($input)) { + $input = $this->lnk->real_escape_string($input); + return "'".$input."'"; + } + if(is_bool($input)) { + return $input === false ? 0 : 1; + } + if(is_null($input)) { + return 'NULL'; + } + return $input; + } + } + + class mysql_driver extends ADriver + { + protected $iid = 0; + protected $aff = 0; + public function __construct($settings) { + parent::__construct($settings); + if(!$this->settings->serverport) { $this->settings->serverport = 3306; } + } + public function connect() { + $this->lnk = ($this->settings->persist) ? + @mysql_pconnect( + $this->settings->servername.':'.$this->settings->serverport, + $this->settings->username, + $this->settings->password + ) : + @mysql_connect( + $this->settings->servername.':'.$this->settings->serverport, + $this->settings->username, + $this->settings->password + ); + + if($this->lnk === false || !mysql_select_db($this->settings->database, $this->lnk) || !mysql_query("SET NAMES '".$this->settings->charset."'", $this->lnk)) { + throw new Exception('Connect error: ' . mysql_error()); + } + if($this->settings->timezone) { + @mysql_query("SET time_zone = '" . addslashes($this->settings->timezone) . "'", $this->lnk); + } + return true; + } + public function disconnect() { + if(is_resource($this->lnk)) { + mysql_close($this->lnk); + } + } + + public function real_query($sql) { + if(!$this->is_connected()) { $this->connect(); } + $temp = mysql_query($sql, $this->lnk); + if(!$temp) { + throw new Exception('Could not execute query : ' . mysql_error($this->lnk) . ' <'.$sql.'>'); + } + $this->iid = mysql_insert_id($this->lnk); + $this->aff = mysql_affected_rows($this->lnk); + return $temp; + } + public function nextr($result) { + return mysql_fetch_array($result, MYSQL_BOTH); + } + public function seek($result, $row) { + $temp = @mysql_data_seek($result, $row); + if(!$temp) { + //throw new Exception('Could not seek : ' . mysql_error($this->lnk)); + } + return $temp; + } + public function nf($result) { + return mysql_num_rows($result); + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + + protected function escape($input) { + if(is_array($input)) { + foreach($input as $k => $v) { + $input[$k] = $this->escape($v); + } + return implode(',',$input); + } + if(is_string($input)) { + $input = mysql_real_escape_string($input, $this->lnk); + return "'".$input."'"; + } + if(is_bool($input)) { + return $input === false ? 0 : 1; + } + if(is_null($input)) { + return 'NULL'; + } + return $input; + } + } + + class postgre_driver extends ADriver + { + protected $iid = 0; + protected $aff = 0; + public function __construct($settings) { + parent::__construct($settings); + if(!$this->settings->serverport) { $this->settings->serverport = 5432; } + } + public function connect() { + $this->lnk = ($this->settings->persist) ? + @pg_pconnect( + "host=" . $this->settings->servername . " " . + "port=" . $this->settings->serverport . " " . + "user=" . $this->settings->username . " " . + "password=" . $this->settings->password . " " . + "dbname=" . $this->settings->database . " " . + "options='--client_encoding=".strtoupper($this->settings->charset)."' " + ) : + @pg_connect( + "host=" . $this->settings->servername . " " . + "port=" . $this->settings->serverport . " " . + "user=" . $this->settings->username . " " . + "password=" . $this->settings->password . " " . + "dbname=" . $this->settings->database . " " . + "options='--client_encoding=".strtoupper($this->settings->charset)."' " + ); + if($this->lnk === false) { + throw new Exception('Connect error'); + } + if($this->settings->timezone) { + @pg_query($this->lnk, "SET TIME ZONE '".addslashes($this->settings->timezone)."'"); + } + return true; + } + public function disconnect() { + if(is_resource($this->lnk)) { + pg_close($this->lnk); + } + } + public function real_query($sql) { + return $this->query($sql); + } + public function prepare($sql) { + if(!$this->is_connected()) { $this->connect(); } + $binder = '?'; + if(strpos($sql, $binder) !== false) { + $tmp = explode($binder, $sql); + $sql = $tmp[0]; + foreach($tmp as $i => $v) { + $sql .= '$' . ($i + 1); + if(isset($tmp[($i + 1)])) { + $sql .= $tmp[($i + 1)]; + } + } + } + return $sql; + } + public function execute($sql, $data = array()) { + if(!$this->is_connected()) { $this->connect(); } + if(!is_array($data)) { $data = array(); } + $temp = (is_array($data) && count($data)) ? pg_query_params($this->lnk, $sql, $data) : pg_query_params($this->lnk, $sql, array()); + if(!$temp) { + throw new Exception('Could not execute query : ' . pg_last_error($this->lnk) . ' <'.$sql.'>'); + } + if(preg_match('@^\s*(INSERT|REPLACE)\s+INTO@i', $sql)) { + $this->iid = pg_query($this->lnk, 'SELECT lastval()'); + $this->aff = pg_affected_rows($temp); + } + return $temp; + } + + public function nextr($result) { + return pg_fetch_array($result, NULL, PGSQL_BOTH); + } + public function seek($result, $row) { + $temp = @pg_result_seek($result, $row); + if(!$temp) { + //throw new Exception('Could not seek : ' . pg_last_error($this->lnk)); + } + return $temp; + } + public function nf($result) { + return pg_num_rows($result); + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + + // Функция mysql_query? + // - http://okbob.blogspot.com/2009/08/mysql-functions-for-postgresql.html + // - http://www.xach.com/aolserver/mysql-to-postgresql.html + // - REPLACE unixtimestamp / limit / curdate + } + + class oracle_driver extends ADriver + { + protected $iid = 0; + protected $aff = 0; + + public function connect() { + $this->lnk = ($this->settings->persist) ? + @oci_pconnect($this->settings->username, $this->settings->password, $this->settings->servername, $this->settings->charset) : + @oci_connect ($this->settings->username, $this->settings->password, $this->settings->servername, $this->settings->charset); + if($this->lnk === false) { + throw new Exception('Connect error : ' . oci_error()); + } + if($this->settings->timezone) { + $this->real_query("ALTER session SET time_zone = '" . addslashes($this->settings->timezone) . "'"); + } + return true; + } + public function disconnect() { + if(is_resource($this->lnk)) { + oci_close($this->lnk); + } + } + public function real_query($sql) { + if(!$this->is_connected()) { $this->connect(); } + $temp = oci_parse($this->lnk, $sql); + if(!$temp || !oci_execute($temp)) { + throw new Exception('Could not execute real query : ' . oci_error($temp)); + } + $this->aff = oci_num_rows($temp); + return $temp; + } + + public function prepare($sql) { + if(!$this->is_connected()) { $this->connect(); } + $binder = '?'; + if(strpos($sql, $binder) !== false && $vars !== false) { + $tmp = explode($this->binder, $sql); + $sql = $tmp[0]; + foreach($tmp as $i => $v) { + $sql .= ':f' . $i; + if(isset($tmp[($i + 1)])) { + $sql .= $tmp[($i + 1)]; + } + } + } + return oci_parse($this->lnk, $sql); + } + public function execute($sql, $data = array()) { + if(!$this->is_connected()) { $this->connect(); } + if(!is_array($data)) { $data = array(); } + $data = array_values($data); + foreach($data as $i => $v) { + switch(gettype($v)) { + case "boolean": + case "integer": + $data[$i] = (int)$v; + oci_bind_by_name($sql, 'f'.$i, $data[$i], SQLT_INT); + break; + case "array": + $data[$i] = implode(',',$v); + oci_bind_by_name($sql, 'f'.$i, $data[$i]); + break; + case "object": + case "resource": + $data[$i] = serialize($data[$i]); + oci_bind_by_name($sql, 'f'.$i, $data[$i]); + break; + default: + oci_bind_by_name($sql, 'f'.$i, $data[$i]); + break; + } + } + $temp = oci_execute($sql); + if(!$temp) { + throw new Exception('Could not execute query : ' . oci_error($sql)); + } + $this->aff = oci_num_rows($sql); + + /* TO DO: get iid + if(!$seqname) { return $this->error('INSERT_ID not supported with no sequence.'); } + $stm = oci_parse($this->link, 'SELECT '.strtoupper(str_replace("'",'',$seqname)).'.CURRVAL FROM DUAL'); + oci_execute($stm, $sql); + $tmp = oci_fetch_array($stm); + $tmp = $tmp[0]; + oci_free_statement($stm); + */ + return $sql; + } + public function nextr($result) { + return oci_fetch_array($result, OCI_BOTH); + } + public function seek($result, $row) { + $cnt = 0; + while($cnt < $row) { + if(oci_fetch_array($result, OCI_BOTH) === false) { + return false; + } + $cnt++; + } + return true; + } + public function nf($result) { + return oci_num_rows($result); + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + } + + class ibase_driver extends ADriver + { + protected $iid = 0; + protected $aff = 0; + public function __construct($settings) { + parent::__construct($settings); + if(!is_file($this->settings->database) && is_file('/'.$this->settings->database)) { + $this->settings->database = '/'.$this->settings->database; + } + $this->settings->servername = ($this->settings->servername === 'localhost' || $this->settings->servername === '127.0.0.1' || $this->settings->servername === '') ? + '' : + $this->settings->servername . ':'; + } + public function connect() { + $this->lnk = ($this->settings->persist) ? + @ibase_pconnect( + $this->settings->servername . $this->settings->database, + $this->settings->username, + $this->settings->password, + strtoupper($this->settings->charset) + ) : + @ibase_connect( + $this->settings->servername . $this->settings->database, + $this->settings->username, + $this->settings->password, + strtoupper($this->settings->charset) + ); + if($this->lnk === false) { + throw new Exception('Connect error: ' . ibase_errmsg()); + } + return true; + } + public function disconnect() { + if(is_resource($this->lnk)) { + ibase_close($this->lnk); + } + } + + public function real_query($sql) { + if(!$this->is_connected()) { $this->connect(); } + $temp = ibase_query($sql, $this->lnk); + if(!$temp) { + throw new Exception('Could not execute query : ' . ibase_errmsg() . ' <'.$sql.'>'); + } + //$this->iid = mysql_insert_id($this->lnk); + $this->aff = ibase_affected_rows($this->lnk); + return $temp; + } + public function prepare($sql) { + if(!$this->is_connected()) { $this->connect(); } + return ibase_prepare($this->lnk, $sql); + } + public function execute($sql, $data = array()) { + if(!$this->is_connected()) { $this->connect(); } + if(!is_array($data)) { $data = array(); } + $data = array_values($data); + foreach($data as $i => $v) { + switch(gettype($v)) { + case "boolean": + case "integer": + $data[$i] = (int)$v; + break; + case "array": + $data[$i] = implode(',',$v); + break; + case "object": + case "resource": + $data[$i] = serialize($data[$i]); + break; + } + } + array_unshift($data, $sql); + $temp = call_user_func_array("ibase_execute", $data); + if(!$temp) { + throw new Exception('Could not execute query : ' . ibase_errmsg() . ' <'.$sql.'>'); + } + $this->aff = ibase_affected_rows($this->lnk); + return $temp; + } + public function nextr($result) { + return ibase_fetch_assoc($result, IBASE_TEXT); + } + public function seek($result, $row) { + return false; + } + public function nf($result) { + return false; + } + public function af() { + return $this->aff; + } + public function insert_id() { + return $this->iid; + } + } +} diff --git a/Sources/webAduc/www/sitebrowser/class.tree.php b/Sources/webAduc/www/sitebrowser/class.tree.php new file mode 100644 index 0000000..3658d77 --- /dev/null +++ b/Sources/webAduc/www/sitebrowser/class.tree.php @@ -0,0 +1,986 @@ + 'structure', // the structure table (containing the id, left, right, level, parent_id and position fields) + 'data_table' => 'structure', // table for additional fields (apart from structure ones, can be the same as structure_table) + 'data2structure' => 'id', // which field from the data table maps to the structure table + 'structure' => array( // which field (value) maps to what in the structure (key) + 'id' => 'id', + 'left' => 'lft', + 'right' => 'rgt', + 'level' => 'lvl', + 'parent_id' => 'pid', + 'position' => 'pos' + ), + 'data' => array() // array of additional fields from the data table + ); + + public function __construct(\vakata\database\IDB $db, array $options = array()) { + $this->db = $db; + $this->options = array_merge($this->default, $options); + } + + public function get_node($id, $options = array()) { + $node = $this->db->one(" + SELECT + s.".implode(", s.", $this->options['structure']).", + d.".implode(", d.", $this->options['data'])." + FROM + ".$this->options['structure_table']." s, + ".$this->options['data_table']." d + WHERE + s.".$this->options['structure']['id']." = d.".$this->options['data2structure']." AND + s.".$this->options['structure']['id']." = ".(int)$id + ); + if(!$node) { + throw new Exception('Node does not exist'); + } + if(isset($options['with_children'])) { + $node['children'] = $this->get_children($id, isset($options['deep_children'])); + } + if(isset($options['with_path'])) { + $node['path'] = $this->get_path($id); + } + return $node; + } + + public function get_children($id, $recursive = false) { + $sql = false; + if($recursive) { + $node = $this->get_node($id); + $sql = " + SELECT + s.".implode(", s.", $this->options['structure']).", + d.".implode(", d.", $this->options['data'])." + FROM + ".$this->options['structure_table']." s, + ".$this->options['data_table']." d + WHERE + s.".$this->options['structure']['id']." = d.".$this->options['data2structure']." AND + s.".$this->options['structure']['left']." > ".(int)$node[$this->options['structure']['left']]." AND + s.".$this->options['structure']['right']." < ".(int)$node[$this->options['structure']['right']]." + ORDER BY + s.".$this->options['structure']['left']." + "; + } + else { + $sql = " + SELECT + s.".implode(", s.", $this->options['structure']).", + d.".implode(", d.", $this->options['data'])." + FROM + ".$this->options['structure_table']." s, + ".$this->options['data_table']." d + WHERE + s.".$this->options['structure']['id']." = d.".$this->options['data2structure']." AND + s.".$this->options['structure']['parent_id']." = ".(int)$id." + ORDER BY + s.".$this->options['structure']['position']." + "; + } + return $this->db->all($sql); + } + + public function get_path($id) { + $node = $this->get_node($id); + $sql = false; + if($node) { + $sql = " + SELECT + s.".implode(", s.", $this->options['structure']).", + d.".implode(", d.", $this->options['data'])." + FROM + ".$this->options['structure_table']." s, + ".$this->options['data_table']." d + WHERE + s.".$this->options['structure']['id']." = d.".$this->options['data2structure']." AND + s.".$this->options['structure']['left']." < ".(int)$node[$this->options['structure']['left']]." AND + s.".$this->options['structure']['right']." > ".(int)$node[$this->options['structure']['right']]." + ORDER BY + s.".$this->options['structure']['left']." + "; + } + return $sql ? $this->db->all($sql) : false; + } + + public function mk($parent, $position = 0, $data = array()) { + $parent = (int)$parent; + if($parent == 0) { throw new Exception('Parent is 0'); } + $parent = $this->get_node($parent, array('with_children'=> true)); + if(!$parent['children']) { $position = 0; } + if($parent['children'] && $position >= count($parent['children'])) { $position = count($parent['children']); } + + $sql = array(); + $par = array(); + + // PREPARE NEW PARENT + // update positions of all next elements + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$this->options['structure']["position"]." + 1 + WHERE + ".$this->options['structure']["parent_id"]." = ".(int)$parent[$this->options['structure']['id']]." AND + ".$this->options['structure']["position"]." >= ".$position." + "; + $par[] = false; + + // update left indexes + $ref_lft = false; + if(!$parent['children']) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else { + $ref_lft = $parent['children'][(int)$position][$this->options['structure']["left"]]; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." + 2 + WHERE + ".$this->options['structure']["left"]." >= ".(int)$ref_lft." + "; + $par[] = false; + + // update right indexes + $ref_rgt = false; + if(!$parent['children']) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else { + $ref_rgt = $parent['children'][(int)$position][$this->options['structure']["left"]] + 1; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." + 2 + WHERE + ".$this->options['structure']["right"]." >= ".(int)$ref_rgt." + "; + $par[] = false; + + // INSERT NEW NODE IN STRUCTURE + $sql[] = "INSERT INTO ".$this->options['structure_table']." (".implode(",", $this->options['structure']).") VALUES (?".str_repeat(',?', count($this->options['structure']) - 1).")"; + $tmp = array(); + foreach($this->options['structure'] as $k => $v) { + switch($k) { + case 'id': + $tmp[] = null; + break; + case 'left': + $tmp[] = (int)$ref_lft; + break; + case 'right': + $tmp[] = (int)$ref_lft + 1; + break; + case 'level': + $tmp[] = (int)$parent[$v] + 1; + break; + case 'parent_id': + $tmp[] = $parent[$this->options['structure']['id']]; + break; + case 'position': + $tmp[] = $position; + break; + default: + $tmp[] = null; + } + } + $par[] = $tmp; + + foreach($sql as $k => $v) { + try { + $this->db->query($v, $par[$k]); + } catch(Exception $e) { + $this->reconstruct(); + throw new Exception('Could not create'); + } + } + if($data && count($data)) { + $node = $this->db->insert_id(); + if(!$this->rn($node,$data)) { + $this->rm($node); + throw new Exception('Could not rename after create'); + } + } + return $node; + } + + public function mv($id, $parent, $position = 0) { + $id = (int)$id; + $parent = (int)$parent; + if($parent == 0 || $id == 0 || $id == 1) { + throw new Exception('Cannot move inside 0, or move root node'); + } + + $parent = $this->get_node($parent, array('with_children'=> true, 'with_path' => true)); + $id = $this->get_node($id, array('with_children'=> true, 'deep_children' => true, 'with_path' => true)); + if(!$parent['children']) { + $position = 0; + } + if($id[$this->options['structure']['parent_id']] == $parent[$this->options['structure']['id']] && $position > $id[$this->options['structure']['position']]) { + $position ++; + } + if($parent['children'] && $position >= count($parent['children'])) { + $position = count($parent['children']); + } + if($id[$this->options['structure']['left']] < $parent[$this->options['structure']['left']] && $id[$this->options['structure']['right']] > $parent[$this->options['structure']['right']]) { + throw new Exception('Could not move parent inside child'); + } + + $tmp = array(); + $tmp[] = (int)$id[$this->options['structure']["id"]]; + if($id['children'] && is_array($id['children'])) { + foreach($id['children'] as $c) { + $tmp[] = (int)$c[$this->options['structure']["id"]]; + } + } + $width = (int)$id[$this->options['structure']["right"]] - (int)$id[$this->options['structure']["left"]] + 1; + + $sql = array(); + + // PREPARE NEW PARENT + // update positions of all next elements + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$this->options['structure']["position"]." + 1 + WHERE + ".$this->options['structure']["id"]." != ".(int)$id[$this->options['structure']['id']]." AND + ".$this->options['structure']["parent_id"]." = ".(int)$parent[$this->options['structure']['id']]." AND + ".$this->options['structure']["position"]." >= ".$position." + "; + + // update left indexes + $ref_lft = false; + if(!$parent['children']) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else { + $ref_lft = $parent['children'][(int)$position][$this->options['structure']["left"]]; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." + ".$width." + WHERE + ".$this->options['structure']["left"]." >= ".(int)$ref_lft." AND + ".$this->options['structure']["id"]." NOT IN(".implode(',',$tmp).") + "; + // update right indexes + $ref_rgt = false; + if(!$parent['children']) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else { + $ref_rgt = $parent['children'][(int)$position][$this->options['structure']["left"]] + 1; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." + ".$width." + WHERE + ".$this->options['structure']["right"]." >= ".(int)$ref_rgt." AND + ".$this->options['structure']["id"]." NOT IN(".implode(',',$tmp).") + "; + + // MOVE THE ELEMENT AND CHILDREN + // left, right and level + $diff = $ref_lft - (int)$id[$this->options['structure']["left"]]; + + if($diff > 0) { $diff = $diff - $width; } + $ldiff = ((int)$parent[$this->options['structure']['level']] + 1) - (int)$id[$this->options['structure']['level']]; + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." + ".$diff.", + ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." + ".$diff.", + ".$this->options['structure']["level"]." = ".$this->options['structure']["level"]." + ".$ldiff." + WHERE ".$this->options['structure']["id"]." IN(".implode(',',$tmp).") + "; + // position and parent_id + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$position.", + ".$this->options['structure']["parent_id"]." = ".(int)$parent[$this->options['structure']["id"]]." + WHERE ".$this->options['structure']["id"]." = ".(int)$id[$this->options['structure']['id']]." + "; + + // CLEAN OLD PARENT + // position of all next elements + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$this->options['structure']["position"]." - 1 + WHERE + ".$this->options['structure']["parent_id"]." = ".(int)$id[$this->options['structure']["parent_id"]]." AND + ".$this->options['structure']["position"]." > ".(int)$id[$this->options['structure']["position"]]; + // left indexes + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." - ".$width." + WHERE + ".$this->options['structure']["left"]." > ".(int)$id[$this->options['structure']["right"]]." AND + ".$this->options['structure']["id"]." NOT IN(".implode(',',$tmp).") + "; + // right indexes + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." - ".$width." + WHERE + ".$this->options['structure']["right"]." > ".(int)$id[$this->options['structure']["right"]]." AND + ".$this->options['structure']["id"]." NOT IN(".implode(',',$tmp).") + "; + + foreach($sql as $k => $v) { + //echo preg_replace('@[\s\t]+@',' ',$v) ."\n"; + try { + $this->db->query($v); + } catch(Exception $e) { + $this->reconstruct(); + throw new Exception('Error moving'); + } + } + return true; + } + + public function cp($id, $parent, $position = 0) { + $id = (int)$id; + $parent = (int)$parent; + if($parent == 0 || $id == 0 || $id == 1) { + throw new Exception('Could not copy inside parent 0, or copy root nodes'); + } + + $parent = $this->get_node($parent, array('with_children'=> true, 'with_path' => true)); + $id = $this->get_node($id, array('with_children'=> true, 'deep_children' => true, 'with_path' => true)); + $old_nodes = $this->db->get(" + SELECT * FROM ".$this->options['structure_table']." + WHERE ".$this->options['structure']["left"]." > ".$id[$this->options['structure']["left"]]." AND ".$this->options['structure']["right"]." < ".$id[$this->options['structure']["right"]]." + ORDER BY ".$this->options['structure']["left"]." + "); + if(!$parent['children']) { + $position = 0; + } + if($id[$this->options['structure']['parent_id']] == $parent[$this->options['structure']['id']] && $position > $id[$this->options['structure']['position']]) { + //$position ++; + } + if($parent['children'] && $position >= count($parent['children'])) { + $position = count($parent['children']); + } + + $tmp = array(); + $tmp[] = (int)$id[$this->options['structure']["id"]]; + if($id['children'] && is_array($id['children'])) { + foreach($id['children'] as $c) { + $tmp[] = (int)$c[$this->options['structure']["id"]]; + } + } + $width = (int)$id[$this->options['structure']["right"]] - (int)$id[$this->options['structure']["left"]] + 1; + + $sql = array(); + + // PREPARE NEW PARENT + // update positions of all next elements + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$this->options['structure']["position"]." + 1 + WHERE + ".$this->options['structure']["parent_id"]." = ".(int)$parent[$this->options['structure']['id']]." AND + ".$this->options['structure']["position"]." >= ".$position." + "; + + // update left indexes + $ref_lft = false; + if(!$parent['children']) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_lft = $parent[$this->options['structure']["right"]]; + } + else { + $ref_lft = $parent['children'][(int)$position][$this->options['structure']["left"]]; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." + ".$width." + WHERE + ".$this->options['structure']["left"]." >= ".(int)$ref_lft." + "; + // update right indexes + $ref_rgt = false; + if(!$parent['children']) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else if(!isset($parent['children'][$position])) { + $ref_rgt = $parent[$this->options['structure']["right"]]; + } + else { + $ref_rgt = $parent['children'][(int)$position][$this->options['structure']["left"]] + 1; + } + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." + ".$width." + WHERE + ".$this->options['structure']["right"]." >= ".(int)$ref_rgt." + "; + + // MOVE THE ELEMENT AND CHILDREN + // left, right and level + $diff = $ref_lft - (int)$id[$this->options['structure']["left"]]; + + if($diff <= 0) { $diff = $diff - $width; } + $ldiff = ((int)$parent[$this->options['structure']['level']] + 1) - (int)$id[$this->options['structure']['level']]; + + // build all fields + data table + $fields = array_combine($this->options['structure'], $this->options['structure']); + unset($fields['id']); + $fields[$this->options['structure']["left"]] = $this->options['structure']["left"]." + ".$diff; + $fields[$this->options['structure']["right"]] = $this->options['structure']["right"]." + ".$diff; + $fields[$this->options['structure']["level"]] = $this->options['structure']["level"]." + ".$ldiff; + $sql[] = " + INSERT INTO ".$this->options['structure_table']." ( ".implode(',',array_keys($fields))." ) + SELECT ".implode(',',array_values($fields))." FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']["id"]." IN (".implode(",", $tmp).") + ORDER BY ".$this->options['structure']["level"]." ASC"; + + foreach($sql as $k => $v) { + try { + $this->db->query($v); + } catch(Exception $e) { + $this->reconstruct(); + throw new Exception('Error copying'); + } + } + $iid = (int)$this->db->insert_id(); + + try { + $this->db->query(" + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$position.", + ".$this->options['structure']["parent_id"]." = ".(int)$parent[$this->options['structure']["id"]]." + WHERE ".$this->options['structure']["id"]." = ".$iid." + "); + } catch(Exception $e) { + $this->rm($iid); + $this->reconstruct(); + throw new Exception('Could not update adjacency after copy'); + } + $fields = $this->options['data']; + unset($fields['id']); + $update_fields = array(); + foreach($fields as $f) { + $update_fields[] = $f.'=VALUES('.$f.')'; + } + $update_fields = implode(',', $update_fields); + if(count($fields)) { + try { + $this->db->query(" + INSERT INTO ".$this->options['data_table']." (".$this->options['data2structure'].",".implode(",",$fields).") + SELECT ".$iid.",".implode(",",$fields)." FROM ".$this->options['data_table']." WHERE ".$this->options['data2structure']." = ".$id[$this->options['data2structure']]." + ON DUPLICATE KEY UPDATE ".$update_fields." + "); + } + catch(Exception $e) { + $this->rm($iid); + $this->reconstruct(); + throw new Exception('Could not update data after copy'); + } + } + + // manually fix all parent_ids and copy all data + $new_nodes = $this->db->get(" + SELECT * FROM ".$this->options['structure_table']." + WHERE ".$this->options['structure']["left"]." > ".$ref_lft." AND ".$this->options['structure']["right"]." < ".($ref_lft + $width - 1)." AND ".$this->options['structure']["id"]." != ".$iid." + ORDER BY ".$this->options['structure']["left"]." + "); + $parents = array(); + foreach($new_nodes as $node) { + if(!isset($parents[$node[$this->options['structure']["left"]]])) { $parents[$node[$this->options['structure']["left"]]] = $iid; } + for($i = $node[$this->options['structure']["left"]] + 1; $i < $node[$this->options['structure']["right"]]; $i++) { + $parents[$i] = $node[$this->options['structure']["id"]]; + } + } + $sql = array(); + foreach($new_nodes as $k => $node) { + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["parent_id"]." = ".$parents[$node[$this->options['structure']["left"]]]." + WHERE ".$this->options['structure']["id"]." = ".(int)$node[$this->options['structure']["id"]]." + "; + if(count($fields)) { + $up = ""; + foreach($fields as $f) + $sql[] = " + INSERT INTO ".$this->options['data_table']." (".$this->options['data2structure'].",".implode(",",$fields).") + SELECT ".(int)$node[$this->options['structure']["id"]].",".implode(",",$fields)." FROM ".$this->options['data_table']." + WHERE ".$this->options['data2structure']." = ".$old_nodes[$k][$this->options['structure']['id']]." + ON DUPLICATE KEY UPDATE ".$update_fields." + "; + } + } + //var_dump($sql); + foreach($sql as $k => $v) { + try { + $this->db->query($v); + } catch(Exception $e) { + $this->rm($iid); + $this->reconstruct(); + throw new Exception('Error copying'); + } + } + return $iid; + } + + public function rm($id) { + $id = (int)$id; + if(!$id || $id === 1) { throw new Exception('Could not create inside roots'); } + $data = $this->get_node($id, array('with_children' => true, 'deep_children' => true)); + $lft = (int)$data[$this->options['structure']["left"]]; + $rgt = (int)$data[$this->options['structure']["right"]]; + $pid = (int)$data[$this->options['structure']["parent_id"]]; + $pos = (int)$data[$this->options['structure']["position"]]; + $dif = $rgt - $lft + 1; + + $sql = array(); + // deleting node and its children from structure + $sql[] = " + DELETE FROM ".$this->options['structure_table']." + WHERE ".$this->options['structure']["left"]." >= ".(int)$lft." AND ".$this->options['structure']["right"]." <= ".(int)$rgt." + "; + // shift left indexes of nodes right of the node + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["left"]." = ".$this->options['structure']["left"]." - ".(int)$dif." + WHERE ".$this->options['structure']["left"]." > ".(int)$rgt." + "; + // shift right indexes of nodes right of the node and the node's parents + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["right"]." = ".$this->options['structure']["right"]." - ".(int)$dif." + WHERE ".$this->options['structure']["right"]." > ".(int)$lft." + "; + // Update position of siblings below the deleted node + $sql[] = " + UPDATE ".$this->options['structure_table']." + SET ".$this->options['structure']["position"]." = ".$this->options['structure']["position"]." - 1 + WHERE ".$this->options['structure']["parent_id"]." = ".$pid." AND ".$this->options['structure']["position"]." > ".(int)$pos." + "; + // delete from data table + if($this->options['data_table']) { + $tmp = array(); + $tmp[] = (int)$data['id']; + if($data['children'] && is_array($data['children'])) { + foreach($data['children'] as $v) { + $tmp[] = (int)$v['id']; + } + } + $sql[] = "DELETE FROM ".$this->options['data_table']." WHERE ".$this->options['data2structure']." IN (".implode(',',$tmp).")"; + } + + foreach($sql as $v) { + try { + $this->db->query($v); + } catch(Exception $e) { + $this->reconstruct(); + throw new Exception('Could not remove'); + } + } + return true; + } + + public function rn($id, $data) { + if(!(int)$this->db->one('SELECT 1 AS res FROM '.$this->options['structure_table'].' WHERE '.$this->options['structure']['id'].' = '.(int)$id)) { + throw new Exception('Could not rename non-existing node'); + } + $tmp = array(); + foreach($this->options['data'] as $v) { + if(isset($data[$v])) { + $tmp[$v] = $data[$v]; + } + } + if(count($tmp)) { + $tmp[$this->options['data2structure']] = $id; + $sql = " + INSERT INTO + ".$this->options['data_table']." (".implode(',', array_keys($tmp)).") + VALUES(?".str_repeat(',?', count($tmp) - 1).") + ON DUPLICATE KEY UPDATE + ".implode(' = ?, ', array_keys($tmp))." = ?"; + $par = array_merge(array_values($tmp), array_values($tmp)); + try { + $this->db->query($sql, $par); + } + catch(Exception $e) { + throw new Exception('Could not rename'); + } + } + return true; + } + + public function analyze($get_errors = false) { + $report = array(); + if((int)$this->db->one("SELECT COUNT(".$this->options['structure']["id"].") AS res FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']["parent_id"]." = 0") !== 1) { + $report[] = "No or more than one root node."; + } + if((int)$this->db->one("SELECT ".$this->options['structure']["left"]." AS res FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']["parent_id"]." = 0") !== 1) { + $report[] = "Root node's left index is not 1."; + } + if((int)$this->db->one(" + SELECT + COUNT(".$this->options['structure']['id'].") AS res + FROM ".$this->options['structure_table']." s + WHERE + ".$this->options['structure']["parent_id"]." != 0 AND + (SELECT COUNT(".$this->options['structure']['id'].") FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']["id"]." = s.".$this->options['structure']["parent_id"].") = 0") > 0 + ) { + $report[] = "Missing parents."; + } + if( + (int)$this->db->one("SELECT MAX(".$this->options['structure']["right"].") AS res FROM ".$this->options['structure_table']) / 2 != + (int)$this->db->one("SELECT COUNT(".$this->options['structure']["id"].") AS res FROM ".$this->options['structure_table']) + ) { + $report[] = "Right index does not match node count."; + } + if( + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["right"].") AS res FROM ".$this->options['structure_table']) != + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["left"].") AS res FROM ".$this->options['structure_table']) + ) { + $report[] = "Duplicates in nested set."; + } + if( + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["id"].") AS res FROM ".$this->options['structure_table']) != + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["left"].") AS res FROM ".$this->options['structure_table']) + ) { + $report[] = "Left indexes not unique."; + } + if( + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["id"].") AS res FROM ".$this->options['structure_table']) != + (int)$this->db->one("SELECT COUNT(DISTINCT ".$this->options['structure']["right"].") AS res FROM ".$this->options['structure_table']) + ) { + $report[] = "Right indexes not unique."; + } + if( + (int)$this->db->one(" + SELECT + s1.".$this->options['structure']["id"]." AS res + FROM ".$this->options['structure_table']." s1, ".$this->options['structure_table']." s2 + WHERE + s1.".$this->options['structure']['id']." != s2.".$this->options['structure']['id']." AND + s1.".$this->options['structure']['left']." = s2.".$this->options['structure']['right']." + LIMIT 1") + ) { + $report[] = "Nested set - matching left and right indexes."; + } + if( + (int)$this->db->one(" + SELECT + ".$this->options['structure']["id"]." AS res + FROM ".$this->options['structure_table']." s + WHERE + ".$this->options['structure']['position']." >= ( + SELECT + COUNT(".$this->options['structure']["id"].") + FROM ".$this->options['structure_table']." + WHERE ".$this->options['structure']['parent_id']." = s.".$this->options['structure']['parent_id']." + ) + LIMIT 1") || + (int)$this->db->one(" + SELECT + s1.".$this->options['structure']["id"]." AS res + FROM ".$this->options['structure_table']." s1, ".$this->options['structure_table']." s2 + WHERE + s1.".$this->options['structure']['id']." != s2.".$this->options['structure']['id']." AND + s1.".$this->options['structure']['parent_id']." = s2.".$this->options['structure']['parent_id']." AND + s1.".$this->options['structure']['position']." = s2.".$this->options['structure']['position']." + LIMIT 1") + ) { + $report[] = "Positions not correct."; + } + if((int)$this->db->one(" + SELECT + COUNT(".$this->options['structure']["id"].") FROM ".$this->options['structure_table']." s + WHERE + ( + SELECT + COUNT(".$this->options['structure']["id"].") + FROM ".$this->options['structure_table']." + WHERE + ".$this->options['structure']["right"]." < s.".$this->options['structure']["right"]." AND + ".$this->options['structure']["left"]." > s.".$this->options['structure']["left"]." AND + ".$this->options['structure']["level"]." = s.".$this->options['structure']["level"]." + 1 + ) != + ( + SELECT + COUNT(*) + FROM ".$this->options['structure_table']." + WHERE + ".$this->options['structure']["parent_id"]." = s.".$this->options['structure']["id"]." + )") + ) { + $report[] = "Adjacency and nested set do not match."; + } + if( + $this->options['data_table'] && + (int)$this->db->one(" + SELECT + COUNT(".$this->options['structure']["id"].") AS res + FROM ".$this->options['structure_table']." s + WHERE + (SELECT COUNT(".$this->options['data2structure'].") FROM ".$this->options['data_table']." WHERE ".$this->options['data2structure']." = s.".$this->options['structure']["id"].") = 0 + ") + ) { + $report[] = "Missing records in data table."; + } + if( + $this->options['data_table'] && + (int)$this->db->one(" + SELECT + COUNT(".$this->options['data2structure'].") AS res + FROM ".$this->options['data_table']." s + WHERE + (SELECT COUNT(".$this->options['structure']["id"].") FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']["id"]." = s.".$this->options['data2structure'].") = 0 + ") + ) { + $report[] = "Dangling records in data table."; + } + return $get_errors ? $report : count($report) == 0; + } + + public function reconstruct($analyze = true) { + if($analyze && $this->analyze()) { return true; } + + if(!$this->db->query("" . + "CREATE TEMPORARY TABLE temp_tree (" . + "".$this->options['structure']["id"]." INTEGER NOT NULL, " . + "".$this->options['structure']["parent_id"]." INTEGER NOT NULL, " . + "". $this->options['structure']["position"]." INTEGER NOT NULL" . + ") " + )) { return false; } + if(!$this->db->query("" . + "INSERT INTO temp_tree " . + "SELECT " . + "".$this->options['structure']["id"].", " . + "".$this->options['structure']["parent_id"].", " . + "".$this->options['structure']["position"]." " . + "FROM ".$this->options['structure_table']."" + )) { return false; } + + if(!$this->db->query("" . + "CREATE TEMPORARY TABLE temp_stack (" . + "".$this->options['structure']["id"]." INTEGER NOT NULL, " . + "".$this->options['structure']["left"]." INTEGER, " . + "".$this->options['structure']["right"]." INTEGER, " . + "".$this->options['structure']["level"]." INTEGER, " . + "stack_top INTEGER NOT NULL, " . + "".$this->options['structure']["parent_id"]." INTEGER, " . + "".$this->options['structure']["position"]." INTEGER " . + ") " + )) { return false; } + + $counter = 2; + if(!$this->db->query("SELECT COUNT(*) FROM temp_tree")) { + return false; + } + $this->db->nextr(); + $maxcounter = (int) $this->db->f(0) * 2; + $currenttop = 1; + if(!$this->db->query("" . + "INSERT INTO temp_stack " . + "SELECT " . + "".$this->options['structure']["id"].", " . + "1, " . + "NULL, " . + "0, " . + "1, " . + "".$this->options['structure']["parent_id"].", " . + "".$this->options['structure']["position"]." " . + "FROM temp_tree " . + "WHERE ".$this->options['structure']["parent_id"]." = 0" + )) { return false; } + if(!$this->db->query("DELETE FROM temp_tree WHERE ".$this->options['structure']["parent_id"]." = 0")) { + return false; + } + + while ($counter <= $maxcounter) { + if(!$this->db->query("" . + "SELECT " . + "temp_tree.".$this->options['structure']["id"]." AS tempmin, " . + "temp_tree.".$this->options['structure']["parent_id"]." AS pid, " . + "temp_tree.".$this->options['structure']["position"]." AS lid " . + "FROM temp_stack, temp_tree " . + "WHERE " . + "temp_stack.".$this->options['structure']["id"]." = temp_tree.".$this->options['structure']["parent_id"]." AND " . + "temp_stack.stack_top = ".$currenttop." " . + "ORDER BY temp_tree.".$this->options['structure']["position"]." ASC LIMIT 1" + )) { return false; } + + if($this->db->nextr()) { + $tmp = $this->db->f("tempmin"); + + $q = "INSERT INTO temp_stack (stack_top, ".$this->options['structure']["id"].", ".$this->options['structure']["left"].", ".$this->options['structure']["right"].", ".$this->options['structure']["level"].", ".$this->options['structure']["parent_id"].", ".$this->options['structure']["position"].") VALUES(".($currenttop + 1).", ".$tmp.", ".$counter.", NULL, ".$currenttop.", ".$this->db->f("pid").", ".$this->db->f("lid").")"; + if(!$this->db->query($q)) { + return false; + } + if(!$this->db->query("DELETE FROM temp_tree WHERE ".$this->options['structure']["id"]." = ".$tmp)) { + return false; + } + $counter++; + $currenttop++; + } + else { + if(!$this->db->query("" . + "UPDATE temp_stack SET " . + "".$this->options['structure']["right"]." = ".$counter.", " . + "stack_top = -stack_top " . + "WHERE stack_top = ".$currenttop + )) { return false; } + $counter++; + $currenttop--; + } + } + + $temp_fields = $this->options['structure']; + unset($temp_fields["parent_id"]); + unset($temp_fields["position"]); + unset($temp_fields["left"]); + unset($temp_fields["right"]); + unset($temp_fields["level"]); + if(count($temp_fields) > 1) { + if(!$this->db->query("" . + "CREATE TEMPORARY TABLE temp_tree2 " . + "SELECT ".implode(", ", $temp_fields)." FROM ".$this->options['structure_table']." " + )) { return false; } + } + if(!$this->db->query("TRUNCATE TABLE ".$this->options['structure_table']."")) { + return false; + } + if(!$this->db->query("" . + "INSERT INTO ".$this->options['structure_table']." (" . + "".$this->options['structure']["id"].", " . + "".$this->options['structure']["parent_id"].", " . + "".$this->options['structure']["position"].", " . + "".$this->options['structure']["left"].", " . + "".$this->options['structure']["right"].", " . + "".$this->options['structure']["level"]." " . + ") " . + "SELECT " . + "".$this->options['structure']["id"].", " . + "".$this->options['structure']["parent_id"].", " . + "".$this->options['structure']["position"].", " . + "".$this->options['structure']["left"].", " . + "".$this->options['structure']["right"].", " . + "".$this->options['structure']["level"]." " . + "FROM temp_stack " . + "ORDER BY ".$this->options['structure']["id"]."" + )) { + return false; + } + if(count($temp_fields) > 1) { + $sql = "" . + "UPDATE ".$this->options['structure_table']." v, temp_tree2 SET v.".$this->options['structure']["id"]." = v.".$this->options['structure']["id"]." "; + foreach($temp_fields as $k => $v) { + if($k == "id") continue; + $sql .= ", v.".$v." = temp_tree2.".$v." "; + } + $sql .= " WHERE v.".$this->options['structure']["id"]." = temp_tree2.".$this->options['structure']["id"]." "; + if(!$this->db->query($sql)) { + return false; + } + } + // fix positions + $nodes = $this->db->get("SELECT ".$this->options['structure']['id'].", ".$this->options['structure']['parent_id']." FROM ".$this->options['structure_table']." ORDER BY ".$this->options['structure']['parent_id'].", ".$this->options['structure']['position']); + $last_parent = false; + $last_position = false; + foreach($nodes as $node) { + if((int)$node[$this->options['structure']['parent_id']] !== $last_parent) { + $last_position = 0; + $last_parent = (int)$node[$this->options['structure']['parent_id']]; + } + $this->db->query("UPDATE ".$this->options['structure_table']." SET ".$this->options['structure']['position']." = ".$last_position." WHERE ".$this->options['structure']['id']." = ".(int)$node[$this->options['structure']['id']]); + $last_position++; + } + if($this->options['data_table'] != $this->options['structure_table']) { + // fix missing data records + $this->db->query(" + INSERT INTO + ".$this->options['data_table']." (".implode(',',$this->options['data']).") + SELECT ".$this->options['structure']['id']." ".str_repeat(", ".$this->options['structure']['id'], count($this->options['data']) - 1)." + FROM ".$this->options['structure_table']." s + WHERE (SELECT COUNT(".$this->options['data2structure'].") FROM ".$this->options['data_table']." WHERE ".$this->options['data2structure']." = s.".$this->options['structure']['id'].") = 0 " + ); + // remove dangling data records + $this->db->query(" + DELETE FROM + ".$this->options['data_table']." + WHERE + (SELECT COUNT(".$this->options['structure']['id'].") FROM ".$this->options['structure_table']." WHERE ".$this->options['structure']['id']." = ".$this->options['data_table'].".".$this->options['data2structure'].") = 0 + "); + } + return true; + } + + public function res($data = array()) { + if(!$this->db->query("TRUNCATE TABLE ".$this->options['structure_table'])) { return false; } + if(!$this->db->query("TRUNCATE TABLE ".$this->options['data_table'])) { return false; } + $sql = "INSERT INTO ".$this->options['structure_table']." (".implode(",", $this->options['structure']).") VALUES (?".str_repeat(',?', count($this->options['structure']) - 1).")"; + $par = array(); + foreach($this->options['structure'] as $k => $v) { + switch($k) { + case 'id': + $par[] = null; + break; + case 'left': + $par[] = 1; + break; + case 'right': + $par[] = 2; + break; + case 'level': + $par[] = 0; + break; + case 'parent_id': + $par[] = 0; + break; + case 'position': + $par[] = 0; + break; + default: + $par[] = null; + } + } + if(!$this->db->query($sql, $par)) { return false; } + $id = $this->db->insert_id(); + foreach($this->options['structure'] as $k => $v) { + if(!isset($data[$k])) { $data[$k] = null; } + } + return $this->rn($id, $data); + } + + public function dump() { + $nodes = $this->db->get(" + SELECT + s.".implode(", s.", $this->options['structure']).", + d.".implode(", d.", $this->options['data'])." + FROM + ".$this->options['structure_table']." s, + ".$this->options['data_table']." d + WHERE + s.".$this->options['structure']['id']." = d.".$this->options['data2structure']." + ORDER BY ".$this->options['structure']["left"] + ); + echo "\n\n"; + foreach($nodes as $node) { + echo str_repeat(" ",(int)$node[$this->options['structure']["level"]] * 2); + echo $node[$this->options['structure']["id"]]." ".$node["nm"]." (".$node[$this->options['structure']["left"]].",".$node[$this->options['structure']["right"]].",".$node[$this->options['structure']["level"]].",".$node[$this->options['structure']["parent_id"]].",".$node[$this->options['structure']["position"]].")" . "\n"; + } + echo str_repeat("-",40); + echo "\n\n"; + } +} \ No newline at end of file diff --git a/Sources/webAduc/www/sitebrowser/data.sql b/Sources/webAduc/www/sitebrowser/data.sql new file mode 100644 index 0000000..5888904 --- /dev/null +++ b/Sources/webAduc/www/sitebrowser/data.sql @@ -0,0 +1,91 @@ +-- phpMyAdmin SQL Dump +-- version 4.0.1 +-- http://www.phpmyadmin.net +-- +-- Host: 127.0.0.1 +-- Generation Time: Apr 15, 2014 at 05:14 PM +-- Server version: 5.5.27 +-- PHP Version: 5.4.7 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + +-- +-- Database: `test` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tree_data` +-- + +CREATE TABLE IF NOT EXISTS `tree_data` ( + `id` int(10) unsigned NOT NULL, + `nm` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `tree_data` +-- + +INSERT INTO `tree_data` (`id`, `nm`) VALUES +(1, 'root'), +(1063, 'Node 12'), +(1064, 'Node 2'), +(1065, 'Node 3'), +(1066, 'Node 4'), +(1067, 'Node 5'), +(1068, 'Node 6'), +(1069, 'Node 7'), +(1070, 'Node 8'), +(1071, 'Node 9'), +(1072, 'Node 9'), +(1073, 'Node 9'), +(1074, 'Node 9'), +(1075, 'Node 7'), +(1076, 'Node 8'), +(1077, 'Node 9'), +(1078, 'Node 9'), +(1079, 'Node 9'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tree_struct` +-- + +CREATE TABLE IF NOT EXISTS `tree_struct` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `lft` int(10) unsigned NOT NULL, + `rgt` int(10) unsigned NOT NULL, + `lvl` int(10) unsigned NOT NULL, + `pid` int(10) unsigned NOT NULL, + `pos` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1083 ; + +-- +-- Dumping data for table `tree_struct` +-- + +INSERT INTO `tree_struct` (`id`, `lft`, `rgt`, `lvl`, `pid`, `pos`) VALUES +(1, 1, 36, 0, 0, 0), +(1063, 2, 31, 1, 1, 0), +(1064, 3, 30, 2, 1063, 0), +(1065, 4, 29, 3, 1064, 0), +(1066, 5, 28, 4, 1065, 0), +(1067, 6, 19, 5, 1066, 0), +(1068, 7, 18, 6, 1067, 0), +(1069, 8, 17, 7, 1068, 0), +(1070, 9, 16, 8, 1069, 0), +(1071, 12, 13, 9, 1070, 1), +(1072, 14, 15, 9, 1070, 2), +(1073, 10, 11, 9, 1070, 0), +(1074, 32, 35, 1, 1, 1), +(1075, 20, 27, 5, 1066, 1), +(1076, 21, 26, 6, 1075, 0), +(1077, 24, 25, 7, 1076, 1), +(1078, 33, 34, 2, 1074, 0), +(1079, 22, 23, 7, 1076, 0); diff --git a/Sources/webAduc/www/sitebrowser/index.php b/Sources/webAduc/www/sitebrowser/index.php new file mode 100644 index 0000000..89657e2 --- /dev/null +++ b/Sources/webAduc/www/sitebrowser/index.php @@ -0,0 +1,172 @@ + 'tree_struct', 'data_table' => 'tree_data', 'data' => array('nm'))); + try { + $rslt = null; + switch($_GET['operation']) { + case 'analyze': + var_dump($fs->analyze(true)); + die(); + break; + case 'get_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $temp = $fs->get_children($node); + $rslt = array(); + foreach($temp as $v) { + $rslt[] = array('id' => $v['id'], 'text' => $v['nm'], 'children' => ($v['rgt'] - $v['lft'] > 1)); + } + break; + case "get_content": + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? $_GET['id'] : 0; + $node = explode(':', $node); + if(count($node) > 1) { + $rslt = array('content' => 'Multiple selected'); + } + else { + $temp = $fs->get_node((int)$node[0], array('with_path' => true)); + $rslt = array('content' => 'Selected: /' . implode('/',array_map(function ($v) { return $v['nm']; }, $temp['path'])). '/'.$temp['nm']); + } + break; + case 'create_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $temp = $fs->mk($node, isset($_GET['position']) ? (int)$_GET['position'] : 0, array('nm' => isset($_GET['text']) ? $_GET['text'] : 'New node')); + $rslt = array('id' => $temp); + break; + case 'rename_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $rslt = $fs->rn($node, array('nm' => isset($_GET['text']) ? $_GET['text'] : 'Renamed node')); + break; + case 'delete_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $rslt = $fs->rm($node); + break; + case 'move_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $parn = isset($_GET['parent']) && $_GET['parent'] !== '#' ? (int)$_GET['parent'] : 0; + $rslt = $fs->mv($node, $parn, isset($_GET['position']) ? (int)$_GET['position'] : 0); + break; + case 'copy_node': + $node = isset($_GET['id']) && $_GET['id'] !== '#' ? (int)$_GET['id'] : 0; + $parn = isset($_GET['parent']) && $_GET['parent'] !== '#' ? (int)$_GET['parent'] : 0; + $rslt = $fs->cp($node, $parn, isset($_GET['position']) ? (int)$_GET['position'] : 0); + break; + default: + throw new Exception('Unsupported operation: ' . $_GET['operation']); + break; + } + header('Content-Type: application/json; charset=utf-8'); + echo json_encode($rslt); + } + catch (Exception $e) { + header($_SERVER["SERVER_PROTOCOL"] . ' 500 Server Error'); + header('Status: 500 Server Error'); + echo $e->getMessage(); + } + die(); +} +?> + + + + + + Title + + + + + +
    +
    +
    + + + +
    Select a node from the tree.
    +
    +
    + + + + + + diff --git a/Sources/webAduc/www/src/ajax.php b/Sources/webAduc/www/src/ajax.php new file mode 100644 index 0000000..f1f4734 --- /dev/null +++ b/Sources/webAduc/www/src/ajax.php @@ -0,0 +1,10 @@ +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 RLLlHrK~`0!Ov)_a{{TK#QZ@hp literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/src/assets/Icon.jpg b/Sources/webAduc/www/src/assets/Icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2703350e689fed5bb4256f1ad0525e21648895c6 GIT binary patch literal 47819 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 Jj0yeP@?QyhY;FJm literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/src/class/autoload.php b/Sources/webAduc/www/src/class/autoload.php new file mode 100644 index 0000000..936b8df --- /dev/null +++ b/Sources/webAduc/www/src/class/autoload.php @@ -0,0 +1,4 @@ +useSSL; + } + + /** + * {@inheritdoc} + */ + public function isUsingTLS() + { + return $this->useTLS; + } + + /** + * {@inheritdoc} + */ + public function isBound() + { + return $this->bound; + } + + /** + * {@inheritdoc} + */ + public function canChangePasswords() + { + return $this->isUsingSSL() || $this->isUsingTLS(); + } + + /** + * {@inheritdoc} + */ + public function ssl($enabled = true) + { + $this->useSSL = $enabled; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function tls($enabled = true) + { + $this->useTLS = $enabled; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getConnection() + { + return $this->connection; + } + + /** + * {@inheritdoc} + */ + public function getEntries($searchResults) + { + return ldap_get_entries($this->getConnection(), $searchResults); + } + + /** + * {@inheritdoc} + */ + public function getFirstEntry($searchResults) + { + return ldap_first_entry($this->getConnection(), $searchResults); + } + + /** + * {@inheritdoc} + */ + public function getNextEntry($entry) + { + return ldap_next_entry($this->getConnection(), $entry); + } + + /** + * {@inheritdoc} + */ + public function getAttributes($entry) + { + return ldap_get_attributes($this->getConnection(), $entry); + } + + /** + * {@inheritdoc} + */ + public function countEntries($searchResults) + { + return ldap_count_entries($this->getConnection(), $searchResults); + } + + /** + * {@inheritdoc} + */ + public function compare($dn, $attribute, $value) + { + return ldap_compare($this->getConnection(), $dn, $attribute, $value); + } + + /** + * {@inheritdoc} + */ + public function getLastError() + { + return ldap_error($this->getConnection()); + } + + /** + * {@inheritdoc} + */ + public function getValuesLen($entry, $attribute) + { + return ldap_get_values_len($this->getConnection(), $entry, $attribute); + } + + /** + * {@inheritdoc} + */ + public function setOption($option, $value) + { + return ldap_set_option($this->getConnection(), $option, $value); + } + + /** + * {@inheritdoc} + */ + public function setOptions(array $options = []) + { + foreach ($options as $option => $value) { + $this->setOption($option, $value); + } + } + + /** + * {@inheritdoc} + */ + public function setRebindCallback(callable $callback) + { + return ldap_set_rebind_proc($this->getConnection(), $callback); + } + + /** + * {@inheritdoc} + */ + public function startTLS() + { + return ldap_start_tls($this->getConnection()); + } + + /** + * {@inheritdoc} + */ + public function connect($hosts = [], $port = '389') + { + $connections = $this->getConnectionString($hosts, $this->getProtocol(), $port); + + return $this->connection = ldap_connect($connections); + } + + /** + * {@inheritdoc} + */ + public function close() + { + $connection = $this->getConnection(); + + return is_resource($connection) ? ldap_close($connection) : false; + } + + /** + * {@inheritdoc} + */ + public function search($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0) + { + return ldap_search($this->getConnection(), $dn, $filter, $fields, $onlyAttributes, $size, $time); + } + + /** + * {@inheritdoc} + */ + public function listing($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0) + { + return ldap_list($this->getConnection(), $dn, $filter, $fields, $onlyAttributes, $size, $time); + } + + /** + * {@inheritdoc} + */ + public function read($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0) + { + return ldap_read($this->getConnection(), $dn, $filter, $fields, $onlyAttributes, $size, $time); + } + + /** + * {@inheritdoc} + */ + public function bind($username, $password, $sasl = false) + { + if ($this->isUsingTLS()) { + $this->startTLS(); + } + + if ($sasl) { + return $this->bound = ldap_sasl_bind($this->getConnection(), null, null, 'GSSAPI'); + } + + return $this->bound = ldap_bind($this->getConnection(), $username, $password); + } + + /** + * {@inheritdoc} + */ + public function add($dn, array $entry) + { + return ldap_add($this->getConnection(), $dn, $entry); + } + + /** + * {@inheritdoc} + */ + public function delete($dn) + { + return ldap_delete($this->getConnection(), $dn); + } + + /** + * {@inheritdoc} + */ + public function rename($dn, $newRdn, $newParent, $deleteOldRdn = false) + { + return ldap_rename($this->getConnection(), $dn, $newRdn, $newParent, $deleteOldRdn); + } + + /** + * {@inheritdoc} + */ + public function modify($dn, array $entry) + { + return ldap_modify($this->getConnection(), $dn, $entry); + } + + /** + * {@inheritdoc} + */ + public function modifyBatch($dn, array $values) + { + return ldap_modify_batch($this->getConnection(), $dn, $values); + } + + /** + * {@inheritdoc} + */ + public function modAdd($dn, array $entry) + { + return ldap_mod_add($this->getConnection(), $dn, $entry); + } + + /** + * {@inheritdoc} + */ + public function modReplace($dn, array $entry) + { + return ldap_mod_replace($this->getConnection(), $dn, $entry); + } + + /** + * {@inheritdoc} + */ + public function modDelete($dn, array $entry) + { + return ldap_mod_del($this->getConnection(), $dn, $entry); + } + + /** + * {@inheritdoc} + */ + public function controlPagedResult($pageSize = 1000, $isCritical = false, $cookie = '') + { + if ($this->isPagingSupported()) { + return ldap_control_paged_result($this->getConnection(), $pageSize, $isCritical, $cookie); + } + + throw new AdldapException( + 'LDAP Pagination is not supported on your current PHP installation.' + ); + } + + /** + * {@inheritdoc} + */ + public function controlPagedResultResponse($result, &$cookie) + { + if ($this->isPagingSupported()) { + return ldap_control_paged_result_response($this->getConnection(), $result, $cookie); + } + + $message = 'LDAP Pagination is not supported on your current PHP installation.'; + + throw new AdldapException($message); + } + + /** + * {@inheritdoc} + */ + public function errNo() + { + return ldap_errno($this->getConnection()); + } + + /** + * {@inheritdoc} + */ + public function getExtendedError() + { + return $this->getDiagnosticMessage(); + } + + /** + * {@inheritdoc} + */ + public function getExtendedErrorHex() + { + if (preg_match("/(?<=data\s).*?(?=\,)/", $this->getExtendedError(), $code)) { + return $code[0]; + } + } + + /** + * {@inheritdoc} + */ + public function getExtendedErrorCode() + { + return $this->extractDiagnosticCode($this->getExtendedError()); + } + + /** + * {@inheritdoc} + */ + public function err2Str($number) + { + return ldap_err2str($number); + } + + /** + * {@inheritdoc} + */ + public function getDiagnosticMessage() + { + ldap_get_option($this->getConnection(), LDAP_OPT_ERROR_STRING, $diagnosticMessage); + + return $diagnosticMessage; + } + + /** + * {@inheritdoc} + */ + public function extractDiagnosticCode($message) + { + preg_match('/^([\da-fA-F]+):/', $message, $matches); + + return isset($matches[1]) ? $matches[1] : false; + } + + /** + * Returns the LDAP protocol to utilize for the current connection. + * + * @return string + */ + public function getProtocol() + { + return $this->isUsingSSL() ? $this::PROTOCOL_SSL : $this::PROTOCOL; + } + + /** + * Generates an LDAP connection string for each host given. + * + * @param string|array $hosts + * @param string $protocol + * @param string $port + * + * @return string + */ + protected function getConnectionString($hosts = [], $protocol, $port) + { + // Normalize hosts into an array. + $hosts = is_array($hosts) ? $hosts : [$hosts]; + + $hosts = array_map(function ($host) use ($protocol, $port) { + return "{$protocol}{$host}:{$port}"; + }, $hosts); + + return implode(' ', $hosts); + } + /** + * Returns true / false if the current + * PHP install supports LDAP. + * + * @return bool + */ + public function isSupported() + { + return function_exists('ldap_connect'); + } + + /** + * Returns true / false if the current + * PHP install supports an SASL bound + * LDAP connection. + * + * @return bool + */ + public function isSaslSupported() + { + return function_exists('ldap_sasl_bind'); + } + + /** + * Returns true / false if the current + * PHP install supports LDAP paging. + * + * @return bool + */ + public function isPagingSupported() + { + return function_exists('ldap_control_paged_result'); + } + + /** + * Returns true / false if the current + * PHP install supports batch modification. + * Requires PHP 5.4 >= 5.4.26, PHP 5.5 >= 5.5.10 or PHP 5.6 >= 5.6.0. + * + * @return bool + */ + public function isBatchSupported() + { + return function_exists('ldap_modify_batch'); + } + + + } diff --git a/Sources/webAduc/www/src/class/userClass.php b/Sources/webAduc/www/src/class/userClass.php new file mode 100644 index 0000000..d5195fe --- /dev/null +++ b/Sources/webAduc/www/src/class/userClass.php @@ -0,0 +1,25 @@ + 'dc', + 'user' => 'Administraor', + 'pass' => 'P55w.rd', + 'base' => 'dc=easylinux,dc=lan' + ]; \ No newline at end of file diff --git a/Sources/webAduc/www/src/css/layout.css b/Sources/webAduc/www/src/css/layout.css new file mode 100644 index 0000000..7bd4899 --- /dev/null +++ b/Sources/webAduc/www/src/css/layout.css @@ -0,0 +1,66 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + + .label,sub,sup{vertical-align:baseline} + body,figure{margin:0} + + .btn-group> + .btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group, + .col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4, + .col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu + { + float:left + } + + .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse, + .pre-scrollable + {max-height:340px} + + html{ + font-family:sans-serif; + -webkit-text-size-adjust:100%; + -ms-text-size-adjust:100%; + font-size:10px; + -webkit-tap-highlight-color:transparent + } + + article,aside,details,figcaption,figure,footer,header,hgroup,main,menu, + nav,section,summary + { + display:block + } + + audio,canvas,progress,video{display:inline-block;vertical-align:baseline} + + audio:not([controls]){display:none;height:0} + + [hidden],template{display:none} + + a{background-color:transparent} + a:active,a:hover{outline:0} + + b,optgroup,strong{font-weight:700} + dfn{font-style:italic} + h1{margin:.67em 0} + mark{color:#000;background:#ff0} + sub,sup{position:relative;font-size:75%;line-height:0} + sup{top:-.5em}sub{bottom:-.25em} + + img{border:0;vertical-align:middle} + svg:not(:root){overflow:hidden} + hr{height:0;box-sizing:content-box} + pre,textarea{overflow:auto} + code,kbd,pre,samp{font-size:1em} + button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit} + button{overflow:visible} + button,select{text-transform:none} + button,html input[type=button],input[type=reset],input[type=submit] + {-webkit-appearance:button;cursor:pointer} + button[disabled],html input[disabled]{cursor:default} + button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0} + input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0} + input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:#fff}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}dt,kbd kbd,label{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{list-style:none;padding-left:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}ol,ul{margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}caption,th{text-align:left}code,kbd{padding:2px 4px;font-size:90%}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-right:15px;padding-left:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{min-width:0;margin:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{display:block;font-size:14px;line-height:1.42857143;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.form-group-sm .form-control,.input-sm{font-size:12px;padding:5px 10px;border-radius:3px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.form-group-lg .form-control,.input-lg{font-size:18px;padding:10px 16px;border-radius:6px}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-header,.dropdown-menu>li>a{white-space:nowrap;padding:3px 20px;line-height:1.42857143}.dropdown-menu-right,.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;clear:both;font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;font-size:12px;color:#777}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{left:auto;top:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{position:relative;display:block}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.btn .badge,.btn .label{position:relative;top:-1px}.breadcrumb>li,.pagination{display:inline-block}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:20px 0;border-radius:4px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{text-align:center;font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert .alert-link,.close{font-weight:700}.alert,.thumbnail{margin-bottom:20px}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.popover,.tooltip{text-decoration:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;line-break:auto}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-content,.popover{background-clip:padding-box}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 5px 5px;border-bottom-color:#000}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.builder #download-not-logged,.builder #share-not-logged,.carousel-inner{overflow:hidden}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;font-weight:400;text-align:left;text-align:start;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;text-align:left;text-align:start;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.builder .navbar-layoutit .navbar-brand .label,.profile .brand .label{position:relative;font-weight:400;top:-3px;box-shadow:inset 1px 1px 3px rgba(0,0,0,.7)}.carousel-caption,.carousel-control{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{width:100%}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;text-align:center;filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;text-align:center}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}body.profile{padding-top:39px;margin-left:0;background:#e5e5e5}@media (max-width:980px){.profile .navbar-text.pull-right{float:none;padding-left:5px;padding-right:5px}}@media (max-width:979px){.profile .navbar-fixed-top{position:fixed}}.profile .navbar-inverse .brand{width:149px;color:#fff;padding-bottom:0;margin-left:-5px}.profile .navbar-inverse #menu-layoutit{margin-right:0}.profile .navbar .divider-vertical{height:38px}.profile .navbar-fixed-top .navbar-inner{min-height:38px}.profile .navbar-fixed-top .navbar-inner .container-fluid{padding:0 5px}.profile .brand img{float:left;margin:2px 10px 0 0}.profile .brand .label{left:11px;font-size:10px;background:#666}.profile footer{background-color:#e5e5e5;border-top:1px solid #ccc;margin-top:0;padding:30px 0 80px}.profile .navbar p{margin:0;color:#ccc;line-height:40px;font-size:12px}.profile .navbar p a{color:#fff}.profile .navbar-fixed-bottom.navbar .btn-group{padding-top:5px}.profile .navbar .btn-donate{padding:0 0 0 10px}.profile .navbar .btn-donate form{margin:0}.profile .navbar-fixed-bottom.navbar .btn-donate form button{line-height:18px;padding:4px 9px}.profile .follow-twitter-box{float:right;padding-top:0!important;padding-left:25px}.profile #container{padding-bottom:70px;background:#fff}.profile h2{font-weight:400;padding-top:30px;padding-bottom:30px}.profile .downloadModal textarea,.profile .feedbackModal textarea{width:100%;height:280px;resize:none;box-sizing:border-box}.profile .feedbackModal input{width:515px}.profile .feedbackModal input.modal-error-field,.profile .feedbackModal textarea.modal-error-field{border:1px solid red}body.builder{padding-top:50px;padding-bottom:40px;margin-left:200px;-webkit-transition:margin 500ms ease;transition:margin 500ms ease}.builder .navbar-layoutit{min-height:32px;padding:5px}.builder .navbar-layoutit .btn-donate{padding:0 0 0 10px}.builder .navbar-layoutit .btn-donate form{margin:0}.builder .navbar-layoutit #menu-layoutit{float:left}.builder .navbar-layoutit .navbar-brand{width:180px;color:#fff;padding:0;margin:0 5px;height:22px}.builder .navbar-layoutit .navbar-brand img{float:left;margin:2px 10px 0 0}.builder .navbar-layoutit .navbar-brand .label{left:10px;font-size:9px;background:#666}.builder.edit .demo{margin-left:0;margin-top:10px;padding:30px 15px 15px;border:1px solid #DDD;border-radius:4px;position:relative;word-wrap:break-word}.builder.edit .demo .lyrow .drag{top:5px;right:80px;z-index:10}.builder.edit .demo .column .box .drag{top:5px}.builder.edit .demo .column .box .configuration{position:absolute;top:3px;right:140px;white-space:nowrap}.builder.edit .demo .column .box .configuration:hover{z-index:1001}.builder.edit .demo .column .navbar-fixed-top{top:33px;left:180px}.builder.edit .demo .column .navbar-fixed-bottom{left:180px}.builder.edit .demo .remove{position:absolute;top:5px;right:5px;z-index:10}.builder.edit .demo .row:before,.builder.edit .demo:after{font-weight:700;background-color:#F5F5F5;font-size:12px;left:-1px;padding:3px 7px;position:absolute;color:#9DA0A4;top:-1px}.builder.edit .demo .row:before{border:1px solid #DDD;border-radius:4px 0;content:"Row";line-height:2}.builder.edit .demo:after{border:1px solid #DDD;border-radius:4px 0;content:"Container"}.builder.edit .drag{position:absolute;top:0;right:0;cursor:pointer}.builder.edit .drag i{color:#000;text-shadow:0 1px 0 #ddd}.builder.edit .column:after{background-color:#F5F5F5;border:1px solid #DDD;border-radius:4px 0;color:#9DA0A4;content:"Column";font-size:12px;font-weight:700;left:-1px;padding:3px 7px;position:absolute;top:-1px}.builder .container{width:auto;margin:0}.builder .sidebar-nav{position:fixed;width:180px;left:0;bottom:0;top:32px;background:#ccc;padding:10px;z-index:10;-webkit-transition:all 500ms ease;transition:all 500ms ease}.builder .sidebar-nav .nav-header{cursor:pointer;font-size:14px;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.3);text-transform:uppercase;font-weight:700}.builder .sidebar-nav .nav-header span.label{font-size:10px;position:relative;top:-1px}.builder .sidebar-nav .nav-header i.glyphicon-question-sign{color:#000;text-shadow:0 1px 0 #ddd}.builder .sidebar-nav .nav-header .popover{color:#999;text-shadow:none}.builder .sidebar-nav .popover-info{position:relative}.builder .sidebar-nav .popover-info .popover{display:none;top:-12.5px;left:15px}.builder .sidebar-nav .popover-info:hover .popover{display:block;opacity:1;width:400px}.builder .sidebar-nav .popover-info:hover .popover .arrow{top:23px}.builder .sidebar-nav .accordion-group{border:none}.builder .sidebar-nav li{line-height:28px;margin-bottom:3px}.builder .sidebar-nav li .lyrow{margin-bottom:5px}.builder .sidebar-nav .box{line-height:26px;width:160px;height:26px}.builder .sidebar-nav .preview{display:block;color:#666;font-size:12px;line-height:26px}.builder .sidebar-nav .preview input{width:105px;padding:0 10px;background:#bbb;font-size:10px;color:#999;line-height:20px;height:20px;position:relative;top:-1px}.builder .demo .preview,.builder .sidebar-nav .boxes,.builder .sidebar-nav .configuration,.builder .sidebar-nav .remove,.builder .sidebar-nav .view{display:none}.builder .demo .box .view{display:block;padding-top:30px}.builder .demo .column .navbar-fixed-top{top:33px}.builder .demo .configuration{filter:alpha(opacity=0);opacity:0;-webkit-transition:all 500ms ease;transition:all 500ms ease}.builder .demo .drag,.builder .demo .remove{filter:alpha(opacity=20);opacity:.2;-webkit-transition:all 500ms ease;transition:all 500ms ease}.builder .demo .box:hover .configuration,.builder .demo .box:hover .drag,.builder .demo .box:hover .remove,.builder .demo .lyrow:hover>.configuration,.builder .demo .lyrow:hover>.drag,.builder .demo .lyrow:hover>.remove{filter:alpha(opacity=100);opacity:1}.builder .demo .row{background-color:#F5F5F5;box-sizing:border-box;box-shadow:inset 0 1px 13px rgba(0,0,0,.1);border:1px solid #DDD;border-radius:4px;margin:15px 0;position:relative;padding:25px 14px 0}.builder .ui-draggable-dragging .view{display:block}.builder .ui-sortable-placeholder{outline:#ddd dashed 1px;visibility:visible!important;border-radius:4px}.builder .box,.builder .lyrow{position:relative}.builder .column{background-color:#FFF;border:1px solid #DDD;border-radius:4px;margin:15px 0;padding:39px 19px 24px;position:relative}.builder.devpreview{margin-left:0}.builder.devpreview .sidebar-nav{left:-200px;-webkit-transition:all 0ms ease;transition:all 0ms ease}.builder.devpreview .configuration,.builder.devpreview .drag,.builder.devpreview .remove{display:none!important}.builder #download-layout,.builder .display-none,.homepage .small-width{display:none}.builder.devpreview .demo .box,.builder.devpreview .demo .row{padding-top:0;background:0 0}.builder.devpreview .demo .column{padding-top:19px;padding-bottom:19px}.builder.sourcepreview .column,.builder.sourcepreview .demo .box,.builder.sourcepreview .row{margin:0;padding:0;background:0 0;border:none;box-shadow:inset 0 0 0 transparent}.builder .latest-group-sidebar{margin-bottom:25px}.builder .powered-by{margin-top:5px;font-size:12px;padding-right:18px}.builder a.language-selected{font-style:italic;font-weight:700}@media (max-width:980px){.builder .navbar-text.pull-right{float:none;padding-left:5px;padding-right:5px}}@media (max-width:979px){.builder .navbar-fixed-top{position:fixed}}.modal textarea{width:100%;height:280px;resize:none;box-sizing:border-box}.modal input{width:100%}.modal .modal-error-field{border:1px solid red}.modal .hireModal p{font-size:12px}.modal .hireModal textarea{height:150px;margin-bottom:10px}body.homepage,html{background:#fff;overflow-x:hidden}.homepage .brand .label,.homepage header{background:url(/img/header-bg.png) #006dcc}.homepage header{margin-bottom:30px;padding:0 0 20px;box-shadow:0 1px 300px rgba(0,0,0,.9)}.homepage header p{color:#fff;font-size:30px;line-height:1.2em;margin-bottom:30px;text-shadow:0 1px 1px rgba(0,0,0,.4)}.homepage .navbar p{margin:0;color:#ccc;line-height:40px;font-size:12px}.homepage .navbar p a{color:#fff}.homepage .navbar .btn-group{padding-top:14px}.homepage .navbar .follow-twitter-box{margin-top:8px}.homepage .navbar .btn-donate{padding:0 0 0 11px;margin-top:8px}.homepage .navbar .btn-donate form{margin:0}.homepage .navbar .btn-donate form button{line-height:18px;padding:4px 9px}.homepage .auth-box{color:#fff;margin-right:80px}.homepage .auth-box a{color:#fff}.homepage .brand{font-size:100px;margin:20px 0 30px;color:#fff;line-height:1;font-weight:400;text-shadow:0 1px 3px rgba(0,0,0,.7);position:relative;left:-10px}.homepage .brand .label{position:relative;left:5px;top:-6px;padding:5px 10px;box-shadow:inset 1px 1px 5px rgba(0,0,0,.7);font-size:11px}.homepage .col-sm-6 img{margin-right:20px}.homepage .col-sm-6 h2{font-size:28px;padding-top:20px}.homepage .col-sm-6 p{margin-left:276px}.homepage .note-detail{margin-top:50px;color:#fff}.homepage .note-detail h3{font-weight:400}.homepage .note-detail a{color:#ddd}.homepage .well{background:url(/img/header-bg.png) #6cf;text-shadow:0 1px 0 rgba(0,0,0,.7)}.homepage .themes{padding-top:0}.homepage a.language-selected{font-style:italic;font-weight:700}.homepage footer{background-color:#e5e5e5;border-top:1px solid #ccc;margin-top:70px;padding:30px 0 80px}.homepage #video{width:640px;height:480px;margin-left:-320px;top:50%;margin-top:-240px}.homepage .working-v3{color:#fff;background:rgba(0,0,0,.4);text-shadow:0 1px 0 rgba(0,0,0,.7);text-align:center;padding:15px 20px;margin-bottom:5px}.homepage .working-v3 h2,.homepage .working-v3 h3{font-weight:400}.homepage .working-v3 h2{font-size:25px;margin:0 0 10px}.homepage .working-v3 h3{font-size:20px;margin:0}.homepage .follow-twitter-box{float:right;padding-top:0!important;padding-left:25px}.homepage .thumbnails{padding-left:0;list-style-type:none}.homepage .btn-hire{font-size:14px;margin-right:10px}.homepage .footer-sticky{padding:2px 15px}.homepage .videoModal{width:700px}@media (max-width:767px){.homepage footer,.homepage header{margin-right:-20px;margin-left:-20px;padding:0 20px}.homepage footer{margin-top:20px;padding-top:20px;padding-bottom:50px}.homepage .brand{font-size:50px;padding-top:30px}.homepage header p{font-size:20px}.homepage .navbar-fixed-bottom .btn-group,.homepage .themes,.homepage header p a.btn{display:none}.homepage .navbar-fixed-bottom{margin-top:0}.homepage .note-detail h3{font-size:18px}.homepage .col-sm-6{clear:left}.homepage .small-width{display:block}}@media (max-width:1199px){.homepage .col-sm-6 img{float:none}.homepage .col-sm-6 p{margin-left:0}} \ No newline at end of file diff --git a/Sources/webAduc/www/src/css/login.css b/Sources/webAduc/www/src/css/login.css new file mode 100644 index 0000000..4f000d5 --- /dev/null +++ b/Sources/webAduc/www/src/css/login.css @@ -0,0 +1,65 @@ +body { + background-color: white; +} + +#loginbox { + margin-top: 30px; +} + +#loginbox > div:first-child { + padding-bottom: 10px; +} + +.iconmelon { + display: block; + margin: auto; +} + +#form > div { + margin-bottom: 25px; +} + +#form > div:last-child { + margin-top: 10px; + margin-bottom: 10px; +} + +.panel { + background-color: ffffff; +} + +.panel-body { + padding-top: 30px; + background-color: rgba(2555,255,255,.3); +} + +#particles { + width: 100%; + height: 100%; + overflow: hidden; + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + z-index: -2; +} + +.iconmelon, +.im { + position: relative; + width: 150px; + height: 150px; + display: block; + fill: #525151; +} + +.iconmelon:after, +.im:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/Sources/webAduc/www/src/css/style.css b/Sources/webAduc/www/src/css/style.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Sources/webAduc/www/src/css/style.css @@ -0,0 +1 @@ + diff --git a/Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.ttf b/Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d0e096c9f1a767a3d549b7ec353d92184c46d879 GIT binary patch literal 23384 zcmV(+K;6F|iwFP!000001MIzNU>nu706cdVjrP$tl4V=ACE1eY-I686apLT|vu_Sd z2t*JPNMe?R0AUMZUm99)2>VM4q#+?;DN9LP3Z>|k*OpS#77DGC2Yh)gsWzJ?HM{oO{k0hA<2xG1oF2(>HbMqS=JUAqwT){oV7=Jv$}LZv8#OJa7=6C(efi<7D0r z_ebHr_WZS%ZhGtWniUN5AmryRy>R`?v)3QL=a&rg$n6ZnwyiyTQy*Ew!23J#{hD=W zuRZsfrbq6Fd#D4qvv2(+m;PYahjE5^>{^B~{`#_W&pGeavPJV4=BY)HUk5*|J@a2< zcm4{)H#c6lK@Bh2PM=uehcyRaa8HOEt~|Yi;`!UiHb!80&dk0E_ot~L`7RS>U%*!c zCjZA4#23$6I)@q0)SNiMy?g@NMQ|}!W--zJYUmvn0By%K!OsX8-c$4N=R+!?>716% zlLK&nK9njj_3(Bh^9b{3jj^V+=B%2%H9rhEf)#Z`Ard+kHiV@?ZqP939gGZi4$c@{ zHn?JN_2A`$w+wDSWH{tK6gkv+XzHOEhn5{$edzK-w;a0X(2m2p!-m7|!`{RG!{Ni7 zhi4pKc6h~?C!k*u&jt#KISC{(C=A*LYX;i}#}Cc}Naqap4PHCA?GQO+J5+P1?a=r` z(+|x%wBk_Tp=%FqJGA{U1CVTo%K%dFaNFVWhv%t~PW<b0sLSG`#Ej9xD4fq(BG&JKpXUAv3Z zmQ;V(-wp6<#EypFBiawg>Z96E)Ure0GkOSH)gR-8@GSMmxFFoC{umj;AF4mb%`gFn z`eQr{6Rc2wILhmW)F0zzm=IBaOgV(d)E@)+!UpxnR6;1JKgP!}gOGO+aj$|9#_b^H z@k0pXdl1TFLJ$JdgAs_gL5ROjh>wPFJp5)rd@_VEHwTwNd=7*w)F0Ce;W_YI4RLrj z*ayGMA$~T5*TN6hBjy4Kx4~~a#9O+vkyYRW{b>@^?G^F$6~XKlacc11p-2#c_m# zzjXYQ+_J?or~Xslf|!*w5>FM8h%VGh zAVt�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 literal 0 HcmV?d00001 diff --git a/Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.woff2 b/Sources/webAduc/www/src/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..659510c6c3af1f59880650bc8cf4eea99c0a9d16 GIT binary patch literal 18056 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