local_pac 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.bowerrc +4 -0
- data/.gitignore +1 -0
- data/Gemfile.lock +32 -30
- data/app/assets/javascripts/application.js +21 -5
- data/app/assets/stylesheets/application.css.scss +111 -10
- data/app/assets/stylesheets/buttons.scss +81 -0
- data/app/controllers/application_controller.rb +51 -15
- data/app/controllers/assets_controller.rb +2 -1
- data/app/controllers/git_hook_controller.rb +29 -39
- data/app/controllers/lookup_controller.rb +41 -6
- data/app/locales/en.yml +30 -5
- data/app/views/application.haml +12 -1
- data/app/views/form.haml +23 -5
- data/bin/local_pac +0 -1
- data/bower.json +9 -0
- data/lib/local_pac/actions/create_file.rb +1 -1
- data/lib/local_pac/actions/create_output.rb +1 -1
- data/lib/local_pac/actions/handle_error.rb +12 -1
- data/lib/local_pac/config.rb +1 -1
- data/lib/local_pac/error_handler.rb +54 -7
- data/lib/local_pac/error_messages.rb +132 -0
- data/lib/local_pac/exceptions.rb +33 -12
- data/lib/local_pac/main.rb +11 -0
- data/lib/local_pac/pac_file_validator.rb +10 -1
- data/lib/local_pac/proxy_pac/pac_engine.rb +9 -6
- data/lib/local_pac/proxy_pac/pac_parser.rb +3 -1
- data/lib/local_pac/version.rb +1 -1
- data/lib/local_pac.rb +4 -2
- data/local_pac.gemspec +8 -8
- data/script/acceptance_test +0 -0
- data/script/bootstrap +59 -1
- data/spec/actions/handle_error_spec.rb +45 -0
- data/spec/error_handler_spec.rb +89 -8
- data/spec/features/check_git_push_spec.rb +2 -2
- data/spec/features/lookup_proxy_spec.rb +63 -1
- data/spec/pac_file_validator_spec.rb +1 -1
- data/spec/proxy_pac/pac_engine_spec.rb +20 -0
- data/spec/proxy_pac/pac_parser_spec.rb +1 -1
- data/spec/support/helper_features.rb +12 -4
- data/spec/support/reporting.rb +5 -1
- data/spec/support/rspec.rb +0 -3
- data/vendor/assets/components/.keep +0 -0
- data/vendor/assets/components/bootstrap/Gruntfile.js +421 -0
- data/vendor/assets/components/bootstrap/LICENSE +21 -0
- data/vendor/assets/components/bootstrap/README.md +173 -0
- data/vendor/assets/components/bootstrap/bower.json +24 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap-theme.css +347 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap-theme.min.css +7 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap.css +5785 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap.css.map +1 -0
- data/vendor/assets/components/bootstrap/dist/css/bootstrap.min.css +7 -0
- data/vendor/assets/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap/dist/js/bootstrap.js +1951 -0
- data/vendor/assets/components/bootstrap/dist/js/bootstrap.min.js +6 -0
- data/vendor/assets/components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap/grunt/bs-glyphicons-data-generator.js +34 -0
- data/vendor/assets/components/bootstrap/grunt/bs-lessdoc-parser.js +236 -0
- data/vendor/assets/components/bootstrap/grunt/bs-raw-files-generator.js +31 -0
- data/vendor/assets/components/bootstrap/grunt/shrinkwrap.js +28 -0
- data/vendor/assets/components/bootstrap/js/affix.js +137 -0
- data/vendor/assets/components/bootstrap/js/alert.js +88 -0
- data/vendor/assets/components/bootstrap/js/button.js +107 -0
- data/vendor/assets/components/bootstrap/js/carousel.js +205 -0
- data/vendor/assets/components/bootstrap/js/collapse.js +170 -0
- data/vendor/assets/components/bootstrap/js/dropdown.js +147 -0
- data/vendor/assets/components/bootstrap/js/modal.js +243 -0
- data/vendor/assets/components/bootstrap/js/popover.js +110 -0
- data/vendor/assets/components/bootstrap/js/scrollspy.js +153 -0
- data/vendor/assets/components/bootstrap/js/tab.js +125 -0
- data/vendor/assets/components/bootstrap/js/tooltip.js +399 -0
- data/vendor/assets/components/bootstrap/js/transition.js +48 -0
- data/vendor/assets/components/bootstrap/less/alerts.less +67 -0
- data/vendor/assets/components/bootstrap/less/badges.less +55 -0
- data/vendor/assets/components/bootstrap/less/bootstrap.less +49 -0
- data/vendor/assets/components/bootstrap/less/breadcrumbs.less +26 -0
- data/vendor/assets/components/bootstrap/less/button-groups.less +226 -0
- data/vendor/assets/components/bootstrap/less/buttons.less +159 -0
- data/vendor/assets/components/bootstrap/less/carousel.less +232 -0
- data/vendor/assets/components/bootstrap/less/close.less +33 -0
- data/vendor/assets/components/bootstrap/less/code.less +63 -0
- data/vendor/assets/components/bootstrap/less/component-animations.less +29 -0
- data/vendor/assets/components/bootstrap/less/dropdowns.less +213 -0
- data/vendor/assets/components/bootstrap/less/forms.less +438 -0
- data/vendor/assets/components/bootstrap/less/glyphicons.less +233 -0
- data/vendor/assets/components/bootstrap/less/grid.less +84 -0
- data/vendor/assets/components/bootstrap/less/input-groups.less +162 -0
- data/vendor/assets/components/bootstrap/less/jumbotron.less +44 -0
- data/vendor/assets/components/bootstrap/less/labels.less +64 -0
- data/vendor/assets/components/bootstrap/less/list-group.less +110 -0
- data/vendor/assets/components/bootstrap/less/media.less +56 -0
- data/vendor/assets/components/bootstrap/less/mixins.less +929 -0
- data/vendor/assets/components/bootstrap/less/modals.less +139 -0
- data/vendor/assets/components/bootstrap/less/navbar.less +616 -0
- data/vendor/assets/components/bootstrap/less/navs.less +242 -0
- data/vendor/assets/components/bootstrap/less/normalize.less +423 -0
- data/vendor/assets/components/bootstrap/less/pager.less +55 -0
- data/vendor/assets/components/bootstrap/less/pagination.less +88 -0
- data/vendor/assets/components/bootstrap/less/panels.less +241 -0
- data/vendor/assets/components/bootstrap/less/popovers.less +133 -0
- data/vendor/assets/components/bootstrap/less/print.less +101 -0
- data/vendor/assets/components/bootstrap/less/progress-bars.less +80 -0
- data/vendor/assets/components/bootstrap/less/responsive-utilities.less +92 -0
- data/vendor/assets/components/bootstrap/less/scaffolding.less +134 -0
- data/vendor/assets/components/bootstrap/less/tables.less +233 -0
- data/vendor/assets/components/bootstrap/less/theme.less +247 -0
- data/vendor/assets/components/bootstrap/less/thumbnails.less +36 -0
- data/vendor/assets/components/bootstrap/less/tooltip.less +95 -0
- data/vendor/assets/components/bootstrap/less/type.less +293 -0
- data/vendor/assets/components/bootstrap/less/utilities.less +56 -0
- data/vendor/assets/components/bootstrap/less/variables.less +829 -0
- data/vendor/assets/components/bootstrap/less/wells.less +29 -0
- data/vendor/assets/components/bootstrap/package.json +70 -0
- data/vendor/assets/components/bootstrap/test-infra/README.md +100 -0
- data/vendor/assets/components/bootstrap/test-infra/npm-shrinkwrap.canonical.json +1 -0
- data/vendor/assets/components/bootstrap/test-infra/requirements.txt +1 -0
- data/vendor/assets/components/bootstrap/test-infra/s3_cache.py +107 -0
- data/vendor/assets/components/bootstrap/test-infra/sauce_browsers.yml +83 -0
- data/vendor/assets/components/bootstrap/test-infra/uncached-npm-install.sh +4 -0
- data/vendor/assets/components/bootstrap-sass/CNAME +1 -0
- data/vendor/assets/components/bootstrap-sass/CONTRIBUTING.md +61 -0
- data/vendor/assets/components/bootstrap-sass/DOCS-LICENSE +319 -0
- data/vendor/assets/components/bootstrap-sass/Gemfile +5 -0
- data/vendor/assets/components/bootstrap-sass/Gemfile.lock +14 -0
- data/vendor/assets/components/bootstrap-sass/Gruntfile.js +244 -0
- data/vendor/assets/components/bootstrap-sass/LICENSE +176 -0
- data/vendor/assets/components/bootstrap-sass/LICENSE-MIT +21 -0
- data/vendor/assets/components/bootstrap-sass/README.md +277 -0
- data/vendor/assets/components/bootstrap-sass/Rakefile +44 -0
- data/vendor/assets/components/bootstrap-sass/_config.yml +25 -0
- data/vendor/assets/components/bootstrap-sass/_includes/ads.html +1 -0
- data/vendor/assets/components/bootstrap-sass/_includes/footer.html +34 -0
- data/vendor/assets/components/bootstrap-sass/_includes/header.html +42 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-about.html +12 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-components.html +137 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-css.html +99 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-customize.html +40 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-getting-started.html +44 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-javascript.html +88 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-main.html +37 -0
- data/vendor/assets/components/bootstrap-sass/_includes/old-bs-docs.html +8 -0
- data/vendor/assets/components/bootstrap-sass/_includes/social-buttons.html +16 -0
- data/vendor/assets/components/bootstrap-sass/_layouts/default.html +79 -0
- data/vendor/assets/components/bootstrap-sass/_layouts/home.html +47 -0
- data/vendor/assets/components/bootstrap-sass/about.html +93 -0
- data/vendor/assets/components/bootstrap-sass/bower.json +11 -0
- data/vendor/assets/components/bootstrap-sass/browserstack.json +37 -0
- data/vendor/assets/components/bootstrap-sass/components.html +3689 -0
- data/vendor/assets/components/bootstrap-sass/composer.json +28 -0
- data/vendor/assets/components/bootstrap-sass/css.html +2674 -0
- data/vendor/assets/components/bootstrap-sass/customize.html +1715 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.css +427 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.min.css +1 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.css +6350 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.min.css +1 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.js +2002 -0
- data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.min.js +9 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/css/docs.css +1195 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/css/pygments-manni.css +66 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/application.js +103 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/customizer.js +332 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/filesaver.js +169 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/holder.js +404 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +12 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/jszip.js +1467 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/less.js +9 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/raw-files.js +3 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/uglify.js +14 -0
- data/vendor/assets/components/bootstrap-sass/examples/carousel/carousel.css +148 -0
- data/vendor/assets/components/bootstrap-sass/examples/carousel/index.html +206 -0
- data/vendor/assets/components/bootstrap-sass/examples/grid/grid.css +28 -0
- data/vendor/assets/components/bootstrap-sass/examples/grid/index.html +148 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron/index.html +99 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron/jumbotron.css +5 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/index.html +82 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
- data/vendor/assets/components/bootstrap-sass/examples/justified-nav/index.html +83 -0
- data/vendor/assets/components/bootstrap-sass/examples/justified-nav/justified-nav.css +88 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar/index.html +88 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar/navbar.css +8 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/index.html +91 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/index.html +92 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +7 -0
- data/vendor/assets/components/bootstrap-sass/examples/non-responsive/index.html +101 -0
- data/vendor/assets/components/bootstrap-sass/examples/non-responsive/non-responsive.css +116 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/index.html +130 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.css +50 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.js +5 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/signin/index.html +50 -0
- data/vendor/assets/components/bootstrap-sass/examples/signin/signin.css +40 -0
- data/vendor/assets/components/bootstrap-sass/examples/starter-template/index.html +68 -0
- data/vendor/assets/components/bootstrap-sass/examples/starter-template/starter-template.css +7 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/index.html +55 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +38 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/index.html +91 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
- data/vendor/assets/components/bootstrap-sass/examples/theme/index.html +384 -0
- data/vendor/assets/components/bootstrap-sass/examples/theme/theme.css +14 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap-sass/getting-started.html +1021 -0
- data/vendor/assets/components/bootstrap-sass/index.html +16 -0
- data/vendor/assets/components/bootstrap-sass/javascript.html +1983 -0
- data/vendor/assets/components/bootstrap-sass/js/affix.js +126 -0
- data/vendor/assets/components/bootstrap-sass/js/alert.js +98 -0
- data/vendor/assets/components/bootstrap-sass/js/button.js +109 -0
- data/vendor/assets/components/bootstrap-sass/js/carousel.js +217 -0
- data/vendor/assets/components/bootstrap-sass/js/collapse.js +179 -0
- data/vendor/assets/components/bootstrap-sass/js/dropdown.js +154 -0
- data/vendor/assets/components/bootstrap-sass/js/modal.js +246 -0
- data/vendor/assets/components/bootstrap-sass/js/popover.js +117 -0
- data/vendor/assets/components/bootstrap-sass/js/scrollspy.js +158 -0
- data/vendor/assets/components/bootstrap-sass/js/tab.js +135 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/index.html +52 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/affix.js +25 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/alert.js +62 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/button.js +116 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/carousel.js +87 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/collapse.js +164 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/dropdown.js +219 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/modal.js +196 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/phantom.js +69 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/popover.js +133 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/scrollspy.js +37 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/tab.js +86 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/tooltip.js +437 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/transition.js +13 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/jquery.js +6 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.css +232 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.js +1510 -0
- data/vendor/assets/components/bootstrap-sass/js/tooltip.js +386 -0
- data/vendor/assets/components/bootstrap-sass/js/transition.js +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_alerts.scss +67 -0
- data/vendor/assets/components/bootstrap-sass/lib/_badges.scss +51 -0
- data/vendor/assets/components/bootstrap-sass/lib/_breadcrumbs.scss +23 -0
- data/vendor/assets/components/bootstrap-sass/lib/_button-groups.scss +253 -0
- data/vendor/assets/components/bootstrap-sass/lib/_buttons.scss +158 -0
- data/vendor/assets/components/bootstrap-sass/lib/_carousel.scss +231 -0
- data/vendor/assets/components/bootstrap-sass/lib/_close.scss +35 -0
- data/vendor/assets/components/bootstrap-sass/lib/_code.scss +53 -0
- data/vendor/assets/components/bootstrap-sass/lib/_component-animations.scss +29 -0
- data/vendor/assets/components/bootstrap-sass/lib/_dropdowns.scss +193 -0
- data/vendor/assets/components/bootstrap-sass/lib/_forms.scss +363 -0
- data/vendor/assets/components/bootstrap-sass/lib/_glyphicons.scss +237 -0
- data/vendor/assets/components/bootstrap-sass/lib/_grid.scss +93 -0
- data/vendor/assets/components/bootstrap-sass/lib/_input-groups.scss +136 -0
- data/vendor/assets/components/bootstrap-sass/lib/_jumbotron.scss +40 -0
- data/vendor/assets/components/bootstrap-sass/lib/_labels.scss +58 -0
- data/vendor/assets/components/bootstrap-sass/lib/_list-group.scss +88 -0
- data/vendor/assets/components/bootstrap-sass/lib/_media.scss +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_mixins.scss +861 -0
- data/vendor/assets/components/bootstrap-sass/lib/_modals.scss +132 -0
- data/vendor/assets/components/bootstrap-sass/lib/_navbar.scss +628 -0
- data/vendor/assets/components/bootstrap-sass/lib/_navs.scss +262 -0
- data/vendor/assets/components/bootstrap-sass/lib/_normalize.scss +406 -0
- data/vendor/assets/components/bootstrap-sass/lib/_pager.scss +55 -0
- data/vendor/assets/components/bootstrap-sass/lib/_pagination.scss +85 -0
- data/vendor/assets/components/bootstrap-sass/lib/_panels.scss +172 -0
- data/vendor/assets/components/bootstrap-sass/lib/_popovers.scss +133 -0
- data/vendor/assets/components/bootstrap-sass/lib/_print.scss +105 -0
- data/vendor/assets/components/bootstrap-sass/lib/_progress-bars.scss +92 -0
- data/vendor/assets/components/bootstrap-sass/lib/_responsive-utilities.scss +198 -0
- data/vendor/assets/components/bootstrap-sass/lib/_scaffolding.scss +119 -0
- data/vendor/assets/components/bootstrap-sass/lib/_tables.scss +244 -0
- data/vendor/assets/components/bootstrap-sass/lib/_theme.scss +247 -0
- data/vendor/assets/components/bootstrap-sass/lib/_thumbnails.scss +32 -0
- data/vendor/assets/components/bootstrap-sass/lib/_tooltip.scss +95 -0
- data/vendor/assets/components/bootstrap-sass/lib/_type.scss +279 -0
- data/vendor/assets/components/bootstrap-sass/lib/_utilities.scss +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_variables.scss +637 -0
- data/vendor/assets/components/bootstrap-sass/lib/_wells.scss +29 -0
- data/vendor/assets/components/bootstrap-sass/lib/bootstrap.scss +49 -0
- data/vendor/assets/components/bootstrap-sass/package.json +40 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/CONTRIBUTING.md +12 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/LICENSE +201 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/Makefile +22 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/README.md +144 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/bower.json +35 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css +174 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css +8 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js +28 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/component.json +10 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/package.json +24 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js +1089 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar-ma.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bg.js +86 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.br.js +107 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bs.js +139 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ca.js +66 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cs.js +155 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cv.js +59 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.da.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.de.js +71 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.el.js +79 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-au.js +62 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-ca.js +59 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-gb.js +63 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eo.js +65 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.es.js +66 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.et.js +60 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eu.js +60 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fa.js +97 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fi.js +103 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr-ca.js +54 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr.js +58 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.gl.js +71 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.he.js +77 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hi.js +105 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hr.js +140 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hu.js +98 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.id.js +67 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.is.js +124 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.it.js +59 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ja.js +58 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ka.js +108 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ko.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lt.js +118 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lv.js +77 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ml.js +64 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.mr.js +104 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ms-my.js +66 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nb.js +57 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ne.js +105 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nl.js +67 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nn.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pl.js +98 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pt-BR.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pt.js +60 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ro.js +56 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ru.js +163 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sk.js +156 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sl.js +144 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sq.js +57 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sv.js +63 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.th.js +58 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tr.js +93 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tzm-la.js +55 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tzm.js +55 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.uk.js +157 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.uz.js +55 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.vn.js +62 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.zh-CN.js +108 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.zh-TW.js +84 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less +5 -0
- data/vendor/assets/components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker.less +246 -0
- data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
- data/vendor/assets/components/jquery/bower.json +27 -0
- data/vendor/assets/components/jquery/dist/jquery.js +9111 -0
- data/{app/assets/javascripts/jquery-min.js → vendor/assets/components/jquery/dist/jquery.min.js} +1 -0
- data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
- data/vendor/assets/components/jquery/src/ajax/jsonp.js +89 -0
- data/vendor/assets/components/jquery/src/ajax/load.js +75 -0
- data/vendor/assets/components/jquery/src/ajax/parseJSON.js +13 -0
- data/vendor/assets/components/jquery/src/ajax/parseXML.js +28 -0
- data/vendor/assets/components/jquery/src/ajax/script.js +64 -0
- data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
- data/vendor/assets/components/jquery/src/ajax/var/rquery.js +3 -0
- data/vendor/assets/components/jquery/src/ajax/xhr.js +130 -0
- data/vendor/assets/components/jquery/src/ajax.js +806 -0
- data/vendor/assets/components/jquery/src/attributes/attr.js +143 -0
- data/vendor/assets/components/jquery/src/attributes/classes.js +158 -0
- data/vendor/assets/components/jquery/src/attributes/prop.js +96 -0
- data/vendor/assets/components/jquery/src/attributes/support.js +35 -0
- data/vendor/assets/components/jquery/src/attributes/val.js +153 -0
- data/vendor/assets/components/jquery/src/attributes.js +11 -0
- data/vendor/assets/components/jquery/src/callbacks.js +205 -0
- data/vendor/assets/components/jquery/src/core/access.js +60 -0
- data/vendor/assets/components/jquery/src/core/init.js +123 -0
- data/vendor/assets/components/jquery/src/core/parseHTML.js +39 -0
- data/vendor/assets/components/jquery/src/core/ready.js +96 -0
- data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +4 -0
- data/vendor/assets/components/jquery/src/core.js +500 -0
- data/vendor/assets/components/jquery/src/css/addGetHookIf.js +24 -0
- data/vendor/assets/components/jquery/src/css/curCSS.js +57 -0
- data/vendor/assets/components/jquery/src/css/defaultDisplay.js +69 -0
- data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/vendor/assets/components/jquery/src/css/support.js +83 -0
- data/vendor/assets/components/jquery/src/css/swap.js +28 -0
- data/vendor/assets/components/jquery/src/css/var/cssExpand.js +3 -0
- data/vendor/assets/components/jquery/src/css/var/getStyles.js +5 -0
- data/vendor/assets/components/jquery/src/css/var/isHidden.js +13 -0
- data/vendor/assets/components/jquery/src/css/var/rmargin.js +3 -0
- data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/vendor/assets/components/jquery/src/css.js +455 -0
- data/vendor/assets/components/jquery/src/data/Data.js +181 -0
- data/vendor/assets/components/jquery/src/data/accepts.js +20 -0
- data/vendor/assets/components/jquery/src/data/var/data_priv.js +5 -0
- data/vendor/assets/components/jquery/src/data/var/data_user.js +5 -0
- data/vendor/assets/components/jquery/src/data.js +175 -0
- data/vendor/assets/components/jquery/src/deferred.js +149 -0
- data/vendor/assets/components/jquery/src/deprecated.js +13 -0
- data/vendor/assets/components/jquery/src/dimensions.js +50 -0
- data/vendor/assets/components/jquery/src/effects/Tween.js +114 -0
- data/vendor/assets/components/jquery/src/effects/animatedSelector.js +13 -0
- data/vendor/assets/components/jquery/src/effects.js +642 -0
- data/vendor/assets/components/jquery/src/event/alias.js +39 -0
- data/vendor/assets/components/jquery/src/event/support.js +9 -0
- data/vendor/assets/components/jquery/src/event.js +859 -0
- data/vendor/assets/components/jquery/src/exports/amd.js +18 -0
- data/vendor/assets/components/jquery/src/exports/global.js +32 -0
- data/vendor/assets/components/jquery/src/intro.js +44 -0
- data/vendor/assets/components/jquery/src/jquery.js +36 -0
- data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +18 -0
- data/vendor/assets/components/jquery/src/manipulation/support.js +24 -0
- data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/vendor/assets/components/jquery/src/manipulation.js +583 -0
- data/vendor/assets/components/jquery/src/offset.js +204 -0
- data/vendor/assets/components/jquery/src/outro.js +1 -0
- data/vendor/assets/components/jquery/src/queue/delay.js +22 -0
- data/vendor/assets/components/jquery/src/queue.js +142 -0
- data/vendor/assets/components/jquery/src/selector-native.js +171 -0
- data/vendor/assets/components/jquery/src/selector-sizzle.js +14 -0
- data/vendor/assets/components/jquery/src/selector.js +1 -0
- data/vendor/assets/components/jquery/src/serialize.js +111 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.js +2015 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/vendor/assets/components/jquery/src/traversing/findFilter.js +100 -0
- data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/vendor/assets/components/jquery/src/traversing.js +200 -0
- data/vendor/assets/components/jquery/src/var/arr.js +3 -0
- data/vendor/assets/components/jquery/src/var/class2type.js +4 -0
- data/vendor/assets/components/jquery/src/var/concat.js +5 -0
- data/vendor/assets/components/jquery/src/var/hasOwn.js +5 -0
- data/vendor/assets/components/jquery/src/var/indexOf.js +5 -0
- data/vendor/assets/components/jquery/src/var/pnum.js +3 -0
- data/vendor/assets/components/jquery/src/var/push.js +5 -0
- data/vendor/assets/components/jquery/src/var/rnotwhite.js +3 -0
- data/vendor/assets/components/jquery/src/var/slice.js +5 -0
- data/vendor/assets/components/jquery/src/var/strundefined.js +3 -0
- data/vendor/assets/components/jquery/src/var/support.js +4 -0
- data/vendor/assets/components/jquery/src/var/toString.js +5 -0
- data/vendor/assets/components/jquery/src/var/trim.js +3 -0
- data/vendor/assets/components/jquery/src/wrap.js +78 -0
- data/vendor/assets/components/moment/LICENSE +22 -0
- data/vendor/assets/components/moment/bower.json +20 -0
- data/vendor/assets/components/moment/lang/ar-ma.js +56 -0
- data/vendor/assets/components/moment/lang/ar.js +56 -0
- data/vendor/assets/components/moment/lang/bg.js +86 -0
- data/vendor/assets/components/moment/lang/br.js +107 -0
- data/vendor/assets/components/moment/lang/bs.js +139 -0
- data/vendor/assets/components/moment/lang/ca.js +66 -0
- data/vendor/assets/components/moment/lang/cs.js +155 -0
- data/vendor/assets/components/moment/lang/cv.js +59 -0
- data/vendor/assets/components/moment/lang/cy.js +77 -0
- data/vendor/assets/components/moment/lang/da.js +56 -0
- data/vendor/assets/components/moment/lang/de.js +71 -0
- data/vendor/assets/components/moment/lang/el.js +79 -0
- data/vendor/assets/components/moment/lang/en-au.js +62 -0
- data/vendor/assets/components/moment/lang/en-ca.js +59 -0
- data/vendor/assets/components/moment/lang/en-gb.js +63 -0
- data/vendor/assets/components/moment/lang/eo.js +65 -0
- data/vendor/assets/components/moment/lang/es.js +66 -0
- data/vendor/assets/components/moment/lang/et.js +76 -0
- data/vendor/assets/components/moment/lang/eu.js +60 -0
- data/vendor/assets/components/moment/lang/fa.js +97 -0
- data/vendor/assets/components/moment/lang/fi.js +103 -0
- data/vendor/assets/components/moment/lang/fo.js +56 -0
- data/vendor/assets/components/moment/lang/fr-ca.js +54 -0
- data/vendor/assets/components/moment/lang/fr.js +58 -0
- data/vendor/assets/components/moment/lang/gl.js +71 -0
- data/vendor/assets/components/moment/lang/he.js +77 -0
- data/vendor/assets/components/moment/lang/hi.js +105 -0
- data/vendor/assets/components/moment/lang/hr.js +140 -0
- data/vendor/assets/components/moment/lang/hu.js +98 -0
- data/vendor/assets/components/moment/lang/hy-am.js +113 -0
- data/vendor/assets/components/moment/lang/id.js +67 -0
- data/vendor/assets/components/moment/lang/is.js +124 -0
- data/vendor/assets/components/moment/lang/it.js +59 -0
- data/vendor/assets/components/moment/lang/ja.js +58 -0
- data/vendor/assets/components/moment/lang/ka.js +108 -0
- data/vendor/assets/components/moment/lang/ko.js +63 -0
- data/vendor/assets/components/moment/lang/lb.js +160 -0
- data/vendor/assets/components/moment/lang/lt.js +118 -0
- data/vendor/assets/components/moment/lang/lv.js +77 -0
- data/vendor/assets/components/moment/lang/mk.js +86 -0
- data/vendor/assets/components/moment/lang/ml.js +64 -0
- data/vendor/assets/components/moment/lang/mr.js +104 -0
- data/vendor/assets/components/moment/lang/ms-my.js +66 -0
- data/vendor/assets/components/moment/lang/nb.js +57 -0
- data/vendor/assets/components/moment/lang/ne.js +105 -0
- data/vendor/assets/components/moment/lang/nl.js +67 -0
- data/vendor/assets/components/moment/lang/nn.js +56 -0
- data/vendor/assets/components/moment/lang/pl.js +98 -0
- data/vendor/assets/components/moment/lang/pt-br.js +56 -0
- data/vendor/assets/components/moment/lang/pt.js +60 -0
- data/vendor/assets/components/moment/lang/ro.js +72 -0
- data/vendor/assets/components/moment/lang/rs.js +139 -0
- data/vendor/assets/components/moment/lang/ru.js +163 -0
- data/vendor/assets/components/moment/lang/sk.js +156 -0
- data/vendor/assets/components/moment/lang/sl.js +144 -0
- data/vendor/assets/components/moment/lang/sq.js +57 -0
- data/vendor/assets/components/moment/lang/sv.js +63 -0
- data/vendor/assets/components/moment/lang/ta.js +112 -0
- data/vendor/assets/components/moment/lang/th.js +58 -0
- data/vendor/assets/components/moment/lang/tl-ph.js +58 -0
- data/vendor/assets/components/moment/lang/tr.js +93 -0
- data/vendor/assets/components/moment/lang/tzm-la.js +55 -0
- data/vendor/assets/components/moment/lang/tzm.js +55 -0
- data/vendor/assets/components/moment/lang/uk.js +157 -0
- data/vendor/assets/components/moment/lang/uz.js +55 -0
- data/vendor/assets/components/moment/lang/vn.js +62 -0
- data/vendor/assets/components/moment/lang/zh-cn.js +108 -0
- data/vendor/assets/components/moment/lang/zh-tw.js +84 -0
- data/vendor/assets/components/moment/min/langs.js +5841 -0
- data/vendor/assets/components/moment/min/langs.min.js +3 -0
- data/vendor/assets/components/moment/min/moment-with-langs.js +7768 -0
- data/vendor/assets/components/moment/min/moment-with-langs.min.js +9 -0
- data/vendor/assets/components/moment/min/moment.min.js +6 -0
- data/vendor/assets/components/moment/moment.js +2400 -0
- data/vendor/assets/components/moment/readme.md +349 -0
- data/{app → vendor}/assets/fonts/open-sans/Apache License Version 2.txt +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Bold-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Bold-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Bold-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Bold-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-BoldItalic-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-BoldItalic-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-BoldItalic-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-BoldItalic-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBold-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBold-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBold-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBold-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBoldItalic-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Italic-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Italic-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Italic-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Italic-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Light-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Light-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Light-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Light-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-LightItalic-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-LightItalic-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-LightItalic-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-LightItalic-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Regular-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Regular-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Regular-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Regular-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Semibold-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Semibold-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Semibold-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-Semibold-webfont.woff +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-SemiboldItalic-webfont.eot +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-SemiboldItalic-webfont.svg +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- data/{app → vendor}/assets/fonts/open-sans/OpenSans-SemiboldItalic-webfont.woff +0 -0
- data/{app → vendor}/assets/stylesheets/open-sans.css.scss +0 -0
- metadata +556 -49
- data/lib/local_pac/runner.rb +0 -29
- data/spec/runner_spec.rb +0 -42
@@ -0,0 +1,29 @@
|
|
1
|
+
//
|
2
|
+
// Wells
|
3
|
+
// --------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
// Base class
|
7
|
+
.well {
|
8
|
+
min-height: 20px;
|
9
|
+
padding: 19px;
|
10
|
+
margin-bottom: 20px;
|
11
|
+
background-color: @well-bg;
|
12
|
+
border: 1px solid @well-border;
|
13
|
+
border-radius: @border-radius-base;
|
14
|
+
.box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
|
15
|
+
blockquote {
|
16
|
+
border-color: #ddd;
|
17
|
+
border-color: rgba(0,0,0,.15);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
// Sizes
|
22
|
+
.well-lg {
|
23
|
+
padding: 24px;
|
24
|
+
border-radius: @border-radius-large;
|
25
|
+
}
|
26
|
+
.well-sm {
|
27
|
+
padding: 9px;
|
28
|
+
border-radius: @border-radius-small;
|
29
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{
|
2
|
+
"name": "bootstrap",
|
3
|
+
"description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development.",
|
4
|
+
"version": "3.1.1",
|
5
|
+
"keywords": [
|
6
|
+
"bootstrap",
|
7
|
+
"css"
|
8
|
+
],
|
9
|
+
"homepage": "http://getbootstrap.com",
|
10
|
+
"author": "Twitter, Inc.",
|
11
|
+
"scripts": {
|
12
|
+
"test": "grunt test"
|
13
|
+
},
|
14
|
+
"style": "./dist/css/bootstrap.css",
|
15
|
+
"less": "./less/bootstrap.less",
|
16
|
+
"repository": {
|
17
|
+
"type": "git",
|
18
|
+
"url": "https://github.com/twbs/bootstrap.git"
|
19
|
+
},
|
20
|
+
"bugs": {
|
21
|
+
"url": "https://github.com/twbs/bootstrap/issues"
|
22
|
+
},
|
23
|
+
"license": {
|
24
|
+
"type": "MIT",
|
25
|
+
"url": "https://github.com/twbs/bootstrap/blob/master/LICENSE"
|
26
|
+
},
|
27
|
+
"devDependencies": {
|
28
|
+
"btoa": "~1.1.1",
|
29
|
+
"canonical-json": "~0.0.3",
|
30
|
+
"grunt": "~0.4.2",
|
31
|
+
"grunt-banner": "~0.2.0",
|
32
|
+
"grunt-contrib-clean": "~0.5.0",
|
33
|
+
"grunt-contrib-concat": "~0.3.0",
|
34
|
+
"grunt-contrib-connect": "~0.6.0",
|
35
|
+
"grunt-contrib-copy": "~0.5.0",
|
36
|
+
"grunt-contrib-csslint": "~0.2.0",
|
37
|
+
"grunt-contrib-cssmin": "~0.7.0",
|
38
|
+
"grunt-contrib-jade": "~0.9.1",
|
39
|
+
"grunt-contrib-jshint": "~0.8.0",
|
40
|
+
"grunt-contrib-less": "~0.9.0",
|
41
|
+
"grunt-contrib-qunit": "~0.4.0",
|
42
|
+
"grunt-contrib-uglify": "~0.3.0",
|
43
|
+
"grunt-contrib-watch": "~0.5.3",
|
44
|
+
"grunt-csscomb": "~2.0.1",
|
45
|
+
"grunt-exec": "0.4.3",
|
46
|
+
"grunt-html-validation": "~0.1.13",
|
47
|
+
"grunt-jekyll": "~0.4.1",
|
48
|
+
"grunt-jscs-checker": "~0.3.0",
|
49
|
+
"grunt-saucelabs": "~5.0.0",
|
50
|
+
"grunt-sed": "~0.1.1",
|
51
|
+
"load-grunt-tasks": "~0.3.0",
|
52
|
+
"markdown": "~0.5.0"
|
53
|
+
},
|
54
|
+
"jspm": {
|
55
|
+
"main": "js/bootstrap",
|
56
|
+
"directories": {
|
57
|
+
"example": "examples",
|
58
|
+
"lib": "dist"
|
59
|
+
},
|
60
|
+
"shim": {
|
61
|
+
"js/bootstrap": {
|
62
|
+
"imports": "jquery",
|
63
|
+
"exports": "$"
|
64
|
+
}
|
65
|
+
},
|
66
|
+
"buildConfig": {
|
67
|
+
"uglify": true
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
## What does `s3_cache.py` do?
|
2
|
+
|
3
|
+
### In general
|
4
|
+
`s3_cache.py` maintains a cache, stored in an Amazon S3 (Simple Storage Service) bucket, of a given directory whose contents are considered non-critical and are completely & solely determined by (and should be able to be regenerated from) a single given file.
|
5
|
+
|
6
|
+
The SHA-256 hash of the single file is used as the key for the cache. The directory is stored as a gzipped tarball.
|
7
|
+
|
8
|
+
All the tarballs are stored in S3's Reduced Redundancy Storage (RRS) storage class, since this is cheaper and the data is non-critical.
|
9
|
+
|
10
|
+
`s3_cache.py` itself never deletes cache entries; deletion should either be done manually or using automatic S3 lifecycle rules on the bucket.
|
11
|
+
|
12
|
+
Similar to git, `s3_cache.py` makes the assumption that [SHA-256 will effectively never have a collision](http://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-possibility-of-sha-collisions-in-practice).
|
13
|
+
|
14
|
+
|
15
|
+
### For Bootstrap specifically
|
16
|
+
`s3_cache.py` is used to cache the npm packages that our Grunt tasks depend on and the RubyGems that Jekyll depends on. (Jekyll is needed to compile our docs to HTML so that we can run them thru an HTML5 validator.)
|
17
|
+
|
18
|
+
For npm, the `node_modules` directory is cached based on our `npm-shrinkwrap.canonical.json` file.
|
19
|
+
|
20
|
+
For RubyGems, the `gemdir` of the current RVM-selected Ruby is cached based on the `pseudo_Gemfile.lock` file generated by our Travis build script.
|
21
|
+
`pseudo_Gemfile.lock` contains the versions of Ruby and Jekyll that we're using (read our `.travis.yml` for details).
|
22
|
+
|
23
|
+
|
24
|
+
## Why is `s3_cache.py` necessary?
|
25
|
+
`s3_cache.py` is used to speed up Bootstrap's Travis builds. Installing npm packages and RubyGems used to take up a significant fraction of our total build times. Also, at the time that `s3_cache.py` was written, npm was occasionally unreliable.
|
26
|
+
|
27
|
+
Travis does offer built-in caching on their paid plans, but this do-it-ourselves S3 solution is significantly cheaper since we only need caching and not Travis' other paid features.
|
28
|
+
|
29
|
+
|
30
|
+
## Setup
|
31
|
+
|
32
|
+
### Overview
|
33
|
+
1. Create an Amazon Web Services (AWS) account.
|
34
|
+
2. Create an Identity & Access Management (IAM) user, and note their credentials.
|
35
|
+
3. Create an S3 bucket.
|
36
|
+
4. Set permissions on the bucket to grant the user read+write access.
|
37
|
+
5. Set the user credentials as secure Travis environment variables.
|
38
|
+
|
39
|
+
### In detail
|
40
|
+
1. Create an AWS account.
|
41
|
+
2. Login to the [AWS Management Console](https://console.aws.amazon.com).
|
42
|
+
3. Go to the IAM Management Console.
|
43
|
+
4. Create a new user (named e.g. `travis-ci`) and generate an access key for them. Note both the Access Key ID and the Secret Access Key.
|
44
|
+
5. Note the user's ARN (Amazon Resource Name), which can be found in the "Summary" tab of the user browser. This will be of the form: `arn:aws:iam::XXXXXXXXXXXXXX:user/the-username-goes-here`
|
45
|
+
6. Note the user's access key, which can be found in the "Security Credentials" tab of the user browser.
|
46
|
+
7. Go to the S3 Management Console.
|
47
|
+
8. Create a new bucket. For a non-publicly-accessible bucket (like Bootstrap uses), it's recommended that the bucket name be random to increase security. On most *nix machines, you can easily generate a random UUID to use as the bucket name using Python:
|
48
|
+
|
49
|
+
```bash
|
50
|
+
python -c "import uuid; print(uuid.uuid4())"
|
51
|
+
```
|
52
|
+
|
53
|
+
9. Determine and note what your bucket's ARN is. The ARN for an S3 bucket is of the form: `arn:aws:s3:::the-bucket-name-goes-here`
|
54
|
+
10. In the bucket's Properties pane, in the "Permissions" section, click the "Edit bucket policy" button.
|
55
|
+
11. Input and submit an IAM Policy that grants the user at least read+write rights to the bucket. AWS has a policy generator and some examples to help with crafting the policy. Here's the policy that Bootstrap uses, with the sensitive bits censored:
|
56
|
+
|
57
|
+
```json
|
58
|
+
{
|
59
|
+
"Version": "2012-10-17",
|
60
|
+
"Id": "PolicyTravisReadWriteNoAdmin",
|
61
|
+
"Statement": [
|
62
|
+
{
|
63
|
+
"Sid": "StmtXXXXXXXXXXXXXX",
|
64
|
+
"Effect": "Allow",
|
65
|
+
"Principal": {
|
66
|
+
"AWS": "arn:aws:iam::XXXXXXXXXXXXXX:user/travis-ci"
|
67
|
+
},
|
68
|
+
"Action": [
|
69
|
+
"s3:AbortMultipartUpload",
|
70
|
+
"s3:GetObjectVersion",
|
71
|
+
"s3:ListBucket",
|
72
|
+
"s3:DeleteObject",
|
73
|
+
"s3:DeleteObjectVersion",
|
74
|
+
"s3:GetObject",
|
75
|
+
"s3:PutObject"
|
76
|
+
],
|
77
|
+
"Resource": [
|
78
|
+
"arn:aws:s3:::XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
|
79
|
+
"arn:aws:s3:::XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/*"
|
80
|
+
]
|
81
|
+
}
|
82
|
+
]
|
83
|
+
}
|
84
|
+
```
|
85
|
+
|
86
|
+
12. If you want deletion from the cache to be done automatically based on age (like Bootstrap does): In the bucket's Properties pane, in the "Lifecycle" section, add a rule to expire/delete files based on creation date.
|
87
|
+
13. Install the [`travis` RubyGem](https://github.com/travis-ci/travis): `gem install travis`
|
88
|
+
14. Encrypt the environment variables:
|
89
|
+
|
90
|
+
```bash
|
91
|
+
travis encrypt --repo twbs/bootstrap "AWS_ACCESS_KEY_ID=XXX"
|
92
|
+
travis encrypt --repo twbs/bootstrap "AWS_SECRET_ACCESS_KEY=XXX"
|
93
|
+
travis encrypt --repo twbs/bootstrap "TWBS_S3_BUCKET=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
94
|
+
```
|
95
|
+
|
96
|
+
14. Add the resulting secure environment variables to `.travis.yml`.
|
97
|
+
|
98
|
+
|
99
|
+
## Usage
|
100
|
+
Read `s3_cache.py`'s source code and Bootstrap's `.travis.yml` for how to invoke and make use of `s3_cache.py`.
|
@@ -0,0 +1 @@
|
|
1
|
+
{"dependencies":{"btoa":{"from":"btoa@~1.1.1","version":"1.1.1"},"canonical-json":{"from":"canonical-json@~0.0.3","version":"0.0.4"},"grunt":{"dependencies":{"async":{"from":"async@~0.1.22","version":"0.1.22"},"coffee-script":{"from":"coffee-script@~1.3.3","version":"1.3.3"},"colors":{"from":"colors@~0.6.0","version":"0.6.2"},"dateformat":{"from":"dateformat@1.0.2-1.2.3","version":"1.0.2-1.2.3"},"eventemitter2":{"from":"eventemitter2@~0.4.13","version":"0.4.13"},"exit":{"from":"exit@~0.1.1","version":"0.1.2"},"findup-sync":{"dependencies":{"lodash":{"from":"lodash@~1.0.1","version":"1.0.1"}},"from":"findup-sync@~0.1.2","version":"0.1.2"},"getobject":{"from":"getobject@~0.1.0","version":"0.1.0"},"glob":{"dependencies":{"graceful-fs":{"from":"graceful-fs@~1.2.0","version":"1.2.3"},"inherits":{"from":"inherits@1","version":"1.0.0"}},"from":"glob@~3.1.21","version":"3.1.21"},"hooker":{"from":"hooker@~0.2.3","version":"0.2.3"},"iconv-lite":{"from":"iconv-lite@~0.2.11","version":"0.2.11"},"js-yaml":{"dependencies":{"argparse":{"dependencies":{"underscore":{"from":"underscore@1.4.x","version":"1.4.4"},"underscore.string":{"from":"underscore.string@~2.3.1","version":"2.3.3"}},"from":"argparse@~ 0.1.11","version":"0.1.15"},"esprima":{"from":"esprima@~ 1.0.2","version":"1.0.4"}},"from":"js-yaml@~2.0.5","version":"2.0.5"},"lodash":{"from":"lodash@~0.9.2","version":"0.9.2"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@~0.2.9","version":"0.2.14"},"nopt":{"dependencies":{"abbrev":{"from":"abbrev@1","version":"1.0.4"}},"from":"nopt@~1.0.10","version":"1.0.10"},"rimraf":{"dependencies":{"graceful-fs":{"from":"graceful-fs@~1.1","version":"1.1.14"}},"from":"rimraf@~2.0.3","version":"2.0.3"},"underscore.string":{"from":"underscore.string@~2.2.1","version":"2.2.1"},"which":{"from":"which@~1.0.5","version":"1.0.5"}},"from":"grunt@~0.4.2","version":"0.4.2"},"grunt-banner":{"from":"grunt-banner@~0.2.0","version":"0.2.0"},"grunt-contrib-clean":{"dependencies":{"rimraf":{"from":"rimraf@~2.2.1","version":"2.2.6"}},"from":"grunt-contrib-clean@~0.5.0","version":"0.5.0"},"grunt-contrib-concat":{"from":"grunt-contrib-concat@~0.3.0","version":"0.3.0"},"grunt-contrib-connect":{"dependencies":{"connect":{"dependencies":{"batch":{"from":"batch@0.5.0","version":"0.5.0"},"buffer-crc32":{"from":"buffer-crc32@0.2.1","version":"0.2.1"},"bytes":{"from":"bytes@0.2.1","version":"0.2.1"},"cookie":{"from":"cookie@0.1.0","version":"0.1.0"},"cookie-signature":{"from":"cookie-signature@1.0.1","version":"1.0.1"},"debug":{"from":"debug@>= 0.7.3 < 1","version":"0.7.4"},"fresh":{"from":"fresh@0.2.0","version":"0.2.0"},"methods":{"from":"methods@0.1.0","version":"0.1.0"},"multiparty":{"dependencies":{"readable-stream":{"dependencies":{"core-util-is":{"from":"core-util-is@~1.0.0","version":"1.0.1"},"debuglog":{"from":"debuglog@0.0.2","version":"0.0.2"}},"from":"readable-stream@~1.1.9","version":"1.1.10"},"stream-counter":{"from":"stream-counter@~0.2.0","version":"0.2.0"}},"from":"multiparty@2.2.0","version":"2.2.0"},"negotiator":{"from":"negotiator@0.3.0","version":"0.3.0"},"pause":{"from":"pause@0.0.1","version":"0.0.1"},"qs":{"from":"qs@0.6.6","version":"0.6.6"},"raw-body":{"from":"raw-body@1.1.2","version":"1.1.2"},"send":{"dependencies":{"mime":{"from":"mime@~1.2.9","version":"1.2.11"},"range-parser":{"from":"range-parser@0.0.4","version":"0.0.4"}},"from":"send@0.1.4","version":"0.1.4"},"uid2":{"from":"uid2@0.0.3","version":"0.0.3"}},"from":"connect@~2.12.0","version":"2.12.0"},"connect-livereload":{"from":"connect-livereload@~0.3.0","version":"0.3.2"},"open":{"from":"open@0.0.4","version":"0.0.4"}},"from":"grunt-contrib-connect@~0.6.0","version":"0.6.0"},"grunt-contrib-copy":{"from":"grunt-contrib-copy@~0.5.0","version":"0.5.0"},"grunt-contrib-csslint":{"dependencies":{"csslint":{"dependencies":{"parserlib":{"from":"parserlib@~0.2.2","version":"0.2.4"}},"from":"csslint@~0.10.0","version":"0.10.0"}},"from":"grunt-contrib-csslint@~0.2.0","version":"0.2.0"},"grunt-contrib-cssmin":{"dependencies":{"clean-css":{"dependencies":{"commander":{"from":"commander@2.0.x","version":"2.0.0"}},"from":"clean-css@~2.0.0","version":"2.0.8"},"grunt-lib-contrib":{"dependencies":{"zlib-browserify":{"from":"zlib-browserify@0.0.1","version":"0.0.1"}},"from":"grunt-lib-contrib@~0.6.0","version":"0.6.1"}},"from":"grunt-contrib-cssmin@~0.7.0","version":"0.7.0"},"grunt-contrib-jade":{"dependencies":{"grunt-lib-contrib":{"dependencies":{"zlib-browserify":{"from":"zlib-browserify@0.0.1","version":"0.0.1"}},"from":"grunt-lib-contrib@~0.6.1","version":"0.6.1"},"jade":{"dependencies":{"character-parser":{"from":"character-parser@1.2.0","version":"1.2.0"},"commander":{"from":"commander@2.0.0","version":"2.0.0"},"constantinople":{"dependencies":{"uglify-js":{"dependencies":{"async":{"from":"async@~0.2.6","version":"0.2.10"},"optimist":{"dependencies":{"wordwrap":{"from":"wordwrap@~0.0.2","version":"0.0.2"}},"from":"optimist@~0.3.5","version":"0.3.7"},"source-map":{"dependencies":{"amdefine":{"from":"amdefine@>=0.0.4","version":"0.1.0"}},"from":"source-map@~0.1.7","version":"0.1.31"},"uglify-to-browserify":{"from":"uglify-to-browserify@~1.0.0","version":"1.0.2"}},"from":"uglify-js@~2.4.0","version":"2.4.12"}},"from":"constantinople@~1.0.2","version":"1.0.2"},"mkdirp":{"from":"mkdirp@~0.3.5","version":"0.3.5"},"monocle":{"dependencies":{"readdirp":{"dependencies":{"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@>=0.2.4","version":"0.2.14"}},"from":"readdirp@~0.2.3","version":"0.2.5"}},"from":"monocle@1.1.50","version":"1.1.50"},"transformers":{"dependencies":{"css":{"dependencies":{"css-parse":{"from":"css-parse@1.0.4","version":"1.0.4"},"css-stringify":{"from":"css-stringify@1.0.5","version":"1.0.5"}},"from":"css@~1.0.8","version":"1.0.8"},"promise":{"dependencies":{"is-promise":{"from":"is-promise@~1","version":"1.0.0"}},"from":"promise@~2.0","version":"2.0.0"},"uglify-js":{"dependencies":{"optimist":{"dependencies":{"wordwrap":{"from":"wordwrap@~0.0.2","version":"0.0.2"}},"from":"optimist@~0.3.5","version":"0.3.7"},"source-map":{"dependencies":{"amdefine":{"from":"amdefine@>=0.0.4","version":"0.1.0"}},"from":"source-map@~0.1.7","version":"0.1.31"}},"from":"uglify-js@~2.2.5","version":"2.2.5"}},"from":"transformers@2.1.0","resolved":"https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz","version":"2.1.0"},"with":{"dependencies":{"uglify-js":{"dependencies":{"async":{"from":"async@~0.2.6","version":"0.2.10"},"optimist":{"dependencies":{"wordwrap":{"from":"wordwrap@~0.0.2","version":"0.0.2"}},"from":"optimist@~0.3.5","version":"0.3.7"},"source-map":{"dependencies":{"amdefine":{"from":"amdefine@>=0.0.4","version":"0.1.0"}},"from":"source-map@~0.1.7","version":"0.1.31"},"uglify-to-browserify":{"from":"uglify-to-browserify@~1.0.0","version":"1.0.2"}},"from":"uglify-js@2.4.0","version":"2.4.0"}},"from":"with@~2.0.0","version":"2.0.0"}},"from":"jade@~1.0.2","version":"1.0.2"},"lodash-node":{"from":"lodash-node@~2.4.1","version":"2.4.1"}},"from":"grunt-contrib-jade@~0.9.1","version":"0.9.1"},"grunt-contrib-jshint":{"dependencies":{"jshint":{"dependencies":{"cli":{"dependencies":{"glob":{"dependencies":{"inherits":{"from":"inherits@2","version":"2.0.1"}},"from":"glob@>= 3.1.4","version":"3.2.8"}},"from":"cli@0.4.x","version":"0.4.5"},"console-browserify":{"from":"console-browserify@0.1.x","version":"0.1.6"},"htmlparser2":{"dependencies":{"domelementtype":{"from":"domelementtype@1","version":"1.1.1"},"domhandler":{"from":"domhandler@2.1","version":"2.1.0"},"domutils":{"from":"domutils@1.1","version":"1.1.6"},"readable-stream":{"dependencies":{"string_decoder":{"from":"string_decoder@~0.10.x","version":"0.10.25"}},"from":"readable-stream@1.0","version":"1.0.25"}},"from":"htmlparser2@3.3.x","version":"3.3.0"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@0.x.x","version":"0.2.14"},"shelljs":{"from":"shelljs@0.1.x","version":"0.1.4"},"underscore":{"from":"underscore@1.4.x","version":"1.4.4"}},"from":"jshint@~2.4.0","version":"2.4.3"}},"from":"grunt-contrib-jshint@~0.8.0","version":"0.8.0"},"grunt-contrib-less":{"dependencies":{"chalk":{"dependencies":{"ansi-styles":{"from":"ansi-styles@~1.0.0","version":"1.0.0"},"has-color":{"from":"has-color@~0.1.0","version":"0.1.4"},"strip-ansi":{"from":"strip-ansi@~0.1.0","version":"0.1.1"}},"from":"chalk@~0.4.0","version":"0.4.0"},"grunt-lib-contrib":{"dependencies":{"zlib-browserify":{"from":"zlib-browserify@0.0.1","version":"0.0.1"}},"from":"grunt-lib-contrib@~0.6.1","version":"0.6.1"},"less":{"dependencies":{"clean-css":{"dependencies":{"commander":{"from":"commander@2.0.x","version":"2.0.0"}},"from":"clean-css@2.0.x","version":"2.0.8"},"mime":{"from":"mime@1.2.x","version":"1.2.11"},"mkdirp":{"from":"mkdirp@~0.3.5","version":"0.3.5"},"request":{"dependencies":{"aws-sign2":{"from":"aws-sign2@~0.5.0","version":"0.5.0"},"forever-agent":{"from":"forever-agent@~0.5.0","version":"0.5.2"},"form-data":{"dependencies":{"async":{"from":"async@~0.2.9","version":"0.2.10"},"combined-stream":{"dependencies":{"delayed-stream":{"from":"delayed-stream@0.0.5","version":"0.0.5"}},"from":"combined-stream@~0.0.4","version":"0.0.4"}},"from":"form-data@~0.1.0","version":"0.1.2"},"hawk":{"dependencies":{"boom":{"from":"boom@0.4.x","version":"0.4.2"},"cryptiles":{"from":"cryptiles@0.2.x","version":"0.2.2"},"hoek":{"from":"hoek@0.9.x","version":"0.9.1"},"sntp":{"from":"sntp@0.2.x","version":"0.2.4"}},"from":"hawk@~1.0.0","version":"1.0.0"},"http-signature":{"dependencies":{"asn1":{"from":"asn1@0.1.11","version":"0.1.11"},"assert-plus":{"from":"assert-plus@0.1.2","version":"0.1.2"},"ctype":{"from":"ctype@0.5.2","version":"0.5.2"}},"from":"http-signature@~0.10.0","version":"0.10.0"},"json-stringify-safe":{"from":"json-stringify-safe@~5.0.0","version":"5.0.0"},"node-uuid":{"from":"node-uuid@~1.4.0","version":"1.4.1"},"oauth-sign":{"from":"oauth-sign@~0.3.0","version":"0.3.0"},"qs":{"from":"qs@~0.6.0","version":"0.6.6"},"tough-cookie":{"dependencies":{"punycode":{"from":"punycode@>=0.2.0","version":"1.2.3"}},"from":"tough-cookie@>=0.12.0","version":"0.12.1"},"tunnel-agent":{"from":"tunnel-agent@~0.3.0","version":"0.3.0"}},"from":"request@>=2.12.0","version":"2.33.0"},"source-map":{"dependencies":{"amdefine":{"from":"amdefine@>=0.0.4","version":"0.1.0"}},"from":"source-map@0.1.x","version":"0.1.31"}},"from":"less@~1.6.0","version":"1.6.3"}},"from":"grunt-contrib-less@~0.9.0","version":"0.9.0"},"grunt-contrib-qunit":{"dependencies":{"grunt-lib-phantomjs":{"dependencies":{"eventemitter2":{"from":"eventemitter2@~0.4.9","version":"0.4.13"},"phantomjs":{"dependencies":{"adm-zip":{"from":"adm-zip@0.2.1","version":"0.2.1"},"kew":{"from":"kew@~0.1.7","version":"0.1.7"},"mkdirp":{"from":"mkdirp@0.3.5","version":"0.3.5"},"ncp":{"from":"ncp@0.4.2","version":"0.4.2"},"npmconf":{"dependencies":{"config-chain":{"dependencies":{"proto-list":{"from":"proto-list@~1.2.1","version":"1.2.2"}},"from":"config-chain@~1.1.1","version":"1.1.8"},"inherits":{"from":"inherits@~1.0.0","version":"1.0.0"},"ini":{"from":"ini@~1.1.0","version":"1.1.0"},"nopt":{"dependencies":{"abbrev":{"from":"abbrev@1","version":"1.0.4"}},"from":"nopt@2","version":"2.1.2"},"once":{"from":"once@~1.1.1","version":"1.1.1"},"osenv":{"from":"osenv@0.0.3","version":"0.0.3"},"semver":{"from":"semver@~1.1.0","version":"1.1.4"}},"from":"npmconf@0.0.24","version":"0.0.24"},"rimraf":{"from":"rimraf@~2.2.2","version":"2.2.6"},"which":{"from":"which@~1.0.5","version":"1.0.5"}},"from":"phantomjs@~1.9.0-1","version":"1.9.7-1"},"semver":{"from":"semver@~1.0.14","version":"1.0.14"},"temporary":{"dependencies":{"package":{"from":"package@>= 1.0.0 < 1.2.0","version":"1.0.1"}},"from":"temporary@~0.0.4","version":"0.0.8"}},"from":"grunt-lib-phantomjs@~0.5.0","version":"0.5.0"}},"from":"grunt-contrib-qunit@~0.4.0","version":"0.4.0"},"grunt-contrib-uglify":{"dependencies":{"chalk":{"dependencies":{"ansi-styles":{"from":"ansi-styles@~1.0.0","version":"1.0.0"},"has-color":{"from":"has-color@~0.1.0","version":"0.1.4"},"strip-ansi":{"from":"strip-ansi@~0.1.0","version":"0.1.1"}},"from":"chalk@~0.4.0","version":"0.4.0"},"grunt-lib-contrib":{"dependencies":{"zlib-browserify":{"from":"zlib-browserify@0.0.1","version":"0.0.1"}},"from":"grunt-lib-contrib@~0.6.1","version":"0.6.1"},"uglify-js":{"dependencies":{"async":{"from":"async@~0.2.6","version":"0.2.10"},"optimist":{"dependencies":{"wordwrap":{"from":"wordwrap@~0.0.2","version":"0.0.2"}},"from":"optimist@~0.3.5","version":"0.3.7"},"source-map":{"dependencies":{"amdefine":{"from":"amdefine@>=0.0.4","version":"0.1.0"}},"from":"source-map@~0.1.7","version":"0.1.31"},"uglify-to-browserify":{"from":"uglify-to-browserify@~1.0.0","version":"1.0.2"}},"from":"uglify-js@~2.4.0","version":"2.4.12"}},"from":"grunt-contrib-uglify@~0.3.0","version":"0.3.2"},"grunt-contrib-watch":{"dependencies":{"gaze":{"dependencies":{"globule":{"dependencies":{"glob":{"dependencies":{"graceful-fs":{"from":"graceful-fs@~1.2.0","version":"1.2.3"},"inherits":{"from":"inherits@1","version":"1.0.0"}},"from":"glob@~3.1.21","version":"3.1.21"},"lodash":{"from":"lodash@~1.0.1","version":"1.0.1"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@~0.2.11","version":"0.2.14"}},"from":"globule@~0.1.0","version":"0.1.0"}},"from":"gaze@~0.4.0","version":"0.4.3"},"tiny-lr":{"dependencies":{"debug":{"from":"debug@~0.7.2","version":"0.7.4"},"faye-websocket":{"from":"faye-websocket@~0.4.3","version":"0.4.4"},"noptify":{"dependencies":{"nopt":{"dependencies":{"abbrev":{"from":"abbrev@1","version":"1.0.4"}},"from":"nopt@~2.0.0","version":"2.0.0"}},"from":"noptify@latest","version":"0.0.3"},"qs":{"from":"qs@~0.5.2","version":"0.5.6"}},"from":"tiny-lr@0.0.4","version":"0.0.4"}},"from":"grunt-contrib-watch@~0.5.3","version":"0.5.3"},"grunt-csscomb":{"dependencies":{"csscomb":{"dependencies":{"commander":{"from":"commander@2.0.0","version":"2.0.0"},"gonzales-pe":{"from":"gonzales-pe@2.0.x","version":"2.0.2"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@0.2.12","version":"0.2.12"},"vow":{"from":"vow@0.3.11","version":"0.3.11"},"vow-fs":{"dependencies":{"node-uuid":{"from":"node-uuid@1.4.0","version":"1.4.0"},"vow-queue":{"from":"vow-queue@0.0.2","version":"0.0.2"}},"from":"vow-fs@0.2.3","version":"0.2.3"}},"from":"csscomb@~2.0.0","version":"2.0.4"}},"from":"grunt-csscomb@~2.0.1","version":"2.0.1"},"grunt-exec":{"from":"grunt-exec@0.4.3","version":"0.4.3"},"grunt-html-validation":{"dependencies":{"colors":{"from":"colors@~0.6.0","version":"0.6.2"},"request":{"dependencies":{"aws-sign":{"from":"aws-sign@~0.3.0","version":"0.3.0"},"cookie-jar":{"from":"cookie-jar@~0.3.0","version":"0.3.0"},"forever-agent":{"from":"forever-agent@~0.5.0","version":"0.5.2"},"form-data":{"dependencies":{"async":{"from":"async@~0.2.9","version":"0.2.10"},"combined-stream":{"dependencies":{"delayed-stream":{"from":"delayed-stream@0.0.5","version":"0.0.5"}},"from":"combined-stream@~0.0.4","version":"0.0.4"}},"from":"form-data@~0.1.0","version":"0.1.2"},"hawk":{"dependencies":{"boom":{"from":"boom@0.4.x","version":"0.4.2"},"cryptiles":{"from":"cryptiles@0.2.x","version":"0.2.2"},"hoek":{"from":"hoek@0.9.x","version":"0.9.1"},"sntp":{"from":"sntp@0.2.x","version":"0.2.4"}},"from":"hawk@~1.0.0","version":"1.0.0"},"http-signature":{"dependencies":{"asn1":{"from":"asn1@0.1.11","version":"0.1.11"},"assert-plus":{"from":"assert-plus@0.1.2","version":"0.1.2"},"ctype":{"from":"ctype@0.5.2","version":"0.5.2"}},"from":"http-signature@~0.10.0","version":"0.10.0"},"json-stringify-safe":{"from":"json-stringify-safe@~5.0.0","version":"5.0.0"},"mime":{"from":"mime@~1.2.9","version":"1.2.11"},"node-uuid":{"from":"node-uuid@~1.4.0","version":"1.4.1"},"oauth-sign":{"from":"oauth-sign@~0.3.0","version":"0.3.0"},"qs":{"from":"qs@~0.6.0","version":"0.6.6"},"tunnel-agent":{"from":"tunnel-agent@~0.3.0","version":"0.3.0"}},"from":"request@~2.27.0","version":"2.27.0"},"w3cjs":{"dependencies":{"commander":{"from":"commander@2.0.x","version":"2.0.0"},"superagent":{"dependencies":{"cookiejar":{"from":"cookiejar@1.3.0","version":"1.3.0"},"debug":{"from":"debug@~0.7.2","version":"0.7.4"},"emitter-component":{"from":"emitter-component@1.0.0","version":"1.0.0"},"formidable":{"from":"formidable@1.0.14","version":"1.0.14"},"methods":{"from":"methods@0.0.1","version":"0.0.1"},"mime":{"from":"mime@1.2.5","version":"1.2.5"},"qs":{"from":"qs@0.6.5","version":"0.6.5"},"reduce-component":{"from":"reduce-component@1.0.1","version":"1.0.1"}},"from":"superagent@~0.15.7","version":"0.15.7"},"superagent-proxy":{"dependencies":{"proxy-agent":{"dependencies":{"http-proxy-agent":{"dependencies":{"agent-base":{"from":"agent-base@~1.0.1","version":"1.0.1"},"debug":{"from":"debug@~0.7.2","version":"0.7.4"},"extend":{"from":"extend@~1.2.0","version":"1.2.1"}},"from":"http-proxy-agent@0","version":"0.2.4"},"https-proxy-agent":{"dependencies":{"agent-base":{"from":"agent-base@~1.0.1","version":"1.0.1"},"debug":{"from":"debug@~0.7.2","version":"0.7.4"},"extend":{"from":"extend@~1.2.0","version":"1.2.1"}},"from":"https-proxy-agent@0","version":"0.3.3"},"lru-cache":{"from":"lru-cache@~2.3.1","version":"2.3.1"},"socks-proxy-agent":{"dependencies":{"agent-base":{"from":"agent-base@~1.0.1","version":"1.0.1"},"extend":{"from":"extend@~1.2.0","version":"1.2.1"},"rainbowsocks":{"dependencies":{"debug":{"from":"debug@~0.7.2","version":"0.7.4"}},"from":"rainbowsocks@~0.1.0","version":"0.1.1"}},"from":"socks-proxy-agent@0","version":"0.1.0"}},"from":"proxy-agent@~0.0.2","version":"0.0.2"}},"from":"superagent-proxy@~0.2.0","version":"0.2.0"}},"from":"w3cjs@~0.1.22","version":"0.1.24"}},"from":"grunt-html-validation@~0.1.13","version":"0.1.13"},"grunt-jekyll":{"dependencies":{"tmp":{"from":"tmp@0.0.21","version":"0.0.21"}},"from":"grunt-jekyll@~0.4.1","version":"0.4.1"},"grunt-jscs-checker":{"dependencies":{"hooker":{"from":"hooker@0.2.3","version":"0.2.3"},"jscs":{"dependencies":{"colors":{"from":"colors@0.6.0-1","resolved":"https://registry.npmjs.org/colors/-/colors-0.6.0-1.tgz","version":"0.6.0-1"},"commander":{"dependencies":{"keypress":{"from":"keypress@0.1.x","version":"0.1.0"}},"from":"commander@1.2.0","version":"1.2.0"},"esprima":{"from":"esprima@1.0.3","version":"1.0.3"},"glob":{"dependencies":{"inherits":{"from":"inherits@2","version":"2.0.1"}},"from":"glob@3.2.7","version":"3.2.7"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@0.2.12","version":"0.2.12"},"vow":{"from":"vow@0.3.9","version":"0.3.9"},"vow-fs":{"dependencies":{"node-uuid":{"from":"node-uuid@1.4.0","version":"1.4.0"},"vow-queue":{"from":"vow-queue@0.0.2","version":"0.0.2"}},"from":"vow-fs@0.2.3","version":"0.2.3"},"xmlbuilder":{"dependencies":{"underscore":{"from":"underscore@>=1.5.x","version":"1.6.0"}},"from":"xmlbuilder@1.1.2","version":"1.1.2"}},"from":"jscs@~1.2.0","version":"1.2.4"},"lodash.assign":{"dependencies":{"lodash._basecreatecallback":{"dependencies":{"lodash._setbinddata":{"dependencies":{"lodash._isnative":{"from":"lodash._isnative@~2.4.1","version":"2.4.1"},"lodash.noop":{"from":"lodash.noop@~2.4.1","version":"2.4.1"}},"from":"lodash._setbinddata@~2.4.1","version":"2.4.1"},"lodash.bind":{"dependencies":{"lodash._createwrapper":{"dependencies":{"lodash._basebind":{"dependencies":{"lodash._basecreate":{"dependencies":{"lodash._isnative":{"from":"lodash._isnative@~2.4.1","version":"2.4.1"},"lodash.noop":{"from":"lodash.noop@~2.4.1","version":"2.4.1"}},"from":"lodash._basecreate@~2.4.1","version":"2.4.1"},"lodash.isobject":{"from":"lodash.isobject@~2.4.1","version":"2.4.1"}},"from":"lodash._basebind@~2.4.1","version":"2.4.1"},"lodash._basecreatewrapper":{"dependencies":{"lodash._basecreate":{"dependencies":{"lodash._isnative":{"from":"lodash._isnative@~2.4.1","version":"2.4.1"},"lodash.noop":{"from":"lodash.noop@~2.4.1","version":"2.4.1"}},"from":"lodash._basecreate@~2.4.1","version":"2.4.1"},"lodash.isobject":{"from":"lodash.isobject@~2.4.1","version":"2.4.1"}},"from":"lodash._basecreatewrapper@~2.4.1","version":"2.4.1"},"lodash.isfunction":{"from":"lodash.isfunction@~2.4.1","version":"2.4.1"}},"from":"lodash._createwrapper@~2.4.1","version":"2.4.1"},"lodash._slice":{"from":"lodash._slice@~2.4.1","version":"2.4.1"}},"from":"lodash.bind@~2.4.1","version":"2.4.1"},"lodash.identity":{"from":"lodash.identity@~2.4.1","version":"2.4.1"},"lodash.support":{"dependencies":{"lodash._isnative":{"from":"lodash._isnative@~2.4.1","version":"2.4.1"}},"from":"lodash.support@~2.4.1","version":"2.4.1"}},"from":"lodash._basecreatecallback@~2.4.1","version":"2.4.1"},"lodash._objecttypes":{"from":"lodash._objecttypes@~2.4.1","version":"2.4.1"},"lodash.keys":{"dependencies":{"lodash._isnative":{"from":"lodash._isnative@~2.4.1","version":"2.4.1"},"lodash._shimkeys":{"from":"lodash._shimkeys@~2.4.1","version":"2.4.1"},"lodash.isobject":{"from":"lodash.isobject@~2.4.1","version":"2.4.1"}},"from":"lodash.keys@~2.4.1","version":"2.4.1"}},"from":"lodash.assign@2.4.1","version":"2.4.1"},"vow":{"from":"vow@0.4.0","version":"0.4.0"}},"from":"grunt-jscs-checker@~0.3.0","version":"0.3.2"},"grunt-saucelabs":{"dependencies":{"colors":{"from":"colors@~0.6.2","version":"0.6.2"},"lodash":{"from":"lodash@~2.4.1","version":"2.4.1"},"q":{"from":"q@~1.0.0","version":"1.0.0"},"request":{"dependencies":{"aws-sign2":{"from":"aws-sign2@~0.5.0","version":"0.5.0"},"forever-agent":{"from":"forever-agent@~0.5.0","version":"0.5.2"},"form-data":{"dependencies":{"async":{"from":"async@~0.2.9","version":"0.2.10"},"combined-stream":{"dependencies":{"delayed-stream":{"from":"delayed-stream@0.0.5","version":"0.0.5"}},"from":"combined-stream@~0.0.4","version":"0.0.4"}},"from":"form-data@~0.1.0","version":"0.1.2"},"hawk":{"dependencies":{"boom":{"from":"boom@0.4.x","version":"0.4.2"},"cryptiles":{"from":"cryptiles@0.2.x","version":"0.2.2"},"hoek":{"from":"hoek@0.9.x","version":"0.9.1"},"sntp":{"from":"sntp@0.2.x","version":"0.2.4"}},"from":"hawk@~1.0.0","version":"1.0.0"},"http-signature":{"dependencies":{"asn1":{"from":"asn1@0.1.11","version":"0.1.11"},"assert-plus":{"from":"assert-plus@0.1.2","version":"0.1.2"},"ctype":{"from":"ctype@0.5.2","version":"0.5.2"}},"from":"http-signature@~0.10.0","version":"0.10.0"},"json-stringify-safe":{"from":"json-stringify-safe@~5.0.0","version":"5.0.0"},"mime":{"from":"mime@~1.2.9","version":"1.2.11"},"node-uuid":{"from":"node-uuid@~1.4.0","version":"1.4.1"},"oauth-sign":{"from":"oauth-sign@~0.3.0","version":"0.3.0"},"qs":{"from":"qs@~0.6.0","version":"0.6.6"},"tough-cookie":{"dependencies":{"punycode":{"from":"punycode@>=0.2.0","version":"1.2.3"}},"from":"tough-cookie@>=0.12.0","version":"0.12.1"},"tunnel-agent":{"from":"tunnel-agent@~0.3.0","version":"0.3.0"}},"from":"request@~2.33.0","version":"2.33.0"},"sauce-tunnel":{"dependencies":{"request":{"dependencies":{"aws-sign":{"from":"aws-sign@~0.3.0","version":"0.3.0"},"cookie-jar":{"from":"cookie-jar@~0.3.0","version":"0.3.0"},"forever-agent":{"from":"forever-agent@~0.5.0","version":"0.5.2"},"form-data":{"dependencies":{"async":{"from":"async@~0.2.7","version":"0.2.10"},"combined-stream":{"dependencies":{"delayed-stream":{"from":"delayed-stream@0.0.5","version":"0.0.5"}},"from":"combined-stream@~0.0.4","version":"0.0.4"}},"from":"form-data@0.0.8","version":"0.0.8"},"hawk":{"dependencies":{"boom":{"dependencies":{"hoek":{"from":"hoek@0.9.x","version":"0.9.1"}},"from":"boom@0.4.x","version":"0.4.2"},"cryptiles":{"from":"cryptiles@0.2.x","version":"0.2.2"},"hoek":{"from":"hoek@0.8.x","version":"0.8.5"},"sntp":{"dependencies":{"hoek":{"from":"hoek@0.9.x","version":"0.9.1"}},"from":"sntp@0.2.x","version":"0.2.4"}},"from":"hawk@~0.13.0","version":"0.13.1"},"http-signature":{"dependencies":{"asn1":{"from":"asn1@0.1.11","version":"0.1.11"},"assert-plus":{"from":"assert-plus@0.1.2","version":"0.1.2"},"ctype":{"from":"ctype@0.5.2","version":"0.5.2"}},"from":"http-signature@~0.9.11","version":"0.9.11"},"json-stringify-safe":{"from":"json-stringify-safe@~4.0.0","version":"4.0.0"},"mime":{"from":"mime@~1.2.9","version":"1.2.11"},"node-uuid":{"from":"node-uuid@~1.4.0","version":"1.4.1"},"oauth-sign":{"from":"oauth-sign@~0.3.0","version":"0.3.0"},"qs":{"from":"qs@~0.6.0","version":"0.6.6"},"tunnel-agent":{"from":"tunnel-agent@~0.3.0","version":"0.3.0"}},"from":"request@~2.21.0","version":"2.21.0"}},"from":"sauce-tunnel@~1.1.1","version":"1.1.2"},"saucelabs":{"from":"saucelabs@~0.1.1","version":"0.1.1"}},"from":"grunt-saucelabs@~5.0.0","version":"5.0.1"},"grunt-sed":{"dependencies":{"replace":{"dependencies":{"colors":{"from":"colors@0.5.x","version":"0.5.1"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@~0.2.9","version":"0.2.14"},"nomnom":{"dependencies":{"underscore":{"from":"underscore@~1.4.4","version":"1.4.4"}},"from":"nomnom@1.6.x","version":"1.6.2"}},"from":"replace@~0.2.4","version":"0.2.9"}},"from":"grunt-sed@~0.1.1","version":"0.1.1"},"load-grunt-tasks":{"dependencies":{"findup-sync":{"dependencies":{"glob":{"dependencies":{"graceful-fs":{"from":"graceful-fs@~1.2.0","version":"1.2.3"},"inherits":{"from":"inherits@1","version":"1.0.0"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@~0.2.11","version":"0.2.14"}},"from":"glob@~3.1.21","version":"3.1.21"},"lodash":{"from":"lodash@~1.0.1","version":"1.0.1"}},"from":"findup-sync@~0.1.2","version":"0.1.2"},"globule":{"dependencies":{"glob":{"dependencies":{"inherits":{"from":"inherits@2","version":"2.0.1"}},"from":"glob@~3.2.7","version":"3.2.8"},"lodash":{"from":"lodash@~2.4.1","version":"2.4.1"},"minimatch":{"dependencies":{"lru-cache":{"from":"lru-cache@2","version":"2.5.0"},"sigmund":{"from":"sigmund@~1.0.0","version":"1.0.0"}},"from":"minimatch@~0.2.9","version":"0.2.14"}},"from":"globule@~0.2.0","version":"0.2.0"}},"from":"load-grunt-tasks@~0.3.0","version":"0.3.0"},"markdown":{"dependencies":{"nopt":{"dependencies":{"abbrev":{"from":"abbrev@1","version":"1.0.4"}},"from":"nopt@~2.1.1","version":"2.1.2"}},"from":"markdown@~0.5.0","version":"0.5.0"}},"name":"bootstrap","version":"3.1.1"}
|
@@ -0,0 +1 @@
|
|
1
|
+
boto==2.20.0
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env python2.7
|
2
|
+
from __future__ import absolute_import, unicode_literals, print_function, division
|
3
|
+
|
4
|
+
from sys import argv
|
5
|
+
from os import environ, stat, remove as _delete_file
|
6
|
+
from os.path import isfile, dirname, basename, abspath
|
7
|
+
from hashlib import sha256
|
8
|
+
from subprocess import check_call as run
|
9
|
+
|
10
|
+
from boto.s3.connection import S3Connection
|
11
|
+
from boto.s3.key import Key
|
12
|
+
from boto.exception import S3ResponseError
|
13
|
+
|
14
|
+
|
15
|
+
NEED_TO_UPLOAD_MARKER = '.need-to-upload'
|
16
|
+
BYTES_PER_MB = 1024 * 1024
|
17
|
+
try:
|
18
|
+
BUCKET_NAME = environ['TWBS_S3_BUCKET']
|
19
|
+
except KeyError:
|
20
|
+
raise SystemExit("TWBS_S3_BUCKET environment variable not set!")
|
21
|
+
|
22
|
+
|
23
|
+
def _sha256_of_file(filename):
|
24
|
+
hasher = sha256()
|
25
|
+
with open(filename, 'rb') as input_file:
|
26
|
+
hasher.update(input_file.read())
|
27
|
+
file_hash = hasher.hexdigest()
|
28
|
+
print('sha256({}) = {}'.format(filename, file_hash))
|
29
|
+
return file_hash
|
30
|
+
|
31
|
+
|
32
|
+
def _delete_file_quietly(filename):
|
33
|
+
try:
|
34
|
+
_delete_file(filename)
|
35
|
+
except (OSError, IOError):
|
36
|
+
pass
|
37
|
+
|
38
|
+
|
39
|
+
def _tarball_size(directory):
|
40
|
+
kib = stat(_tarball_filename_for(directory)).st_size // BYTES_PER_MB
|
41
|
+
return "{} MiB".format(kib)
|
42
|
+
|
43
|
+
|
44
|
+
def _tarball_filename_for(directory):
|
45
|
+
return abspath('./{}.tar.gz'.format(basename(directory)))
|
46
|
+
|
47
|
+
|
48
|
+
def _create_tarball(directory):
|
49
|
+
print("Creating tarball of {}...".format(directory))
|
50
|
+
run(['tar', '-czf', _tarball_filename_for(directory), '-C', dirname(directory), basename(directory)])
|
51
|
+
|
52
|
+
|
53
|
+
def _extract_tarball(directory):
|
54
|
+
print("Extracting tarball of {}...".format(directory))
|
55
|
+
run(['tar', '-xzf', _tarball_filename_for(directory), '-C', dirname(directory)])
|
56
|
+
|
57
|
+
|
58
|
+
def download(directory):
|
59
|
+
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
60
|
+
try:
|
61
|
+
print("Downloading {} tarball from S3...".format(friendly_name))
|
62
|
+
key.get_contents_to_filename(_tarball_filename_for(directory))
|
63
|
+
except S3ResponseError as err:
|
64
|
+
open(NEED_TO_UPLOAD_MARKER, 'a').close()
|
65
|
+
print(err)
|
66
|
+
raise SystemExit("Cached {} download failed!".format(friendly_name))
|
67
|
+
print("Downloaded {}.".format(_tarball_size(directory)))
|
68
|
+
_extract_tarball(directory)
|
69
|
+
print("{} successfully installed from cache.".format(friendly_name))
|
70
|
+
|
71
|
+
|
72
|
+
def upload(directory):
|
73
|
+
_create_tarball(directory)
|
74
|
+
print("Uploading {} tarball to S3... ({})".format(friendly_name, _tarball_size(directory)))
|
75
|
+
key.set_contents_from_filename(_tarball_filename_for(directory))
|
76
|
+
print("{} cache successfully updated.".format(friendly_name))
|
77
|
+
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
78
|
+
|
79
|
+
|
80
|
+
if __name__ == '__main__':
|
81
|
+
# Uses environment variables:
|
82
|
+
# AWS_ACCESS_KEY_ID -- AWS Access Key ID
|
83
|
+
# AWS_SECRET_ACCESS_KEY -- AWS Secret Access Key
|
84
|
+
argv.pop(0)
|
85
|
+
if len(argv) != 4:
|
86
|
+
raise SystemExit("USAGE: s3_cache.py <download | upload> <friendly name> <dependencies file> <directory>")
|
87
|
+
mode, friendly_name, dependencies_file, directory = argv
|
88
|
+
|
89
|
+
conn = S3Connection()
|
90
|
+
bucket = conn.lookup(BUCKET_NAME, validate=False)
|
91
|
+
if bucket is None:
|
92
|
+
raise SystemExit("Could not access bucket!")
|
93
|
+
|
94
|
+
dependencies_file_hash = _sha256_of_file(dependencies_file)
|
95
|
+
|
96
|
+
key = Key(bucket, dependencies_file_hash)
|
97
|
+
key.storage_class = 'REDUCED_REDUNDANCY'
|
98
|
+
|
99
|
+
if mode == 'download':
|
100
|
+
download(directory)
|
101
|
+
elif mode == 'upload':
|
102
|
+
if isfile(NEED_TO_UPLOAD_MARKER): # FIXME
|
103
|
+
upload(directory)
|
104
|
+
else:
|
105
|
+
print("No need to upload anything.")
|
106
|
+
else:
|
107
|
+
raise SystemExit("Unrecognized mode {!r}".format(mode))
|
@@ -0,0 +1,83 @@
|
|
1
|
+
[
|
2
|
+
# Docs: https://saucelabs.com/docs/platforms/webdriver
|
3
|
+
|
4
|
+
{
|
5
|
+
browserName: "safari",
|
6
|
+
platform: "OS X 10.9"
|
7
|
+
},
|
8
|
+
# {
|
9
|
+
# browserName: "googlechrome",
|
10
|
+
# platform: "OS X 10.9",
|
11
|
+
# version: "31"
|
12
|
+
# },
|
13
|
+
{
|
14
|
+
browserName: "firefox",
|
15
|
+
platform: "OS X 10.9"
|
16
|
+
},
|
17
|
+
|
18
|
+
# Mac Opera not currently supported by Sauce Labs
|
19
|
+
|
20
|
+
{
|
21
|
+
browserName: "internet explorer",
|
22
|
+
version: "11",
|
23
|
+
platform: "Windows 8.1"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
browserName: "internet explorer",
|
27
|
+
version: "10",
|
28
|
+
platform: "Windows 8"
|
29
|
+
},
|
30
|
+
# {
|
31
|
+
# browserName: "internet explorer",
|
32
|
+
# version: "9",
|
33
|
+
# platform: "Windows 7"
|
34
|
+
# },
|
35
|
+
# {
|
36
|
+
# browserName: "internet explorer",
|
37
|
+
# version: "8",
|
38
|
+
# platform: "Windows 7"
|
39
|
+
# },
|
40
|
+
|
41
|
+
# { # Unofficial
|
42
|
+
# browserName: "internet explorer",
|
43
|
+
# version: "7",
|
44
|
+
# platform: "Windows XP"
|
45
|
+
# },
|
46
|
+
|
47
|
+
{
|
48
|
+
browserName: "googlechrome",
|
49
|
+
platform: "Windows 8.1"
|
50
|
+
},
|
51
|
+
{
|
52
|
+
browserName: "firefox",
|
53
|
+
platform: "Windows 8.1"
|
54
|
+
},
|
55
|
+
|
56
|
+
# Win Opera 15+ not currently supported by Sauce Labs
|
57
|
+
|
58
|
+
{
|
59
|
+
browserName: "iphone",
|
60
|
+
platform: "OS X 10.9",
|
61
|
+
version: "7"
|
62
|
+
},
|
63
|
+
|
64
|
+
# iOS Chrome not currently supported by Sauce Labs
|
65
|
+
|
66
|
+
# Linux (unofficial)
|
67
|
+
{
|
68
|
+
browserName: "googlechrome",
|
69
|
+
platform: "Linux"
|
70
|
+
},
|
71
|
+
{
|
72
|
+
browserName: "firefox",
|
73
|
+
platform: "Linux"
|
74
|
+
}
|
75
|
+
|
76
|
+
# Android Chrome not currently supported by Sauce Labs
|
77
|
+
|
78
|
+
# { # Android Browser (super-unofficial)
|
79
|
+
# browserName: "android",
|
80
|
+
# version: "4.0",
|
81
|
+
# platform: "Linux"
|
82
|
+
# }
|
83
|
+
]
|
@@ -0,0 +1 @@
|
|
1
|
+
getbootstrap.com
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Contributing to Bootstrap
|
2
|
+
|
3
|
+
Looking to contribute something to Bootstrap? **Here's how you can help.**
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
## Reporting issues
|
8
|
+
|
9
|
+
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within the Bootstrap core. Please read the following guidelines before opening any issue.
|
10
|
+
|
11
|
+
1. **Search for existing issues.** We get a lot of duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available.
|
12
|
+
2. **Create an isolated and reproducible test case.** Be sure the problem exists in Bootstrap's code with a [reduced test case](http://css-tricks.com/reduced-test-cases/) that should be included in each bug report.
|
13
|
+
3. **Include a live example.** Make use of jsFiddle or jsBin to share your isolated test cases.
|
14
|
+
4. **Share as much information as possible.** Include operating system and version, browser and version, version of Bootstrap, customized or vanilla build, etc. where appropriate. Also include steps to reproduce the bug.
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
## Pull requests
|
19
|
+
|
20
|
+
- CSS changes must be done in `.less` files first, never just the compiled `.css` files
|
21
|
+
- If modifying the `.less` files, always recompile and commit the compiled files `bootstrap.css` and `bootstrap.min.css`
|
22
|
+
- Try not to pollute your pull request with unintended changes--keep them simple and small
|
23
|
+
- Try to share which browsers your code has been tested in before submitting a pull request
|
24
|
+
- Pull requests should always be against the `master` branch, never against `gh-pages`.
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
## Coding standards
|
29
|
+
|
30
|
+
### HTML
|
31
|
+
|
32
|
+
- Two spaces for indentation, never tabs
|
33
|
+
- Double quotes only, never single quotes
|
34
|
+
- Always use proper indentation
|
35
|
+
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags)
|
36
|
+
- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
|
37
|
+
|
38
|
+
### CSS
|
39
|
+
|
40
|
+
- Adhere to the [RECESS CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
|
41
|
+
- Multiple-line approach (one property and value per line)
|
42
|
+
- Always a space after a property's colon (e.g., `display: block;` and not `display:block;`)
|
43
|
+
- End all lines with a semi-colon
|
44
|
+
- For multiple, comma-separated selectors, place each selector on its own line
|
45
|
+
- Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks).
|
46
|
+
|
47
|
+
### JS
|
48
|
+
|
49
|
+
- No semicolons
|
50
|
+
- Comma first
|
51
|
+
- 2 spaces (no tabs)
|
52
|
+
- strict mode
|
53
|
+
- "Attractive"
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
## License
|
58
|
+
|
59
|
+
With v3.1, we're moving from the Apache 2 to the MIT license for the Bootstrap code (not the docs). We're in the process of collecting permissions from all Bootstrap contributors with code still part of the project to make this happen. For details, please see [#2054](https://github.com/twbs/bootstrap/issues/2054).
|
60
|
+
|
61
|
+
By contributing your code, you agree to dual-license your contribution under the [Apache 2](https://github.com/twbs/bootstrap/blob/master/LICENSE) and [MIT](https://github.com/twbs/bootstrap/blob/master/MIT) licenses.
|