From 76693fc8c674aa24c3b27cf2828ab64e4afc3c68 Mon Sep 17 00:00:00 2001 From: yashrajsingh Date: Fri, 6 Jun 2014 12:10:03 +0530 Subject: [PATCH] Initial Commit initial_commit --- .gitattributes | 22 + .gitignore | 215 + README.md | 58 + app.yaml | 111 + handle_incoming_email.py | 7 + handlers.py | 951 ++ index.yaml | 60 + lib/httplib2/__init__.py | 1675 +++ lib/httplib2/cacerts.txt | 714 ++ lib/httplib2/iri2uri.py | 110 + lib/httplib2/socks.py | 438 + lib/oauth2/__init__.py | 860 ++ lib/oauth2/_version.py | 18 + lib/simpleauth | 1 + main.py | 57 + secrets.py | 54 + secrets.py.template | 54 + simpleauth/__init__.py | 13 + simpleauth/handler.py | 549 + static/css/app.css | 746 ++ static/css/bootstrap-theme.css | 384 + static/css/bootstrap-theme.min.css | 1 + static/css/bootstrap.css | 6805 ++++++++++++ static/css/bootstrap.min.css | 9 + static/css/bootstrapHOT.css | 6805 ++++++++++++ static/css/carousel.css | 148 + static/css/datetimepicker.css | 9 + static/css/datetimepicker.less | 258 + static/css/jquery.countdown.css | 50 + static/favicon.ico | Bin 0 -> 318 bytes static/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 14079 bytes static/fonts/glyphicons-halflings-regular.svg | 228 + static/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 29512 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 16448 bytes static/img/Hinder-alpha32.png | Bin 0 -> 3046 bytes static/img/Hinder-alpha64.png | Bin 0 -> 3217 bytes static/img/Hinder-red.png | Bin 0 -> 6059 bytes static/img/Hinder-semantic.png | Bin 0 -> 6771 bytes static/img/Hinder-white.png | Bin 0 -> 7463 bytes static/img/Hinder.png | Bin 0 -> 7623 bytes static/img/Hinder2.png | Bin 0 -> 6167 bytes static/img/Hinder250.png | Bin 0 -> 1289 bytes static/img/Hinder32.png | Bin 0 -> 3215 bytes static/img/Hinderyellow.png | Bin 0 -> 3079 bytes static/img/Holla.png | Bin 0 -> 12999 bytes ...-inspired-google-flat-design-preview-3.png | Bin 0 -> 19933 bytes static/img/about/flask.png | Bin 0 -> 5809 bytes static/img/about/gapp.png | Bin 0 -> 7520 bytes static/img/about/gcs.png | Bin 0 -> 4943 bytes static/img/about/gdatastore.png | Bin 0 -> 6564 bytes static/img/about/gmaps.png | Bin 0 -> 8175 bytes static/img/about/google-developers.png | Bin 0 -> 5117 bytes static/img/about/gplus.png | Bin 0 -> 1953 bytes static/img/about/gtt.jpg | Bin 0 -> 14749 bytes static/img/about/translatetiny.png | Bin 0 -> 9235 bytes static/img/about/wiki.png | Bin 0 -> 13237 bytes static/img/ajax_busy.gif | Bin 0 -> 781 bytes static/img/alpha-hinder.png | Bin 0 -> 6265 bytes static/img/alpha-hinder32.png | Bin 0 -> 2998 bytes static/img/back.gif | Bin 0 -> 2093 bytes static/img/chrome.png | Bin 0 -> 10061 bytes static/img/chrome32.png | Bin 0 -> 4929 bytes static/img/chrome_ext.png | Bin 0 -> 25705 bytes static/img/email_banner.png | Bin 0 -> 17790 bytes static/img/f/Arrow-Bulls-Eye-icon.png | Bin 0 -> 10265 bytes static/img/f/Calendar-icon.png | Bin 0 -> 3944 bytes static/img/f/Chat-icon.png | Bin 0 -> 4286 bytes static/img/f/social-media-icon.png | Bin 0 -> 4958 bytes static/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes static/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes static/img/gp.png | Bin 0 -> 13974 bytes static/img/log.jpg | Bin 0 -> 29886 bytes static/img/menu.png | Bin 0 -> 3345 bytes static/img/missing-avatar.png | Bin 0 -> 7100 bytes static/img/ping.jpg | Bin 0 -> 18394 bytes static/img/semantic-logo-sh.png | Bin 0 -> 2775 bytes static/img/semantic-logo.png | Bin 0 -> 6209 bytes static/img/signin.png | Bin 0 -> 4311 bytes static/img/silk_edited.jpg | Bin 0 -> 39995 bytes static/img/sm-banner.png | Bin 0 -> 8930 bytes static/img/suggestions_close.gif | Bin 0 -> 236 bytes static/img/white32.png | Bin 0 -> 428 bytes static/js/bootstrap-datetimepicker.js | 28 + static/js/bootstrap.js | 2002 ++++ static/js/bootstrap.min.js | 6 + static/js/countdown.min.js | 28 + static/js/hogan-2.0.0.js | 576 + static/js/holder.js | 404 + static/js/jquery.countdown.min.js | 6 + static/js/jquery.js | 9789 +++++++++++++++++ static/js/moment.js | 2290 ++++ static/js/suggestions.js | 377 + static/js/typeahead.js | 1139 ++ static/robots.txt | 4 + templates/about.html | 51 + templates/add_firm.html | 60 + templates/browse.html | 33 + templates/delete.html | 24 + templates/error.html | 16 + templates/features.html | 218 + templates/firm.html | 206 + templates/home.html | 250 + templates/hot.html | 288 + templates/invite.html | 35 + templates/layout.html | 151 + templates/privacy.html | 30 + templates/profile.html | 143 + templates/projects.html | 310 + templates/search.html | 48 + 109 files changed, 39922 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app.yaml create mode 100644 handle_incoming_email.py create mode 100644 handlers.py create mode 100644 index.yaml create mode 100644 lib/httplib2/__init__.py create mode 100644 lib/httplib2/cacerts.txt create mode 100644 lib/httplib2/iri2uri.py create mode 100644 lib/httplib2/socks.py create mode 100644 lib/oauth2/__init__.py create mode 100644 lib/oauth2/_version.py create mode 100644 lib/simpleauth create mode 100644 main.py create mode 100644 secrets.py create mode 100644 secrets.py.template create mode 100644 simpleauth/__init__.py create mode 100644 simpleauth/handler.py create mode 100644 static/css/app.css create mode 100644 static/css/bootstrap-theme.css create mode 100644 static/css/bootstrap-theme.min.css create mode 100644 static/css/bootstrap.css create mode 100644 static/css/bootstrap.min.css create mode 100644 static/css/bootstrapHOT.css create mode 100644 static/css/carousel.css create mode 100644 static/css/datetimepicker.css create mode 100644 static/css/datetimepicker.less create mode 100644 static/css/jquery.countdown.css create mode 100644 static/favicon.ico create mode 100644 static/fonts/glyphicons-halflings-regular.eot create mode 100644 static/fonts/glyphicons-halflings-regular.svg create mode 100644 static/fonts/glyphicons-halflings-regular.ttf create mode 100644 static/fonts/glyphicons-halflings-regular.woff create mode 100644 static/img/Hinder-alpha32.png create mode 100644 static/img/Hinder-alpha64.png create mode 100644 static/img/Hinder-red.png create mode 100644 static/img/Hinder-semantic.png create mode 100644 static/img/Hinder-white.png create mode 100644 static/img/Hinder.png create mode 100644 static/img/Hinder2.png create mode 100644 static/img/Hinder250.png create mode 100644 static/img/Hinder32.png create mode 100644 static/img/Hinderyellow.png create mode 100644 static/img/Holla.png create mode 100644 static/img/about/1366432047_flat-icons-inspired-google-flat-design-preview-3.png create mode 100644 static/img/about/flask.png create mode 100644 static/img/about/gapp.png create mode 100644 static/img/about/gcs.png create mode 100644 static/img/about/gdatastore.png create mode 100644 static/img/about/gmaps.png create mode 100644 static/img/about/google-developers.png create mode 100644 static/img/about/gplus.png create mode 100644 static/img/about/gtt.jpg create mode 100644 static/img/about/translatetiny.png create mode 100644 static/img/about/wiki.png create mode 100644 static/img/ajax_busy.gif create mode 100644 static/img/alpha-hinder.png create mode 100644 static/img/alpha-hinder32.png create mode 100644 static/img/back.gif create mode 100644 static/img/chrome.png create mode 100644 static/img/chrome32.png create mode 100644 static/img/chrome_ext.png create mode 100644 static/img/email_banner.png create mode 100644 static/img/f/Arrow-Bulls-Eye-icon.png create mode 100644 static/img/f/Calendar-icon.png create mode 100644 static/img/f/Chat-icon.png create mode 100644 static/img/f/social-media-icon.png create mode 100644 static/img/glyphicons-halflings-white.png create mode 100644 static/img/glyphicons-halflings.png create mode 100644 static/img/gp.png create mode 100644 static/img/log.jpg create mode 100644 static/img/menu.png create mode 100644 static/img/missing-avatar.png create mode 100644 static/img/ping.jpg create mode 100644 static/img/semantic-logo-sh.png create mode 100644 static/img/semantic-logo.png create mode 100644 static/img/signin.png create mode 100644 static/img/silk_edited.jpg create mode 100644 static/img/sm-banner.png create mode 100644 static/img/suggestions_close.gif create mode 100644 static/img/white32.png create mode 100644 static/js/bootstrap-datetimepicker.js create mode 100644 static/js/bootstrap.js create mode 100644 static/js/bootstrap.min.js create mode 100644 static/js/countdown.min.js create mode 100644 static/js/hogan-2.0.0.js create mode 100644 static/js/holder.js create mode 100644 static/js/jquery.countdown.min.js create mode 100644 static/js/jquery.js create mode 100644 static/js/moment.js create mode 100644 static/js/suggestions.js create mode 100644 static/js/typeahead.js create mode 100644 static/robots.txt create mode 100644 templates/about.html create mode 100644 templates/add_firm.html create mode 100644 templates/browse.html create mode 100644 templates/delete.html create mode 100644 templates/error.html create mode 100644 templates/features.html create mode 100644 templates/firm.html create mode 100644 templates/home.html create mode 100644 templates/hot.html create mode 100644 templates/invite.html create mode 100644 templates/layout.html create mode 100644 templates/privacy.html create mode 100644 templates/profile.html create mode 100644 templates/projects.html create mode 100644 templates/search.html diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9d6bd9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,215 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg diff --git a/README.md b/README.md new file mode 100644 index 0000000..e9d16fd --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +Equilibrium +============== +Work made easy. +-------------- + +Equilibrium is managing *projects deadlines* within a workplace/firm etc more social. So that workplaces can have a centralized +social way of looking into various ongoing projects and organize them in such a way that results in a more productive environment. + +This application was submitted for Google Cloud Developer Challenge 2013 and was among one of the [finalists](http://www.google.com/events/gcdc2013/finalists.html) for India region. + +

+ Equilibrium - GCDC +

+ +

+https://gcdc2013-equilibrium.appspot.com/ +

+ + +Tech Stack +---------- + +* Google App Engine +* Google Data Store +* Python +* Flask, Jinja2 +* Google Maps API +* Google+ Signin +* Google Custom Search API +* Wikipedia API +* Google Translate toolkit +* SimpleAuth(https://github.com/crhym3/simpleauth) + + + +Development +----------- + +* Clone this repo (`git clone git@github.com:yashrajsingh/Equilibrium-GCDC2013.git`) +* Download [Python SDK](https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python "Python SDK for Google App Engine") for Google App Engine +* Unzip the downloaded SDK +* Change directory to project directory (`cd ~/path/to/Equilibrium-GCDC2013`) +* Change the application keys: + - Add your secret keys for social networks in `secrets.py`. + - Add your Google Maps Key in `templates/projects.html` and `templates/firm.html`. + - Add your Google Custom Search key and cx in `handlers.py`. + +* Run the application locally (`~/path/to/sdk/dev_appserver.py .`) +* Visit `http://localhost:8080/` using your browser to see it in action. + + + +Help and Support +-------------- + +[Homepage](https://gcdc2013-equilibrium.appspot.com/) + +[Yash Raj Singh](http://yashrajsingh.net/) \ No newline at end of file diff --git a/app.yaml b/app.yaml new file mode 100644 index 0000000..27aa305 --- /dev/null +++ b/app.yaml @@ -0,0 +1,111 @@ +# Most of the commens here are taken from: +# https://developers.google.com/appengine/docs/python/config/appconfig + +# Replace 'your-app-id-goes-here' with your application ID. +# Get it here if you don't have one: https://appengine.google.com/ +application: gcdc2013-equilibrium + +# App version +version: use-version-arg + +# Use Python 2.7 runtime here. +# See this for more info: +# http://code.google.com/appengine/docs/python/python27/using27.html +runtime: python27 +api_version: 1 + +# Use concurrent requests +threadsafe: true + +# Defaul expiration time. If omitted, the production server sets the expiration +# to 10 minutes. +default_expiration: "30d" + +# The Python 2.7 runtime includes some additional third-party modules +# and makes them available on demand. +# http://code.google.com/appengine/docs/python/tools/libraries27.html +# +# See 'Configuring Libraries' section on +# http://code.google.com/appengine/docs/python/python27/using27.html +# +# When adding jinja2 to your library configuration, you may want to +# add markupsafe and setuptools as well. markupsafe improves the performance +# of template rendering in jinja2 and setuptools is required for some template +# loading functionality. +libraries: +- name: webapp2 + version: "2.5.1" +- name: markupsafe + version: "0.15" +- name: setuptools + version: "0.6c11" +- name: jinja2 + version: "2.6" +- name: django + version: "1.5" +- name: lxml + version: '2.3' + +# The Python SDK includes a number of builtin handlers +# for common application functions. +builtins: +# See this page for more info: +# http://code.google.com/appengine/docs/python/tools/appstats.html +# - appstats: on + +# Usage article: +# http://code.google.com/appengine/articles/deferred.html +# - deferred: on + +# More info on Setting Up Remote API: +# http://code.google.com/appengine/docs/python/tools/uploadingdata.html +- remote_api: on + +# A list of URL patterns and descriptions of how they should be handled. +# Reserved URLs (you can't use them): +# /_ah/ +# /form +handlers: + +# static content handlers +- url: /(favicon\.ico) + mime_type: image/png + static_files: static/\1 + upload: static/favicon\.ico + +- url: /(robots\.txt) + static_files: static/\1 + upload: static/robots\.txt + +- url: /(img|css|js|fonts|files)/(.*) + static_files: static/\1/\2 + upload: static/(img|css|js|fonts)/(.*) + +- url: /_ah/mail/.+ + script: handle_incoming_email.app + login: admin + +# dynamic handlers +- url: /.* + script: main.app + secure: always + +# The skip_files element specifies which files in the application directory +# are not to be uploaded to App Engine. The value is either a regular +# expression, or a list of regular expressions. Any filename that matches +# any of the regular expression is omitted from the list of files to upload +# when the application is uploaded. +skip_files: +- ^(.*/)?#.*# +- ^(.*/)?.*~ +- ^(.*/)?.*sh +- ^(.*/)?.*\.py[co] +- ^(.*/)?.*/RCS/.* +- ^(.*/)?\..* +- ^(.*/)?.*\.bak$ +- ^(.*/)?.*\.template$ +- tmp +- tests + +inbound_services: +- mail \ No newline at end of file diff --git a/handle_incoming_email.py b/handle_incoming_email.py new file mode 100644 index 0000000..a68addb --- /dev/null +++ b/handle_incoming_email.py @@ -0,0 +1,7 @@ +import logging +import webapp2 +from google.appengine.ext.webapp.mail_handlers import InboundMailHandler + +class LogSenderHandler(InboundMailHandler): + def receive(self, mail_message): + logging.info("Received a message from: " + mail_message.sender) \ No newline at end of file diff --git a/handlers.py b/handlers.py new file mode 100644 index 0000000..d1e4147 --- /dev/null +++ b/handlers.py @@ -0,0 +1,951 @@ +# -*- coding: utf-8 -*- +import os +import json +import datetime +import logging +import secrets +import urllib +import collections + +import webapp2 +from webapp2_extras import auth, sessions, jinja2 +from jinja2.runtime import TemplateNotFound +from django.utils.html import strip_tags +from urlparse import urlparse + +from simpleauth import SimpleAuthHandler +from google.appengine.ext import ndb +from google.appengine.api import urlfetch +from google.appengine.api import mail +from google.appengine.api import users +from webapp2_extras.appengine.auth.models import User + +from google.appengine.ext import blobstore +from google.appengine.ext.webapp import blobstore_handlers +from google.appengine.api import images +from google.appengine.api import search +from urlparse import parse_qs + + +project_key = ndb.Key('Projects', 'default_projects') +firms_key = ndb.Key('Firms', 'default_firms') +comments_key = ndb.Key('Comments', 'default_comments') +user_key = ndb.Key('User', 'default_user') +notification_key = ndb.Key('Notification', 'default_notification') + +_INDEX_NAME_FIRMS = 'firms' + +custom_search_key = 'search key' +custom_search_cx = 'cx' + + +class Firms(ndb.Model): + admin = ndb.KeyProperty(kind='User') + admin_id = ndb.IntegerProperty() + members = ndb.StringProperty(repeated=True) + picture = ndb.StringProperty() + link = ndb.StringProperty() + desc = ndb.StringProperty() + logo = ndb.BlobKeyProperty() + title = ndb.StringProperty() + pos = ndb.GeoPtProperty(default=ndb.GeoPt(28.635308, 77.224960)) + privacy = ndb.IntegerProperty(default=0) + date = ndb.DateTimeProperty(auto_now_add=True) + + +class Projects(ndb.Model): + author = ndb.KeyProperty(kind='User') + author_id = ndb.IntegerProperty() + firm = ndb.KeyProperty(kind='Firms') + firm_id = ndb.IntegerProperty() + title = ndb.StringProperty() + content = ndb.StringProperty() + deadline = ndb.DateTimeProperty() + date = ndb.DateTimeProperty(auto_now_add=True) + + +class Comments(ndb.Model): + author = ndb.KeyProperty(kind='User') + firm = ndb.KeyProperty(kind='Firms') + project = ndb.KeyProperty(kind='Projects') + comment = ndb.StringProperty() + project_id = ndb.IntegerProperty() + date = ndb.DateTimeProperty(auto_now_add=True) + + +class Notification(ndb.Model): + author = ndb.KeyProperty(kind='User') + body_html = ndb.StringProperty() + id = ndb.IntegerProperty() + href = ndb.StringProperty() + time = ndb.DateTimeProperty(auto_now_add=True) + users = ndb.StringProperty(repeated=True) + + +class BaseRequestHandler(webapp2.RequestHandler): + def dispatch(self): + # Get a session store for this request. + self.session_store = sessions.get_store(request=self.request) + try: + # Dispatch the request. + webapp2.RequestHandler.dispatch(self) + finally: + # Save all sessions. + self.session_store.save_sessions(self.response) + + @webapp2.cached_property + def jinja2(self): + """Returns a Jinja2 renderer cached in the app registry""" + return jinja2.get_jinja2(app=self.app) + + @webapp2.cached_property + def session(self): + """Returns a session using the default cookie key""" + return self.session_store.get_session() + + @webapp2.cached_property + def auth(self): + return auth.get_auth() + + @webapp2.cached_property + def current_user(self): + """Returns currently logged in user""" + user_dict = self.auth.get_user_by_session() + return self.auth.store.user_model.get_by_id(user_dict['user_id']) + + @webapp2.cached_property + def logged_in(self): + """Returns true if a user is currently logged in, false otherwise""" + return self.auth.get_user_by_session() is not None + + def render(self, template_name, template_vars={}): + # Preset values for the template + values = { + 'url_for': self.uri_for, + 'logged_in': self.logged_in, + 'flashes': self.session.get_flashes() + } + + # Add manually supplied template values + values.update(template_vars) + + # read the template or 404.html + try: + self.response.write(self.jinja2.render_template(template_name, **values)) + except TemplateNotFound: + self.abort(404) + + def head(self, *args): + """Head is used by Twitter. If not there the tweet button shows 0""" + pass + + +class CommentAdd(BaseRequestHandler): + def post(self): + firm_id = int(self.request.get('firm_id')) + project_id = int(self.request.get('project_id')) + + firm = Firms.get_by_id(firm_id, parent=firms_key) + project = Projects.get_by_id(project_id, parent=project_key) + + comment = Comments(parent=comments_key) + comment.author = self.current_user.key + comment.firm = firm.key + comment.comment = self.request.get('comment') + comment.project = project.key + comment.project_id = project_id + comment.put() + + notification = Notification(parent=notification_key) + notification.author = self.current_user.key + notification.body_html = "" + self.current_user.name + " has commented on your project in " \ + + "" + firm.title + " .." + notification.href = "./projects?firm_id=" + str(firm.key.id()) + "#row" + str(project.key.id()) + notification.id = comment.key.id() + notification.users.append(project.author.get().email) + notification.put() + + if firm_id: + self.redirect('/projects?firm_id=' + str(firm_id) + '#row' + str(project_id)) + else: + self.redirect('/') + + +class ProjectAdd(BaseRequestHandler): + def post(self): + firm_id = int(self.request.get('firm_id')) + firm = Firms.get_by_id(firm_id, parent=firms_key) + + projects = Projects(parent=project_key) + projects.author = self.current_user.key + projects.author_id = int(self.current_user.key.id()) + projects.firm = firm.key + projects.firm_id = firm_id + projects.content = self.request.get('content') + projects.title = self.request.get('title') + projects.deadline = datetime.datetime.strptime(self.request.get('datetime'), '%m/%d/%Y %H:%M %p') + projects.put() + + notification = Notification(parent=notification_key) + notification.author = self.current_user.key + notification.body_html = "" + self.current_user.name + " has created a new project " \ + + self.request.get('title') + " in " \ + + "" + firm.title + " .." + notification.href = "./projects?firm_id=" + str(firm.key.id()) + notification.id = projects.key.id() + for member in firm.members: + notification.users.append(member) + notification.put() + + self.redirect('/projects?firm_id=' + str(firm_id)) + + +class firms(BaseRequestHandler): + def post(self): + if self.request.get('title'): + title = self.request.get('title') + + if title: + #google images search + title1 = urllib.quote_plus(title) + url = 'https://www.googleapis.com/customsearch/v1?key=' + custom_search_key + '&cx=' + custom_search_cx + '&searchType=image&fileType=jpg&imgSize=large&imgType=news&num=1&alt=json&q=' + title1 + result = urlfetch.fetch(url) + jsonr = json.loads(result.content) + picture = jsonr['items'][0]['link'] + link = jsonr['items'][0]['displayLink'] + desc1 = jsonr['items'][0]['title'] + desc = urllib.unquote_plus(desc1) + + + #wikipedia description + urlw = "https://en.wikipedia.org//w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=1&exsectionformat=plain&titles=" + title1 + resultw = urlfetch.fetch(urlw) + jsonrw = json.loads(resultw.content) + d = jsonrw['query']['pages'].keys() + x = d[0] + try: + desciption = jsonrw['query']['pages'][x]['extract'] + except: + desciption = "" + + if desciption: + desc = strip_tags(desciption) + + else: + picture = self.current_user.avatar_url + link = self.current_user.link + desc = "No data." + else: + self.render('error.html', { + 'user': self.current_user, + }) + + firmss = Firms(parent=firms_key) + firmss.admin = self.current_user.key + firmss.admin_id = self.current_user.key.id() + firmss.members = [self.current_user.email] + firmss.link = link + firmss.picture = picture + firmss.title = title + firmss.desc = desc + firmss.put() + + id = firmss.key.id() + search.Index(name=_INDEX_NAME_FIRMS).put(CreateFirmDoc(str(id), self.current_user, title, "null", desc, link)) + + self.redirect('/firm?firm_id=' + str(firmss.key.id())) + + def get(self): + upload_url = blobstore.create_upload_url('/editfirm') + firm_id = 0 + try: + firm_id = int(self.request.get('firm_id')) + except: + self.abort(404) + firmed = Firms.get_by_id(firm_id, parent=firms_key) + if firmed.logo: + image_url = images.get_serving_url(firmed.logo, 75) + else: + image_url = "/img/Hinder-red.png" + + if (firm_id != 0) and self.logged_in: + self.render('firm.html', { + 'title': 'Edit Firm Settings - ' + firmed.title, + 'user': self.current_user, + 'upload_url': upload_url, + 'image_url': image_url, + 'firm': firmed, + 'firm_id': firm_id + }) + else: + self.abort(404) + + +class EditFirm(BaseRequestHandler, blobstore_handlers.BlobstoreUploadHandler): + def post(self): + desc = self.request.get('desc') + desc = (desc[:75] + '..') if len(desc) > 75 else desc + + title = self.request.get('title') + title = (title[:60] + '..') if len(title) > 75 else title + + link = self.request.get('link') + parts = urlparse(link) + if not parts.scheme or not parts.netloc: + self.abort(404) + + firm_id = int(self.request.get('firm_id')) + firm = Firms.get_by_id(firm_id, parent=firms_key) + logo = self.get_uploads('logo') + + if logo: + blob_info = logo[0] + if firm.logo: + blobstore.delete(firm.logo) + firm.logo = blob_info.key() + logo = blob_info.key() + else: + logo = firm.logo + + firm.link = link + firm.picture = self.request.get('picture') + firm.title = title + firm.privacy = int(self.request.get('type')) + firm.desc = desc + firm.pos = ndb.GeoPt(self.request.get('lat'), self.request.get('lng')) + firm.put() + + notification = Notification(parent=notification_key) + notification.author = self.current_user.key + notification.body_html = "" + self.current_user.name + " updated " \ + + "" + firm.title + " Details..." + notification.href = "./projects?firm_id=" + str(firm.key.id()) + notification.id = firm.key.id() + for member in firm.members: + notification.users.append(member) + notification.put() + + + doc_index = search.Index(name=_INDEX_NAME_FIRMS) + if doc_index.get(doc_id=str(firm.key.id())): + doc_index.delete(document_ids=str(firm.key.id())) + + search.Index(name=_INDEX_NAME_FIRMS).put(CreateFirmDoc(str(firm_id), + self.current_user, title, str(logo), desc, link)) + + self.redirect('/') + + +class add_firm(BaseRequestHandler): + def post(self): + if self.request.get('title'): + title = self.request.get('title') + else: + title = "No Title" + if self.request.get('link'): + link = self.request.get('link') + else: + link = "No link" + if self.request.get('desc'): + desc = self.request.get('desc') + else: + desc = "No Description!" + + if self.logged_in: + self.render('add_firm.html', { + 'user': self.current_user, + 'title': title, + 'link': link, + 'desc': desc + }) + else: + self.render('add_firm.html', { + 'title': title, + 'link': link, + 'desc': desc, + }) + + +class DeleteFirm(BaseRequestHandler): + def get(self): + firm_id = 0 + try: + firm_id = int(self.request.get('firm_id')) + except: + self.abort(404) + firmed = Firms.get_by_id(firm_id, parent=firms_key) + + if (firm_id != 0) and self.logged_in: + self.render('delete.html', { + 'title': 'Delete Firm', + 'user': self.current_user, + 'firm': firmed, + 'firm_id': firm_id + }) + else: + self.abort(404) + + + def post(self): + logging.debug('Deleting the event!: %s' % self.request.get('event_id')) + firm_id = 0 + try: + firm_id = int(self.request.get('firm_id')) + except: + self.abort(404) + firmed = Firms.get_by_id(firm_id, parent=firms_key) + projects = Projects.query(Projects.firm_id == firm_id, ancestor=project_key) + comments = Comments.query(ancestor=comments_key) + + for project in projects: + for comment in comments: + if comment.project == project.key.id(): + comment.key.delete() + project.key.delete() + + doc_index = search.Index(name=_INDEX_NAME_FIRMS) + if doc_index.get(doc_id=str(firmed.key.id())): + doc_index.delete(document_ids=str(firmed.key.id())) + + firmed.key.delete() + self.redirect('/') + + +class AddFirmMember(BaseRequestHandler): + def post(self): + firm_id = self.request.get('firm_id') + email = self.request.get('member_email') + firm_id1 = int(self.request.get('firm_id')) + firm = Firms.get_by_id(firm_id1, parent=firms_key) + + if email in firm.members: + self.abort(404) + else: + firm.members.append(email) + firm.put() + + notification = Notification(parent=notification_key) + notification.author = self.current_user.key + notification.body_html = "" + self.current_user.name + " added a new member " + \ + self.request.get('member_email') + " to " \ + + "" + firm.title + "." + notification.href = "./projects?firm_id=" + str(firm.key.id()) + notification.id = firm.key.id() + for member in firm.members: + notification.users.append(member) + notification.put() + + if firm_id: + self.redirect('/projects?firm_id=' + firm_id + '#row') + else: + self.redirect('/') + + +class RootHandler(BaseRequestHandler): + def get(self): + """Handles default langing page""" + # Projects + + if self.logged_in: + firms = Firms.query(ancestor=firms_key).order(-Firms.date) + email = self.current_user.email + foundFirm = False + firmed = [] + for firm in firms: + if email in firm.members: + firmed.append(firm) + foundFirm = True + + #projects = Projects.query(ancestor=project_key).order(-Projects.deadline) + found = False + if self.logged_in: + projectsme = Projects.query(Projects.author_id == self.current_user.key.id(), + ancestor=project_key).order( + -Projects.deadline) + for project in projectsme: + found = True + else: + projectsme = None + + comments = Comments.query(ancestor=comments_key).order(Comments.date) + notifications = Notification.query(ancestor=notification_key).order(-Notification.time).fetch(5) + notification = [] + for notify in notifications: + if email in notify.users and notify.author.get().email != self.current_user.email: + notification.append(notify) + count = len(notification) + + self.render('home.html', { + 'title': 'Equilibrium', + 'notifications': notification, + 'count': count, + 'firms': firmed, + 'user': self.current_user, + 'greetings': projectsme, + 'comments': comments, + 'found': found, + 'foundFirm': foundFirm + }) + else: + self.render('hot.html') + + +class About(BaseRequestHandler): + def get(self): + if self.logged_in: + self.render('about.html', { + 'title': 'Equilibrium - Work made easy.', + 'user': self.current_user + }) + else: + self.render('about.html', { + 'title': 'Equilibrium - Work made easy.' + }) + + +class DeleteProject(BaseRequestHandler): + def post(self): + project_id = 0 + try: + project_id = int(self.request.get('project_id')) + except: + self.abort(404) + project = Projects.get_by_id(project_id, parent=project_key) + comments = Comments.query(Comments.project_id == project_id, ancestor=comments_key) + notifications = Notification.query(Notification.id == project_id, ancestor=notification_key) + + for notice in notifications: + notice.key.delete() + + for comment in comments: + comment.key.delete() + + project.key.delete() + self.redirect('/') + + +class DeleteComment(BaseRequestHandler): + def post(self): + comment_id = 0 + try: + comment_id = int(self.request.get('comment_id')) + except: + self.abort(404) + comment = Comments.get_by_id(comment_id, parent=comments_key) + + notifications = Notification.query(Notification.id == comment_id, ancestor=notification_key) + + for notice in notifications: + notice.key.delete() + + comment.key.delete() + self.redirect('/') + + +class DeleteMember(BaseRequestHandler): + def post(self): + logging.debug('Deleting the member in !: %s' % self.request.get('firm_id')) + firm_id = 0 + member = '' + try: + member = self.request.get('member') + firm_id = int(self.request.get('firm_id')) + except: + self.abort(404) + + firmed = Firms.get_by_id(firm_id, parent=firms_key) + if member in firmed.members: + firmed.members.remove(member) + + firmed.put() + self.redirect('/') + + +class Invite(BaseRequestHandler): + def get(self): + self.render('invite.html', { + 'title': 'Invite People To Equilibrium - Work made easy.', + 'user': self.current_user, + }) + + def post(self): + email = self.request.get('email') + message = mail.EmailMessage() + message.sender = self.current_user.email + message.to = email + message.subject = "Invitation to Equilibrium!" + message.body = """ + You have been invited to Equilibrium! + + To accept this invitation, click the following link, + or copy and paste the URL into your browser's address + bar: + + http://gcdc2013-equilibrium.appspot.com/ + """ + + message.send() + self.redirect('/') + + +class Privacy(BaseRequestHandler): + def get(self): + if self.logged_in: + self.render('privacy.html', { + 'title': 'Privacy / TOS For Equilibrium', + 'user': self.current_user + }) + else: + self.render('privacy.html', { + 'title': 'Privacy / TOS For Equilibrium' + }) + + +class Features(BaseRequestHandler): + def get(self): + if self.logged_in: + self.render('features.html', { + 'title': 'Features of Equilibrium - Work Made Easy', + 'user': self.current_user + }) + else: + self.render('features.html', { + 'title': 'Features of Equilibrium - Work Made Easy', + }) + + +class Browse(BaseRequestHandler): + def get(self): + firms = Firms.query(ancestor=firms_key).order(-Firms.date) + + if self.logged_in: + self.render('browse.html', { + 'title': 'Browse - Equilibrium', + 'user': self.current_user, + 'images': images.get_serving_url, + 'firms': firms + }) + else: + self.abort(404) + + +def CreateFirmDoc(id, author, title, logo, desc, link): + if author: + nickname = author.name + else: + nickname = 'anonymous' + + return search.Document(doc_id=id, + fields=[search.TextField(name='author', value=nickname), + search.TextField(name='title', value=title), + search.TextField(name='logo', value=logo), + search.TextField(name='desc', value=desc), + search.TextField(name='link', value=link), + search.DateField(name='date', value=datetime.datetime.now().date())]) + + +class Search(BaseRequestHandler): + def get(self): + uri = urlparse(self.request.uri) + query = 'null' + if uri.query: + query = parse_qs(uri.query) + query = query['query'][0] + + if query is not 'null': + expr_list = [search.SortExpression( + expression='author', default_value='', + direction=search.SortExpression.DESCENDING)] + + sort_opts = search.SortOptions(expressions=expr_list) + query_options = search.QueryOptions(limit=9, sort_options=sort_opts) + query_obj = search.Query(query_string=query, options=query_options) + + results_firms = search.Index(name=_INDEX_NAME_FIRMS).search(query=query_obj) + + self.render('search.html', { + 'user': self.current_user, + 'title': "Search - Equilibrium", + 'results_firms': results_firms, + 'images': images.get_serving_url, + 'len': results_firms.number_found + }) + else: + self.render('search.html', { + 'user': self.current_user, + 'title': "Search - Equilibrium" + }) + + def get(self): + if self.logged_in: + + firms = Firms.query(ancestor=firms_key).order(-Firms.date) + email = self.current_user.email + foundFirm = False + firmed = [] + for firm in firms: + if email in firm.members: + firmed.append(firm) + foundFirm = True + + notifications = Notification.query(ancestor=notification_key).order(-Notification.time).fetch(5) + notification = [] + for notify in notifications: + if email in notify.users and notify.author.get().email != self.current_user.email: + notification.append(notify) + count = len(notification) + + #projects = Projects.query(ancestor=project_key).order(-Projects.deadline) + found = False + + if self.logged_in: + projectsme = Projects.query(Projects.author_id == self.current_user.key.id(), + ancestor=project_key).order( + -Projects.deadline) + for project in projectsme: + found = True + else: + projectsme = None + + comments = Comments.query(ancestor=comments_key).order(Comments.date) + + self.render('semantic.html', { + 'title': 'Semantic - Equilibrium', + 'notifications': notification, + 'count': count, + 'user': self.current_user, + 'greetings': projectsme, + 'found': found, + 'foundFirm': foundFirm, + 'comments': comments, + }) + else: + self.render('semantic.html', { + 'title': 'Semantic - Equilibrium', + }) + + +class ProjectsHandler(BaseRequestHandler): + def get(self): + """Handles default langing page""" + # Projects + firm_id = 0 + try: + firm_id = int(self.request.get('firm_id')) + except: + self.abort(404) + + firmed = Firms.get_by_id(firm_id, parent=firms_key) + + projects = Projects.query(Projects.firm_id == firm_id, ancestor=project_key).order(-Projects.deadline) + + comments = Comments.query(ancestor=comments_key).order(Comments.date) + + found = False + for project in projects: + found = True + + if self.logged_in: + self.render('projects.html', { + 'title': firmed.title + ' on Equilibrium', + 'greetings': projects, + 'comments': comments, + 'user': self.current_user, + 'images': images.get_serving_url, + 'firm_id': firm_id, + 'firm': firmed, + 'found': found + }) + else: + self.render('projects.html', { + 'title': firmed.title + 'on Equilibrium', + 'greetings': projects, + 'comments': comments, + 'logo_url': images.get_serving_url(firmed.logo, 75), + 'user': None, + 'firm_id': firm_id, + 'firm': firmed, + 'found': found + }) + + +class ProfileHandler(BaseRequestHandler): + def get(self): + """Handles GET /profile""" + #projects = Projects.query(Projects.author == self.current_user.key, ancestor=project_key).order(-Projects.deadline) + + comments = Comments.query(ancestor=comments_key).order(Comments.date) + + found = False + + pro_id = 0 + try: + pro_id = int(self.request.get('pro_id')) + except: + self.abort(404) + profile = self.auth.store.user_model.get_by_id(pro_id) + + projects = Projects.query(Projects.author == profile.key, ancestor=project_key).order(-Projects.deadline) + + firms = Firms.query(ancestor=firms_key).order(-Firms.date) + email = profile.email + foundFirm = False + firmed = [] + for firm in firms: + if email in firm.members: + firmed.append(firm) + foundFirm = True + + for project in projects: + found = True + + self.render('profile.html', { + 'title': profile.name, + 'get_user': profile, + 'foundFirm': foundFirm, + 'firms': firmed, + 'user': self.current_user, + 'greetings': projects, + 'comments': comments, + 'found': found + }) + + +class AuthHandler(BaseRequestHandler, SimpleAuthHandler): + """Authentication handler for OAuth 2.0, 1.0(a) and OpenID.""" + + # Enable optional OAuth 2.0 CSRF guard + OAUTH2_CSRF_STATE = True + + USER_ATTRS = { + 'facebook': { + 'id': lambda id: ('avatar_url', + 'http://graph.facebook.com/{0}/picture?type=large'.format(id)), + 'name': 'name', + 'link': 'link' + }, + 'google': { + 'picture': 'avatar_url', + 'name': 'name', + 'profile': 'link', + 'email': 'email' + }, + 'windows_live': { + 'avatar_url': 'avatar_url', + 'name': 'name', + 'link': 'link' + }, + 'twitter': { + 'profile_image_url': 'avatar_url', + 'screen_name': 'name', + 'link': 'link' + }, + 'linkedin': { + 'picture-url': 'avatar_url', + 'first-name': 'name', + 'public-profile-url': 'link' + }, + 'linkedin2': { + 'picture-url': 'avatar_url', + 'first-name': 'name', + 'public-profile-url': 'link' + }, + 'foursquare': { + 'photo': lambda photo: ('avatar_url', photo.get('prefix') + '100x100' + photo.get('suffix')), + 'firstName': 'firstName', + 'lastName': 'lastName', + 'contact': lambda contact: ('email', contact.get('email')), + 'id': lambda id: ('link', 'http://foursquare.com/user/{0}'.format(id)) + }, + 'openid': { + 'id': lambda id: ('avatar_url', '/img/missing-avatar.png'), + 'nickname': 'name', + 'email': 'link' + } + } + + def _on_signin(self, data, auth_info, provider): + """Callback whenever a new or existing user is logging in. + data is a user info dictionary. + auth_info contains access token or oauth token and secret. + """ + auth_id = '%s:%s' % (provider, data['id']) + logging.info('Looking for a user with id %s', auth_id) + + user = self.auth.store.user_model.get_by_auth_id(auth_id) + _attrs = self._to_user_model_attrs(data, self.USER_ATTRS[provider]) + + if user: + logging.info('Found existing user to log in') + # Existing users might've changed their profile data so we update our + # local model anyway. This might result in quite inefficient usage + # of the Datastore, but we do this anyway for demo purposes. + # + # In a real app you could compare _attrs with user's properties fetched + # from the datastore and update local user in case something's changed. + user.populate(**_attrs) + user.put() + self.auth.set_session( + self.auth.store.user_to_dict(user)) + + else: + # check whether there's a user currently logged in + # then, create a new user if nobody's signed in, + # otherwise add this auth_id to currently logged in user. + + if self.logged_in: + logging.info('Updating currently logged in user') + + u = self.current_user + u.populate(**_attrs) + # The following will also do u.put(). Though, in a real app + # you might want to check the result, which is + # (boolean, info) tuple where boolean == True indicates success + # See webapp2_extras.appengine.auth.models.User for details. + u.add_auth_id(auth_id) + + else: + logging.info('Creating a brand new user') + ok, user = self.auth.store.user_model.create_user(auth_id, **_attrs) + if ok: + self.auth.set_session(self.auth.store.user_to_dict(user)) + + # Remember auth data during redirect, just for this demo. You wouldn't + # normally do this. + self.session.add_flash(data, 'data - from _on_signin(...)') + self.session.add_flash(auth_info, 'auth_info - from _on_signin(...)') + + # Go to the profile page + self.redirect('/') + + def logout(self): + self.auth.unset_session() + self.redirect('/') + + def handle_exception(self, exception, debug): + logging.error(exception) + self.render('error.html', {'exception': exception}) + + def _callback_uri_for(self, provider): + return self.uri_for('auth_callback', provider=provider, _full=True) + + def _get_consumer_info_for(self, provider): + """Returns a tuple (key, secret) for auth init requests.""" + return secrets.AUTH_CONFIG[provider] + + def _to_user_model_attrs(self, data, attrs_map): + """Get the needed information from the provider dataset.""" + user_attrs = {} + for k, v in attrs_map.iteritems(): + attr = (v, data.get(k)) if isinstance(v, str) else v(data.get(k)) + user_attrs.setdefault(*attr) + + return user_attrs diff --git a/index.yaml b/index.yaml new file mode 100644 index 0000000..e56e7ad --- /dev/null +++ b/index.yaml @@ -0,0 +1,60 @@ +# See this on how to configure indexes: +# http://code.google.com/appengine/docs/python/config/indexconfig.html +# +# For more information about indexes, see Queries and Indexes +# http://code.google.com/appengine/docs/python/datastore/queries.html + +indexes: + +# AUTOGENERATED + +# This index.yaml is automatically updated whenever the dev_appserver +# detects that a new type of query is run. If you want to manage the +# index.yaml file manually, remove the above marker line (the line +# saying "# AUTOGENERATED"). If you want to manage some indexes +# manually, move them above the marker line. The index.yaml file is +# automatically uploaded to the admin console when you next deploy +# your application using appcfg.py. + +- kind: Comments + ancestor: yes + properties: + - name: date + +- kind: Firms + ancestor: yes + properties: + - name: date + +- kind: Firms + ancestor: yes + properties: + - name: date + direction: desc + +- kind: Notification + ancestor: yes + properties: + - name: time + direction: desc + +- kind: Projects + ancestor: yes + properties: + - name: author + - name: deadline + direction: desc + +- kind: Projects + ancestor: yes + properties: + - name: author_id + - name: deadline + direction: desc + +- kind: Projects + ancestor: yes + properties: + - name: firm_id + - name: deadline + direction: desc diff --git a/lib/httplib2/__init__.py b/lib/httplib2/__init__.py new file mode 100644 index 0000000..fb74de2 --- /dev/null +++ b/lib/httplib2/__init__.py @@ -0,0 +1,1675 @@ +from __future__ import generators +""" +httplib2 + +A caching http interface that supports ETags and gzip +to conserve bandwidth. + +Requires Python 2.3 or later + +Changelog: +2007-08-18, Rick: Modified so it's able to use a socks proxy if needed. + +""" + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger"] +__license__ = "MIT" +__version__ = "0.7.6" + +import re +import sys +import email +import email.Utils +import email.Message +import email.FeedParser +import StringIO +import gzip +import zlib +import httplib +import urlparse +import urllib +import base64 +import os +import copy +import calendar +import time +import random +import errno +try: + from hashlib import sha1 as _sha, md5 as _md5 +except ImportError: + # prior to Python 2.5, these were separate modules + import sha + import md5 + _sha = sha.new + _md5 = md5.new +import hmac +from gettext import gettext as _ +import socket + +try: + from httplib2 import socks +except ImportError: + try: + import socks + except ImportError: + socks = None + +# Build the appropriate socket wrapper for ssl +try: + import ssl # python 2.6 + ssl_SSLError = ssl.SSLError + def _ssl_wrap_socket(sock, key_file, cert_file, + disable_validation, ca_certs): + if disable_validation: + cert_reqs = ssl.CERT_NONE + else: + cert_reqs = ssl.CERT_REQUIRED + # We should be specifying SSL version 3 or TLS v1, but the ssl module + # doesn't expose the necessary knobs. So we need to go with the default + # of SSLv23. + return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file, + cert_reqs=cert_reqs, ca_certs=ca_certs) +except (AttributeError, ImportError): + ssl_SSLError = None + def _ssl_wrap_socket(sock, key_file, cert_file, + disable_validation, ca_certs): + if not disable_validation: + raise CertificateValidationUnsupported( + "SSL certificate validation is not supported without " + "the ssl module installed. To avoid this error, install " + "the ssl module, or explicity disable validation.") + ssl_sock = socket.ssl(sock, key_file, cert_file) + return httplib.FakeSocket(sock, ssl_sock) + + +if sys.version_info >= (2,3): + from iri2uri import iri2uri +else: + def iri2uri(uri): + return uri + +def has_timeout(timeout): # python 2.6 + if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'): + return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT) + return (timeout is not None) + +__all__ = ['Http', 'Response', 'ProxyInfo', 'HttpLib2Error', + 'RedirectMissingLocation', 'RedirectLimit', 'FailedToDecompressContent', + 'UnimplementedDigestAuthOptionError', 'UnimplementedHmacDigestAuthOptionError', + 'debuglevel', 'ProxiesUnavailableError'] + + +# The httplib debug level, set to a non-zero value to get debug output +debuglevel = 0 + +# A request will be tried 'RETRIES' times if it fails at the socket/connection level. +RETRIES = 2 + +# Python 2.3 support +if sys.version_info < (2,4): + def sorted(seq): + seq.sort() + return seq + +# Python 2.3 support +def HTTPResponse__getheaders(self): + """Return list of (header, value) tuples.""" + if self.msg is None: + raise httplib.ResponseNotReady() + return self.msg.items() + +if not hasattr(httplib.HTTPResponse, 'getheaders'): + httplib.HTTPResponse.getheaders = HTTPResponse__getheaders + +# All exceptions raised here derive from HttpLib2Error +class HttpLib2Error(Exception): pass + +# Some exceptions can be caught and optionally +# be turned back into responses. +class HttpLib2ErrorWithResponse(HttpLib2Error): + def __init__(self, desc, response, content): + self.response = response + self.content = content + HttpLib2Error.__init__(self, desc) + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass +class RedirectLimit(HttpLib2ErrorWithResponse): pass +class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass + +class MalformedHeader(HttpLib2Error): pass +class RelativeURIError(HttpLib2Error): pass +class ServerNotFoundError(HttpLib2Error): pass +class ProxiesUnavailableError(HttpLib2Error): pass +class CertificateValidationUnsupported(HttpLib2Error): pass +class SSLHandshakeError(HttpLib2Error): pass +class NotSupportedOnThisPlatform(HttpLib2Error): pass +class CertificateHostnameMismatch(SSLHandshakeError): + def __init__(self, desc, host, cert): + HttpLib2Error.__init__(self, desc) + self.host = host + self.cert = cert + +# Open Items: +# ----------- +# Proxy support + +# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) + +# Pluggable cache storage (supports storing the cache in +# flat files by default. We need a plug-in architecture +# that can support Berkeley DB and Squid) + +# == Known Issues == +# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. +# Does not handle Cache-Control: max-stale +# Does not use Age: headers when calculating cache freshness. + + +# The number of redirections to follow before giving up. +# Note that only GET redirects are automatically followed. +# Will also honor 301 requests by saving that info and never +# requesting that URI again. +DEFAULT_MAX_REDIRECTS = 5 + +# Default CA certificates file bundled with httplib2. +CA_CERTS = os.path.join( + os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt") + +# Which headers are hop-by-hop headers by default +HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade'] + +def _get_end2end_headers(response): + hopbyhop = list(HOP_BY_HOP) + hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')]) + return [header for header in response.keys() if header not in hopbyhop] + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + +def urlnorm(uri): + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) + authority = authority.lower() + scheme = scheme.lower() + if not path: + path = "/" + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + scheme = scheme.lower() + defrag_uri = scheme + "://" + authority + request_uri + return scheme, authority, request_uri, defrag_uri + + +# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) +re_url_scheme = re.compile(r'^\w+://') +re_slash = re.compile(r'[?/:|]+') + +def safename(filename): + """Return a filename suitable for the cache. + + Strips dangerous and common characters to create a filename we + can use to store the cache in. + """ + + try: + if re_url_scheme.match(filename): + if isinstance(filename,str): + filename = filename.decode('utf-8') + filename = filename.encode('idna') + else: + filename = filename.encode('idna') + except UnicodeError: + pass + if isinstance(filename,unicode): + filename=filename.encode('utf-8') + filemd5 = _md5(filename).hexdigest() + filename = re_url_scheme.sub("", filename) + filename = re_slash.sub(",", filename) + + # limit length of filename + if len(filename)>200: + filename=filename[:200] + return ",".join((filename, filemd5)) + +NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+') +def _normalize_headers(headers): + return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()]) + +def _parse_cache_control(headers): + retval = {} + if headers.has_key('cache-control'): + parts = headers['cache-control'].split(',') + parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")] + parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")] + retval = dict(parts_with_args + parts_wo_args) + return retval + +# Whether to use a strict mode to parse WWW-Authenticate headers +# Might lead to bad results in case of ill-formed header value, +# so disabled by default, falling back to relaxed parsing. +# Set to true to turn on, usefull for testing servers. +USE_WWW_AUTH_STRICT_PARSING = 0 + +# In regex below: +# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP +# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space +# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: +# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? +WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$") +WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: + retval = "FRESH" + return retval + +def _decompressContent(response, new_content): + content = new_content + try: + encoding = response.get('content-encoding', None) + if encoding in ['gzip', 'deflate']: + if encoding == 'gzip': + content = gzip.GzipFile(fileobj=StringIO.StringIO(new_content)).read() + if encoding == 'deflate': + content = zlib.decompress(content) + response['content-length'] = str(len(content)) + # Record the historical presence of the encoding in a way the won't interfere. + response['-content-encoding'] = response['content-encoding'] + del response['content-encoding'] + except IOError: + content = "" + raise FailedToDecompressContent(_("Content purported to be compressed with %s but failed to decompress.") % response.get('content-encoding'), response, content) + return content + +def _updateCache(request_headers, response_headers, content, cache, cachekey): + if cachekey: + cc = _parse_cache_control(request_headers) + cc_response = _parse_cache_control(response_headers) + if cc.has_key('no-store') or cc_response.has_key('no-store'): + cache.delete(cachekey) + else: + info = email.Message.Message() + for key, value in response_headers.iteritems(): + if key not in ['status','content-encoding','transfer-encoding']: + info[key] = value + + # Add annotations to the cache to indicate what headers + # are variant for this request. + vary = response_headers.get('vary', None) + if vary: + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + try: + info[key] = request_headers[header] + except KeyError: + pass + + status = response_headers.status + if status == 304: + status = 200 + + status_header = 'status: %d\r\n' % status + + header_str = info.as_string() + + header_str = re.sub("\r(?!\n)|(? 0: + service = "cl" + # No point in guessing Base or Spreadsheet + #elif request_uri.find("spreadsheets") > 0: + # service = "wise" + + auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent']) + resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'}) + lines = content.split('\n') + d = dict([tuple(line.split("=", 1)) for line in lines if line]) + if resp.status == 403: + self.Auth = "" + else: + self.Auth = d['Auth'] + + def request(self, method, request_uri, headers, content): + """Modify the request headers to add the appropriate + Authorization header.""" + headers['authorization'] = 'GoogleLogin Auth=' + self.Auth + + +AUTH_SCHEME_CLASSES = { + "basic": BasicAuthentication, + "wsse": WsseAuthentication, + "digest": DigestAuthentication, + "hmacdigest": HmacDigestAuthentication, + "googlelogin": GoogleLoginAuthentication +} + +AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + +class FileCache(object): + """Uses a local directory as a store for cached files. + Not really safe to use if multiple threads or processes are going to + be running on the same cache. + """ + def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + self.cache = cache + self.safe = safe + if not os.path.exists(cache): + os.makedirs(self.cache) + + def get(self, key): + retval = None + cacheFullPath = os.path.join(self.cache, self.safe(key)) + try: + f = file(cacheFullPath, "rb") + retval = f.read() + f.close() + except IOError: + pass + return retval + + def set(self, key, value): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + f = file(cacheFullPath, "wb") + f.write(value) + f.close() + + def delete(self, key): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + if os.path.exists(cacheFullPath): + os.remove(cacheFullPath) + +class Credentials(object): + def __init__(self): + self.credentials = [] + + def add(self, name, password, domain=""): + self.credentials.append((domain.lower(), name, password)) + + def clear(self): + self.credentials = [] + + def iter(self, domain): + for (cdomain, name, password) in self.credentials: + if cdomain == "" or domain == cdomain: + yield (name, password) + +class KeyCerts(Credentials): + """Identical to Credentials except that + name/password are mapped to key/cert.""" + pass + +class AllHosts(object): + pass + +class ProxyInfo(object): + """Collect information required to use a proxy.""" + bypass_hosts = () + + def __init__(self, proxy_type, proxy_host, proxy_port, + proxy_rdns=None, proxy_user=None, proxy_pass=None): + """The parameter proxy_type must be set to one of socks.PROXY_TYPE_XXX + constants. For example: + + p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, + proxy_host='localhost', proxy_port=8000) + """ + self.proxy_type = proxy_type + self.proxy_host = proxy_host + self.proxy_port = proxy_port + self.proxy_rdns = proxy_rdns + self.proxy_user = proxy_user + self.proxy_pass = proxy_pass + + def astuple(self): + return (self.proxy_type, self.proxy_host, self.proxy_port, + self.proxy_rdns, self.proxy_user, self.proxy_pass) + + def isgood(self): + return (self.proxy_host != None) and (self.proxy_port != None) + + @classmethod + def from_environment(cls, method='http'): + """ + Read proxy info from the environment variables. + """ + if method not in ['http', 'https']: + return + + env_var = method + '_proxy' + url = os.environ.get(env_var, os.environ.get(env_var.upper())) + if not url: + return + pi = cls.from_url(url, method) + + no_proxy = os.environ.get('no_proxy', os.environ.get('NO_PROXY', '')) + bypass_hosts = [] + if no_proxy: + bypass_hosts = no_proxy.split(',') + # special case, no_proxy=* means all hosts bypassed + if no_proxy == '*': + bypass_hosts = AllHosts + + pi.bypass_hosts = bypass_hosts + return pi + + @classmethod + def from_url(cls, url, method='http'): + """ + Construct a ProxyInfo from a URL (such as http_proxy env var) + """ + url = urlparse.urlparse(url) + username = None + password = None + port = None + if '@' in url[1]: + ident, host_port = url[1].split('@', 1) + if ':' in ident: + username, password = ident.split(':', 1) + else: + password = ident + else: + host_port = url[1] + if ':' in host_port: + host, port = host_port.split(':', 1) + else: + host = host_port + + if port: + port = int(port) + else: + port = dict(https=443, http=80)[method] + + proxy_type = 3 # socks.PROXY_TYPE_HTTP + return cls( + proxy_type = proxy_type, + proxy_host = host, + proxy_port = port, + proxy_user = username or None, + proxy_pass = password or None, + ) + + def applies_to(self, hostname): + return not self.bypass_host(hostname) + + def bypass_host(self, hostname): + """Has this host been excluded from the proxy config""" + if self.bypass_hosts is AllHosts: + return True + + bypass = False + for domain in self.bypass_hosts: + if hostname.endswith(domain): + bypass = True + + return bypass + + +class HTTPConnectionWithTimeout(httplib.HTTPConnection): + """ + HTTPConnection subclass that supports timeouts + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__(self, host, port=None, strict=None, timeout=None, proxy_info=None): + httplib.HTTPConnection.__init__(self, host, port, strict) + self.timeout = timeout + self.proxy_info = proxy_info + + def connect(self): + """Connect to the host and port specified in __init__.""" + # Mostly verbatim from httplib.py. + if self.proxy_info and socks is None: + raise ProxiesUnavailableError( + 'Proxy support missing but proxy use was requested!') + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + else: + use_proxy = False + if use_proxy and proxy_rdns: + host = proxy_host + port = proxy_port + else: + host = self.host + port = self.port + + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + if use_proxy: + self.sock = socks.socksocket(af, socktype, proto) + self.sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + else: + self.sock = socket.socket(af, socktype, proto) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + # Different from httplib: support timeouts. + if has_timeout(self.timeout): + self.sock.settimeout(self.timeout) + # End of difference from httplib. + if self.debuglevel > 0: + print "connect: (%s, %s) ************" % (self.host, self.port) + if use_proxy: + print "proxy: %s ************" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + + self.sock.connect((self.host, self.port) + sa[2:]) + except socket.error, msg: + if self.debuglevel > 0: + print "connect fail: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + +class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): + """ + This class allows communication via SSL. + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, + ca_certs=None, disable_ssl_certificate_validation=False): + httplib.HTTPSConnection.__init__(self, host, port=port, key_file=key_file, + cert_file=cert_file, strict=strict) + self.timeout = timeout + self.proxy_info = proxy_info + if ca_certs is None: + ca_certs = CA_CERTS + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = \ + disable_ssl_certificate_validation + + # The following two methods were adapted from https_wrapper.py, released + # with the Google Appengine SDK at + # http://googleappengine.googlecode.com/svn-history/r136/trunk/python/google/appengine/tools/https_wrapper.py + # under the following license: + # + # Copyright 2007 Google Inc. + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + # + + def _GetValidHostsForCert(self, cert): + """Returns a list of valid host globs for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + Returns: + list: A list of valid host globs. + """ + if 'subjectAltName' in cert: + return [x[1] for x in cert['subjectAltName'] + if x[0].lower() == 'dns'] + else: + return [x[0][1] for x in cert['subject'] + if x[0][0].lower() == 'commonname'] + + def _ValidateCertificateHostname(self, cert, hostname): + """Validates that a given hostname is valid for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + hostname: The hostname to test. + Returns: + bool: Whether or not the hostname is valid for this certificate. + """ + hosts = self._GetValidHostsForCert(cert) + for host in hosts: + host_re = host.replace('.', '\.').replace('*', '[^.]*') + if re.search('^%s$' % (host_re,), hostname, re.I): + return True + return False + + def connect(self): + "Connect to a host on a given (SSL) port." + + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + else: + use_proxy = False + if use_proxy and proxy_rdns: + host = proxy_host + port = proxy_port + else: + host = self.host + port = self.port + + for family, socktype, proto, canonname, sockaddr in socket.getaddrinfo( + host, port, 0, socket.SOCK_STREAM): + try: + if use_proxy: + sock = socks.socksocket(family, socktype, proto) + + sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + else: + sock = socket.socket(family, socktype, proto) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + + if has_timeout(self.timeout): + sock.settimeout(self.timeout) + sock.connect((self.host, self.port)) + self.sock =_ssl_wrap_socket( + sock, self.key_file, self.cert_file, + self.disable_ssl_certificate_validation, self.ca_certs) + if self.debuglevel > 0: + print "connect: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if not self.disable_ssl_certificate_validation: + cert = self.sock.getpeercert() + hostname = self.host.split(':', 0)[0] + if not self._ValidateCertificateHostname(cert, hostname): + raise CertificateHostnameMismatch( + 'Server presented certificate that does not match ' + 'host %s: %s' % (hostname, cert), hostname, cert) + except ssl_SSLError, e: + if sock: + sock.close() + if self.sock: + self.sock.close() + self.sock = None + # Unfortunately the ssl module doesn't seem to provide any way + # to get at more detailed error information, in particular + # whether the error is due to certificate validation or + # something else (such as SSL protocol mismatch). + if e.errno == ssl.SSL_ERROR_SSL: + raise SSLHandshakeError(e) + else: + raise + except (socket.timeout, socket.gaierror): + raise + except socket.error, msg: + if self.debuglevel > 0: + print "connect fail: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + +SCHEME_TO_CONNECTION = { + 'http': HTTPConnectionWithTimeout, + 'https': HTTPSConnectionWithTimeout + } + +# Use a different connection object for Google App Engine +try: + from google.appengine.api import apiproxy_stub_map + if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None: + raise ImportError # Bail out; we're not actually running on App Engine. + from google.appengine.api.urlfetch import fetch + from google.appengine.api.urlfetch import InvalidURLError + from google.appengine.api.urlfetch import DownloadError + from google.appengine.api.urlfetch import ResponseTooLargeError + from google.appengine.api.urlfetch import SSLCertificateError + + + class ResponseDict(dict): + """Is a dictionary that also has a read() method, so + that it can pass itself off as an httlib.HTTPResponse().""" + def read(self): + pass + + + class AppEngineHttpConnection(object): + """Emulates an httplib.HTTPConnection object, but actually uses the Google + App Engine urlfetch library. This allows the timeout to be properly used on + Google App Engine, and avoids using httplib, which on Google App Engine is + just another wrapper around urlfetch. + """ + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, ca_certs=None, + disable_ssl_certificate_validation=False): + self.host = host + self.port = port + self.timeout = timeout + if key_file or cert_file or proxy_info or ca_certs: + raise NotSupportedOnThisPlatform() + self.response = None + self.scheme = 'http' + self.validate_certificate = not disable_ssl_certificate_validation + self.sock = True + + def request(self, method, url, body, headers): + # Calculate the absolute URI, which fetch requires + netloc = self.host + if self.port: + netloc = '%s:%s' % (self.host, self.port) + absolute_uri = '%s://%s%s' % (self.scheme, netloc, url) + try: + try: # 'body' can be a stream. + body = body.read() + except AttributeError: + pass + response = fetch(absolute_uri, payload=body, method=method, + headers=headers, allow_truncated=False, follow_redirects=False, + deadline=self.timeout, + validate_certificate=self.validate_certificate) + self.response = ResponseDict(response.headers) + self.response['status'] = str(response.status_code) + self.response['reason'] = httplib.responses.get(response.status_code, 'Ok') + self.response.status = response.status_code + setattr(self.response, 'read', lambda : response.content) + + # Make sure the exceptions raised match the exceptions expected. + except InvalidURLError: + raise socket.gaierror('') + except (DownloadError, ResponseTooLargeError, SSLCertificateError): + raise httplib.HTTPException() + + def getresponse(self): + if self.response: + return self.response + else: + raise httplib.HTTPException() + + def set_debuglevel(self, level): + pass + + def connect(self): + pass + + def close(self): + pass + + + class AppEngineHttpsConnection(AppEngineHttpConnection): + """Same as AppEngineHttpConnection, but for HTTPS URIs.""" + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, ca_certs=None, + disable_ssl_certificate_validation=False): + AppEngineHttpConnection.__init__(self, host, port, key_file, cert_file, + strict, timeout, proxy_info, ca_certs, disable_ssl_certificate_validation) + self.scheme = 'https' + + # Update the connection classes to use the Googel App Engine specific ones. + SCHEME_TO_CONNECTION = { + 'http': AppEngineHttpConnection, + 'https': AppEngineHttpsConnection + } + +except ImportError: + pass + + +class Http(object): + """An HTTP client that handles: +- all methods +- caching +- ETags +- compression, +- HTTPS +- Basic +- Digest +- WSSE + +and more. + """ + def __init__(self, cache=None, timeout=None, + proxy_info=ProxyInfo.from_environment, + ca_certs=None, disable_ssl_certificate_validation=False): + """If 'cache' is a string then it is used as a directory name for + a disk cache. Otherwise it must be an object that supports the + same interface as FileCache. + + All timeouts are in seconds. If None is passed for timeout + then Python's default timeout for sockets will be used. See + for example the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + + `proxy_info` may be: + - a callable that takes the http scheme ('http' or 'https') and + returns a ProxyInfo instance per request. By default, uses + ProxyInfo.from_environment. + - a ProxyInfo instance (static proxy config). + - None (proxy disabled). + + ca_certs is the path of a file containing root CA certificates for SSL + server certificate validation. By default, a CA cert file bundled with + httplib2 is used. + + If disable_ssl_certificate_validation is true, SSL cert validation will + not be performed. + """ + self.proxy_info = proxy_info + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = \ + disable_ssl_certificate_validation + + # Map domain name to an httplib connection + self.connections = {} + # The location of the cache, for now a directory + # where cached responses are held. + if cache and isinstance(cache, basestring): + self.cache = FileCache(cache) + else: + self.cache = cache + + # Name/password + self.credentials = Credentials() + + # Key/cert + self.certificates = KeyCerts() + + # authorization objects + self.authorizations = [] + + # If set to False then no redirects are followed, even safe ones. + self.follow_redirects = True + + # Which HTTP methods do we apply optimistic concurrency to, i.e. + # which methods get an "if-match:" etag header added to them. + self.optimistic_concurrency_methods = ["PUT", "PATCH"] + + # If 'follow_redirects' is True, and this is set to True then + # all redirecs are followed, including unsafe ones. + self.follow_all_redirects = False + + self.ignore_etag = False + + self.force_exception_to_status_code = False + + self.timeout = timeout + + # Keep Authorization: headers on a redirect. + self.forward_authorization_headers = False + + def _auth_from_challenge(self, host, request_uri, headers, response, content): + """A generator that creates Authorization objects + that can be applied to requests. + """ + challenges = _parse_www_authenticate(response, 'www-authenticate') + for cred in self.credentials.iter(host): + for scheme in AUTH_SCHEME_ORDER: + if challenges.has_key(scheme): + yield AUTH_SCHEME_CLASSES[scheme](cred, host, request_uri, headers, response, content, self) + + def add_credentials(self, name, password, domain=""): + """Add a name and password that will be used + any time a request requires authentication.""" + self.credentials.add(name, password, domain) + + def add_certificate(self, key, cert, domain): + """Add a key and cert that will be used + any time a request requires authentication.""" + self.certificates.add(key, cert, domain) + + def clear_credentials(self): + """Remove all the names and passwords + that are used for authentication""" + self.credentials.clear() + self.authorizations = [] + + def _conn_request(self, conn, request_uri, method, body, headers): + for i in range(RETRIES): + try: + if conn.sock is None: + conn.connect() + conn.request(method, request_uri, body, headers) + except socket.timeout: + raise + except socket.gaierror: + conn.close() + raise ServerNotFoundError("Unable to find the server at %s" % conn.host) + except ssl_SSLError: + conn.close() + raise + except socket.error, e: + err = 0 + if hasattr(e, 'args'): + err = getattr(e, 'args')[0] + else: + err = e.errno + if err == errno.ECONNREFUSED: # Connection refused + raise + except httplib.HTTPException: + # Just because the server closed the connection doesn't apparently mean + # that the server didn't send a response. + if conn.sock is None: + if i < RETRIES-1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + if i < RETRIES-1: + conn.close() + conn.connect() + continue + try: + response = conn.getresponse() + except (socket.error, httplib.HTTPException): + if i < RETRIES-1: + conn.close() + conn.connect() + continue + else: + raise + else: + content = "" + if method == "HEAD": + conn.close() + else: + content = response.read() + response = Response(response) + if method != "HEAD": + content = _decompressContent(response, content) + break + return (response, content) + + + def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey): + """Do the actual request using the connection object + and also follow one level of redirects if necessary""" + + auths = [(auth.depth(request_uri), auth) for auth in self.authorizations if auth.inscope(host, request_uri)] + auth = auths and sorted(auths)[0][1] or None + if auth: + auth.request(method, request_uri, headers, body) + + (response, content) = self._conn_request(conn, request_uri, method, body, headers) + + if auth: + if auth.response(response, body): + auth.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers ) + response._stale_digest = 1 + + if response.status == 401: + for authorization in self._auth_from_challenge(host, request_uri, headers, response, content): + authorization.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers, ) + if response.status != 401: + self.authorizations.append(authorization) + authorization.response(response, body) + break + + if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303): + if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: + # Pick out the location header and basically start from the beginning + # remembering first to strip the ETag header and decrement our 'depth' + if redirections: + if not response.has_key('location') and response.status != 300: + raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content) + # Fix-up relative redirects (which violate an RFC 2616 MUST) + if response.has_key('location'): + location = response['location'] + (scheme, authority, path, query, fragment) = parse_uri(location) + if authority == None: + response['location'] = urlparse.urljoin(absolute_uri, location) + if response.status == 301 and method in ["GET", "HEAD"]: + response['-x-permanent-redirect-url'] = response['location'] + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + if headers.has_key('if-none-match'): + del headers['if-none-match'] + if headers.has_key('if-modified-since'): + del headers['if-modified-since'] + if 'authorization' in headers and not self.forward_authorization_headers: + del headers['authorization'] + if response.has_key('location'): + location = response['location'] + old_response = copy.deepcopy(response) + if not old_response.has_key('content-location'): + old_response['content-location'] = absolute_uri + redirect_method = method + if response.status in [302, 303]: + redirect_method = "GET" + body = None + (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1) + response.previous = old_response + else: + raise RedirectLimit("Redirected more times than rediection_limit allows.", response, content) + elif response.status in [200, 203] and method in ["GET", "HEAD"]: + # Don't cache 206's since we aren't going to handle byte range requests + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + + return (response, content) + + def _normalize_headers(self, headers): + return _normalize_headers(headers) + +# Need to catch and rebrand some exceptions +# Then need to optionally turn all exceptions into status codes +# including all socket.* and httplib.* exceptions. + + + def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None): + """ Performs a single HTTP request. +The 'uri' is the URI of the HTTP resource and can begin +with either 'http' or 'https'. The value of 'uri' must be an absolute URI. + +The 'method' is the HTTP method to perform, such as GET, POST, DELETE, etc. +There is no restriction on the methods allowed. + +The 'body' is the entity body to be sent with the request. It is a string +object. + +Any extra headers that are to be sent with the request should be provided in the +'headers' dictionary. + +The maximum number of redirect to follow before raising an +exception is 'redirections. The default is 5. + +The return value is a tuple of (response, content), the first +being and instance of the 'Response' class, the second being +a string that contains the response entity body. + """ + try: + if headers is None: + headers = {} + else: + headers = self._normalize_headers(headers) + + if not headers.has_key('user-agent'): + headers['user-agent'] = "Python-httplib2/%s (gzip)" % __version__ + + uri = iri2uri(uri) + + (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) + domain_port = authority.split(":")[0:2] + if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http': + scheme = 'https' + authority = domain_port[0] + + proxy_info = self._get_proxy_info(scheme, authority) + + conn_key = scheme+":"+authority + if conn_key in self.connections: + conn = self.connections[conn_key] + else: + if not connection_type: + connection_type = SCHEME_TO_CONNECTION[scheme] + certs = list(self.certificates.iter(authority)) + if scheme == 'https': + if certs: + conn = self.connections[conn_key] = connection_type( + authority, key_file=certs[0][0], + cert_file=certs[0][1], timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation= + self.disable_ssl_certificate_validation) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation= + self.disable_ssl_certificate_validation) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, + proxy_info=proxy_info) + conn.set_debuglevel(debuglevel) + + if 'range' not in headers and 'accept-encoding' not in headers: + headers['accept-encoding'] = 'gzip, deflate' + + info = email.Message.Message() + cached_value = None + if self.cache: + cachekey = defrag_uri + cached_value = self.cache.get(cachekey) + if cached_value: + # info = email.message_from_string(cached_value) + # + # Need to replace the line above with the kludge below + # to fix the non-existent bug not fixed in this + # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html + try: + info, content = cached_value.split('\r\n\r\n', 1) + feedparser = email.FeedParser.FeedParser() + feedparser.feed(info) + info = feedparser.close() + feedparser._parse = None + except (IndexError, ValueError): + self.cache.delete(cachekey) + cachekey = None + cached_value = None + else: + cachekey = None + + if method in self.optimistic_concurrency_methods and self.cache and info.has_key('etag') and not self.ignore_etag and 'if-match' not in headers: + # http://www.w3.org/1999/04/Editing/ + headers['if-match'] = info['etag'] + + if method not in ["GET", "HEAD"] and self.cache and cachekey: + # RFC 2616 Section 13.10 + self.cache.delete(cachekey) + + # Check the vary header in the cache to see if this request + # matches what varies in the cache. + if method in ['GET', 'HEAD'] and 'vary' in info: + vary = info['vary'] + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + value = info[key] + if headers.get(header, None) != value: + cached_value = None + break + + if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers: + if info.has_key('-x-permanent-redirect-url'): + # Should cached permanent redirects be counted in our redirection count? For now, yes. + if redirections <= 0: + raise RedirectLimit("Redirected more times than rediection_limit allows.", {}, "") + (response, new_content) = self.request(info['-x-permanent-redirect-url'], "GET", headers = headers, redirections = redirections - 1) + response.previous = Response(info) + response.previous.fromcache = True + else: + # Determine our course of action: + # Is the cached entry fresh or stale? + # Has the client requested a non-cached response? + # + # There seems to be three possible answers: + # 1. [FRESH] Return the cache entry w/o doing a GET + # 2. [STALE] Do the GET (but add in cache validators if available) + # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request + entry_disposition = _entry_disposition(info, headers) + + if entry_disposition == "FRESH": + if not cached_value: + info['status'] = '504' + content = "" + response = Response(info) + if cached_value: + response.fromcache = True + return (response, content) + + if entry_disposition == "STALE": + if info.has_key('etag') and not self.ignore_etag and not 'if-none-match' in headers: + headers['if-none-match'] = info['etag'] + if info.has_key('last-modified') and not 'last-modified' in headers: + headers['if-modified-since'] = info['last-modified'] + elif entry_disposition == "TRANSPARENT": + pass + + (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + + if response.status == 304 and method == "GET": + # Rewrite the cache entry with the new end-to-end headers + # Take all headers that are in response + # and overwrite their values in info. + # unless they are hop-by-hop, or are listed in the connection header. + + for key in _get_end2end_headers(response): + info[key] = response[key] + merged_response = Response(info) + if hasattr(response, "_stale_digest"): + merged_response._stale_digest = response._stale_digest + _updateCache(headers, merged_response, content, self.cache, cachekey) + response = merged_response + response.status = 200 + response.fromcache = True + + elif response.status == 200: + content = new_content + else: + self.cache.delete(cachekey) + content = new_content + else: + cc = _parse_cache_control(headers) + if cc.has_key('only-if-cached'): + info['status'] = '504' + response = Response(info) + content = "" + else: + (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + except Exception, e: + if self.force_exception_to_status_code: + if isinstance(e, HttpLib2ErrorWithResponse): + response = e.response + content = e.content + response.status = 500 + response.reason = str(e) + elif isinstance(e, socket.timeout): + content = "Request Timeout" + response = Response( { + "content-type": "text/plain", + "status": "408", + "content-length": len(content) + }) + response.reason = "Request Timeout" + else: + content = str(e) + response = Response( { + "content-type": "text/plain", + "status": "400", + "content-length": len(content) + }) + response.reason = "Bad Request" + else: + raise + + + return (response, content) + + def _get_proxy_info(self, scheme, authority): + """Return a ProxyInfo instance (or None) based on the scheme + and authority. + """ + hostname, port = urllib.splitport(authority) + proxy_info = self.proxy_info + if callable(proxy_info): + proxy_info = proxy_info(scheme) + + if (hasattr(proxy_info, 'applies_to') + and not proxy_info.applies_to(hostname)): + proxy_info = None + return proxy_info + + +class Response(dict): + """An object more like email.Message than httplib.HTTPResponse.""" + + """Is this response from our local cache""" + fromcache = False + + """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """ + version = 11 + + "Status code returned by server. " + status = 200 + + """Reason phrase returned by server.""" + reason = "Ok" + + previous = None + + def __init__(self, info): + # info is either an email.Message or + # an httplib.HTTPResponse object. + if isinstance(info, httplib.HTTPResponse): + for key, value in info.getheaders(): + self[key.lower()] = value + self.status = info.status + self['status'] = str(self.status) + self.reason = info.reason + self.version = info.version + elif isinstance(info, email.Message.Message): + for key, value in info.items(): + self[key.lower()] = value + self.status = int(self['status']) + else: + for key, value in info.iteritems(): + self[key.lower()] = value + self.status = int(self.get('status', self.status)) + self.reason = self.get('reason', self.reason) + + + def __getattr__(self, name): + if name == 'dict': + return self + else: + raise AttributeError, name diff --git a/lib/httplib2/cacerts.txt b/lib/httplib2/cacerts.txt new file mode 100644 index 0000000..da36ed1 --- /dev/null +++ b/lib/httplib2/cacerts.txt @@ -0,0 +1,714 @@ +# Certifcate Authority certificates for validating SSL connections. +# +# This file contains PEM format certificates generated from +# http://mxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt +# +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Netscape security libraries. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1994-2000 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +Verisign/RSA Secure Server CA +============================= + +-----BEGIN CERTIFICATE----- +MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD +VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 +MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV +BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy +dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ +ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII +0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI +uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI +hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 +YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc +1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== +-----END CERTIFICATE----- + +Thawte Personal Basic CA +======================== + +-----BEGIN CERTIFICATE----- +MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj +IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X +DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw +EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE +ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy +dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD +QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN +BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 +dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK +wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 +G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF +AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 +c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P +9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== +-----END CERTIFICATE----- + +Thawte Personal Premium CA +========================== + +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p +dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv +bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa +QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY +BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u +IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl +bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu +Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs +Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI +Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD +ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH +b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh +KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ +-----END CERTIFICATE----- + +Thawte Personal Freemail CA +=========================== + +-----BEGIN CERTIFICATE----- +MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD +VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT +ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt +YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu +Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa +MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG +cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh +d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY +DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E +rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq +uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN +BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP +MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa +/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei +gQ== +-----END CERTIFICATE----- + +Thawte Server CA +================ + +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== + +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= + +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh +c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 +NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD +VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp +bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N +H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR +4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN +BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo +EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 +FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx +lA== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh +YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 +FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg +J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc +r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= + +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK +VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm +Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J +h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul +uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 +DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns +YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe +Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj +IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx +KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM +HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw +DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC +AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji +nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX +rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn +jBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G2 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM +HO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK +qsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj +cSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y +cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP +T8qAkbYp +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 +nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO +8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV +ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb +PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 +6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr +n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a +qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 +wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs +pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 +E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy +aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp +Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV +BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp +Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g +Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU +J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO +JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY +wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o +koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN +qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E +Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe +xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u +7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI +sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP +cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== + +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= + +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= + +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +Thawte Time Stamping CA +======================= + +-----BEGIN CERTIFICATE----- +MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN +BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd +BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN +MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g +Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG +A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l +c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT +6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa +Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL +8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC +9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ +pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ +CayJSdM= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== + +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ + +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +Entrust.net Secure Server Certification Authority +================================================= + +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Go Daddy Certification Authority Root Certificate Bundle +======================================================== + +-----BEGIN CERTIFICATE----- +MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx +ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw +MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH +QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j +b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j +b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H +KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm +VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR +SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT +cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ +6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu +MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS +kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB +BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f +BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv +c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH +AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG +OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU +A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o +0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX +RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH +qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV +U+4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh +bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu +Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g +QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe +BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX +DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE +YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC +ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q +N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO +r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN +f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH +U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU +TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb +VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg +SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv +biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg +MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw +AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv +ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu +Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd +IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 +QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O +WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf +SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + diff --git a/lib/httplib2/iri2uri.py b/lib/httplib2/iri2uri.py new file mode 100644 index 0000000..70667ed --- /dev/null +++ b/lib/httplib2/iri2uri.py @@ -0,0 +1,110 @@ +""" +iri2uri + +Converts an IRI to a URI. + +""" +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = [] +__version__ = "1.0.0" +__license__ = "MIT" +__history__ = """ +""" + +import urlparse + + +# Convert an IRI to a URI following the rules in RFC 3987 +# +# The characters we need to enocde and escape are defined in the spec: +# +# iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD +# ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF +# / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD +# / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD +# / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD +# / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD +# / %xD0000-DFFFD / %xE1000-EFFFD + +escape_range = [ + (0xA0, 0xD7FF ), + (0xE000, 0xF8FF ), + (0xF900, 0xFDCF ), + (0xFDF0, 0xFFEF), + (0x10000, 0x1FFFD ), + (0x20000, 0x2FFFD ), + (0x30000, 0x3FFFD), + (0x40000, 0x4FFFD ), + (0x50000, 0x5FFFD ), + (0x60000, 0x6FFFD), + (0x70000, 0x7FFFD ), + (0x80000, 0x8FFFD ), + (0x90000, 0x9FFFD), + (0xA0000, 0xAFFFD ), + (0xB0000, 0xBFFFD ), + (0xC0000, 0xCFFFD), + (0xD0000, 0xDFFFD ), + (0xE1000, 0xEFFFD), + (0xF0000, 0xFFFFD ), + (0x100000, 0x10FFFD) +] + +def encode(c): + retval = c + i = ord(c) + for low, high in escape_range: + if i < low: + break + if i >= low and i <= high: + retval = "".join(["%%%2X" % ord(o) for o in c.encode('utf-8')]) + break + return retval + + +def iri2uri(uri): + """Convert an IRI to a URI. Note that IRIs must be + passed in a unicode strings. That is, do not utf-8 encode + the IRI before passing it into the function.""" + if isinstance(uri ,unicode): + (scheme, authority, path, query, fragment) = urlparse.urlsplit(uri) + authority = authority.encode('idna') + # For each character in 'ucschar' or 'iprivate' + # 1. encode as utf-8 + # 2. then %-encode each octet of that utf-8 + uri = urlparse.urlunsplit((scheme, authority, path, query, fragment)) + uri = "".join([encode(c) for c in uri]) + return uri + +if __name__ == "__main__": + import unittest + + class Test(unittest.TestCase): + + def test_uris(self): + """Test that URIs are invariant under the transformation.""" + invariant = [ + u"ftp://ftp.is.co.za/rfc/rfc1808.txt", + u"http://www.ietf.org/rfc/rfc2396.txt", + u"ldap://[2001:db8::7]/c=GB?objectClass?one", + u"mailto:John.Doe@example.com", + u"news:comp.infosystems.www.servers.unix", + u"tel:+1-816-555-1212", + u"telnet://192.0.2.16:80/", + u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2" ] + for uri in invariant: + self.assertEqual(uri, iri2uri(uri)) + + def test_iri(self): + """ Test that the right type of escaping is done for each part of the URI.""" + self.assertEqual("http://xn--o3h.com/%E2%98%84", iri2uri(u"http://\N{COMET}.com/\N{COMET}")) + self.assertEqual("http://bitworking.org/?fred=%E2%98%84", iri2uri(u"http://bitworking.org/?fred=\N{COMET}")) + self.assertEqual("http://bitworking.org/#%E2%98%84", iri2uri(u"http://bitworking.org/#\N{COMET}")) + self.assertEqual("#%E2%98%84", iri2uri(u"#\N{COMET}")) + self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")) + self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"))) + self.assertNotEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode('utf-8'))) + + unittest.main() + + diff --git a/lib/httplib2/socks.py b/lib/httplib2/socks.py new file mode 100644 index 0000000..0991f4c --- /dev/null +++ b/lib/httplib2/socks.py @@ -0,0 +1,438 @@ +"""SocksiPy - Python SOCKS module. +Version 1.00 + +Copyright 2006 Dan-Haim. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of Dan Haim nor the names of his contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE. + + +This module provides a standard socket-like interface for Python +for tunneling connections through SOCKS proxies. + +""" + +""" + +Minor modifications made by Christopher Gilbert (http://motomastyle.com/) +for use in PyLoris (http://pyloris.sourceforge.net/) + +Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) +mainly to merge bug fixes found in Sourceforge + +""" + +import base64 +import socket +import struct +import sys + +if getattr(socket, 'socket', None) is None: + raise ImportError('socket.socket missing, proxy support unusable') + +PROXY_TYPE_SOCKS4 = 1 +PROXY_TYPE_SOCKS5 = 2 +PROXY_TYPE_HTTP = 3 +PROXY_TYPE_HTTP_NO_TUNNEL = 4 + +_defaultproxy = None +_orgsocket = socket.socket + +class ProxyError(Exception): pass +class GeneralProxyError(ProxyError): pass +class Socks5AuthError(ProxyError): pass +class Socks5Error(ProxyError): pass +class Socks4Error(ProxyError): pass +class HTTPError(ProxyError): pass + +_generalerrors = ("success", + "invalid data", + "not connected", + "not available", + "bad proxy type", + "bad input") + +_socks5errors = ("succeeded", + "general SOCKS server failure", + "connection not allowed by ruleset", + "Network unreachable", + "Host unreachable", + "Connection refused", + "TTL expired", + "Command not supported", + "Address type not supported", + "Unknown error") + +_socks5autherrors = ("succeeded", + "authentication is required", + "all offered authentication methods were rejected", + "unknown username or invalid password", + "unknown error") + +_socks4errors = ("request granted", + "request rejected or failed", + "request rejected because SOCKS server cannot connect to identd on the client", + "request rejected because the client program and identd report different user-ids", + "unknown error") + +def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets a default proxy which all further socksocket objects will use, + unless explicitly changed. + """ + global _defaultproxy + _defaultproxy = (proxytype, addr, port, rdns, username, password) + +def wrapmodule(module): + """wrapmodule(module) + Attempts to replace a module's socket library with a SOCKS socket. Must set + a default proxy using setdefaultproxy(...) first. + This will only work on modules that import socket directly into the namespace; + most of the Python Standard Library falls into this category. + """ + if _defaultproxy != None: + module.socket.socket = socksocket + else: + raise GeneralProxyError((4, "no proxy specified")) + +class socksocket(socket.socket): + """socksocket([family[, type[, proto]]]) -> socket object + Open a SOCKS enabled socket. The parameters are the same as + those of the standard socket init. In order for SOCKS to work, + you must specify family=AF_INET, type=SOCK_STREAM and proto=0. + """ + + def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None): + _orgsocket.__init__(self, family, type, proto, _sock) + if _defaultproxy != None: + self.__proxy = _defaultproxy + else: + self.__proxy = (None, None, None, None, None, None) + self.__proxysockname = None + self.__proxypeername = None + self.__httptunnel = True + + def __recvall(self, count): + """__recvall(count) -> data + Receive EXACTLY the number of bytes requested from the socket. + Blocks until the required number of bytes have been received. + """ + data = self.recv(count) + while len(data) < count: + d = self.recv(count-len(data)) + if not d: raise GeneralProxyError((0, "connection closed unexpectedly")) + data = data + d + return data + + def sendall(self, content, *args): + """ override socket.socket.sendall method to rewrite the header + for non-tunneling proxies if needed + """ + if not self.__httptunnel: + content = self.__rewriteproxy(content) + return super(socksocket, self).sendall(content, *args) + + def __rewriteproxy(self, header): + """ rewrite HTTP request headers to support non-tunneling proxies + (i.e. those which do not support the CONNECT method). + This only works for HTTP (not HTTPS) since HTTPS requires tunneling. + """ + host, endpt = None, None + hdrs = header.split("\r\n") + for hdr in hdrs: + if hdr.lower().startswith("host:"): + host = hdr + elif hdr.lower().startswith("get") or hdr.lower().startswith("post"): + endpt = hdr + if host and endpt: + hdrs.remove(host) + hdrs.remove(endpt) + host = host.split(" ")[1] + endpt = endpt.split(" ") + if (self.__proxy[4] != None and self.__proxy[5] != None): + hdrs.insert(0, self.__getauthheader()) + hdrs.insert(0, "Host: %s" % host) + hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2])) + return "\r\n".join(hdrs) + + def __getauthheader(self): + auth = self.__proxy[4] + ":" + self.__proxy[5] + return "Proxy-Authorization: Basic " + base64.b64encode(auth) + + def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets the proxy to be used. + proxytype - The type of the proxy to be used. Three types + are supported: PROXY_TYPE_SOCKS4 (including socks4a), + PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP + addr - The address of the server (IP or DNS). + port - The port of the server. Defaults to 1080 for SOCKS + servers and 8080 for HTTP proxy servers. + rdns - Should DNS queries be preformed on the remote side + (rather than the local side). The default is True. + Note: This has no effect with SOCKS4 servers. + username - Username to authenticate with to the server. + The default is no authentication. + password - Password to authenticate with to the server. + Only relevant when username is also provided. + """ + self.__proxy = (proxytype, addr, port, rdns, username, password) + + def __negotiatesocks5(self, destaddr, destport): + """__negotiatesocks5(self,destaddr,destport) + Negotiates a connection through a SOCKS5 server. + """ + # First we'll send the authentication packages we support. + if (self.__proxy[4]!=None) and (self.__proxy[5]!=None): + # The username/password details were supplied to the + # setproxy method so we support the USERNAME/PASSWORD + # authentication (in addition to the standard none). + self.sendall(struct.pack('BBBB', 0x05, 0x02, 0x00, 0x02)) + else: + # No username/password were entered, therefore we + # only support connections with no authentication. + self.sendall(struct.pack('BBB', 0x05, 0x01, 0x00)) + # We'll receive the server's response to determine which + # method was selected + chosenauth = self.__recvall(2) + if chosenauth[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + # Check the chosen authentication method + if chosenauth[1:2] == chr(0x00).encode(): + # No authentication is required + pass + elif chosenauth[1:2] == chr(0x02).encode(): + # Okay, we need to perform a basic username/password + # authentication. + self.sendall(chr(0x01).encode() + chr(len(self.__proxy[4])) + self.__proxy[4] + chr(len(self.__proxy[5])) + self.__proxy[5]) + authstat = self.__recvall(2) + if authstat[0:1] != chr(0x01).encode(): + # Bad response + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if authstat[1:2] != chr(0x00).encode(): + # Authentication failed + self.close() + raise Socks5AuthError((3, _socks5autherrors[3])) + # Authentication succeeded + else: + # Reaching here is always bad + self.close() + if chosenauth[1] == chr(0xFF).encode(): + raise Socks5AuthError((2, _socks5autherrors[2])) + else: + raise GeneralProxyError((1, _generalerrors[1])) + # Now we can request the actual connection + req = struct.pack('BBB', 0x05, 0x01, 0x00) + # If the given destination address is an IP address, we'll + # use the IPv4 address request even if remote resolving was specified. + try: + ipaddr = socket.inet_aton(destaddr) + req = req + chr(0x01).encode() + ipaddr + except socket.error: + # Well it's not an IP number, so it's probably a DNS name. + if self.__proxy[3]: + # Resolve remotely + ipaddr = None + req = req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr + else: + # Resolve locally + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + req = req + chr(0x01).encode() + ipaddr + req = req + struct.pack(">H", destport) + self.sendall(req) + # Get the response + resp = self.__recvall(4) + if resp[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + elif resp[1:2] != chr(0x00).encode(): + # Connection failed + self.close() + if ord(resp[1:2])<=8: + raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])])) + else: + raise Socks5Error((9, _socks5errors[9])) + # Get the bound address/port + elif resp[3:4] == chr(0x01).encode(): + boundaddr = self.__recvall(4) + elif resp[3:4] == chr(0x03).encode(): + resp = resp + self.recv(1) + boundaddr = self.__recvall(ord(resp[4:5])) + else: + self.close() + raise GeneralProxyError((1,_generalerrors[1])) + boundport = struct.unpack(">H", self.__recvall(2))[0] + self.__proxysockname = (boundaddr, boundport) + if ipaddr != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def getproxysockname(self): + """getsockname() -> address info + Returns the bound IP address and port number at the proxy. + """ + return self.__proxysockname + + def getproxypeername(self): + """getproxypeername() -> address info + Returns the IP and port number of the proxy. + """ + return _orgsocket.getpeername(self) + + def getpeername(self): + """getpeername() -> address info + Returns the IP address and port number of the destination + machine (note: getproxypeername returns the proxy) + """ + return self.__proxypeername + + def __negotiatesocks4(self,destaddr,destport): + """__negotiatesocks4(self,destaddr,destport) + Negotiates a connection through a SOCKS4 server. + """ + # Check if the destination address provided is an IP address + rmtrslv = False + try: + ipaddr = socket.inet_aton(destaddr) + except socket.error: + # It's a DNS name. Check where it should be resolved. + if self.__proxy[3]: + ipaddr = struct.pack("BBBB", 0x00, 0x00, 0x00, 0x01) + rmtrslv = True + else: + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + # Construct the request packet + req = struct.pack(">BBH", 0x04, 0x01, destport) + ipaddr + # The username parameter is considered userid for SOCKS4 + if self.__proxy[4] != None: + req = req + self.__proxy[4] + req = req + chr(0x00).encode() + # DNS name if remote resolving is required + # NOTE: This is actually an extension to the SOCKS4 protocol + # called SOCKS4A and may not be supported in all cases. + if rmtrslv: + req = req + destaddr + chr(0x00).encode() + self.sendall(req) + # Get the response from the server + resp = self.__recvall(8) + if resp[0:1] != chr(0x00).encode(): + # Bad data + self.close() + raise GeneralProxyError((1,_generalerrors[1])) + if resp[1:2] != chr(0x5A).encode(): + # Server returned an error + self.close() + if ord(resp[1:2]) in (91, 92, 93): + self.close() + raise Socks4Error((ord(resp[1:2]), _socks4errors[ord(resp[1:2]) - 90])) + else: + raise Socks4Error((94, _socks4errors[4])) + # Get the bound address/port + self.__proxysockname = (socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0]) + if rmtrslv != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def __negotiatehttp(self, destaddr, destport): + """__negotiatehttp(self,destaddr,destport) + Negotiates a connection through an HTTP server. + """ + # If we need to resolve locally, we do this now + if not self.__proxy[3]: + addr = socket.gethostbyname(destaddr) + else: + addr = destaddr + headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] + headers += ["Host: ", destaddr, "\r\n"] + if (self.__proxy[4] != None and self.__proxy[5] != None): + headers += [self.__getauthheader(), "\r\n"] + headers.append("\r\n") + self.sendall("".join(headers).encode()) + # We read the response until we get the string "\r\n\r\n" + resp = self.recv(1) + while resp.find("\r\n\r\n".encode()) == -1: + resp = resp + self.recv(1) + # We just need the first line to check if the connection + # was successful + statusline = resp.splitlines()[0].split(" ".encode(), 2) + if statusline[0] not in ("HTTP/1.0".encode(), "HTTP/1.1".encode()): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + try: + statuscode = int(statusline[1]) + except ValueError: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if statuscode != 200: + self.close() + raise HTTPError((statuscode, statusline[2])) + self.__proxysockname = ("0.0.0.0", 0) + self.__proxypeername = (addr, destport) + + def connect(self, destpair): + """connect(self, despair) + Connects to the specified destination through a proxy. + destpar - A tuple of the IP/DNS address and the port number. + (identical to socket's connect). + To select the proxy server use setproxy(). + """ + # Do a minimal input check first + if (not type(destpair) in (list,tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], basestring)) or (type(destpair[1]) != int): + raise GeneralProxyError((5, _generalerrors[5])) + if self.__proxy[0] == PROXY_TYPE_SOCKS5: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatesocks5(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_SOCKS4: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self,(self.__proxy[1], portnum)) + self.__negotiatesocks4(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self,(self.__proxy[1], portnum)) + self.__negotiatehttp(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self,(self.__proxy[1],portnum)) + if destpair[1] == 443: + self.__negotiatehttp(destpair[0],destpair[1]) + else: + self.__httptunnel = False + elif self.__proxy[0] == None: + _orgsocket.connect(self, (destpair[0], destpair[1])) + else: + raise GeneralProxyError((4, _generalerrors[4])) diff --git a/lib/oauth2/__init__.py b/lib/oauth2/__init__.py new file mode 100644 index 0000000..835270e --- /dev/null +++ b/lib/oauth2/__init__.py @@ -0,0 +1,860 @@ +""" +The MIT License + +Copyright (c) 2007-2010 Leah Culver, Joe Stump, Mark Paschal, Vic Fryzel + +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. +""" + +import base64 +import urllib +import time +import random +import urlparse +import hmac +import binascii +import httplib2 + +try: + from urlparse import parse_qs + parse_qs # placate pyflakes +except ImportError: + # fall back for Python 2.5 + from cgi import parse_qs + +try: + from hashlib import sha1 + sha = sha1 +except ImportError: + # hashlib was added in Python 2.5 + import sha + +import _version + +__version__ = _version.__version__ + +OAUTH_VERSION = '1.0' # Hi Blaine! +HTTP_METHOD = 'GET' +SIGNATURE_METHOD = 'PLAINTEXT' + + +class Error(RuntimeError): + """Generic exception class.""" + + def __init__(self, message='OAuth error occurred.'): + self._message = message + + @property + def message(self): + """A hack to get around the deprecation errors in 2.6.""" + return self._message + + def __str__(self): + return self._message + + +class MissingSignature(Error): + pass + + +def build_authenticate_header(realm=''): + """Optional WWW-Authenticate header (401 error)""" + return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} + + +def build_xoauth_string(url, consumer, token=None): + """Build an XOAUTH string for use in SMTP/IMPA authentication.""" + request = Request.from_consumer_and_token(consumer, token, + "GET", url) + + signing_method = SignatureMethod_HMAC_SHA1() + request.sign_request(signing_method, consumer, token) + + params = [] + for k, v in sorted(request.iteritems()): + if v is not None: + params.append('%s="%s"' % (k, escape(v))) + + return "%s %s %s" % ("GET", url, ','.join(params)) + + +def to_unicode(s): + """ Convert to unicode, raise exception with instructive error + message if s is not unicode, ascii, or utf-8. """ + if not isinstance(s, unicode): + if not isinstance(s, str): + raise TypeError('You are required to pass either unicode or string here, not: %r (%s)' % (type(s), s)) + try: + s = s.decode('utf-8') + except UnicodeDecodeError, le: + raise TypeError('You are required to pass either a unicode object or a utf-8 string here. You passed a Python string object which contained non-utf-8: %r. The UnicodeDecodeError that resulted from attempting to interpret it as utf-8 was: %s' % (s, le,)) + return s + +def to_utf8(s): + return to_unicode(s).encode('utf-8') + +def to_unicode_if_string(s): + if isinstance(s, basestring): + return to_unicode(s) + else: + return s + +def to_utf8_if_string(s): + if isinstance(s, basestring): + return to_utf8(s) + else: + return s + +def to_unicode_optional_iterator(x): + """ + Raise TypeError if x is a str containing non-utf8 bytes or if x is + an iterable which contains such a str. + """ + if isinstance(x, basestring): + return to_unicode(x) + + try: + l = list(x) + except TypeError, e: + assert 'is not iterable' in str(e) + return x + else: + return [ to_unicode(e) for e in l ] + +def to_utf8_optional_iterator(x): + """ + Raise TypeError if x is a str or if x is an iterable which + contains a str. + """ + if isinstance(x, basestring): + return to_utf8(x) + + try: + l = list(x) + except TypeError, e: + assert 'is not iterable' in str(e) + return x + else: + return [ to_utf8_if_string(e) for e in l ] + +def escape(s): + """Escape a URL including any /.""" + return urllib.quote(s.encode('utf-8'), safe='~') + +def generate_timestamp(): + """Get seconds since epoch (UTC).""" + return int(time.time()) + + +def generate_nonce(length=8): + """Generate pseudorandom number.""" + return ''.join([str(random.randint(0, 9)) for i in range(length)]) + + +def generate_verifier(length=8): + """Generate pseudorandom number.""" + return ''.join([str(random.randint(0, 9)) for i in range(length)]) + + +class Consumer(object): + """A consumer of OAuth-protected services. + + The OAuth consumer is a "third-party" service that wants to access + protected resources from an OAuth service provider on behalf of an end + user. It's kind of the OAuth client. + + Usually a consumer must be registered with the service provider by the + developer of the consumer software. As part of that process, the service + provider gives the consumer a *key* and a *secret* with which the consumer + software can identify itself to the service. The consumer will include its + key in each request to identify itself, but will use its secret only when + signing requests, to prove that the request is from that particular + registered consumer. + + Once registered, the consumer can then use its consumer credentials to ask + the service provider for a request token, kicking off the OAuth + authorization process. + """ + + key = None + secret = None + + def __init__(self, key, secret): + self.key = key + self.secret = secret + + if self.key is None or self.secret is None: + raise ValueError("Key and secret must be set.") + + def __str__(self): + data = {'oauth_consumer_key': self.key, + 'oauth_consumer_secret': self.secret} + + return urllib.urlencode(data) + + +class Token(object): + """An OAuth credential used to request authorization or a protected + resource. + + Tokens in OAuth comprise a *key* and a *secret*. The key is included in + requests to identify the token being used, but the secret is used only in + the signature, to prove that the requester is who the server gave the + token to. + + When first negotiating the authorization, the consumer asks for a *request + token* that the live user authorizes with the service provider. The + consumer then exchanges the request token for an *access token* that can + be used to access protected resources. + """ + + key = None + secret = None + callback = None + callback_confirmed = None + verifier = None + + def __init__(self, key, secret): + self.key = key + self.secret = secret + + if self.key is None or self.secret is None: + raise ValueError("Key and secret must be set.") + + def set_callback(self, callback): + self.callback = callback + self.callback_confirmed = 'true' + + def set_verifier(self, verifier=None): + if verifier is not None: + self.verifier = verifier + else: + self.verifier = generate_verifier() + + def get_callback_url(self): + if self.callback and self.verifier: + # Append the oauth_verifier. + parts = urlparse.urlparse(self.callback) + scheme, netloc, path, params, query, fragment = parts[:6] + if query: + query = '%s&oauth_verifier=%s' % (query, self.verifier) + else: + query = 'oauth_verifier=%s' % self.verifier + return urlparse.urlunparse((scheme, netloc, path, params, + query, fragment)) + return self.callback + + def to_string(self): + """Returns this token as a plain string, suitable for storage. + + The resulting string includes the token's secret, so you should never + send or store this string where a third party can read it. + """ + + data = { + 'oauth_token': self.key, + 'oauth_token_secret': self.secret, + } + + if self.callback_confirmed is not None: + data['oauth_callback_confirmed'] = self.callback_confirmed + return urllib.urlencode(data) + + @staticmethod + def from_string(s): + """Deserializes a token from a string like one returned by + `to_string()`.""" + + if not len(s): + raise ValueError("Invalid parameter string.") + + params = parse_qs(s, keep_blank_values=False) + if not len(params): + raise ValueError("Invalid parameter string.") + + try: + key = params['oauth_token'][0] + except Exception: + raise ValueError("'oauth_token' not found in OAuth request.") + + try: + secret = params['oauth_token_secret'][0] + except Exception: + raise ValueError("'oauth_token_secret' not found in " + "OAuth request.") + + token = Token(key, secret) + try: + token.callback_confirmed = params['oauth_callback_confirmed'][0] + except KeyError: + pass # 1.0, no callback confirmed. + return token + + def __str__(self): + return self.to_string() + + +def setter(attr): + name = attr.__name__ + + def getter(self): + try: + return self.__dict__[name] + except KeyError: + raise AttributeError(name) + + def deleter(self): + del self.__dict__[name] + + return property(getter, attr, deleter) + + +class Request(dict): + + """The parameters and information for an HTTP request, suitable for + authorizing with OAuth credentials. + + When a consumer wants to access a service's protected resources, it does + so using a signed HTTP request identifying itself (the consumer) with its + key, and providing an access token authorized by the end user to access + those resources. + + """ + + version = OAUTH_VERSION + + def __init__(self, method=HTTP_METHOD, url=None, parameters=None, + body='', is_form_encoded=False): + if url is not None: + self.url = to_unicode(url) + self.method = method + if parameters is not None: + for k, v in parameters.iteritems(): + k = to_unicode(k) + v = to_unicode_optional_iterator(v) + self[k] = v + self.body = body + self.is_form_encoded = is_form_encoded + + + @setter + def url(self, value): + self.__dict__['url'] = value + if value is not None: + scheme, netloc, path, params, query, fragment = urlparse.urlparse(value) + + # Exclude default port numbers. + if scheme == 'http' and netloc[-3:] == ':80': + netloc = netloc[:-3] + elif scheme == 'https' and netloc[-4:] == ':443': + netloc = netloc[:-4] + if scheme not in ('http', 'https'): + raise ValueError("Unsupported URL %s (%s)." % (value, scheme)) + + # Normalized URL excludes params, query, and fragment. + self.normalized_url = urlparse.urlunparse((scheme, netloc, path, None, None, None)) + else: + self.normalized_url = None + self.__dict__['url'] = None + + @setter + def method(self, value): + self.__dict__['method'] = value.upper() + + def _get_timestamp_nonce(self): + return self['oauth_timestamp'], self['oauth_nonce'] + + def get_nonoauth_parameters(self): + """Get any non-OAuth parameters.""" + return dict([(k, v) for k, v in self.iteritems() + if not k.startswith('oauth_')]) + + def to_header(self, realm=''): + """Serialize as a header for an HTTPAuth request.""" + oauth_params = ((k, v) for k, v in self.items() + if k.startswith('oauth_')) + stringy_params = ((k, escape(str(v))) for k, v in oauth_params) + header_params = ('%s="%s"' % (k, v) for k, v in stringy_params) + params_header = ', '.join(header_params) + + auth_header = 'OAuth realm="%s"' % realm + if params_header: + auth_header = "%s, %s" % (auth_header, params_header) + + return {'Authorization': auth_header} + + def to_postdata(self): + """Serialize as post data for a POST request.""" + d = {} + for k, v in self.iteritems(): + d[k.encode('utf-8')] = to_utf8_optional_iterator(v) + + # tell urlencode to deal with sequence values and map them correctly + # to resulting querystring. for example self["k"] = ["v1", "v2"] will + # result in 'k=v1&k=v2' and not k=%5B%27v1%27%2C+%27v2%27%5D + return urllib.urlencode(d, True).replace('+', '%20') + + def to_url(self): + """Serialize as a URL for a GET request.""" + base_url = urlparse.urlparse(self.url) + try: + query = base_url.query + except AttributeError: + # must be python <2.5 + query = base_url[4] + query = parse_qs(query) + for k, v in self.items(): + query.setdefault(k, []).append(v) + + try: + scheme = base_url.scheme + netloc = base_url.netloc + path = base_url.path + params = base_url.params + fragment = base_url.fragment + except AttributeError: + # must be python <2.5 + scheme = base_url[0] + netloc = base_url[1] + path = base_url[2] + params = base_url[3] + fragment = base_url[5] + + url = (scheme, netloc, path, params, + urllib.urlencode(query, True), fragment) + return urlparse.urlunparse(url) + + def get_parameter(self, parameter): + ret = self.get(parameter) + if ret is None: + raise Error('Parameter not found: %s' % parameter) + + return ret + + def get_normalized_parameters(self): + """Return a string that contains the parameters that must be signed.""" + items = [] + for key, value in self.iteritems(): + if key == 'oauth_signature': + continue + # 1.0a/9.1.1 states that kvp must be sorted by key, then by value, + # so we unpack sequence values into multiple items for sorting. + if isinstance(value, basestring): + items.append((to_utf8_if_string(key), to_utf8(value))) + else: + try: + value = list(value) + except TypeError, e: + assert 'is not iterable' in str(e) + items.append((to_utf8_if_string(key), to_utf8_if_string(value))) + else: + items.extend((to_utf8_if_string(key), to_utf8_if_string(item)) for item in value) + + # Include any query string parameters from the provided URL + query = urlparse.urlparse(self.url)[4] + + url_items = self._split_url_string(query).items() + url_items = [(to_utf8(k), to_utf8(v)) for k, v in url_items if k != 'oauth_signature' ] + items.extend(url_items) + + items.sort() + encoded_str = urllib.urlencode(items) + # Encode signature parameters per Oauth Core 1.0 protocol + # spec draft 7, section 3.6 + # (http://tools.ietf.org/html/draft-hammer-oauth-07#section-3.6) + # Spaces must be encoded with "%20" instead of "+" + return encoded_str.replace('+', '%20').replace('%7E', '~') + + def sign_request(self, signature_method, consumer, token): + """Set the signature parameter to the result of sign.""" + + if not self.is_form_encoded: + # according to + # http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html + # section 4.1.1 "OAuth Consumers MUST NOT include an + # oauth_body_hash parameter on requests with form-encoded + # request bodies." + self['oauth_body_hash'] = base64.b64encode(sha(self.body).digest()) + + if 'oauth_consumer_key' not in self: + self['oauth_consumer_key'] = consumer.key + + if token and 'oauth_token' not in self: + self['oauth_token'] = token.key + + self['oauth_signature_method'] = signature_method.name + self['oauth_signature'] = signature_method.sign(self, consumer, token) + + @classmethod + def make_timestamp(cls): + """Get seconds since epoch (UTC).""" + return str(int(time.time())) + + @classmethod + def make_nonce(cls): + """Generate pseudorandom number.""" + return str(random.randint(0, 100000000)) + + @classmethod + def from_request(cls, http_method, http_url, headers=None, parameters=None, + query_string=None): + """Combines multiple parameter sources.""" + if parameters is None: + parameters = {} + + # Headers + if headers and 'Authorization' in headers: + auth_header = headers['Authorization'] + # Check that the authorization header is OAuth. + if auth_header[:6] == 'OAuth ': + auth_header = auth_header[6:] + try: + # Get the parameters from the header. + header_params = cls._split_header(auth_header) + parameters.update(header_params) + except: + raise Error('Unable to parse OAuth parameters from ' + 'Authorization header.') + + # GET or POST query string. + if query_string: + query_params = cls._split_url_string(query_string) + parameters.update(query_params) + + # URL parameters. + param_str = urlparse.urlparse(http_url)[4] # query + url_params = cls._split_url_string(param_str) + parameters.update(url_params) + + if parameters: + return cls(http_method, http_url, parameters) + + return None + + @classmethod + def from_consumer_and_token(cls, consumer, token=None, + http_method=HTTP_METHOD, http_url=None, parameters=None, + body='', is_form_encoded=False): + if not parameters: + parameters = {} + + defaults = { + 'oauth_consumer_key': consumer.key, + 'oauth_timestamp': cls.make_timestamp(), + 'oauth_nonce': cls.make_nonce(), + 'oauth_version': cls.version, + } + + defaults.update(parameters) + parameters = defaults + + if token: + parameters['oauth_token'] = token.key + if token.verifier: + parameters['oauth_verifier'] = token.verifier + + return Request(http_method, http_url, parameters, body=body, + is_form_encoded=is_form_encoded) + + @classmethod + def from_token_and_callback(cls, token, callback=None, + http_method=HTTP_METHOD, http_url=None, parameters=None): + + if not parameters: + parameters = {} + + parameters['oauth_token'] = token.key + + if callback: + parameters['oauth_callback'] = callback + + return cls(http_method, http_url, parameters) + + @staticmethod + def _split_header(header): + """Turn Authorization: header into parameters.""" + params = {} + parts = header.split(',') + for param in parts: + # Ignore realm parameter. + if param.find('realm') > -1: + continue + # Remove whitespace. + param = param.strip() + # Split key-value. + param_parts = param.split('=', 1) + # Remove quotes and unescape the value. + params[param_parts[0]] = urllib.unquote(param_parts[1].strip('\"')) + return params + + @staticmethod + def _split_url_string(param_str): + """Turn URL string into parameters.""" + parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True) + for k, v in parameters.iteritems(): + parameters[k] = urllib.unquote(v[0]) + return parameters + + +class Client(httplib2.Http): + """OAuthClient is a worker to attempt to execute a request.""" + + def __init__(self, consumer, token=None, cache=None, timeout=None, + proxy_info=None): + + if consumer is not None and not isinstance(consumer, Consumer): + raise ValueError("Invalid consumer.") + + if token is not None and not isinstance(token, Token): + raise ValueError("Invalid token.") + + self.consumer = consumer + self.token = token + self.method = SignatureMethod_HMAC_SHA1() + + httplib2.Http.__init__(self, cache=cache, timeout=timeout, proxy_info=proxy_info) + + def set_signature_method(self, method): + if not isinstance(method, SignatureMethod): + raise ValueError("Invalid signature method.") + + self.method = method + + def request(self, uri, method="GET", body='', headers=None, + redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None): + DEFAULT_POST_CONTENT_TYPE = 'application/x-www-form-urlencoded' + + if not isinstance(headers, dict): + headers = {} + + if method == "POST": + headers['Content-Type'] = headers.get('Content-Type', + DEFAULT_POST_CONTENT_TYPE) + + is_form_encoded = \ + headers.get('Content-Type') == 'application/x-www-form-urlencoded' + + if is_form_encoded and body: + parameters = parse_qs(body) + else: + parameters = None + + req = Request.from_consumer_and_token(self.consumer, + token=self.token, http_method=method, http_url=uri, + parameters=parameters, body=body, is_form_encoded=is_form_encoded) + + req.sign_request(self.method, self.consumer, self.token) + + schema, rest = urllib.splittype(uri) + if rest.startswith('//'): + hierpart = '//' + else: + hierpart = '' + host, rest = urllib.splithost(rest) + + realm = schema + ':' + hierpart + host + + if is_form_encoded: + body = req.to_postdata() + elif method == "GET": + uri = req.to_url() + else: + headers.update(req.to_header(realm=realm)) + + return httplib2.Http.request(self, uri, method=method, body=body, + headers=headers, redirections=redirections, + connection_type=connection_type) + + +class Server(object): + """A skeletal implementation of a service provider, providing protected + resources to requests from authorized consumers. + + This class implements the logic to check requests for authorization. You + can use it with your web server or web framework to protect certain + resources with OAuth. + """ + + timestamp_threshold = 300 # In seconds, five minutes. + version = OAUTH_VERSION + signature_methods = None + + def __init__(self, signature_methods=None): + self.signature_methods = signature_methods or {} + + def add_signature_method(self, signature_method): + self.signature_methods[signature_method.name] = signature_method + return self.signature_methods + + def verify_request(self, request, consumer, token): + """Verifies an api call and checks all the parameters.""" + + self._check_version(request) + self._check_signature(request, consumer, token) + parameters = request.get_nonoauth_parameters() + return parameters + + def build_authenticate_header(self, realm=''): + """Optional support for the authenticate header.""" + return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} + + def _check_version(self, request): + """Verify the correct version of the request for this server.""" + version = self._get_version(request) + if version and version != self.version: + raise Error('OAuth version %s not supported.' % str(version)) + + def _get_version(self, request): + """Return the version of the request for this server.""" + try: + version = request.get_parameter('oauth_version') + except: + version = OAUTH_VERSION + + return version + + def _get_signature_method(self, request): + """Figure out the signature with some defaults.""" + try: + signature_method = request.get_parameter('oauth_signature_method') + except: + signature_method = SIGNATURE_METHOD + + try: + # Get the signature method object. + signature_method = self.signature_methods[signature_method] + except: + signature_method_names = ', '.join(self.signature_methods.keys()) + raise Error('Signature method %s not supported try one of the following: %s' % (signature_method, signature_method_names)) + + return signature_method + + def _get_verifier(self, request): + return request.get_parameter('oauth_verifier') + + def _check_signature(self, request, consumer, token): + timestamp, nonce = request._get_timestamp_nonce() + self._check_timestamp(timestamp) + signature_method = self._get_signature_method(request) + + try: + signature = request.get_parameter('oauth_signature') + except: + raise MissingSignature('Missing oauth_signature.') + + # Validate the signature. + valid = signature_method.check(request, consumer, token, signature) + + if not valid: + key, base = signature_method.signing_base(request, consumer, token) + + raise Error('Invalid signature. Expected signature base ' + 'string: %s' % base) + + def _check_timestamp(self, timestamp): + """Verify that timestamp is recentish.""" + timestamp = int(timestamp) + now = int(time.time()) + lapsed = now - timestamp + if lapsed > self.timestamp_threshold: + raise Error('Expired timestamp: given %d and now %s has a ' + 'greater difference than threshold %d' % (timestamp, now, + self.timestamp_threshold)) + + +class SignatureMethod(object): + """A way of signing requests. + + The OAuth protocol lets consumers and service providers pick a way to sign + requests. This interface shows the methods expected by the other `oauth` + modules for signing requests. Subclass it and implement its methods to + provide a new way to sign requests. + """ + + def signing_base(self, request, consumer, token): + """Calculates the string that needs to be signed. + + This method returns a 2-tuple containing the starting key for the + signing and the message to be signed. The latter may be used in error + messages to help clients debug their software. + + """ + raise NotImplementedError + + def sign(self, request, consumer, token): + """Returns the signature for the given request, based on the consumer + and token also provided. + + You should use your implementation of `signing_base()` to build the + message to sign. Otherwise it may be less useful for debugging. + + """ + raise NotImplementedError + + def check(self, request, consumer, token, signature): + """Returns whether the given signature is the correct signature for + the given consumer and token signing the given request.""" + built = self.sign(request, consumer, token) + return built == signature + + +class SignatureMethod_HMAC_SHA1(SignatureMethod): + name = 'HMAC-SHA1' + + def signing_base(self, request, consumer, token): + if not hasattr(request, 'normalized_url') or request.normalized_url is None: + raise ValueError("Base URL for request is not set.") + + sig = ( + escape(request.method), + escape(request.normalized_url), + escape(request.get_normalized_parameters()), + ) + + key = '%s&' % escape(consumer.secret) + if token: + key += escape(token.secret) + raw = '&'.join(sig) + return key, raw + + def sign(self, request, consumer, token): + """Builds the base signature string.""" + key, raw = self.signing_base(request, consumer, token) + + hashed = hmac.new(key, raw, sha) + + # Calculate the digest base 64. + return binascii.b2a_base64(hashed.digest())[:-1] + + +class SignatureMethod_PLAINTEXT(SignatureMethod): + + name = 'PLAINTEXT' + + def signing_base(self, request, consumer, token): + """Concatenates the consumer key and secret with the token's + secret.""" + sig = '%s&' % escape(consumer.secret) + if token: + sig = sig + escape(token.secret) + return sig, sig + + def sign(self, request, consumer, token): + key, raw = self.signing_base(request, consumer, token) + return raw diff --git a/lib/oauth2/_version.py b/lib/oauth2/_version.py new file mode 100644 index 0000000..9d779ea --- /dev/null +++ b/lib/oauth2/_version.py @@ -0,0 +1,18 @@ +# This is the version of this source code. + +manual_verstr = "1.5" + + + +auto_build_num = "211" + + + +verstr = manual_verstr + "." + auto_build_num +try: + from pyutil.version_class import Version as pyutil_Version + __version__ = pyutil_Version(verstr) +except (ImportError, ValueError): + # Maybe there is no pyutil installed. + from distutils.version import LooseVersion as distutils_Version + __version__ = distutils_Version(verstr) diff --git a/lib/simpleauth b/lib/simpleauth new file mode 100644 index 0000000..f620681 --- /dev/null +++ b/lib/simpleauth @@ -0,0 +1 @@ +../../simpleauth \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..7e9a0fe --- /dev/null +++ b/main.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +import sys +from secrets import SESSION_KEY + +from webapp2 import WSGIApplication, Route + +# inject './lib' dir in the path so that we can simply do "import ndb" +# or whatever there's in the app lib dir. +if 'lib' not in sys.path: + sys.path[0:0] = ['lib'] + +# webapp2 config +app_config = { + 'webapp2_extras.sessions': { + 'cookie_name': '_simpleauth_sess', + 'secret_key': SESSION_KEY + }, + 'webapp2_extras.auth': { + 'user_attributes': [] + } +} + +# Map URLs to handlers +routes = [ + Route('/', handler='handlers.RootHandler', name='home'), + Route('/semantic', handler='handlers.Semantic', name='Semantic'), + Route('/add', handler='handlers.ProjectAdd'), + Route('/firm', handler='handlers.firms'), + Route('/delete_firm', handler='handlers.DeleteFirm'), + Route('/delete_project', handler='handlers.DeleteProject'), + Route('/delete_comment', handler='handlers.DeleteComment'), + Route('/delete_member', handler='handlers.DeleteMember'), + Route('/about', handler='handlers.About'), + Route('/invite', handler='handlers.Invite'), + Route('/privacy', handler='handlers.Privacy'), + Route('/google0e3609a4a19b9bdc.html', handler='handlers.VerifyGoogle'), + Route('/features', handler='handlers.Features'), + Route('/browse', handler='handlers.Browse'), + Route('/search', handler='handlers.Search'), + Route('/chrome', handler='handlers.Chrome'), + Route('/editfirm', handler='handlers.EditFirm'), + Route('/addfirm', handler='handlers.firms'), + Route('/add_firm_new', handler='handlers.add_firm'), + Route('/cadd', handler='handlers.CommentAdd'), + Route('/add_member', handler='handlers.AddFirmMember'), + Route('/projects', handler='handlers.ProjectsHandler', name='projects'), + Route('/profile', handler='handlers.ProfileHandler', name='profile'), + + Route('/logout', handler='handlers.AuthHandler:logout', name='logout'), + Route('/', handler='handlers.projects', name='firms'), + Route('/auth/', + handler='handlers.AuthHandler:_simple_auth', name='auth_login'), + Route('/auth//callback', + handler='handlers.AuthHandler:_auth_callback', name='auth_callback') +] + +app = WSGIApplication(routes, config=app_config, debug=True) diff --git a/secrets.py b/secrets.py new file mode 100644 index 0000000..5012be0 --- /dev/null +++ b/secrets.py @@ -0,0 +1,54 @@ +# Copy this file into secrets.py and set keys, secrets and scopes. + +# This is a session secret key used by webapp2 framework. +# Get 'a random and long string' from here: +# http://clsc.net/tools/random-string-generator.php +# or execute this from a python shell: import os; os.urandom(64) +SESSION_KEY = "a very long and secret session key goes here" + +# Google APIs +GOOGLE_APP_ID = 'add id' +GOOGLE_APP_SECRET = 'app secret' + +# Facebook auth apis +FACEBOOK_APP_ID = 'app id' +FACEBOOK_APP_SECRET = 'app secret' + +# Key/secret for both LinkedIn OAuth 1.0a and OAuth 2.0 +# https://www.linkedin.com/secure/developer +LINKEDIN_KEY = 'consumer key' +LINKEDIN_SECRET = 'consumer secret' + +# https://manage.dev.live.com/AddApplication.aspx +# https://manage.dev.live.com/Applications/Index +WL_CLIENT_ID = 'client id' +WL_CLIENT_SECRET = 'client secret' + +# https://dev.twitter.com/apps +TWITTER_CONSUMER_KEY = 'oauth1.0a consumer key' +TWITTER_CONSUMER_SECRET = 'oauth1.0a consumer secret' + +# https://foursquare.com/developers/apps +FOURSQUARE_CLIENT_ID = 'client id' +FOURSQUARE_CLIENT_SECRET = 'client secret' + +# config that summarizes the above +AUTH_CONFIG = { + # OAuth 2.0 providers + 'google' : (GOOGLE_APP_ID, GOOGLE_APP_SECRET, + 'profile email'), + 'linkedin2' : (LINKEDIN_KEY, LINKEDIN_SECRET, + 'r_basicprofile'), + 'facebook' : (FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, + 'user_about_me'), + 'windows_live': (WL_CLIENT_ID, WL_CLIENT_SECRET, + 'wl.signin'), + 'foursquare' : (FOURSQUARE_CLIENT_ID,FOURSQUARE_CLIENT_SECRET, + 'authorization_code'), + + # OAuth 1.0 providers don't have scopes + 'twitter' : (TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET), + 'linkedin' : (LINKEDIN_KEY, LINKEDIN_SECRET), + + # OpenID doesn't need any key/secret +} diff --git a/secrets.py.template b/secrets.py.template new file mode 100644 index 0000000..0992259 --- /dev/null +++ b/secrets.py.template @@ -0,0 +1,54 @@ +# Copy this file into secrets.py and set keys, secrets and scopes. + +# This is a session secret key used by webapp2 framework. +# Get 'a random and long string' from here: +# http://clsc.net/tools/random-string-generator.php +# or execute this from a python shell: import os; os.urandom(64) +SESSION_KEY = "a very long and secret session key goes here" + +# Google APIs +GOOGLE_APP_ID = 'app id' +GOOGLE_APP_SECRET = 'app secret' + +# Facebook auth apis +FACEBOOK_APP_ID = 'app id' +FACEBOOK_APP_SECRET = 'app secret' + +# Key/secret for both LinkedIn OAuth 1.0a and OAuth 2.0 +# https://www.linkedin.com/secure/developer +LINKEDIN_KEY = 'consumer key' +LINKEDIN_SECRET = 'consumer secret' + +# https://manage.dev.live.com/AddApplication.aspx +# https://manage.dev.live.com/Applications/Index +WL_CLIENT_ID = 'client id' +WL_CLIENT_SECRET = 'client secret' + +# https://dev.twitter.com/apps +TWITTER_CONSUMER_KEY = 'oauth1.0a consumer key' +TWITTER_CONSUMER_SECRET = 'oauth1.0a consumer secret' + +# https://foursquare.com/developers/apps +FOURSQUARE_CLIENT_ID = 'client id' +FOURSQUARE_CLIENT_SECRET = 'client secret' + +# config that summarizes the above +AUTH_CONFIG = { + # OAuth 2.0 providers + 'google' : (GOOGLE_APP_ID, GOOGLE_APP_SECRET, + 'https://www.googleapis.com/auth/userinfo.profile'), + 'linkedin2' : (LINKEDIN_KEY, LINKEDIN_SECRET, + 'r_basicprofile'), + 'facebook' : (FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, + 'user_about_me'), + 'windows_live': (WL_CLIENT_ID, WL_CLIENT_SECRET, + 'wl.signin'), + 'foursquare' : (FOURSQUARE_CLIENT_ID,FOURSQUARE_CLIENT_SECRET, + 'authorization_code'), + + # OAuth 1.0 providers don't have scopes + 'twitter' : (TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET), + 'linkedin' : (LINKEDIN_KEY, LINKEDIN_SECRET), + + # OpenID doesn't need any key/secret +} diff --git a/simpleauth/__init__.py b/simpleauth/__init__.py new file mode 100644 index 0000000..a0b8ec8 --- /dev/null +++ b/simpleauth/__init__.py @@ -0,0 +1,13 @@ +""" +A simple auth handler for Google App Engine supporting +OAuth 1.0a, 2.0 and OpenID. +""" + +__version__ = '0.1.4' +__license__ = "MIT" +__author__ = "Alex Vagin (http://alex.cloudware.it)" + +__all__ = [] + +from handler import * +__all__ += handler.__all__ diff --git a/simpleauth/handler.py b/simpleauth/handler.py new file mode 100644 index 0000000..15b080b --- /dev/null +++ b/simpleauth/handler.py @@ -0,0 +1,549 @@ +# -*- coding: utf-8 -*- +import os +import sys +import logging + +from urllib import urlencode +import urlparse + +# for CSRF state tokens +import time +import base64 + +# Get available json parser +try: + # should be the fastest on App Engine py27. + import json +except ImportError: + try: + import simplejson as json + except ImportError: + from django.utils import simplejson as json + # at this point ImportError will be raised + # if none of the above could be imported + +# it's a OAuth 1.0 spec even though the lib is called oauth2 +import oauth2 as oauth1 + +# users module is needed for OpenID authentication. +from google.appengine.api import urlfetch, users +from webapp2_extras import security + +__all__ = ['SimpleAuthHandler', + 'Error', + 'UnknownAuthMethodError', + 'AuthProviderResponseError', + 'InvalidCSRFTokenError', + 'InvalidOAuthRequestToken', + 'InvalidOpenIDUserError'] + + +class Error(Exception): + """Base error class for this module""" + pass + +class UnknownAuthMethodError(Error): + """Raised when there's no method to call for a specific auth type""" + pass + +class AuthProviderResponseError(Error): + """Error coming from a provider""" + pass + +class InvalidCSRFTokenError(Error): + """Currently used only in OAuth 2.0 with CSRF protection enabled""" + pass + +class InvalidOAuthRequestToken(Error): + """OAuth1 request token -related error""" + pass + +class InvalidOpenIDUserError(Error): + """Error during OpenID auth callback""" + pass + + +class SimpleAuthHandler(object): + """A mixin to be used with a real request handler, + e.g. webapp2.RequestHandler. See README for getting started and + a usage example, or look through the code. It really is simple. + + See README for docs on authentication flows. + """ + + PROVIDERS = { + 'google' : ('oauth2', + 'https://accounts.google.com/o/oauth2/auth?{0}', + 'https://accounts.google.com/o/oauth2/token'), + 'windows_live': ('oauth2', + 'https://login.live.com/oauth20_authorize.srf?{0}', + 'https://login.live.com/oauth20_token.srf'), + 'facebook' : ('oauth2', + 'https://www.facebook.com/dialog/oauth?{0}', + 'https://graph.facebook.com/oauth/access_token'), + 'linkedin2' : ('oauth2', + 'https://www.linkedin.com/uas/oauth2/authorization?{0}', + 'https://www.linkedin.com/uas/oauth2/accessToken'), + 'linkedin' : ('oauth1', { + 'request': 'https://api.linkedin.com/uas/oauth/requestToken', + 'auth' : 'https://www.linkedin.com/uas/oauth/authenticate?{0}' + }, 'https://api.linkedin.com/uas/oauth/accessToken'), + 'twitter' : ('oauth1', { + 'request': 'https://api.twitter.com/oauth/request_token', + 'auth' : 'https://api.twitter.com/oauth/authenticate?{0}' + }, 'https://api.twitter.com/oauth/access_token'), + 'foursquare': ('oauth2', + 'https://foursquare.com/oauth2/authenticate?{0}', + 'https://foursquare.com/oauth2/access_token'), + 'openid' : ('openid', None) + } + + + TOKEN_RESPONSE_PARSERS = { + 'google' : '_json_parser', + 'windows_live': '_json_parser', + 'foursquare' : '_json_parser', + 'facebook' : '_query_string_parser', + 'linkedin' : '_query_string_parser', + 'linkedin2' : '_json_parser', + 'twitter' : '_query_string_parser' + } + + # Set this to True in your handler if you want to use + # 'state' param during authorization phase to guard agains + # cross-site-request-forgery + # + # CSRF protection assumes there's self.session method on the handler + # instance. See BaseRequestHandler in example/handlers.py for sample usage. + OAUTH2_CSRF_STATE = False + OAUTH2_CSRF_SESSION_PARAM = 'oauth2_state' + OAUTH2_CSRF_TOKEN_TIMEOUT = 3600 # 1 hour + # This will form the actual state parameter, e.g. token:timestamp + # You don't normally need to override it. + OAUTH2_CSRF_DELIMITER = ':' + + def _simple_auth(self, provider=None): + """Dispatcher of auth init requests, e.g. + GET /auth/PROVIDER + + Calls __init() method, where is + oauth2, oauth1 or openid (defined in PROVIDERS dict). + + May raise one of the exceptions defined at the beginning + of the module. See README for details on error handling. + """ + cfg = self.PROVIDERS.get(provider, (None,)) + meth = self._auth_method(cfg[0], 'init') + # We don't respond directly in here. Specific methods are in charge + # with redirecting user to an auth endpoint + meth(provider, cfg[1]) + + def _auth_callback(self, provider=None): + """Dispatcher of callbacks from auth providers, e.g. + /auth/PROVIDER/callback?params=... + + Calls __callback() method, where is + oauth2, oauth1 or openid (defined in PROVIDERS dict). + + May raise one of the exceptions defined at the beginning + of the module. See README for details on error handling. + """ + cfg = self.PROVIDERS.get(provider, (None,)) + meth = self._auth_method(cfg[0], 'callback') + # Get user profile data and their access token + user_data, auth_info = meth(provider, *cfg[-1:]) + # The rest should be implemented by the actual app + self._on_signin(user_data, auth_info, provider) + + def _auth_method(self, auth_type, step): + """Constructs proper method name and returns a callable. + + Args: + auth_type: string, One of 'oauth2', 'oauth1' or 'openid' + step: string, Phase of the auth flow. Either 'init' or 'callback' + + Raises UnknownAuthMethodError if expected method doesn't exist on the + handler instance processing the request. + """ + method = '_%s_%s' % (auth_type, step) + try: + return getattr(self, method) + except AttributeError: + raise UnknownAuthMethodError(method) + + def _oauth2_init(self, provider, auth_url): + """Initiates OAuth 2.0 web flow""" + key, secret, scope = self._get_consumer_info_for(provider) + callback_url = self._callback_uri_for(provider) + + params = { + 'response_type': 'code', + 'client_id': key, + 'redirect_uri': callback_url, + 'access_type': 'offline', + 'approval_prompt': 'force' + } + + if scope: + params.update(scope=scope) + + if self.OAUTH2_CSRF_STATE: + state = self._generate_csrf_token() + params.update(state=state) + self.session[self.OAUTH2_CSRF_SESSION_PARAM] = state + + target_url = auth_url.format(urlencode(params)) + logging.debug('Redirecting user to %s', target_url) + + self.redirect(target_url) + + def _oauth2_callback(self, provider, access_token_url): + """Step 2 of OAuth 2.0, whenever the user accepts or denies access.""" + error = self.request.get('error') + if error: + raise AuthProviderResponseError(error, provider) + + code = self.request.get('code') + callback_url = self._callback_uri_for(provider) + client_id, client_secret, scope = self._get_consumer_info_for(provider) + + if self.OAUTH2_CSRF_STATE: + _expected = self.session.pop(self.OAUTH2_CSRF_SESSION_PARAM, '') + _actual = self.request.get('state') + # If _expected is '' it won't validate anyway. + if not self._validate_csrf_token(_expected, _actual): + raise InvalidCSRFTokenError( + '[%s] vs [%s]' % (_expected, _actual), provider) + + payload = { + 'code': code, + 'client_id': client_id, + 'client_secret': client_secret, + 'redirect_uri': callback_url, + 'grant_type': 'authorization_code' + } + + resp = urlfetch.fetch( + url=access_token_url, + payload=urlencode(payload), + method=urlfetch.POST, + headers={'Content-Type': 'application/x-www-form-urlencoded'} + ) + + _parser = getattr(self, self.TOKEN_RESPONSE_PARSERS[provider]) + _fetcher = getattr(self, '_get_%s_user_info' % provider) + + auth_info = _parser(resp.content) + user_data = _fetcher(auth_info, key=client_id, secret=client_secret) + return (user_data, auth_info) + + def _oauth1_init(self, provider, auth_urls): + """Initiates OAuth 1.0 dance""" + key, secret = self._get_consumer_info_for(provider) + callback_url = self._callback_uri_for(provider) + token_request_url = auth_urls.get('request', None) + auth_url = auth_urls.get('auth', None) + _parser = getattr(self, self.TOKEN_RESPONSE_PARSERS[provider], None) + + # make a request_token request + client = self._oauth1_client(consumer_key=key, consumer_secret=secret) + resp, content = client.request(auth_urls['request'], "GET") + + if resp.status != 200: + raise AuthProviderResponseError( + '%s (status: %d)' % (content, resp.status), provider) + + # parse token request response + request_token = _parser(content) + if not request_token.get('oauth_token', None): + raise AuthProviderResponseError( + "Couldn't get a request token from %s" % str(request_token), provider) + + target_url = auth_urls['auth'].format(urlencode({ + 'oauth_token': request_token.get('oauth_token', None), + 'oauth_callback': callback_url + })) + + logging.debug('Redirecting user to %s', target_url) + + # save request token for later, the callback + self.session['req_token'] = request_token + self.redirect(target_url) + + def _oauth1_callback(self, provider, access_token_url): + """Third step of OAuth 1.0 dance.""" + request_token = self.session.pop('req_token', None) + if not request_token: + raise InvalidOAuthRequestToken( + "No request token in user session", provider) + + verifier = self.request.get('oauth_verifier') + if not verifier: + raise AuthProviderResponseError( + "No OAuth verifier was provided", provider) + + consumer_key, consumer_secret = self._get_consumer_info_for(provider) + token = oauth1.Token(request_token['oauth_token'], + request_token['oauth_token_secret']) + token.set_verifier(verifier) + client = self._oauth1_client(token, consumer_key, consumer_secret) + resp, content = client.request(access_token_url, "POST") + + _parser = getattr(self, self.TOKEN_RESPONSE_PARSERS[provider]) + _fetcher = getattr(self, '_get_%s_user_info' % provider) + + auth_info = _parser(content) + user_data = _fetcher(auth_info, key=consumer_key, secret=consumer_secret) + return (user_data, auth_info) + + def _openid_init(self, provider='openid', identity=None): + """Initiates OpenID dance using App Engine users module API.""" + identity_url = identity or self.request.get('identity_url') + callback_url = self._callback_uri_for(provider) + + target_url = users.create_login_url( + dest_url=callback_url, federated_identity=identity_url) + logging.debug('Redirecting user to %s', target_url) + self.redirect(target_url) + + def _openid_callback(self, provider='openid', _identity=None): + """Being called back by an OpenID provider + after the user has been authenticated. + """ + user = users.get_current_user() + + if not user or not user.federated_identity(): + raise InvalidOpenIDUserError(user, provider) + + uinfo = { + 'id' : user.federated_identity(), + 'nickname': user.nickname(), + 'email' : user.email() + } + + return (uinfo, {'provider': user.federated_provider()}) + + + # + # callbacks and consumer key/secrets + # + + def _callback_uri_for(self, provider): + """Returns a callback URL for a 2nd step of the auth process. + + Override this with something like: + self.uri_for('auth_callback', provider=provider, _full=True) + """ + return None + + def _get_consumer_info_for(self, provider): + """Returns a (key, secret, desired_scopes) tuple. + + Defaults to None. You should redefine this method and return real values. + + For OAuth 2.0 it should be a 3 elements tuple: + (client_ID, client_secret, scopes) + + OAuth 1.0 doesn't have scope so this should return just a + (consumer_key, consumer_secret) tuple. + + OpenID needs neither scope nor key/secret, so this method is never called + for OpenID authentication. + + See README for more info on scopes and where to get consumer/client + key/secrets. + """ + return (None, None, None) + + # + # user profile/info + # + + def _get_google_user_info(self, auth_info, key=None, secret=None): + """Returns a dict of currenly logging in user. + Google API endpoint: + https://www.googleapis.com/oauth2/v3/userinfo + """ + resp = self._oauth2_request( + 'https://www.googleapis.com/oauth2/v3/userinfo?{0}', + auth_info['access_token'] + ) + data = json.loads(resp) + if 'id' not in data and 'sub' in data: + data['id'] = data['sub'] + return data + + def _get_windows_live_user_info(self, auth_info, key=None, secret=None): + """Windows Live API user profile endpoint. + https://apis.live.net/v5.0/me + + Profile picture: + https://apis.live.net/v5.0/USER_ID/picture + """ + resp = self._oauth2_request('https://apis.live.net/v5.0/me?{0}', + auth_info['access_token']) + uinfo = json.loads(resp) + avurl = 'https://apis.live.net/v5.0/{0}/picture'.format(uinfo['id']) + uinfo.update(avatar_url=avurl) + return uinfo + + def _get_facebook_user_info(self, auth_info, key=None, secret=None): + """Facebook Graph API endpoint. + https://graph.facebook.com/me + """ + resp = self._oauth2_request('https://graph.facebook.com/me?{0}', + auth_info['access_token']) + return json.loads(resp) + + def _get_foursquare_user_info(self, auth_info, key=None, secret=None): + """Returns a dict of currenly logging in user. + foursquare API endpoint: + https://api.foursquare.com/v2/users/self + """ + resp = self._oauth2_request( + 'https://api.foursquare.com/v2/users/self?{0}&v=20130204', + auth_info['access_token'],'oauth_token' + ) + data = json.loads(resp) + if data['meta']['code'] != 200: + logging.error(data['meta']['errorDetail']) + return data['response'].get('user') + + def _get_linkedin_user_info(self, auth_info, key=None, secret=None): + """Returns a dict of currently logging in linkedin user. + + LinkedIn user profile API endpoint: + http://api.linkedin.com/v1/people/~ + or + http://api.linkedin.com/v1/people/~: + where is something like + (id,first-name,last-name,picture-url,public-profile-url,headline) + + LinkedIn OAuth 1.0a is deprecated. Use LinkedIn with OAuth 2.0 + """ + # TODO: remove LinkedIn OAuth 1.0a in the next release. + logging.warn('LinkedIn OAuth 1.0a is deprecated. ' + 'Use LinkedIn with OAuth 2.0: ' + 'https://developer.linkedin.com/documents/authentication') + token = oauth1.Token(key=auth_info['oauth_token'], + secret=auth_info['oauth_token_secret']) + client = self._oauth1_client(token, key, secret) + + fields = 'id,first-name,last-name,picture-url,public-profile-url,headline' + url = 'http://api.linkedin.com/v1/people/~:(%s)' % fields + resp, content = client.request(url) + return self._parse_xml_user_info(content) + + def _get_linkedin2_user_info(self, auth_info, key=None, secret=None): + """Returns a dict of currently logging in linkedin user. + + LinkedIn user profile API endpoint: + http://api.linkedin.com/v1/people/~ + or + http://api.linkedin.com/v1/people/~: + where is something like + (id,first-name,last-name,picture-url,public-profile-url,headline) + """ + fields = 'id,first-name,last-name,picture-url,public-profile-url,headline' + url = 'https://api.linkedin.com/v1/people/~:(%s)?{0}' % fields + resp = self._oauth2_request(url, auth_info['access_token'], + token_param='oauth2_access_token') + return self._parse_xml_user_info(resp) + + def _parse_xml_user_info(self, content): + try: + # lxml is one of the third party libs available on App Engine out of the + # box. See example/app.yaml for more info. + from lxml import etree + except ImportError: + import xml.etree.ElementTree as etree + person = etree.fromstring(content) + uinfo = {} + for e in person: + uinfo.setdefault(e.tag, e.text) + return uinfo + + def _get_twitter_user_info(self, auth_info, key=None, secret=None): + """Returns a dict of twitter user using + https://api.twitter.com/1.1/account/verify_credentials.json + """ + token = oauth1.Token(key=auth_info['oauth_token'], + secret=auth_info['oauth_token_secret']) + client = self._oauth1_client(token, key, secret) + + resp, content = client.request( + 'https://api.twitter.com/1.1/account/verify_credentials.json' + ) + uinfo = json.loads(content) + uinfo.setdefault('link', 'http://twitter.com/%s' % uinfo['screen_name']) + return uinfo + + # + # aux methods + # + + def _oauth1_client(self, token=None, consumer_key=None, + consumer_secret=None): + """Returns OAuth 1.0 client that is capable of signing requests.""" + args = [oauth1.Consumer(key=consumer_key, secret=consumer_secret)] + if token: + args.append(token) + + return oauth1.Client(*args) + + def _oauth2_request(self, url, token, token_param='access_token'): + """Makes an HTTP request with OAuth 2.0 access token using App Engine + URLfetch API. + """ + target_url = url.format(urlencode({token_param:token})) + return urlfetch.fetch(target_url).content + + def _query_string_parser(self, body): + """Parses response body of an access token request query and returns + the result in JSON format. + + Facebook, LinkedIn and Twitter respond with a query string, not JSON. + """ + return dict(urlparse.parse_qsl(body)) + + def _json_parser(self, body): + """Parses body string into JSON dict""" + return json.loads(body) + + def _generate_csrf_token(self, _time=None): + """Creates a new random token that can be safely used as a URL param. + + Token would normally be stored in a user session and passed as 'state' + parameter during OAuth 2.0 authorization step. + """ + now = str(_time or long(time.time())) + secret = security.generate_random_string(30, pool=security.ASCII_PRINTABLE) + token = self.OAUTH2_CSRF_DELIMITER.join([secret, now]) + return base64.urlsafe_b64encode(token) + + def _validate_csrf_token(self, expected, actual): + """Validates expected token against the actual. + + Args: + expected: String, existing token. Normally stored in a user session. + actual: String, token provided via 'state' param. + """ + if expected != actual: + return False + + try: + decoded = base64.urlsafe_b64decode(expected.encode('ascii')) + token_key, token_time = decoded.rsplit(self.OAUTH2_CSRF_DELIMITER, 1) + token_time = long(token_time) + if not token_key: + return False + except (TypeError, ValueError, UnicodeDecodeError): + return False + + now = long(time.time()) + timeout = now - token_time > self.OAUTH2_CSRF_TOKEN_TIMEOUT + + if timeout: + logging.error("CSRF token timeout (issued at %d)", token_time) + + return not timeout diff --git a/static/css/app.css b/static/css/app.css new file mode 100644 index 0000000..5d0e303 --- /dev/null +++ b/static/css/app.css @@ -0,0 +1,746 @@ + +.bubble { +background-color: #444; +border-radius: 3px; +margin-bottom: 12px; +padding: 3px; +} + +.discussion-bubble .discussion-bubble-avatar { +position: relative; +float: left; +border-radius: 3px; +} + +body{ + background: #F0F0F0 url(/img/back.gif) repeat -70% 0; +} + +iframe{ + border: 0px; +} + + +.logo-input { + +float: left; +padding: 30px; +background: #EBEBEB; +border: 1px solid #D8D8D8; +} +#info:hover{ + text-decoration: none; +} + +/*kajndkjasbkdbkas*/ + +.head{ + margin: 0 auto; +padding: 0 10px 0 30px; +} + +.head-img{ + margin: 60px 0 80px 0; + min-height: 90px; +} + +.row0 button { + visibility:hidden; +} + +.link-spanner{ + position:absolute; + width:100%; + height:100%; + top:0; + left: 0; + z-index: 1; + + /* edit: fixes overlap error in IE7/8, + make sure you have an empty gif + background-image: url('empty.gif');*/ +} + + +/*gdgddh*/ + +.span-dead { + font-weight: bold; + color:#9C9C9C; + font-size:9px; + margin-left: 40px; + position: absolute; + padding-top: 9px; +} + +.span-menu { + background:#333 url('/img/alpha-hinder32.png')no-repeat 6px 6px; + height:45px; +} + +/*ajbskdabk*/ + +.notify{ + height:75px; + width:300px; + font-size:11px; + padding:15px; +} + +.span-alive{ + font-weight: bold; + color:#FFF; + font-size:14px; + margin-left: 40px; +} + +.row0:hover button { + visibility:visible; +} + +.head h2 { +text-align: left; +color: #999; +font-weight: normal; +font-size: 18px; +margin-top: 0px; +} + +/*ansdjando*/ + + +.head h1, .boldh1 { +color: #FFF; +text-align: left; +font-weight: bold; +line-height: 1.2em; +font-size: 27px; +margin-bottom: 5px; +margin-top: 25px; +} + +html, body { + margin: 0; + padding: 0; + border: 0; +} + +.addwork { + float:right; + margin-bottom: 10px; + border-radius:0; + color: #FFF; + background-color: #000; + border-color: #000; +} + +.hothead{ + color: #1D1D1D; + margin: 0; + font-weight: bold; + font-family: 'Merriweather Sans', sans-serif; + letter-spacing: 1px; + border-bottom: 3px solid rgba(0, 0, 0, 0); + font-size:28px; + line-height: initial; +} +.flat{ + border-radius:0; +} + +/*iajbdkasjb*/ + +.signin{ + color:white; + text-shadow: 0 -1px #000; + background-color:#D32D18; + border-color:#B10101; + border-radius:0; + display: block; + width: 100%; + margin-bottom: 0; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid; + padding: 10px 16px; + font-size: 18px; +} + +.signin:hover { + color:white; + text-shadow: 0 -1px #000; + background-color:#B11602; + border-color:#9C0B0B; +} + + +.signin:active, .signin:visited, .signin:link { + color:white; + text-shadow: 0 -1px #000; + background-color:#E74B37; + border-color:#9C0B0B; + 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); +} + +.count{ + font-size:9px; + position: absolute; + vertical-align:super; + z-index:1; + margin-left: 11px; + margin-top: -5px; +} + + +.cover{ + height:200px; + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + border: 1px solid #888; +} + +/*aiubsdkajbsdk*/ + +.firm-img{ + position: absolute; + margin-top:140px; + border:2px solid #333; +} + +@media (min-width: 700px) { +.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%; +} +} + +.dam { + min-height: 100%; /* min. height for modern browser */ + height:100vh; + background: #000 url('/img/silk_edited.jpg') repeat; + overflow: hidden !important; /* FF scroll-bar */ + display:block; +} + +.back{ + -webkit-filter: blur(5px); + z-index:0; + position:absolute; + width:100%; + height:100%; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +/*kjabskajdnkl */ + +.discussion-bubble textarea { + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 0; + min-height: 60px; + padding: 6px; + width: 100%; + resize: vertical; + margin-bottom: 0px; + } + +.protitle{ + + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 0; + padding: 6px; + width: 100%; + margin-bottom: 3px; +} + +.row0 { + position: relative; + margin-left: 60px; + background: #DADADA; + margin: 5px 0 0; + margin-top: 15px; + padding: 20px; + color: #000; +} + +.commentbox{ + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + margin-bottom:0px; +} + +.commentbox img{ + position: absolute; + margin-top: 10px; +} + +.cmt {overflow: hidden; + resize: none; + line-height: 1.28; + font-size: 11px; + padding:3px; + width: 100%; + margin-bottom: 0px; + margin-top: 13px; + border: 1px solid #EEE; +} + +.smal { + color:#000; +} +.navbar-inverse { + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1); +} + +.navbar { +position: relative; +min-height: 50px; +margin-bottom: -5px; +border: 1px solid rgba(0, 0, 0, 0); +} + +/*akjsbdksajbdk*/ + +.navbar-inverse .brand, .navbar-inverse .nav>li>a{ + color:#BBB; + text-shadow:none; +} + +/*iausda*/ + + +.navbar-inverse .nav>li>a:hover{ + background:#313131; + color:#FFF; + text-shadow:none; +} + +.container{ + max-width: 940px; +} + +.search { + box-shadow: none; + padding:6px; + border: 1px solid #999; + background: #FFF; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} + +.discussion-bubble .discussion-bubble-content:before { +content: ""; +display: block; +height: 0; +width: 0; +border: 10px solid #EEE; +border-width: 10px 10px 10px 0; +border-color: rgba(238, 238, 238, 0) #EEE rgba(238, 238, 238, 0) rgba(238, 238, 238, 0); +position: absolute; +left: -10px; +top: 15px; +} +.discussion-bubble .discussion-bubble-content { +position: relative; +margin-left: 60px; +} +.discussion-bubble-inner { +min-height: 60px; +border: 1px solid #CACACA; +background-color: #FFF; +} +/* Custom container */ +.container-narrow { +margin: 0 auto; +max-width: 700px; +} +.container-narrow > hr { +margin: 30px 0; +} + +/* Main marketing message and sign up button */ +.jumbotron { +margin: 60px 0; +text-align: center; +} +.jumbotron h1 { +font-size: 5.9vw; +line-height: 1; +} +.jumbotron h2 { + font-size: 3.0vh; +} +.jumbotron p { + font-size: 2vmin; +} + +.jumbotron .btn { +font-size: 21px; +padding: 14px 24px; +} + +/* Supporting marketing content */ +.marketing { +margin: 60px 0; +} +.marketing p + h4 { +margin-top: 28px; +} + +.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus { +color: #D8D8D8; +} +.navbar-brand{ + color:#FFF; +} +.navbar-brand:hover { + color:#CECECE; +} + +.hero-dx { + background-size: cover; + padding: 15px; + width:200px; + -khtml-opacity:.50; + -moz-opacity:.50; + -ms-filter:"alpha(opacity=50)"; + filter:alpha(opacity=50); + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5); +} +/*kasdashgbdkagbisd*/ + +.banner { + width:100%; + border:2px solid #BBB; + border-top:none; +} + +.banner:hover { + border:2px solid #333; + border-top:none; +} + + +#hero { +position: relative; +text-align: center; +} + +/*kajsbdkjabdk*/ + +#hero.hero-tall .hero-wrap-outer { +min-height: 200px; +background-position: center center; +background: #000 url('/img/silk_edited.jpg') repeat; +overflow: hidden !important; +-moz-box-shadow: inset 0 0 30px #000000; +-webkit-box-shadow: inset 0 0 30px #000000; +box-shadow: inset 0 0 30px #000000; +} + +.hero-fade .hero-wrap-outer { +max-width: 1600px; +position: relative; +width: auto; +} + +#hero .hero-wrap-inner { +display: table-cell; +margin: 0 auto; +width: 940px; +vertical-align: middle; +position: relative; +z-index: 400; +} + +#hero.hero-tall .hero-wrap-inner { +height: 200px; +} + +#hero.hero-tall .hero-wrap-inner { +height: 300px; +overflow: visible; +} + +#hero h1#page-title { +color: #FFF; +font-size: 52px; +font-weight: normal; +line-height: 1; +max-width: 100%; +margin-bottom: 0; +text-shadow: 0 1px 2px #666; +} + +.hero-fade#hero #tagline { +text-align: center; +} + +#hero #tagline { +color: #9C9C9C; +font-size: 30px; +font-weight: lighter; +line-height: 32px; +margin-top: 5px; +margin-bottom: 0; +} + +#hero #tagline { +font-size: 16px; +} + +/*iausdhkasbdk*/ + +#hero p#en-title { +color: #FFF; +font-size: 16px; +font-weight: lighter; +margin-top: 10px; +} + +@media screen and (min-width: 12px) and (max-width: 475px) { + #hero #tagline { + font-size: 11px; + } + + #hero h1#page-title { + font-size: 20px; + } + +} + +.listul { +list-style-type: none; +padding: 40px; +} + +/*gfcgfch*/ + +.listul li { + margin-bottom:20px; +font-weight: bold; +} + +.listimg { + width:48px; + height:auto; + margin-right:10px; +} + +.ext-btn { + color:white; +} + +.ext { + max-width: 300px; + height: auto; +-webkit-filter: drop-shadow(6px 6px 12px #BBB); +filter: url(#drop-shadow); +-ms-filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=12, OffY=12, Color='#444')"; +filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=12, OffY=12, Color='#444')"; +} + +.ext-btn:hover { + background:#181818; + text-decoration: none; + color:#FFF; +} + +.down-button { + position: relative; + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + -o-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + padding: 30px; + background: #E4C000; + width: 300px; +} + +.down-button:hover { + background:#1A1A1A; + color:white; +} + +.chrome:hover { + text-decoration: none; + background:#E4C000; +} + +.span-menu-chrome { + background: #FFDA17 url('/img/chrome32.png')no-repeat 6px 6px; + height: 45px; +} + +.span-menu-chrome:hover { + background-color:#000; +} \ No newline at end of file diff --git a/static/css/bootstrap-theme.css b/static/css/bootstrap-theme.css new file mode 100644 index 0000000..ad11735 --- /dev/null +++ b/static/css/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/static/css/bootstrap-theme.min.css b/static/css/bootstrap-theme.min.css new file mode 100644 index 0000000..cad36b4 --- /dev/null +++ b/static/css/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/static/css/bootstrap.css b/static/css/bootstrap.css new file mode 100644 index 0000000..bbda4ee --- /dev/null +++ b/static/css/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/static/css/bootstrap.min.css b/static/css/bootstrap.min.css new file mode 100644 index 0000000..a553c4f --- /dev/null +++ b/static/css/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/static/css/bootstrapHOT.css b/static/css/bootstrapHOT.css new file mode 100644 index 0000000..a7970f5 --- /dev/null +++ b/static/css/bootstrapHOT.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: 100%; +} + +.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/static/css/carousel.css b/static/css/carousel.css new file mode 100644 index 0000000..a728bd8 --- /dev/null +++ b/static/css/carousel.css @@ -0,0 +1,148 @@ +/* GLOBAL STYLES +-------------------------------------------------- */ +/* Padding below the footer and lighter body text */ + +body { + padding-bottom: 40px; + color: #5a5a5a; +} + + + +/* CUSTOMIZE THE NAVBAR +-------------------------------------------------- */ + +/* Special class on .container surrounding .navbar, used for positioning it into place. */ +.navbar-wrapper { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 20; +} + +/* Flip around the padding for proper display in narrow viewports */ +.navbar-wrapper .container { + padding-left: 0; + padding-right: 0; +} +.navbar-wrapper .navbar { + padding-left: 15px; + padding-right: 15px; +} + + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ + +/* Carousel base class */ +.carousel { + height: 500px; + margin-bottom: 60px; +} +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + z-index: 10; +} + +/* Declare heights because of positioning of img element */ +.carousel .item { + height: 500px; + background-color: #777; +} +.carousel-inner > .item > img { + position: absolute; + top: 0; + left: 0; + min-width: 100%; + height: 500px; +} + + + +/* MARKETING CONTENT +-------------------------------------------------- */ + +/* Pad the edges of the mobile views a bit */ +.marketing { + padding-left: 15px; + padding-right: 15px; +} + +/* Center align the text within the three columns below the carousel */ +.marketing .col-lg-4 { + text-align: center; + margin-bottom: 20px; +} +.marketing h2 { + font-weight: normal; +} +.marketing .col-lg-4 p { + margin-left: 10px; + margin-right: 10px; +} + + +/* Featurettes +------------------------- */ + +.featurette-divider { + margin: 80px 0; /* Space out the Bootstrap
more */ +} + +/* Thin out the marketing headings */ +.featurette-heading { + font-weight: 300; + line-height: 1; + letter-spacing: -1px; +} + + + +/* RESPONSIVE CSS +-------------------------------------------------- */ + +@media (min-width: 768px) { + + /* Remove the edge padding needed for mobile */ + .marketing { + padding-left: 0; + padding-right: 0; + } + + /* Navbar positioning foo */ + .navbar-wrapper { + margin-top: 20px; + } + .navbar-wrapper .container { + padding-left: 15px; + padding-right: 15px; + } + .navbar-wrapper .navbar { + padding-left: 0; + padding-right: 0; + } + + /* The navbar becomes detached from the top, so we round the corners */ + .navbar-wrapper .navbar { + border-radius: 4px; + } + + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 20px; + font-size: 21px; + line-height: 1.4; + } + + .featurette-heading { + font-size: 50px; + } + +} + +@media (min-width: 992px) { + .featurette-heading { + margin-top: 120px; + } +} diff --git a/static/css/datetimepicker.css b/static/css/datetimepicker.css new file mode 100644 index 0000000..ed45378 --- /dev/null +++ b/static/css/datetimepicker.css @@ -0,0 +1,9 @@ +/*! + * Datepicker for Bootstrap v3 + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + .bootstrap-datetimepicker-widget{top:0;left:0;z-index:9999;width:250px;padding:4px;margin-top:1px;border-radius:4px}.bootstrap-datetimepicker-widget .btn{padding:6px}.bootstrap-datetimepicker-widget:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.bootstrap-datetimepicker-widget:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid white;border-left:6px solid transparent;content:''}.bootstrap-datetimepicker-widget.pull-right:before{right:6px;left:auto}.bootstrap-datetimepicker-widget.pull-right:after{right:7px;left:auto}.bootstrap-datetimepicker-widget>ul{margin:0;list-style-type:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:100%;font-size:1.2em;font-weight:bold}.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator{width:4px;padding:0;margin:0}.bootstrap-datetimepicker-widget .datepicker>div{display:none}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget td,.bootstrap-datetimepicker-widget th{width:20px;height:20px;text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget td.day:hover,.bootstrap-datetimepicker-widget td.hour:hover,.bootstrap-datetimepicker-widget td.minute:hover,.bootstrap-datetimepicker-widget td.second:hover{cursor:pointer;background:#eee}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#999}.bootstrap-datetimepicker-widget td.active,.bootstrap-datetimepicker-widget td.active:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#428bca}.bootstrap-datetimepicker-widget td.disabled,.bootstrap-datetimepicker-widget td.disabled:hover{color:#999;cursor:not-allowed;background:0}.bootstrap-datetimepicker-widget td span{display:block;float:left;width:47px;height:54px;margin:2px;line-height:54px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget td span:hover{background:#eee}.bootstrap-datetimepicker-widget td span.active{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#428bca}.bootstrap-datetimepicker-widget td span.old{color:#999}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{color:#999;cursor:not-allowed;background:0}.bootstrap-datetimepicker-widget th.switch{width:145px}.bootstrap-datetimepicker-widget th.next,.bootstrap-datetimepicker-widget th.prev{font-size:21px}.bootstrap-datetimepicker-widget th.disabled,.bootstrap-datetimepicker-widget th.disabled:hover{color:#999;cursor:not-allowed;background:0}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.input-group.date .input-group-addon span{display:block;width:16px;height:16px;cursor:pointer}.bootstrap-datetimepicker-widget.left-oriented:before{right:6px;left:auto}.bootstrap-datetimepicker-widget.left-oriented:after{right:7px;left:auto}.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody>tr>td{padding:0!important} \ No newline at end of file diff --git a/static/css/datetimepicker.less b/static/css/datetimepicker.less new file mode 100644 index 0000000..044a1da --- /dev/null +++ b/static/css/datetimepicker.less @@ -0,0 +1,258 @@ +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +.datepicker { + padding: 4px; + .border-radius(4px); + &-inline { + width: 220px; + } + direction: ltr; + &&-rtl { + direction: rtl; + table tr td span { + float: right; + } + } + &-dropdown { + top: 0; + left: 0; + &:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-top: 0; + border-bottom-color: rgba(0,0,0,.2); + position: absolute; + } + &:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @white; + border-top: 0; + position: absolute; + } + &.datepicker-orient-left:before { left: 6px; } + &.datepicker-orient-left:after { left: 7px; } + &.datepicker-orient-right:before { right: 6px; } + &.datepicker-orient-right:after { right: 7px; } + &.datepicker-orient-top:before { top: -7px; } + &.datepicker-orient-top:after { top: -6px; } + &.datepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; + } + &.datepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid @white; + } + } + >div { + display: none; + } + &.days div.datepicker-days { + display: block; + } + &.months div.datepicker-months { + display: block; + } + &.years div.datepicker-years { + display: block; + } + table{ + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + td, + th{ + text-align: center; + width: 20px; + height: 20px; + .border-radius(4px); + + border: none; + } + // Inline display inside a table presents some problems with + // border and background colors. + .table-striped & table tr { + td, th { + background-color:transparent; + } + } + table tr td { + &.day:hover { + background: @grayLighter; + cursor: pointer; + } + &.old, + &.new { + color: @grayLight; + } + &.disabled, + &.disabled:hover { + background: none; + color: @grayLight; + cursor: default; + } + &.today, + &.today:hover, + &.today.disabled, + &.today.disabled:hover { + @todayBackground: lighten(@orange, 30%); + .buttonBackground(@todayBackground, spin(@todayBackground, 20)); + color: #000; + } + &.today:hover:hover { // Thank bootstrap 2.0 for this selector... + // TODO: Bump min BS to 2.1, use @textColor in buttonBackground above + color: #000; + } + &.today.active:hover { + color: #fff; + } + &.range, + &.range:hover, + &.range.disabled, + &.range.disabled:hover { + background:@grayLighter; + .border-radius(0); + } + &.range.today, + &.range.today:hover, + &.range.today.disabled, + &.range.today.disabled:hover { + @todayBackground: mix(@orange, @grayLighter, 50%); + .buttonBackground(@todayBackground, spin(@todayBackground, 20)); + .border-radius(0); + } + &.selected, + &.selected:hover, + &.selected.disabled, + &.selected.disabled:hover { + .buttonBackground(lighten(@grayLight, 10), darken(@grayLight, 10)); + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } + &.active, + &.active:hover, + &.active.disabled, + &.active.disabled:hover { + .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20)); + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } + span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + .border-radius(4px); + &:hover { + background: @grayLighter; + } + &.disabled, + &.disabled:hover { + background:none; + color: @grayLight; + cursor: default; + } + &.active, + &.active:hover, + &.active.disabled, + &.active.disabled:hover { + .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20)); + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } + &.old, + &.new { + color: @grayLight; + } + } + } + + th.datepicker-switch { + width: 145px; + } + + thead tr:first-child th, + tfoot tr th { + cursor: pointer; + &:hover{ + background: @grayLighter; + } + } + /*.dow { + border-top: 1px solid #ddd !important; + }*/ + + // Basic styling for calendar-week cells + .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; + } + thead tr:first-child th.cw { + cursor: default; + background-color: transparent; + } +} +.input-append, +.input-prepend { + &.date { + .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; + } + } +} +.input-daterange { + input { + text-align:center; + } + input:first-child { + .border-radius(3px 0 0 3px); + } + input:last-child { + .border-radius(0 3px 3px 0); + } + .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: @baseLineHeight; + padding: 4px 5px; + font-weight: normal; + line-height: @baseLineHeight; + text-align: center; + text-shadow: 0 1px 0 @white; + vertical-align: middle; + background-color: @grayLighter; + border: 1px solid #ccc; + margin-left:-5px; + margin-right:-5px; + } +} diff --git a/static/css/jquery.countdown.css b/static/css/jquery.countdown.css new file mode 100644 index 0000000..07644c2 --- /dev/null +++ b/static/css/jquery.countdown.css @@ -0,0 +1,50 @@ +/* jQuery Countdown styles 1.6.3. */ +.hasCountdown { + font-size:30px; +} +.countdown_rtl { + direction: rtl; +} +.countdown_holding span { + color: #888; +} +.countdown_row { + clear: both; + width: 100%; + padding: 0px 2px; + text-align: center; +} +.countdown_show1 .countdown_section { + width: 98%; +} +.countdown_show2 .countdown_section { + width: 48%; +} +.countdown_show3 .countdown_section { + width: 32.5%; +} +.countdown_show4 .countdown_section { + width: 24.5%; +} +.countdown_show5 .countdown_section { + width: 19.5%; +} +.countdown_show6 .countdown_section { + width: 16.25%; +} +.countdown_show7 .countdown_section { + width: 14%; +} +.countdown_section { + display: block; + float: left; + font-size: 75%; + text-align: center; +} +.countdown_amount { + font-size: 200%; +} +.countdown_descr { + display: block; + width: 100%; +} diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9b72566e6eb024eb13b831ab9c76aecc4db4af34 GIT binary patch literal 318 zcmZQzU<5(|0RbS%!l1#(z#zuJz@P!d0zj+)#2|4HXaJKC0wf0mzkmN@`10isgQDV2 zhX4QnGyM7UkKyOfzYLO++Ze>fx5AX+rCD6SzyS|!0#pH%PX{Rk($2=lCLlV*#l;as ZD?|A}*%lDr#l;z{4#>bl<8=%Pk^tMZEX4o- literal 0 HcmV?d00001 diff --git a/static/fonts/glyphicons-halflings-regular.eot b/static/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..87eaa434234e2a984c261e0450a2f4ad837aa7b4 GIT binary patch literal 14079 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 literal 0 HcmV?d00001 diff --git a/static/fonts/glyphicons-halflings-regular.svg b/static/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..5fee068 --- /dev/null +++ b/static/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/static/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/static/fonts/glyphicons-halflings-regular.woff b/static/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..2cc3e4852a5a42e6aadd6284e067b66e14a57bc7 GIT binary patch literal 16448 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 literal 0 HcmV?d00001 diff --git a/static/img/Hinder-alpha64.png b/static/img/Hinder-alpha64.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc004ed60e0c25da53e6748e21ad247b4703465 GIT binary patch literal 3217 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 literal 0 HcmV?d00001 diff --git a/static/img/Hinder-red.png b/static/img/Hinder-red.png new file mode 100644 index 0000000000000000000000000000000000000000..0649a578280e45adcc00ffe31b09b62cfca29056 GIT binary patch literal 6059 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 literal 0 HcmV?d00001 diff --git a/static/img/Hinder.png b/static/img/Hinder.png new file mode 100644 index 0000000000000000000000000000000000000000..25e6b29e176e9ae203f9f7b7be34c5e42390b829 GIT binary patch literal 7623 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 literal 0 HcmV?d00001 diff --git a/static/img/Hinder2.png b/static/img/Hinder2.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c6b61eef0604648e0cafd1ab5b76ad0adec4f4 GIT binary patch literal 6167 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 literal 0 HcmV?d00001 diff --git a/static/img/Hinder250.png b/static/img/Hinder250.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba9504fcaf540c2d37d7f826f9ad5d8fa971803 GIT binary patch literal 1289 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 BL_`1p literal 0 HcmV?d00001 diff --git a/static/img/about/1366432047_flat-icons-inspired-google-flat-design-preview-3.png b/static/img/about/1366432047_flat-icons-inspired-google-flat-design-preview-3.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed6a59cbf3a5cbbaa9fd6e175e23d50a0a362f2 GIT binary patch literal 19933 zcmb@tbyQnT)HhleTH0cPQk>vHf;&Y51a}Bpf_rg?rv?ovlHgvXxCZyO5L_DEDeh3* z;ik_k-@R+y_xtNTD=X(rvS-hpIeYf({hK`q4K)Qq0!o5gw{8(a73H*U-MSNof9`zr z0RQdc|NSTa_R<4l;Gyke?cr_iW_3&2(gkis2X!*HvC^_KxAb-GvJ$^_>n?+xj)8}P zs*0$EixZdmUm7kSr?>dpw{D3``Mfo^aIo^AgIn3yIZH6?HncF%*;z_3=nJUwsJ@l8 zvb9t6bF^&c&JTFGq8@i>HSK176bq=z`PR|7Pp#{-48yA24no z^S9h!E}p+#`Y%FN)&D!Glhc1wyL)I^{U3S%e;K>$_`bE`*0OSU@pQAmzc_2gzfHXr zm36Z+_i%C3adC0{uTj*nb@6a|-C#x+;$Et7VZ0X|d&h{_8s;Vf|+11h-v5!`f7Z49pJn0uAM0}C zh2j4DV*g(+`oDg{YtP@u|5jUk;lCB%${DZiZg{me_CyZfx}~HEm6O)-ncQl6=m8w_ zUA@rN6{<&pA1D0N_0D|%t?-h@7bPGhjFb&US^=EGoNS9!|1=B=a^Nu7JesnRnz-oq z8xtgJB#42)(8aG&3|Qf(#3CYh_&z*+%KPATmWAg?LyhRy2F-F@2Ic9EPgwZv`oenW znfep`xvP!1uLbP4|DBjo$j=P_KHPc%`H#Eiy?^iji^W@+kN#yz_t&i8um8p3YtsMd zh8)qqoc|Y#xBhcn{$aiIFYEtn@gKKEX}kpAf39wA*N{8S=u6y)6HxqfpMc>%y8N14 z4ln2%*9?G9;GHnie?C3=|NQawC(*|`X$f6jo`S^zCqh0xwe}tyF@;yl?jdAanx_I2VAU?Y&M@1iYi!{%?;a5=aS92cw zIyr@1^0uD>9(uUQfLF9#>|qwU@7({)@Sa#qgdIWbP62n#Zm>p$5}BvpexxD2A1MVK z#T9z{`gk_%bGK;x+NQdQzL}~mSxIcRC4*HKsmo+ceJa|<8klS%I5rL(&w3P`r$qjl z%uzRzZ{zu(>v#qdYdupoP_pl;hbD}0#AD!Lu1Y%Jou{vN&-`1zU^XuBHHTXtLy5?x}W>GoEDK={Ney{kZ zcJow~HVc#9T%kDeSyS5ABG%x;JtMCG>Z<;F35k;f78-g;kWxg%7;E`0v3A$NCvVAh z01%r^OpGLbFsyP&ZIVa{7YE|KOWXwX+34If16WF3(nMo(Ib=w+?|ZIQt=c;`o<-34 zdooBVPe{{xvmyn$Xg@r&a%D4Wr|!<&sdnsKNO795<*BG%ehr8Zdudf`aU$LGJVo?c zkI>)jMW%3k#6bs=3%M!e%x&cR^soxq5t%wo-?4OeD}AiZ(pRYP;gn0`p5N?GTJs*< zFb7A2*Kq-<5g@#cC{vgNQ3SkZdl5mD?7SS8;ob0jx$>5pKL7pG^`>%zt=Gny$82F3F|Hnc zjHq@i_qpzD?UT#cwf0w~LmSCn*JTi5U!2B2R~J4JuhVe-kCRhR!s5bxgM&Xa;IyUu z-3bdDw%@%4dD4q;go$T%M(BbeuHbHl-2PQU_JaCt+?3am?DN&*QWavO1fc2X2izkf zM2wyA+g7OgVi?IAOzo$xg{bIbjH9V%FzM|8kiG zLv`T?B#yhh-k?=l@=c&Vq+KnEPR&caU-N~m&3#_ut(1#B{z|uMX-M|Au1i(!m%jK& z6<_6~d*B2eY~Au+cghdT9Qy;Z;PB%je!RWveOSJG3No@At#)gk+N!oZ+tjS)OrN`v zEv;d9FoMmwSN||>4+@G1w3fP2h#j~oikjx0MJ0DKOqGt0W#K-zNgl{P=aALReVRyN zy-hx+2dpc`ey`>@$q8=$6|@z^tUQP8u#)muP5qs0px~O^$pjsiW9yCBX7h44)Rgb)F=@yU=t`Vv z*}M|jmgth=aP5oTG`RAAE@m?u?GyQZ?iDny0~PZcPyIj%`ZJVBV>$Oe!a6L92Ox*v)O?HhVdhFmF`_{jB?T|PSfe z>cMb8#MLQF#K)Fl{rON+Rk^1&?}rM2z6m-bRPYO5@{5s}9}1GKmKzQ@TVWH*Ek5w^ zM8~*vaQkFQ@gai50g^M_?_?EQsS~^{T2l*TKh&d=K>V z3&%Bs>8Tz&sds&3Rr*UC+drY#E^T!Y+r*jPBHC{0+F#B48~UAFj<*`iD57%t?D5Ns zZ;Z%v)L9UOaowqWpiMk;wcNzt<<|^=q+ORi-_gk2$>?E8a7$T2NZQl@wMo}fZnz0Q zzk!L${{G4Ws}kBPV4}t9*o~Pp;(e!CWYZ)`LjS5*;C|D?)hc!Frau)qZ+O~1@&vs` zaQH7O1+a+aBu~u8)b{ST%lDxk70PerB$o)a492z{R-^TAO$K2zQAJMWM?Mqj=_LgP-IIFu zEvMC|K~~pj&+|6R19|44^{Z|KCGysJ6BsNNX|~ z1QtU`HFYEP1q&yfEOHUWeeOjfR-;*t^YkQV z^*1l(V&+R<;duIU z30D@-E?-YQL)Jv`rXwJ5$F(;`jwjehXjq4%{996W$>C5#s`N(s7tDbf3^@pnau9j@ zi8@x=viuYUfuy-o?Q?B@oNBz4u<>?JtkZH2;`K+eGYE{@YPuGs3=fc`4Br440Eri% znsaL13pLR$b?7F90Vdke$#4>MDgY*CB%T)TXSC;Y z`N@F4$jM=+*$&frTzC%ABU#ysPhoVfxYKc>eC4GZ%k5yKB5(RARHm4XzK`nsH--Z7 z@%eec^x&{PGICq1=$^?VDG z@FHaSBgH;buNN?_Xj7N*l7Z!C7ORdKla@qb$&sX{k$oZ1DLfIAH}=}zs**IE|^0ZV9w zRG>I+K&3|P_)aGrWeJYFrO^f1JJJuzZ&G`hb7<*G8;$j1b`Hl-rEV(~TkWxp{&-pA#Fh^3$dp;f~%4PsEQ<{qeP<4mTOXeCY-P_Ta)0n(4Y3AOl&T^c+$*9517qn)7 z!Ry<4mA7HPrK>8%^^_mKE3)u2Thz>pgQA63sruB4^rMO9Yk7^x6V{3?JC4-07i5Sk zQ^v}19k=w6Ax?eZ>A2{LGqP;Ux(KW2JnoIP~USO-#e}C$*GF9=S|@ zK9cPGd^<`S${aF|xS=>}sREN{`ZEXA+ed5O&&Io}K7it`ACT*Z!M!3DraR$0q_({P zvXKbTzKE!ORRHfygUXQ=m^8(i-)|=m0otdZnVg2o6kCEx2?RH~)1b@d7?!q7oMDBS z`H>~KwGM8H$gAd?bEL!6RoNMIWOn3$WH=boysxA#yf35^9Q=_ z5j_)S=gT@~Xj>{bTam3KaI!DsMn+JI#-g?Iv{)s@K2muiWcTJ*9Y%-IKm(-mm&e=d z8BwGCqZdH?-^e*xT^eZ?42gQ*+#?lBuu$j=k+1_sAqCf?jaZNMK_0BkP@Z!X_C6bO znFR9TJwMkiF^pn_6&R+x9|ajH2PK)z8|l#?>%MPwQd{DZI7%jSo6>~+I$aYJ!9_DF zW)!d`*@nrea&#D=fYjZt`n3{qQx`RF!w-n{g`4G@5M~)f3_|(kRmmKOR#xPyICEQh z-Ru+CJ*$oSl@(UO8juY}_~Xwm`q(UrG{+Ahy)saoF{zpV8EjkNyE`d8G73wuPC@Wa z8@41A?V*ZA)DeY;ka$xcH_~LIr2HI8?H9}F#H=+PH#+1F3X3-S-d7W-XoMjc{CevPq-XYmL_I>o z<9U=cC%BQZbL}E8WNyxJT3tXS4?z76+Zf`tBH_UxiS(qw!hcwy=A@lg6O^{5O|>}& zH8e8HKP&OMEi1xP-vO<=GfklPmg~xHpJ%&~#&eq~Z3-2QgnU&9QON7o|Mb(9HR#j% z7jvm1Q7Hu->_k22!pW27swv!kLQRDIz>#DcFLYZcT#3Rx3%R0y`$43sQ5y=2{W&od zS~X_CucHI2d<8r7zc*PvEW0|9Q2>Na*Ayg49e?U|Bd!BsnnHkpM?sRo+llcjDRZ5g zpa7B871n1@pAM?Lc@X=ntY#=3aT|s0{tT+OF)sg%!p49^8wg%ox`N$CjvXqQ(hE&; zF}6aOPAgZZV#PFq+IIp>i1ie?XunQ(&gUl&=@1YHE!QCOLSx^ch2@^;;h7m_?IFHl z3?>oIyRnz@WH&fi#YhXYRum~j&Zuz3!+^Ad^@gGqNX>lNP+1fyi5RDu&mhVkI2$7p z86HsLmD-&-)5#F5MH7#meTl6?VU3~ug`vj8k){NL%RKu}kemXEA|Gw~D{(F~jWusJ z=W1Ogwq+t1+(^T@8h5Wsj{TOz#&WE1eJIF}hL72koLd`>pV~I8(FOWwgAv7oH5O^5 z-st@HRv@dnR#vne%3SNGY<5T}8;!7ffw(3S3NnUVDBe|FV!6J|of~`pK?d+w@xr1Z zjL_l2(5SZk?@W7_XAwV@7D@`qO++^OvO3*KeRYV&Ykgc3L16-~x+*-Rpvqq8@Aq7v z$sE^=d_-}+uR-K_NjMzvPVW4n!*ZuH_+FZ1YJ@si;f^vB9IBnskm5n%T1HAt?H|Qu z)_q@6zDRd)z6WdxU2F5rtl_M^@wW03P=**e{&+K`Lp-#sp)kI_-v3E;>gec*VZGF~A&mVpU4r#8jD%P&&l7IP81ng`|;6 z--8f{Npsx+>%J|+ie^gBda&{mi+s+MF+K9Vj_T~niRMVbR08LyXq3k+tu1){Zm*Qg)yk6!oGe(jClmR#}or$OH`rZ{$(-a#)R7nP*a5Gy+MEW zv)AE5F!Sk3E`Gp!!HL5;Zfy5n2^M9|G}Lf!@CtTo79B6b2I?Gd6d4ru{@gU{c_%Gs zb!U1{_;*hEaaW{?GGqmnea9r&`Zy$lW>vKgih(CruevNswa?{82~b$f3hSikqpcG& zTF8z9_;k?;?D3O~0qK{}m1!1hXW{YQkYT722*|8g{G7eyw@?I5-aof{&)M4iU}K*% zqioIdP~yyTvcV{zT?FxR)jflW=x8`0kBTK-XfHddT)BxKJgg88qaH8!B|9rv8Jm_R zj=qv~BRvo^BTTc?bcB%xaxP8%5k?#(Z{Jr9qemt=ji78=Er6U-inx+sW&vIuFlMd9 zMuPlQdh}LmnRb7gpMrn5oR1pR_t;DyKp3G=0^&l3+K%-y845|r+tVr93(M@;epyQB zy)MbQJ6dJ>e5A}Obxz^Jz97HURV1~*Om$H!eEFm>?jsCZX{$q~%Nhoh0URY-cTBAo zXSi}9TCXN|+jDK!sw~L!taKeRojZt!YK7Tqm^k!sOUn;LukDXtRO3Xy=sPv4X5n7^ zn7=44n{+5V3PWeB!m2X+mGz5D)K*y^*u2mChbtPQK2)_d^M?nKW^bdV4}vWn6*}|j z?w<06c?HBTA?9>Gg6el+15uDp_{%zb1vq7>MW`7gCV^*C6;qob|1Gw)snW{vp9KD0h*1^6@tt7M<3&^&K(LE={dRoUTkI3abunKD?KH>T}~Fl|dQ^G97T zZL=F(Sm!WBu9sZ6r%mPa$92tmao#r*s}m9}$#JFGRt|!q_KaUHBo^JfS^Ivjk?7?M zh8$rRimFxS5glyVVZ(ex8M8f_lXW>E)eH)n@j4Okm5MZFMx@;JXe7FF<0=QE%LUWv zRM0gFj%<5(M7n)po~c)F0O*OzI(@P&z$5V(2IA|4f#hnmf?!3lt(C>ARJw%Ev>m(8 z`+H)l`?Bv=ceX?OOKI*R`#>tX90y!NlXG8^XKSyU_-6N zba$V9k(N3jm&=SL{U@Y4Ks$K#A}G^E-e}BiiM5}ePXXL;8ODlyAA0#Jjn3}uwh=~G z5M~*kZFBSx`bSVJdoz8a8eS5MMN1_vkDkna+kC{B}azKoQHygxk3X@5hH0OLr_6ZcwQ>= zr}tgAi7@25PL6tp3^)G};S5Cq4Iw0aujpe#?)FxIHiHmWBjfQb}mGXnK6yuwJwr!hCK1)7 zc@T5gUCxyI)A#V!U-%KuXBSNDg=J?xmlexcvi>uOlu}-06D{|`ckJE{=Myeue&<3+ zx#_;wNwS%#XjEHo;jiHVV?bfOzum}hNDuFOU_C#4ktb=@#aOsR-N4zNu_tY0R_q5 zqueh#|N5hzg9Wn&3l#H>Gq!Q}*INym4=7m5Je@rW78X+=!aS0efeE9rohqN>%o=%Y zYA5o_F&v1nBzi=CN_(Elkxf5}o0tcb<)+BsqVvuKrsLEF7l>~oD`w8W9|dU|cxwF2 z7Q@=H$S*ngj=)Bb97%_i(X9}?A7QT-%B~0~6qIN`&d2KFm!@)grh({}uK~!%1DZ?7 zN5xs0hd?oe?_owO9WPWZf~W^~(1)k|s) zOI!)ajZ3wkM^neHYd<{Cktr6ES#T7IraM#JG=_9Bq>I`tvaoW@Wc6YUMyaqm?+hiH zceQ&ktGT?r_jyj6_O^fb&zj{;zgj$cwMt5{DwGh=&I>UQio7uTjCUg=8xO)btZ=#Q z`Bg3cYQau1@vIfWm7!J}$Tn8Gjw-1UC5Ec=#>#I>gOvYxn8HU@pI4wD%{v=UsDZ^T zVGC%MRG~Jey(PsMX2xX>T23Nk8E2>CALLY5U30bk%EWwDnq_BsI*V*>1P2K^2TsBl zfzCGzYwl1Ose3cyP4B(*22xAceU?bu?fV0oy<{yiOCZ1anW&>SvI^07G*+n-wiNB= zA2%bnKkgt{qd%R3#VoPzW8>b5HN7(Q^vjK@I3eF4nDDu>r_rZBs2wb;$Nb=_+%$OA zr1G=!h+jB`&FeBq;$>z9pLvosI?q51z^Nj3u(@*d}Ct zFCLaR#_Hhi$oIof>;*F{kt4)@T+9|@Jp0vH1%IA(jU^<4}?*-Zfx&Av%1EWNNj>Cb$(`;shbniclqF)XoS4Pc)Wo3v7zY$;(YCr@&hmHVo z1r+zEILLq-Ga}8<$TKg~O0$4z0AsX2ZfYKBG2uqqm$q{YhF{!Q*vG9fYmXsMnZVKc z2GjMo)k-Xs8oHP+R$@gqN7@ToquK~^nOED%@H5AXsQ0Hk=@~rt*+e|#UAEPjSb?mX zxd)skGU;jN?U!v6qm=|mh*bu?USFY$5!V8Mg^@`Il_LG&SM;ciWm zsDk~Z#f1LL5&8!0)i%pS(}49C)RJ!RX##%J)E`xU=$}l#qn^shIiZY8^jc(ly8`x% zpq8uANeCdEmI$v{&^UhLO_rkGrd%b?j6B#7=2O6htBj5IiG223?VNm?KU7LnA=_8n zb+WO{WE~_tuCZFb|Jo8K+WDQS+}ch#bF(jtTH4a}dV3qb+!jfT1LOv_z$`Uw8@u() zbU&M~A$qhABh>@rn=i2~88p|OIxO4jw;7RILtY05Ki&Mvn8W-ISPi@2%l!SZOh}55 z5^-kAI10VgUWG%aL%+PPMO>3FQ-!G@=A<}UZn3e=LqgNeuggt8?y)7VcJ9v@H&ik6 z%`V&XzkVY9gy+rBB>Y^_?;(cOCq8P;rF=$znGxytXMRoU;@~E<`Rr&{TbPQg4n%Mr z>o^x5s|qmTi)64Q!mP2My|q)|nJ)Xu!wqIa7`FbL^^i?XkMjYho}&`(*gTGI+bk%w z4wXLKC+4dbm>vF-R{H+Wn2?sLd*QVP8=ix~zMv;wdqy4c7Mimfv_HQ_ZYnC5ele}T zHljbvUI$XDGTJ(tf)X*P&H*&Zh8! zx(Iz=yV@WozXk$y+hm+4Lis^fW0APqURYv&x-8U)8VrTPvNfk}8ME_-r(%PI?3{ zoRBHlFe1pcFc`;U?rDx6dg7|H)EqyI?da>5`UV0ncw@3P9-H7bpE}oQxe4SF;4Ng7 za2Op7=~vT+_I~jyvVhlC>s1Qmd)ZSbqB~z2wnSKJ%G`GiY{=5`l+`vQ=FDQ@LScR0 zyub6IX+1bJmnGl%fD65mM293(VV44X)D_cVI(NO&Ow`XTQPGqU%||Pn>!^+$#+ErV z9T=%c$n-%hBsV5t?QD$uvY|TL5+@v{D`I~2iQhBgJ&trHdR!I1V=rF-z58|L>8pca z8>Izf@NkPSldisx>V{zrHCe`;KO+KKePN#U^VO5lo)%MvAF@!~H$AhrxH#b5z?Dwv-)`rR}XiE(^HtViFYSb$jC* zhZ|{eNCpQKpxxTma@L31`rs%mm1$nZ;}bl;0&AQPxtl}g0)7Tb7e9^@JpAEKYH}rE zR5MiYE{GUC;6D1wO>YDS?u}`i4w_n9A-k^FAX@*~F2S{JI~^};==IUj)s?@^FvonY z^9^|ys&jggql0zYJFP&-v1UxL?hOT{a6Ckz^;f1@&FK@7rxLVop;-?0_Ecl^tzN48 ziE;Yi&;J0#YZAc?Jd!9g4&@A z;{(AY=c05*MBR~+5I3sV#dQAW8K>RXh*4^?7qPE%RecYiJ4ZnTh%Zc}$(NiQh(a=yIgw1{*ps!wW4r~j5b-Ii9E18h<*9UQ{6DlWlVJS95!W_y*7>ef&rhq1z z=YhYgPkxPEANP3lI0*r(H6Our7_6eP`*>97J)f^yA#67DNukv8$_$lo8MpaD$N?Q? zZ?ZwPFCaX(AExq$3Zlk(R%BBnb>f$2{qo3hQm&Ys%UYmK&liyx+}WqR^we=iChI8S zO#`tQ{D)nd`Ac`e-K*5N3sMT2uOS-$v~ARf`3v&D)l(>T13(|=hNkz0wP=VS)h4Qa z?*{IB)8r81J-8T~H2h-37}4xazstwE+Xs4L3?ON+<$s=Ov+p>|>udQ%68+_clzf9z0JJJ43vuqPI zV&duaV^XyfZuk2PVVLap*B0b`sg9M$Rg{ism)uLct;^MV?kGn-p za2$A$^xbp5xquO=ds!~_XLNY; zCbU3;VFF{n^@-&>|0ed${Sd)2vhs1WAirraB!vi;5)X>wz)-y00y4!Vs2Ifn3tG-a z!|vy@1^7ljgRikB(9g!3RxrLz}U)bTS!QpmOmfrtD&i^ zDv^NzVt>CL#p>a~-W^IaC0I2pS3ODl>505kMRVKoP?iiU%CU_~)_B>Ku{!N<&*<1?t;MzqsGwjU3>(L~DCO#4tvTy`pS znwb>0&_ZIcr@hz|r&u+B@+?Q=pJ{bs{ZMOYFB!muznjR|0P~sSO^qVFpkO_)BmY~W zo&6$Z!RA_pM82Tez*@T}e`PkA#MGTQtW1>xet}{l{ranIt%$W`A|-FGP%tWY`%%|? z)Vz15z|Bp6&Yqq)Pg$PZl~XgQpy1RCOFr`>3met5t_Wmk2| zDoFHO(V|M6`7eS95RGt|&}!+q*aqGx^)Vu!(57YOd0OZDlA62#=K;v<_pnZcwENW= zM#W46D}9y6#tmu?iJXYbiuh`$j5oTR@9qPUzSD_D1)cCWU&XF=Cu28>iJ~nnv#qaU zJ?a*}%%3b#zb)J3A2IPQE&(xM3`8&qE|y?P*OcrPBacmadIn??1yg7ut>3BX{@GQ| zKnNGa5*&1v=bN}p1oM!Y2!FFD2O#gB`Ss*gT2?~0wufxnKgtVnleJ!%h9-!EmS-XN z3E1wWy39yp1{@OOSuYCK7V1sNyi;CWRnsHye_11C$FN2|i%N0LN@(#^_Oe+m%t^B1 z%xP$6Sr?3;qsOcj{HtuD>g6wvGzw+;$f1Oh6y1q4_V%Q(>3Uy@z%yieE{o(@6f;84 zGjALPVG>u_d)?rfNCw6jxM?nlgyoB4Wp*Cnz0TTSiqK4jN*vTmk%5IlSMy|)!)*g8 zx(W^s)HjyaRM-8KW|Nl{%Z&VSJ@GLhct{IvpS~ zW#aINmp5Y?aw^L3u##APjo!^f?Om<(_=!0`d=N0d`f|heTW2PF2P;3X7*^q^o3MWO zM6i?*=Mc2V8=X@03cvmq+Dq+@UPWRN%`Rox zSAxGbjt|@^2~4dN1WU$dwa>_{2t=I@9(0#Uur8ArGhC5F5gjB%1W<;#B-Qf+P#Ez@ zb>*OkS?D~?{f>})@Y$u!;x4Q?1@flBeo6PaE|bb$##mRyx!0nFc3VS+a%=?!Z9w9} zUfGXorTB_9(Ytx$o$z-hqOL+7z7rL@67FuKJxmC_<$+yWL3A7G-9kaDRQ<#b-?vAj znLEh%uGiqWZzD9!16reZ@W919gXozY;6uEq&E{E{E)b|qbC~v9Yo>k#(?obwJ#m`$ z859?tH4tEI1S*g>J<^~F{B*_rCdiRp1fM&@DSC*;Rx6RfK)!N&XJ&>2S+!9N$TMTl zde<~8He>>bg~ZAQ$3QcW%I6ilgxM377;K8HU*3OZ-z6o&Cw8yX^rxyPzg|O;?FB;* z_`J<&EIxbs!MSLThQ%uRD4Un1W@57nsta-0V!=1W?|B$&St~PaY1Vi4G_pBC!rICD zE7HDZN7>~G3UX3@@12Q?}p$ixA=6}em%J8K`h@~6kR!`DLh&l@m+LYuvI85L6b z3&$XJIe^J5WJUM+@?MSNV-Ew`WCA3JeTbY*(5v%Db&3KY^*5W#Cvdg%5JxkCFiA<1 zS7~$NEA@|SYgeBVY;bD`UgX(E!YZqq)_~t%tD#L?9C7VWu#iT2Ficg zI+N4LeB1vWjLDgAIzGmL^9i}D$y$np=($g6UUPF|*A zBSCjAFa`;onM&n5x%nI2H*)Wngru%xiD5Car0eI^P+E=i&dl6PvUWoN`C#Ik%UY=` zbGSt!hf3B%SZ@ekrdhv5eVCgb=u##H3jcRjN;9C>GRii#YQKz>D5@CKs!tzgU>1w7 zoaYr6z#dIIvDopq&#_sk!_uVc9ZOXdizn70V4|ptpc1Y*Y#q5ae7ciUNtB7^UD!izR9vgJZJ?>sn&hSZ%5?EtVk5etWhR#TWY zucujRPhJB^oa$aT&E)>tAd@B*I?w82htJZja3Bn`=#==IiVzzi9aX^(`}_jhYeL)!JFlv?4=%+uS?gWIO~ZM5+rIQT+UKv2{IotZ2e9*kntJD@@mukW`@V4E){2exjOt z!Vw=IltuvL0T%H=N^sq~_-zgSkDxTEIceJIXm_GEmi%#@X%?$g2?4LRqfA>> zT2LesK07FHc^V{XqU7Qt6}YY(tcAW3^*UTqMt;L}_i2JY0S!$Yzd%0uLK#@Jw9}m* zF;)@Yk8PW+9%4eZ-ByIpVhl<;;Xc3NqON9#KAlsT*@^n`V9(-YyUS_K)>7_JSyJka zjDpxrPwq-QoCyKwh8+f^2WW93!u9J60d+tx&vI)=b-SKK<%NE+;6vYB*@4Upb``6E ziCogNv#*97y+BuMW&`wCTme#!q%Z3dj3D-W zorIQ3Rp)w%t)=vnfTomd1mX{%c<<5hc-S{!w7}$v>4w@(iQgGJF|cc|zF^c52ORp6 z_(kFFM&F@Ee?ta2pF*0iqS4m0gGN+ChHfH5su_#bWm(grSx7_1)D$-}u)HlBh`Jh| zKdivVT&uxniymnVmN?km*154UAq^#H!2FKCd1w2jHFX6K_SDfC*2G&vgKcr}s(J#Jy8&oE&~uL~vF;Jz$+p@7Ff& z#3(*n6~mw**C$%?#OhR1R}9f@H$R!mYc7UQGdFdf1T+NZ01XAW>M@G=DFstms$egI zx38X!O9nZ|DG@&ufCf;ZZBH0tizZQnU2vZ_f^X;d^rLOo3mR**o4k^-X9XI07e!W# zPhlYM7vJPCowmxB3wWgM2Sdc+)!*a&`4CL@|6$y@OAR zCG^5C-_>q!lRmypfgdV<59+~+ly^!luC93@f^sBTDVqQIVZku<@!2 zQ6K(@2V6W;EtK2Gt=`YT6Avl0u8Q)O<@jN`UlN?qRgW>_ zv*!(s^{ouF!!fyzi8F!cm6pFuj#Id$o{$*#W(vxybAn;{3x8hbM$DyGIB_9z)zY%| z_Ij8^m~+)q1K0Z-XfK}_W~169#-{T)y*A!UKx6Czb;m2sL3sPWwTD`Wtz=p_TIEDA zUImgq>nFVue)`PgAx$72t$znx;YJ?V`>(!)eR<{?%`l)ArxDA?<|R3mKT>BQN+Lp> zcyKQP2CJ-j{uu;_(}~Dj3`!AVUL zS0CppJbQaSTo=FFxcROWqzB~()LmMF=@CTedjh_B;gKdOP8M_v-vDMQ1#%;CAW;M; zgo&2gcQ>?3v@N(_pIDafotEN4FJq*5zl-sD2(Vur&_fK`U9*Z*GnpvTxJR?B;^1-((F=uzofQ3XI-?-(|oK*1R-TwKBswf!bizRgm(DDw4oH;)*aRGr9*U(? z=4PXP@@<&G(@&wG7|_bA*m8o+wLm?>`>b#G3B&GJY$}x(zAO?yh3Aj72BnOfBGYXh|meCSq6$w{(@CD=+gp(HaI6N3AFDEaA!o~ z5Atl@1h@faSP`_a!Kki(e3*2w z-EZ8q1e>T^*Fzs;taEP^cvO7SB*HI<}gV=XOJv=U2ahN2P1L2Iq@+vN{&?E2(1V}GFS{P}g?&M5o z<`O+_(<0TL(6?Yyv8ZHZCqNIbsdXAvQQbB^P=sdRYb(UfoLu@Vn(lMMN)SM^n(t!+ zW)sJ9G|OEn3s6*5qhd2>8a%r!UH6zT@)6sX*q?z3yN~q9Ppe6xX*g4}n+}P%Km!pg zaFY|W-(FX%oQTlatG*zVzoaX4i&|}V?yFIJ7$XuJ(}wvB$4}r;sZ;A~!qGdi5D6$K z4pd!Z;o=mfuV7E7Hp2XE3iaHk#{sW3D+nHEv#V3mSrSm1Qb5>CI$H*Pj z>lna5)xbCi=|R4Z|H%%&9Z&CW2V1*1QeK}T5zfQng0r2Klbr6o7V|$A=QJ72=G041 zYyp}EY(_NDoDSg6lmUU@WQ$#z!SiPyj@RB>L660U z0{eqZe_57KkZ`D3qDCsTpbLNA&;rZvVLo@l*BOy?$-PvN+$%pOIRFVdFKJYy;bKz{ z-*ONQ_W4XHr&=1KNrMsTp%Ozx#+*lU_1F}68 zJ=DqYmKhmK0o$TfS^*MRHuO)-nAJexFo>pR%vaVh0i-5ipvvTHMh4Mhn9*yPCHiz{ z+gsw#eZ@=(p9qH4zOnQkQHJ8dr=N6DnT~dQa)j>0e4El4Oy$2ZwhV~Oq$rulul6LN z2kCqRVGknFMJ?=DnC73{uD7mV3J}FyrCO_s3l@GS8up)|plUFuDLHsi(U5z8@<_xL?_(UeaW1jb19Nm)MGHIno9R?k{CHndl9uH?cd>WFFCah&1)19zpBlHNI{Bz(x3MedoPW=_4Ju+Fcc}k04+EZ z6=>=fXc-u8Etz$1KZOIw@VW`g8aT5TW2XrPK z+R)LGrB=G3hGz_ux0Ig*v?gin1 ziHT~IsBqq~Dlj4alVg+6iYqH#n{C;AYkT;eI2uD>z>BIMR^{T3-#k=%HDg8x*KCdg zT7+=7W+=$=9C>N4m4(6eHxdIsqqJr}eXfha+^$ zM_mgaRUPB<8ok}<-I5l>qeo{SW1VkEbm!qpd6b0=6s&R*q4|#U8F8Ta7E-bhnxChX zPxpD?Q?$;9Y&a_O8+AGFK7QOW*G!}}p-1~liRB1l*!|$uAk9Q+MAKE;p&IE({07fV z+t9Pi!+mVCT7F2>$F>Y}?(l-kgoknVJ&TW*eG-$i$~4V3Ml##+bH#Ii+ACyqC0V{x zy7p+Vs)H_q1n1d^cyuBz=wJSDgjGiUVxLL4qN!!I=}+CDS|0(284iOGncGG_ z>EbYUgcrA#?xqJt%b=SX%O0t@HSD{Kh++g?6*Re(Zg zJ2bGqWQ;PYHNgx2mR_iT<3eewD=rRHPVU%bnxva&%C#s{bh@TzX(gHqFQCWb$c|7-RYp!S3pG99FPZt-A6@m)z&JDgk^@ur%!1>47qmD;CmM z_12c33ihxslTv?o^`ov1;uX=*(9oB2ou7u$<0)NNao8?U{kV=PJF1&kvt2Tj^E!{W0o5sC|>}`1+rhf2OGvVA{6J z5W&cIwvgyB3i-Al9>oZP_w+)+DPYo7xw`ed;WopTO}fL3U~yfR+JbHNrK8BXvXDyt zE7V&W(R1zv3w>)OD6wPcxi62&ei?t@%RQP-Da;#yyQxYYhMe%JzByGu?Rp2o%841a z?7RF)m+;%-&s+Iizvds< zH;C(RT&hxL&9jWqUzPXmFa;JC=(&*o7(>smHP*1zj7{=tij{g*O=J|T_Vi~(0vjg@ zU3Y(!x#ARoS$L!4GdZ(YA}rR^Cgb+}u3^w*x+h^xvu{!wQ8&7buN0YBFN8VO`o!su zyC%2njS%!M8Su)wi=s3Wqc6=vdTzDlYnRr7Qg8gCL)fi#rinx`(-oB0JR&~H0wEb1 zzRm`JY%@@u+-ObCP{)$!J$kO?{9Ie^#99(}AUo2!Bs>EgB=PuFsa=+zjvgcj*~n$a zxi`jU83g!$S5?i%=3#Vup>At)HZEs=Y^Feu`nzZuG+K>B{APa~KU#Iwc;!ZRV1g&i zt@bq^J(6(Waf{2jkf4oAbLIBki3MQ~IXi)6qn zf!OCZw$(-Jha>3SEgQ2f;^XYKL3`&^-L!T?-|wG0odQY}YXH^x;3R7xXLxExZ>NMJ zvtOuZCLBJ`j(+kaWxPTha|BBX4ma^Z>+kb3-}govRw-uO7qcj0Ay=;|dOc^864T#0 zkm+*f*e*!Bw3L)~lez=8FI&`>I9DP1CQ@K_urexWl!jFy*Zlnj#+^Z@y2uey?+Xw% z#8@e4t-;P(F}SeRv31$5=(JJT9804`kajo|5*pL59J#48iT0m9?=bP`_O4$foCk%V zJMX=gVK6h@o$|64T>|6!XFXWJ=9S9IGnQIXQed-&2A4bC&amm2Wpy7w+(CO8-b9|q zOC|q=96PC>n4UBFAGQ~0G)ka4KTnDpN{id1Sb} sf5Zs-uYf{-U;bxQrc0Kh=q)>>if001}$1^@s6wfF^v00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000ZzNklxL2o8}}CMc9SsAVaU8roQqH4#%z zztEb>X0psbq#xs0<3uGkS!NR@HI@}1DoCP8!YZ|8@^cpu5LjS$+4uCv`@L}Xa_+h3 zzAx|0op<-%bALVOdA`s0`95d21VjNFz%9W0fy2PvKs&G_V{BAlf5^SF_Sv5(U|-hx zu6sGhCp+St2ObY>01WUtFwXH{AvccdFeU-VaE!|`u5YaK9-*@fa3#;ooiU%AE? zq>eG9CfGG$KJUu&OqY=(3Wmc-;6L)NR^S0(9q?OVSixB;8lFB6c6}mGX!?xin>go# z$BzAzfM;c>USPirW`H+<^8y|^3J8O&Sq(8_5s%F?&MD`Ya$?!&`y5~eaDg>u0Pr$! zP{)&F4N3xC1%Vik2bch_N*mZ@yo)b9jpsSMnZ_P86xgJT8Q=)87r0f&zhoV&0Na4C z6qrGuClQbt2{A){>r{tGOS(IViO@N66~M#kC;JO=Fc+{1Xn z(|6405hmqfuCcEBr_V8Y0H1!S;lLg87z6YOv-SaNf%||tK(h>Gd!PY!0iOlV2*^IQ zax!Ybwy1!YMnF{d%+wHIF>pO_mX7TLw#!iafQ>*KFcJ7Y@Ns2KfaAacUF!~D7Vre{ zoDxHi$6Jbivard8cUhioGQ9u9wIYY>B`01kP)}I;D23i2U<6P~UGy&CDA1&=d7;KF zmRGd_{eh*xnZQqgWg@ttMl%`Xd|`*j2vNql&fm+{;MfWsgi+4`qh$bq7VCyx@{o=4 zxE|miGBCog*}}Uvjh_NclMycl<^x|8SIf#?KFl&XlqAFxqm0OkvNB=%0prx52fPUU3%EiUb)&rGEx0n>r03ZbdM4GPg=zyvE9>;PT@ zz6*R1c+Gl<4&YY>!zYwBgeHMBmB{nrKB3rOFL@hqJMb6n9{_wthD?C{df-oD>j~Cv zRmQtdAZ~xI0cO@I;e?JMfC_}vvG}M%mzD9RDU7ZI)&O$_(32$BOqUVSIo}7KR_G2D zmLcPga`3FvK^IINSma6&Cd9+-6K++gtrHdyFIwmqOCWT2x{?!kP^oPCIORC zuxCC)?6}D5!Xo>#3wT7c`7-b*aH-gOx2V7b2R@jD;N&=0Chpg6G2{@0r zT<^V>x?n5<`kIVmES3*&GjP9!OUboLRzjEpe64``5VFOAdU{apmlvAl3=Z-Fuv6ZW zP>fNk7kh+3tHkifDhm!xl|WdTv{RY3(W5m*1xl3UQwii-E=FzwG_gJ(8zgO)?T~tq z;M5_NF%{8*g(8>D;$I78u-?@5E7pyNO1dfP{w6iUCZK>04PO&jJDxCB*33R5J!+G@ zsig6bTYCIF@u^=+&pPV3@nL=MQCJVoNa4oudx#;T8t{z_PYb3faq0rIH0Zcqc&~on z0W1;zv;tpOh^29(A$86EI&Vx3ZL%WzJO$4S9v^#T)lI;w+B#M5C2GPwBCbD^SD}nJ z)>1DTfEj9^4HOkQ$12W^qv*{lJwiMzIo8j5hI&Hu6by?~gY6R%C3Fe!2W$UJBCT&z zSPc<2H38pJotT7Qiws+q@!NoNb9!?orx-S#{$SF1s^m03^0Y4}43s@uj?oJ?%X>bm zP+BMr{#hvr2Sh2x$=e=~7WRb7pplYd8Wn=WYUDbhI#tD!`SLVx;V?+~ z>`=(9lX7rWa!Z11ck2935!Q39o?%4>!os^bBCm%7OA`~&D-2OTA*|K!HC&!-u}})> zovB&hqp-S5CCxmmhP1P*eV;P$9f^lzF!H!S!CZ9JOR861kOc5^$VDx>kE)KwjcIo72I*#oJKBB(h7Rknm zh-idg>6d>2xFn;1jyy~~q}dud^eLYZ7;4NY5$2+d`pJIaH-NXR&Kql8Y&7r+)m1c` zfwv0d8YB`PNTu?A%Am7FXxqtO?NX#H3iXr_;6G(tDTjw7-#Z2J$E2Vpr0*;#4s#WP ztHjH00=^&&8z`?!9;Cl?`-#9`3zjW;WAZ%8MGH)ZQX09&geaB(7par8$|{4>3hMJz zJJv~de2i)b`UdM^&!)P9aEGJxsb?#q;Zw^sO9i?ryMW8&Wy8h2D)Kg?e&G**2j#Jo zML;L%SkinwrqI1s##&xScc&K8TI60)9x!Hk7z&-o6=H`}?i|+7zqGFRhzxiD_^LwB zzF$cgc)z9JN2ht?bdN6uXwPZMxk(|ph3a~SvW(FLJgM-yShDi~b%NRzp2w_`WT#}H zIWlSo`JLfffITV*_HjtxFx2|}fxlB-fAwgJs4f-g58~vKO1r1{fz(5_$lyyA)&JiJOlQkDD%9vNESz6V<@0OiGTz zM-Q^>Q3`mdtQvByjIvi{P_p2yN5{(Ae_Zm-Wx)T0T|2B^V@0_2unP2Hq9A!COO(T( zeA&-6D=@O8J?2<-XbqbaI9OR;BETP;Ze_-u@|GqY+aRMv`ng*k zxkjKLQC)j_xe~*+0_ucOa+xH^=+5D3xmcLxF(K~l`Wv73DSWO}Ptm9(>fq$MiFQ>3 zU3!7-stD$1JbZ(2ZavjiKC^KzGKo{(zJQZ|@G#BciABB5i&=5N&#oAsM0MR(mke}N ziJ+pbTcEzzI^L?9)8{ecWiTTea<}-LYw6S{ES-Oer=Q8M_G!ofk>)+!sPF*#GS_JN%7Fy^dP!2MJ&Uait*yJmHk6xhKz zJg61;v^;CNzp2+!8bi!V~>PL{#@ECa|B z__Kb8@RfEZrIOB-kv3>nCn_1ldWq56H%KqqpzL_uYIrou%SI`?PUY0aDOlxKkFHbB zafVLOp9MIUex}3FS5StE{ZT;Ic(7>2G=ckWRTE8mo{_-EIJx-E7wTQ9eq~4}I?2pU z3d?0uOWNrB9|ii@B+4mBLz)43e>9Y*U<{EboiC3WZedTt{5!?|w<*jnmFFeYqfw39 vE~@J)T$9=+ELx!ujdZ`w3e8;Q<^KZ!THt)FEMfaU00000NkvXXu0mjf;Z*VZ literal 0 HcmV?d00001 diff --git a/static/img/about/gapp.png b/static/img/about/gapp.png new file mode 100644 index 0000000000000000000000000000000000000000..57ffd330706de6f18c5737b8801ee28fd3d73534 GIT binary patch literal 7520 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 N002ovPDHLkV1lJyekK3_ literal 0 HcmV?d00001 diff --git a/static/img/about/gdatastore.png b/static/img/about/gdatastore.png new file mode 100644 index 0000000000000000000000000000000000000000..6010e2a2362089c8c9afe518cf32b4514093bac3 GIT binary patch literal 6564 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 literal 0 HcmV?d00001 diff --git a/static/img/about/gplus.png b/static/img/about/gplus.png new file mode 100644 index 0000000000000000000000000000000000000000..74a6082685865bd5ce23bbfd45b0ec892fdfad7e GIT binary patch literal 1953 zcmV;S2VVGzP)v{h-7D!mXw z+9n94X`ofqLP**lA(*OC883xn z228+n+k*NHsq;h2taOIyP9~Wm-ZxmaV&;s;fQ{OK_(*70c`9@1GenY+Ts8(^2th79 z^A=)MRANK2JAf69kd4e(WFoP7fY$`v(F+${H9ikxfbjXL`1sBEmaf8_HJgeXRxuf( zT><)@+lJM1id@Xt@G$C$c4;xP2z}@QUHcFKq8SoKeNB}gc8068%F!jF?9GK;rCkss9d(1nYXOP zTi-w-WTIhCJ@p-Ee^-eYfFvKX_^ZMMaNT$ljazo$8uLHS?0uT>>&>_gfj~o82^s#~ z9%}B|#MMm?;Y6$}ppRb0!U)^vwRC44`FC69c~6eT6}3&@7$?4S=T_o>I)F!uA47n? z7XJNS{fra71&g@qzVG1@LNCG8VqhcfHFBbr(Klbi5adGNOR8sv|9Kb*6IQiyGylzZ zQWTQQdfr4ccE%SD9mEs@B>B+0`@t`^QK_8~W4+AnV+eE3xi!Q~?_ZJ0?G@_cW> z+u=z>7(CR%>~-rW-m7a+Y4|4Mtw(Jwkg;TbtyyZ*(jskHIH9gP8!+--D;1_eAqZfw zCEGVXZ}JmQlgPe31(IZ z;8$5ho;gLKxCMmXIzsvUMPwr_U2vF63(SeWdo`m)7$AV;=|Dk=W$3-P^VWl^>lWko ze*_yYcC?X-gmEGgjXE1puKYHk{I(dZXgH^FQi22w1ZRGRgA=jLgdmmxRH+_l=*4G>N`KM+yyNI1sezzQx3)3(^7ley-z_r)hH2zI-3fO+ z^$nEWu#zIsDboQR8$wD7LQ0B4%IqMPm~$+;Z=RS%o337KS%7?5q$z#;))ZQ z|6L3ms93g&ay1J`E{!E&#@Z&b>Dl$TZsev4i3XD#G;IDcJzMT4b^0Xva4)%07p!sO zpMRS4e~)7bkdtVIB>B40{08Xm^qQyk^1=3pNvI%o!lQz#V#K#LFj;67YE9hcpG3ZUcBd&hk=D0AtV;?kAaJl&@K zy;r$J-MX(Z^HaA_3~k^4I_|TbS(8`scnzcA>?*Tkz-tI-J5K-q{zZ=^bzr*ul~gt^ zCf*mM@{?pD^M*|iKe@5Y6=5(j`;$m}L1B>RK9&6wCm%%)z|jD9st1u7i+MWQjd%Z*>q1ozZKY<#a>hUxuZt&I ziFXD_oDMLm{!b}4a@)OvaqU9pKk`#5)f}4xy%}@1@1R66{QwtLtw4yWD`cr~h`Y7f*5R zq<-E|Mz^W=qn+)5bXvOomQxi2=YR5T7Wh1q`utQDk1Chi$h;jdP|>)EZ2YPj3>|DP zc^WnBxwa&@Z6m^+?T+UFl2Vb%jHOYA;%ORv?$Q_$i_otMo`2ge2e&Pq5&f|gfHVNB zBb*FIQx>Hn@z&7^+n)}HC>5g_Np~a_04x(o?F?S{!yK=B!{Tbs^(u8TSu#@6d+hI2 zFJFlb=l*(#Skfwic#Douvg4)x&~6}Q0!bkJNY}tU8?UOmtHLnmN-!joW8RU!;X54! zAlBVQ_e+xxU;$P%V+D^~jJ?s7NCkmW;r5offpVbAUOvDC1k(!%WPk(^0!DzSXa literal 0 HcmV?d00001 diff --git a/static/img/about/gtt.jpg b/static/img/about/gtt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bdf8f5cdb1aa98fb029592d04f647d113e7afd9 GIT binary patch literal 14749 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
Z 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 literal 0 HcmV?d00001 diff --git a/static/img/about/wiki.png b/static/img/about/wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..62e5bbbac3666247f0553848fbfe404ca00dc427 GIT binary patch literal 13237 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 literal 0 HcmV?d00001 diff --git a/static/img/alpha-hinder.png b/static/img/alpha-hinder.png new file mode 100644 index 0000000000000000000000000000000000000000..b73e4dff783034c37c7a69f7c23a93ec76616697 GIT binary patch literal 6265 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 literal 0 HcmV?d00001 diff --git a/static/img/alpha-hinder32.png b/static/img/alpha-hinder32.png new file mode 100644 index 0000000000000000000000000000000000000000..47f3c01e98f5adb1c5fed1a0a95b42eabb12ad8e GIT binary patch literal 2998 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 literal 0 HcmV?d00001 diff --git a/static/img/back.gif b/static/img/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..68fa8452eb15448d3545a07c95fea3c9a80588d7 GIT binary patch literal 2093 zcmZ?wbhEHbG-5Df*v!E2_3PKSZ{L3V_U+xfckkc7|MKO_=g*%%e*F01!-r3wJ~3bb z#sAz9z5xm@i6x0Z+Qz=3ATc>RwL~E)H9a%WR_Xoj{Yna%DYi=CroINg16w1-Ypui3%0DIeEoa6}C!=DfvmMRzNmLSYJs2tfVB{ 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 literal 0 HcmV?d00001 diff --git a/static/img/chrome32.png b/static/img/chrome32.png new file mode 100644 index 0000000000000000000000000000000000000000..8d405c5b7b5fcf0d51649e442aa4a678eedbd85d GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/static/img/chrome_ext.png b/static/img/chrome_ext.png new file mode 100644 index 0000000000000000000000000000000000000000..2328b7a1d95a6d2715e25e387b7d62575ba2f7da GIT binary patch literal 25705 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 literal 0 HcmV?d00001 diff --git a/static/img/email_banner.png b/static/img/email_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..9e88f6fdc88b6b8535a277031595a18aca95b862 GIT binary patch literal 17790 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 TnYk-_bvERs=8Fo2S0DZlFI_3l literal 0 HcmV?d00001 diff --git a/static/img/f/Arrow-Bulls-Eye-icon.png b/static/img/f/Arrow-Bulls-Eye-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a10265d370eaa6eb3ba54148e802c9149310bfb GIT binary patch literal 10265 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 literal 0 HcmV?d00001 diff --git a/static/img/f/Calendar-icon.png b/static/img/f/Calendar-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5069316c8a67ad9941a3df7a07393aa84af49d GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/static/img/glyphicons-halflings-white.png b/static/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/static/img/glyphicons-halflings.png b/static/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/static/img/gp.png b/static/img/gp.png new file mode 100644 index 0000000000000000000000000000000000000000..a57d6419fdffad49e847fdc39fb12da6fae0c494 GIT binary patch literal 13974 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 XD7WXYq;Oyh&ERCdDoRv|83q3z@&ii$ literal 0 HcmV?d00001 diff --git a/static/img/log.jpg b/static/img/log.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8442d02958217b736fc0b575c2abd92cc7ed7b38 GIT binary patch literal 29886 zcma%iWmsE5(`aytQ>4XHq@`#n?x9e$Sh1olP6)x>rNvs@Jrs9$E5+S4xC96UckAVS zpZk43?{oJ&o82=rJ2N}8*|TSM&%gP9YXA~OSp``D8ae=A_H+UM9iY+4xR^pb0B8VA z001BcKnL_bmBs)8z`Li5^C|N_)p-E?071a}r%VVa0ssM@0d@e}r&1PR4zL2)0KiXo zmQOh4C%D-Y%;vu||0&I%csV`&iabG7p0I=fHGtz&Y5xRs1ULgc{vVXmPi_Ch!S;!# z@e?%=;PxcR`AH%WAoE|&X8%{V`4dF?3Finf{cj7iCpj1ZiKm{>{Xg^t0=WMx-S~+= z7~t}xClH_jfIi8xeB$o(WS&C+k(8O8i8;XR&l4}Se{jHe05&EjCKe_(78dq1?5B*6 zi;azoPk@JqkB3J2LO?`JLQF(JMn+CfMn+3RLqp5(zX=To2ZxY=@FfY!OKJ*I z3hMtw{Qp+|{Q;2TqD7-cW1x`&&`HrSNYVav1L^?)baV_fv?o3PC!wKZV`AZ8;64GL zF#iMnPl<+!j)8?u0zkvSK*zwwz{GlngZV`9A39P@tXJ4PQqR?m9T>@Q0%G20e_$f7 zn)qx&aooA?7|6>^iF*<&t-;6g;&=65(@7_pIMSzPXy_Q2xL6n%7?>FUVgDaCuXwPe z)Qz7z1jJ-Bz9%E^ocQn=yK0@n#4+~xgg5Xvle7ji-@iow!INBcQVddnB;aU)_GihB zJHN-oC_}a)ee!|*uV)q%9@FSyHi6iIQWzkh6(9gcLXL~h2P*UjX<-zC#@T?Hpj$Ou zOaLx50LX@&haG#neU*g1!T_Uohb=DZRj&YhPwx8KaGEg`f!{MeeiuZFkyw@1pFA?} z55;~h)1xaUyi1=IC;*XI+qscD2=x${Pr7E}zLU}Y6;^_rA7g?^Wtlf{thpzkh>~jY zfQ$ar0BW=WfEqanC{IDch$e*t|9i+maX5h!bTYw^8?ENv{MX`vs2ErKlBrCdt{G+u zyxhIi>BK4FhPgf0-w1j^6+s%nw*n@D(aQ@sgZ^UlJoSt%5CpRV_=AxCplDn=5;iB0 zlN1|F3l|UOEJYtroQehr(n;#zKwsfB^ZgzvFJ9#;@!iLcA^btrk>ErVOAQU6hF(Zk zxF)q0M3*S=D{lI{(+@m@t*VxvP6B`t6;h)Y;=#hP1Art2WpF0b`6t z^lAD|j3;Y?{sMrBp_o`|6lz$nU?hClp)Wx|8K4y=I%YsPjD#_WjLCaQ)bZ5%EQe+# z2#3_<#>kEfOM%}?G7ozjqZkeSKgx%J!v9-AKDh?w0@A`%BWJ~%KxZWZAp?Z5$%XM1 zd{Y48krUWz)0&XAfbUppd_>Kx09F<)AP7i~O&+5D5%8IUgqB1E#^w*YhLJF1sfoms zBx--8$%~#SqhP@fUx+oY_;d=kqZ$XUVh8)rhNHo7=|f5RK$ygu=;*&gUwHnfuOLh` zTnbS&3J?;8hQT5adQzqs5A(@R;1f`-RCyXc_;qQiWfL|}?-q0fia=r{sBv$2yd>lT zBI#hjfgpaf2ii}z2aW^?1zP`?E3~5F&wijy1Fi6i0BTgAzc|I1AEJp^F&6!?F!Bot zN!X$T0s{j5r&2LwDDHoBH;GP|+xTIHoX`pZm-Y4g?8r=hsh906!aQN*NXqnSG ztzQ<}622sYBanNw9y zu*q8&vy8;H4Mitm#`}S`5df2cSv~#p)ByoNevku59bE+Yb_Bf`>uK}>E@6C6V+AHJ zJgdr|3>OWd`eoLU75=dOBS@zga2tA{i@!YjVRRIG$c^0?jDh6afVt}*a&T-3h~{e^ z7v*V4RY4XJ7d)LKVx7eSY%nxd#_Lz{pJn+sTeYysuW6p~f8!CYE9B|rW`~xQjeVhg zd9(*2XjfTP8v1~UYVW2Z*>R{&6-K;q6;sFdVxWyEwIim3&0q$gKs~}h98ZiutXnmC zAgezs1)&->taE6av2RgC2f|bvmOd076XM@HIJm_vHs@rGb_Xk@sr/(jorQ!zFk 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 literal 0 HcmV?d00001 diff --git a/static/img/menu.png b/static/img/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..8097d201c16e1fc10898db7ec216d1dbf8bd358b GIT binary patch literal 3345 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 b|NjF3uho$evQ}4R00000NkvXXu0mjffi5=$ literal 0 HcmV?d00001 diff --git a/static/img/missing-avatar.png b/static/img/missing-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..8068eeb2e5b23dcd705ceec0476d5e07bf7f6065 GIT binary patch literal 7100 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 MFhJ@*g*%h}2iyO@yZ`_I literal 0 HcmV?d00001 diff --git a/static/img/ping.jpg b/static/img/ping.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3a78729e622d3a2d65f582b8104aabf47421f43 GIT binary patch literal 18394 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 literal 0 HcmV?d00001 diff --git a/static/img/semantic-logo.png b/static/img/semantic-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2a8e336f2a4ad0cebe4439258300f2baaa8ad3 GIT binary patch literal 6209 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 T_mt6hG(cThN2yW4>eGJ!7rys@ literal 0 HcmV?d00001 diff --git a/static/img/signin.png b/static/img/signin.png new file mode 100644 index 0000000000000000000000000000000000000000..52045b648c6b008f584c3db2ee52bbee525995c5 GIT binary patch literal 4311 zcmYk9c|25m*uW`nmTOiGa$eJZW$e!KMn6b^+Wn@=m z$z(9ytT8ig)|kONa^KJU{_~vY{Lb$@+wVD_^L!JmEsZ$X0Bj5l3>+rL`nC)Vj3l}a zW%+|HtH{s)WMJSfG||_!e=mn*Z!ghVthTHiGGRUpbHjZx`3Re z3*1SJCu@;t#{brCGeN>Kmo-!+rSh#97(~9k#>cuIy%O>g%=+qd51kyf+P;lM*?)6k zV7PWGI)3&NXF*yOdRY9SXAUwy=){zoq_Wmk9*B72yEHYr{m3VHhvf_t7V1??<&#^d zmdmV=fW;3|PzHt*cL=2mB5_+K3&O@HGy z{&%GR=`6x0S>XOS-TYfGtUc?~cE5IwIxIf%*se_|)8+IQp8eW{#12U~Qjhsf@waOl@=ksm% zLJb9k1DA++>-`9X)3zWiym?dmdJn4ot@Eg6f^6VPbWP}u#)Zj${nl$fC`M(;1|D`G z&yU#LQPFWsYpHu(x;d*_^P`7e^cYb&CGVoQY-A-Mj!dO?bVf|WsT|ez=smBMLbur8 z-utKAwJ_A^wSlJ-aqlCDunpVM<)4)DB%YI^ker2_kIf(Z1=m&0DCZ0N3QL2pf2B5@ zgHy%3cOg(?o>@d58+)t?%E zr7nw|90UU-z8p3PT-IJ8x{LdSQBf@)8dTa~gHtDM!yW9x6S!jGXgGgw>eqt~5N$C2 z)EU}X^>IE=u*`FEZ<7OLh4@71w;Rqo>+KoHyP2UqrT*A;jKLRj3I!i^>SZn9XvzwC zSM(VLvC4I3%c_o@sslc?HrCSuRrDbrqA?Y_#kyu0zfO->(>?~?oB9rym0;%!Dk~ie zecwFy9LOa_`on86I;5tyiRO~pANcJ{Zw3Xt?^^0oc_S4SGNmK@Jr|}Wxr6i9SkEgQ zzPF2PmitmSXY1>F?5x6~>E^sV>Y$~VRnzS_?Wo{>4)Laq0!l<9zS&8VcA0gmp6&ko z6QJv2sL%+W;H#P6oWMzJc4gy}*sae^ z?1}=h(KHv-N)KElidLIeizWVK7Wiq;ra1&xKpL3PT0N+#RD4!_l)co$X1B7a;Mdfpjf5x zmIf{^j(fM?X1BD^3ISOW*yuP;S!2TJ>54ivN@T$e@IQ@|bW6PLf~0k}WQ_23lF&m~ z*}#T5^4395`Hyfzyfqe=)r9T`@6No`x>DS_;lc|ATNpX+xo4YJuTa2u363!ZwCuSr zG)11rvn#~Oi;6sH$QFkPi_}7Bm(}<7md|`8=3S#D=!G@gF`3IqZOopjYO`2ud`Cso z#h$50TsI?7A#$OQ)eLwrZQwGuw%U3{Xbx$SwqfrNRq@$Vc3*CJ39l5bG@PGb1OOaf z0Kc$=`Noj5St)&oUR=3B_sm4niGzNvOtYD(N4eMHXLy$v!&7X9m=O#XTpF98ihCe$ zaX+5d;UZ6mUnuK`Modj(+dCxsz5N_81{iv=T0x6V^1P~K)O7G-)7!m9C?R-c)0$g< z{*#v9ntFPewcA$M-)ZrXj-$tNPY$&BnFTP=(a9zWs+gw^Pq1l>Ys=?|XK@NaqT96k z6ljHd6W$$J0FD-AJ18C40ECnB(Q)WX&W^iSHMKr9PJ&9Hv0Fys)hhIoYI}WL zxfGisSsu4LjOHR-t|>aJ6>6F)b?6piRA$0XSU(ujU{hp1RE-MiebN;9WXV6q!X+bY zSamFr+(2&L@$P+0*XCoCFu?|e`3inO? z%G1}}T5kwSPCIi4M@l}4V>9ZUg_IUc;5co4o&dEgI?cOyG45)K=pHd6CzBsGt>I!j zvUd+R=F%-}@is;m%y-7>(9{Q}X#P6pw5I9kIE0!6=}=@boCDSlDx_6VV#s5GKU#e6 zA2w9u348}}fN*j-Ug~~~mX-|$%*4yc6uP#{he13_HysK63#~T2&kEM=M_7A-D;~ro z07_U0KDI$Ay^TeX+`b*Zk|Hy$+>q;`d9|@^nUbc=;*DH{7VrGg2G`Ud{FqtxgZ&J6 z&@SjxZ0Bf279&_Hzny+69=;t{wcg*{2$YRS0P*#rcASwgRIU{5-LBs>5?ynET`4Nr zb%&YA_-2KZD1-pCN--#bGajEu+Xl?ex-!>gn7V z#8-P%a!;Zm%ClqFD)r1)Q^$`6-W6XO%Z4);Q{5_;&CIZUv?e5r2Qq8_wVl9$V+ZqI-gjR`-f6EZycf zb&VX~h>6XmJ$vQZ>P$sPi=f23yqiGnkXTp1AXti&V5(m@xso2Ft~PMq>3p2~qr@U~ zwEjgCR!ws$S6f_d(P#<1>ljmUCLR&4r_lT za&VvPuuu>GQkJCGeXukT5Go3}Zat|akgRk?DH$E@FvCKaeNEa-bS5>^1A( z!3sWaec}1n-Cn-|k2m3u;Su>^S3cEIASu}&8vbN!!xPA%-7qVZ9-bral5XEzOgwr) z05h-f&pX3%qi2-(OWq0~R27mZR&;rbTOIc)AB{BeuD#m$&;HP5Ulz@|tru<5e5fmx z6+Y%22Sc=&2Y!kA_~meD8j9*&8QU{gskG9g^l&2i?;TmFogge9XK9wv{6IL69ZWgj zby2JSgRnUsxn+sj^Jp9TRk#OS50#T7z2?2fC}(W2DhKT-O4cUL^s#G}T(J;Ze>{6) z<$D%U!DZ)FkYG?X(K!|wu~DDPSm*;`hbtcOSA`nLI{I||3W{+(2Qv)&s4t){3`99? zvyEMA|DcjMnu~tmvA9#=55CuR$+r4BB#)xhB{YHKgyp6{Ty@3uw`~~djd0vSZ1JdQ z_=7umof$Uy+<+ap0ms%n?{{>_{je1P{nuO@b{^!`;L&|6rr@f1X56#l^6w81Dwo{% zHAtSKx(b4O$-XwSmOeocg6BIqTFxdr6x46y-S=pIL9IgL5+qN|C7(L^RlFs2QEb!f zrs^PGOQn-0?Dd_0@7b)boaGg*7tL~viGJVtC*-+893w><^3CKtL?F{SXfBs91mGFP zL~Xv^EVIwhLx@l7%C)MS;g8gDmZ7gj8&^NyeuXfJHisvmJNiBH4qPoh)?fsXQ6fdt zq!3-f;}>AO?(!_BD$^AuyNnsxZq^KL!M({c8x$9=@GiuxD~OU1Z(oO+zB`*RG@ets z(Tg0Oe~5|`?`krD;BA&sQqYKT{0^Fm-RV7NAmTc`kw~`uI!P*swQ7yzY1RyqmFBTP{yGVjF?W^*R`ho;%a7 z+QWfyb4BtiregKmaO1m8R}Y^wbaDo}va}ti31s%(+`hMQl({!8SXUI14j^<)$PI<_ zL87mW|C^i7EaA7x`Vf*W7yAeI?)#nywLL2(cfrx_qNnCENwc|;>gh&!A%k3ijPIDV zklk^a&+7TxrCMb}A$muTb@GRfEm-5jJ;sW=W0cIiOfMp{X<*?6RK9!IpaMCi2rdrs ze&yT%W30bvDm{Fs_NpT3XI4jse~fM2+mn&?*hJoFCN^~@`8u&%SefofdgL#`+#`vk z1`cPi%vMiM!PRRGxU8R3eR5c?5ZPefi*+CETQ{0nA>Mx?9@65nja6@?sd-+)?Fs{y z)oyVBobWxU&iigv3%yMVg)BMO3{(oRZt-YUu?J>eOA>IHKKCnNz7X>qk@ae`sxma^ z*9ZGYR$A%Miqhh*l^)&uzvo*FD`A#+N9AH$RMN#p;7(5J%WC?Fb^7Sao#|Jig+byN ziHV%nB-#jC`DEnBbS`%1+u(Uav7dBg>iBF{Deovi8SM(6Ge$47!{`1Nd{dallRnEew zM$ag(f0f2MwTEr<&}2MYBla#_qM4dy?%(A*?e2{ccq3}DtGX@B8k=H&no)fpps_?_1x zl|DNLHkF^9KD@Pao{c{EOOPhn!1w7K27rguB(@FMmz}L~tcJr>>Ba-pw!wL7*whE( zqXp3T&_H8J?{jV7{Qw(j!n}P;HFiDQpqvIV*TWw4M@OKu5_}`^em-tPP zr#jB?Hv%&L#*|Z?NB!i;S_OA6oMPxRQh_Q=J{Yo52%o%nO0U1Tv3<%UQMrg6h5x^> z?@pt6?~N3;MDr!n(|a2{WC=H#1+<}uz4|s$@E^lVT=-83Ctj>G-i5rd>qVNdfQSAe z9^$;U9XbC&&1+GsuzR0!G)5AP=$p9ZyP-~Wv=+!tw3~~13C0)Q*k&xEV`JoiNcaFE zft4EZaluO)xXfaCliq?7DK{2B2`#+{OLxlPRgcvxww8Z=fgM+2Ezi#;qe#z*A@WCT p2A%K!kMd6{LGM4h;C^#_CVa+t@MFK15dD_H#K2O&R`2hq{{dTOL-GIs literal 0 HcmV?d00001 diff --git a/static/img/silk_edited.jpg b/static/img/silk_edited.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2334a04d7a9c11d63d7474c0ff6f1bee1db73995 GIT binary patch literal 39995 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 literal 0 HcmV?d00001 diff --git a/static/img/sm-banner.png b/static/img/sm-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbc0cf598ca169b603397faa2798f0397674475 GIT binary patch literal 8930 zcmai3V{j#1w7s!0v2EMFv2EM7jY%f9F|m`0olLBWlZidCt#`lo@BMmJ`}D5rKHaDG z+H38zPj!s4q7)K59y|a5K$4LbR|WYX&MF*$KIjLg8 zlBkNs24f^q(UHQT%0`nGtzoJRe3OuX#2+h+hKP?3j>A-8K>QBB3UfeO93NH^{e9wX z*RRBGx%=s8`m<$4=(y%CuXz@x9~LoPnq7r67_m}}=-W=%=1QE``a(Gs%hCr64hQRZPvVh-4aNY7_{NKs z0YoIhg7Y$|)BuH$0OLtB(|v$4BfywC=x6~DocEmN2L{kfCB+0QOahRgTSSWktoZ>o zvzp%}0NN}73`@D+ynt0k0E>*4r8JiqHgrMFg;@L`Tp9ApHQwW8~!Cfbc8; zhUBf5zzuyJ>M{8EkqCE)#H*Y!RkGpDbLq5Dt`` zyD0#mFbNYB?cIm>407Gf3|D+BvJvBHAM_WQsp|X)}-k%VeG4* zxx|ZS$KA1&lEsK6(+*S4f0^%XGrU0vZF2$|Y=yx5k{Bxt%pe}+s8O}u`}dvzfZHyo zfkhfvh+ylm-C3`%E8!2RLP|ierA)F50AMIi!K6OXEIbMe0Eicc&^3tS-w)t0^g|O2 zKy3^lyc=_ci&6X@6hjq*HxDLoHKwfz6{CrqZXl#HW?mE_QNfKDE?JE5$K0JYI{~XO=a1_z zJi$1wqT@f+)+m1ygn*+g{r_-a*niuzFpUg}HS#dPrI<}NlGPwqkKi?E)<9P=B@Ei&0eHA=EoH!F(N zzi}q$iq#gis@AJSRiJZtWb;mkVadpq))uEN;8|l^KiSm(bMO4NnMS0T@keWZ@cv&`cxlq@F=ZMs%Ef6Sx_ z_%zuxsx*8$X7$RdvZ}2r1dTh5N%e$EL$!c9NeyX@qR zO7V-j#J&0)%P%wYdkus0<(t%e$ITE|-}+i)8WSE1MIS{+&gOsq_? zt=fj`hAvZjQUW>yetZbRAVsYqR}<BX07IqgM8zUDw$&?|)l!HIAIo5L^>;B+ku%F1Q82|(K%1|_?)GPB47j6mI46uykj7%ST@$DTR0^?bIVNW|V@}elU1?}5 z^{RR@xxyBD6ml)t7upx#-eTL*F`DA;ZyRfyR2p*1H;UK>29bZ6fBAmR0m_3Z!K@%+ zLPSIKz~7#I{Ym@ch56Pk9-G!KMB@rOL@`AZLTf`02Wm;J$IcULNuQ20XOd=YkRy}> z|1JN4F*!1c9STIGj);oTiWH7_j@HJTW6j|7n%e-nZHvE(r;BgpSg|Vc)-%d-(g{^D z*$VvS?&Rnc9$~W7nOf4$)0VN9Bj9DCtK)LC@7;dCxQp7$+e6s*!_H(LGjR4Pni;&0 zD95T~LSx`d7m<%vZ!5iZ4z+tS%=@pgrbksgsu^2|K3XHu%uLdp_Ne= z*hA&3U>9OIFcCV?0%muHpaFjv5pcG#a$%sP&8)NCV)7c9hcAQ~^SusZ9XkUvXq9He z`w&0MX`(M{BlTBh_3sYzS<89LlcO!hd_Cm!s*IxyWJjd6zrT>SHGf?^JW8xHXH3(q zcZIbAJ4*Tl+Pf{v$7iPbh1Gwm->bi>b6w7FwwSCuJI-C=`*lBZoG-2Gbw7OwjrXo= zfN3Z!SuR<;$-Ff`3D?C`ojj+%IT+L`I=EbnLd-*az>p)iu5>Ie5zY&$t0pYdpGhH) z68C=QU3oDgaUp5^$Q{`ucNX_KIC+BGej-BR`|BC!SF;PVK8)$iDB zX4@9U>8caeeRp2sEB2Vbn}0_Cw%z@$KYduH>#$L9v?Yk4W3S8%iE&e!Q__~~IAYctT5`eSCYYt4)LvbI~P z+vr~8LUawd8MP#=_qnlpwGm|7?^Sp=w;}Ze9T7JBne>o=0)$G)N|=m9iag8b5#r_D z6L$SLc`pafn$J?@V}BNZPS#;#F$X>`ovqBwWzH34+-9WoIrx`;oc5pL)~}BYju7>Z zd$Y3|-fO;H40vsL5nh#SqbMEtlLXOxS-&(ssQoE_OTkS^`GSPVyn8oeXIuyMnez(JA`7ghKEd!Fa#uYQ;{ z+IO7WF>6l6-XV_$9uf?8fM#yP7@bkN`JEA}MT1FW4GptJPfsF4)vi=`eV%T9xoYvD zv*o)%TN-(+EdX@-Tf0Sr0MM#iKk)$~GkYKkr>t}5pC#fC*ESOu3wTV)C_t5tr%p-~+3!HNGs zWjN*akD`$8_5%C40o&S$=s67IZ-8m&|KL>U(RF?L#@1>VJPvso^sT4ol-GKl5%6*a z#t50t(2xMLiCEiZa!#d;-+ze)lruW)gkz<;Abk@)Hmw7yEbiRf)D*Y?#;-*wKSkD<^3w*mZ zHlotmvQr%5W+d^g}Mu1UC z7G3ZoTBn2}C_vxuJf;t00%G@FFG*Ge!BrKY`uGU?c9z$9?Ha#)5wcxk3ie*0TW^B> zz$a-(n9l%?7&I_rC)Y>a^OL9|+M-U`{OLqc+@S9c`mu%1(?r<4f`IN+Fs8it!u{r} zow=V~9v*W=myQg+%npz^l~5hIvuHRH{RjJ87q#dlHhs6J+CpRgi7}B8h820hOOjJ~ zBvTOtbw75ZBI@NTAFHErrDAEJ+CKuLxAH8okZA4Ms9ZcUzy>cM& zuZt7Qb1iXZjT#om^05QVZIniI>WhT$fV{Wju^GZoEfX+ROVRnm#8${uch&-<8xrxs z;v4CndrvjG_CCl;InoohnXlZ-#PE92b;AljWV|m1v5q=ZYeMPI@BbVa^++!G6MYd< zYr}6x`)d%0=!!#rZZhmW95FhZ7dda(GkvSqYnH%b)};3haAHFVJJ;BGD-(U|9#|p& z^DM0V;`VLi;g3)QVpviiIuzz87TmG@z3*-X=1f?>$u5L@xcLzxnDB*B(X(ZRKkn2; z&zriH;^}aaTpvPHAVac5$b&`OsWOyPC4^F6*`*cAYyHgv*BqANySsL~?!PTo4*M>jywcU1uDhT=IIk-DS~f zJ-zUHXjEMF@DJvnch3SzDAx2*k_NTkCw0ssx?miiPU$Gw6+fX#0@fP2) zgm5XV>}FVD``M*Z`8a!#k-i{KzNkzekC3RRd#qYBmuvl0l+$a=hthr9?a!>ow86*& z>E*l4asS|F`Mw-V-;S^2)>Z8dQOa2}(&33;KSW2b#ny$OKRwm{Ev*h2;xvd`5Ao_} zmGR!TY5U&s{PzphLf6I%phD9NRTU&r5PPc6F2VTOP%xsvo8~tNnOv^Gf1$mzBPyiZ znW{~~0=wgtDwDy4*=%DAG&=9f6zAnsW5_AIwNiem_?O3c1>9W`ugLJ^7Pl+B9sToM zl^ME3UfBBmx1v(h5&WIdqo9g7u2hqSWwP%urWIlR%lh_eo4-%)kdrz$y zW_z%mv*dHFx$)T_)TJ4ArJE@U;YMBSZDCV=uKL41nfRZw+|ZE;H2;j%7PR4`DgSLw zSI8scfZh`{Wh4Pn@rqmVP@D*KIJKBqVxTgK{7_vSU8nwT=2Epd$uz`nF|pPrzrfSr zO6hUcM{IR1=Y%bIC!bOsgS=s};Wz{RO>K0*t4 zaW#BBua`@zL$VLU64*wQMr0gSrvw&XocQoiUvTv7!56%=bZ*p}>#U$aFn|*1>N&d% z7)HK~?LXkp3O>p7!0(c{KS*6e{qdcn-UnwaiyA);JbXetx$N0833@p!;9LyKdDn1E zm-nA)+1lN)+3fhqZA<6V_VFJeN|BwezJ7Jnt)^x^v>|sGCxZWq=v{mDomycqU^l|$;MyiQ7jla^mUTl5kmTB!DJJ$);lm4f2IGA1NYevx zx*~dt_N_06UF0S=FDvClkeFFVqGTdK$3LGoZ=mKI_hvY4<=f(IuisT^?N18B9XVrS zh);fr2iseHmU7_mY~f+JHO{V?Y2#14;8r@70KHbUi6HPf_y!{yu|~HR>$*vjE5fmt z&BBWdtB;=uOvcZ}5}UnSn)*|pJg{Go{sw52^OyAEJ$?^Pe@EYgpe3-IT|8!^@9Un< zc8H)=6ui&U`XZBaBuW~7KYby~lPQFGIryL6A|5D9azZ_-I zkGfwB8t-{ue6ObjcbW>#thq0#}@+xMeS6+ zMQPQF#fn3tebVmgj85qqQ!fglY`rA9Q)W(~I$-vE{SH9oXIkzUMO8GlCRP_*_8=`y zX1KjZe;oCQy!59xn;}rOychVH)_Xk|JpCp2TE`UUF2$Q>Mi%FfM}eP;A#xXG3Y%!* z5=w-Ayf*S33Tv)uAtxny!;r@(R(nqXGF>FEGWj^)Y<9lXdd|A-m`5t%sA)Q<(ZT}B zcvhHQ9N`jM&;Tj;+_AnwMIye}EH4id5=HbG@%o5itQ*BOAL=P1io!eiJOaT*>D)&} z8Wa+Y=3|gpbp}N>)6tfkBU+Jx7dnfT{Ap4rcIrmNT|51_8$sxW|zCkfj8Mz8A0mScp zlf`*-bCzeloJtJ2%A}*SOgWB$!vz8%d!Kx-na|uJXOzhXW(`*AjVh{56W-LQVfZIt zgzP-z&8=OKOZ)Qu7p`VkZMOOf`tt>)E!jJVLVnVi?n<$E|MleWxk&dtIy3m#1k<Xj~;N^{h`BEo*zE_)&lN%=#&R6-kHbb%Bju#{kODcgr zW_Nj|UOa>8xt^ChU+>C5>?@cU8JR^4bR+4fetUEozdu<#& z6?*?i-o(Z}ULcUw`RYry%L0Q!OhwP0(&*#U-DQK0&t*@taAhSMD3nYQ7og_G-sO2U za^ma^Y8$qF{Apx#I-0&>NA0=rBO)T~H#^hDQ>gdd`C=qX1U{elA+vMVI^3v<5~7NW z$?^jpb?i0i&z5UT+S@Zb|LV3nZO>R_7>xK`^~zaDK&`hq3|)AtX={(M&kBT1+aA{A zb0y~F$l2J?7Wm)7sg)~Q9M9w}E-mfey=dR9nk_CZ7u(_Ok0wZ^TR;Q`ofOA16_=Go zmKOwO=jIYrRaJRk^*psd{d%=AS(+Wi_Lu09|EE8e=|Il$DcvS@0pmA zGW5%4p<(@kfY%kWc`a_ue&obmRasfY%#0j_)6x6j@4^M1mOw?JxI+T7ye z?=Z;UK#1^n>By;VEN48LW(tjrE_nyFM&wxeXz4vv{6sixr_JJuWfKS*L0< zEW_PA-|R20tTY=Bfcpy(hll_SR`_QVhE0E)vYP9ZH8y?&XlTrF{5U_if4tgOl9NMt zczDSBG4$`{WATjJ;qUL>fH&t3ebAvlDwer7GdUTJDDc^2eturN-I;W4Z7r|Axw%}gN=<1gaes`gv9%)Rv#HHZOr?-KZnB5A(~SCp6$QKIr2I2M5Y3 zDj_RprKP1%In$Cn1dHR;pE2R+0(|=I!m7k|jyEUDMOkul4wG4@IGH@1Xq5&d$c+ z_he|>4&+xn9`^`6JUq;lr|LFj2IVqFyg{2mI$4|sW6-vx$@^wck-q4Rui0uAdgtF< z$?AnC9UYxAM#TNSySj#ihDLTy4lb)H%-Yvw+}m0Myxc&V9(Rmq+NZ_$dZ=PkD=Y2 zm*WDf$Md!S6spr~Y0|s~Lb?0naedXED>)@)t=)wjq+bF--_*0Zu6UUgsz%!-I#38H zR0_qlwLeZ4%9~AwpwpQQWOa0KoqAuW?vAF-F8;P;PFvdA+Tw89VuXkUS5?tncAnKa z*2)Y<_IsGK$U+*yK@96fBx0P6lWHuS5itN9s4rN(e!Az`7z z!o^6BW(#J2aBqzbgu&>5mP(;kvYgEql$;gbP7)6c6q3te8ouyswp(EmAVP6$!`ILl zpP7-=(7=!oRlzXV8L{Ugmr@aVG>+pn1s@@>FWa zeN-uMAk|Gx{ocPRJmd56@d32!*MUv4Q!w}&tju{3mIf#k&K{T4)x|F_Yl3nD;vI+v zpd^BjapsZt@Ze0QD6+xptShOa>#XzothK?DxX`P}NJ|4Tf|iz6e4X2n=V1dR`N3V5 zw6ru1PEHT1Dh>s5tXPlU@)9t->)8@es%RM)%!j{YdiNN@!^3B?S-@9o)sGzC6;;tS zF|a%Qtp2(^hJW$z9| z9~xRlN;KrVWj&{xQs#h|?rwp2BL2vs-Tt!&Q&o(?U1uwOC$_9V90~$VlI~8j@x-Hf zsp65_N(@-!1Tj1AJc@5$AW&Rn-~#)IyQU+@&B-v3&Dz%fc;qSb#4YTSV8D~gs1~H? zf;g_+($XUEwioN~FhelXme3;^=@cy;D_L1vKYHeA*1C@L{86eb0X3{7tiXW!Je5IK zpp&zpazHDGmOUJb5gStFiRFB1&~0?J>-Hd&Tkdt^q;xe$_AME-pFDH-WqDuYdtR8H z)#yNcZe%@9A4E$vXYhJ48F_y^{Fb{Nqf$%on}5tXNl?2M>DwgUcbNxjL;FMYlKvn2 z^hvHeGex%oZf=(Z`d;SKItJxZn7DTQ?f_OaTJN$<;8GsJL2R?zpn*;wZs(QdzU<%P z-gZ%NJvTk}Xfc65!Tx1ORtCiUwWk}rd0qAbO8)9_#fics|Y zBwtsVpdXFjgGQKo@$gG8E_=K2T9aYV_WW@Hw{KAK01VDY&(&^@P|v8_X{&va>kxF9 zX7NDVvwxi5P6&~pFDJ&{vm7(hs+knhb3xI&mf`rAA(wQ8c3*xZiV#aQC7yq9_f=5e zD7BL9F3V`p*W1j69ug(0zn&!(de9BR0g+}sLC}kZZae{N1!ywhOGAtGsIIFsKyZ0O zew=+4XA$jNVAP9J7H{+V%H(n_xxR))qMZ2i(SbQtoo)mrW$ENfn1uzw*AOwHYYZ&0 z_^s7OLg3;~Xm_I_h-QOp#kBZYj9k*BX=SM|JO=U7n*(;7D~#SjtnEq`#i7j5WwpJ>0`Mt zPhgq090KQ6cbL_!IRUv89z_(IKM?rm9G`9H|FLT%-2XKs!jCTi0w&2&L=PJT=qCa| NMnX}%PRuy;e*kf6NqYbQ literal 0 HcmV?d00001 diff --git a/static/img/suggestions_close.gif b/static/img/suggestions_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..711dd71eabf30f9ef44880742aacb4d1f37a73f4 GIT binary patch literal 236 zcmZ?wbhEHb6l2h0IKsf7qoc>b@SmCaKQHfpIl2EPCjZmZ|Cg2h@9g~F)%Cx>|NrF4 z|2tN_Te$H5;>G`W?)<-N*Z(_r?%ch5_ujpGXV3mWckch)yZ@g&`TzX+|F>`dzkmP# z>(~E4zyJd}AO^@T296>IOAZ;24GRu7a|mn2oY=6?xs8X%t>r|*q61xGqDgxqJ}MsT z<+rTiIk_?UM8BGJ6U)vCOHWLZQk^u%bMvyZvn`5W-8s2g{SXsdqmhoo6otTr-2Gf3 kuRds8Zud)f<9)d$BY3sHXxiCX0xuob+a2yYDk;DK06au=IsgCw literal 0 HcmV?d00001 diff --git a/static/img/white32.png b/static/img/white32.png new file mode 100644 index 0000000000000000000000000000000000000000..da792d4e7d2d8011835ffa4e2501037f882290fa GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj=|9Bzpw;GB8xBGB7kWGcf%852Rl* zFq9fFFuY1&V6d9Oz#yJKDgLM%P%USHM`SSr1Gf+eGhVt|_Xj8_RpJ^^5}cn_Ql40p z$`Fv4nOCCc=Nh6=W~^tbXK3jD*~y%Nfsx14#WBRg`|U(qu0sw2Zo#)BmTVTyX%P|3 zPe@Jn(#}tqe7b^LQN!uT{zI;U+=AMzQ<^dyghj7R*l{#u(@aA)N5%g2HzI#jyy+9E znd#y%iNm8V;z70CoB%ssLcq`N;C6bHvPP_qstoEJ5{sOju2AA9uI-)2zL4|2jy*SH3VezX8widU# RfWgkd;OXk;vd$@?2>?i%o8tfg literal 0 HcmV?d00001 diff --git a/static/js/bootstrap-datetimepicker.js b/static/js/bootstrap-datetimepicker.js new file mode 100644 index 0000000..ec4b167 --- /dev/null +++ b/static/js/bootstrap-datetimepicker.js @@ -0,0 +1,28 @@ +/** + * version 2.0.0 + * @license + * ========================================================= + * bootstrap-datetimepicker.js + * http://www.eyecon.ro/bootstrap-datepicker + * ========================================================= + * Copyright 2012 Stefan Petre + * + * Contributions: + * - Andrew Rowls + * - Thiago de Arruda + * - updated for Bootstrap v3 by Jonathan Peterson @Eonasdan + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= + */ +(function(c){var b=0,a=function(f,h){var r={pickDate:true,pickTime:true,startDate:moment({y:1970}),endDate:moment().add(50,"y"),collapse:true,language:"en",defaultDate:"",disabledDates:[]},p=this,C=function(){var K=false,J,L;p.options=c.extend({},r,h);if(!(p.options.pickTime||p.options.pickDate)){throw new Error("Must choose at least one picker")}p.id=b++;moment.lang(p.options.language);p.date=moment();p.element=c(f);p.unset=false;p.isInput=p.element.is("input");p.component=false;if(p.element.hasClass("input-group")){p.component=p.element.find(".input-group-addon")}p.format=p.options.format;if(!p.format){if(p.isInput){p.format=p.element.data("format")}else{p.format=p.element.find("input").data("format")}if(!p.format){p.format=(p.options.pickDate?"L":"")}p.format+=(p.options.pickTime?" LT":"")}if(p.component){K=p.component.find("span")}if(p.options.pickTime){if(K&&K.length){p.timeIcon=K.data("time-icon");p.upIcon=K.data("up-icon");p.downIcon=K.data("down-icon")}if(!p.timeIcon){p.timeIcon="glyphicon glyphicon-time"}if(!p.upIcon){p.upIcon="glyphicon glyphicon-chevron-up"}if(!p.downIcon){p.downIcon="glyphicon glyphicon-chevron-down"}if(K){K.addClass(p.timeIcon)}}if(p.options.pickDate){if(K&&K.length){p.dateIcon=K.data("date-icon")}if(!p.dateIcon){p.dateIcon="glyphicon glyphicon-calendar"}if(K){K.removeClass(p.timeIcon);K.addClass(p.dateIcon)}}p.widget=c(G(p.timeIcon,p.upIcon,p.downIcon,p.options.pickDate,p.options.pickTime,p.options.collapse)).appendTo("body");p.minViewMode=p.options.minViewMode||p.element.data("date-minviewmode")||0;if(typeof p.minViewMode==="string"){switch(p.minViewMode){case"months":p.minViewMode=1;break;case"years":p.minViewMode=2;break;default:p.minViewMode=0;break}}p.viewMode=p.options.viewMode||p.element.data("date-viewmode")||0;if(typeof p.viewMode==="string"){switch(p.viewMode){case"months":p.viewMode=1;break;case"years":p.viewMode=2;break;default:p.viewMode=0;break}}for(J in p.options.disabledDates){L=p.options.disabledDates[J];L=moment(L);if(!L.isValid){L=moment(startDate).subtract(1,"day").format("L")}p.options.disabledDates[J]=L.format("L")}p.startViewMode=p.viewMode;p.setStartDate(p.options.startDate||p.element.data("date-startdate"));p.setEndDate(p.options.endDate||p.element.data("date-enddate"));F();I();k();A();m();e();H();if(p.options.defaultDate!==""){p.setValue(p.options.defaultDate)}},n=function(){var J="absolute",L=p.component?p.component.offset():p.element.offset(),K=c(window);p.width=p.component?p.component.outerWidth():p.element.outerWidth();L.top=L.top+p.element.outerHeight();if(p.options.width!==undefined){p.widget.width(p.options.width)}if(p.options.orientation==="left"){p.widget.addClass("left-oriented");L.left=L.left-p.widget.width()+20}if(y()){J="fixed";L.top-=K.scrollTop();L.left-=K.scrollLeft()}if(K.width()");while(J'+moment()._lang._weekdaysMin[(J++)%7]+"")}p.widget.find(".datepicker-days thead").append(K)},I=function(){var K="",J=0;while(J<12){K+=''+moment()._lang._monthsShort[J++]+""}p.widget.find(".datepicker-months td").append(K)},g=function(){moment.lang(p.options.language);var T=p.viewDate.year(),R=p.viewDate.month(),S=p.options.startDate.year(),V=p.options.startDate.month(),W=p.options.endDate.year(),P=p.options.endDate.month(),L,O,N=[],X,K,M,U,J,Q;p.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");p.widget.find(".datepicker-months").find(".disabled").removeClass("disabled");p.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");p.widget.find(".datepicker-days th:eq(1)").text(moment()._lang._months[R]+" "+T);L=moment(p.viewDate).subtract("months",1);U=L.daysInMonth();L.date(U).startOf("week");if((T==S&&R<=V)||T=P)||T>W){p.widget.find(".datepicker-days th:eq(2)").addClass("disabled")}O=moment(L).add(42,"d");while(L.isBefore(O)){if(L.weekday()===moment().startOf("week").weekday()){X=c("");N.push(X)}K="";if(L.year()T||(L.year()==T&&L.month()>R)){K+=" new"}}if(L===p.viewDate){K+=" active"}if((moment(L).add(1,"d")<=p.options.startDate)||(L>p.options.endDate)||d(L)){K+=" disabled"}X.append(''+L.date()+"");L.add(1,"d")}p.widget.find(".datepicker-days tbody").empty().append(N);Q=moment().year(),months=p.widget.find(".datepicker-months").find("th:eq(1)").text(T).end().find("span").removeClass("active");if(Q===T){months.eq(moment().month()).addClass("active")}if(Q-1W){p.widget.find(".datepicker-months th:eq(2)").addClass("disabled")}for(M=0;M<12;M++){if((T==S&&V>M)||(TW)){c(months[M]).addClass("disabled")}}}N="";T=parseInt(T/10,10)*10;J=p.widget.find(".datepicker-years").find("th:eq(1)").text(T+"-"+(T+9)).end().find("td");p.widget.find(".datepicker-years").find("th").removeClass("disabled");if(S>T){p.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled")}if(WW)?" disabled":"")+'">'+T+"";T+=1}J.html(N)},k=function(){var M=p.widget.find(".timepicker .timepicker-hours table"),L="",N,K,J;M.parent().hide();N=0;for(K=0;K<6;K+=1){L+="";for(J=0;J<4;J+=1){L+=''+B(N.toString())+"";N++}L+=""}M.html(L)},A=function(){var M=p.widget.find(".timepicker .timepicker-minutes table"),L="",N=0,K,J;M.parent().hide();for(K=0;K<5;K++){L+="";for(J=0;J<4;J+=1){L+=''+B(N.toString())+"";N+=3}L+=""}M.html(L)},w=function(){if(!p.date){return}var L=p.widget.find(".timepicker span[data-time-component]"),J=p.date.hours(),K="AM";if(J>=12){K="PM"}if(J===0){J=12}else{if(J!=12){J=J%12}}p.widget.find(".timepicker [data-action=togglePeriod]").text(K);L.filter("[data-time-component=hours]").text(B(J));L.filter("[data-time-component=minutes]").text(B(p.date.minutes()))},z=function(O){O.stopPropagation();O.preventDefault();p.unset=false;var N=c(O.target).closest("span, td, th"),M,K,L,J;if(N.length===1){if(!N.is(".disabled")){switch(N[0].nodeName.toLowerCase()){case"th":switch(N[0].className){case"switch":e(1);break;case"prev":case"next":L=E.modes[p.viewMode].navStep;if(N[0].className==="prev"){L=L*-1}p.viewDate.add(L,E.modes[p.viewMode].navFnc);g();break}break;case"span":if(N.is(".month")){M=N.parent().find("span").index(N);p.viewDate.month(M)}else{K=parseInt(N.text(),10)||0;p.viewDate.year(K)}if(p.viewMode!==0){p.date=moment({y:p.viewDate.year(),M:p.viewDate.month(),d:p.viewDate.date(),h:p.date.hours(),m:p.date.minutes()});x()}e(-1);g();break;case"td":if(N.is(".day")){J=parseInt(N.text(),10)||1;M=p.viewDate.month();K=p.viewDate.year();if(N.is(".old")){if(M===0){M=11;K-=1}else{M-=1}}else{if(N.is(".new")){if(M==11){M=0;K+=1}else{M+=1}}}p.date=moment({y:K,M:M,d:J,h:p.date.hours(),m:p.date.minutes()});p.viewDate=moment({y:K,M:M,d:Math.min(28,J)});g();v();x()}break}}}},q={incrementHours:function(){i("add","hours")},incrementMinutes:function(){i("add","minutes")},decrementHours:function(){i("subtract","hours")},decrementMinutes:function(){i("subtract","hours")},togglePeriod:function(){var J=p.date.hours();if(J>=12){J-=12}else{J+=12}p.date.hours(J)},showPicker:function(){p.widget.find(".timepicker > div:not(.timepicker-picker)").hide();p.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){p.widget.find(".timepicker .timepicker-picker").hide();p.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){p.widget.find(".timepicker .timepicker-picker").hide();p.widget.find(".timepicker .timepicker-minutes").show()},selectHour:function(J){p.date.hours(parseInt(c(J.target).text(),10));q.showPicker.call(p)},selectMinute:function(J){p.date.minutes(parseInt(c(J.target).text(),10));q.showPicker.call(p)}},u=function(K){D(K);if(!p.date){p.date=moment({y:1970})}var J=c(K.currentTarget).data("action"),L=q[J].apply(p,arguments);v();w();x();return L},D=function(J){J.stopPropagation();J.preventDefault()},t=function(K){var J=c(K.target),L=J.val();if(p.date.isValid){m();p.setValue(p.date.getTime());x();v()}else{if(L&&L.trim()){p.setValue(p.date.getTime());if(p.date.isValid){v()}else{J.val("")}}else{if(p.date.isValid){p.setValue(null);x();p.unset=true}}}},e=function(J){if(J){p.viewMode=Math.max(p.minViewMode,Math.min(2,p.viewMode+J))}p.widget.find(".datepicker > div").hide().filter(".datepicker-"+E.modes[p.viewMode].clsName).show()},H=function(){var L=this,O,N,K,J,M;p.widget.on("click",".datepicker *",c.proxy(z,this));p.widget.on("click","[data-action]",c.proxy(u,this));p.widget.on("mousedown",c.proxy(D,this));if(p.options.pickDate&&p.options.pickTime){p.widget.on("click.togglePicker",".accordion-toggle",function(P){P.stopPropagation();O=c(this);N=O.closest("ul");K=N.find(".in");J=N.find(".collapse:not(.in)");if(K&&K.length){M=K.data("collapse");if(M&&M.transitioning){return}K.collapse("hide");J.collapse("show");O.find("span").toggleClass(L.timeIcon+" "+L.dateIcon);p.element.find(".input-group-addon span").toggleClass(L.timeIcon+" "+L.dateIcon)}})}if(p.isInput){p.element.on({focus:c.proxy(p.show,this),change:c.proxy(t,this),blur:c.proxy(p.hide,this)})}else{p.element.on({change:c.proxy(t,this)},"input");if(p.component){p.component.on("click",c.proxy(p.show,this))}else{p.element.on("click",c.proxy(p.show,this))}}},o=function(){c(window).on("resize.datetimepicker"+p.id,c.proxy(n,this));if(!p.isInput){c(document).on("mousedown.datetimepicker"+p.id,c.proxy(p.hide,this))}},s=function(){p.widget.off("click",".datepicker *",p.click);p.widget.off("click","[data-action]");p.widget.off("mousedown",p.stopEvent);if(p.options.pickDate&&p.options.pickTime){p.widget.off("click.togglePicker")}if(p.isInput){p.element.off({focus:p.show,change:p.change})}else{p.element.off({change:p.change},"input");if(p.component){p.component.off("click",p.show)}else{p.element.off("click",p.show)}}},j=function(){c(window).off("resize.datetimepicker"+p.id);if(!p.isInput){c(document).off("mousedown.datetimepicker"+p.id)}},y=function(){if(p.element){var K=p.element.parents(),J=false,L;for(L=0;L=2){return J}else{return"0"+J}},G=function(M,O,L,K,J,N){if(K&&J){return('

")}else{if(J){return('")}else{return('")}}},E={modes:[{clsName:"days",navFnc:"month",navStep:1},{clsName:"months",navFnc:"year",navStep:1},{clsName:"years",navFnc:"year",navStep:10}],headTemplate:'‹›',contTemplate:''},l={hourTemplate:'',minuteTemplate:''};E.template='
'+E.headTemplate+'
'+E.headTemplate+E.contTemplate+'
'+E.headTemplate+E.contTemplate+"
";l.getTemplate=function(K,J){return('
'+l.hourTemplate+' :'+l.minuteTemplate+'
')};p.destroy=function(){s();j();p.widget.remove();p.element.removeData("DateTimePicker");p.component.removeData("DateTimePicker")};p.show=function(J){p.widget.show();p.height=p.component?p.component.outerHeight():p.element.outerHeight();n();p.element.trigger({type:"show.dp",date:p.date});o();if(J){D(J)}},p.disable=function(){p.element.find("input").prop("disabled",true);s()},p.enable=function(){p.element.find("input").prop("disabled",false);H()},p.hide=function(){var L=p.widget.find(".collapse"),J,K;for(J=0;J (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.2 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.2 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('