From 9ff10edc80a102305815f33b701ac3f9480579d5 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Mon, 18 Nov 2013 17:40:58 +0000 Subject: [PATCH] first draft of system architecture documentation. --- docs/system-architecture/.gitattributes | 1 + docs/system-architecture/.gitignore | 2 + docs/system-architecture/.htaccess | 544 + docs/system-architecture/404.html | 157 + docs/system-architecture/CHANGELOG.md | 122 + docs/system-architecture/CONTRIBUTING.md | 118 + .../apple-touch-icon-114x114-precomposed.png | Bin 0 -> 1189 bytes .../apple-touch-icon-144x144-precomposed.png | Bin 0 -> 1475 bytes .../apple-touch-icon-57x57-precomposed.png | Bin 0 -> 730 bytes .../apple-touch-icon-72x72-precomposed.png | Bin 0 -> 854 bytes .../apple-touch-icon-precomposed.png | Bin 0 -> 730 bytes docs/system-architecture/apple-touch-icon.png | Bin 0 -> 730 bytes docs/system-architecture/crossdomain.xml | 15 + .../css/bootstrap-3.0.0/bootstrap-theme.css | 384 + .../bootstrap-3.0.0/bootstrap-theme.min.css | 1 + .../css/bootstrap-3.0.0/bootstrap.css | 6805 ++++++++++++ .../css/bootstrap-3.0.0/bootstrap.min.css | 9 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 14079 bytes .../fonts/glyphicons-halflings-regular.svg | 228 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 29512 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 16448 bytes docs/system-architecture/css/main.css | 300 + docs/system-architecture/css/normalize.css | 533 + docs/system-architecture/css/toc-0.1.2.zip | Bin 0 -> 86465 bytes .../css/toc-0.1.2/.gitignore | 4 + .../css/toc-0.1.2/.gitmodules | 0 .../css/toc-0.1.2/Gruntfile.js | 100 + .../css/toc-0.1.2/History.md | 46 + .../system-architecture/css/toc-0.1.2/LICENSE | 22 + .../css/toc-0.1.2/README.md | 5 + .../css/toc-0.1.2/component.json | 14 + .../css/toc-0.1.2/dist/jquery.toc.js | 107 + .../css/toc-0.1.2/dist/jquery.toc.min.js | 8 + .../css/toc-0.1.2/docs/index.md | 101 + .../css/toc-0.1.2/docs/jquery-deps.md | 10 + .../css/toc-0.1.2/example/index.html | 69 + .../css/toc-0.1.2/example/jquery.js | 9266 +++++++++++++++++ .../css/toc-0.1.2/example/live.js | 233 + .../css/toc-0.1.2/lib/copyright.js | 7 + .../css/toc-0.1.2/lib/toc.js | 100 + .../css/toc-0.1.2/package.json | 17 + .../css/toc-0.1.2/test/index.html | 25 + .../css/toc-0.1.2/test/toc.test.js | 4 + .../diagrams/command-query.png | Bin 0 -> 42505 bytes .../diagrams/command-query.xml | 1 + .../diagrams/platform-categories.png | Bin 0 -> 14884 bytes .../diagrams/platform-categories.xml | 1 + .../diagrams/platform-systemview.png | Bin 0 -> 43613 bytes .../diagrams/platform-systemview.xml | 1 + docs/system-architecture/favicon.ico | Bin 0 -> 766 bytes docs/system-architecture/humans.txt | 15 + docs/system-architecture/img/mifos-icon.png | Bin 0 -> 6363 bytes docs/system-architecture/index.html | 587 ++ docs/system-architecture/js/plugins.js | 23 + .../bootstrap-3.0.0/assets/application.js | 83 + .../bootstrap-3.0.0/assets/customizer.js | 290 + .../bootstrap-3.0.0/assets/filesaver.js | 169 + .../vendor/bootstrap-3.0.0/assets/holder.js | 419 + .../bootstrap-3.0.0/assets/html5shiv.js | 8 + .../vendor/bootstrap-3.0.0/assets/jquery.js | 6 + .../bootstrap-3.0.0/assets/json2.js.htm | 1171 +++ .../js/vendor/bootstrap-3.0.0/assets/jszip.js | 1425 +++ .../js/vendor/bootstrap-3.0.0/assets/less.js | 9 + .../bootstrap-3.0.0/assets/raw-files.js | 3 + .../bootstrap-3.0.0/assets/respond.min.js | 6 + .../vendor/bootstrap-3.0.0/assets/uglify.js | 14 + .../js/vendor/bootstrap-3.0.0/bootstrap.js | 1999 ++++ .../vendor/bootstrap-3.0.0/bootstrap.min.js | 6 + .../js/vendor/jquery-1.9.1.min.js | 5 + .../js/vendor/modernizr-2.6.2.min.js | 4 + .../js/vendor/toc-0.1.2/jquery.toc.min.js | 8 + docs/system-architecture/robots.txt | 3 + 72 files changed, 25613 insertions(+) create mode 100644 docs/system-architecture/.gitattributes create mode 100644 docs/system-architecture/.gitignore create mode 100644 docs/system-architecture/.htaccess create mode 100644 docs/system-architecture/404.html create mode 100644 docs/system-architecture/CHANGELOG.md create mode 100644 docs/system-architecture/CONTRIBUTING.md create mode 100644 docs/system-architecture/apple-touch-icon-114x114-precomposed.png create mode 100644 docs/system-architecture/apple-touch-icon-144x144-precomposed.png create mode 100644 docs/system-architecture/apple-touch-icon-57x57-precomposed.png create mode 100644 docs/system-architecture/apple-touch-icon-72x72-precomposed.png create mode 100644 docs/system-architecture/apple-touch-icon-precomposed.png create mode 100644 docs/system-architecture/apple-touch-icon.png create mode 100644 docs/system-architecture/crossdomain.xml create mode 100644 docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css create mode 100644 docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css create mode 100644 docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css create mode 100644 docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css create mode 100644 docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/system-architecture/css/main.css create mode 100644 docs/system-architecture/css/normalize.css create mode 100644 docs/system-architecture/css/toc-0.1.2.zip create mode 100644 docs/system-architecture/css/toc-0.1.2/.gitignore create mode 100644 docs/system-architecture/css/toc-0.1.2/.gitmodules create mode 100644 docs/system-architecture/css/toc-0.1.2/Gruntfile.js create mode 100644 docs/system-architecture/css/toc-0.1.2/History.md create mode 100644 docs/system-architecture/css/toc-0.1.2/LICENSE create mode 100644 docs/system-architecture/css/toc-0.1.2/README.md create mode 100644 docs/system-architecture/css/toc-0.1.2/component.json create mode 100644 docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js create mode 100644 docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js create mode 100644 docs/system-architecture/css/toc-0.1.2/docs/index.md create mode 100644 docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md create mode 100644 docs/system-architecture/css/toc-0.1.2/example/index.html create mode 100644 docs/system-architecture/css/toc-0.1.2/example/jquery.js create mode 100644 docs/system-architecture/css/toc-0.1.2/example/live.js create mode 100644 docs/system-architecture/css/toc-0.1.2/lib/copyright.js create mode 100644 docs/system-architecture/css/toc-0.1.2/lib/toc.js create mode 100644 docs/system-architecture/css/toc-0.1.2/package.json create mode 100644 docs/system-architecture/css/toc-0.1.2/test/index.html create mode 100644 docs/system-architecture/css/toc-0.1.2/test/toc.test.js create mode 100644 docs/system-architecture/diagrams/command-query.png create mode 100644 docs/system-architecture/diagrams/command-query.xml create mode 100644 docs/system-architecture/diagrams/platform-categories.png create mode 100644 docs/system-architecture/diagrams/platform-categories.xml create mode 100644 docs/system-architecture/diagrams/platform-systemview.png create mode 100644 docs/system-architecture/diagrams/platform-systemview.xml create mode 100644 docs/system-architecture/favicon.ico create mode 100644 docs/system-architecture/humans.txt create mode 100644 docs/system-architecture/img/mifos-icon.png create mode 100644 docs/system-architecture/index.html create mode 100644 docs/system-architecture/js/plugins.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jquery.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/json2.js.htm create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jszip.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/less.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/raw-files.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/respond.min.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/uglify.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.js create mode 100644 docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.min.js create mode 100644 docs/system-architecture/js/vendor/jquery-1.9.1.min.js create mode 100644 docs/system-architecture/js/vendor/modernizr-2.6.2.min.js create mode 100644 docs/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js create mode 100644 docs/system-architecture/robots.txt diff --git a/docs/system-architecture/.gitattributes b/docs/system-architecture/.gitattributes new file mode 100644 index 000000000..212566614 --- /dev/null +++ b/docs/system-architecture/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/docs/system-architecture/.gitignore b/docs/system-architecture/.gitignore new file mode 100644 index 000000000..16b2d7d0a --- /dev/null +++ b/docs/system-architecture/.gitignore @@ -0,0 +1,2 @@ +# Include your project-specific ignores in this file +# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files diff --git a/docs/system-architecture/.htaccess b/docs/system-architecture/.htaccess new file mode 100644 index 000000000..64b43ad14 --- /dev/null +++ b/docs/system-architecture/.htaccess @@ -0,0 +1,544 @@ +# Apache Configuration File + +# (!) Using `.htaccess` files slows down Apache, therefore, if you have access +# to the main server config file (usually called `httpd.conf`), you should add +# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html. + +# ############################################################################## +# # CROSS-ORIGIN RESOURCE SHARING (CORS) # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Cross-domain AJAX requests | +# ------------------------------------------------------------------------------ + +# Enable cross-origin AJAX requests. +# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity +# http://enable-cors.org/ + +# +# Header set Access-Control-Allow-Origin "*" +# + +# ------------------------------------------------------------------------------ +# | CORS-enabled images | +# ------------------------------------------------------------------------------ + +# Send the CORS header for images when browsers request it. +# https://developer.mozilla.org/en/CORS_Enabled_Image +# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html +# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/ + + + + + SetEnvIf Origin ":" IS_CORS + Header set Access-Control-Allow-Origin "*" env=IS_CORS + + + + +# ------------------------------------------------------------------------------ +# | Web fonts access | +# ------------------------------------------------------------------------------ + +# Allow access from all domains for web fonts + + + + Header set Access-Control-Allow-Origin "*" + + + + +# ############################################################################## +# # ERRORS # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | 404 error prevention for non-existing redirected folders | +# ------------------------------------------------------------------------------ + +# Prevent Apache from returning a 404 error for a rewrite if a directory +# with the same name does not exist. +# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews +# http://www.webmasterworld.com/apache/3808792.htm + +Options -MultiViews + +# ------------------------------------------------------------------------------ +# | Custom error messages / pages | +# ------------------------------------------------------------------------------ + +# You can customize what Apache returns to the client in case of an error (see +# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.: + +ErrorDocument 404 /404.html + + +# ############################################################################## +# # INTERNET EXPLORER # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Better website experience | +# ------------------------------------------------------------------------------ + +# Force IE to render pages in the highest available mode in the various +# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf. +# Use, if installed, Google Chrome Frame. + + + Header set X-UA-Compatible "IE=edge,chrome=1" + # `mod_headers` can't match based on the content-type, however, we only + # want to send this header for HTML pages and not for the other resources + + Header unset X-UA-Compatible + + + +# ------------------------------------------------------------------------------ +# | Cookie setting from iframes | +# ------------------------------------------------------------------------------ + +# Allow cookies to be set from iframes in IE. + +# +# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" +# + +# ------------------------------------------------------------------------------ +# | Screen flicker | +# ------------------------------------------------------------------------------ + +# Stop screen flicker in IE on CSS rollovers (this only works in +# combination with the `ExpiresByType` directives for images from below). + +# BrowserMatch "MSIE" brokenvary=1 +# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 +# BrowserMatch "Opera" !brokenvary +# SetEnvIf brokenvary 1 force-no-vary + + +# ############################################################################## +# # MIME TYPES AND ENCODING # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Proper MIME types for all files | +# ------------------------------------------------------------------------------ + + + + # Audio + AddType audio/mp4 m4a f4a f4b + AddType audio/ogg oga ogg + + # JavaScript + # Normalize to standard type (it's sniffed in IE anyways): + # http://tools.ietf.org/html/rfc4329#section-7.2 + AddType application/javascript js jsonp + AddType application/json json + + # Video + AddType video/mp4 mp4 m4v f4v f4p + AddType video/ogg ogv + AddType video/webm webm + AddType video/x-flv flv + + # Web fonts + AddType application/font-woff woff + AddType application/vnd.ms-fontobject eot + + # Browsers usually ignore the font MIME types and sniff the content, + # however, Chrome shows a warning if other MIME types are used for the + # following fonts. + AddType application/x-font-ttf ttc ttf + AddType font/opentype otf + + # Make SVGZ fonts work on iPad: + # https://twitter.com/FontSquirrel/status/14855840545 + AddType image/svg+xml svg svgz + AddEncoding gzip svgz + + # Other + AddType application/octet-stream safariextz + AddType application/x-chrome-extension crx + AddType application/x-opera-extension oex + AddType application/x-shockwave-flash swf + AddType application/x-web-app-manifest+json webapp + AddType application/x-xpinstall xpi + AddType application/xml atom rdf rss xml + AddType image/webp webp + AddType image/x-icon ico + AddType text/cache-manifest appcache manifest + AddType text/vtt vtt + AddType text/x-component htc + AddType text/x-vcard vcf + + + +# ------------------------------------------------------------------------------ +# | UTF-8 encoding | +# ------------------------------------------------------------------------------ + +# Use UTF-8 encoding for anything served as `text/html` or `text/plain`. +AddDefaultCharset utf-8 + +# Force UTF-8 for certain file formats. + + AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml + + + +# ############################################################################## +# # URL REWRITES # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Rewrite engine | +# ------------------------------------------------------------------------------ + +# Turning on the rewrite engine and enabling the `FollowSymLinks` option is +# necessary for the following directives to work. + +# If your web host doesn't allow the `FollowSymlinks` option, you may need to +# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the +# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks + +# Also, some cloud hosting services require `RewriteBase` to be set: +# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site + + + Options +FollowSymlinks + # Options +SymLinksIfOwnerMatch + RewriteEngine On + # RewriteBase / + + +# ------------------------------------------------------------------------------ +# | Suppressing / Forcing the "www." at the beginning of URLs | +# ------------------------------------------------------------------------------ + +# The same content should never be available under two different URLs especially +# not with and without "www." at the beginning. This can cause SEO problems +# (duplicate content), therefore, you should choose one of the alternatives and +# redirect the other one. + +# By default option 1 (no "www.") is activated: +# http://no-www.org/faq.php?q=class_b + +# If you'd prefer to use option 2, just comment out all the lines from option 1 +# and uncomment the ones from option 2. + +# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME! + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Option 1: rewrite www.example.com → example.com + + + RewriteCond %{HTTPS} !=on + RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Option 2: rewrite example.com → www.example.com + +# Be aware that the following might not be a good idea if you use "real" +# subdomains for certain parts of your website. + +# +# RewriteCond %{HTTPS} !=on +# RewriteCond %{HTTP_HOST} !^www\..+$ [NC] +# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] +# + + +# ############################################################################## +# # SECURITY # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Content Security Policy (CSP) | +# ------------------------------------------------------------------------------ + +# You can mitigate the risk of cross-site scripting and other content-injection +# attacks by setting a Content Security Policy which whitelists trusted sources +# of content for your site. + +# The example header below allows ONLY scripts that are loaded from the current +# site's origin (no inline scripts, no CDN, etc). This almost certainly won't +# work as-is for your site! + +# To get all the details you'll need to craft a reasonable policy for your site, +# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or +# see the specification: http://w3.org/TR/CSP). + +# +# Header set Content-Security-Policy "script-src 'self'; object-src 'self'" +# +# Header unset Content-Security-Policy +# +# + +# ------------------------------------------------------------------------------ +# | File access | +# ------------------------------------------------------------------------------ + +# Block access to directories without a default document. +# Usually you should leave this uncommented because you shouldn't allow anyone +# to surf through every directory on your server (which may includes rather +# private places like the CMS's directories). + + + Options -Indexes + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Block access to hidden files and directories. +# This includes directories used by version control systems such as Git and SVN. + + + RewriteCond %{SCRIPT_FILENAME} -d [OR] + RewriteCond %{SCRIPT_FILENAME} -f + RewriteRule "(^|/)\." - [F] + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Block access to backup and source files. +# These files may be left by some text editors and can pose a great security +# danger when anyone has access to them. + + + Order allow,deny + Deny from all + Satisfy All + + +# ------------------------------------------------------------------------------ +# | Secure Sockets Layer (SSL) | +# ------------------------------------------------------------------------------ + +# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.: +# prevent `https://www.example.com` when your certificate only allows +# `https://secure.example.com`. + +# +# RewriteCond %{SERVER_PORT} !^443 +# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L] +# + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Force client-side SSL redirection. + +# If a user types "example.com" in his browser, the above rule will redirect him +# to the secure version of the site. That still leaves a window of opportunity +# (the initial HTTP connection) for an attacker to downgrade or redirect the +# request. The following header ensures that browser will ONLY connect to your +# server via HTTPS, regardless of what the users type in the address bar. +# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ + +# +# Header set Strict-Transport-Security max-age=16070400; +# + +# ------------------------------------------------------------------------------ +# | Server software information | +# ------------------------------------------------------------------------------ + +# Avoid displaying the exact Apache version number, the description of the +# generic OS-type and the information about Apache's compiled-in modules. + +# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`! + +# ServerTokens Prod + + +# ############################################################################## +# # WEB PERFORMANCE # +# ############################################################################## + +# ------------------------------------------------------------------------------ +# | Compression | +# ------------------------------------------------------------------------------ + + + + # Force compression for mangled headers. + # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping + + + SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding + RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding + + + + # Compress all output labeled with one of the following MIME-types + # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` + # and can remove the `` and `` lines + # as `AddOutputFilterByType` is still in the core directives). + + AddOutputFilterByType DEFLATE application/atom+xml \ + application/javascript \ + application/json \ + application/rss+xml \ + application/vnd.ms-fontobject \ + application/x-font-ttf \ + application/x-web-app-manifest+json \ + application/xhtml+xml \ + application/xml \ + font/opentype \ + image/svg+xml \ + image/x-icon \ + text/css \ + text/html \ + text/plain \ + text/x-component \ + text/xml + + + + +# ------------------------------------------------------------------------------ +# | Content transformations | +# ------------------------------------------------------------------------------ + +# Prevent some of the mobile network providers from modifying the content of +# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5. + +# +# Header set Cache-Control "no-transform" +# + +# ------------------------------------------------------------------------------ +# | ETag removal | +# ------------------------------------------------------------------------------ + +# Since we're sending far-future expires headers (see below), ETags can +# be removed: http://developer.yahoo.com/performance/rules.html#etags. + +# `FileETag None` is not enough for every server. + + Header unset ETag + + +FileETag None + +# ------------------------------------------------------------------------------ +# | Expires headers (for better cache control) | +# ------------------------------------------------------------------------------ + +# The following expires headers are set pretty far in the future. If you don't +# control versioning with filename-based cache busting, consider lowering the +# cache time for resources like CSS and JS to something like 1 week. + + + + ExpiresActive on + ExpiresDefault "access plus 1 month" + + # CSS + ExpiresByType text/css "access plus 1 year" + + # Data interchange + ExpiresByType application/json "access plus 0 seconds" + ExpiresByType application/xml "access plus 0 seconds" + ExpiresByType text/xml "access plus 0 seconds" + + # Favicon (cannot be renamed!) + ExpiresByType image/x-icon "access plus 1 week" + + # HTML components (HTCs) + ExpiresByType text/x-component "access plus 1 month" + + # HTML + ExpiresByType text/html "access plus 0 seconds" + + # JavaScript + ExpiresByType application/javascript "access plus 1 year" + + # Manifest files + ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" + ExpiresByType text/cache-manifest "access plus 0 seconds" + + # Media + ExpiresByType audio/ogg "access plus 1 month" + ExpiresByType image/gif "access plus 1 month" + ExpiresByType image/jpeg "access plus 1 month" + ExpiresByType image/png "access plus 1 month" + ExpiresByType video/mp4 "access plus 1 month" + ExpiresByType video/ogg "access plus 1 month" + ExpiresByType video/webm "access plus 1 month" + + # Web feeds + ExpiresByType application/atom+xml "access plus 1 hour" + ExpiresByType application/rss+xml "access plus 1 hour" + + # Web fonts + ExpiresByType application/font-woff "access plus 1 month" + ExpiresByType application/vnd.ms-fontobject "access plus 1 month" + ExpiresByType application/x-font-ttf "access plus 1 month" + ExpiresByType font/opentype "access plus 1 month" + ExpiresByType image/svg+xml "access plus 1 month" + + + +# ------------------------------------------------------------------------------ +# | Filename-based cache busting | +# ------------------------------------------------------------------------------ + +# If you're not using a build process to manage your filename version revving, +# you might want to consider enabling the following directives to route all +# requests such as `/css/style.12345.css` to `/css/style.css`. + +# To understand why this is important and a better idea than `*.css?v231`, read: +# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring + +# +# RewriteCond %{REQUEST_FILENAME} !-f +# RewriteCond %{REQUEST_FILENAME} !-d +# RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L] +# + +# ------------------------------------------------------------------------------ +# | File concatenation | +# ------------------------------------------------------------------------------ + +# Allow concatenation from within specific CSS and JS files, e.g.: +# Inside of `script.combined.js` you could have +# +# +# and they would be included into this single file. + +# +# +# Options +Includes +# AddOutputFilterByType INCLUDES application/javascript application/json +# SetOutputFilter INCLUDES +# +# +# Options +Includes +# AddOutputFilterByType INCLUDES text/css +# SetOutputFilter INCLUDES +# +# + +# ------------------------------------------------------------------------------ +# | Persistent connections | +# ------------------------------------------------------------------------------ + +# Allow multiple requests to be sent over the same TCP connection: +# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive. + +# Enable if you serve a lot of static content but, be aware of the +# possible disadvantages! + +# +# Header set Connection Keep-Alive +# diff --git a/docs/system-architecture/404.html b/docs/system-architecture/404.html new file mode 100644 index 000000000..fdace4ab1 --- /dev/null +++ b/docs/system-architecture/404.html @@ -0,0 +1,157 @@ + + + + + Page Not Found :( + + + +
+

Not found :(

+

Sorry, but the page you were trying to view does not exist.

+

It looks like this was the result of either:

+ + + +
+ + diff --git a/docs/system-architecture/CHANGELOG.md b/docs/system-architecture/CHANGELOG.md new file mode 100644 index 000000000..c6ea12538 --- /dev/null +++ b/docs/system-architecture/CHANGELOG.md @@ -0,0 +1,122 @@ +### HEAD + +### 4.2.0 (April 8, 2013) + +* Remove Google Analytics protocol check ([#1319](https://github.com/h5bp/html5-boilerplate/pull/1319)). +* Update to Normalize.css 1.1.1. +* Update Apache configurations to include the latest changes in the canonical + [`.htaccess`](https://github.com/h5bp/server-configs/blob/master/apache/.htaccess) + file. +* Use a protocol relative URL for the 404 template script. +* Update to jQuery 1.9.1. + +### 4.1.0 (January 21, 2013) + +* Update to Normalize.css 1.1.0. +* Update to jQuery 1.9.0. + +### 4.0.3 (January 12, 2013) + +* Use 32x32 favicon.ico ([#1286](https://github.com/h5bp/html5-boilerplate/pull/1286)). +* Remove named function expression in plugins.js ([#1280](https://github.com/h5bp/html5-boilerplate/pull/1280)). +* Adjust CSS image-replacement code ([#1239](https://github.com/h5bp/html5-boilerplate/issues/1239)). +* Update HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)). + +### 4.0.2 (December 9, 2012) + +* Update placeholder icons. +* Update to Normalize.css 1.0.2. +* Update to jQuery 1.8.3. + +### 4.0.1 (October 20, 2012) + +* Further improvements to `console` method stubbing ([#1206](https://github.com/h5bp/html5-boilerplate/issues/1206), [#1229](https://github.com/h5bp/html5-boilerplate/pull/1229)). +* Update to jQuery 1.8.2. +* Update to Modernizr 2.6.2. +* Minor additions to the documentation. + +### 4.0.0 (August 28, 2012) + +* Improve the Apache compression configuration ([#1012](https://github.com/h5bp/html5-boilerplate/issues/1012), [#1173](https://github.com/h5bp/html5-boilerplate/issues/1173)). +* Add a HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)). +* Add bundled docs ([#1154](https://github.com/h5bp/html5-boilerplate/issues/1154)). +* Add MIT license ([#1139](https://github.com/h5bp/html5-boilerplate/issues/1139)). +* Update to Normalize.css 1.0.1. +* Separate Normalize.css from the rest of the CSS ([#1160](https://github.com/h5bp/html5-boilerplate/issues/1160)). +* Improve `console.log` protection ([#1107](https://github.com/h5bp/html5-boilerplate/issues/1107)). +* Replace hot pink text selection color with a neutral color. +* Change image replacement technique ([#1149](https://github.com/h5bp/html5-boilerplate/issues/1149)). +* Code format and consistency changes ([#1112](https://github.com/h5bp/html5-boilerplate/issues/1112)). +* Rename CSS file and rename JS files and subdirectories. +* Update to jQuery 1.8 ([#1161](https://github.com/h5bp/html5-boilerplate/issues/1161)). +* Update to Modernizr 2.6.1 ([#1086](https://github.com/h5bp/html5-boilerplate/issues/1086)). +* Remove uncompressed jQuery ([#1153](https://github.com/h5bp/html5-boilerplate/issues/1153)). +* Remove superfluous inline comments ([#1150](https://github.com/h5bp/html5-boilerplate/issues/1150)). + +### 3.0.2 (February 19, 2012) + +* Update to Modernizr 2.5.3. + +### 3.0.1 (February 08, 2012). + +* Update to Modernizr 2.5.2 (includes html5shiv 3.3). + +### 3.0.0 (February 06, 2012) + +* Improvements to `.htaccess`. +* Improve 404 design. +* Simplify JS folder structure. +* Change `html` IE class names changed to target ranges rather than specific versions of IE. +* Update CSS to include latest normalize.css changes and better typographic defaults ([#825](https://github.com/h5bp/html5-boilerplate/issues/825)). +* Update to Modernizr 2.5 (includes yepnope 1.5 and html5shiv 3.2). +* Update to jQuery 1.7.1. +* Revert to async snippet for the Google Analytics script. +* Remove the ant build script ([#826](https://github.com/h5bp/html5-boilerplate/issues/826)). +* Remove Respond.js ([#816](https://github.com/h5bp/html5-boilerplate/issues/816)). +* Remove the `demo/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)). +* Remove the `test/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)). +* Remove Google Chrome Frame script for IE6 users; replace with links to Chrome Frame and options for alternative browsers. +* Remove `initial-scale=1` from the viewport `meta` ([#824](https://github.com/h5bp/html5-boilerplate/issues/824)). +* Remove `defer` from all scripts to avoid legacy IE bugs. +* Remove explicit Site Speed tracking for Google Analytics. It's now enabled by default. + +### 2.0.0 (August 10, 2011) + +* Change starting CSS to be based on normalize.css instead of reset.css ([#500](https://github.com/h5bp/html5-boilerplate/issues/500)). +* Add Respond.js media query polyfill. +* Add Google Chrome Frame script prompt for IE6 users. +* Simplify the `html` conditional comments for modern browsers and add an `oldie` class. +* Update clearfix to use "micro clearfix". +* Add placeholder CSS MQs for mobile-first approach. +* Add `textarea { resize: vertical; }` to only allow vertical resizing. +* Add `img { max-width: 100%; }` to the print styles; prevents images being truncated. +* Add Site Speed tracking for Google Analytics. +* Update to jQuery 1.6.2 (and use minified by default). +* Update to Modernizr 2.0 Complete, Production minified (includes yepnope, html5shiv, and Respond.js). +* Use `Modernizr.load()` to load the Google Analytics script. +* Much faster build process. +* Add build script options for CSSLint, JSLint, JSHint tools. +* Build script now compresses all images in subfolders. +* Build script now versions files by SHA hash. +* Many `.htaccess` improvements including: disable directory browsing, improved support for all versions of Apache, more robust and extensive HTTP compression rules. +* Remove `handheld.css` as it has very poor device support. +* Remove touch-icon `link` elements from the HTML and include improved touch-icon support. +* Remove the cache-busting query paramaters from files references in the HTML. +* Remove IE6 PNGFix. + +### 1.0.0 (March 21, 2011) + +* Rewrite build script to make it more customizable and flexible. +* Add a humans.txt. +* Numerous `.htaccess` improvements (including inline documentation). +* Move the alternative server configurations to the H5BP server configs repo. +* Use a protocol-relative url to reference jQuery and prevent mixed content warnings. +* Optimize the Google Analytics snippet. +* Use Eric Meyer's recent CSS reset update and the HTML5 Doctor reset. +* More robust `sub`/`sup` CSS styles. +* Add keyboard `.focusable` helper class that extends `.visuallyhidden`. +* Print styles no longer print hash or JavaScript links. +* Add a print reset for IE's proprietary filters. +* Remove IE9-specific conditional class on the `html` element. +* Remove margins from lists within `nav` elements. +* Remove YUI profiling. diff --git a/docs/system-architecture/CONTRIBUTING.md b/docs/system-architecture/CONTRIBUTING.md new file mode 100644 index 000000000..6facbb646 --- /dev/null +++ b/docs/system-architecture/CONTRIBUTING.md @@ -0,0 +1,118 @@ +# Contributing to HTML5 Boilerplate + +♥ [HTML5 Boilerplate](http://html5boilerplate.com) and want to get involved? +Thanks! There are plenty of ways you can help! + + +## Bugs + +A bug is a _demonstrable problem_ that is caused by the code in the +repository. Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been + reported. + +2. **Check if the issue has been fixed** — try to reproduce it using the + latest `master` branch in the repository. + +3. **Isolate the problem** — ideally create a [reduced test + case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. What is +your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? What would you expect to be the outcome? All these +details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` (a link to the reduced test case) +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + +**[File a bug report](https://github.com/h5bp/html5-boilerplate/issues/)** + + +## Pull requests + +Good pull requests - patches, improvements, new features - are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. If your contribution involves a significant amount of work or substantial +changes to any part of the project, please open an issue to discuss it first. + +Make sure to adhere to the coding conventions used throughout a project +(indentation, accurate comments, etc.). Please update any documentation that is +relevant to the change you're making. + +Please follow this process; it's the best way to get your work included in the +project: + +1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, + and configure the remotes: + + ```bash + # Clones your fork of the repo into the current directory in terminal + git clone https://github.com//html5-boilerplate.git + # Navigate to the newly cloned directory + cd html5-boilerplate + # Assigns the original repo to a remote called "upstream" + git remote add upstream https://github.com/h5bp/html5-boilerplate.git + ``` + +2. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout master + git pull upstream master + ``` + +3. Create a new topic branch to contain your feature, change, or fix: + + ```bash + git checkout -b + ``` + +4. Commit your changes in logical chunks. Please adhere to these [git commit + message + guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + or your pull request is unlikely be merged into the main project. Use git's + [interactive rebase](https://help.github.com/articles/interactive-rebase) + feature to tidy up your commits before making them public. + +5. Locally merge (or rebase) the upstream development branch into your topic branch: + + ```bash + git pull [--rebase] upstream master + ``` + +6. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +10. [Open a Pull Request](https://help.github.com/articles/using-pull-requests) with a + clear title and description. + + +## Do not… + +Please **do not** use the issue tracker for personal support requests (use +[StackOverflow](http://stackoverflow.com/questions/tagged/html5boilerplate) or IRC). + +Please **do not** derail or troll issues. Keep the +discussion on topic and respect the opinions of others. diff --git a/docs/system-architecture/apple-touch-icon-114x114-precomposed.png b/docs/system-architecture/apple-touch-icon-114x114-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..0fdf60e8fe6ab43513c6bf2f0037d9fb4c9b0b1a GIT binary patch literal 1189 zcmV;W1X}xvP)mUp-Y@LSbk? zU1UULY(imaF+)fRwOd#`^j+xPw#+XQxq zL^2|Qiv6(gT;Kx+oDu27VzsMwWP@yw4YENt$Oh?<=T^=3pOKvP z3*-!e#P~|7{~i|VRgUy>WXfijp{*RrX)cl#$W7HqpB9RSVWC#V$n=8jvhNVhN|A(u zoEAj0Qlw8oac2Y3tP+`0kPXq?Rf#0@O6~|5O$*^`E)SxaRfz0fBRLsBG%G_o^hQ2J z^Sv@;bc;;c92HFq;j0|YPDMzE3W^vinij@aD7_4#Sq;*rqLLm&vl3)NCB?9IWtAXf z8OhlIv5#07UqLSGjdJ0Tu60i_Em7OLCs%LsOR@ zD?u+yMHM7n15;f#oruJvx_yX;Hr0_$-A=U%&&8P=GuhPFrDn%E-N%?Z-s{&oixH+C zSAr%}rb43n4@`X(iEkQ@7rOs=z@}T#)C1E%V*9U6*s(N>Y9zA%tP)cf*sXx1TBfe0 zFs=<2kw_VT!WLy=#3KV0GG%{0g)koVb{~8`*?ai=Qw}2@sU9Hrd@20+`*jK9l9?eL zs+5->@xQ)(K^TpYks8TQ&V~i_<%t<1bs8vuFPA?bu&ooldY!|mX^!-DkT!$swq=gg z+Yb_Oc5aU3TF3~_zR(yMXui&Dp#6EoLR3##H#qP`rf-V0OBQ1impMBtkQ+m!BjUQ+FNq%F^lyuu~jl1CGZbV}!@$fazCEmS)O8Nu8rR)3d^ z)s98BVQy5bKWX1Snj0jN2y=6HOSNtv%@GdiOLKE?OATyF9YwV(ksi#A)^$Ttq1q8h z_?#j~qg;{4GN^VGQo0$Hi#TCD_!$F-WXr`^h=x*~=N!7j?>_sjkbX6^57mx90u-X5 zrQsRc!XW_)>DPzO5lEx}`v3extwA=(2H7ARWP|(%O3nYQ{?&9s00000NkvXXu0mjf DWcvv? literal 0 HcmV?d00001 diff --git a/docs/system-architecture/apple-touch-icon-144x144-precomposed.png b/docs/system-architecture/apple-touch-icon-144x144-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..257c77acf687be13f6aa9f39102a73538192e62d GIT binary patch literal 1475 zcmV;!1w8tRP)dEjKwtV`?lxNG2*PKU!cmNKGRqCnYN_Bq=JRW+F61NGL8a zDK|VSGc_$lOFdOvC^b1NJVG%*LoZ2DDmp(UE-)rAGdfXMCo?ueVQDy2Tsl`@FiTTJ zWNbWDTPZOzv+U*Z000EmNklhmONG3?6p56l*qW4&?E#h-6%V zI?aKy0^}RCB0^AHfNa+*!XYXTJU?-8KYis(VX3CM+c0U9R_fYv70cAg<5j0<0!` z43a8R#pN z3x}{=k2*^}*(6~CU?*)pOCSM3Kh|BGCyM4n1cHd^F3#uaev%#=D!1*uXQyaBlpvwe z4*&Y)S4s1+Ko>+bYHff#L=rY1T9C#z;vLTD-$=s+5Q8F}{rPxC|KqpcvH4Jg0u7J@ zFb;^#_YEZ0NR9DLDmJeG5&4@vLX;BV~;cx+hDVL%mQ(BNOKN+qj$Hi+P zAFy)-J=210=~3geTO8&3wrs%OA?Sk?BxJAIdMYpP(OSL~6-g*TuH-c@yC=65S2AEb z2udkI?CdpLr=K~m*7=zvC@)1FLQo`m&9eJkl$|_#$$%vR1!u2WdV<0;iNR9DblbEe z6gQSf$(f`FsqTPfnr(W3AMJ{Rs;^p#axzd~_L|in$$j+4k^xHq@};j?eW8n(d@0&c zf$S@<`N>lDEx)`J&4@rk`I^=DX3v%_MN=A(d+{|77Z(rio@Bt9g4m_k{CVZzJ}56m zA0(jY!fT$at{vQ+Z%a`^0Sb8BQ@rL~g)K@*2CNw&zpQd_cO?VX3=}9{^Q#5d zBN!_$MPmvOzGjVsA!Y#OnvEzx@P4oHYlS4+2do(h2uXPU*2~=&DK`MANs|R==Pt(q zYX(Bnu)O%_Cq0nn<{->+h>OpECCz9+NIEP&CZwqmh(77)|Ml187Sw`TPz!27EvN;x dpcd4E{su;JG+Y%+Gz0(u002ovPDHLkV1lmsc%=XU literal 0 HcmV?d00001 diff --git a/docs/system-architecture/apple-touch-icon-57x57-precomposed.png b/docs/system-architecture/apple-touch-icon-57x57-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..99b60545abff1da42ff12de48b7d07a8c9e60bea GIT binary patch literal 730 zcmV<00ww*4P)2WJylyHB_=OPQ6nZNqh=y>O(HHv zP9`cVA|xaZ~IfE6KR zVJ#VD&#a9l@!75KTURcJrg9m9 z`JYN3>*0BZ>`JB6(M{maK&4q%>9+~CL%s3vpU*8k)PTueyPy1mooo@BYG43%Sk`x4)OS29p{cZJG8jlt9V{n?R{fhu>4Nv3YbL+i>n0DDQp zM9KvsUD=w+%y>}lSzhe7LT(UwX1CyH zYr420Y=n%lO;{eJn@!;FB#oG9f=GbukUrEJm^MNrnq>Q*|7*U=-?4QpLHWo}m;e9( M07*qoM6N<$g4O*ujsO4v literal 0 HcmV?d00001 diff --git a/docs/system-architecture/apple-touch-icon-72x72-precomposed.png b/docs/system-architecture/apple-touch-icon-72x72-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..8345cc3f13ac3896fe651e782d62947289b26c98 GIT binary patch literal 854 zcmV-c1F8IpP)>1TtX)> zNKiRcTsKl$FiTT_QzArUY&S|zL^UKjS6?kFCo?xSFDoV?AtA6C7G(ec0!v9mK~#8N z?Uz@s+b|GCNviiQ_wLtwdN2FmR6G&{GI*qiwu~SjJ_|U|CGN~X>j+Fu?C4A{59kKy-(QkYqsWGr&1sWY88X0nzqok=<&rD&eBA6Ok*tN(4;? zxG`EKf+houA&3%0ge3!hsjGyG29y&vRk}Dz6i|V}xdw1iP3WN*qnRw4JvdB5^3`}< zm9l7`5AhV%W({za(4#ul_IQ^SXhanei(_cU3d@&u$9N^{QLY`UV=|KW$SSmB0WZ(W z9@!oe%boF9%hkR@hGbu?V8LT8kY)$!c;K~;Ir!^PCb)>#y7)HX8>8&1W%vxZ!9={)W;x~?V+4Uy z5Rr@la~)CMzB2!ud-2A&O}0o!WWXygWqTQxus3AD6)v)ySC%g@tLO&z78kk2<3zZA zuNIXRgDA#Df$++U*9*+e+iVWrqv;br6Ed=9OooVvt6-lhaCWK~6Ll(nj1{U35$WPM g|MP$US#%ct0UmDX>KO2A$^ZZW07*qoM6N<$f}JQ{F#rGn literal 0 HcmV?d00001 diff --git a/docs/system-architecture/apple-touch-icon-precomposed.png b/docs/system-architecture/apple-touch-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..99b60545abff1da42ff12de48b7d07a8c9e60bea GIT binary patch literal 730 zcmV<00ww*4P)2WJylyHB_=OPQ6nZNqh=y>O(HHv zP9`cVA|xaZ~IfE6KR zVJ#VD&#a9l@!75KTURcJrg9m9 z`JYN3>*0BZ>`JB6(M{maK&4q%>9+~CL%s3vpU*8k)PTueyPy1mooo@BYG43%Sk`x4)OS29p{cZJG8jlt9V{n?R{fhu>4Nv3YbL+i>n0DDQp zM9KvsUD=w+%y>}lSzhe7LT(UwX1CyH zYr420Y=n%lO;{eJn@!;FB#oG9f=GbukUrEJm^MNrnq>Q*|7*U=-?4QpLHWo}m;e9( M07*qoM6N<$g4O*ujsO4v literal 0 HcmV?d00001 diff --git a/docs/system-architecture/apple-touch-icon.png b/docs/system-architecture/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..99b60545abff1da42ff12de48b7d07a8c9e60bea GIT binary patch literal 730 zcmV<00ww*4P)2WJylyHB_=OPQ6nZNqh=y>O(HHv zP9`cVA|xaZ~IfE6KR zVJ#VD&#a9l@!75KTURcJrg9m9 z`JYN3>*0BZ>`JB6(M{maK&4q%>9+~CL%s3vpU*8k)PTueyPy1mooo@BYG43%Sk`x4)OS29p{cZJG8jlt9V{n?R{fhu>4Nv3YbL+i>n0DDQp zM9KvsUD=w+%y>}lSzhe7LT(UwX1CyH zYr420Y=n%lO;{eJn@!;FB#oG9f=GbukUrEJm^MNrnq>Q*|7*U=-?4QpLHWo}m;e9( M07*qoM6N<$g4O*ujsO4v literal 0 HcmV?d00001 diff --git a/docs/system-architecture/crossdomain.xml b/docs/system-architecture/crossdomain.xml new file mode 100644 index 000000000..29a035d7f --- /dev/null +++ b/docs/system-architecture/crossdomain.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css new file mode 100644 index 000000000..ad1173569 --- /dev/null +++ b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css @@ -0,0 +1,384 @@ +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn:active, +.btn.active { + background-image: none; +} + +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e6e6e6, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%); + background-repeat: repeat-x; + border-color: #e0e0e0; + border-color: #ccc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); +} + +.btn-default:active, +.btn-default.active { + background-color: #e6e6e6; + border-color: #e0e0e0; +} + +.btn-primary { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + border-color: #2d6ca2; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.btn-primary:active, +.btn-primary.active { + background-color: #3071a9; + border-color: #2d6ca2; +} + +.btn-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + border-color: #419641; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.btn-success:active, +.btn-success.active { + background-color: #449d44; + border-color: #419641; +} + +.btn-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + border-color: #eb9316; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.btn-warning:active, +.btn-warning.active { + background-color: #ec971f; + border-color: #eb9316; +} + +.btn-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + border-color: #c12e2a; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.btn-danger:active, +.btn-danger.active { + background-color: #c9302c; + border-color: #c12e2a; +} + +.btn-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + border-color: #2aabd2; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.btn-info:active, +.btn-info.active { + background-color: #31b0d5; + border-color: #2aabd2; +} + +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.navbar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #f8f8f8, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); + background-repeat: repeat-x; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +} + +.navbar .navbar-nav > .active > a { + background-color: #f8f8f8; +} + +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.navbar-inverse { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222)); + background-image: -webkit-linear-gradient(top, #3c3c3c, 0%, #222222, 100%); + background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); +} + +.navbar-inverse .navbar-nav > .active > a { + background-color: #222222; +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.alert-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc)); + background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #c8e5bc, 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + background-repeat: repeat-x; + border-color: #b2dba1; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); +} + +.alert-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0)); + background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #b9def0, 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + background-repeat: repeat-x; + border-color: #9acfea; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); +} + +.alert-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0)); + background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #f8efc0, 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + background-repeat: repeat-x; + border-color: #f5e79e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); +} + +.alert-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3)); + background-image: -webkit-linear-gradient(top, #f2dede, 0%, #e7c3c3, 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + background-repeat: repeat-x; + border-color: #dca7a7; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); +} + +.progress { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ebebeb, 0%, #f5f5f5, 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); +} + +.progress-bar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.progress-bar-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.progress-bar-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.progress-bar-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.progress-bar-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3278b3, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + background-repeat: repeat-x; + border-color: #3278b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); +} + +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.panel-default > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5, 0%, #e8e8e8, 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.panel-primary > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.panel-success > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6)); + background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #d0e9c6, 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); +} + +.panel-info > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3)); + background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #c4e3f3, 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); +} + +.panel-warning > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc)); + background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #faf2cc, 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); +} + +.panel-danger > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc)); + background-image: -webkit-linear-gradient(top, #f2dede, 0%, #ebcccc, 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); +} + +.well { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #e8e8e8, 0%, #f5f5f5, 100%); + background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + background-repeat: repeat-x; + border-color: #dcdcdc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +} \ No newline at end of file diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css new file mode 100644 index 000000000..cad36b4e6 --- /dev/null +++ b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css @@ -0,0 +1 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-color:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} \ No newline at end of file diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css new file mode 100644 index 000000000..bbda4eed4 --- /dev/null +++ b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css @@ -0,0 +1,6805 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input, +select[multiple], +textarea { + background-image: none; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-warning { + color: #c09853; +} + +.text-danger { + color: #b94a48; +} + +.text-success { + color: #468847; +} + +.text-info { + color: #3a87ad; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +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; +} + +h1 small, +.h1 small { + font-size: 24px; +} + +h2 small, +.h2 small { + font-size: 18px; +} + +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: bold; +} + +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; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.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-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.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-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.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-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-12 { + width: 100%; +} + +@media (min-width: 768px) { + .container { + max-width: 750px; + } + .col-sm-1, + .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-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 992px) { + .container { + max-width: 970px; + } + .col-md-1, + .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-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } + .col-lg-1, + .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-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table thead > tr > th, +.table tbody > tr > th, +.table tfoot > tr > th, +.table thead > tr > td, +.table tbody > tr > td, +.table tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.table caption + thead tr:first-child th, +.table colgroup + thead tr:first-child th, +.table thead:first-child tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed thead > tr > th, +.table-condensed tbody > tr > th, +.table-condensed tfoot > tr > th, +.table-condensed thead > tr > td, +.table-condensed tbody > tr > td, +.table-condensed tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; +} + +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} + +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; + border-color: #eed3d7; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} + +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} + +@media (max-width: 768px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > thead > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > thead > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + padding-top: 7px; + margin-bottom: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@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.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'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.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-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-print:before { + content: "\e045"; +} + +.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-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.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-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-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.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-briefcase:before { + content: "\1f4bc"; +} + +.glyphicon-calendar:before { + content: "\1f4c5"; +} + +.glyphicon-pushpin:before { + content: "\1f4cc"; +} + +.glyphicon-paperclip:before { + content: "\1f4ce"; +} + +.glyphicon-camera:before { + content: "\1f4f7"; +} + +.glyphicon-lock:before { + content: "\1f512"; +} + +.glyphicon-bell:before { + content: "\1f514"; +} + +.glyphicon-bookmark:before { + content: "\1f516"; +} + +.glyphicon-fire:before { + content: "\1f525"; +} + +.glyphicon-wrench:before { + content: "\1f527"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.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; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open > .dropdown-menu { + display: block; +} + +.open > a { + outline: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.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:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.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-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.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 { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.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:not(:first-child):not(:last-child) { + border-radius: 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-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + 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: 45px; + line-height: 45px; +} + +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; +} + +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-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control: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: normal; + line-height: 1; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + 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="radio"], +.input-group-addon input[type="checkbox"] { + 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 > .dropdown-toggle, +.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:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav > li { + position: relative; + display: block; +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.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 #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + 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 { + text-align: center; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 5px; +} + +.nav-pills > li + li { + margin-left: 2px; +} + +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified > li { + float: none; +} + +.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .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-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + z-index: 1030; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .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 .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} + +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} + +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} + +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e6e6e6; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; +} + +.breadcrumb > li + li:before { + padding: 0 5px; + color: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination > li { + display: inline; +} + +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-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:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-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; +} + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-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:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #428bca; +} + +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: bold; +} + +.alert > p, +.alert > ul { + margin-bottom: 0; +} + +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.alert-warning hr { + border-top-color: #f8e5be; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger hr { + border-top-color: #e6c1c7; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-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-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.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: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} + +.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: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table { + margin-bottom: 0; +} + +.panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #fbeed5; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} + +.panel-danger { + border-color: #eed3d7; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 15px; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.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; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + right: auto; + left: 50%; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.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: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + 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-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.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; + font-weight: normal; + line-height: 18px; + 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; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.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; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} + +.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; + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.visible-xs { + display: none !important; +} + +tr.visible-xs { + display: none !important; +} + +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm { + display: none !important; +} + +tr.visible-sm { + display: none !important; +} + +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md { + display: none !important; +} + +tr.visible-md { + display: none !important; +} + +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg { + display: none !important; +} + +tr.visible-lg { + display: none !important; +} + +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + tr.hidden-xs { + display: none !important; + } + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm { + display: none !important; + } + tr.hidden-xs.hidden-sm { + display: none !important; + } + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md { + display: none !important; + } + tr.hidden-xs.hidden-md { + display: none !important; + } + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg { + display: none !important; + } + tr.hidden-xs.hidden-lg { + display: none !important; + } + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs { + display: none !important; + } + tr.hidden-sm.hidden-xs { + display: none !important; + } + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + tr.hidden-sm { + display: none !important; + } + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md { + display: none !important; + } + tr.hidden-sm.hidden-md { + display: none !important; + } + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg { + display: none !important; + } + tr.hidden-sm.hidden-lg { + display: none !important; + } + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs { + display: none !important; + } + tr.hidden-md.hidden-xs { + display: none !important; + } + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm { + display: none !important; + } + tr.hidden-md.hidden-sm { + display: none !important; + } + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + tr.hidden-md { + display: none !important; + } + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg { + display: none !important; + } + tr.hidden-md.hidden-lg { + display: none !important; + } + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs { + display: none !important; + } + tr.hidden-lg.hidden-xs { + display: none !important; + } + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm { + display: none !important; + } + tr.hidden-lg.hidden-sm { + display: none !important; + } + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md { + display: none !important; + } + tr.hidden-lg.hidden-md { + display: none !important; + } + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + tr.hidden-lg { + display: none !important; + } + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +tr.visible-print { + display: none !important; +} + +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } + tr.hidden-print { + display: none !important; + } + th.hidden-print, + td.hidden-print { + display: none !important; + } +} \ No newline at end of file diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css new file mode 100644 index 000000000..a553c4f5e --- /dev/null +++ b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;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}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}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}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}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}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.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-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.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-md-10,.col-md-11,.col-md-12,.col-lg-1,.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-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.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-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.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-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.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-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;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 th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,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;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].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}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@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.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';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.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-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-print:before{content:"\e045"}.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-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.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-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-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.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-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.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;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.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:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.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-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.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{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.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:not(:first-child):not(:last-child){border-radius: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-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;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:45px;line-height:45px}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}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-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control: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:normal;line-height:1;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="radio"],.input-group-addon input[type="checkbox"]{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>.dropdown-toggle,.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:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.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.428571429;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:hover,.nav-tabs>li.active>a:focus{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{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.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-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .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 .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.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>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{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:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-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:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-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}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-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:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.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:hover,.pager li>a:focus{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:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-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-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.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-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.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;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.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-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.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}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.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;text-decoration:none;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-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.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;font-weight:normal;line-height:18px;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}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.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;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.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;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;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..87eaa434234e2a984c261e0450a2f4ad837aa7b4 GIT binary patch literal 14079 zcma)jRa_K6^zJUrQcHI&-Agwt-Q6i&BGL^KOLw;{-AD_FG)Q-gGzdrvN-EcX-iP~g z&*b^eH{Y4xyv%PN=0ykqC=mnzkp2}Ez<(I(fA#{~JL1@9|&czbr17 z?0>QUi2(qt040DrzyzQTPzI;~05<^oukZrI|7re*(tmmX7j^o_^aj}eC*Svf zS8xM_|1re@Z~iI2{-^mL9EX2e|B>GY!1r$^_@7M#!2iz^{g+$h|9j_j|IfYw09iey z|2e7uJq%=kUm`%z3m_N(;2I^EK8c@Rz+WzA_5K>K_A~&N-y3An#=6kB0L1`ghg@hn zZl7)JRrzdfN4}^l((rOb8!6cPsFL3<+h>Ko$*N(B`~JnKcb$DjB~XQQFl-maOT7?| z=??-O{TBG@KcAzmSNxsJz-Lt-`@AJr0kN!Di;SF6C_P<|x%6Q{;498Vwc}wHl?UCr z{Q~3fpz|ayjwAvkULRl`8oaqCD1Wz4@8$~fj$UC?mYD}9H~K)mrxoe9!WwG7+6D1~ zu)}%fLgSy{-z-;>e_xUdTzZz=OI{SZWnRf9!Z!c1f25WUO+5X9vri&A$czeCIfk$M z9$(eLNbUdRcqZ=w)1@@tN<^z0pQP-fOfjvjK3hvorqiV%Rl2xSOKU%hzr6ahgV9*$ zJlgSvPU509MBT=C+`yifpkEyy8#9c4UL5|r5gWS_tr}Av>(G)ZhAtjcTRS3?SSA9N z_Kegnh`V2N6RU=69p<{&He6g~O%EZ5+2OH{@ca1ru$Z)c3E&|1G!5~|4CfxK{)bF7rn^i` zwcKpWlzAHWR{;3USb36)e|%;$T55rp9tZ<6==s|-B*BebGk#$IYB|(ZrzrewrIl2Q zcVZsN=FLe{6k5m7YDaR%(#gdFf#BlrKVjI$R-nNKpd*2(T6`_?7Tr%rq~E9(yIypk z15x#%OfK;;uk|PQR~)DEppbSH6DmW;v@k*#ZhaG5{w7e$S`ot*K<^C*oB^co5cNr- z84k3(uHIXMy>++r-IRV%?Vpo$*r`8)jmh{vx(My9BI&4V4t z@q&H_L`zH3p725(a{oTG;rYk3%_{r*|8>5_6G?cTr)|U^XlDg8z zm^W6r3{qR3liJadUw%-DfiMsiV2YTxYOPA_X1lBkNTo&NjbQ(_zP!Rimikpp%G~h_ ztU^LLtxb8e!>D>CG^8eZ_@-EFi+JA&%Ym}4^tY?&sz92_hbFAune34RX{tbjogYXK zb;~ja9%4IE{_iiY6WdJ>_PH&3&@yDo2T(p1E`%?ub^PQ3)diW6ii}#+*!=`BpbGP_1R+t&;29S$UAcpH3h}2^>rGvH){c0jJtjcaSiIpFl?|Ykw|FXrNy% zn~l3m7e4&RgrOCH+jCRW=Ls5PATEyA`J8Ad?TVOG`l@pE({KV)pF3Z7;oa4-Hx3nk z^j1RZ{N?bQZy$cYv6=A&0^)qVweZ{+Bno|~E=9j=k-GDXeQ3qsW?N%I&@}1?wxuHf zA|Ro-_+d*C6M-#@VpM30RTEPdo!APpRrFObUDP^Ic|AJ;)&LVdnWX#RxiFb+zGKCQ zI_Kger%ADWvepR*8TGZ{JN(1K9%&P;^!XU4tSvkgGe_{JR~^f9$<0Tklc96r9x1B=VltaV_PCB77l_0tL3{`BdedCe5j3CF zO*e3HwE9GE<^LnU6k=*E%b)otxd+9+t<9)#+ze$kGPmX41&oF?8tHV!$ntX{*8aX^eeP@F2xMvpFGcra42@FI zDr{tW)yt3)P*7pvoD&$N2UDat?KH#6Zr3Wj1ocGNeW7Gj^2e)tH;o4O)FyAx_b=b8 zd=9(x+S@-Ai=UJC?i@DuZ0CtTtAU!S<4~e$K4CsxC85Tve7fHoj%T!vPv{JHch5_Y zM%K`rC>1Uk_m|u`%z4L~W*R<1JgN zI(cyXr))hytWI9~bat*Gf;?_avFr#*aq=$;3DEl;rBBbSfL&s-CmEN9Z=FWBPq|*w zV=1XfmME`nZtgN@DBWrbTSnz2oWcA9yL*=L#%fP3TXt!c0F%_>FvWM9H}5Urg0WkI zNt&dRN)2J@03gGYXLU}Ws1SoLa(2xNG04O@u`3C?42=UF%K^ZmD2OcrLpkyPD{zkZ zqZSrZ%U#vZMaTD{N9>OdGG?lPL;z?aQq&oxZHacwkYDWEjRc9X)Mg4w1*sqqdytQc z;>DOou1OedrNNb->@o%dNQsBess9-iEOg6MCTz%8RuuTHw%yfj66ap};<tL)BjF!!xYDU^iC@^Rt2BMhA>^Oluv#5vBd^doV(|U*_eW!Fpo^kadb~1qfM1 z-4xV$$`eWJMc%3OjU5A{fCA-11x&T35;A``cBD@_K+AfYp`ItY-nO9GFXyk(6H&gC zgVP-%-^o=btFjCC^slGFm}WC)1Fkw6WT{3uKjkNm`0Q%U67%Y#OLYbxB}u8qEXyBf z+jt?k7GWf9V1;7X7NJF^$kk!j@XFwhY;np}TTfKNM)sdEtVZLgSNz~z0}w_y_MM$P z{7ZPot7f{~deqdkb!?PO@3M6uVpZ)~0PM!uFW*8tGxGouYU+idM&+mch>1YWrfYbw zNHh7S!OA3^0A)hxl7xkSusWMIn}pAG7sVY<1G(8sqQS{%57LmXJp-HiSyD=l$*Riw zY+20T)}-|#pikZ7^U!gc1p%vkX1Q*!C%Ns1AbUha>5MtQHVJ(Q7;^mZrN_`4&gR#d z*GMiPozmbFnk7GQMUfb1z-LiF4xQ67RJ<1As!AEvs7ht4PG7P&xpL)JUK!S%jeUiX ziGEQ1j5YCz%;X#HVS2_}6~%)EQ*SZCzV-TqZo{O6%{r8|Py{vm3>zZHrnDT-D+S?Jo!n<`QZ%7N z6#HY((OAs1v%<)LZ%T1o@hclr9U{s$FY2`$#A222+iwA0^_ZWa}Sp$~Z`tSRz?fYd)Prtgp>DC@x&win* zYx)}AGLxzuz+^6ox_-KQe7OJaF4>UhEn2<^kp=1~zSKf2O8lsvgwt(+%dH&YE^$~{ zmIZuN4KWfnT+eLo`$Ntu+@_4dx-xCn%;H+*qI*rz{Pj+IMWV4q&4&v_vDJ?KnuhT? zp`HFH-{i7G z&cb3tRVzJC2)Aj&v-_2I=-cTnDad;U%gi?|r{%q8M3=JWIA4A_$1xksNX8fGQ0MXv z7jsG@yqP^YVXh~FGG7ztRofbb%v-Y2Oa0c4{DoEW2+ghB#=X?sC)zOnd<$FcA;P}k z!&0wB1tjlcu)sC=F=AuzvQsD3oXvch4Ur;5+K@a2;bjf`X@%InJU~*7p!QXL|3UP=)q(sV!;RVRF4eC( z5w2y7m}t3+flB}{o?fK>I$D|ykMw@kZumiw3J18$_+UA|-{#xqT-R~i?db}=&OhR9(;d>s&5GJ-M zuHl@XB;EHQ^c`j#mM47s|SScy-SD&Q0s(780*ui5*B(NU{ z1JAM6oymA%{(T`Qwoer|4`e4fbXpw=Ujf|X8hmq7E&vxv*}=+Rye%5X2xD0*^}YEf zEGd7~le2mpyS%mw8xl44hIvof|Pxp1T*z47AL}K^XlL>J6(gyYOmc|;VYs(tHAWpG7 znr9Tel(H$KV%()2(VBNVoP!o~|Gd)(^S&Q{PCqTk&dV;xZm_-lB_hr!QE$$#GqKT6 zV~RS4<7x-=tx0m&jE1BDqd(cc2iA@B7Ib0!{b&v`-5`t7XEV6UG7WdVy)z(@VR3p< zDC1lTpXHX3oE}5E3V7yx^8>jVnwr!w1_he&_17RJW+}R?{niZFG|4RyT7ZmC!Y^% zbR{57inS^QNGx!}+P3f7%?Sionp@*#h+8;FTaj1>q z1~X!#NO{YL-6+QR)z_o*SW%A+v-XebXs8&@TRzyDRieHy_t(B}bl)uwdFg%YXZ-^# zMWTYOwIkzv%>xr%$CBM=*m$T9k}!UxqnsS6rl-gw-*rU&V2or^ZkP6vPI|0njAB4O zn5CyBPHvXL)29>zpPkhW{`Qw3B?(G-TWfAV0^+}Ji$*Wob6n`WzRTBhd{);=mfm^% z{;`v`S>9Z(j2Nv-VLKD3~iA$Oj{Dq0(I z8U*-!Po9%GdOD|LVS~3(q-_)biNZxTiT)GN)YVr!4f4IRLNhAD48qw@0S#E{-e>UP z!dWH9**gQ$DqT?TkKNJl#J(f~7r6JAfSveml{UZ6jueeC&zR#Vi@e*Z==rWJgp@xj zDdR~Hd=3W?q0l(VMfRu(XreTXK*$pogtsuagZUmp^U^=wp0PM}Wf8W^Fm9n^8S4AS z7GJfQqzDgu-5C9o_f0zKKx$9L$|nGrE2rf%PLxV|c5LZ}PzELiSVok_zxZdiw78@4 zczsV08yXH>t5P&u(+XYPsiu48SXe7a3yEBGFiS7KFN#T`R)LMID_lZrUwvIx-Jfbw zW&lwFFkZK~+S9BQcb`8iqN%$0O{ zd_R#~i~MUF@fY!H4LxF+H=SJ{%h^?na-7Yogv2T6317oP^NJ}Jbg&)D&P;P^w8oe# zDNHRAqcPe>x zP|B*V4YPfm)deuX7-N@-7Mz4N1KmAfyYI78#jS0>Bkd}i9TWLsIZgXQY}1jqm+pG` zy{JiBImlPiF($3(sE&p7ntgNWLh&&5y{|mea7L8%c);7R2$T z_HrZz(`Nx;xE)NtPgF(IH0m#(y)Npg}NBkIWpJb(OJq&ymq^iBIHfZB+V!qd}3EnxDKf_XvD zT3tuka_2>|KJ_Qr(qpGJAf}w3%5Qo=u)K?~`O2CzZnMD_J96QGYE`74E@)I~ODsKK zH%}vL(dJC~ZUF3t99-z<+)r4yfgnU{Y-RryR^-SYY95;xsg#!aUC-Afy-0t%`Ccv_)YQ)A}F@oIMmu2ZX7PQ72ukwf(Cvsr!%uk z?~fxQtYEo0ehCIE`*_+|rxqV~hPV#FQyC(#HP&p@G#fKOUMp?w>)uN0&^pgnu4xwA z{+=Wo;`6mUi`y&O^6j1|StaDJHzuv-uBNf~cik{Jl#-tM_hJ^k+>c0kMduSMRtVAB zXTfh&yMOb>MNO5I1PZ0o!i;G4!y_^YHKHq6oX4a^KR@ocvM24QDH>)gQ-zdAXg{pR zt7?3h$uSFFv$4~lRcBSlUCKIO9p9VFeN}^EPQrbB!iSk~Ba2aSpMlf7sUnT!2PnKp z*Z0Gpr%sIM*x*BP?6E2Zk^y$a@Bl!Rt4YArYn_Po5M;&@gJz097wEglfz`ESLsIET zBs|I>ZJ0yIG}&DmAFB*@>{;;yJ_vO?f1N3M;xsLT(}SOFekLA$9KWf&-oNL?8X4J4oyU8tKa|1>*wEyh6Ebf)U!Z zYdS#`zoaL-RrPmx!}8501YZ{qj!4m&Y7SrdF&73udbUZylkG?gV+qAaszsvHEe+{D z<45m&hYodO2}g4E7>W2VeQ&n7!#30RJ8KbdK;T;5$lg`8J^y4jw3DP%j^Drg_woO{_t+eT$A)(~X?aCV(oI(=tpI1st*S@&~g6?&k z>s|?NRJcDff1`1?-Jc?K@U3-!Ys+&;g!A9IYGA|)zLH&vmifA**}mdVQFo{e8U~b2 zO2E010oyxaVfzV>!DiaH1em79k8chs%8c=txP&UaPiGwS0WcWl(|%w+^T*t*H|mk8 zz)Ak3o-PR;*!0I#w>D*9!+3J9$A|8=Ap!W>(U}g$h&Z!YOggAp^3=wF!Yaz_P($@? z(n!BM5i+f_^FX8~nrY$)=ZBTKHqm zVdAIS4fs!QL{-!F1~xy(})Hxa6p?Rjwv#-#Pvf zm8TQQeBr%Pn(2S+vFpu&c%{Rrk4#{RycSckZsn7q)i-C?s^e~PurOnw~O zv`sbAk*TMuA3Lo&9S}C+NVe+lL`zRzEuw^L!#*K_R{1j-SsyFUDFnW}3R%$ zis0vASSvzW7Jd2#61)h4#M6URkA_A3SsK4n#`cE2$ zLWp@8V}aGF=zO!}e(^Si*LlMGu3Si8)@_u+nrICpR-ng^i~GNd$UP_6*gd;57I81d zqLuuFat(5+->FEsY>{47M=^M$XX_r^DhHhyoVF&%)642YK9oHn`28XL@oD6zTRCr_ zQj#&uvxDDr@MK}Rs%^cX(zMsDRa3RzUQqW?O#N@x@1442leTwu=(D`c&~bPJX1eJx zR}5A8N$9Bq;W2HP`r4=%i4+)}>MCN-g9+FaIfz4#pX3o%gk8jR#?u%4F3+u2WCA{+7b24rYuJ1 zwW3Y9w-Bt2a(91Hcuj#xdB*q8Hy&$|)<1KPvN*|iiK~tq?ka$u;jeH>1QR}^dUxIFtyRN6z{I4L_o?enJ zFR95EMp$tQTUr!1vOm|XcjELh%@1qHj^++_t7XehC^Kxgs_HUQqFOBndGbf*;KnrP z>1BrQ)f5<&={TbN%QdERb6ljEbbCGjdd@5M#n06;VPP)$ z>chCAA@WK55n7o^L|)RL4<9m6lWth#q>&#GG5)ftZ#UzvbU+$2(jP)!o(zaw#;sdv z^%g(${-K@o670tu4>IZELt3#`+>9j?qf(`5Ch+>S&;~QQKzkSNY)16RqV;^f>T9$m zdqgaB84{#YEI4zWG)0m2{JP4snKf5{q~3>X2#QxOjG=sO9EHimSic@4V^<|@R-5Hy zEp^BF6R52jd09ovYpsaxywq*xnqd^%9fxrz=LFuUgxW6tSBC@dGWefD{H&>5oMjlj z6Ud@Q2;X<$!M}!W1R~uQvtTfS6QH%6nlH&~+q&RAWmVP$rbyZI&7MJD!MWh1sb*t; z&V+sSq(hi;g5~PTh!VqP_4Zlgx`%k?t19FqAJy6{$9?t}qv_oZP(+mjL!&s9hsSi0 z`1hZBgO1QyH=#|A^)bdk-w<5x6J#hivLy8_sDXLZ9cyp#>1cVkuO~R8$$=T!YcnR* z2IK3z=tD9$YM0E;xMYvjGX;DYEKeMPAY0k(Lwzo{Vh7}c15$J|s~_D_e%+RH^Zh!m zk4lp6r#OascmM8jGUcEAXfHU(neLo*wABl3)3I;N>=s`|zJAWwZHZtQNH-HR7WUvwmZrG!N z6@C{M0eWXL%2LZxW5tb=HS-8XP81s4JBB@;v&wkf0l#Qa_S5T7lahYrpP#_4z4ku! z%79{Wf8-DjEOK`d7PC)LJqBs(n-#-j1cvFr54a3Sabtu+VZ|9mz#=H?Or~eqxl$PQ@(j-#K-^vA1?!cVSYHiqjG%wgoo{ z;V>B_%aMBK*fx*zO(E~G2V^Rge0k6DE6)El91p>sh#YPjHEIdf%#qo8d;2q;-PEL# zM$qSYuUAeQ2&IGK;PK6zotMsO$LC!pl>@QKlp--=jQIkEwD||8ke1rQc)#gAZCdSP zbp|sBqb`OyD=c13US7+@&9PO~KE57bfoh^{0jOecez`2lpKQh@(KW*IF9t5p(vD6; zqC<&N{Yb0E4bC_{JpkUsO@rlnQkGCgPZc&=!#+=sq3)AE1cd=a-Lo&kH67=u3f~^x z$gvF;{hY5N=zW-MGNTT=kuvj=Eeje|_OvDefcre>sl=DrFKM*}wkk;l`}4haQL%D& zozLBx7UB^7A2;9x3fXkFDG|nU!vVTV#n;l`sA<8?C44E$S_CvCJyIKcbBTSJm2-dp z+A@d77melYFx?WF=8D}pZGaBq7o{5e+?i$`$d&UL1MLb{9o$$YA(U~As5FJ(o8zOW zjycOOtBY}?CJP+$sVEXp?BZ2aL1i4K0obmwIcc&4(62jbW8swa9f?DjTSetJS_F2B z5Z$cKkvqo(>(e|^<$|2NpV%tz7CM|Ai^m?Kd>Yu-{R!v%f8RBr7rWNtfZ^9vKm!u^dP~TR}A-E{C@XK9TX7!)BcW+IpovW>PA7tEh)jxk?zJUM*2{Y zN?T}i@F{LR5-+vp%IKQlcB3Ym)7}cJ12(U+D}MPeLlGDyvcfbe8%LPEy)G!?=e1L= zDJJoWSy{8;p|+#$)~16&EB2)`e$!tX1y-N{WXm?gwG*OnD!ci3u-9+(iLd7=7;7jR zmcY=*?xB}|#asYF%EX6t2{+RK&4M4{66KihGOAs;ij@mK&3Uu)3^b|?B;3B+z!38I z93x_C6}@3&mJvH)!lIq0oQQL86oWy_A|U@GvyD(NwO$c!`%U{`)TMN_Jau#t*Y0lu z0c4~`*Vxk$tP&+W8%8kVnREOkJevuHD;AI8ltWOEzPR%_#f5(Y$jArOxfd2TY42x( zvdviv@hBSfQLqM3;mpaTz|811VlQ7jQEm?Is1NzX>fhX*)3?iglf#v5#%li7DBSDs z9yr*Son&|AfaSp^FHcK!iyS|rW|~Ho3BGnwfGSacSD-Pd3HZx4^Tn{rw@X)t0G#!L z)6pFajr<=k25R8M>3^D^?Vl5V6+B+5p3Y=}-8meaQr23s5Ci^QiE_I#JND7F{`x)Z z${rPtj&q-)Eg1mQ&R^d8PLmmpTs0_NfM;Ld9p`~M`3B|`d)KSkHhIgWGh4h9V(M!E zprOL?IrlHS-Zj#5YaezY^EfJop++5!6~dG@VczVZsShn@a!H)^)mLap zN-5d|ZA^-9-}C0NQY-(>WWq2>z$nZ#9f)04o}#fdrZX(@%ws*mvWvY{x|!V;M+h(u zc(X?j+n3l}NT?SeX>yk#wP026HlrMO$^jJSY9}JbsQW`La`|uCRVgB?-NUkr!Q62rlZJ0 z4(P@;r`r%R2v%XcY4gwA4RY5cS9^>;1!-;WRHH6?A9H4nS~L6+Erf{kNRARp0%v#mG!BN`{Z0DT(;hL>q2tUur3n4FyKJATTZeC)I7~MlF{vYq zP#u$a?65CY1gX<_^dpm$T93g7cEiaEzJi=f(PP7*$Cf< z3e!q;mMXoy);Hc=X!%VmT-e!^igX6GoDK`Lrz#=>sc zkvcN?I-(oNR%$y<5v;+H$CX{e0F$s;-Dc+ckzFlEF7xK<7+Ij5F~FWrmDWsXraDch zDC0G}@xv|q?bH-m|Mjy0Ms)dZNpHw-DvLp2+c4S+O0)kVJ7zx(o)JrS?zKB>t||@D zeBgbVopB;#ax&umSZS)xCuXSI)HhTG6R!eRH?)QacpQ5#6L!rNa(`x=`VUEj)U|nB z1MMG_Tv{ZK#mpijK)fq&ckNP|V4+@K=S)c}ve;M#Pdu?5l^rr)DvUwV0PT?vKYzR% zGPWilY;hyPpFoR|5JP6?I@iC3Vq6S&sN@s)yy2Kk_{_=#E{tj(A~6Gn2o~=^zMyvs zejH=*na5H)n8DO#XSngd{F-OXphTbN9bu!~RA1@WgFi`~<6C$z-&Eg~>%F!po2S1_ ze(jCXcwQ%!S`|5^h}24Cf%DGYlJ8~b8L?zf;0`mM@)Jd|9&jr#{?*Qg1XJuUM}jTV zML9{SGQW{o>!LsKk$gTo3em@>#xK?}8b9NgS$?dN7ub9st#1lf=`*RfERqiz( z%zTB8hI6(Wpm4#3HbZ{z&OHArOIRM>JR?w6>jxW$d~1R( z8=RTg(0-+#XZ>UEu5%s=xiU`S%_}9ZcU{{C`IHp8yqFeq7L^5hHPf(B>{qz0U zx75z&dEB?!YvH!0%yFPn0dnvtlCDFL)%Bh>h0|%OxMnXF0(`E_T1cWldfPUNA#532 zF_UFlhm*4BwrzGZgWp~l89&g1;$Os_(e;Y|xl=2m@`F6(@A7#Zg$6~4{MITfoS(mY z#oK2mo@6)ugHMq+fCN82iP%cl>0rRR$+U-6UX}VIBZ_N3v^l9y2J@~+nXeeKV5tl_ z58#~`c(ljwfpHzaef#fbnkmRlut=er45g1&uFAxlaV4_Qd(S_*vcPY6fo5V{29CqR zh0CQnCWemD$tb;75jw?v?k%iaE$Zb*lYKU|?cRSJjsw=kp)Q^XpVWYrI2cu!TG~H7n=oNXG9I#<8 z2XoyS^Mf6^!*Rvnvc8xyFfpcXmSrE)F%hEOCa_GWBD#KOV3`AJX5v%eZiII@eMG4w zP{6>u6syX2q59xdCM#LN@M@N#|``%$kWIB0~(ROY~Ve=g* zNO-8sq+gRLR{DVwQ!Jfm!U>SpZI$h+6PlG3&djhh9*Vu$hD=4jV#(`EepWBB)od_U z1z*Wewx!;!ADjqaCwDW1G6@8ht6c*A{M}l8%l0jf?jh`J4b);-n=1;fmgB)4p1;ZG zDDk{q6&;eqX;tp_US%-mWh|)q)i{eHZbo|{^0}=bKxC@sGOV$YXz)91vn7~h<-uH& zQb0dByDZJPD`EGPd`kqAvI?*g=B3fqa9H9Rd{L`va?B=t~Y&l0h{I!^E9pG>!S z#>{UpLngb5T`Uqt6sO=~BOjkJh)+u0qiSo-es@5}f!h*a9Gx*&<5{Eoxc-WF!jSyn zM@qOve{Y;Ok^%FZK{2K;y}YNN_;1tethBv;U%(w z%RNe4t*ldJayql#MMurNnNoO;%!n-U0V4mzVpPdGu`LKf+RWv>l>VJ zh|rXJv9Mk&iDk|e!hBRh$KiV}utL&NkptF@GM$|`tR)5FxIigOLHS7vqDnsGiFl7bTk4baLCJDyHe`hWp4JT~ zxRJRy9oc;pw2eW?wv3s^8AsUEk+&zZY`Ez-Lo@iJt=-gFZhS`U&Ct+KB$VGUar1N* z@v1?8ygBYN+o*ZMCgDHM7MC=Korw86(SB>G1fFAvHmj{-oZNU|ZY7bG?7% za!4;s_~l~@pOTy7Zo^+6AY`23W==`h_ME&XEh#dIqn)Ei1rAP5;j0oaGirRuwQysr zBa#0yNX`7Po5nBsn|`gMKsYvFEKdsi0e?F_b6jl8h=+@ms+m|v$is-!NWtw6(@?$V zl_q&yu*vK7NYkl6M5O+M8>hB}h=2U?wrE48%##YSN^?I=0+$V|M7{IRFWf36;()R* zxJPdQDzTQ8c-0|B0$0G*)swoM=@rL%&=A*ZOgwL>7z1a%8 zFKtztnNhe(UFtdIA>1N=eN!pq;(cN?j@4UgtmpU_OVf+Lt5A!~Q-4!7z4rNbGV*<4 z`3S~~rTA$L`Bs@(J%h0xlX-Cme-na$&VA?CWqV?s!6CpeZMEoe$7DyV^%f(Y$CD^& zqb+UVeb3zQ$3puFCqi%M<_{j4`f>6W>Qts%OZ(sH37e1+(`!sDT=vci2*%*lcnLfGx#FXv!uiQm` zC&DPMh8FaCMRu3k7P2;P<>)CU&Sw8mr%`j%w6%l28(zv})E#p^r{~M)l3_X_Eef#9 z!fgwyX5@Oqx9=Waz>)cTxBx#FRZ7Q4&|@q3fbSjP*Pt|Bw)q1)JAG_&4Bc0~QYI5; z9l5@3gJ7IgX2*bCLz?mlb1Z8!pV-p58bZOp4MrH)-?C4BM%`bn_bw_v8c^mNSm=5N}{I(?E;74 zX%b#E#TsuQAAXq1n>W8vD~|I|L(Aqg?g=aXtg!r5BXJq%+P*yi5*0j^`Ml4I6;HT7 z5db0$wG~_=*tJmS#%smF=#xa&&Jz8fS=qB8x{B|9vz!fwmKbQU8&%pTg}ZM=3#kzV z_ZQ6}eE9}~T4%V0Xs%r}Jw9AwZlZ~)%XtE(9Q39 z5S-nO>sGi>EdT88T`M*cJ-QO2)(J{jpdX2j!noU=B@Ze69N9Z*ygRJ((WnKT=0Xa4 z5>HTd{3T)O`V-xs9(FA8^R$B+<_d`Zg!1rg#WK2+HXS(SR!(O)SwKq@O>%tXdp}KT zpzS>sB$N=B!h1`B*_hr3l_}mcGqYM@5PwPL1j^?PC&BQ_KvG0v0}CmL3|yC_fNyLi zaib~0C!;PY#bDnTXvPWs+Y5`ZCeOAdxX zCQNr*a)lN~1JDbninPT|6#xvPr!u6P!D6j#QGyAlSi+iMZzAA8s4!|Oo;I<&P#87f z1}&8+%t~ev%@`NRwfE8lg1+grWmTX#j0Luf0bat{$*Vv6?Oll&1AW4N=p!AztoBEDh8Zbul!(v09dV^(vw_m;E~n7Ix72vc`pWtfDyKs=Ist`7lb zYP5YlV6WodgY`h z&;}e>0a?Pt@c>>_fJG=UQ(rXrUsV^iQy0~j7nOpEOwo~<;9xV3M&qR&z^trFp|Dga z%#afXVTGYE$^|P&Bhs+bBC)Q+6RvGR*Dzw6Fg8?xZ5*HlD1 zp==t)lZj-JiTHwSbr}Zi=tnw-A&Z3toC4Q#(PpeD$iv(YfbFqpp>$-%VOD!U+gMaL z0Fg03#R`b$j_fdp`mKrB7p7qXn6*PHa>q32r&t2sKcoxsl=5LGrqWU=$$(DfX?Z*- zZDL9~XrfbHDB*7s)JG)=$rjZu)RQU*#d&mL*HpM3ux+Bz<4Qp}-b(Vs)G51Y8=Uo+ z7zZlqTu0xvo&(e>I!;k&;b#AbQzV}1(2(z1y>Fk6KE@waF^Kq{d@b-3Ge{J{jt>gwJni6ufU{X-fc+B2-`YjYGsmBSgS6oO)Aq; zI7J~w=8hx-a2*4z3=5D&uDPO|4O?(UBedeq1L}`~nEDmC0d1YYpF1Hr$ZOS9QLtrp z6nW>C@!SbU@@ZZaznY-{-@R|GhS4I()!-?p@Vi*TJjF`oVea-G1XNzd! y-^Vp%pcMc>T*9)K0*lM!C8AZPg+G7PFFQ7O_Sp6RwD_p|> literal 0 HcmV?d00001 diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000..5fee06854 --- /dev/null +++ b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..be784dc1d5bcb92ab155f578f3723524a3dd9688 GIT binary patch literal 29512 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 DlhOCh literal 0 HcmV?d00001 diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..2cc3e4852a5a42e6aadd6284e067b66e14a57bc7 GIT binary patch literal 16448 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 F0RWIWf - <%= info.description %>\n'+ + ' * v<%= info.version %>\n'+ + ' * <%= info.homepage %>\n'+ + ' * copyright <%= info.copyright %> <%= grunt.template.today("yyyy") %>\n'+ + ' * <%= info.license %> License\n'+ + '*/\n' + }, + jshint: { + main: [ + 'grunt.js', + 'component.json', + 'lib/**/*.js', + 'test/*.js' + ] + }, + concat: { + options: { + banner: '<%= meta.banner %>' + }, + dist: { + src: 'lib/toc.js', + dest: 'dist/jquery.toc.js' + } + }, + uglify: { + options: { + banner: '<%= meta.banner %>' + }, + dist: { + src: 'dist/jquery.toc.js', + dest: 'dist/jquery.toc.min.js' + } + }, + watch: { + main: { + files: '<%= jshint.main %>', + tasks: 'default' + }, + ci: { + files: [ + '<%= jshint.main %>', + 'test/index.html' + ], + tasks: ['default', 'mocha'] + } + }, + mocha: { + all: { + src: 'test/index.html', + options: { + run: true + } + } + }, + plato: { + main: { + files: { + 'reports': ['lib/*.js'] + } + } + }, + reloadr: { + test: [ + 'example/*', + 'test/*', + 'dist/*' + ] + }, + connect: { + server:{ + port: 8000, + base: '.' + }, + plato: { + port: 8000, + base: 'reports', + options: { + keepalive: true + } + } + } + }); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-connect'); + grunt.loadNpmTasks('grunt-mocha'); + grunt.loadNpmTasks('grunt-reloadr'); + grunt.loadNpmTasks('grunt-plato'); + grunt.registerTask('default', ['jshint', 'concat', 'uglify']); + grunt.registerTask('dev', ['connect:server', 'reloadr', 'watch:main']); + grunt.registerTask('ci', ['connect:server', 'watch:ci']); + grunt.registerTask('reports', ['plato', 'connect:plato']); +}; diff --git a/docs/system-architecture/css/toc-0.1.2/History.md b/docs/system-architecture/css/toc-0.1.2/History.md new file mode 100644 index 000000000..1ff3baef4 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/History.md @@ -0,0 +1,46 @@ + +0.1.2 / 2013-04-08 +================== + + * optimized scroll function. fixes #15 + * migrated to grunt for building + * fixed tabs on docs/index + +0.1.1 / 2012-10-05 +================== + + * updated example + * code cleanup, fixed onHighlight, removed console.log + * Add headerText and itemClass options + +0.1.0 / 2012-07-05 +================== + + * added smoosh to Makefile + * updated docs + * removed site submodule + * Added callback for when a new section is highlighted + * selected event + * adds another option to customize the header link text + * updated site + +0.0.3 / 2012-04-06 +================== + + * fixed smooth scrolling in firefox + * fixed copyright typo + +0.0.2 / 2012-03-09 +================== + + * Issue [#2](https://github.com/jgallen23/toc/issues/2 "Issue #2") + * updated site + * 0.0.2 - updated docs + +0.0.1 / 2012-02-25 +================== + + * updated docs/site + * added readme + * got everything working + * initial commit diff --git a/docs/system-architecture/css/toc-0.1.2/LICENSE b/docs/system-architecture/css/toc-0.1.2/LICENSE new file mode 100644 index 000000000..ce5d8bc79 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2013 Greg Allen + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/docs/system-architecture/css/toc-0.1.2/README.md b/docs/system-architecture/css/toc-0.1.2/README.md new file mode 100644 index 000000000..176f0b94a --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/README.md @@ -0,0 +1,5 @@ +#TOC + +[TOC](http://projects.jga.me/toc/) is a jQuery plugin for automatically generating a table of contents. + +For more information, check out the [documentation](http://projects.jga.me/toc/). diff --git a/docs/system-architecture/css/toc-0.1.2/component.json b/docs/system-architecture/css/toc-0.1.2/component.json new file mode 100644 index 000000000..b71fcd775 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/component.json @@ -0,0 +1,14 @@ +{ + "name": "toc", + "description": "jQuery Table of Contents Plugin", + "version": "0.1.2", + "homepage": "http://projects.jga.me/toc/", + "license": "MIT", + "copyright": "Greg Allen", + "main": "dist/toc.js", + "dependencies": { + }, + "devDependencies": { + "assert": "*" + } +} diff --git a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js new file mode 100644 index 000000000..9fe50553d --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js @@ -0,0 +1,107 @@ +/*! + * toc - jQuery Table of Contents Plugin + * v0.1.2 + * http://projects.jga.me/toc/ + * copyright Greg Allen 2013 + * MIT License +*/ +(function($) { +$.fn.toc = function(options) { + var self = this; + var opts = $.extend({}, jQuery.fn.toc.defaults, options); + + var container = $(opts.container); + var headings = $(opts.selectors, container); + var headingOffsets = []; + var activeClassName = opts.prefix+'-active'; + + var scrollTo = function(e) { + if (opts.smoothScrolling) { + e.preventDefault(); + var elScrollTo = $(e.target).attr('href'); + var $el = $(elScrollTo); + + $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() { + location.hash = elScrollTo; + }); + } + $('li', self).removeClass(activeClassName); + $(e.target).parent().addClass(activeClassName); + }; + + //highlight on scroll + var timeout; + var highlightOnScroll = function(e) { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function() { + var top = $(window).scrollTop(), + highlighted; + for (var i = 0, c = headingOffsets.length; i < c; i++) { + if (headingOffsets[i] >= top) { + $('li', self).removeClass(activeClassName); + highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName); + opts.onHighlight(highlighted); + break; + } + } + }, 50); + }; + if (opts.highlightOnScroll) { + $(window).bind('scroll', highlightOnScroll); + highlightOnScroll(); + } + + return this.each(function() { + //build TOC + var el = $(this); + var ul = $('
      '); + headings.each(function(i, heading) { + var $h = $(heading); + headingOffsets.push($h.offset().top - opts.highlightOffset); + + //add anchor + var anchor = $('').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h); + + //build TOC item + var a = $('') + .text(opts.headerText(i, heading, $h)) + .attr('href', '#' + opts.anchorName(i, heading, opts.prefix)) + .bind('click', function(e) { + scrollTo(e); + el.trigger('selected', $(this).attr('href')); + }); + + var li = $('
    • ') + .addClass(opts.itemClass(i, heading, $h, opts.prefix)) + .append(a); + + ul.append(li); + }); + el.html(ul); + }); +}; + + +jQuery.fn.toc.defaults = { + container: 'body', + selectors: 'h1,h2,h3', + smoothScrolling: true, + prefix: 'toc', + onHighlight: function() {}, + highlightOnScroll: true, + highlightOffset: 100, + anchorName: function(i, heading, prefix) { + return prefix+i; + }, + headerText: function(i, heading, $heading) { + return $heading.text(); + }, + itemClass: function(i, heading, $heading, prefix) { + return prefix + '-' + $heading[0].tagName.toLowerCase(); + } + +}; + +})(jQuery); diff --git a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js new file mode 100644 index 000000000..53a2c621c --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js @@ -0,0 +1,8 @@ +/*! + * toc - jQuery Table of Contents Plugin + * v0.1.2 + * http://projects.jga.me/toc/ + * copyright Greg Allen 2013 + * MIT License +*/ +(function(t){t.fn.toc=function(e){var n,i=this,r=t.extend({},jQuery.fn.toc.defaults,e),o=t(r.container),a=t(r.selectors,o),l=[],h=r.prefix+"-active",s=function(e){if(r.smoothScrolling){e.preventDefault();var n=t(e.target).attr("href"),o=t(n);t("body,html").animate({scrollTop:o.offset().top},400,"swing",function(){location.hash=n})}t("li",i).removeClass(h),t(e.target).parent().addClass(h)},c=function(){n&&clearTimeout(n),n=setTimeout(function(){for(var e,n=t(window).scrollTop(),o=0,a=l.length;a>o;o++)if(l[o]>=n){t("li",i).removeClass(h),e=t("li:eq("+(o-1)+")",i).addClass(h),r.onHighlight(e);break}},50)};return r.highlightOnScroll&&(t(window).bind("scroll",c),c()),this.each(function(){var e=t(this),n=t("
        ");a.each(function(i,o){var a=t(o);l.push(a.offset().top-r.highlightOffset),t("").attr("id",r.anchorName(i,o,r.prefix)).insertBefore(a);var h=t("").text(r.headerText(i,o,a)).attr("href","#"+r.anchorName(i,o,r.prefix)).bind("click",function(n){s(n),e.trigger("selected",t(this).attr("href"))}),c=t("
      • ").addClass(r.itemClass(i,o,a,r.prefix)).append(h);n.append(c)}),e.html(n)})},jQuery.fn.toc.defaults={container:"body",selectors:"h1,h2,h3",smoothScrolling:!0,prefix:"toc",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(t,e,n){return n+t},headerText:function(t,e,n){return n.text()},itemClass:function(t,e,n,i){return i+"-"+n[0].tagName.toLowerCase()}}})(jQuery); \ No newline at end of file diff --git a/docs/system-architecture/css/toc-0.1.2/docs/index.md b/docs/system-architecture/css/toc-0.1.2/docs/index.md new file mode 100644 index 000000000..06380d75a --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/docs/index.md @@ -0,0 +1,101 @@ +#TOC + +TOC is a jQuery plugin that will automatically generate a table of contents for your page. You can see an example of it on the left side of the page. + +##Features +- Completely customizable +- Click to smooth scroll to that spot on the page +- Automatically highlight the current section +- Extremely lightweight (744 bytes gzipped) +- Can have multiple on a page + +##Download + +- [Production](https://raw.github.com/jgallen23/toc/master/dist/jquery.toc.min.js) +- [Development](https://raw.github.com/jgallen23/toc/master/dist/jquery.toc.js) +- [Source](http://github.com/jgallen23/toc) + +##Usage + + `javascript + $('#toc').toc(); + +###Options +Defaults shown below + + `javascript + $('#toc').toc({ + 'selectors': 'h1,h2,h3', //elements to use as headings + 'container': 'body', //element to find all selectors in + 'smoothScrolling': true, //enable or disable smooth scrolling on click + 'prefix': 'toc', //prefix for anchor tags and class names + 'onHighlight': function(el) {}, //called when a new section is highlighted + 'highlightOnScroll': true, //add class to heading that is currently in focus + 'highlightOffset': 100, //offset to trigger the next headline + 'anchorName': function(i, heading, prefix) { //custom function for anchor name + return prefix+i; + }, + 'headerText': function(i, heading, $heading) { //custom function building the header-item text + return $heading.text(); + }, + 'itemClass': function(i, heading, $heading, prefix) { // custom function for item class + return $heading[0].tagName.toLowerCase(); + } + }); + +##Example CSS + + `css + #toc { + top: 0px; + left: 0px; + height: 100%; + position: fixed; + background: #333; + box-shadow: inset -5px 0 5px 0px #000; + width: 150px; + padding-top: 20px; + color: #fff; + } + + #toc ul { + margin: 0; + padding: 0; + list-style: none; + } + + #toc li { + padding: 5px 10px; + } + + #toc a { + color: #fff; + text-decoration: none; + display: block; + } + + #toc .toc-h2 { + padding-left: 10px; + } + + #toc .toc-h3 { + padding-left: 20px; + } + + #toc .toc-active { + background: #336699; + box-shadow: inset -5px 0px 10px -5px #000; + } + +##History + +[View](https://raw.github.com/jgallen23/toc/master/History.md) + +##Future +- Figure out how to handle headlines on bottom of page +- Zepto.js support (should work, need to verify) +- Ender support + + +##Contributors +- Greg Allen ([@jgaui](http://twitter.com/jgaui)) [jga.me](http://jga.me) diff --git a/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md b/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md new file mode 100644 index 000000000..cf9b01b47 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md @@ -0,0 +1,10 @@ +#jQuery Dependencies +- $.extend +- bind +- addClass +- removeClass +- animate +- attr +- text +- append +- createElement diff --git a/docs/system-architecture/css/toc-0.1.2/example/index.html b/docs/system-architecture/css/toc-0.1.2/example/index.html new file mode 100644 index 000000000..ff1b7cfb4 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/example/index.html @@ -0,0 +1,69 @@ + + + + + + + + +
        +
        +
        +
        +
        +

        Page Title

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Sub Heading

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Sub Heading

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        SubSub Heading

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.

        +
        + + + + + diff --git a/docs/system-architecture/css/toc-0.1.2/example/jquery.js b/docs/system-architecture/css/toc-0.1.2/example/jquery.js new file mode 100644 index 000000000..8ccd0ea78 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/example/jquery.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
        a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
        " + + "" + + "
        "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
        t
        "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
        "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.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( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

        "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
        "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
        ", "
        " ], + thead: [ 1, "", "
        " ], + tr: [ 2, "", "
        " ], + td: [ 3, "", "
        " ], + col: [ 2, "", "
        " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + +
        + + + + + + diff --git a/docs/system-architecture/css/toc-0.1.2/test/toc.test.js b/docs/system-architecture/css/toc-0.1.2/test/toc.test.js new file mode 100644 index 000000000..617194730 --- /dev/null +++ b/docs/system-architecture/css/toc-0.1.2/test/toc.test.js @@ -0,0 +1,4 @@ + +suite('toc', function() { + +}); diff --git a/docs/system-architecture/diagrams/command-query.png b/docs/system-architecture/diagrams/command-query.png new file mode 100644 index 0000000000000000000000000000000000000000..4de18ecb1e1c481e6b48c9fb30c27369eda49c69 GIT binary patch literal 42505 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 t-c$aHr9|V< \ No newline at end of file diff --git a/docs/system-architecture/diagrams/platform-categories.png b/docs/system-architecture/diagrams/platform-categories.png new file mode 100644 index 0000000000000000000000000000000000000000..6c464642c5abf783b4a7ae3893aa573a230f4416 GIT binary patch literal 14884 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 Rj=Sgs7)gcOxwq~<`9EBkFv|b{ literal 0 HcmV?d00001 diff --git a/docs/system-architecture/diagrams/platform-categories.xml b/docs/system-architecture/diagrams/platform-categories.xml new file mode 100644 index 000000000..f63b81734 --- /dev/null +++ b/docs/system-architecture/diagrams/platform-categories.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/system-architecture/diagrams/platform-systemview.png b/docs/system-architecture/diagrams/platform-systemview.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6603143b9c234136f476c3d7b96e39fa0d19ad GIT binary patch literal 43613 zcmcG$1z6Nw*FH)pAp#CaNje}XjevA0gET0OASnY#cbB3JAvok9tw>9Ej?&$d0)n(d zmr`eszR&l*-}gWNbFOpFb>@0_9N;%Q)?Vvg_lix}BXtGRD>ts-;NXxdDZ(^yaPXlx zICzpo1lXS}Gvk7PF1bEX(k22gKcZ&{@IA4UqJb+84hbdp3m4~I3M~!}3yu=(zP4A& z&u^Z7R66GuJ9=!_vPf>r6DgWfvAwu_-4;znMOE_nx_jyOBD^o_>qP}MMMVn%1|;iK z^trhiwx3_fgy%lihRNSI3Lm~it?i?7w^^p2w3fKG>yvACLwa(<>>#QUV8}RR2@leSP0yvdmJZ!HkiYDj(k`Y8A9+ooR&4SG|=T#v%3xOAb5oOubs&Iv`RuCE-p^=*RNmG^`2V+ zZ!r4uFxZ#n)eq53-zsg#8K39Kvpw3~+ao+$8?mx2?B>@=TN+0)YsOs_Q|wO&+nWy12S> zNNuC>otvd4B$AyM+bt^{zWF>LXrTa)VHf8#mTOqOnGh2bFK+!27#-X3NUG)t@lD02YWnX|L3G2y>`b35Jig10@8T9wD@;P)BT4mR-6>nR%uafQRTI?}C~ z+Py>l#YYk0;VDs!5)NBmKTYdYSx^C8Nmi6-l*70swes%WhNgWjwdkM>4-aRru$wGv z>*7c^D$px7?nMc_TpP*RdQ$m(?78XoLR*APDPs=UDy@9w2#<#JuOIKQdSiXq)z!6@ znwWUBML>FkySu07#8X{e-BIYe77W%(f<5ZnqE-0UAP^+#!8diTJ*)yiAmexb{PREF z>@*3W1hTqj6u&oG+&%9DCv>WTsX!>+df-oy0#3Z+Rb8rXGGP8vpe5!E4esr_Y)vcl~+)l*~-*oX~-d>$Wp;+Wt`8AY|+6r8TDQiC8{wZHNf z57dn22)W4*=}iDYUtPmbK(OeH6(iEkdCQz>Xo@$lfy(F({@Qt z5C&aYg%44ZwUOH+flHS3QC`>i9Oji+HL#5sjvoWiWej0oZgPvzyQE#oU@b89qr=xklfAB%S{A#M( z>(Tr0NeEr`#|Ydowue+H2v3`nxHq!+)AtcNnMH&RqFOD?ccyP|;jiNf2HilXgQWsl z$H3cAXY`OA#Dn>w&WjV%dz$=u>|@*9$kveGiV=toFvfu_C3Xz3)(ch-yXH#0O4$D!bRzwkt7Jg%9)nzCs~e^sCWV{?wi z9mg|dJ*s}VDFf$$f&n7I07{q&4I#XMQpONO^gdp8hnIuT4{yj00i$)Sn5-udRKckF zNoN3h0ElJ>2}C52Cc(1Xfbe=r0r^EM+U{{}fwOYtalAQwp? zAua~6Ozla`{FLVsL|wNlM|1`Uxgi(7Nw&qe)nc|T*muvHv#?@P3gNY;wFB!bx?C~^cEA+Z zPdP~;7OV~%Rv?`EK{~IB9X>aeEGPlZi5>otc+R29Gv)gbCFWbu-5Z1B9@k% z4>n~<`zR)-6;)peaj2z>aO`@sj_i8_=gJI(r20Gu|2?4sTrAl*|DphF^XVh%->D7YZ0Ryf_5nxMK-L`4#?bby?XBG)1`5*#}Vxq)ijs;a8bXEe!;5Eu79+4`H04rEMEG z=G(7C`;!{IonO(`q23|d4^Xf&znF)eW|Q-?ub)ex_s~tq6ZasR;3G}_hoq`)Px)RA zDCP*DZ(&X5HZY{=;AA_(?`AT%jUP6TSPlcs$Obw42R`va)^4~rbFkBOzu7BSk+1Fu zYo#vs3|6ONDn}x+D(1c)a2o-1xlWF!haVU*BZDVOOp9w5Em=iMOMEKRTjkBhE^x>F zI={gB`R#dnQ#z-oKT7pj17*-`_ZnG?Cy7)u3#*s-RULcNgWJ&0GDx9`#q^t1(n#gir8E%q0V9 zx34?lmt03h*et5FaYkq#Nz`dJU1iGlGZ(s6F7tyv6xU=Dc(u!+=A1n;+FqyT`CAx? zyf3y__^Aj{R~)6CSh8J=a8C(DiDDa=Ur+8_To%2o^;r691C@6mc?MAp&8oUVnG2Z{ zLAG;YbRNS6VI;v6UNqiCm|r^t4L2poHZM}fW&d3J@!fb>NElf~*QdCxJBhoT8<0D= z?G_%J>4e4+K1FWFT5X4U&OgrGQC03tI|qnSg8q(*L_*V;3`c&6T|!fj;R_~ElwJv7+|p(_G@@H90XID!wouQy=Heh=vQQ`8S=m`G58pRrrYD!|mxU7K)Z_<%PpS zUUVW*1f}70ek$E$vht(ZJ|Lnzw zT5u}k{VMF4lqKa&1{DJ_9UbbtO;2s^mtRpsOzr}f)l{*aKfnJ4FPZ#^wHUh>Yj@8} zW5&7L>`KI_n2L$7wlKWPyDhPPL5B*rz6b9(*X#{*A0oq(epA;>twsEkx%Pr`xsw7F zel(psPAzY46D_u0!RulelqaIhmBh@?G2LN%H9K^fY(DJLEC-YVcH>=q%~)LJQ^PwF z17+`-Z`-E(;4#Zf9VrR-tcEFFduRHPaE8g-PXb;u?1`#6E96X|Q_;aZm$dgKReis6 zU%1C0A}Rh&r&U~n7Ss~C8bBDw_mT>QRLg-mnBWz>H~IO;MeiizqTU2vh1^fWnH3d+zcj{Pz0UiiP^|)SIN;BiG&<4MMG7 zqqwuJ48gYcc61>}iS|zrt}M%wJtMavZBI`Ooz%DltR9@rpUNX^FXe$z;bT4elKdWIcuj}9@d~P z1>HPmDlc!oCWxm`Cl$pct*cXiqrg7eG3t(cI%^|`t;(1O?n?o^w`bw`IWTI-4n5ZCdjBE04W@O3#-t80*EEv$@;|k z_JlXhBYa@6NCp0KGfVst?ha^Ja`+mf&1 z)2G+1IU484FiIYlB`&T2d(iiXe#a;U;--C0IX=x@(r5E;!j1Z3l<7|iPvC(-_%#0# z5aJK7(V?8nm=wP%w+7@N|7J={z15E!h^E4TYst@i6SXrltAEFf!EFhkZWI_Z} zI40)(q!f@+H7RHef<9;p?Tu2os`&bh+G_xiZ{H3xpZmNej0mp>G^%%9qA{{;`)(O( z>V&gpj3LKg)=>U*94=fH^y;E1FS0e`M`wb?n6om$T3n0Tu8yzUN?ar60d9nII|{IH znk#oy9x%+)WJHf4hS3|}fI*Sm2L$1RUV%#AkZ8a8bT9`RD7@GoW!Z_B9i#s%(w!Re5#gkl zN!dDVRIb5(raap+y>SCjXcA!4#KOfF$MFb79WnxHd=>r`N~&p61-#`8{%_x#361gA zCrA}wc#0ea5ndBXXnNqsHExjlg(e*+vW@h2q})FCoeoyaSd~q7BV3*!d*FBL(ZOpU zSgWH8zhEQ-5yOi$Qb<=tVsIVmrlBjp6o~8cfchXp588TPu;Dq8!8d;zVs|=<~us}MUTwe{T&Bxs6{iOr~#7BSiaHoz{ zK*EE|{IySbD;HSxc)8O7B1DUFo>JBG;4x}L4B<7&)(g9$fcFZ;RS|*E25~4zHu3UL z0;S832tGg$VKWDskZ_j+4Gv!?r6EN# z+)6Y(E{W-A$1CTjiJ&CTzbOlGN&=hEs*t<+DR>DSj0v%J<6n|;B`POq@%?5sZWHc3 zoXaRPZs>hsNN0PB%w2kGy)Ii$l~H-N2_Yes))oS@g zwnB-vh-t|y6s(mDWX8NEE~8zmUcQan#|>y>i!&Vhfe#&W2~I+fpzO2u*}rGF^QiG_ zeU13{5ggCO%C>Y~xCb?%+*8X1Kh#wjj|^4clfmDakPcB0hnfpjR)^?UVQ}&@VXbonI1)i^$Z0&&JIkg<9-2h6RqNZ90Q0B|08qp$7(>j zOY!Y>&3k4lZqc3dovzT#%)jBBlvWTDb(TCWaAH0Z)DirOdXWNoh4*qAHUdQ`60FJ^ zdVTs_c)^H<;>N+tgHnRhTZu*c2 ze)P|KgP!AQgPOnj8w4IbjigJs3`cyOrnZ2TKKPr0JE6vp6;SGY3NWdesL z3|5C3&3*i#)dLMJ3#~G_7{)%w2@E@Xi?nuTW=4rz@>*by7RXpHw!i6l4pPM-S6|

        aC6?8Vni<{|k%}z)VAt*2=uu6!M_Md|a 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 literal 0 HcmV?d00001 diff --git a/docs/system-architecture/diagrams/platform-systemview.xml b/docs/system-architecture/diagrams/platform-systemview.xml new file mode 100644 index 000000000..9fba16124 --- /dev/null +++ b/docs/system-architecture/diagrams/platform-systemview.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/system-architecture/favicon.ico b/docs/system-architecture/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..be74abd69ad6a32de7375df13cab9354798e328f GIT binary patch literal 766 zcmc(dze~eV5XUd2fg&jH87YDYDQKxq1{4b-_ydP-wqS9vgGh17QXQQAwOE{VaBvi* zmu^z9t({y-&1ey8Y_x;?x+`BviV9;aRjMgZ8M*!jgkRrFqSI9;F zHyfX@Az|AvVmn~YWWZP`0&JWEY~BFm?*Vq}VD7&_%x%MP$p`D`4JMC!K|B7pt?Mmp zUJAB7rxMXS6=!P+AtLU9V)J#61WPxwipRXCHO{BJ`l{m53#=t97a!znv~vfmr|AaP zRGIT7#0FyJy3Z*hL{GQp-0TRhX8UzZ)+>%?mK0^goaX4Q;x -- -- + +# THANKS + + + +# TECHNOLOGY COLOPHON + + HTML5, CSS3 + Normalize.css, jQuery, Modernizr diff --git a/docs/system-architecture/img/mifos-icon.png b/docs/system-architecture/img/mifos-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb025238553c5b4fa3fe008ae4c42367eb9f711f GIT binary patch literal 6363 zcmV<17$oP3P)HsxVEglZB91PCFRgfbx{nFlkI44Fp~2$O*X6ElPm zS^^0;G#fC@6vxK6fWa7d*|Mx+)hp>rx1V$N-s}BwCEGHXt?zv2ey8lSetZ2^-9jRQ zk)Z%U5dk6|y9Oh-i2x805r_?69(k1j5CI5Azs5-cM+7!Jr33_l0E$WvFaiPuq~ZAy z0BGdfbo|T5=OhBg5ZDRVv=bj_aRJ&~JSGPN0ImQ*0ayTJvXYQlTTJq4=vW$W%}Y|Y zLh^E8IZ1v=c8rlTJtu}1I_}VPp>k1B1e)gUHZ^~n!Grry55G!GOL`H(mZk6b08laj z4n#!&uoa*r05uE*0hj`ST9edR3%?w|sRj{|Wg^(Nitg*qeXlL!UcICt_@4n2jwpdf zQRXKXoYbX*`GenZi@Rns(at#*fRP$r1_drjD54k0Gyia1?9y#s@Fx`jri7gcXlCBx zIFu&^M92V1!H8y#4>b&A)c68`;kOtPC_-RL5i>c;WX@Umw=JE&Q^35-gM;n()r z0*rw|(_N{db+>WR7}CfE3v~sIO9B&tAs{J~gebHz1ChvufA#q$|3$efjSTQ;Vep)l z2mki;jPRsg=atW2QDKEQ11Oh>I3P+SLIgk{RDb|T#D*cLF9k3xJOY4HSfWnALebW1 zFZ=B)`=73id3)|$Htv$J$(z%T8pDz0GuaQXHpQMGGOr}kkl+|a6)Bqu^aEOpww6WD zyW2uf=L_4~e^wdv=*yY3Xw8n@hQ@}9T%_W#$) z_genemvN>*pp{@?#{O~;m%lCaibOiF-bP6L2O1gBF1uz(qVyPPo3z$G5-nS>N6Ftl9soCtpACe;(b`x+3JMdEfLcSu2Qh zB%u&M61lv<#%9Cu>+Y-!&HMHGy}jT0e=qM@vvxzLwODq_RN4C-X*PX>Sr00p29NJ3Eg}nsJ za^sSQmDA$JhOJHMpZ?*UL;sRY6+jPr+|?g<%zN)Z{|~Cm7T?Ky7rrk+XF!5G+N_T9 z^6&k`vc|7@dTZ^Bbbix8{b<-_*DHObs<0kw}naCbyWavhI`3 zk1ctz?d?A@lGT1r%3{Dgh~z;)9lrvALPW(7xPiuw_Uv_k{pXRT7tN^n=<8D=Pk!EI zU-up_na=7_;f z4+HdaL@!4$5Kj$&2temRsl2Rya&!Cb8VBdB$z`hzhVC<4+JF7gzTOJ1GpUFe5dm^! zt=$>(zO{}2)6|McF_^o$?}$w@K;h}cOa8U=s@kpaLC_vA17@RN?J z84a<{b0&u0S=Tsp&D)=M&sC%ZAu^!S(h&eKO{47xdK0TY?z}T#c(z9Zk#+le2EXyr z_Re#18Cx2bMnV$vd3BhX2)uK+(0T6Bd`A_GNIw$I>9~7wNpPR$r;qx#RIE?#xWiEx zB|<3`pn}n3v<5grTBx$u_VoNz0nxnr;Le1H9r&oJ|BO^JkKEKj5nxH@1ONm?1Y@g% zgO|^$csS>{^FD6N-adOweq_jA0Gz|*sz7Iz5B9v8_d%f{y+m(Pir%cYp)mz(U-15YZhaTC`^5=-pNLR&u zZxUyRZXI{yqc@Geb=U03qQ0nEUf^IL0YiseaFq*=azQ8;Bq;=7+=Cu$&9;pnatlER z09+bv#G_IPslYhYo1X|4hq}10l@qv|`rcnM*p<5Kv4wXp`_aMBogF0D+gxB$+OHo?O>-_D2T?X8-=GsXbLu&)$jtN!w;c zCcTyw(s0yJIO7a9^t$HJ3;@wcaWRsO+6uy1LG`x6AVcVrgr)TMO92pQ>6~o>5-0)`(lLZ^eTWMF-uC=8 zF*B09;jD#s7aeJxIWe{d0fMi7)P9AO3V^d=+3^?#D3vYDG^|05^Gt6}#hY`AQO2qN zwBM-*M2Hx$yv*VhGB8~#V`$iz5deUt9qdCci|L2f7?PBWd&bIr@6)iDAIF9 z5!JaD37F8(fI+ugJlyoyPdvJ}@3y5gzaxk;|JdI1?9P_K1TrKd!s9*>N{*c&fFy{N zdxs2!xaD1lb zaYJUPM<@q8+)v%bR(iU5)g4DOeY49<1W>ZyYiU5PLPS)ECscxn!vO;zsBuSUC?u$1 z!4atRFb>zLhz#N6gE0gIU>=T0NVW?AifEJuMkjNCc16JK1y@0Dx)3oLH*0-Whlr2} zlmbBXX}+{iH`2{XXVNuiRR8I}E}!~vJmz)Dk&J{y#+bwtT{Quui$Zs#Vr+z7bo}1P zY1DCyMgSy%O%8H9pkr4-63DNL1AyR;FZXE$@w z2f$WoPYmf^L(k;hD3H=U8dHeiYKX4RK~he2A1)8TdGdllF-yR_v&h3Fi+3CbNI3k52Y?!HlyOXbElR+clVX! z@68n9f8X8Lzof0VSnV~nrl<>f2B5o+JRUPf3W5=CVaa>xChApw4mXaqejhV&_mE2n z2qdUf9)BqSAb_BbLyO0UpL#-L5AHddt=W7yedV%A(UspwEZb1yi|kHk$?P5~#D^6| zQW0YYCp0wC+@8`_whw;irB6Dpn$r;Z|Qt}wkF7+Wj2Xxu zfGz42K;#5MAOI9Kj{Q-CC*uaTS6a|n?PY5-k_rk-%#$>lLZbjU5-=^4tS|GwcK%uQ zx2@ZFWbAu;dahhJF8Io_s--`y@bT=Pj@)HK1ra|n|5XYQfHY?6L_n&eC&N3s(hJt@ z?p{z4G*k6)U&~LIHrzk2Ht=$gC#MtW0}=yo5O8)vT|lMwoMfiTdzr>|O71_9aS3ci ztRz2@gwbOZ0M3Ar5EFjZdh?>1`?l`tdhD%TJ+sf8RCe{UDUo|Q0yHPPXJiY)V4NvB z(T0dX5g{UQW@rQe$|*{0&u1g;t%H$8&fo=e9j~0g`qan+o zU}Z4!&3nUM{~-eiO^%X?KoNik;nb-FLjYt1jvzTD;ak1@ya|^-^uq27Uft1k!^~R$ zhm{uJICD&B^O(5r+Q!xaFJqdbk*>$_o+gx{GH~PwnxP9xga`Zc69*lXI=VR}+9xZ) z;-h3o28e&<*U3%QZZI)#WDn)16Yhs?S%vpIHWKq6q7{#m(8yD^||w^ z554zs+qmbq_xz_s)-Wk6wPH|7#XyZTWKZ4V+q$!ffg;nC zUegEQA;v6)%u?m95FCBH@J4TXpfb2056-yXLAVZ<=%Cm1j5Xs0evf$xSGLkxmqi&L% z9USwFPH+6S2Wz6=xFl>uUqB#-pwvYl$~*Yx?hgFJKM%9rof$v^hWN#9;&BZW9Vn!1 z2m~#rEK?x>I#RK)$=|>0^2yiKm-+5{{Jq21+GO$hzku%T z5J@PAettA_{pwFUZUJ56*Uqc@)6@#j(+JqFBZ9#}?{;Bq*PuNmpLc49vQBN*QE{mO zGhBiR72a2-R{GZF71d~r6*xh6Q7HgG)Cf=kkm5jg!G(8sbwZ}#0y4m+{vvj#1GYv-eVkE)9g1W$iv+Jk4w7VmBPTN4?(xAoj6C%cA zj#SWL3uQ|@Sn1aq!(km5_kkn?A_P+dkdk01FTe(BbzMQ3ykOlK8yF##dpL}V`zYfG z*4dWXYl%mmj;Fkhm2%s?ph9&E>Kmk(%3XB61fldUrEih%P_R|vHXU}Tz zJ)6t9Rwiq!qoN28w6(%w5r%Tj1YKvq5h3W&p*rT%z@t;P=-{iLbqJj?mA3`B(xujv z0~!#VQxk%O#V}WNRo<1r86prUZCEBlL#_yXlBfUx?w0~^Tm^Yspz>*)hW!ecLb>@O zWL;VEjzGMry8r>dML~;GOK-+w5_q#dHMqAwtxrc!A}3v40e~$O9~ji~Hn+^=#li6S1IiCW?*>h;iX}PaETZLL-q?ihOOU;+5?K#fvg|C(bR6 z7qTK(7B&vm`t*M+7$4heXO)(7T-lv=mcH?M_rIlW74v%a{QT;`ALms0j`&QTJtc)Y z`}6Sr-kw>>jQjJ`D!nffqQekC*Ej?ihmc33r?+=5Pv+eAnPY;Vw+;%~*jJd~DDvqH zA=e>d*|@BpQX9DMU@~7!JJJ+LEl2xo(U{E}+d5M}+t-y|TpzGjg|e`vwl-YYzoWk< z5-_fOWnc2Q<1795)&#A0dsB9BXZz5tL5sJV1@Rwok9P4u*1ckTdv^KMM4)g=0GZAl z^fwI#dqT#Pb^BAxW{(NK;7X~PI-*DCvZ*gWacf8B;)aN4VSZvzeTu4;Dp~BLERG zNx(*CEJ$hQh4R*iESR3~Vs*e|p^%1I&AD=ZefZ@GW!}v|q!$%wMX4AXU^=d1b813= z$-5*Uc>UnAmbRfjjcbS3ALzeBS**6(ae)IK8XxoIeI`G3Dxn8Vqv+Eo%&!alwJxYT zpBx#y-or^oJX{VGof#cN#kq45foC)%&EwI^Ekhg57NFGc;LK@G6{g(3v1QfYKkI&R z)z02`cXelf%o(f7J5W{?vOdi?0;-}OI`{O1n4Iv!*UznXqXC2JD*gTS<=)1=w0)XK zV^|&Wtmw_!-EZyhU-i+^%z2vMgezv1v$0VNPYFOcQt#|5OgMc^@a?4&qt7>|^4Et$ zR(U*N$d6kGf0*#-{Zl8Fz0i{tp0%qFczU}t!1(d`ND&Vhd~jNYf8*GwXZ^&u_nny6 z*fUhLH35ndBPFB)fuyR+eUQ#Oq???2G7hC}A%ub=)0xUSE`gE<&zls#ZB}_;!`9}Z zM^mtp#nHc zK~vg+Le7P8K8Z?QU#>V75GslEJstTDM zr_?~kQ2_@b9*tQ26DxgPm&_SOG1#L(8}Y(bWnb5CU;W_k7F6dG27 zP{a++{k36_rgNs*Lh4h>yw2>Zz^6z0^568DESOB@VJPo%K;UitId*uUsCx2p+F((P zyW`>sZ+vZ50%CpxxX$%$yLz<)8(MyIs6Fl9)-t%TYiM*0Gzvh$RbvJ^GN~6I|5U!T zu89nWuMFgz_y^4cH(WR^_FOo?i|uI}fUqN(E>=mRQj_g?Ne&1=iipA{mKwd0o85A;2~ zyKNv^QRNjACq^Tt$@Mae_4`iRrW{3~-i$pjQQ;e0IIRpU%P_{51-fU~=GX7-%%s4T z>yIS!M%<%0^&xZrU|!7h8JY(GNKok?F^Ci@A`UE5}|pK1u02pE*IML1Vbo{+)2QjWlaP&8zV z8ZXx>YQpC3!~Oa3euMLfSKGa_GaIW27-P?@3w_2AB>@m;rM4#`Qg7O(gME3cJLfJK z%8Sz-seDndel%k74I$2&tIIs#Gc=5O4C>4j1DjihF6qtL(}Je9Yf{|zn%BT$ZN$Ry dG2bzv|36)H#@UaOP`dyC002ovPDHLkV1n%3L{9(! literal 0 HcmV?d00001 diff --git a/docs/system-architecture/index.html b/docs/system-architecture/index.html new file mode 100644 index 000000000..fdf12d439 --- /dev/null +++ b/docs/system-architecture/index.html @@ -0,0 +1,587 @@ + + + + + + + + + Mifos Platform Docs: System Architecture + + + + + + + + + + + + + + +

        +
        +
        + + +
        + + + + + + + + + \ No newline at end of file diff --git a/docs/system-architecture/js/plugins.js b/docs/system-architecture/js/plugins.js new file mode 100644 index 000000000..9683075a4 --- /dev/null +++ b/docs/system-architecture/js/plugins.js @@ -0,0 +1,23 @@ +// Avoid `console` errors in browsers that lack a console. +(function() { + var method; + var noop = function () {}; + var methods = [ + 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', + 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', + 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', + 'timeStamp', 'trace', 'warn' + ]; + var length = methods.length; + var console = (window.console = window.console || {}); + + while (length--) { + method = methods[length]; + + // Only stub undefined methods. + if (!console[method]) { + console[method] = noop; + } + } +}()); +// Place any jQuery/helper plugins in here. \ No newline at end of file diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js new file mode 100644 index 000000000..81b644b97 --- /dev/null +++ b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js @@ -0,0 +1,83 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +!function ($) { + + $(function(){ + + var $window = $(window) + var $body = $(document.body) + + var navHeight = $('.navbar').outerHeight(true) + 10 + + $body.scrollspy({ + target: '.bs-sidebar', + offset: navHeight + }) + + $window.on('load', function () { + $body.scrollspy('refresh') + }) + + $('.bs-docs-container [href=#]').click(function (e) { + e.preventDefault() + }) + + // back to top + setTimeout(function () { + var $sideBar = $('.bs-sidebar') + + $sideBar.affix({ + offset: { + top: function () { + var offsetTop = $sideBar.offset().top + var sideBarMargin = parseInt($sideBar.children(0).css('margin-top'), 10) + var navOuterHeight = $('.bs-docs-nav').height() + + return (this.top = offsetTop - navOuterHeight - sideBarMargin) + } + , bottom: function () { + return (this.bottom = $('.bs-footer').outerHeight(true)) + } + } + }) + }, 100) + + setTimeout(function () { + $('.bs-top').affix() + }, 100) + + // tooltip demo + $('.tooltip-demo').tooltip({ + selector: "[data-toggle=tooltip]", + container: "body" + }) + + $('.tooltip-test').tooltip() + $('.popover-test').popover() + + $('.bs-docs-navbar').tooltip({ + selector: "a[data-toggle=tooltip]", + container: ".bs-docs-navbar .nav" + }) + + // popover demo + $("[data-toggle=popover]") + .popover() + + // button state demo + $('#fat-btn') + .click(function () { + var btn = $(this) + btn.button('loading') + setTimeout(function () { + btn.button('reset') + }, 3000) + }) + + // carousel demo + $('.bs-docs-carousel-example').carousel() +}) + +}(window.jQuery) diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js new file mode 100644 index 000000000..5abfe4228 --- /dev/null +++ b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js @@ -0,0 +1,290 @@ +window.onload = function () { // wait for load in a dumb way because B-0 + var cw = '/*!\n * Bootstrap v3.0.0\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n' + + function showError(msg, err) { + $('
        \ +
        \ + ×\ +

        ' + msg + '

        ' + + (err.extract ? '
        ' + err.extract.join('\n') + '
        ' : '') + '\ +
        \ +
        ').appendTo('body').alert() + throw err + } + + function showCallout(msg, showUpTop) { + var callout = $('
        \ +

        Attention!

        \ +

        ' + msg + '

        \ +
        ') + + if (showUpTop) { + callout.appendTo('.bs-docs-container') + } else { + callout.insertAfter('.bs-customize-download') + } + } + + function getQueryParam(key) { + key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars + var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)")); + return match && decodeURIComponent(match[1].replace(/\+/g, " ")); + } + + function createGist(configData) { + var data = { + "description": "Bootstrap Customizer Config", + "public": true, + "files": { + "config.json": { + "content": JSON.stringify(configData, null, 2) + } + } + } + $.ajax({ + url: 'https://api.github.com/gists', + type: 'POST', + dataType: 'json', + data: JSON.stringify(data) + }) + .success(function(result) { + history.replaceState(false, document.title, window.location.origin + window.location.pathname + '?id=' + result.id) + }) + .error(function(err) { + showError('Ruh roh! Could not save gist file, configuration not saved.', err) + }) + } + + function getCustomizerData() { + var vars = {} + + $('#less-variables-section input') + .each(function () { + $(this).val() && (vars[ $(this).prev().text() ] = $(this).val()) + }) + + var data = { + vars: vars, + css: $('#less-section input:checked') .map(function () { return this.value }).toArray(), + js: $('#plugin-section input:checked').map(function () { return this.value }).toArray() + } + + if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return + + return data + } + + function parseUrl() { + var id = getQueryParam('id') + + if (!id) return + + $.ajax({ + url: 'https://api.github.com/gists/' + id, + type: 'GET', + dataType: 'json' + }) + .success(function(result) { + var data = JSON.parse(result.files['config.json'].content) + if (data.js) { + $('#plugin-section input').each(function () { + $(this).prop('checked', ~$.inArray(this.value, data.js)) + }) + } + if (data.css) { + $('#less-section input').each(function () { + $(this).prop('checked', ~$.inArray(this.value, data.css)) + }) + } + if (data.vars) { + for (var i in data.vars) { + $('input[data-var="' + i + '"]').val(data.vars[i]) + } + } + }) + .error(function(err) { + showError('Error fetching bootstrap config file', err) + }) + } + + function generateZip(css, js, fonts, complete) { + if (!css && !js) return showError('Ruh roh! No Bootstrap files selected.', new Error('no Bootstrap')) + + var zip = new JSZip() + + if (css) { + var cssFolder = zip.folder('css') + for (var fileName in css) { + cssFolder.file(fileName, css[fileName]) + } + } + + if (js) { + var jsFolder = zip.folder('js') + for (var fileName in js) { + jsFolder.file(fileName, js[fileName]) + } + } + + if (fonts) { + var fontsFolder = zip.folder('fonts') + for (var fileName in fonts) { + fontsFolder.file(fileName, fonts[fileName]) + } + } + + var content = zip.generate({type:"blob"}) + + complete(content) + } + + function generateCustomCSS(vars) { + var result = '' + + for (var key in vars) { + result += key + ': ' + vars[key] + ';\n' + } + + return result + '\n\n' + } + + function generateFonts() { + var glyphicons = $('#less-section [value="glyphicons.less"]:checked') + if (glyphicons.length) { + return __fonts + } + } + + function generateCSS() { + var $checked = $('#less-section input:checked') + + if (!$checked.length) return false + + var result = {} + var vars = {} + var css = '' + + $('#less-variables-section input') + .each(function () { + $(this).val() && (vars[ $(this).prev().text() ] = $(this).val()) + }) + + css += __less['variables.less'] + if (vars) css += generateCustomCSS(vars) + css += __less['mixins.less'] + css += __less['normalize.less'] + css += __less['scaffolding.less'] + css += $checked + .map(function () { return __less[this.value] }) + .toArray() + .join('\n') + + css = css.replace(/@import[^\n]*/gi, '') //strip any imports + + try { + var parser = new less.Parser({ + paths: ['variables.less', 'mixins.less'] + , optimization: 0 + , filename: 'bootstrap.css' + }).parse(css, function (err, tree) { + if (err) { + return showError('Ruh roh! Could not parse less files.', err) + } + result = { + 'bootstrap.css' : cw + tree.toCSS(), + 'bootstrap.min.css' : cw + tree.toCSS({ compress: true }) + } + }) + } catch (err) { + return showError('Ruh roh! Could not parse less files.', err) + } + + return result + } + + function generateJavascript() { + var $checked = $('#plugin-section input:checked') + if (!$checked.length) return false + + var js = $checked + .map(function () { return __js[this.value] }) + .toArray() + .join('\n') + + return { + 'bootstrap.js': js, + 'bootstrap.min.js': cw + uglify(js) + } + } + + var inputsComponent = $('#less-section input') + var inputsPlugin = $('#plugin-section input') + var inputsVariables = $('#less-variables-section input') + + $('#less-section .toggle').on('click', function (e) { + e.preventDefault() + inputsComponent.prop('checked', !inputsComponent.is(':checked')) + }) + + $('#plugin-section .toggle').on('click', function (e) { + e.preventDefault() + inputsPlugin.prop('checked', !inputsPlugin.is(':checked')) + }) + + $('#less-variables-section .toggle').on('click', function (e) { + e.preventDefault() + inputsVariables.val('') + }) + + $('[data-dependencies]').on('click', function () { + if (!$(this).is(':checked')) return + var dependencies = this.getAttribute('data-dependencies') + if (!dependencies) return + dependencies = dependencies.split(',') + for (var i = 0; i < dependencies.length; i++) { + var dependency = $('[value="' + dependencies[i] + '"]') + dependency && dependency.prop('checked', true) + } + }) + + $('[data-dependents]').on('click', function () { + if ($(this).is(':checked')) return + var dependents = this.getAttribute('data-dependents') + if (!dependents) return + dependents = dependents.split(',') + for (var i = 0; i < dependents.length; i++) { + var dependent = $('[value="' + dependents[i] + '"]') + dependent && dependent.prop('checked', false) + } + }) + + var $compileBtn = $('#btn-compile') + var $downloadBtn = $('#btn-download') + + $compileBtn.on('click', function (e) { + e.preventDefault() + + $compileBtn.attr('disabled', 'disabled') + + generateZip(generateCSS(), generateJavascript(), generateFonts(), function (blob) { + $compileBtn.removeAttr('disabled') + saveAs(blob, "bootstrap.zip") + createGist(getCustomizerData()) + }) + }) + + // browser support alerts + if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) { + showCallout("Looks like you're using safari, which sadly doesn't have the best support\ + for HTML5 blobs. Because of this your file will be downloaded with the name \"untitled\".\ + However, if you check your downloads folder, just rename this \"untitled\" file\ + to \"bootstrap.zip\" and you should be good to go!") + } else if (!window.URL && !window.webkitURL) { + $('.bs-docs-section, .bs-sidebar').css('display', 'none') + + showCallout("Looks like your current browser doesn't support the Bootstrap Customizer. Please take a second\ + to upgrade to a more modern browser.", true) + } + + parseUrl() +} diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js new file mode 100644 index 000000000..adecc88ec --- /dev/null +++ b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js @@ -0,0 +1,169 @@ +/* Blob.js + * A Blob implementation. + * 2013-06-20 + * + * By Eli Grey, http://eligrey.com + * By Devin Samarin, https://github.com/eboyjr + * License: X11/MIT + * See LICENSE.md + */ + +/*global self, unescape */ +/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, + plusplus: true */ + +/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ + +if (typeof Blob !== "function" || typeof URL === "undefined") +if (typeof Blob === "function" && typeof webkitURL !== "undefined") self.URL = webkitURL; +else var Blob = (function (view) { + "use strict"; + + var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || view.MSBlobBuilder || (function(view) { + var + get_class = function(object) { + return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; + } + , FakeBlobBuilder = function BlobBuilder() { + this.data = []; + } + , FakeBlob = function Blob(data, type, encoding) { + this.data = data; + this.size = data.length; + this.type = type; + this.encoding = encoding; + } + , FBB_proto = FakeBlobBuilder.prototype + , FB_proto = FakeBlob.prototype + , FileReaderSync = view.FileReaderSync + , FileException = function(type) { + this.code = this[this.name = type]; + } + , file_ex_codes = ( + "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" + ).split(" ") + , file_ex_code = file_ex_codes.length + , real_URL = view.URL || view.webkitURL || view + , real_create_object_URL = real_URL.createObjectURL + , real_revoke_object_URL = real_URL.revokeObjectURL + , URL = real_URL + , btoa = view.btoa + , atob = view.atob + + , ArrayBuffer = view.ArrayBuffer + , Uint8Array = view.Uint8Array + ; + FakeBlob.fake = FB_proto.fake = true; + while (file_ex_code--) { + FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; + } + if (!real_URL.createObjectURL) { + URL = view.URL = {}; + } + URL.createObjectURL = function(blob) { + var + type = blob.type + , data_URI_header + ; + if (type === null) { + type = "application/octet-stream"; + } + if (blob instanceof FakeBlob) { + data_URI_header = "data:" + type; + if (blob.encoding === "base64") { + return data_URI_header + ";base64," + blob.data; + } else if (blob.encoding === "URI") { + return data_URI_header + "," + decodeURIComponent(blob.data); + } if (btoa) { + return data_URI_header + ";base64," + btoa(blob.data); + } else { + return data_URI_header + "," + encodeURIComponent(blob.data); + } + } else if (real_create_object_URL) { + return real_create_object_URL.call(real_URL, blob); + } + }; + URL.revokeObjectURL = function(object_URL) { + if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { + real_revoke_object_URL.call(real_URL, object_URL); + } + }; + FBB_proto.append = function(data/*, endings*/) { + var bb = this.data; + // decode data to a binary string + if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { + var + str = "" + , buf = new Uint8Array(data) + , i = 0 + , buf_len = buf.length + ; + for (; i < buf_len; i++) { + str += String.fromCharCode(buf[i]); + } + bb.push(str); + } else if (get_class(data) === "Blob" || get_class(data) === "File") { + if (FileReaderSync) { + var fr = new FileReaderSync; + bb.push(fr.readAsBinaryString(data)); + } else { + // async FileReader won't work as BlobBuilder is sync + throw new FileException("NOT_READABLE_ERR"); + } + } else if (data instanceof FakeBlob) { + if (data.encoding === "base64" && atob) { + bb.push(atob(data.data)); + } else if (data.encoding === "URI") { + bb.push(decodeURIComponent(data.data)); + } else if (data.encoding === "raw") { + bb.push(data.data); + } + } else { + if (typeof data !== "string") { + data += ""; // convert unsupported types to strings + } + // decode UTF-16 to binary string + bb.push(unescape(encodeURIComponent(data))); + } + }; + FBB_proto.getBlob = function(type) { + if (!arguments.length) { + type = null; + } + return new FakeBlob(this.data.join(""), type, "raw"); + }; + FBB_proto.toString = function() { + return "[object BlobBuilder]"; + }; + FB_proto.slice = function(start, end, type) { + var args = arguments.length; + if (args < 3) { + type = null; + } + return new FakeBlob( + this.data.slice(start, args > 1 ? end : this.data.length) + , type + , this.encoding + ); + }; + FB_proto.toString = function() { + return "[object Blob]"; + }; + return FakeBlobBuilder; + }(view)); + + return function Blob(blobParts, options) { + var type = options ? (options.type || "") : ""; + var builder = new BlobBuilder(); + if (blobParts) { + for (var i = 0, len = blobParts.length; i < len; i++) { + builder.append(blobParts[i]); + } + } + return builder.getBlob(type); + }; +}(self)); + +/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ +var saveAs=saveAs||(navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator))||(function(h){"use strict";var r=h.document,l=function(){return h.URL||h.webkitURL||h},e=h.URL||h.webkitURL||h,n=r.createElementNS("http://www.w3.org/1999/xhtml","a"),g=!h.externalHost&&"download" in n,j=function(t){var s=r.createEvent("MouseEvents");s.initMouseEvent("click",true,false,h,0,0,0,0,0,false,false,false,false,0,null);t.dispatchEvent(s)},o=h.webkitRequestFileSystem,p=h.requestFileSystem||o||h.mozRequestFileSystem,m=function(s){(h.setImmediate||h.setTimeout)(function(){throw s},0)},c="application/octet-stream",k=0,b=[],i=function(){var t=b.length;while(t--){var s=b[t];if(typeof s==="string"){e.revokeObjectURL(s)}else{s.remove()}}b.length=0},q=function(t,s,w){s=[].concat(s);var v=s.length;while(v--){var x=t["on"+s[v]];if(typeof x==="function"){try{x.call(t,w||t)}catch(u){m(u)}}}},f=function(t,u){var v=this,B=t.type,E=false,x,w,s=function(){var F=l().createObjectURL(t);b.push(F);return F},A=function(){q(v,"writestart progress write writeend".split(" "))},D=function(){if(E||!x){x=s(t)}if(w){w.location.href=x}else{window.open(x,"_blank")}v.readyState=v.DONE;A()},z=function(F){return function(){if(v.readyState!==v.DONE){return F.apply(this,arguments)}}},y={create:true,exclusive:false},C;v.readyState=v.INIT;if(!u){u="download"}if(g){x=s(t);n.href=x;n.download=u;j(n);v.readyState=v.DONE;A();return}if(h.chrome&&B&&B!==c){C=t.slice||t.webkitSlice;t=C.call(t,0,t.size,c);E=true}if(o&&u!=="download"){u+=".download"}if(B===c||o){w=h}if(!p){D();return}k+=t.size;p(h.TEMPORARY,k,z(function(F){F.root.getDirectory("saved",y,z(function(G){var H=function(){G.getFile(u,y,z(function(I){I.createWriter(z(function(J){J.onwriteend=function(K){w.location.href=I.toURL();b.push(I);v.readyState=v.DONE;q(v,"writeend",K)};J.onerror=function(){var K=J.error;if(K.code!==K.ABORT_ERR){D()}};"writestart progress write abort".split(" ").forEach(function(K){J["on"+K]=v["on"+K]});J.write(t);v.abort=function(){J.abort();v.readyState=v.DONE};v.readyState=v.WRITING}),D)}),D)};G.getFile(u,{create:false},z(function(I){I.remove();H()}),z(function(I){if(I.code===I.NOT_FOUND_ERR){H()}else{D()}}))}),D)}),D)},d=f.prototype,a=function(s,t){return new f(s,t)};d.abort=function(){var s=this;s.readyState=s.DONE;q(s,"abort")};d.readyState=d.INIT=0;d.WRITING=1;d.DONE=2;d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null;h.addEventListener("unload",i,false);return a}(self)); \ No newline at end of file diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js new file mode 100644 index 000000000..f717054c3 --- /dev/null +++ b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js @@ -0,0 +1,419 @@ +/* + +Holder - 2.0 - client side image placeholders +(c) 2012-2013 Ivan Malopinsky / http://imsky.co + +Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 +Commercial use requires attribution. + +*/ + +var Holder = Holder || {}; +(function (app, win) { + +var preempted = false, +fallback = false, +canvas = document.createElement('canvas'); + +//getElementsByClassName polyfill +document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i= 0.75) { + text_height = Math.floor(text_height * 0.75 * (width/text_width)); + } + //Resetting font size if necessary + ctx.font = "bold " + (text_height * ratio) + "px " + font; + ctx.fillText(text, (width / 2), (height / 2), width); + return canvas.toDataURL("image/png"); +} + +function render(mode, el, holder, src) { + var dimensions = holder.dimensions, + theme = holder.theme, + text = holder.text ? decodeURIComponent(holder.text) : holder.text; + var dimensions_caption = dimensions.width + "x" + dimensions.height; + theme = (text ? extend(theme, { + text: text + }) : theme); + theme = (holder.font ? extend(theme, { + font: holder.font + }) : theme); + if (mode == "image") { + el.setAttribute("data-src", src); + el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption); + if (fallback || !holder.auto) { + el.style.width = dimensions.width + "px"; + el.style.height = dimensions.height + "px"; + } + if (fallback) { + el.style.backgroundColor = theme.background; + } else { + el.setAttribute("src", draw(ctx, dimensions, theme, ratio)); + } + } else if (mode == "background") { + if (!fallback) { + el.style.backgroundImage = "url(" + draw(ctx, dimensions, theme, ratio) + ")"; + el.style.backgroundSize = dimensions.width + "px " + dimensions.height + "px"; + } + } else if (mode == "fluid") { + el.setAttribute("data-src", src); + el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption); + if (dimensions.height.substr(-1) == "%") { + el.style.height = dimensions.height + } else { + el.style.height = dimensions.height + "px" + } + if (dimensions.width.substr(-1) == "%") { + el.style.width = dimensions.width + } else { + el.style.width = dimensions.width + "px" + } + if (el.style.display == "inline" || el.style.display == "") { + el.style.display = "block"; + } + if (fallback) { + el.style.backgroundColor = theme.background; + } else { + el.holderData = holder; + fluid_images.push(el); + fluid_update(el); + } + } +}; + +function fluid_update(element) { + var images; + if (element.nodeType == null) { + images = fluid_images; + } else { + images = [element] + } + for (i in images) { + var el = images[i] + if (el.holderData) { + var holder = el.holderData; + el.setAttribute("src", draw(ctx, { + height: el.clientHeight, + width: el.clientWidth + }, holder.theme, ratio)); + } + } +} + +function parse_flags(flags, options) { + + var ret = { + theme: settings.themes.gray + }, render = false; + + for (sl = flags.length, j = 0; j < sl; j++) { + var flag = flags[j]; + if (app.flags.dimensions.match(flag)) { + render = true; + ret.dimensions = app.flags.dimensions.output(flag); + } else if (app.flags.fluid.match(flag)) { + render = true; + ret.dimensions = app.flags.fluid.output(flag); + ret.fluid = true; + } else if (app.flags.colors.match(flag)) { + ret.theme = app.flags.colors.output(flag); + } else if (options.themes[flag]) { + //If a theme is specified, it will override custom colors + ret.theme = options.themes[flag]; + } else if (app.flags.text.match(flag)) { + ret.text = app.flags.text.output(flag); + } else if (app.flags.font.match(flag)) { + ret.font = app.flags.font.output(flag); + } else if (app.flags.auto.match(flag)) { + ret.auto = true; + } + } + + return render ? ret : false; + +}; + + + +if (!canvas.getContext) { + fallback = true; +} else { + if (canvas.toDataURL("image/png") + .indexOf("data:image/png") < 0) { + //Android doesn't support data URI + fallback = true; + } else { + var ctx = canvas.getContext("2d"); + } +} + +var dpr = 1, bsr = 1; + +if(!fallback){ + dpr = window.devicePixelRatio || 1, + bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; +} + +var ratio = dpr / bsr; + +var fluid_images = []; + +var settings = { + domain: "holder.js", + images: "img", + bgnodes: ".holderjs", + themes: { + "gray": { + background: "#eee", + foreground: "#aaa", + size: 12 + }, + "social": { + background: "#3a5a97", + foreground: "#fff", + size: 12 + }, + "industrial": { + background: "#434A52", + foreground: "#C2F200", + size: 12 + } + }, + stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}" +}; + + +app.flags = { + dimensions: { + regex: /^(\d+)x(\d+)$/, + output: function (val) { + var exec = this.regex.exec(val); + return { + width: +exec[1], + height: +exec[2] + } + } + }, + fluid: { + regex: /^([0-9%]+)x([0-9%]+)$/, + output: function (val) { + var exec = this.regex.exec(val); + return { + width: exec[1], + height: exec[2] + } + } + }, + colors: { + regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i, + output: function (val) { + var exec = this.regex.exec(val); + return { + size: settings.themes.gray.size, + foreground: "#" + exec[2], + background: "#" + exec[1] + } + } + }, + text: { + regex: /text\:(.*)/, + output: function (val) { + return this.regex.exec(val)[1]; + } + }, + font: { + regex: /font\:(.*)/, + output: function (val) { + return this.regex.exec(val)[1]; + } + }, + auto: { + regex: /^auto$/ + } +} + +for (var flag in app.flags) { + if (!app.flags.hasOwnProperty(flag)) continue; + app.flags[flag].match = function (val) { + return val.match(this.regex) + } +} + +app.add_theme = function (name, theme) { + name != null && theme != null && (settings.themes[name] = theme); + return app; +}; + +app.add_image = function (src, el) { + var node = selector(el); + if (node.length) { + for (var i = 0, l = node.length; i < l; i++) { + var img = document.createElement("img") + img.setAttribute("data-src", src); + node[i].appendChild(img); + } + } + return app; +}; + +app.run = function (o) { + var options = extend(settings, o), + images = [], imageNodes = [], bgnodes = []; + + if(typeof(options.images) == "string"){ + imageNodes = selector(options.images); + } + else if (window.NodeList && options.images instanceof window.NodeList) { + imageNodes = options.images; + } else if (window.Node && options.images instanceof window.Node) { + imageNodes = [options.images]; + } + + if(typeof(options.bgnodes) == "string"){ + bgnodes = selector(options.bgnodes); + } else if (window.NodeList && options.elements instanceof window.NodeList) { + bgnodes = options.bgnodes; + } else if (window.Node && options.bgnodes instanceof window.Node) { + bgnodes = [options.bgnodes]; + } + + preempted = true; + + for (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]); + + var holdercss = document.getElementById("holderjs-style"); + if (!holdercss) { + holdercss = document.createElement("style"); + holdercss.setAttribute("id", "holderjs-style"); + holdercss.type = "text/css"; + document.getElementsByTagName("head")[0].appendChild(holdercss); + } + + if (!options.nocss) { + if (holdercss.styleSheet) { + holdercss.styleSheet.cssText += options.stylesheet; + } else { + holdercss.appendChild(document.createTextNode(options.stylesheet)); + } + } + + var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)"); + + for (var l = bgnodes.length, i = 0; i < l; i++) { + var src = window.getComputedStyle(bgnodes[i], null) + .getPropertyValue("background-image"); + var flags = src.match(cssregex); + var bgsrc = bgnodes[i].getAttribute("data-background-src"); + + if (flags) { + var holder = parse_flags(flags[1].split("/"), options); + if (holder) { + render("background", bgnodes[i], holder, src); + } + } + else if(bgsrc != null){ + var holder = parse_flags(bgsrc.substr(bgsrc.lastIndexOf(options.domain) + options.domain.length + 1) + .split("/"), options); + if(holder){ + render("background", bgnodes[i], holder, src); + } + } + } + + for (l = images.length, i = 0; i < l; i++) { + + var attr_src = attr_data_src = src = null; + + try{ + attr_src = images[i].getAttribute("src"); + attr_datasrc = images[i].getAttribute("data-src"); + }catch(e){} + + if (attr_datasrc == null && !! attr_src && attr_src.indexOf(options.domain) >= 0) { + src = attr_src; + } else if ( !! attr_datasrc && attr_datasrc.indexOf(options.domain) >= 0) { + src = attr_datasrc; + } + + if (src) { + var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1) + .split("/"), options); + if (holder) { + if (holder.fluid) { + render("fluid", images[i], holder, src) + } else { + render("image", images[i], holder, src); + } + } + } + } + return app; +}; + +contentLoaded(win, function () { + if (window.addEventListener) { + window.addEventListener("resize", fluid_update, false); + window.addEventListener("orientationchange", fluid_update, false); + } else { + window.attachEvent("onresize", fluid_update) + } + preempted || app.run(); +}); + +if (typeof define === "function" && define.amd) { + define("Holder", [], function () { + return app; + }); +} + +})(Holder, window); diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js new file mode 100644 index 000000000..784f221ca --- /dev/null +++ b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js @@ -0,0 +1,8 @@ +/* + HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); +a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| +"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); +for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
        ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?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)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.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+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,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(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===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]||at.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]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},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,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?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===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.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.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.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"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.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=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
        a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
        t
        ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
        ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.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 x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
        ","
        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
        "],tr:[2,"","
        "],col:[2,"","
        "],td:[3,"","
        "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
        ","
        "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("