diff --git a/.classpath b/.classpath deleted file mode 100644 index 2491ec3..0000000 --- a/.classpath +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 2915981..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "ev3dev-lang"] - path = ev3dev-lang - url = https://github.com/ev3dev/ev3dev-lang.git diff --git a/.project b/.project index a7fae23..e78498a 100644 --- a/.project +++ b/.project @@ -1,23 +1,29 @@ - ev3dev-lang-java + ev3dev-lang-javaDoc - org.eclipse.jdt.core.javabuilder + org.eclipse.wst.jsdt.core.javascriptValidator - org.eclipse.m2e.core.maven2Builder + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.jsdt.core.jsNature diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index c788ee3..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,8 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index 14b697b..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0f79bcf..0000000 --- a/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: java - -install: true - -before_install: -- sudo apt-get update -- sudo apt-get install gnupg gnupg2 -- chmod +x .travis/prepare -- .travis/prepare - -after_success: -- ls -- chmod +x .travis/deploy -- .travis/deploy - -branches: - only: - - master - - develop - -env: - global: - - secure: "GcIwBLB8ZVeUtxibJsnbvtol/msXvSv2+iIjbf2ZW13f75E5J3mpsE/yzcATStjGSK2KXf4KKpwaqj5XI76I53qrbo5fmAQtHVJ13CoPYgDesRbMj2KKQHlr2tuXHYMjp85KvWMlPR8idZ7YBy4GFnoBZzH3N517K/X2kwsQHrKz2m/7MVtZoNgWSr3FZZW+BkUK6L0rebKECxICqtCua2XoL2j1UwfN/u4fk4qdPGaOWhhaSgjIdvlPRqikZXJ0Ia9X/ankJ89Ee0M6iLOJ3mjOZMPQU06XGu6Etse7jy2w3jaYgZaTjQ1ekIZXIDRP9pwaZ1ew+vHZSC3Ug97jSeevQmaKW+IwrXOZXp4ID4Uo2fYUSVcBB9zkAaZNO/Xu+viXuCgIVVl9DCevOT89Vq2OAEBJ9k/EgIy7njup7k6p0QKKl8id9gd59XN9pinYgM8g8ltdBfbIRAYCz+5m4PGAkE3IKzY3FxFAnrp+Qgs4LPB4Z4hTni+LeJGzw2RtUGHBq9HcmOSJ8tFGNUrtFXB+/06CqsugtmDF5aDXfuVGPzJoaq1Hs5wytzt4GhtUDyPhoNmaElBnkR1oIUhQ9bjtRJvQkH4RExsXJjOzThNHQfydTBcE/nwhLWKoYLO8//wcbYi22UJXgjbSWS/PeUNkm+JrGLws7QgjwZEc+Pc=" - - secure: "EsZpjMxtRHHbmIz/eS/i2rAzRD3BzpGti//gTyLMXv1nbs7eHjJdYu4qjM4Ry0SzR+OIcTZk0+qsdjzZqeN8VgR+OpDp86lvZDCy4rKey3sXsgOlxFBMeQ5DJaJgIMosyeAu/o+s75bYAu2PMq8AmfQS8KX6qppF+GfxLKMUd8RYfZCls/VGovZs4Fn5LRa/tGsmrBbq+QxVLRApt9GaRd7vpZ48b6LfxOd/xkH7c9rD4nTzMusFrveE5KAgK6P5XdPeRzeDbtVXFbdL6Gw7ZasSxwhh+d8Chv3ffVCD3s9zvsIv9JJUjbKNCvTBNFP9pHZxckNvd3ZK8gY809iK2BRNMpYKCcH5n3lJkL9YU224bTqUSQbe/ozDvR2Rs26S8WuHHm5BBsg5MRwQJFvGzVnt650rCqDNxSVPGYxTuzpa3lvC9z8aFadVYbKec8CoHd+u4yNe5eW13bNTbV/rI0j1WfC2Ked+O9De0AlumcS/Z0cUXASS0duemFWwdirRheCRPDbp57K2XGj3EdQbMsU/0s1llcbTS8YFqLtDU6zPZuMbwTx0Bcfk7tjzkAc84g3zUCeCg9vN3QZYVFsZDq6pGx31FrGy1HQRA8uaGFE2Liq6rgzFElJUOPf6BO7Pv0FhvtTorzw3EjnLZZfP0iG3Br/JJWjCCfnO5r6CZxk=" - - secure: "M8il7KAiot0/P+PNKzhTVDCeFbL99PIDiG8O3kZaRaj1oMlO7VKQkm9LD1ZhBEQJm7MsyO4dr9ScXa6rEsB8B1hRmP062EL/0/7cwvZhj3xLc2dP8Jl7JNuZF3XwiQnqin61nXaKCzfpF7rQv/lz1FhCVytTwbUWBKVKPcjg5auk4gGQU0FWk0UgOiyB/8pMFPwRo9emBS/DCCt61/P9TTZwZsFpyWpWEe34SZ9xNU8qYdjP2z1pJtDNX0Uw89NBF5aFY8JSj17yp1LYoZhG8NhjpkYY6tahs21vuT24grFBcapuo1gkXKTV0GRdiI0XQn54Poto9n2Rn0/Ewx/fCP/MWTJVNHq9ddbqerY/+pd7DZCtlAjHvLVFAwxVXmJaHLYtgf14h2VHTM6V9ba5kRZxviaWmEU60IhVZ2KHeWzhSAeNI/XzHgczceYeK+t2MUNWM0Z4gzLZhVlCO2ZCCpOo8RHiPAIP+NMeM0+zOcX5D5jujkXP19SNbFNINaTUiUH7+Wa3/cRwQ2qcTF2OiJPVB7FBCgmaDz5OFIow+o3Q4BQKRbrApLpoE5oHiFVGBLvVo55NqMw9pBmz3B/4dnBHaB5xDa2DKnHN7eJKXBCH0VenkkqhpEfw6vwz384fsE39tMFLamhmMhlwvMQAKupQJUoaiPYESw/L+wXWfzY=" \ No newline at end of file diff --git a/.travis/codesigning.asc.enc b/.travis/codesigning.asc.enc deleted file mode 100644 index 4248ed2..0000000 Binary files a/.travis/codesigning.asc.enc and /dev/null differ diff --git a/.travis/deploy b/.travis/deploy deleted file mode 100644 index 272ace6..0000000 --- a/.travis/deploy +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -if [ "$TRAVIS_PULL_REQUEST" == 'false' ]; then - if [ "$TRAVIS_BRANCH" = 'master' ] || [ "$TRAVIS_BRANCH" = 'develop' ]; then - mvn deploy --settings settings.xml - fi -fi - diff --git a/.travis/prepare b/.travis/prepare deleted file mode 100644 index 63a3248..0000000 --- a/.travis/prepare +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -if [ "$TRAVIS_PULL_REQUEST" == 'false' ]; then - if [ "$TRAVIS_BRANCH" = 'master' ] || [ "$TRAVIS_BRANCH" = 'develop' ]; then - openssl aes-256-cbc -K $encrypted_040459e821a3_key -iv $encrypted_040459e821a3_iv -in .travis/codesigning.asc.enc -out .travis/codesigning.asc -d - gpg --fast-import .travis/codesigning.asc - fi -fi diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 58790fe..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Anthony Law - -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. \ No newline at end of file diff --git a/README.md b/README.md index b2fb942..adbafab 100644 --- a/README.md +++ b/README.md @@ -1,105 +1,5 @@ -# ev3dev-lang-java [![Build Status](https://travis-ci.org/mob41/ev3dev-lang-java.svg?branch=master)](https://travis-ci.org/mob41/ev3dev-lang-java) - ->This project isn't dead. Just "not very active" in development. - -An ev3dev unified language binding for Java, that followed with the [language wrapper specification](http://ev3dev-lang.readthedocs.org/en/latest/spec.html). - -If you are finding a document or a tutorial for a specific version, come to https://mob41.github.io/ev3dev-lang-java - -## Library - -This library supports ev3dev kernel version 17: - -- ```v4.4.32-17-ev3dev-ev3``` for EV3 -- ```v4.4.31-ti-rt-r67-17-ev3dev-bb.org``` for BeagleBone -- ```v4.4.32-17-ev3dev-rpi``` for Raspberry Pi 0/1 -- ```v4.4.32-17-ev3dev-rpi2``` for Raspberry Pi 2/3 - -All the drivers and functions listed in the [language wrapper specification](http://ev3dev-lang.readthedocs.org/en/latest/spec.html) are all supported, but without confirming the stability of those devices. - -Other motors listed in http://www.ev3dev.org/docs/motors are also supported. ```DCMotor``` handles ```rcx-motor``` motors. - -Other sensors listed in http://www.ev3dev.org/docs/sensors are still in heavy development. - -Still in heavy development, please don't expect all things to be working, see issue [#15](https://github.com/mob41/ev3dev-lang-java/issues/15) for more details or tracking development stage. - -## Release - -This library currently **does not have any** releases, but snapshots (nightly builds) instead. - -You can download the latest snapshot from the [OSSRH repository](https://oss.sonatype.org/content/groups/public/org/ev3dev/ev3dev-lang-java/) directly or via Maven: - -1. Add the Sonatype snapshot repository. - - ```xml - - - oss-sonatype - oss-sonatype - https://oss.sonatype.org/content/repositories/snapshots/ - - true - - - - ``` - -2. Add the dependency. - - ```xml - - org.ev3dev - ev3dev-lang-java - 1.0.0-SNAPSHOT - - ``` - -## Build your own - -You can build your own library with some steps. - -1. Ensure you have Maven installed in your system - -2. Clone this repository - - >git clone https://github.com/mob41/ev3dev-lang-java.git - -3. Switch to the repository directory - - >cd ev3dev-lang-java - -4. Build! - - >maven package - -5. Switch to the ```target``` directory - - >cd target - -6. There should have ```ev3dev-lang-java-x.x.x-x.jar``` and ```ev3dev-lang-java-x.x.x-x-jar-with-dependencies.jar``` in the directory. - -## License - -This project is based on the MIT License - ->MIT License -> ->Copyright (c) 2016 Anthony Law -> ->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. \ No newline at end of file +# ev3dev-lang-java webpage + +The webpage uses SB Admin 2 as a template, which can be found [here](https://github.com/BlackrockDigital/startbootstrap-sb-admin-2). + +https://www.ev3dev-lang-java.tk/ or https://mob41.github.io/ev3dev-lang-java \ No newline at end of file diff --git a/autogen-config.json b/autogen-config.json deleted file mode 100644 index 91ae310..0000000 --- a/autogen-config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "files": [ - "src/main/java/ev3dev/exception/InvalidPortException.java", - "src/main/java/ev3dev/hardware/Device.java", - "src/main/java/ev3dev/hardware/motors/Motor.java", - "src/main/java/ev3dev/hardware/ports/LegoPort.java", - "src/main/java/ev3dev/hardware/ports/MotorPort.java", - "src/main/java/ev3dev/hardware/ports/SensorPort.java" - "src/main/java/ev3dev/io/Sysclass.java" - ], - "templateDir": "templates/" -} \ No newline at end of file diff --git a/dist/css/sb-admin-2.css b/dist/css/sb-admin-2.css new file mode 100644 index 0000000..ef5e53b --- /dev/null +++ b/dist/css/sb-admin-2.css @@ -0,0 +1,434 @@ +/*! + * Start Bootstrap - SB Admin 2 v3.3.7+1 (http://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +body { + background-color: #f8f8f8; +} +#wrapper { + width: 100%; +} +#page-wrapper { + padding: 0 15px; + min-height: 568px; + background-color: white; +} +@media (min-width: 768px) { + #page-wrapper { + position: inherit; + margin: 0 0 0 250px; + padding: 0 30px; + border-left: 1px solid #e7e7e7; + } +} +.navbar-top-links { + margin-right: 0; +} +.navbar-top-links li { + display: inline-block; +} +.navbar-top-links li:last-child { + margin-right: 15px; +} +.navbar-top-links li a { + padding: 15px; + min-height: 50px; +} +.navbar-top-links .dropdown-menu li { + display: block; +} +.navbar-top-links .dropdown-menu li:last-child { + margin-right: 0; +} +.navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: 0; +} +.navbar-top-links .dropdown-menu li a div { + white-space: normal; +} +.navbar-top-links .dropdown-messages, +.navbar-top-links .dropdown-tasks, +.navbar-top-links .dropdown-alerts { + width: 310px; + min-width: 0; +} +.navbar-top-links .dropdown-messages { + margin-left: 5px; +} +.navbar-top-links .dropdown-tasks { + margin-left: -59px; +} +.navbar-top-links .dropdown-alerts { + margin-left: -123px; +} +.navbar-top-links .dropdown-user { + right: 0; + left: auto; +} +.sidebar .sidebar-nav.navbar-collapse { + padding-left: 0; + padding-right: 0; +} +.sidebar .sidebar-search { + padding: 15px; +} +.sidebar ul li { + border-bottom: 1px solid #e7e7e7; +} +.sidebar ul li a.active { + background-color: #eeeeee; +} +.sidebar .arrow { + float: right; +} +.sidebar .fa.arrow:before { + content: "\f104"; +} +.sidebar .active > a > .fa.arrow:before { + content: "\f107"; +} +.sidebar .nav-second-level li, +.sidebar .nav-third-level li { + border-bottom: none !important; +} +.sidebar .nav-second-level li a { + padding-left: 37px; +} +.sidebar .nav-third-level li a { + padding-left: 52px; +} +@media (min-width: 768px) { + .sidebar { + z-index: 1; + position: absolute; + width: 250px; + margin-top: 51px; + } + .navbar-top-links .dropdown-messages, + .navbar-top-links .dropdown-tasks, + .navbar-top-links .dropdown-alerts { + margin-left: auto; + } +} +.btn-outline { + color: inherit; + background-color: transparent; + transition: all .5s; +} +.btn-primary.btn-outline { + color: #428bca; +} +.btn-success.btn-outline { + color: #5cb85c; +} +.btn-info.btn-outline { + color: #5bc0de; +} +.btn-warning.btn-outline { + color: #f0ad4e; +} +.btn-danger.btn-outline { + color: #d9534f; +} +.btn-primary.btn-outline:hover, +.btn-success.btn-outline:hover, +.btn-info.btn-outline:hover, +.btn-warning.btn-outline:hover, +.btn-danger.btn-outline:hover { + color: white; +} +.chat { + margin: 0; + padding: 0; + list-style: none; +} +.chat li { + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px dotted #999999; +} +.chat li.left .chat-body { + margin-left: 60px; +} +.chat li.right .chat-body { + margin-right: 60px; +} +.chat li .chat-body p { + margin: 0; +} +.panel .slidedown .glyphicon, +.chat .glyphicon { + margin-right: 5px; +} +.chat-panel .panel-body { + height: 350px; + overflow-y: scroll; +} +.login-panel { + margin-top: 25%; +} +.flot-chart { + display: block; + height: 400px; +} +.flot-chart-content { + width: 100%; + height: 100%; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background: transparent; +} +table.dataTable thead .sorting_asc:after { + content: "\f0de"; + float: right; + font-family: fontawesome; +} +table.dataTable thead .sorting_desc:after { + content: "\f0dd"; + float: right; + font-family: fontawesome; +} +table.dataTable thead .sorting:after { + content: "\f0dc"; + float: right; + font-family: fontawesome; + color: rgba(50, 50, 50, 0.5); +} +.btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} +.show-grid [class^="col-"] { + padding-top: 10px; + padding-bottom: 10px; + border: 1px solid #ddd; + background-color: #eee !important; +} +.show-grid { + margin: 15px 0; +} +.huge { + font-size: 40px; +} +.panel-green { + border-color: #5cb85c; +} +.panel-green > .panel-heading { + border-color: #5cb85c; + color: white; + background-color: #5cb85c; +} +.panel-green > a { + color: #5cb85c; +} +.panel-green > a:hover { + color: #3d8b3d; +} +.panel-red { + border-color: #d9534f; +} +.panel-red > .panel-heading { + border-color: #d9534f; + color: white; + background-color: #d9534f; +} +.panel-red > a { + color: #d9534f; +} +.panel-red > a:hover { + color: #b52b27; +} +.panel-yellow { + border-color: #f0ad4e; +} +.panel-yellow > .panel-heading { + border-color: #f0ad4e; + color: white; + background-color: #f0ad4e; +} +.panel-yellow > a { + color: #f0ad4e; +} +.panel-yellow > a:hover { + color: #df8a13; +} +.timeline { + position: relative; + padding: 20px 0 20px; + list-style: none; +} +.timeline:before { + content: " "; + position: absolute; + top: 0; + bottom: 0; + left: 50%; + width: 3px; + margin-left: -1.5px; + background-color: #eeeeee; +} +.timeline > li { + position: relative; + margin-bottom: 20px; +} +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} +.timeline > li:after { + clear: both; +} +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} +.timeline > li:after { + clear: both; +} +.timeline > li > .timeline-panel { + float: left; + position: relative; + width: 46%; + padding: 20px; + border: 1px solid #d4d4d4; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); +} +.timeline > li > .timeline-panel:before { + content: " "; + display: inline-block; + position: absolute; + top: 26px; + right: -15px; + border-top: 15px solid transparent; + border-right: 0 solid #ccc; + border-bottom: 15px solid transparent; + border-left: 15px solid #ccc; +} +.timeline > li > .timeline-panel:after { + content: " "; + display: inline-block; + position: absolute; + top: 27px; + right: -14px; + border-top: 14px solid transparent; + border-right: 0 solid #fff; + border-bottom: 14px solid transparent; + border-left: 14px solid #fff; +} +.timeline > li > .timeline-badge { + z-index: 100; + position: absolute; + top: 16px; + left: 50%; + width: 50px; + height: 50px; + margin-left: -25px; + border-radius: 50% 50% 50% 50%; + text-align: center; + font-size: 1.4em; + line-height: 50px; + color: #fff; + background-color: #999999; +} +.timeline > li.timeline-inverted > .timeline-panel { + float: right; +} +.timeline > li.timeline-inverted > .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; +} +.timeline > li.timeline-inverted > .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; +} +.timeline-badge.primary { + background-color: #2e6da4 !important; +} +.timeline-badge.success { + background-color: #3f903f !important; +} +.timeline-badge.warning { + background-color: #f0ad4e !important; +} +.timeline-badge.danger { + background-color: #d9534f !important; +} +.timeline-badge.info { + background-color: #5bc0de !important; +} +.timeline-title { + margin-top: 0; + color: inherit; +} +.timeline-body > p, +.timeline-body > ul { + margin-bottom: 0; +} +.timeline-body > p + p { + margin-top: 5px; +} +@media (max-width: 767px) { + ul.timeline:before { + left: 40px; + } + ul.timeline > li > .timeline-panel { + width: calc(10%); + width: -moz-calc(10%); + width: -webkit-calc(10%); + } + ul.timeline > li > .timeline-badge { + top: 16px; + left: 15px; + margin-left: 0; + } + ul.timeline > li > .timeline-panel { + float: right; + } + ul.timeline > li > .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; + } + ul.timeline > li > .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; + } +} diff --git a/dist/css/sb-admin-2.min.css b/dist/css/sb-admin-2.min.css new file mode 100644 index 0000000..a685970 --- /dev/null +++ b/dist/css/sb-admin-2.min.css @@ -0,0 +1,5 @@ +/*! + * Start Bootstrap - SB Admin 2 v3.3.7+1 (http://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */.chat,.timeline{list-style:none}body{background-color:#f8f8f8}#wrapper{width:100%}#page-wrapper{padding:0 15px;min-height:568px;background-color:#fff}@media (min-width:768px){#page-wrapper{position:inherit;margin:0 0 0 250px;padding:0 30px;border-left:1px solid #e7e7e7}}.navbar-top-links{margin-right:0}.navbar-top-links li{display:inline-block}.flot-chart,.navbar-top-links .dropdown-menu li{display:block}.navbar-top-links li:last-child{margin-right:15px}.navbar-top-links li a{padding:15px;min-height:50px}.navbar-top-links .dropdown-menu li:last-child{margin-right:0}.navbar-top-links .dropdown-menu li a{padding:3px 20px;min-height:0}.navbar-top-links .dropdown-menu li a div{white-space:normal}.navbar-top-links .dropdown-alerts,.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks{width:310px;min-width:0}.navbar-top-links .dropdown-messages{margin-left:5px}.navbar-top-links .dropdown-tasks{margin-left:-59px}.navbar-top-links .dropdown-alerts{margin-left:-123px}.navbar-top-links .dropdown-user{right:0;left:auto}.sidebar .sidebar-nav.navbar-collapse{padding-left:0;padding-right:0}.sidebar .sidebar-search{padding:15px}.sidebar ul li{border-bottom:1px solid #e7e7e7}.sidebar ul li a.active{background-color:#eee}.sidebar .arrow{float:right}.sidebar .fa.arrow:before{content:"\f104"}.sidebar .active>a>.fa.arrow:before{content:"\f107"}.sidebar .nav-second-level li,.sidebar .nav-third-level li{border-bottom:none!important}.sidebar .nav-second-level li a{padding-left:37px}.sidebar .nav-third-level li a{padding-left:52px}@media (min-width:768px){.sidebar{z-index:1;position:absolute;width:250px;margin-top:51px}.navbar-top-links .dropdown-alerts,.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks{margin-left:auto}}.btn-outline{color:inherit;background-color:transparent;transition:all .5s}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-warning.btn-outline{color:#f0ad4e}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover{color:#fff}.chat{margin:0;padding:0}.chat li{margin-bottom:10px;padding-bottom:5px;border-bottom:1px dotted #999}.chat li.left .chat-body{margin-left:60px}.chat li.right .chat-body{margin-right:60px}.chat li .chat-body p{margin:0}.chat .glyphicon,.panel .slidedown .glyphicon{margin-right:5px}.chat-panel .panel-body{height:350px;overflow-y:scroll}.login-panel{margin-top:25%}.flot-chart{height:400px}.flot-chart-content{width:100%;height:100%}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{background:0 0}table.dataTable thead .sorting_asc:after{content:"\f0de";float:right;font-family:fontawesome}table.dataTable thead .sorting_desc:after{content:"\f0dd";float:right;font-family:fontawesome}table.dataTable thead .sorting:after{content:"\f0dc";float:right;font-family:fontawesome;color:rgba(50,50,50,.5)}.btn-circle{width:30px;height:30px;padding:6px 0;border-radius:15px;text-align:center;font-size:12px;line-height:1.428571429}.btn-circle.btn-lg{width:50px;height:50px;padding:10px 16px;border-radius:25px;font-size:18px;line-height:1.33}.btn-circle.btn-xl{width:70px;height:70px;padding:10px 16px;border-radius:35px;font-size:24px;line-height:1.33}.show-grid [class^=col-]{padding-top:10px;padding-bottom:10px;border:1px solid #ddd;background-color:#eee!important}.show-grid{margin:15px 0}.huge{font-size:40px}.panel-green{border-color:#5cb85c}.panel-green>.panel-heading{border-color:#5cb85c;color:#fff;background-color:#5cb85c}.panel-green>a{color:#5cb85c}.panel-green>a:hover{color:#3d8b3d}.panel-red{border-color:#d9534f}.panel-red>.panel-heading{border-color:#d9534f;color:#fff;background-color:#d9534f}.panel-red>a{color:#d9534f}.panel-red>a:hover{color:#b52b27}.panel-yellow{border-color:#f0ad4e}.panel-yellow>.panel-heading{border-color:#f0ad4e;color:#fff;background-color:#f0ad4e}.panel-yellow>a{color:#f0ad4e}.panel-yellow>a:hover{color:#df8a13}.timeline{position:relative;padding:20px 0}.timeline:before{content:" ";position:absolute;top:0;bottom:0;left:50%;width:3px;margin-left:-1.5px;background-color:#eee}.timeline>li{position:relative;margin-bottom:20px}.timeline>li:after,.timeline>li:before{content:" ";display:table}.timeline>li:after{clear:both}.timeline>li>.timeline-panel{float:left;position:relative;width:46%;padding:20px;border:1px solid #d4d4d4;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.175);box-shadow:0 1px 6px rgba(0,0,0,.175)}.timeline>li>.timeline-panel:before{content:" ";display:inline-block;position:absolute;top:26px;right:-15px;border-top:15px solid transparent;border-right:0 solid #ccc;border-bottom:15px solid transparent;border-left:15px solid #ccc}.timeline>li>.timeline-panel:after{content:" ";display:inline-block;position:absolute;top:27px;right:-14px;border-top:14px solid transparent;border-right:0 solid #fff;border-bottom:14px solid transparent;border-left:14px solid #fff}.timeline>li>.timeline-badge{z-index:100;position:absolute;top:16px;left:50%;width:50px;height:50px;margin-left:-25px;border-radius:50%;text-align:center;font-size:1.4em;line-height:50px;color:#fff;background-color:#999}.timeline>li.timeline-inverted>.timeline-panel{float:right}.timeline>li.timeline-inverted>.timeline-panel:before{right:auto;left:-15px;border-right-width:15px;border-left-width:0}.timeline>li.timeline-inverted>.timeline-panel:after{right:auto;left:-14px;border-right-width:14px;border-left-width:0}.timeline-badge.primary{background-color:#2e6da4!important}.timeline-badge.success{background-color:#3f903f!important}.timeline-badge.warning{background-color:#f0ad4e!important}.timeline-badge.danger{background-color:#d9534f!important}.timeline-badge.info{background-color:#5bc0de!important}.timeline-title{margin-top:0;color:inherit}.timeline-body>p,.timeline-body>ul{margin-bottom:0}.timeline-body>p+p{margin-top:5px}@media (max-width:767px){ul.timeline:before{left:40px}ul.timeline>li>.timeline-panel{width:calc(10%);width:-moz-calc(10%);width:-webkit-calc(10%);float:right}ul.timeline>li>.timeline-badge{top:16px;left:15px;margin-left:0}ul.timeline>li>.timeline-panel:before{right:auto;left:-15px;border-right-width:15px;border-left-width:0}ul.timeline>li>.timeline-panel:after{right:auto;left:-14px;border-right-width:14px;border-left-width:0}} \ No newline at end of file diff --git a/dist/js/sb-admin-2.js b/dist/js/sb-admin-2.js new file mode 100644 index 0000000..24b26ce --- /dev/null +++ b/dist/js/sb-admin-2.js @@ -0,0 +1,47 @@ +/*! + * Start Bootstrap - SB Admin 2 v3.3.7+1 (http://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +$(function() { + $('#side-menu').metisMenu(); +}); + +//Loads the correct sidebar on window load, +//collapses the sidebar on window resize. +// Sets the min-height of #page-wrapper to window size +$(function() { + $(window).bind("load resize", function() { + var topOffset = 50; + var width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width; + if (width < 768) { + $('div.navbar-collapse').addClass('collapse'); + topOffset = 100; // 2-row-menu + } else { + $('div.navbar-collapse').removeClass('collapse'); + } + + var height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1; + height = height - topOffset; + if (height < 1) height = 1; + if (height > topOffset) { + $("#page-wrapper").css("min-height", (height) + "px"); + } + }); + + var url = window.location; + // var element = $('ul.nav a').filter(function() { + // return this.href == url; + // }).addClass('active').parent().parent().addClass('in').parent(); + var element = $('ul.nav a').filter(function() { + return this.href == url; + }).addClass('active').parent(); + + while (true) { + if (element.is('li')) { + element = element.parent().addClass('in').parent(); + } else { + break; + } + } +}); diff --git a/dist/js/sb-admin-2.min.js b/dist/js/sb-admin-2.min.js new file mode 100644 index 0000000..892ea1e --- /dev/null +++ b/dist/js/sb-admin-2.min.js @@ -0,0 +1,6 @@ +/*! + * Start Bootstrap - SB Admin 2 v3.3.7+1 (http://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +$(function(){$("#side-menu").metisMenu()}),$(function(){$(window).bind("load resize",function(){var i=50,n=this.window.innerWidth>0?this.window.innerWidth:this.screen.width;n<768?($("div.navbar-collapse").addClass("collapse"),i=100):$("div.navbar-collapse").removeClass("collapse");var e=(this.window.innerHeight>0?this.window.innerHeight:this.screen.height)-1;e-=i,e<1&&(e=1),e>i&&$("#page-wrapper").css("min-height",e+"px")});for(var i=window.location,n=$("ul.nav a").filter(function(){return this.href==i}).addClass("active").parent();;){if(!n.is("li"))break;n=n.parent().addClass("in").parent()}}); \ No newline at end of file diff --git a/doc-1.0.0-SNAPSHOT/allclasses-frame.html b/doc-1.0.0-SNAPSHOT/allclasses-frame.html new file mode 100644 index 0000000..2579c9e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/allclasses-frame.html @@ -0,0 +1,54 @@ + + + + + +All Classes + + + + + +

All Classes

+
+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/allclasses-noframe.html b/doc-1.0.0-SNAPSHOT/allclasses-noframe.html new file mode 100644 index 0000000..9bca8c4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/allclasses-noframe.html @@ -0,0 +1,54 @@ + + + + + +All Classes + + + + + +

All Classes

+
+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/constant-values.html b/doc-1.0.0-SNAPSHOT/constant-values.html new file mode 100644 index 0000000..dc06bc7 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/constant-values.html @@ -0,0 +1,1842 @@ + + + + + +Constant Field Values + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.ev3dev.*

+ + + + + + + + +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/deprecated-list.html b/doc-1.0.0-SNAPSHOT/deprecated-list.html new file mode 100644 index 0000000..c64a9a8 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/deprecated-list.html @@ -0,0 +1,124 @@ + + + + + +Deprecated List + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/help-doc.html b/doc-1.0.0-SNAPSHOT/help-doc.html new file mode 100644 index 0000000..084e416 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/help-doc.html @@ -0,0 +1,229 @@ + + + + + +API Help + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+ +This help file applies to API documentation generated using the standard doclet.
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-1.html b/doc-1.0.0-SNAPSHOT/index-files/index-1.html new file mode 100644 index 0000000..334833b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-1.html @@ -0,0 +1,139 @@ + + + + + +A-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

A

+
+
ADDRESS - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Address
+
+
autoSwitchMode - Variable in class org.ev3dev.hardware.sensors.LightSensor
+
 
+
autoSwitchMode - Variable in class org.ev3dev.hardware.sensors.SoundSensor
+
 
+
autoSwitchMode - Variable in class org.ev3dev.hardware.sensors.TouchSensor
+
 
+
autoSwitchMode - Variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
 
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-10.html b/doc-1.0.0-SNAPSHOT/index-files/index-10.html new file mode 100644 index 0000000..c361fa4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-10.html @@ -0,0 +1,319 @@ + + + + + +M-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

M

+
+
MediumMotor - Class in org.ev3dev.hardware.motors
+
 
+
MediumMotor(int) - Constructor for class org.ev3dev.hardware.motors.MediumMotor
+
 
+
MediumMotor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.MediumMotor
+
 
+
MODE_ALL - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - All
+
+
MODE_ALL_HEIGHT_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - Height Sysfs value index
+
+
MODE_ALL_SIG_HIGH_BYTE_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - Signature high byte Sysfs value index
+
+
MODE_ALL_SIG_LOW_BYTE_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - Signature low byte Sysfs value index
+
+
MODE_ALL_WIDTH_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - Width Sysfs value index
+
+
MODE_ALL_X_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - X Sysfs value index
+
+
MODE_ALL_Y_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
ALL Mode - Y Sysfs value index
+
+
MODE_ANALOG - Static variable in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
ANALOG Mode - Raw analog value
+
+
MODE_ANALOG_0 - Static variable in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
ANALOG-0 Mode - Raw analog value
+
+
MODE_ANALOG_1 - Static variable in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
ANALOG-1 Mode - Raw analog value, Pin 5 high
+
+
MODE_FLEX - Static variable in class org.ev3dev.hardware.sensors.di.DflexSensor
+
+
FLEX Mode - Flex
+
+
MODE_FLEX_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.di.DflexSensor
+
+
FLEX Mode - Flex Sysfs value index
+
+
MODE_SIG1 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG1 Mode - Signature #1
+
+
MODE_SIG2 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG2 Mode - Signature #2
+
+
MODE_SIG3 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG3 Mode - Signature #3
+
+
MODE_SIG4 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG4 Mode - Signature #4
+
+
MODE_SIG5 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG5 Mode - Signature #5
+
+
MODE_SIG6 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG6 Mode - Signature #6
+
+
MODE_SIG7 - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG7 Mode - Signature #7
+
+
MODE_SIG_COUNT_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG[N] Mode (All signature modes) - Count Sysfs value index
+
+
MODE_SIG_HEIGHT_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG[N] Mode (All signature modes) - Height Sysfs value index
+
+
MODE_SIG_WIDTH_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG[N] Mode (All signature modes) - Width Sysfs value index
+
+
MODE_SIG_X_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG[N] Mode (All signature modes) - X Sysfs value index
+
+
MODE_SIG_Y_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
SIG[N] Mode (All signature modes) - Y Sysfs value index
+
+
modeAll() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to ALL.
+
+ And returns a ModeAll instance for communication.
+
+
modeSig(int) - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG[N], where [N] is the integer parameter specified
+
+ And returns a ModeSig instance for communication.
+
+
modeSig1() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG1
+
+ And returns a ModeSig instance for communication.
+
+
modeSig2() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG2
+
+ And returns a ModeSig instance for communication.
+
+
modeSig3() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG3
+
+ And returns a ModeSig instance for communication.
+
+
modeSig4() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG4
+
+ And returns a ModeSig instance for communication.
+
+
modeSig5() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG5
+
+ And returns a ModeSig instance for communication.
+
+
modeSig6() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG6
+
+ And returns a ModeSig instance for communication.
+
+
modeSig7() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Set mode to SIG7
+
+ And returns a ModeSig instance for communication.
+
+
Motor - Class in org.ev3dev.hardware.motors
+
+
The motor class provides a uniform interface for using motors with positional and directional feedback such as the EV3 and NXT motors.
+
+
Motor(int) - Constructor for class org.ev3dev.hardware.motors.Motor
+
+
Creates a new motor object.
+
+
Motor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.Motor
+
+
Creates a new motor object.
+
+
Motor(LegoPort, String) - Constructor for class org.ev3dev.hardware.motors.Motor
+
+
Creates a new motor object.
+
+
MOTOR_A - Static variable in class org.ev3dev.hardware.ports.MotorPort
+
 
+
MOTOR_B - Static variable in class org.ev3dev.hardware.ports.MotorPort
+
 
+
MOTOR_C - Static variable in class org.ev3dev.hardware.ports.MotorPort
+
 
+
MOTOR_D - Static variable in class org.ev3dev.hardware.ports.MotorPort
+
 
+
MotorPort - Class in org.ev3dev.hardware.ports
+
+
MotorPort class for getting data from a specified motor port.
+
+ You can use a LegoPort to use all the ports.
+
+
MotorPort(int) - Constructor for class org.ev3dev.hardware.ports.MotorPort
+
+
Creates a new motor port object.
+
+ NOTE: MotorPort only accepts motors ports.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-11.html b/doc-1.0.0-SNAPSHOT/index-files/index-11.html new file mode 100644 index 0000000..c434407 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-11.html @@ -0,0 +1,141 @@ + + + + + +N-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

N

+
+
NXTAnalogSensor - Class in org.ev3dev.hardware.sensors.generic
+
+
Generic NXT Analog Sensor driver
+
+
NXTAnalogSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
Creates a new NXT analog sensor
+
+
NXTMotor - Class in org.ev3dev.hardware.motors
+
 
+
NXTMotor(int) - Constructor for class org.ev3dev.hardware.motors.NXTMotor
+
 
+
NXTMotor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.NXTMotor
+
 
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-12.html b/doc-1.0.0-SNAPSHOT/index-files/index-12.html new file mode 100644 index 0000000..9e2e36e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-12.html @@ -0,0 +1,177 @@ + + + + + +O-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

O

+
+
org.ev3dev - package org.ev3dev
+
+
Main package of ev3dev language binding
+
+
org.ev3dev.exception - package org.ev3dev.exception
+
+
Exceptions that handles errors of I/O
+
+
org.ev3dev.hardware - package org.ev3dev.hardware
+
+
Hardware classes of EV3, to interact with them.
+
+
org.ev3dev.hardware.motors - package org.ev3dev.hardware.motors
+
+
Motor classes.
+
+
org.ev3dev.hardware.ports - package org.ev3dev.hardware.ports
+
+
LegoPort ports, such as LegoPort, SensorPort, MotorPort
+
+
org.ev3dev.hardware.sensors - package org.ev3dev.hardware.sensors
+
+
Sensor classes.
+
+
org.ev3dev.hardware.sensors.charmedlabs - package org.ev3dev.hardware.sensors.charmedlabs
+
 
+
org.ev3dev.hardware.sensors.di - package org.ev3dev.hardware.sensors.di
+
 
+
org.ev3dev.hardware.sensors.generic - package org.ev3dev.hardware.sensors.generic
+
 
+
org.ev3dev.io - package org.ev3dev.io
+
+
API I/O Controls
+
+
OUTPUT_A - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Motor Port A on the EV3
+
+
OUTPUT_B - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Motor Port B on the EV3
+
+
OUTPUT_C - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Motor Port C on the EV3
+
+
OUTPUT_D - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Motor Port D on the EV3
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-13.html b/doc-1.0.0-SNAPSHOT/index-files/index-13.html new file mode 100644 index 0000000..c6eadc4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-13.html @@ -0,0 +1,161 @@ + + + + + +P-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

P

+
+
PixyCmucam5 - Class in org.ev3dev.hardware.sensors.charmedlabs
+
+
Pixy Cmucam 5 for Lego
+
+
PixyCmucam5(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Creates a new Pixy Cmucam 5 instnace
+
+
PixyCmucam5.ModeAll - Class in org.ev3dev.hardware.sensors.charmedlabs
+
+
A class to communicate with Pixy Cmucam 5 using mode ALL
+
+
PixyCmucam5.ModeSig - Class in org.ev3dev.hardware.sensors.charmedlabs
+
+
A class to communicate with Pixy Cmucam 5 using mode SIG[N]
+
+
POWER_SUPPLY_CLASS_NAME - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
This Sysfs's class name (e.g.
+
+
PowerSupply - Class in org.ev3dev.hardware
+
+
A generic interface to read data from the systems power_supply class.
+
+
PowerSupply() - Constructor for class org.ev3dev.hardware.PowerSupply
+
 
+
PREFIX_MODE_SIG - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
The prefix of modes SIG[N], where SIG is the prefix.
+
+
PRODUCT_ID - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Product ID
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-14.html b/doc-1.0.0-SNAPSHOT/index-files/index-14.html new file mode 100644 index 0000000..d9530e1 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-14.html @@ -0,0 +1,180 @@ + + + + + +R-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

R

+
+
RED - Static variable in class org.ev3dev.hardware.LED
+
+
Red color.
+
+
reset() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Reset all of the motor parameter attributes to their default value.
+
+
RIGHT - Static variable in class org.ev3dev.hardware.LED
+
+
Right EV3 Button
+
+
run() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Setting to run will cause the servo to be driven to the position_sp set in the position_sp attribute.
+
+
runDirect() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Runs the motor at the duty cycle specified by duty_cycle_sp.
+
+
runDirect() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Run the motor at the duty cycle specified by duty_cycle_sp.
+
+
runForever() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Cause the motor to run until another command is sent
+
+
runForever() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Cause the motor to run until another command is sent
+
+
runTimed() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Run the motor for the amount of time specified in time_sp + and then stop the motor using the command specified by + stop_command
+
+
runTimed() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Run the motor for the amount of time specified in time_sp + and then stop the motor using the command specified by + stop_command
+
+
runToAbsPos() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Run to an absolute position specified by position_sp + and then stop using the command specified in stop_command
+
+
runToRelPos() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Run to a position relative to the current position value.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-15.html b/doc-1.0.0-SNAPSHOT/index-files/index-15.html new file mode 100644 index 0000000..c2ffc56 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-15.html @@ -0,0 +1,846 @@ + + + + + +S-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

S

+
+
searchClassFullName(String, String, String) - Static method in class org.ev3dev.io.Sysfs
+
+
Search the full class name, using a class name, FS folder prefix and an address
+
+
sendCommand(String) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Generic method to send commands to the motor controller.
+
+
sendCommand(String) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Generic method to send commands to the motor controller.
+
+
sendCommand(String) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Generic method to send commands to the motor controller.
+
+
sendCommand(String) - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Generic method to send commands to the sensor controller.
+
+
Sensor - Class in org.ev3dev.hardware.sensors
+
+
The sensor class provides a uniform interface for using most of the sensors available for the EV3.
+
+
Sensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.Sensor
+
+
Creates a new Sensor instance using a LegoPort
+
+
SENSOR_1 - Static variable in class org.ev3dev.hardware.ports.SensorPort
+
 
+
SENSOR_2 - Static variable in class org.ev3dev.hardware.ports.SensorPort
+
 
+
SENSOR_3 - Static variable in class org.ev3dev.hardware.ports.SensorPort
+
 
+
SENSOR_4 - Static variable in class org.ev3dev.hardware.ports.SensorPort
+
 
+
SensorPort - Class in org.ev3dev.hardware.ports
+
+
SensorPort class for getting data from a specified sensor port.
+
+ You can use a LegoPort to use all the ports.
+
+
SensorPort(int) - Constructor for class org.ev3dev.hardware.ports.SensorPort
+
+
Creates a new sensor port object.
+
+ NOTE: SensorPort only accepts sensor ports.
+
+
separateSpace(String) - Static method in class org.ev3dev.io.Sysfs
+
+
A function to separate space from a spaced-array.
+
+
ServoMotor - Class in org.ev3dev.hardware.motors
+
+
The servo motor class provides a uniform interface for using hobby type servo motors.
+
+
ServoMotor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.ServoMotor
+
+
Creates a new motor object.
+
+
setAttribute(String, String) - Method in class org.ev3dev.hardware.Device
+
+
Writes the property specified.
+
+
setAttribute(String, String, String, String) - Static method in class org.ev3dev.io.Sysfs
+
+
Writes the property of the class and subclass specified.
+
+
setAttribute(String, String, String) - Static method in class org.ev3dev.io.Sysfs
+
+
Writes the property of the class specified.
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Sets whether it should switch mode automatically if the mode is invalid.
+ By default, it will auto switch mode.
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Sets whether it should switch mode automatically if the mode is invalid.
+ By default, it will auto switch mode.
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.LightSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.TouchSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setAutoSwitchMode(boolean) - Method in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Set Auto Switch Mode to be enabled or disabled.
+ (Default: enabled)
+
+
setBrightness(int) - Method in class org.ev3dev.hardware.LED
+
+
Sets the brightness level.
+
+
setClassFullname(String) - Method in class org.ev3dev.hardware.Device
+
+
Set the Sysfs class full name (including prefix if any)
+
+
setClassName(String) - Method in class org.ev3dev.hardware.Device
+
+
Set the Sysfs class name (location) of this Device
+
+
setClassNamePrefix(String) - Method in class org.ev3dev.hardware.Device
+
+
Set the filename prefix inside the Sysfs class (prefix (e.g.
+
+
setDelay_Off(int) - Method in class org.ev3dev.hardware.LED
+
+
The timer trigger will periodically change the LED brightness between 0 and the current brightness setting.
+
+
setDelay_On(int) - Method in class org.ev3dev.hardware.LED
+
+
The timer trigger will periodically change the LED brightness between 0 and the current brightness setting.
+
+
setDevice(String) - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
For modes that support it, writing the name of a driver will cause a new device to be registered for that driver and + attached to this port.
+
+
setDutyCycleSP(int) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the duty cycle setpoint.
+
+
setDutyCycleSP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the duty cycle setpoint.
+
+
setMaxPulse_SP(int) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the maximum (clockwise) position_sp.
+
+
setMidPulse_SP(int) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the mid position_sp.
+
+
setMinPulse_SP(int) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the + minimum (counter-clockwise) position_sp.
+
+
setMode(String) - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
Reading returns the currently selected mode.
+
+
setMode(String) - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Sets the current mode.
+
+
setModeAnalog() - Method in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
Set mode as ANALOG Mode - Raw analog value
+
+
setModeAnalog0() - Method in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
Set mode as ANALOG-0 Mode - Raw analog value
+
+
setModeAnalog1() - Method in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
Set mode as ANALOG-1 Mode - Raw analog value, Pin 5 high
+
+
setPolarity(String) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Sets the polarity of the motor.
+
+
setPolarity(String) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Sets the polarity of the motor.
+
+
setPolarity(String) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Sets the polarity of the servo.
+
+
setPollMs(int) - Method in class org.ev3dev.hardware.sensors.I2CSensor
+
+
Sets the polling period of the sensor in milliseconds.
+
+
setPosition(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the current position of the motor in pulses of the rotary encoder.
+
+
setPosition_D(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
The derivative constant for the position PID.
+
+
setPosition_I(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
The integral constant for the position PID.
+
+
setPosition_P(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
The proportional constant for the position PID.
+
+
setPosition_SP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing specifies the target position for the run-to-abs-pos and run-to-rel-pos commands.
+
+
setPosition_SP(int) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Reading returns the current position_sp of the servo.
+
+
setRamp_Down_SP(int) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the ramp down setpoint.
+
+
setRamp_Down_SP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the ramp down setpoint.
+
+
setRamp_Up_SP(int) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the ramp up setpoint.
+
+
setRamp_Up_SP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the ramp up setpoint.
+
+
setRate_SP(int) - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Sets the rate_sp at which the servo travels from 0 to 100.0% (half of the full range of the servo).
+
+
setSpeed_SP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the target speed in tacho counts per second used when speed_regulation is on.
+
+
setStopAction(String) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Reading returns the current stop command.
+
+
setStopAction(String) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Reading returns the current stop command.
+
+
setTime_SP(int) - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing specifies the amount of time the motor will run when using the run-timed command.
+
+
setTime_SP(int) - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing specifies the amount of time the motor will run when using the run-timed command.
+
+
setTrigger(String) - Method in class org.ev3dev.hardware.LED
+
+
Sets the led trigger.
+
+
SoundSensor - Class in org.ev3dev.hardware.sensors
+
+
LEGO NXT Sound Sensor
+
+
SoundSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.SoundSensor
+
+
Creates a new SoundSensor instance.
+
+
stop() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Stop any of the run commands before they are complete using the command specified by stop_command.
+
+
stop() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Stop any of the run commands before they are complete using the command specified by stop_command.
+
+
Sysfs - Class in org.ev3dev.io
+
+
A class for reading/writing to the EV3 driver system classes
+
+
Sysfs() - Constructor for class org.ev3dev.io.Sysfs
+
 
+
SYSFS_AMBIENT_LIGHT_INTENSITY_MODE - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Ambient Light Intensity required Sysfs mode
+
+
SYSFS_AMBIENT_LIGHT_INTENSITY_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Ambient Light Intensity Sysfs value index
+
+
SYSFS_AMBIENT_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.LightSensor
+
+
Ambient light Sysfs required mode
+
+
SYSFS_AMBIENT_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.LightSensor
+
+
Ambient light Sysfs value index
+
+
SYSFS_ANGLE_MODE - Static variable in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Gyro angle required Sysfs mode
+
+
SYSFS_ANGLE_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Gyro angle Sysfs value index
+
+
SYSFS_CM_MODE - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Distance in cm required Sysfs mode
+
+
SYSFS_CM_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Distance in cm Sysfs value index
+
+
SYSFS_COLOR_MODE - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Color required Sysfs mode
+
+
SYSFS_COLOR_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Color Sysfs value index
+
+
SYSFS_COMMAND_FLOAT - Static variable in class org.ev3dev.hardware.motors.ServoMotor
+
+
The Sysfs class's float command
+
+
SYSFS_COMMAND_RESET - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's reset command
+
+
SYSFS_COMMAND_RUN - Static variable in class org.ev3dev.hardware.motors.ServoMotor
+
+
The Sysfs class's run command
+
+
SYSFS_COMMAND_RUN_DIRECT - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's run-direct command
+
+
SYSFS_COMMAND_RUN_DIRECT - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's run-direct command
+
+
SYSFS_COMMAND_RUN_FOREVER - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's run-forever command
+
+
SYSFS_COMMAND_RUN_FOREVER - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's run-forever command
+
+
SYSFS_COMMAND_RUN_TIMED - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's run-timed command
+
+
SYSFS_COMMAND_RUN_TIMED - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's run-timed command
+
+
SYSFS_COMMAND_RUN_TO_ABS_POS - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's run-to-abs-pos command
+
+
SYSFS_COMMAND_RUN_TO_REL_POS - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's run-to-rel-pos command
+
+
SYSFS_COMMAND_STOP - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's stop command
+
+
SYSFS_COMMAND_STOP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's stop command
+
+
SYSFS_IN_MODE - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Distance in inch required Sysfs mode
+
+
SYSFS_IN_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Distance in inch Sysfs value index
+
+
SYSFS_MAX_VOLTAGE - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's max_voltage property name
+
+
SYSFS_MEASURED_CURRENT - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's measured_current property name
+
+
SYSFS_MEASURED_VOLTAGE - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's measured_voltage property name
+
+
SYSFS_MIN_VOLTAGE - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's min_voltage property name
+
+
SYSFS_OTHER_PRESENT_MODE - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Other present sensor detection required Sysfs mode
+
+
SYSFS_OTHER_PRESENT_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Other present sensor detection Sysfs value index
+
+
SYSFS_PROPERTY_ADDRESS - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's address property name
+
+
SYSFS_PROPERTY_ADDRESS - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's address property name
+
+
SYSFS_PROPERTY_ADDRESS - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's address property name
+
+
SYSFS_PROPERTY_BRIGHTNESS - Static variable in class org.ev3dev.hardware.LED
+
+
The Sysfs class's brightness property name
+
+
SYSFS_PROPERTY_COMMAND - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's command property name
+
+
SYSFS_PROPERTY_COMMAND - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's command property name
+
+
SYSFS_PROPERTY_COMMAND - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's command property name
+
+
SYSFS_PROPERTY_COMMANDS - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's commands property name
+
+
SYSFS_PROPERTY_COMMANDS - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's commands property name
+
+
SYSFS_PROPERTY_COMMANDS - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's commands property name
+
+
SYSFS_PROPERTY_COUNT_PER_M - Static variable in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
The Sysfs class's count_per_m property name
+
+
SYSFS_PROPERTY_COUNT_PER_M - Static variable in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
The Sysfs class's count_per_m property name
+
+
SYSFS_PROPERTY_COUNT_PER_ROT - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's count_per_rot property name
+
+
SYSFS_PROPERTY_DECIMALS - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's decimals property name
+
+
SYSFS_PROPERTY_DELAY_OFF - Static variable in class org.ev3dev.hardware.LED
+
+
The Sysfs class's delay_off property name
+
+
SYSFS_PROPERTY_DELAY_ON - Static variable in class org.ev3dev.hardware.LED
+
+
The Sysfs class's delay_on property name
+
+
SYSFS_PROPERTY_DRIVER_NAME - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's driver_name property name
+
+
SYSFS_PROPERTY_DRIVER_NAME - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's driver_name property name
+
+
SYSFS_PROPERTY_DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's driver_name property name
+
+
SYSFS_PROPERTY_DUTY_CYCLE - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's duty_cycle property name
+
+
SYSFS_PROPERTY_DUTY_CYCLE - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's duty_cycle property name
+
+
SYSFS_PROPERTY_DUTY_CYCLE_SP - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's duty_cycle_sp property name
+
+
SYSFS_PROPERTY_DUTY_CYCLE_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's duty_cycle_sp property name
+
+
SYSFS_PROPERTY_FIRMWARE_VERSION - Static variable in class org.ev3dev.hardware.sensors.I2CSensor
+
+
The Sysfs class's fw_version property name
+
+
SYSFS_PROPERTY_FULL_TRAVEL_COUNT - Static variable in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
The Sysfs class's full_travel_count property name
+
+
SYSFS_PROPERTY_FULL_TRAVEL_COUNT - Static variable in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
The Sysfs class's full_travel_count property name
+
+
SYSFS_PROPERTY_MAX_BRIGHTNESS - Static variable in class org.ev3dev.hardware.LED
+
+
The Sysfs class's max_brightness property name
+
+
SYSFS_PROPERTY_MODE - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's mode property name
+
+
SYSFS_PROPERTY_MODES - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's modes property name
+
+
SYSFS_PROPERTY_NUM_VALUES - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's num_values property name
+
+
SYSFS_PROPERTY_POLARITY - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's polarity property name
+
+
SYSFS_PROPERTY_POLARITY - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's polarity property name
+
+
SYSFS_PROPERTY_POLL_MS - Static variable in class org.ev3dev.hardware.sensors.I2CSensor
+
+
The Sysfs class's poll_ms property name
+
+
SYSFS_PROPERTY_POSITION - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's position property name
+
+
SYSFS_PROPERTY_POSITION_D - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's position_d property name
+
+
SYSFS_PROPERTY_POSITION_I - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's position_i property name
+
+
SYSFS_PROPERTY_POSITION_P - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's position_p property name
+
+
SYSFS_PROPERTY_POSITION_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's position_sp property name
+
+
SYSFS_PROPERTY_RAMP_DOWN_SP - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's ramp_down_sp property name
+
+
SYSFS_PROPERTY_RAMP_DOWN_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's ramp_down_sp property name
+
+
SYSFS_PROPERTY_RAMP_UP_SP - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's ramp_up_sp property name
+
+
SYSFS_PROPERTY_RAMP_UP_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's ramp_up_sp property name
+
+
SYSFS_PROPERTY_SPEED - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's speed property name
+
+
SYSFS_PROPERTY_SPEED_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's speed_sp property name
+
+
SYSFS_PROPERTY_STATE - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's state property name
+
+
SYSFS_PROPERTY_STATE - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's state property name
+
+
SYSFS_PROPERTY_STOP_ACTION - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's stop_action property name
+
+
SYSFS_PROPERTY_STOP_ACTION - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's stop_action property name
+
+
SYSFS_PROPERTY_STOP_ACTIONS - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's stop_actions property name
+
+
SYSFS_PROPERTY_STOP_ACTIONS - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's stop_actions property name
+
+
SYSFS_PROPERTY_TIME_SP - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
The Sysfs class's time_sp property name
+
+
SYSFS_PROPERTY_TIME_SP - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
The Sysfs class's time_sp property name
+
+
SYSFS_PROPERTY_TRIGGER - Static variable in class org.ev3dev.hardware.LED
+
+
The Sysfs class's trigger property name
+
+
SYSFS_PROPERTY_UNITS - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
The Sysfs class's units property name
+
+
SYSFS_PROXIMITY_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
Proximity required Sysfs mode
+
+
SYSFS_PROXIMITY_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
Proximity Sysfs value index
+
+
SYSFS_RATE_MODE - Static variable in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Gyro rate required Sysfs mode
+
+
SYSFS_RATE_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Gyro angle Sysfs value index
+
+
SYSFS_REFLECTED_LIGHT_INTENSITY_MODE - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Reflected Light Intensity required Sysfs mode
+
+
SYSFS_REFLECTED_LIGHT_INTENSITY_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Reflected Light Intensity Sysfs value index
+
+
SYSFS_REFLECTED_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.LightSensor
+
+
Reflected light Sysfs required mode
+
+
SYSFS_REFLECTED_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.LightSensor
+
+
Reflected light Sysfs value index
+
+
SYSFS_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.TouchSensor
+
+
Sysfs class TouchSensor required mode
+
+
SYSFS_RGB_B_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
RGB Blue Sysfs value index
+
+
SYSFS_RGB_G_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
RGB Green Sysfs value index
+
+
SYSFS_RGB_MODE - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
RGB required Sysfs mode
+
+
SYSFS_RGB_R_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
RGB Red Sysfs value index
+
+
SYSFS_SOUND_PRESSURE_LOW_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Sound pressure Low Sysfs required mode
+
+
SYSFS_SOUND_PRESSURE_LOW_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Sound pressure Low Sysfs value index
+
+
SYSFS_SOUND_PRESSURE_REQUIRED_MODE - Static variable in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Sound pressure Sysfs required mode
+
+
SYSFS_SOUND_PRESSURE_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Sound pressure Sysfs value index
+
+
SYSFS_TECHNOLOGY - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's technology property name
+
+
SYSFS_TYPE - Static variable in class org.ev3dev.hardware.PowerSupply
+
+
The Sysfs class's type property name
+
+
SYSFS_VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.TouchSensor
+
+
Sysfs class TouchSensor Value Index
+
+
SYSTEM_CLASS_PATH - Static variable in class org.ev3dev.io.Sysfs
+
+
The Sysfs class path (/sys/class/)
+
+
SYSTEM_EVENT_PATH - Static variable in class org.ev3dev.hardware.Button
+
 
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-16.html b/doc-1.0.0-SNAPSHOT/index-files/index-16.html new file mode 100644 index 0000000..edc6937 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-16.html @@ -0,0 +1,133 @@ + + + + + +T-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

T

+
+
TouchSensor - Class in org.ev3dev.hardware.sensors
+
 
+
TouchSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.TouchSensor
+
+
Creates a new TouchSensor instance.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-17.html b/doc-1.0.0-SNAPSHOT/index-files/index-17.html new file mode 100644 index 0000000..4e68176 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-17.html @@ -0,0 +1,133 @@ + + + + + +U-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

U

+
+
UltrasonicSensor - Class in org.ev3dev.hardware.sensors
+
 
+
UltrasonicSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Creates a new UltrasonicSensor instance.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-18.html b/doc-1.0.0-SNAPSHOT/index-files/index-18.html new file mode 100644 index 0000000..0774d0c --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-18.html @@ -0,0 +1,139 @@ + + + + + +V-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

V

+
+
VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
The Sysfs value index
+
+
VALUE_INDEX - Static variable in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
The Sysfs value index
+
+
VENDOR_ID - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Vendor ID
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-2.html b/doc-1.0.0-SNAPSHOT/index-files/index-2.html new file mode 100644 index 0000000..9bf3556 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-2.html @@ -0,0 +1,147 @@ + + + + + +B-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

B

+
+
Button - Class in org.ev3dev.hardware
+
+
Provides a generic button reading mechanism that can be adapted to platform specific implementations.
+
+
Button(int) - Constructor for class org.ev3dev.hardware.Button
+
+
Creates a new Button instance with the Button specified.
+
+
BUTTON_BACKSPACE - Static variable in class org.ev3dev.hardware.Button
+
 
+
BUTTON_DOWN - Static variable in class org.ev3dev.hardware.Button
+
 
+
BUTTON_ENTER - Static variable in class org.ev3dev.hardware.Button
+
 
+
BUTTON_LEFT - Static variable in class org.ev3dev.hardware.Button
+
 
+
BUTTON_RIGHT - Static variable in class org.ev3dev.hardware.Button
+
 
+
BUTTON_UP - Static variable in class org.ev3dev.hardware.Button
+
 
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-3.html b/doc-1.0.0-SNAPSHOT/index-files/index-3.html new file mode 100644 index 0000000..09a1850 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-3.html @@ -0,0 +1,175 @@ + + + + + +C-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

C

+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.LED
+
+
This Sysfs's class name (e.g.
+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
This Sysfs's class name (e.g.
+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
This Sysfs's class name (e.g.
+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.motors.ServoMotor
+
+
This Sysfs's class name (e.g.
+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
The sysfs class name of LegoPort
+
+
CLASS_NAME - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
This Sysfs's class name (e.g.
+
+
CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.motors.DCMotor
+
+
This Sysfs's class name prefix (e.g.
+
+
CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.motors.Motor
+
+
This Sysfs's class name prefix (e.g.
+
+
CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.motors.ServoMotor
+
+
This Sysfs's class name prefix (e.g.
+
+
CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.sensors.Sensor
+
+
This Sysfs's class name prefix (e.g.
+
+
ColorSensor - Class in org.ev3dev.hardware.sensors
+
+
LEGO EV3 color sensor.
+
+
ColorSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.ColorSensor
+
+
Creates a new ColorSensor instance.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-4.html b/doc-1.0.0-SNAPSHOT/index-files/index-4.html new file mode 100644 index 0000000..0641028 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-4.html @@ -0,0 +1,224 @@ + + + + + +D-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

D

+
+
DCMotor - Class in org.ev3dev.hardware.motors
+
+
The DC motor class provides a uniform interface for using regular DC motors + with no fancy controls or feedback.
+
+
DCMotor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.DCMotor
+
+
Creates a new DC motor object.
+
+
Device - Class in org.ev3dev.hardware
+
+
This is the base class that handles control tasks for a single port or index.
+
+
Device(String) - Constructor for class org.ev3dev.hardware.Device
+
+
Generic way to create a device
+
+
Device(LegoPort, String, String) - Constructor for class org.ev3dev.hardware.Device
+
+
Create a new device with a LegoPort, ClassName, classNamePrefix
+
+
DflexSensor - Class in org.ev3dev.hardware.sensors.di
+
 
+
DflexSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.di.DflexSensor
+
 
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.motors.LargeMotor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.motors.MediumMotor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.motors.NXTMotor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Pixy Cmucam 5 Sensor driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.ColorSensor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.di.DflexSensor
+
+
dFlex Sensor driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
The EV3 Analog sensor driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
The NXT Analog sensor driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.GyroSensor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.LightSensor
+
+
This device's default driver name
+
+
DRIVER_NAME - Static variable in class org.ev3dev.hardware.sensors.SoundSensor
+
+
This device's default driver name
+
+
DRIVER_NAME_100MM - Static variable in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
The driver name for the L12 EV3 100mm by Actuonix
+
+
DRIVER_NAME_50MM - Static variable in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
The driver name for the L12 EV3 50mm by Actuonix
+
+
DRIVER_NAME_EV3 - Static variable in class org.ev3dev.hardware.sensors.TouchSensor
+
+
This device's default driver name (EV3 Touch Sensor)
+
+
DRIVER_NAME_EV3 - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
This device's default driver name (EV3 Ultrasonic Sensor)
+
+
DRIVER_NAME_NXT - Static variable in class org.ev3dev.hardware.sensors.TouchSensor
+
+
This device's default driver name (NXT Touch Sensor)
+
+
DRIVER_NAME_NXT - Static variable in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
This device's default driver name (NXT Ultrasonic Sensor)
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-5.html b/doc-1.0.0-SNAPSHOT/index-files/index-5.html new file mode 100644 index 0000000..6027b4c --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-5.html @@ -0,0 +1,147 @@ + + + + + +E-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

E

+
+
EV3AnalogSensor - Class in org.ev3dev.hardware.sensors.generic
+
+
Generic EV3 Analog Sensor driver
+
+
EV3AnalogSensor(LegoPort, String) - Constructor for class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
Creates a new EV3 analog sensor
+
+
EV3LibraryException - Exception in org.ev3dev.exception
+
+
This exception is thrown if something was invalid.
+
+
EV3LibraryException() - Constructor for exception org.ev3dev.exception.EV3LibraryException
+
 
+
EV3LibraryException(String) - Constructor for exception org.ev3dev.exception.EV3LibraryException
+
 
+
EV3LibraryException(String, Throwable) - Constructor for exception org.ev3dev.exception.EV3LibraryException
+
 
+
EV3LibraryException(Throwable) - Constructor for exception org.ev3dev.exception.EV3LibraryException
+
 
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-6.html b/doc-1.0.0-SNAPSHOT/index-files/index-6.html new file mode 100644 index 0000000..9ee7ce2 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-6.html @@ -0,0 +1,144 @@ + + + + + +F-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

F

+
+
FirgelliL12100Motor - Class in org.ev3dev.hardware.motors
+
 
+
FirgelliL12100Motor(int) - Constructor for class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
 
+
FirgelliL12100Motor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
 
+
FirgelliL1250Motor - Class in org.ev3dev.hardware.motors
+
 
+
FirgelliL1250Motor(int) - Constructor for class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
 
+
FirgelliL1250Motor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
 
+
Float() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Run to an absolute position specified by position_sp + and then stop using the command specified in stop_command
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-7.html b/doc-1.0.0-SNAPSHOT/index-files/index-7.html new file mode 100644 index 0000000..2e8c1a5 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-7.html @@ -0,0 +1,648 @@ + + + + + +G-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

G

+
+
getAddress() - Method in class org.ev3dev.hardware.Device
+
 
+
getAddress() - Method in class org.ev3dev.hardware.LED
+
 
+
getAddress() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Get the address of this motor.
+
+
getAddress() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Get the address of this motor.
+
+
getAddress() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Get the address of this motor.
+
+
getAddress() - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
Returns the name of the port.
+
+
getAddress() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the name of the port that the sensor is connected to, e.g.
+
+
getAllSubClass(String) - Static method in class org.ev3dev.io.Sysfs
+
+
Get all sub-class files
+
+
getAmbientLightIntensity() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Ambient light intensity.
+
+
getAmbientLightIntensity() - Method in class org.ev3dev.hardware.sensors.LightSensor
+
+
A measurement of the ambient light intensity, as a percentage.
+
+
getAngle() - Method in class org.ev3dev.hardware.sensors.GyroSensor
+
+
The number of degrees that the sensor has been rotated since it was put into this mode.
+
+
getAttribute(String) - Method in class org.ev3dev.hardware.Device
+
+
Reads the property specified.
+
+
getAttribute(String, String) - Static method in class org.ev3dev.io.Sysfs
+
+
Reads the property of the class specified.
+
+
getAttribute(String, String, String) - Static method in class org.ev3dev.io.Sysfs
+
+
Reads the property of the class and subclass specified.
+
+
getAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
getBrightness() - Method in class org.ev3dev.hardware.LED
+
+
Gets the brightness level.
+
+
getClassFullName() - Method in class org.ev3dev.hardware.Device
+
+
Get the full filename (not prefix) inside the Sysfs class of this Device.
+
+
getClassNamePrefix() - Method in class org.ev3dev.hardware.Device
+
+
Get the filename prefix inside the Sysfs class (prefix (e.g.
+
+
getColor() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Color detected by the sensor, categorized by overall value.
+
+
getCommands() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Returns a list of commands that are supported by the motor controller.
+
+
getCommands() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns a list of commands that are supported by the motor controller.
+
+
getCommands() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns a list of the valid commands for the sensor.
+
+
getCommandsViaString() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
This function returns a String instead of a String Array
+ Use this function to return a String Array directly:
+
+
getCount() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Get the count
+
+
getCountPerMetre() - Method in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
Returns the number of tacho counts in one meter of travel of the motor.
+
+
getCountPerMetre() - Method in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
Returns the number of tacho counts in one meter of travel of the motor.
+
+
getCountPerRot() - Method in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
Do not use this on Firgelli L12 50/100 Motors (Linear motors).
+ -1 will be returned instead, use getCountPerMetre()
+
+
getCountPerRot() - Method in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
Do not use this on Firgelli L12 50/100 Motors (Linear motors).
+ -1 will be returned instead, use getCountPerMetre()
+
+
getCountPerRot() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the number of tacho counts in one rotation of the motor.
+
+
getDecimals() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the number of decimal places for the values in the value[N] attributes of the current mode.
+
+
getDelay_Off() - Method in class org.ev3dev.hardware.LED
+
+
The timer trigger will periodically change the LED brightness between 0 and the current brightness setting.
+
+
getDelay_On() - Method in class org.ev3dev.hardware.LED
+
+
The timer trigger will periodically change the LED brightness between 0 and the current brightness setting.
+
+
getDistanceCentimeters() - Method in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Measurement of the distance detected by the sensor, in centimeters.
+
+
getDistanceInches() - Method in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Measurement of the distance detected by the sensor, in inches.
+
+
getDriverName() - Method in class org.ev3dev.hardware.Device
+
 
+
getDriverName() - Method in class org.ev3dev.hardware.LED
+
 
+
getDriverName() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Returns the name of the driver that provides this tacho motor device.
+
+
getDriverName() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the name of the driver that provides this tacho motor device.
+
+
getDriverName() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Returns the name of the driver that provides this tacho motor device.
+
+
getDriverName() - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
Returns the name of the driver that loaded this device.
+
+
getDriverName() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the name of the sensor device/driver.
+
+
getDutyCycle() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Returns the current duty cycle of the motor.
+
+
getDutyCycle() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the current duty cycle of the motor.
+
+
getDutyCycleSP() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the duty cycle setpoint.
+
+
getDutyCycleSP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the duty cycle setpoint.
+
+
getFirmwareVersion() - Method in class org.ev3dev.hardware.sensors.I2CSensor
+
+
Returns the firmware version of the sensor if available.
+
+
getFullTravelCount() - Method in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
Returns the number of tacho counts in the full travel of the motor.
+
+
getFullTravelCount() - Method in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
Returns the number of tacho counts in the full travel of the motor.
+
+
getHeight() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the height
+
+
getHeight() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Get the height
+
+
getMaxBrightness() - Method in class org.ev3dev.hardware.LED
+
+
Returns the maximum allowable brightness value.
+
+
getMaxPulse_SP() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the maximum (clockwise) position_sp.
+
+
getMaxVoltage() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
Get the maximum voltage
+
+
getMeasuredCurrent() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
The measured current that the battery is supplying (in microamps)
+
+
getMeasuredVoltage() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
The measured voltage that the battery is supplying (in microvolts)
+
+
getMidPulse_SP() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the mid position_sp.
+
+
getMinPulse_SP() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the + minimum (counter-clockwise) position_sp.
+
+
getMinVoltage() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
Get the minimum voltage
+
+
getMode() - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
Reading returns the currently selected mode.
+
+
getMode() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the current mode.
+
+
getModes() - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
Returns a list of the available modes of the port.
+
+
getModes() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns a list of the valid modes for the sensor.
+
+
getModesViaString() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
This function returns a String instead of a array.
+ Use this function to return a String Array directly:
+
+
getNumValues() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the number of value[N] attributes that will return a valid value for the current mode.
+
+
getPolarity() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Sets the polarity of the motor.
+
+
getPolarity() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Sets the polarity of the motor.
+
+
getPolarity() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Sets the polarity of the servo.
+
+
getPollMs() - Method in class org.ev3dev.hardware.sensors.I2CSensor
+
+
Returns the polling period of the sensor in milliseconds.
+
+
getPort() - Method in class org.ev3dev.hardware.Device
+
+
Returns the LegoPort connected with this Device
+
+
getPosition() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the current position of the motor in pulses of the rotary encoder.
+
+
getPosition_D() - Method in class org.ev3dev.hardware.motors.Motor
+
+
The derivative constant for the position PID.
+
+
getPosition_I() - Method in class org.ev3dev.hardware.motors.Motor
+
+
The integral constant for the position PID.
+
+
getPosition_P() - Method in class org.ev3dev.hardware.motors.Motor
+
+
The proportional constant for the position PID.
+
+
getPosition_SP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing specifies the target position for the run-to-abs-pos and run-to-rel-pos commands.
+
+
getPosition_SP() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Reading returns the current position_sp of the servo.
+
+
getProductId() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Returns the product id
+
+
getProximity() - Method in class org.ev3dev.hardware.sensors.InfraredSensor
+
+
A measurement of the distance between the sensor and the remote, as a percentage.
+
+
getRamp_Down_SP() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the ramp down setpoint.
+
+
getRamp_Down_SP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the ramp down setpoint.
+
+
getRamp_Up_SP() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing sets the ramp up setpoint.
+
+
getRamp_Up_SP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the ramp up setpoint.
+
+
getRate() - Method in class org.ev3dev.hardware.sensors.GyroSensor
+
+
The rate at which the sensor is rotating, in degrees/second.
+
+
getRawValue() - Method in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
Returns the raw analog voltage / value (0-5000).
+
+ This function does not calculate decimal places.
+
+
getRawValue() - Method in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
Returns the raw analog voltage / value (0-5000).
+ Both mode uses the same value index (value0)
+
+ This function does not calculate decimal places.
+
+
getReflectedLightIntensity() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Reflected light intensity as a percentage.
+
+
getReflectedLightIntensity() - Method in class org.ev3dev.hardware.sensors.LightSensor
+
+
A measurement of the reflected light intensity, as a percentage.
+
+
getRGB_Blue() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Blue component of the detected color, in the range 0-1020
+
+
getRGB_Green() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Green component of the detected color, in the range 0-1020
+
+
getRGB_Red() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Red component of the detected color, in the range 0-1020
+
+
getSignatureHighByte() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the signature high byte
+
+
getSignatureLowByte() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the signature low byte
+
+
getSoundPressure() - Method in class org.ev3dev.hardware.sensors.SoundSensor
+
+
A measurement of the measured sound pressure level, as a percent.
+
+
getSoundPressureLow() - Method in class org.ev3dev.hardware.sensors.SoundSensor
+
+
A measurement of the measured sound pressure level, as a percent.
+
+
getSpeed() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns the current motor speed in tacho counts per second.
+
+
getSpeed_SP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing sets the target speed in tacho counts per second used when speed_regulation is on.
+
+
getState() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Reading returns a list of state flags.
+
+
getState() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Reading returns a list of state flags.
+
+
getState() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
Reading returns a list of state flags.
+
+
getStateViaString() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
This function returns a string that is likely a "spaced-array".
+ Use this function to directly to return a String array:
+
+
getStateViaString() - Method in class org.ev3dev.hardware.motors.Motor
+
+
This function returns a string that is likely a "spaced-array".
+ Use this function to directly to return a String array:
+
+
getStateViaString() - Method in class org.ev3dev.hardware.motors.ServoMotor
+
+
This function returns a string that is likely a "spaced-array".
+ Use this function to directly to return a String array:
+
+
getStatus() - Method in class org.ev3dev.hardware.ports.LegoPort
+
+
In most cases, reading status will return the same value as mode.
+
+
getStopAction() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Reading returns the current stop command.
+
+
getStopAction() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Reading returns the current stop command.
+
+
getStopActions() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Returns a list of stop modes supported by the motor controller.
+
+
getStopActionsViaString() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
This function returns a string that is likely a "spaced-array".
+ Use this function to directly to return a String array:
+
+
getStopCommands() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Returns a list of stop modes supported by the motor controller.
+
+
getStopCommandsViaString() - Method in class org.ev3dev.hardware.motors.Motor
+
+
This function returns a string that is likely a "spaced-array".
+ Use this function to directly to return a String array:
+
+
getTechnology() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
Get the technology of this power supply
+
+
getTime_SP() - Method in class org.ev3dev.hardware.motors.DCMotor
+
+
Writing specifies the amount of time the motor will run when using the run-timed command.
+
+
getTime_SP() - Method in class org.ev3dev.hardware.motors.Motor
+
+
Writing specifies the amount of time the motor will run when using the run-timed command.
+
+
getTrigger() - Method in class org.ev3dev.hardware.LED
+
+
Gets the led trigger.
+
+
getTriggers() - Method in class org.ev3dev.hardware.LED
+
+
Returns a list of available triggers.
+
+
getTriggersViaString() - Method in class org.ev3dev.hardware.LED
+
+
This function only returns a String, a spaced-array String.
+ Use this function to return a String Array directly:
+
+
getType() - Static method in class org.ev3dev.hardware.PowerSupply
+
+
Get the type of this power supply
+
+
getUnits() - Method in class org.ev3dev.hardware.sensors.Sensor
+
+
Returns the units of the measured value for the current mode.
+
+
getValue() - Method in class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+
+
Returns the raw analog voltage / value (0-5000), and with decimal places
+
+
getValue() - Method in class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor
+
+
Returns the raw analog voltage / value (0-5000), and with decimal places
+ Both mode uses the same value index (value0)
+
+
getVendorId() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+
+
Returns the vendor id
+
+
getWidth() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the width
+
+
getWidth() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Get the width
+
+
getX() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the X point
+
+
getX() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Get the X point
+
+
getY() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Get the Y point
+
+
getY() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Get the Y point
+
+
GREEN - Static variable in class org.ev3dev.hardware.LED
+
+
Green color.
+
+
GyroSensor - Class in org.ev3dev.hardware.sensors
+
+
LEGO EV3 gyro sensor.
+
+
GyroSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.GyroSensor
+
+
Creates a new GyroSensor instance.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-8.html b/doc-1.0.0-SNAPSHOT/index-files/index-8.html new file mode 100644 index 0000000..c799a13 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-8.html @@ -0,0 +1,288 @@ + + + + + +I-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

I

+
+
I2CSensor - Class in org.ev3dev.hardware.sensors
+
+
A generic interface to control I2C-type EV3 sensors.
+
+
I2CSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.I2CSensor
+
+
Creates a new I2CSensor instance.
+
+
InfraredSensor - Class in org.ev3dev.hardware.sensors
+
+
LEGO EV3 infrared sensor.
+
+
InfraredSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.InfraredSensor
+
+
Creates a new InfraredSensor instance.
+
+
INPUT_1 - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Sensor Port 1 on the EV3
+
+
INPUT_2 - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Sensor Port 2 on the EV3
+
+
INPUT_3 - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Sensor Port 3 on the EV3
+
+
INPUT_4 - Static variable in class org.ev3dev.hardware.ports.LegoPort
+
+
Sensor Port 4 on the EV3
+
+
InvalidButtonException - Exception in org.ev3dev.exception
+
+
This exception is thrown if:
+
+ The specified button does not exist, or you are not using the int fields.
+
+
InvalidButtonException() - Constructor for exception org.ev3dev.exception.InvalidButtonException
+
 
+
InvalidButtonException(String) - Constructor for exception org.ev3dev.exception.InvalidButtonException
+
 
+
InvalidButtonException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidButtonException
+
 
+
InvalidButtonException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidButtonException
+
 
+
InvalidLEDException - Exception in org.ev3dev.exception
+
+
This exception is thrown if:
+ LED specified LED does not exist.
+
+
InvalidLEDException() - Constructor for exception org.ev3dev.exception.InvalidLEDException
+
 
+
InvalidLEDException(String) - Constructor for exception org.ev3dev.exception.InvalidLEDException
+
 
+
InvalidLEDException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidLEDException
+
 
+
InvalidLEDException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidLEDException
+
 
+
InvalidModeException - Exception in org.ev3dev.exception
+
+
This exception is thrown if your device is not using a correct mode for requested function.
+
+
InvalidModeException() - Constructor for exception org.ev3dev.exception.InvalidModeException
+
 
+
InvalidModeException(String) - Constructor for exception org.ev3dev.exception.InvalidModeException
+
 
+
InvalidModeException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidModeException
+
 
+
InvalidModeException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidModeException
+
 
+
InvalidMotorException - Exception in org.ev3dev.exception
+
+
This exception is thrown if:
+ LargeMotor selected port's driver isn't LargeMotor's driver.
+ MediumMotor selected port's driver isn't MediumMotor's driver.
+
+
InvalidMotorException() - Constructor for exception org.ev3dev.exception.InvalidMotorException
+
 
+
InvalidMotorException(String) - Constructor for exception org.ev3dev.exception.InvalidMotorException
+
 
+
InvalidMotorException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidMotorException
+
 
+
InvalidMotorException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidMotorException
+
 
+
InvalidPortException - Exception in org.ev3dev.exception
+
+
This exception is thrown if:
+ LegoPort port is lower than 0 or higher than 7
+ TachoMotor port number does not found.
+
+
InvalidPortException() - Constructor for exception org.ev3dev.exception.InvalidPortException
+
 
+
InvalidPortException(String) - Constructor for exception org.ev3dev.exception.InvalidPortException
+
 
+
InvalidPortException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidPortException
+
 
+
InvalidPortException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidPortException
+
 
+
InvalidSensorException - Exception in org.ev3dev.exception
+
+
This exception is thrown if:
+
+ 1.
+
+
InvalidSensorException() - Constructor for exception org.ev3dev.exception.InvalidSensorException
+
 
+
InvalidSensorException(String) - Constructor for exception org.ev3dev.exception.InvalidSensorException
+
 
+
InvalidSensorException(String, Throwable) - Constructor for exception org.ev3dev.exception.InvalidSensorException
+
 
+
InvalidSensorException(Throwable) - Constructor for exception org.ev3dev.exception.InvalidSensorException
+
 
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll
+
+
Returns whether it will auto switch mode or not.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig
+
+
Returns whether it will auto switch mode or not.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.ColorSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.GyroSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.LightSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.SoundSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.TouchSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isAutoSwitchMode() - Method in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Get whether Auto Switch Mode is enabled or disabled.
+
+
isConnected() - Method in class org.ev3dev.hardware.Device
+
+
If a valid device is found while enumerating the ports, the connected variable is set to true (by default, it should be false).
+
+
isOtherSensorPresent() - Method in class org.ev3dev.hardware.sensors.UltrasonicSensor
+
+
Value indicating whether another ultrasonic sensor could be heard nearby.
+
+
isPressed() - Method in class org.ev3dev.hardware.Button
+
+
Returns whether the button is pressed.
+
+
isPressed() - Method in class org.ev3dev.hardware.sensors.TouchSensor
+
+
A boolean indicating whether the current touch sensor is being pressed.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index-files/index-9.html b/doc-1.0.0-SNAPSHOT/index-files/index-9.html new file mode 100644 index 0000000..3251115 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index-files/index-9.html @@ -0,0 +1,175 @@ + + + + + +L-Index + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
A B C D E F G I L M N O P R S T U V  + + +

L

+
+
LargeMotor - Class in org.ev3dev.hardware.motors
+
 
+
LargeMotor(int) - Constructor for class org.ev3dev.hardware.motors.LargeMotor
+
 
+
LargeMotor(LegoPort) - Constructor for class org.ev3dev.hardware.motors.LargeMotor
+
 
+
LED - Class in org.ev3dev.hardware
+
+
Any device controlled by the generic LED driver.
+
+
LED(int, int) - Constructor for class org.ev3dev.hardware.LED
+
+
Creates a new LED instance.
+
+
LED(String) - Constructor for class org.ev3dev.hardware.LED
+
+
This function is for advanced users.
+ Use this function for basic users:
+
+
LEFT - Static variable in class org.ev3dev.hardware.LED
+
+
Left EV3 Button
+
+
LegoPort - Class in org.ev3dev.hardware.ports
+
+
The lego-port class provides an interface for working with input and output ports that are compatible with LEGO MINDSTORMS RCX/NXT/EV3, + LEGO WeDo and LEGO Power Functions sensors and motors.
+
+
LegoPort(int) - Constructor for class org.ev3dev.hardware.ports.LegoPort
+
+
Creates a new LegoPort object.
+
+
LightSensor - Class in org.ev3dev.hardware.sensors
+
+
LEGO NXT Light Sensor
+
+
LightSensor(LegoPort) - Constructor for class org.ev3dev.hardware.sensors.LightSensor
+
+
Creates a new LightSensor instance.
+
+
LINEAR_MOTOR_CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.motors.FirgelliL12100Motor
+
+
This Sysfs's class name prefix (e.g.
+
+
LINEAR_MOTOR_CLASS_NAME_PREFIX - Static variable in class org.ev3dev.hardware.motors.FirgelliL1250Motor
+
+
This Sysfs's class name prefix (e.g.
+
+
+A B C D E F G I L M N O P R S T U V 
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/index.html b/doc-1.0.0-SNAPSHOT/index.html new file mode 100644 index 0000000..eaaebb7 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/index.html @@ -0,0 +1,74 @@ + + + + + +Generated Documentation (Untitled) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/EV3LibraryException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/EV3LibraryException.html new file mode 100644 index 0000000..e5b8eb5 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/EV3LibraryException.html @@ -0,0 +1,312 @@ + + + + + +EV3LibraryException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class EV3LibraryException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidButtonException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidButtonException.html new file mode 100644 index 0000000..f2331eb --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidButtonException.html @@ -0,0 +1,315 @@ + + + + + +InvalidButtonException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidButtonException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidLEDException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidLEDException.html new file mode 100644 index 0000000..0892170 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidLEDException.html @@ -0,0 +1,314 @@ + + + + + +InvalidLEDException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidLEDException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidModeException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidModeException.html new file mode 100644 index 0000000..13f2377 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidModeException.html @@ -0,0 +1,313 @@ + + + + + +InvalidModeException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidModeException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidMotorException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidMotorException.html new file mode 100644 index 0000000..9c02f1a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidMotorException.html @@ -0,0 +1,315 @@ + + + + + +InvalidMotorException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidMotorException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidPortException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidPortException.html new file mode 100644 index 0000000..c102af9 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidPortException.html @@ -0,0 +1,315 @@ + + + + + +InvalidPortException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidPortException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidSensorException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidSensorException.html new file mode 100644 index 0000000..2ab6486 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/InvalidSensorException.html @@ -0,0 +1,317 @@ + + + + + +InvalidSensorException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.exception
+

Class InvalidSensorException

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/EV3LibraryException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/EV3LibraryException.html new file mode 100644 index 0000000..2782d7b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/EV3LibraryException.html @@ -0,0 +1,1533 @@ + + + + + +Uses of Class org.ev3dev.exception.EV3LibraryException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.EV3LibraryException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidButtonException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidButtonException.html new file mode 100644 index 0000000..f5d6ab7 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidButtonException.html @@ -0,0 +1,166 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidButtonException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidButtonException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidLEDException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidLEDException.html new file mode 100644 index 0000000..ca675b4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidLEDException.html @@ -0,0 +1,173 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidLEDException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidLEDException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidModeException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidModeException.html new file mode 100644 index 0000000..ae94292 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidModeException.html @@ -0,0 +1,264 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidModeException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidModeException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidMotorException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidMotorException.html new file mode 100644 index 0000000..a3d75c6 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidMotorException.html @@ -0,0 +1,167 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidMotorException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidMotorException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidPortException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidPortException.html new file mode 100644 index 0000000..0e3e154 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidPortException.html @@ -0,0 +1,271 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidPortException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidPortException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidSensorException.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidSensorException.html new file mode 100644 index 0000000..7ae9a04 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/class-use/InvalidSensorException.html @@ -0,0 +1,196 @@ + + + + + +Uses of Class org.ev3dev.exception.InvalidSensorException + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.exception.InvalidSensorException

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-frame.html new file mode 100644 index 0000000..eb912ac --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-frame.html @@ -0,0 +1,26 @@ + + + + + +org.ev3dev.exception + + + + + +

org.ev3dev.exception

+
+

Exceptions

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-summary.html new file mode 100644 index 0000000..cc2b960 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-summary.html @@ -0,0 +1,202 @@ + + + + + +org.ev3dev.exception + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.exception

+
+
Exceptions that handles errors of I/O
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.exception Description

+
Exceptions that handles errors of I/O
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-tree.html new file mode 100644 index 0000000..f2482ef --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-tree.html @@ -0,0 +1,158 @@ + + + + + +org.ev3dev.exception Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.exception

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-use.html new file mode 100644 index 0000000..26c5b7d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/exception/package-use.html @@ -0,0 +1,369 @@ + + + + + +Uses of Package org.ev3dev.exception + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.exception

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Button.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Button.html new file mode 100644 index 0000000..b4f6348 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Button.html @@ -0,0 +1,436 @@ + + + + + +Button + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware
+

Class Button

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Device.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Device.html new file mode 100644 index 0000000..aaab31d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/Device.html @@ -0,0 +1,536 @@ + + + + + +Device + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware
+

Class Device

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/LED.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/LED.html new file mode 100644 index 0000000..51db4fb --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/LED.html @@ -0,0 +1,862 @@ + + + + + +LED + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware
+

Class LED

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/PowerSupply.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/PowerSupply.html new file mode 100644 index 0000000..690f41a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/PowerSupply.html @@ -0,0 +1,564 @@ + + + + + +PowerSupply + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware
+

Class PowerSupply

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Button.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Button.html new file mode 100644 index 0000000..d96d4e3 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Button.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.Button + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.Button

+
+
No usage of org.ev3dev.hardware.Button
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Device.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Device.html new file mode 100644 index 0000000..ea69cfe --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/Device.html @@ -0,0 +1,373 @@ + + + + + +Uses of Class org.ev3dev.hardware.Device + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.Device

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/LED.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/LED.html new file mode 100644 index 0000000..2544d9d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/LED.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.LED + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.LED

+
+
No usage of org.ev3dev.hardware.LED
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/PowerSupply.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/PowerSupply.html new file mode 100644 index 0000000..0722267 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/class-use/PowerSupply.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.PowerSupply + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.PowerSupply

+
+
No usage of org.ev3dev.hardware.PowerSupply
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/DCMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/DCMotor.html new file mode 100644 index 0000000..39f1de4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/DCMotor.html @@ -0,0 +1,1316 @@ + + + + + +DCMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class DCMotor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL12100Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL12100Motor.html new file mode 100644 index 0000000..93a5e22 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL12100Motor.html @@ -0,0 +1,492 @@ + + + + + +FirgelliL12100Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class FirgelliL12100Motor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL1250Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL1250Motor.html new file mode 100644 index 0000000..ac4d8ef --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/FirgelliL1250Motor.html @@ -0,0 +1,492 @@ + + + + + +FirgelliL1250Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class FirgelliL1250Motor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/LargeMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/LargeMotor.html new file mode 100644 index 0000000..5cac262 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/LargeMotor.html @@ -0,0 +1,339 @@ + + + + + +LargeMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class LargeMotor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/MediumMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/MediumMotor.html new file mode 100644 index 0000000..b29136e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/MediumMotor.html @@ -0,0 +1,339 @@ + + + + + +MediumMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class MediumMotor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/Motor.html new file mode 100644 index 0000000..c3abedc --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/Motor.html @@ -0,0 +1,1988 @@ + + + + + +Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class Motor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/NXTMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/NXTMotor.html new file mode 100644 index 0000000..e1869e3 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/NXTMotor.html @@ -0,0 +1,337 @@ + + + + + +NXTMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class NXTMotor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/ServoMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/ServoMotor.html new file mode 100644 index 0000000..a0f453a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/ServoMotor.html @@ -0,0 +1,836 @@ + + + + + +ServoMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.motors
+

Class ServoMotor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/DCMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/DCMotor.html new file mode 100644 index 0000000..2568b26 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/DCMotor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.DCMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.DCMotor

+
+
No usage of org.ev3dev.hardware.motors.DCMotor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL12100Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL12100Motor.html new file mode 100644 index 0000000..c15969b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL12100Motor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.FirgelliL12100Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.FirgelliL12100Motor

+
+
No usage of org.ev3dev.hardware.motors.FirgelliL12100Motor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL1250Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL1250Motor.html new file mode 100644 index 0000000..44ae563 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/FirgelliL1250Motor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.FirgelliL1250Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.FirgelliL1250Motor

+
+
No usage of org.ev3dev.hardware.motors.FirgelliL1250Motor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/LargeMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/LargeMotor.html new file mode 100644 index 0000000..ea41eab --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/LargeMotor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.LargeMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.LargeMotor

+
+
No usage of org.ev3dev.hardware.motors.LargeMotor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/MediumMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/MediumMotor.html new file mode 100644 index 0000000..7418bb1 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/MediumMotor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.MediumMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.MediumMotor

+
+
No usage of org.ev3dev.hardware.motors.MediumMotor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/Motor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/Motor.html new file mode 100644 index 0000000..f0b00f3 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/Motor.html @@ -0,0 +1,182 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.Motor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.Motor

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/NXTMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/NXTMotor.html new file mode 100644 index 0000000..0d09a91 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/NXTMotor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.NXTMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.NXTMotor

+
+
No usage of org.ev3dev.hardware.motors.NXTMotor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/ServoMotor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/ServoMotor.html new file mode 100644 index 0000000..2b7593a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/class-use/ServoMotor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.motors.ServoMotor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.motors.ServoMotor

+
+
No usage of org.ev3dev.hardware.motors.ServoMotor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-frame.html new file mode 100644 index 0000000..81593de --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-frame.html @@ -0,0 +1,27 @@ + + + + + +org.ev3dev.hardware.motors + + + + + +

org.ev3dev.hardware.motors

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-summary.html new file mode 100644 index 0000000..83057e0 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-summary.html @@ -0,0 +1,193 @@ + + + + + +org.ev3dev.hardware.motors + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.motors

+
+
Motor classes.
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.hardware.motors Description

+
Motor classes. e.g. Motor, DCMotor, ServoMotor etc.
+ Example: +
+ LegoPort port = new LegoPort(LegoPort.OUTPUT_A);
+ Motor motor = new Motor(port);
+ motor.setDutyCycle_SP(50); //Set Speed
+ motor.runForever(); //Run forever
+ 
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-tree.html new file mode 100644 index 0000000..c5b91fb --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-tree.html @@ -0,0 +1,151 @@ + + + + + +org.ev3dev.hardware.motors Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.motors

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-use.html new file mode 100644 index 0000000..a7c3587 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/motors/package-use.html @@ -0,0 +1,161 @@ + + + + + +Uses of Package org.ev3dev.hardware.motors + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.motors

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-frame.html new file mode 100644 index 0000000..a02fcc2 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-frame.html @@ -0,0 +1,23 @@ + + + + + +org.ev3dev.hardware + + + + + +

org.ev3dev.hardware

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-summary.html new file mode 100644 index 0000000..1e8b580 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-summary.html @@ -0,0 +1,175 @@ + + + + + +org.ev3dev.hardware + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware

+
+
Hardware classes of EV3, to interact with them.
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.hardware Description

+
Hardware classes of EV3, to interact with them.
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-tree.html new file mode 100644 index 0000000..6ea2634 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-tree.html @@ -0,0 +1,143 @@ + + + + + +org.ev3dev.hardware Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-use.html new file mode 100644 index 0000000..36aad3a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/package-use.html @@ -0,0 +1,270 @@ + + + + + +Uses of Package org.ev3dev.hardware + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/LegoPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/LegoPort.html new file mode 100644 index 0000000..c194480 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/LegoPort.html @@ -0,0 +1,667 @@ + + + + + +LegoPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.ports
+

Class LegoPort

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/MotorPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/MotorPort.html new file mode 100644 index 0000000..a76ce0c --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/MotorPort.html @@ -0,0 +1,368 @@ + + + + + +MotorPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.ports
+

Class MotorPort

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/SensorPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/SensorPort.html new file mode 100644 index 0000000..23cb238 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/SensorPort.html @@ -0,0 +1,368 @@ + + + + + +SensorPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.ports
+

Class SensorPort

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/LegoPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/LegoPort.html new file mode 100644 index 0000000..23904bc --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/LegoPort.html @@ -0,0 +1,408 @@ + + + + + +Uses of Class org.ev3dev.hardware.ports.LegoPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.ports.LegoPort

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/MotorPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/MotorPort.html new file mode 100644 index 0000000..354328d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/MotorPort.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.ports.MotorPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.ports.MotorPort

+
+
No usage of org.ev3dev.hardware.ports.MotorPort
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/SensorPort.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/SensorPort.html new file mode 100644 index 0000000..e4b3373 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/class-use/SensorPort.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.ports.SensorPort + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.ports.SensorPort

+
+
No usage of org.ev3dev.hardware.ports.SensorPort
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-frame.html new file mode 100644 index 0000000..3351877 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-frame.html @@ -0,0 +1,22 @@ + + + + + +org.ev3dev.hardware.ports + + + + + +

org.ev3dev.hardware.ports

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-summary.html new file mode 100644 index 0000000..8c4efe1 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-summary.html @@ -0,0 +1,174 @@ + + + + + +org.ev3dev.hardware.ports + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.ports

+
+
LegoPort ports, such as LegoPort, SensorPort, MotorPort
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.hardware.ports Description

+
LegoPort ports, such as LegoPort, SensorPort, MotorPort
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-tree.html new file mode 100644 index 0000000..6f187d7 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-tree.html @@ -0,0 +1,142 @@ + + + + + +org.ev3dev.hardware.ports Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.ports

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-use.html new file mode 100644 index 0000000..a61c0c6 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/ports/package-use.html @@ -0,0 +1,300 @@ + + + + + +Uses of Package org.ev3dev.hardware.ports + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.ports

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/ColorSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/ColorSensor.html new file mode 100644 index 0000000..7717f48 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/ColorSensor.html @@ -0,0 +1,749 @@ + + + + + +ColorSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class ColorSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/GyroSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/GyroSensor.html new file mode 100644 index 0000000..4cb751a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/GyroSensor.html @@ -0,0 +1,523 @@ + + + + + +GyroSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class GyroSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/I2CSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/I2CSensor.html new file mode 100644 index 0000000..019feb2 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/I2CSensor.html @@ -0,0 +1,448 @@ + + + + + +I2CSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class I2CSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/InfraredSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/InfraredSensor.html new file mode 100644 index 0000000..c727f78 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/InfraredSensor.html @@ -0,0 +1,458 @@ + + + + + +InfraredSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class InfraredSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/LightSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/LightSensor.html new file mode 100644 index 0000000..ce73359 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/LightSensor.html @@ -0,0 +1,536 @@ + + + + + +LightSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class LightSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/Sensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/Sensor.html new file mode 100644 index 0000000..1b62a23 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/Sensor.html @@ -0,0 +1,835 @@ + + + + + +Sensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class Sensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/SoundSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/SoundSensor.html new file mode 100644 index 0000000..19c3fce --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/SoundSensor.html @@ -0,0 +1,536 @@ + + + + + +SoundSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class SoundSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/TouchSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/TouchSensor.html new file mode 100644 index 0000000..92bd22d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/TouchSensor.html @@ -0,0 +1,486 @@ + + + + + +TouchSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class TouchSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/UltrasonicSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/UltrasonicSensor.html new file mode 100644 index 0000000..d9d2537 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/UltrasonicSensor.html @@ -0,0 +1,616 @@ + + + + + +UltrasonicSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors
+

Class UltrasonicSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeAll.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeAll.html new file mode 100644 index 0000000..809353e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeAll.html @@ -0,0 +1,413 @@ + + + + + +PixyCmucam5.ModeAll + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.charmedlabs
+

Class PixyCmucam5.ModeAll

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeSig.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeSig.html new file mode 100644 index 0000000..6adccd3 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.ModeSig.html @@ -0,0 +1,390 @@ + + + + + +PixyCmucam5.ModeSig + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.charmedlabs
+

Class PixyCmucam5.ModeSig

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.html new file mode 100644 index 0000000..cce537b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5.html @@ -0,0 +1,1111 @@ + + + + + +PixyCmucam5 + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.charmedlabs
+

Class PixyCmucam5

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeAll.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeAll.html new file mode 100644 index 0000000..33a62c9 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeAll.html @@ -0,0 +1,168 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeAll

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeSig.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeSig.html new file mode 100644 index 0000000..925c778 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.ModeSig.html @@ -0,0 +1,224 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5.ModeSig

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.html new file mode 100644 index 0000000..b647883 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/class-use/PixyCmucam5.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5 + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5

+
+
No usage of org.ev3dev.hardware.sensors.charmedlabs.PixyCmucam5
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-frame.html new file mode 100644 index 0000000..3c65328 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-frame.html @@ -0,0 +1,20 @@ + + + + + +org.ev3dev.hardware.sensors.charmedlabs + + + + + +

org.ev3dev.hardware.sensors.charmedlabs

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-summary.html new file mode 100644 index 0000000..d434923 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-summary.html @@ -0,0 +1,144 @@ + + + + + +org.ev3dev.hardware.sensors.charmedlabs + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.sensors.charmedlabs

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-tree.html new file mode 100644 index 0000000..bfdae4e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-tree.html @@ -0,0 +1,151 @@ + + + + + +org.ev3dev.hardware.sensors.charmedlabs Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.sensors.charmedlabs

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-use.html new file mode 100644 index 0000000..e36c84b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/charmedlabs/package-use.html @@ -0,0 +1,164 @@ + + + + + +Uses of Package org.ev3dev.hardware.sensors.charmedlabs + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.sensors.charmedlabs

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/ColorSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/ColorSensor.html new file mode 100644 index 0000000..5bf324e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/ColorSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.ColorSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.ColorSensor

+
+
No usage of org.ev3dev.hardware.sensors.ColorSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/GyroSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/GyroSensor.html new file mode 100644 index 0000000..6f6eb0e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/GyroSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.GyroSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.GyroSensor

+
+
No usage of org.ev3dev.hardware.sensors.GyroSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/I2CSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/I2CSensor.html new file mode 100644 index 0000000..35d4ac4 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/I2CSensor.html @@ -0,0 +1,166 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.I2CSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.I2CSensor

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/InfraredSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/InfraredSensor.html new file mode 100644 index 0000000..b4deb3d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/InfraredSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.InfraredSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.InfraredSensor

+
+
No usage of org.ev3dev.hardware.sensors.InfraredSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/LightSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/LightSensor.html new file mode 100644 index 0000000..c197296 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/LightSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.LightSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.LightSensor

+
+
No usage of org.ev3dev.hardware.sensors.LightSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/Sensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/Sensor.html new file mode 100644 index 0000000..bbd168c --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/Sensor.html @@ -0,0 +1,282 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.Sensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.Sensor

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/SoundSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/SoundSensor.html new file mode 100644 index 0000000..3fcbfac --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/SoundSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.SoundSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.SoundSensor

+
+
No usage of org.ev3dev.hardware.sensors.SoundSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/TouchSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/TouchSensor.html new file mode 100644 index 0000000..5d41612 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/TouchSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.TouchSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.TouchSensor

+
+
No usage of org.ev3dev.hardware.sensors.TouchSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/UltrasonicSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/UltrasonicSensor.html new file mode 100644 index 0000000..87da63a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/class-use/UltrasonicSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.UltrasonicSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.UltrasonicSensor

+
+
No usage of org.ev3dev.hardware.sensors.UltrasonicSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/DflexSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/DflexSensor.html new file mode 100644 index 0000000..1b1a121 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/DflexSensor.html @@ -0,0 +1,375 @@ + + + + + +DflexSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.di
+

Class DflexSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/class-use/DflexSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/class-use/DflexSensor.html new file mode 100644 index 0000000..1c479af --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/class-use/DflexSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.di.DflexSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.di.DflexSensor

+
+
No usage of org.ev3dev.hardware.sensors.di.DflexSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-frame.html new file mode 100644 index 0000000..0397bb0 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-frame.html @@ -0,0 +1,20 @@ + + + + + +org.ev3dev.hardware.sensors.di + + + + + +

org.ev3dev.hardware.sensors.di

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-summary.html new file mode 100644 index 0000000..a76f5d2 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-summary.html @@ -0,0 +1,142 @@ + + + + + +org.ev3dev.hardware.sensors.di + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.sensors.di

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-tree.html new file mode 100644 index 0000000..d2164f5 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-tree.html @@ -0,0 +1,149 @@ + + + + + +org.ev3dev.hardware.sensors.di Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.sensors.di

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-use.html new file mode 100644 index 0000000..3034f56 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/di/package-use.html @@ -0,0 +1,124 @@ + + + + + +Uses of Package org.ev3dev.hardware.sensors.di + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.sensors.di

+
+
No usage of org.ev3dev.hardware.sensors.di
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.html new file mode 100644 index 0000000..8ccd2ef --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.html @@ -0,0 +1,461 @@ + + + + + +EV3AnalogSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.generic
+

Class EV3AnalogSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.html new file mode 100644 index 0000000..fc8eda6 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.html @@ -0,0 +1,507 @@ + + + + + +NXTAnalogSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.hardware.sensors.generic
+

Class NXTAnalogSensor

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/EV3AnalogSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/EV3AnalogSensor.html new file mode 100644 index 0000000..e6d3628 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/EV3AnalogSensor.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.generic.EV3AnalogSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.generic.EV3AnalogSensor

+
+
No usage of org.ev3dev.hardware.sensors.generic.EV3AnalogSensor
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/NXTAnalogSensor.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/NXTAnalogSensor.html new file mode 100644 index 0000000..3018fbe --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/class-use/NXTAnalogSensor.html @@ -0,0 +1,164 @@ + + + + + +Uses of Class org.ev3dev.hardware.sensors.generic.NXTAnalogSensor + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.hardware.sensors.generic.NXTAnalogSensor

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-frame.html new file mode 100644 index 0000000..8e930cc --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-frame.html @@ -0,0 +1,21 @@ + + + + + +org.ev3dev.hardware.sensors.generic + + + + + +

org.ev3dev.hardware.sensors.generic

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-summary.html new file mode 100644 index 0000000..ccc75f8 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-summary.html @@ -0,0 +1,150 @@ + + + + + +org.ev3dev.hardware.sensors.generic + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.sensors.generic

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-tree.html new file mode 100644 index 0000000..2db3881 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-tree.html @@ -0,0 +1,146 @@ + + + + + +org.ev3dev.hardware.sensors.generic Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.sensors.generic

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-use.html new file mode 100644 index 0000000..f5ca12e --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/generic/package-use.html @@ -0,0 +1,159 @@ + + + + + +Uses of Package org.ev3dev.hardware.sensors.generic + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.sensors.generic

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-frame.html new file mode 100644 index 0000000..4d1ed25 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-frame.html @@ -0,0 +1,28 @@ + + + + + +org.ev3dev.hardware.sensors + + + + + +

org.ev3dev.hardware.sensors

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-summary.html new file mode 100644 index 0000000..a4ab4e5 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-summary.html @@ -0,0 +1,211 @@ + + + + + +org.ev3dev.hardware.sensors + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.hardware.sensors

+
+
Sensor classes.
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.hardware.sensors Description

+
Sensor classes. e.g. Sensor, TouchSensor, ColorSensor, UltrasonicSensor etc.
+ Example: +
+ LegoPort port = new LegoPort(LegoPort.INPUT_1);
+ TouchSensor sensor = new TouchSensor(port);
+ while(true){
+                if(sensor.isPressed()){
+                        System.out.println("Pressed!");
+                }
+ }
+ 
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-tree.html new file mode 100644 index 0000000..0301b50 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-tree.html @@ -0,0 +1,152 @@ + + + + + +org.ev3dev.hardware.sensors Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.hardware.sensors

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-use.html new file mode 100644 index 0000000..4e6189b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/hardware/sensors/package-use.html @@ -0,0 +1,229 @@ + + + + + +Uses of Package org.ev3dev.hardware.sensors + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.hardware.sensors

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/Sysfs.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/Sysfs.html new file mode 100644 index 0000000..aaaf32d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/Sysfs.html @@ -0,0 +1,506 @@ + + + + + +Sysfs + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + + +
+
org.ev3dev.io
+

Class Sysfs

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/class-use/Sysfs.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/class-use/Sysfs.html new file mode 100644 index 0000000..9084124 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/class-use/Sysfs.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.ev3dev.io.Sysfs + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Class
org.ev3dev.io.Sysfs

+
+
No usage of org.ev3dev.io.Sysfs
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-frame.html new file mode 100644 index 0000000..7bd2499 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-frame.html @@ -0,0 +1,20 @@ + + + + + +org.ev3dev.io + + + + + +

org.ev3dev.io

+
+

Classes

+ +
+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-summary.html new file mode 100644 index 0000000..4fbefbb --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-summary.html @@ -0,0 +1,157 @@ + + + + + +org.ev3dev.io + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev.io

+
+
API I/O Controls
+
+

See: Description

+
+
+ + + + +

Package org.ev3dev.io Description

+
API I/O Controls
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-tree.html new file mode 100644 index 0000000..e8fe9d5 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-tree.html @@ -0,0 +1,137 @@ + + + + + +org.ev3dev.io Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev.io

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-use.html new file mode 100644 index 0000000..71d006b --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/io/package-use.html @@ -0,0 +1,124 @@ + + + + + +Uses of Package org.ev3dev.io + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev.io

+
+
No usage of org.ev3dev.io
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/package-frame.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-frame.html new file mode 100644 index 0000000..b7e448c --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-frame.html @@ -0,0 +1,14 @@ + + + + + +org.ev3dev + + + + + +

org.ev3dev

+ + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/package-summary.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-summary.html new file mode 100644 index 0000000..87db6d1 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-summary.html @@ -0,0 +1,137 @@ + + + + + +org.ev3dev + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Package org.ev3dev

+
+
Main package of ev3dev language binding
+
+

See: Description

+
+
+ + +

Package org.ev3dev Description

+
Main package of ev3dev language binding
+
+
Author:
+
Anthony
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/package-tree.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-tree.html new file mode 100644 index 0000000..8bcc9e2 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-tree.html @@ -0,0 +1,127 @@ + + + + + +org.ev3dev Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For Package org.ev3dev

+Package Hierarchies: + +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/org/ev3dev/package-use.html b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-use.html new file mode 100644 index 0000000..4ec70bb --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/org/ev3dev/package-use.html @@ -0,0 +1,124 @@ + + + + + +Uses of Package org.ev3dev + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Uses of Package
org.ev3dev

+
+
No usage of org.ev3dev
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/overview-frame.html b/doc-1.0.0-SNAPSHOT/overview-frame.html new file mode 100644 index 0000000..1d5a89a --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/overview-frame.html @@ -0,0 +1,30 @@ + + + + + +Overview List + + + + + +
All Classes
+
+

Packages

+ +
+

 

+ + diff --git a/doc-1.0.0-SNAPSHOT/overview-summary.html b/doc-1.0.0-SNAPSHOT/overview-summary.html new file mode 100644 index 0000000..60b9767 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/overview-summary.html @@ -0,0 +1,185 @@ + + + + + +Overview + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
org.ev3dev +
Main package of ev3dev language binding
+
org.ev3dev.exception +
Exceptions that handles errors of I/O
+
org.ev3dev.hardware +
Hardware classes of EV3, to interact with them.
+
org.ev3dev.hardware.motors +
Motor classes.
+
org.ev3dev.hardware.ports +
LegoPort ports, such as LegoPort, SensorPort, MotorPort
+
org.ev3dev.hardware.sensors +
Sensor classes.
+
org.ev3dev.hardware.sensors.charmedlabs 
org.ev3dev.hardware.sensors.di 
org.ev3dev.hardware.sensors.generic 
org.ev3dev.io +
API I/O Controls
+
+
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/overview-tree.html b/doc-1.0.0-SNAPSHOT/overview-tree.html new file mode 100644 index 0000000..e699dca --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/overview-tree.html @@ -0,0 +1,216 @@ + + + + + +Class Hierarchy + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/package-list b/doc-1.0.0-SNAPSHOT/package-list new file mode 100644 index 0000000..0ef095d --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/package-list @@ -0,0 +1,10 @@ +org.ev3dev +org.ev3dev.exception +org.ev3dev.hardware +org.ev3dev.hardware.motors +org.ev3dev.hardware.ports +org.ev3dev.hardware.sensors +org.ev3dev.hardware.sensors.charmedlabs +org.ev3dev.hardware.sensors.di +org.ev3dev.hardware.sensors.generic +org.ev3dev.io diff --git a/doc-1.0.0-SNAPSHOT/script.js b/doc-1.0.0-SNAPSHOT/script.js new file mode 100644 index 0000000..c3a1cae --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/doc-1.0.0-SNAPSHOT/serialized-form.html b/doc-1.0.0-SNAPSHOT/serialized-form.html new file mode 100644 index 0000000..89fc3c3 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/serialized-form.html @@ -0,0 +1,195 @@ + + + + + +Serialized Form + + + + + + + + +
+ + +
Skip navigation links
+ + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + +
Skip navigation links
+ + + + +
+ + + + diff --git a/doc-1.0.0-SNAPSHOT/stylesheet.css b/doc-1.0.0-SNAPSHOT/stylesheet.css new file mode 100644 index 0000000..b8dad08 --- /dev/null +++ b/doc-1.0.0-SNAPSHOT/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/ev3dev-lang b/ev3dev-lang deleted file mode 160000 index e5e1b79..0000000 --- a/ev3dev-lang +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e5e1b79333090bdcce313c1cce8956b2bbe9c42d diff --git a/images/ev3virtuallcd.PNG b/images/ev3virtuallcd.PNG new file mode 100644 index 0000000..f41dbe2 Binary files /dev/null and b/images/ev3virtuallcd.PNG differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..99a3221 --- /dev/null +++ b/index.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + ev3dev-lang-java + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+

Home page

+
+ +
+ + +
+
+
+
+ Notice +
+
+ This document still in heavy development. This is just a test. +
+
+
+
+ +
+
+
+
+
+ Generating document... +
+
+
+
+ Generating document... +
+
+
+
+
+
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/docgen.js b/js/docgen.js new file mode 100644 index 0000000..4f6054a --- /dev/null +++ b/js/docgen.js @@ -0,0 +1,170 @@ +// +// DocGen JavaScript +// by mob41 +// +// A script that reads the versions.json and links the javadoc directly. +// Automatically links tutorials too. +// +// Requires jQuery +// +// License based on GPLv3 +// + +// The following code is modified to hook with the web-page. + +var verJson = null; + +function getVersions(){ + $.ajax({ + async: false, + url: "versions.json", + dataType: "json", + error: function(){ + verJson = null; + writeError("Cannot relieve \"versions.json\" from directory") + }, + success: function(data){ + verJson = data; + } + }); + return verJson; +} + +function putLinks(menulist_id){ + var jsons; + + //TODO Hook tutorials + + var json; + var var_version; + var var_javadoc; + if (verJson != null){ + jsons = verJson.versions; + + var content; + for (var i = 0; i < jsons.length; i++){ + json = jsons[i]; + var_version = jsons[i].version; + var_javadoc = jsons[i].javadoc; + + content = ""; + + content += '
  • '; + content += ' ' + var_version + ''; + content += ' '; + content += '
  • '; + + $("#" + menulist_id).append(content); + } + } +} + +function writeError(reason){ + var node = $("#docgen-status"); + + var reasonstr = "Unknown error"; + + if (reason != null){ + reasonstr = reason; + } + + if (node != null){ + var content = ""; + content += '
    '; + content += '
    '; + content += '
    '; + content += '
    '; + content += ' DocGen: Error when generating document'; + content += '
    '; + content += '
    '; + content += ' DocGen failed to generate the document, Reason: ' + reasonstr + ''; + content += '
    '; + content += ' '; + content += '
    '; + content += '
    '; + content += '
    '; + node.html(content); + } +} + +var Doc = function(supportVersions, layoutRows){ + + var private = { + vers: supportVersions, + rows: layoutRows, + }; + + return { + getCode: function(){ + + } + }; +}; + +/** + * Creates a new PageObject
    + *
    + * name - (STRING) Name of the PageObject in String
    + * attrs - (STRING ARRAY) An array of strings of attributes
    + * end_tag_mode - (INTEGER) specify 0 (New Tag to end) or 1 (Same Tag, Slash to end)
    + * newLineAfterTag - (BOOLEAN) New line after tag
    + * newLineAfterBody - (BOOLEAN) New line after body
    + * tabBeforeBody - (BOOLEAN) Tab (4 spaces) before body
    + * autoFillTabsBeforeEndTag - (BOOLEAN) Auto fill tabs before end tag
    + */ +var PageObject = function(name, attrs, end_tag_mode, newLineAfterTag, newLineAfterBody, tabBeforeBody, autoFillTabsBeforeEndTag){ + + var private = { + name: name, + end_tag_mode: end_tag_mode, + newLineAfterTag: newLineAfterTag, + newLineAfterBody: newLineAfterBody, + tabBeforeBody: tabBeforeBody, + autoFillTabsBeforeEndTag: autoFillTabsBeforeEndTag, + attrs: attrs + }; + + return { + getTagName: function(){ + return undefined; + }, + getBody: function(tabLevel){ + return undefined; + }, + getCode: function(){ + + } + } +} + +var DivObject = function(){ + PageObject.apply(this, ["DivObject", [], 0, true, false, false, true]); +} + +DivObject.prototype = PageObject.prototype; +DivObject.prototype.constructor = DivObject; + +DivObject.prototype.getTagName = function(){ + return "div"; +} + +DivObject.prototype.getBody = function(){ + +} + +//In-line functions +getVersions(); + +if (verJson != null){ + putLinks("side-menu"); +} \ No newline at end of file diff --git a/js/sb-admin-2.js b/js/sb-admin-2.js new file mode 100644 index 0000000..e552314 --- /dev/null +++ b/js/sb-admin-2.js @@ -0,0 +1,42 @@ +$(function() { + $('#side-menu').metisMenu(); +}); + +//Loads the correct sidebar on window load, +//collapses the sidebar on window resize. +// Sets the min-height of #page-wrapper to window size +$(function() { + $(window).bind("load resize", function() { + var topOffset = 50; + var width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width; + if (width < 768) { + $('div.navbar-collapse').addClass('collapse'); + topOffset = 100; // 2-row-menu + } else { + $('div.navbar-collapse').removeClass('collapse'); + } + + var height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1; + height = height - topOffset; + if (height < 1) height = 1; + if (height > topOffset) { + $("#page-wrapper").css("min-height", (height) + "px"); + } + }); + + var url = window.location; + // var element = $('ul.nav a').filter(function() { + // return this.href == url; + // }).addClass('active').parent().parent().addClass('in').parent(); + var element = $('ul.nav a').filter(function() { + return this.href == url; + }).addClass('active').parent(); + + while (true) { + if (element.is('li')) { + element = element.parent().addClass('in').parent(); + } else { + break; + } + } +}); diff --git a/js/w3data.js b/js/w3data.js new file mode 100644 index 0000000..7e6d490 --- /dev/null +++ b/js/w3data.js @@ -0,0 +1,149 @@ +/* W3Data ver 1.1 by W3Schools.com */ +var w3DataObject = {}; +function w3DisplayData(id, data) { + var htmlObj, htmlTemplate, html, arr = [], a, l, rowClone, x, j, i, ii, cc, repeat, repeatObj, repeatX = ""; + htmlObj = document.getElementById(id); + htmlTemplate = w3InitTemplate(id, htmlObj); + html = htmlTemplate.cloneNode(true); + arr = w3GetElementsByAttribute(html, "w3-repeat"); + l = arr.length; + for (j = (l-1); j >= 0; j -= 1) { + cc = arr[j].getAttribute("w3-repeat").split(" "); + if (cc.length == 1) { + repeat = cc[0]; + } else { + repeatX = cc[0]; + repeat = cc[2]; + } + arr[j].removeAttribute("w3-repeat"); + repeatObj = data[repeat]; + if (repeatObj && typeof repeatObj == "object" && repeatObj.length != "undefined") { + i = 0; + for (x in repeatObj) { + i += 1; + rowClone = arr[j]; + rowClone = w3NeedleInHaystack(rowClone, "element", repeatX, repeatObj[x]); + a = rowClone.attributes; + for (ii = 0; ii < a.length; ii += 1) { + a[ii].value = w3NeedleInHaystack(a[ii], "attribute", repeatX, repeatObj[x]).value; + } + (i === repeatObj.length) ? arr[j].parentNode.replaceChild(rowClone, arr[j]) : arr[j].parentNode.insertBefore(rowClone, arr[j]); + } + } else { + console.log("w3-repeat must be an array. " + repeat + " is not an array."); + continue; + } + } + html = w3NeedleInHaystack(html, "element"); + htmlObj.parentNode.replaceChild(html, htmlObj); + function w3InitTemplate(id, obj) { + var template; + template = obj.cloneNode(true); + if (w3DataObject.hasOwnProperty(id)) {return w3DataObject[id];} + w3DataObject[id] = template; + return template; + } + function w3GetElementsByAttribute(x, att) { + var arr = [], arrCount = -1, i, l, y = x.getElementsByTagName("*"), z = att.toUpperCase(); + l = y.length; + for (i = -1; i < l; i += 1) { + if (i == -1) {y[i] = x; } + if (y[i].getAttribute(z) !== null) {arrCount += 1; arr[arrCount] = y[i];} + } + return arr; + } + function w3NeedleInHaystack(elmnt, typ, repeatX, x) { + var value, rowClone, pos1, haystack, pos2, needle = [], needleToReplace, i, cc, r; + rowClone = elmnt.cloneNode(true); + pos1 = 0; + while (pos1 > -1) { + haystack = (typ == "attribute") ? rowClone.value : rowClone.innerHTML; + pos1 = haystack.indexOf("{{", pos1); + if (pos1 === -1) {break; } + pos2 = haystack.indexOf("}}", pos1 + 1); + needleToReplace = haystack.substring(pos1 + 2, pos2); + needle = needleToReplace.split("||"); + value = undefined; + for (i = 0; i < needle.length; i += 1) { + needle[i] = needle[i].replace(/^\s+|\s+$/gm,''); //trim + //value = ((x && x[needle[i]]) || (data && data[needle[i]])); + if (x) {value = x[needle[i]];} + if (value == undefined && data) {value = data[needle[i]];} + if (value == undefined) { + cc = needle[i].split("."); + if (cc[0] == repeatX) {value = x[cc[1]]; } + } + if (value == undefined) { + if (needle[i] == repeatX) {value = x; } + } + if (value == undefined) { + if (needle[i].substr(0,1) == '"') { + value = needle[i].replace(/"/g, ""); + } else if (needle[i].substr(0,1) == "'") { + value = needle[i].replace(/'/g, ""); + } + } + if (value != undefined) {break;} + } + if (value != undefined) { + r = "{{" + needleToReplace + "}}"; + if (typ == "attribute") { + rowClone.value = rowClone.value.replace(r, value); + } else { + w3ReplaceHTML(rowClone, r, value); + } + } + pos1 = pos1 + 1; + } + return rowClone; + } + function w3ReplaceHTML(a, r, result) { + var b, l, i, a, x, y, j, ll, nam; + if (a.hasAttributes()) { + b = a.attributes; + l = b.length; + for (i = 0; i < l; i += 1) { + if (b[i].value.indexOf(r) > -1) {b[i].value = b[i].value.replace(r, result); } + } + } + x = a.getElementsByTagName("*"); + l = x.length; + a.innerHTML = a.innerHTML.replace(r, result); + } +} +function w3IncludeHTML() { + var z, i, a, file, xhttp; + z = document.getElementsByTagName("*"); + for (i = 0; i < z.length; i++) { + if (z[i].getAttribute("w3-include-html")) { + a = z[i].cloneNode(false); + file = z[i].getAttribute("w3-include-html"); + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4 && xhttp.status == 200) { + a.removeAttribute("w3-include-html"); + a.innerHTML = xhttp.responseText; + z[i].parentNode.replaceChild(a, z[i]); + w3IncludeHTML(); + } + } + xhttp.open("GET", file, true); + xhttp.send(); + return; + } + } +} +function w3Http(target, readyfunc, xml, method) { + var httpObj; + if (!method) {method = "GET"; } + if (window.XMLHttpRequest) { + httpObj = new XMLHttpRequest(); + } else if (window.ActiveXObject) { + httpObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + if (httpObj) { + if (readyfunc) {httpObj.onreadystatechange = readyfunc; } + httpObj.open(method, target, true); + httpObj.send(xml); + } +} \ No newline at end of file diff --git a/less/mixins.less b/less/mixins.less new file mode 100644 index 0000000..c570996 --- /dev/null +++ b/less/mixins.less @@ -0,0 +1 @@ +// Mixins diff --git a/less/sb-admin-2.less b/less/sb-admin-2.less new file mode 100644 index 0000000..157b6e2 --- /dev/null +++ b/less/sb-admin-2.less @@ -0,0 +1,548 @@ +@import "variables.less"; +@import "mixins.less"; + +// Global Styles + +body { + background-color: @gray-lightest; +} + +// Wrappers + +#wrapper { + width: 100%; +} + +#page-wrapper { + padding: 0 15px; + min-height: 568px; + background-color: white; +} + +@media(min-width:768px) { + #page-wrapper { + position: inherit; + margin: 0 0 0 250px; + padding: 0 30px; + border-left: 1px solid darken(@gray-lightest, 6.5%); + } +} + +// Navigation + +// --Topbar + +.navbar-top-links { + margin-right: 0; +} + +.navbar-top-links li { + display: inline-block; +} + +.navbar-top-links li:last-child { + margin-right: 15px; +} + +.navbar-top-links li a { + padding: 15px; + min-height: 50px; +} + +.navbar-top-links .dropdown-menu li { + display: block; +} + +.navbar-top-links .dropdown-menu li:last-child { + margin-right: 0; +} + +.navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: 0; +} + +.navbar-top-links .dropdown-menu li a div { + white-space: normal; +} + +.navbar-top-links .dropdown-messages, +.navbar-top-links .dropdown-tasks, +.navbar-top-links .dropdown-alerts { + width: 310px; + min-width: 0; +} + +.navbar-top-links .dropdown-messages { + margin-left: 5px; +} + +.navbar-top-links .dropdown-tasks { + margin-left: -59px; +} + +.navbar-top-links .dropdown-alerts { + margin-left: -123px; +} + +.navbar-top-links .dropdown-user { + right: 0; + left: auto; +} + +// --Sidebar + +.sidebar { + .sidebar-nav.navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} + +.sidebar .sidebar-search { + padding: 15px; +} + +.sidebar ul li { + border-bottom: 1px solid darken(@gray-lightest, 6.5%); + a { + &.active { + background-color: @gray-lighter; + } + } +} + +.sidebar .arrow { + float: right; +} + +.sidebar .fa.arrow:before { + content: "\f104"; +} + +.sidebar .active > a > .fa.arrow:before { + content: "\f107"; +} + +.sidebar .nav-second-level li, +.sidebar .nav-third-level li { + border-bottom: none !important; +} + +.sidebar .nav-second-level li a { + padding-left: 37px; +} + +.sidebar .nav-third-level li a { + padding-left: 52px; +} + +@media(min-width:768px) { + .sidebar { + z-index: 1; + position: absolute; + width: 250px; + margin-top: 51px; + } + + .navbar-top-links .dropdown-messages, + .navbar-top-links .dropdown-tasks, + .navbar-top-links .dropdown-alerts { + margin-left: auto; + } +} + +// Buttons + +.btn-outline { + color: inherit; + background-color: transparent; + transition: all .5s; +} + +.btn-primary.btn-outline { + color: @brand-primary; +} + +.btn-success.btn-outline { + color: @brand-success; +} + +.btn-info.btn-outline { + color: @brand-info; +} + +.btn-warning.btn-outline { + color: @brand-warning; +} + +.btn-danger.btn-outline { + color: @brand-danger; +} + +.btn-primary.btn-outline:hover, +.btn-success.btn-outline:hover, +.btn-info.btn-outline:hover, +.btn-warning.btn-outline:hover, +.btn-danger.btn-outline:hover { + color: white; +} + +// Chat Widget + +.chat { + margin: 0; + padding: 0; + list-style: none; +} + +.chat li { + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px dotted @gray-light; +} + +.chat li.left .chat-body { + margin-left: 60px; +} + +.chat li.right .chat-body { + margin-right: 60px; +} + +.chat li .chat-body p { + margin: 0; +} + +.panel .slidedown .glyphicon, +.chat .glyphicon { + margin-right: 5px; +} + +.chat-panel .panel-body { + height: 350px; + overflow-y: scroll; +} + +// Login Page + +.login-panel { + margin-top: 25%; +} + +// Flot Charts Containers + +.flot-chart { + display: block; + height: 400px; +} + +.flot-chart-content { + width: 100%; + height: 100%; +} + +// DataTables Overrides + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background: transparent; +} + +table.dataTable thead .sorting_asc:after { + content: "\f0de"; + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting_desc:after { + content: "\f0dd"; + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting:after { + content: "\f0dc"; + float: right; + font-family: fontawesome; + color: rgba(50,50,50,.5); +} + +// Circle Buttons + +.btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} + +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} + +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} + +// Grid Demo Elements + +.show-grid [class^="col-"] { + padding-top: 10px; + padding-bottom: 10px; + border: 1px solid #ddd; + background-color: #eee !important; +} + +.show-grid { + margin: 15px 0; +} + +// Custom Colored Panels + +.huge { + font-size: 40px; +} + +.panel-green { + border-color: @brand-success; + > .panel-heading { + border-color: @brand-success; + color: white; + background-color: @brand-success; + } + > a { + color: @brand-success; + &:hover { + color: darken(@brand-success, 15%); + } + } +} + +.panel-red { + border-color: @brand-danger; + > .panel-heading { + border-color: @brand-danger; + color: white; + background-color: @brand-danger; + } + > a { + color: @brand-danger; + &:hover { + color: darken(@brand-danger, 15%); + } + } +} + +.panel-yellow { + border-color: @brand-warning; + > .panel-heading { + border-color: @brand-warning; + color: white; + background-color: @brand-warning; + } + > a { + color: @brand-warning; + &:hover { + color: darken(@brand-warning, 15%); + } + } +} + +// Timeline +.timeline { + position: relative; + padding: 20px 0 20px; + list-style: none; +} + +.timeline:before { + content: " "; + position: absolute; + top: 0; + bottom: 0; + left: 50%; + width: 3px; + margin-left: -1.5px; + background-color: #eeeeee; +} + +.timeline > li { + position: relative; + margin-bottom: 20px; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li > .timeline-panel { + float: left; + position: relative; + width: 46%; + padding: 20px; + border: 1px solid #d4d4d4; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0,0,0,0.175); + box-shadow: 0 1px 6px rgba(0,0,0,0.175); +} + +.timeline > li > .timeline-panel:before { + content: " "; + display: inline-block; + position: absolute; + top: 26px; + right: -15px; + border-top: 15px solid transparent; + border-right: 0 solid #ccc; + border-bottom: 15px solid transparent; + border-left: 15px solid #ccc; +} + +.timeline > li > .timeline-panel:after { + content: " "; + display: inline-block; + position: absolute; + top: 27px; + right: -14px; + border-top: 14px solid transparent; + border-right: 0 solid #fff; + border-bottom: 14px solid transparent; + border-left: 14px solid #fff; +} + +.timeline > li > .timeline-badge { + z-index: 100; + position: absolute; + top: 16px; + left: 50%; + width: 50px; + height: 50px; + margin-left: -25px; + border-radius: 50% 50% 50% 50%; + text-align: center; + font-size: 1.4em; + line-height: 50px; + color: #fff; + background-color: #999999; +} + +.timeline > li.timeline-inverted > .timeline-panel { + float: right; +} + +.timeline > li.timeline-inverted > .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; +} + +.timeline > li.timeline-inverted > .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; +} + +.timeline-badge.primary { + background-color: #2e6da4 !important; +} + +.timeline-badge.success { + background-color: #3f903f !important; +} + +.timeline-badge.warning { + background-color: #f0ad4e !important; +} + +.timeline-badge.danger { + background-color: #d9534f !important; +} + +.timeline-badge.info { + background-color: #5bc0de !important; +} + +.timeline-title { + margin-top: 0; + color: inherit; +} + +.timeline-body > p, +.timeline-body > ul { + margin-bottom: 0; +} + +.timeline-body > p + p { + margin-top: 5px; +} + +@media(max-width:767px) { + ul.timeline:before { + left: 40px; + } + + ul.timeline > li > .timeline-panel { + width: calc(100% - 90px); + width: -moz-calc(100% - 90px); + width: -webkit-calc(100% - 90px); + } + + ul.timeline > li > .timeline-badge { + top: 16px; + left: 15px; + margin-left: 0; + } + + ul.timeline > li > .timeline-panel { + float: right; + } + + ul.timeline > li > .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; + } + + ul.timeline > li > .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; + } +} diff --git a/less/variables.less b/less/variables.less new file mode 100644 index 0000000..22f0fc9 --- /dev/null +++ b/less/variables.less @@ -0,0 +1,14 @@ +// Variables + +@gray-darker: lighten(#000, 13.5%); +@gray-dark: lighten(#000, 20%); +@gray: lighten(#000, 33.5%); +@gray-light: lighten(#000, 60%); +@gray-lighter: lighten(#000, 93.5%); +@gray-lightest: lighten(#000, 97.25%); +@brand-primary: #428bca; +@brand-success: #5cb85c; +@brand-info: #5bc0de; +@brand-warning: #f0ad4e; +@brand-danger: #d9534f; + diff --git a/nav.html b/nav.html new file mode 100644 index 0000000..07f2d22 --- /dev/null +++ b/nav.html @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..7f36386 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "sb-admin-2", + "title": "SB Admin 2", + "version": "3.3.7+1", + "homepage": "http://startbootstrap.com/template-overviews/sb-admin-2", + "author": "Start Bootstrap", + "license": { + "type": "MIT", + "url": "https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE" + }, + "devDependencies": { + "browser-sync": "^2.13.0", + "gulp": "^3.9.1", + "gulp-clean-css": "^2.0.10", + "gulp-header": "^1.8.7", + "gulp-less": "^3.1.0", + "gulp-rename": "^1.2.2", + "gulp-uglify": "^1.5.4" + }, + "repository": { + "type": "git", + "url": "git://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git" + } +} diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 976360e..0000000 --- a/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ - - 4.0.0 - org.ev3dev - ev3dev-lang-java - 1.0.0-SNAPSHOT - - ev3dev-lang-java - An ev3dev programming language binding for Java. - https://github.com/mob41/ev3dev-lang-java - - - - MIT License - http://www.opensource.org/licenses/mit-license.php - - - - - - Anthony Law - anthonylaw0401@gmail.com - Anthony Law - http://github.com/mob41 - - - - - scm:git:git://github.com/mob41/ev3dev-lang-java.git - scm:git:ssh://github.com:mob41/ev3dev-lang-java.git - http://github.com/mob41/ev3dev-lang-java/tree/master - - - - 1.7 - 1.7 - - - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - - sign-artifacts - verify - - sign - - - - - - - \ No newline at end of file diff --git a/settings.xml b/settings.xml deleted file mode 100644 index 8071dcc..0000000 --- a/settings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - ossrh - ${env.CI_DEPLOY_USERNAME} - ${env.CI_DEPLOY_PASSWORD} - - - - - ossrh - - true - - - gpg2 - ${env.CI_KEY_PASSPHRASE} - - - - \ No newline at end of file diff --git a/src/main/java/org/ev3dev/exception/EV3LibraryException.java b/src/main/java/org/ev3dev/exception/EV3LibraryException.java deleted file mode 100644 index 3416978..0000000 --- a/src/main/java/org/ev3dev/exception/EV3LibraryException.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if something was invalid. - * @author Anthony - * - */ -public class EV3LibraryException extends RuntimeException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public EV3LibraryException(){ - super(); - } - - public EV3LibraryException(String message){ - super(message); - } - - public EV3LibraryException(String message, Throwable cause){ - super(message, cause); - } - - public EV3LibraryException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidButtonException.java b/src/main/java/org/ev3dev/exception/InvalidButtonException.java deleted file mode 100644 index 08d3cc5..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidButtonException.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if:
    - *
    - * The specified button does not exist, or you are not using the int fields. - * @author Anthony - * - */ -public class InvalidButtonException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidButtonException(){ - super(); - } - - public InvalidButtonException(String message){ - super(message); - } - - public InvalidButtonException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidButtonException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidLEDException.java b/src/main/java/org/ev3dev/exception/InvalidLEDException.java deleted file mode 100644 index 11a4047..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidLEDException.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if:
    - * LED specified LED does not exist. - * @author Anthony - * - */ -public class InvalidLEDException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidLEDException(){ - super(); - } - - public InvalidLEDException(String message){ - super(message); - } - - public InvalidLEDException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidLEDException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidModeException.java b/src/main/java/org/ev3dev/exception/InvalidModeException.java deleted file mode 100644 index f7b94fd..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidModeException.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if your device is not using a correct mode for requested function. - * @author Anthony - * - */ -public class InvalidModeException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidModeException(){ - super(); - } - - public InvalidModeException(String message){ - super(message); - } - - public InvalidModeException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidModeException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidMotorException.java b/src/main/java/org/ev3dev/exception/InvalidMotorException.java deleted file mode 100644 index 22f0679..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidMotorException.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if:
    - * LargeMotor selected port's driver isn't LargeMotor's driver.
    - * MediumMotor selected port's driver isn't MediumMotor's driver. - * @author Anthony - * - */ -public class InvalidMotorException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidMotorException(){ - super(); - } - - public InvalidMotorException(String message){ - super(message); - } - - public InvalidMotorException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidMotorException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidPortException.java b/src/main/java/org/ev3dev/exception/InvalidPortException.java deleted file mode 100644 index 8fc0215..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidPortException.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if:
    - * LegoPort port is lower than 0 or higher than 7
    - * TachoMotor port number does not found. - * @author Anthony - * - */ -public class InvalidPortException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidPortException(){ - super(); - } - - public InvalidPortException(String message){ - super(message); - } - - public InvalidPortException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidPortException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/InvalidSensorException.java b/src/main/java/org/ev3dev/exception/InvalidSensorException.java deleted file mode 100644 index cc1d6ad..0000000 --- a/src/main/java/org/ev3dev/exception/InvalidSensorException.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.ev3dev.exception; - -/*** - * This exception is thrown if:
    - *
    - * 1. The specified port does not contain a sensor.
    - * 2. That sensor was invalid for the specified type.
    - * 3. Could not read the address of the sensor. - * @author Anthony - * - */ -public class InvalidSensorException extends EV3LibraryException { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public InvalidSensorException(){ - super(); - } - - public InvalidSensorException(String message){ - super(message); - } - - public InvalidSensorException(String message, Throwable cause){ - super(message, cause); - } - - public InvalidSensorException(Throwable cause){ - super(cause); - } -} diff --git a/src/main/java/org/ev3dev/exception/package-info.java b/src/main/java/org/ev3dev/exception/package-info.java deleted file mode 100644 index e120d36..0000000 --- a/src/main/java/org/ev3dev/exception/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/*** - * Exceptions that handles errors of I/O - * @author Anthony - * - */ -package org.ev3dev.exception; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/Button.java b/src/main/java/org/ev3dev/hardware/Button.java deleted file mode 100644 index 1dc681b..0000000 --- a/src/main/java/org/ev3dev/hardware/Button.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.ev3dev.hardware; - -import java.io.DataInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; - -import org.ev3dev.exception.InvalidButtonException; - -/*** - * Provides a generic button reading mechanism that can be adapted to platform specific implementations. - * Each platform's specific button capabilites are enumerated in the 'platforms' section of this specification. - * @author Anthony - * - */ -public class Button { - - public static final String SYSTEM_EVENT_PATH = "/dev/input/by-path/platform-gpio-keys.0-event"; - - public static final int BUTTON_UP = 103; - - public static final int BUTTON_DOWN = 108; - - public static final int BUTTON_LEFT = 105; - - public static final int BUTTON_RIGHT = 106; - - public static final int BUTTON_ENTER = 28; - - public static final int BUTTON_BACKSPACE = 14; - - private int button; - - /** - * Creates a new Button instance with the Button specified. - * @param button The Integer field of the Button class - * @throws InvalidButtonException If the specified button isn't a valid button. - */ - public Button(int button) throws InvalidButtonException{ - if (button != BUTTON_UP && button != BUTTON_DOWN && button != BUTTON_LEFT && - button != BUTTON_RIGHT && button != BUTTON_ENTER && button != BUTTON_ENTER && - button != BUTTON_BACKSPACE){ - throw new InvalidButtonException("The button that you specified does not exist. Better use the integer fields like Button.BUTTON_UP"); - } - this.button = button; - } - - /** - * Returns whether the button is pressed. - * @return Boolean that the button is pressed. - */ - public boolean isPressed(){ - try { - DataInputStream in = new DataInputStream(new FileInputStream(SYSTEM_EVENT_PATH)); - byte[] val = new byte[16]; - in.readFully(val); - in.close(); - return test_bit(button, val); - } catch (FileNotFoundException e){ - System.err.println("Error: Are you running this on your EV3? You must run it on your EV3.\n If you still have problems, report a issue to \"mob41/ev3dev-lang-java\"."); - e.printStackTrace(); - System.exit(-1); - return false; - } catch (IOException e){ - System.err.println("### ERROR MESSAGE ###\nError: Unexpected error! Report an issue to \"mob41/ev3dev-lang-java\" now, with logs!\n === STACK TRACE ==="); - e.printStackTrace(); - System.err.println("=== END STACK TRACE ===\nError: Unexpected error! Report an issue to \"mob41/ev3dev-lang-java\" now, with logs!\n ### END MESSAGE ###"); - System.exit(-1); - return false; - } - } - - private static boolean test_bit(int bit, byte[] bytes){ - return ((bytes[bit / 8] & (1 << (bit % 8))) == 1 ? false : true); - } -} diff --git a/src/main/java/org/ev3dev/hardware/Device.java b/src/main/java/org/ev3dev/hardware/Device.java deleted file mode 100644 index ae0262c..0000000 --- a/src/main/java/org/ev3dev/hardware/Device.java +++ /dev/null @@ -1,172 +0,0 @@ -package org.ev3dev.hardware; - -import java.io.IOException; - -import org.ev3dev.exception.EV3LibraryException; - -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.io.Sysfs; - -/** - * This is the base class that handles control tasks for a single port or index. The class must chose one device out of the available ports to control. Given an IO port (in the constructor), an implementation should:
    -
    -- If the specified port is blank or unspecified/undefined/null, the available devices should be enumerated until a suitable device is found. Any device is suitable when it's type is known to be compatible with the controlling class, and it meets any other requirements specified by the caller.
    -
    -- If the specified port name is not blank, the available devices should be enumerated until a device is found that is plugged in to the specified port. The supplied port name should be compared directly to the value from the file, so that advanced port strings will match, such as in1:mux3.
    -
    -- If an error occurs after the initial connection, an exception should be thrown by the binding informing the caller of what went wrong. Unless the error is fatal to the application, no other actions should be taken.
    -
    - * @author Anthony - * - */ -public abstract class Device { - - private String className; - - private String classNamePrefix = null; - - private String address; - - private String classFullName = null; - - private LegoPort port; - - private boolean connected = false; - - /*** - * Generic way to create a device - * @param className The Sysfs Class name - */ - public Device(String className){ - this.port = null; - this.className = className; - } - - /** - * Create a new device with a LegoPort, ClassName, classNamePrefix - * @param port A LegoPort delared before. - * @param className Sysfs class name - * @param classNamePrefix The filename prefix inside the "Sysfs class" (e.g. motor[n], which "motor" is the prefix) - * @throws EV3LibraryException If I/O goes wrong - */ - public Device(LegoPort port, String className, String classNamePrefix) throws EV3LibraryException{ - this.port = port; - this.className = className; - this.classNamePrefix = classNamePrefix; - - address = port.getAddress(); - - connected = checkIsConnected(); - if (!connected){ - System.out.println(className + "-" + this.hashCode() + ": No port connected. Searching until port \"" + address + "\" connected..."); - - while (!connected){ - connected = checkIsConnected(); - } - - System.out.println(className + "-" + this.hashCode() + ": Connected to " + address); - } - - } - - public abstract String getAddress() throws EV3LibraryException; - - public abstract String getDriverName() throws EV3LibraryException; - - /** - * Set the Sysfs class name (location) of this Device - * @param className The Sysfs class name located in /sys/class - */ - public void setClassName(String className){ - this.className = className; - } - - /** - * Set the Sysfs class full name (including prefix if any) - * @param classFullName The Sysfs class name located in /sys/class/[className] - */ - public void setClassFullname(String classFullName){ - this.classFullName = classFullName; - } - - /** - * Set the filename prefix inside the Sysfs class (prefix (e.g. motor)) of this Device - * @param classNamePrefix The filename inside the Sysfs class (e.g. "/sys/class/motor/motor0" motor is a prefix) - */ - public void setClassNamePrefix(String classNamePrefix){ - this.classNamePrefix = classNamePrefix; - } - - /** - * If a valid device is found while enumerating the ports, the connected variable is set to true (by default, it should be false). If connected is false when an attempt is made to read from or write to a property file, an error should be thrown (except while in the consructor). - * @return Whether the device is ready. - */ - public boolean isConnected(){ - return connected; - } - - /** - * Returns the LegoPort connected with this Device - * @return LegoPort object - */ - public LegoPort getPort(){ - return port; - } - - /** - * Get the filename prefix inside the Sysfs class (prefix (e.g. motor)) of this Device - * @return The filename inside the Sysfs class (e.g. "/sys/class/motor/motor0" motor is a prefix) - */ - public String getClassNamePrefix(){ - return classNamePrefix; - } - - /** - * Get the full filename (not prefix) inside the Sysfs class of this Device. This must be already searched by the checkIsConnected() method - * @return The filename inside the Sysfs class (e.g. "/sys/class/motor/motor0" motor0 is the full name) - */ - public String getClassFullName(){ - return classNamePrefix; - } - - /*** - * Reads the property specified. - * @param property The property name - * @return The value of the property - */ - public final String getAttribute(String property) throws EV3LibraryException{ - try { - String str = Sysfs.getAttribute(className, classFullName, property); - connected = true; - return str; - } catch (IOException e){ - connected = false; - throw new EV3LibraryException("Get device attribute failed: " + property, e); - } - } - - /*** - * Writes the property specified. - * @param property The property name - * @param new_value The new value of the property - */ - public final void setAttribute(String property, String new_value) throws EV3LibraryException{ - try { - Sysfs.setAttribute(className, classFullName, property, new_value); - connected = true; - } catch (IOException e){ - connected = false; - throw new EV3LibraryException("Set device attribute failed: " + property, e); - } - } - - private boolean checkIsConnected(){ - try { - classFullName = Sysfs.searchClassFullName(className, classNamePrefix, address); - } catch (Exception ignore){ - classFullName = null; - return false; - } - return classFullName != null; - } -} \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/LCD.java b/src/main/java/org/ev3dev/hardware/LCD.java deleted file mode 100644 index 3d1d485..0000000 --- a/src/main/java/org/ev3dev/hardware/LCD.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.ev3dev.hardware; - -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -import org.ev3dev.exception.EV3LibraryException; - -/** - * Provides an interface to draw to the EV3's LCD - * @author Anthony - * - */ -public class LCD { - - public static final String FB_PATH = "/dev/fb0"; - - //This should not be hard-coded, however just for testing - public static final int SCREEN_WIDTH = 178; - - public static final int SCREEN_HEIGHT = 128; - - public LCD() { - - } - - /** - * Draws a byte array into the EV3 framebuffer - * @param data Byte array to be drawn (128 (height) * 178 / 8 (length) = 3072 bytes) - * @throws EV3LibraryException - */ - public void draw(byte[] data) throws EV3LibraryException{ - File file = new File(FB_PATH); - if (!file.exists()){ - throw new EV3LibraryException("The framebuffer device does not exist! Are you using a EV3?"); - } - try { - DataOutputStream out = new DataOutputStream(new FileOutputStream(file)); - out.write(data); - out.flush(); - out.close(); - } catch (IOException e) { - throw new EV3LibraryException("Unable to draw the LCD", e); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/LCDGraphics.java b/src/main/java/org/ev3dev/hardware/LCDGraphics.java deleted file mode 100644 index c36a65c..0000000 --- a/src/main/java/org/ev3dev/hardware/LCDGraphics.java +++ /dev/null @@ -1,351 +0,0 @@ -package org.ev3dev.hardware; - -import java.awt.Color; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.Rectangle; -import java.awt.Shape; -import java.awt.image.ImageObserver; -import java.text.AttributedCharacterIterator; - -import org.ev3dev.exception.EV3LibraryException; - -public class LCDGraphics extends Graphics { - - public static final int LINE_LEN = 24; - - public static final int ROWS = 128; - - public static final int BUF_SIZE = LINE_LEN * ROWS; - - private LCD lcd; - - private boolean whiteColor = false; - - private byte[] buf; - - private int transx = 0; - - private int transy = 0; - - private Font font; - - public LCDGraphics(LCD lcd) { - this.lcd = lcd; - buf = new byte[BUF_SIZE]; - } - - /** - * Applies the Graphics context onto the ev3dev's LCD - */ - public void flush(){ - lcd.draw(buf); - } - - /** - * Not implemented - */ - @Override - public Graphics create() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void translate(int x, int y) { - this.transx = x; - this.transy = y; - } - - public void setWhiteColor(){ - whiteColor = true; - } - - public void setBlackColor(){ - whiteColor = false; - } - - @Override - public Color getColor() { - return whiteColor ? Color.WHITE : Color.BLACK; - } - - @Override - public void setColor(Color c) throws EV3LibraryException{ - if (c == null || !c.equals(Color.BLACK) || !c.equals(Color.WHITE)){ - throw new EV3LibraryException("The EV3 LCD only supports Color.BLACK and Color.WHITE"); - } - whiteColor = c.equals(Color.WHITE); - } - - /** - * The ev3 LCD does not support PaintMode - */ - @Override - public void setPaintMode() { - throw new EV3LibraryException("The EV3 LCD does not support PaintMode"); - } - - /** - * The ev3 LCD does not support XORMode - */ - @Override - public void setXORMode(Color c1) { - throw new EV3LibraryException("The EV3 LCD does not support XORMode"); - } - - /** - * Not implemented - */ - @Override - public Font getFont() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setFont(Font font) { - // TODO Auto-generated method stub - - } - - /** - * Not implemented - */ - @Override - public FontMetrics getFontMetrics(Font f) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Rectangle getClipBounds() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void clipRect(int x, int y, int width, int height) { - // TODO Auto-generated method stub - - } - - @Override - public void setClip(int x, int y, int width, int height) { - // TODO Auto-generated method stub - - } - - @Override - public Shape getClip() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setClip(Shape clip) { - // TODO Auto-generated method stub - - } - - @Override - public void copyArea(int x, int y, int width, int height, int dx, int dy) { - - } - - @Override - public void drawLine(int x1, int y1, int x2, int y2) { //Uses Bresenham's line algorithm - boolean steep = Math.abs(y2 - y1) > Math.abs(x2 - x1); - - if (steep){ - int tmp = x1; - x1 = y1; - y1 = tmp; - - tmp = x2; - x2 = y2; - y2 = x2; - } - - if (x1 > x2){ - int tmp = x1; - x1 = x2; - x2 = tmp; - - tmp = y1; - y1 = y2; - y2 = tmp; - } - - double deltax = x2 - x1; - double deltay = Math.abs(y2 - y1); - - double err = deltax / 2; - - int xlen = x2 - x1; - int y = y1; - - int ystep; - if (y1 < y2){ - ystep = 1; - } else { - ystep = -1; - } - - for (int i = 0; i < xlen; i++){ - if (steep){ - plot(y,i); - } else { - plot(i,y); - } - - err -= deltay; - if (err < 0){ - y += ystep; - err += deltax; - } - } - } - - /** - * Plot the specified (x,y) position with the selected color (Color.BLACK or Color.WHITE) - * @param x Position x - * @param y Position y - */ - public void plot(int x, int y){ - buf[y * LINE_LEN + x / 8] = (byte) (whiteColor ? 0x00 : 0xff); - } - - @Override - public void fillRect(int x, int y, int width, int height) { - for (int i = 0; i < height; i++){ - for (int j = 0; j < width; j++){ - buf[(((i+y) * LINE_LEN)) + (x + j) / 8] = (byte) (whiteColor ? 0x00 : 0xff); - } - } - } - - @Override - public void clearRect(int x, int y, int width, int height) { - for (int i = 0; i < height; i++){ - for (int j = 0; j < width; j++){ - buf[(((i+y) * LINE_LEN)) + (x + j) / 8] = (byte) 0x00; - } - } - } - - @Override - public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { - // TODO Auto-generated method stub - - } - - @Override - public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { - // TODO Auto-generated method stub - - } - - @Override - public void drawOval(int x, int y, int width, int height) { - // TODO Auto-generated method stub - - } - - @Override - public void fillOval(int x, int y, int width, int height) { - // TODO Auto-generated method stub - - } - - @Override - public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) { - // TODO Auto-generated method stub - - } - - @Override - public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) { - // TODO Auto-generated method stub - - } - - @Override - public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) { - // TODO Auto-generated method stub - - } - - @Override - public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) { - // TODO Auto-generated method stub - - } - - @Override - public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) { - // TODO Auto-generated method stub - - } - - @Override - public void drawString(String str, int x, int y) { - System.out.println("Draw string"); - // TODO Auto-generated method stub - - } - - @Override - public void drawString(AttributedCharacterIterator iterator, int x, int y) { - System.out.println("Draw string2"); - // TODO Auto-generated method stub - - } - - @Override - public boolean drawImage(Image img, int x, int y, ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, - ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, - Color bgcolor, ImageObserver observer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public void dispose() { - // TODO Auto-generated method stub - - } - -} diff --git a/src/main/java/org/ev3dev/hardware/LED.java b/src/main/java/org/ev3dev/hardware/LED.java deleted file mode 100644 index fc94c55..0000000 --- a/src/main/java/org/ev3dev/hardware/LED.java +++ /dev/null @@ -1,247 +0,0 @@ -package org.ev3dev.hardware; - -import java.io.File; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidLEDException; -import org.ev3dev.io.Sysfs; - -/*** - * Any device controlled by the generic LED driver.
    - *
    - * See - * https://www.kernel.org/doc/Documentation/leds/leds-class.txt - * for more details. - * @author Anthony - * - */ -public class LED extends Device{ - - /** - * The Sysfs class's max_brightness property name - */ - public static final String SYSFS_PROPERTY_MAX_BRIGHTNESS = "max_brightness"; - - /** - * The Sysfs class's brightness property name - */ - public static final String SYSFS_PROPERTY_BRIGHTNESS = "brightness"; - - /** - * The Sysfs class's trigger property name - */ - public static final String SYSFS_PROPERTY_TRIGGER = "trigger"; - - /** - * The Sysfs class's delay_on property name - */ - public static final String SYSFS_PROPERTY_DELAY_ON = "delay_on"; - - /** - * The Sysfs class's delay_off property name - */ - public static final String SYSFS_PROPERTY_DELAY_OFF = "delay_off"; - - /** - * Left EV3 Button - */ - public static final int LEFT = 0; - - /** - * Right EV3 Button - */ - public static final int RIGHT = 1; - - /** - * Green color. - */ - public static final int GREEN = 0; - - /** - * Red color. - */ - public static final int RED = 1; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String CLASS_NAME = "leds"; - - /** - * Creates a new LED instance. - * @param leftRightField The integer field from LED class (e.g. Button.LEFT, Button.RIGHT) - * @param colorField The integer field from LED class (e.g. Button.GREEN, Button.RED) - * @throws InvalidLEDException If the specified LEFT RIGHT field or color field isn't valid. - */ - public LED(int leftRightField, int colorField) throws InvalidLEDException{ - super(CLASS_NAME); - if (leftRightField != 0 && leftRightField != 1){ - throw new InvalidLEDException("You are not specifying a EV3_LEFT_LED or EV3_RIGHT_LED field!"); - } - if (colorField != 0 && colorField != 1){ - throw new InvalidLEDException("You are not specifying a EV3_LED_GREEN or EV3_LED_RED field!"); - } - String direction = leftRightField == 0 ? "left" : "right"; - String color = colorField == 0 ? "green" : "red"; - - this.setClassFullname("ev3:" + direction + ":" + color + ":ev3dev"); - } - - /** - * This function is for advanced users.
    - * Use this function for basic users: - *
    -	 * LED led = new LED(Button.LEFT, Button.GREEN);
    -	 * 
    - * Creates a new LED instance directly with a ledName - * @param ledName LED Name that exists in /sys/class/leds - * @throws InvalidLEDException If the specified ledName does not exist - */ - public LED(String ledName) throws InvalidLEDException{ - super(CLASS_NAME); - File file = new File(Sysfs.getSysfsPath() + CLASS_NAME + "/" + ledName); - if (!file.exists()){ - throw new InvalidLEDException("The specified LED does not exist"); - } - this.setClassName(ledName); - } - - /** - * Returns the maximum allowable brightness value. - * @return The maximum allowable brightness value. - * @throws EV3LibraryException If I/O goes wrong - */ - public int getMaxBrightness() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_MAX_BRIGHTNESS); - return Integer.parseInt(str); - } - - /** - * Gets the brightness level. Possible values are from 0 to max_brightness. - * @return The brightness level - * @throws EV3LibraryException If I/O goes wrong - */ - public int getBrightness() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_BRIGHTNESS); - return Integer.parseInt(str); - } - - /** - * Sets the brightness level. Possible values are from 0 to max_brightness. - * @param brightness The brightness level - * @throws EV3LibraryException If I/O goes wrong - */ - public void setBrightness(int brightness) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_BRIGHTNESS, Integer.toString(brightness)); - } - - /** - * This function only returns a String, a spaced-array String.
    - * Use this function to return a String Array directly: - *
    -	 * getTriggers()
    -	 * 
    - * Returns a list of available triggers. - * @return A spaced-array String - * @throws EV3LibraryException If I/O goes wrong - */ - public String getTriggersViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_TRIGGER); - } - - /** - * Returns a list of available triggers. - * @return A String Array with a list of available triggers - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getTriggers() throws EV3LibraryException{ - String str = getTriggersViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Gets the led trigger. A trigger is a kernel based source of led events. Triggers can either be simple or complex. - * A simple trigger isn't configurable and is designed to slot into existing subsystems with minimal additional code. - * Examples are the ide-disk and nand-disk triggers.
    - *
    - * Complex triggers whilst available to all LEDs have LED specific parameters and work on a per LED basis. The timer - * trigger is an example. The timer trigger will periodically change the LED brightness between 0 and the current - * brightness setting. The on and off time can be specified via delay_{on,off} attributes in milliseconds. You can - * change the brightness value of a LED independently of the timer trigger. However, if you set the brightness value - * to 0 it will also disable the timer trigger. - * @return The LED trigger - * @throws EV3LibraryException If I/O goes wrong - */ - public String getTrigger() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_TRIGGER); - } - - /** - * Sets the led trigger. A trigger is a kernel based source of led events. Triggers can either be simple or complex. - * A simple trigger isn't configurable and is designed to slot into existing subsystems with minimal additional code. - * Examples are the ide-disk and nand-disk triggers.
    - *
    - * Complex triggers whilst available to all LEDs have LED specific parameters and work on a per LED basis. The timer - * trigger is an example. The timer trigger will periodically change the LED brightness between 0 and the current - * brightness setting. The on and off time can be specified via delay_{on,off} attributes in milliseconds. You can - * change the brightness value of a LED independently of the timer trigger. However, if you set the brightness value - * to 0 it will also disable the timer trigger. - * @param selector The LED trigger that listed using getTriggers() - * @throws EV3LibraryException If I/O goes wrong - */ - public void setTrigger(String selector) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_TRIGGER, selector); - } - - /** - * The timer trigger will periodically change the LED brightness between 0 and the current brightness setting. - * The on time can be specified via delay_on attribute in milliseconds. - * @return The Delay_On Value in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDelay_On() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_DELAY_ON); - return Integer.parseInt(str); - } - - /** - * The timer trigger will periodically change the LED brightness between 0 and the current brightness setting. - * The off time can be specified via delay_off attribute in milliseconds. - * @return The Delay_Off Value in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDelay_Off() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_DELAY_OFF); - return Integer.parseInt(str); - } - - /** - * The timer trigger will periodically change the LED brightness between 0 and the current brightness setting. - * The on time can be specified via delay_on attribute in milliseconds. - * @param delay_on The Delay_On Value in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setDelay_On(int delay_on) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_DELAY_ON, Integer.toString(delay_on)); - } - - /** - * The timer trigger will periodically change the LED brightness between 0 and the current brightness setting. - * The off time can be specified via delay_off attribute in milliseconds. - * @param delay_off The Delay_Off Value in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setDelay_Off(int delay_off) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_DELAY_OFF, Integer.toString(delay_off)); - } - - @Override - public String getAddress() throws EV3LibraryException { - return null; - } - - @Override - public String getDriverName() throws EV3LibraryException { - return null; - } -} \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/PowerSupply.java b/src/main/java/org/ev3dev/hardware/PowerSupply.java deleted file mode 100644 index 27eb760..0000000 --- a/src/main/java/org/ev3dev/hardware/PowerSupply.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.ev3dev.hardware; - -import java.io.FileNotFoundException; -import java.io.IOException; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.io.Sysfs; - -/*** - * A generic interface to read data from the system's power_supply class. Uses the built-in legoev3-battery if none is specified. - * @author Anthony - * - */ -public class PowerSupply{ - - /** - * The Sysfs class's measured_current property name - */ - public static final String SYSFS_MEASURED_CURRENT = "measured_current"; - - /** - * The Sysfs class's measured_voltage property name - */ - public static final String SYSFS_MEASURED_VOLTAGE = "measured_voltage"; - - /** - * The Sysfs class's max_voltage property name - */ - public static final String SYSFS_MAX_VOLTAGE = "max_voltage"; - - /** - * The Sysfs class's min_voltage property name - */ - public static final String SYSFS_MIN_VOLTAGE = "min_voltage"; - - /** - * The Sysfs class's technology property name - */ - public static final String SYSFS_TECHNOLOGY = "technology"; - - /** - * The Sysfs class's type property name - */ - public static final String SYSFS_TYPE = "type"; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String POWER_SUPPLY_CLASS_NAME = "power_supply"; - - /*** - * The measured current that the battery is supplying (in microamps) - * @return Measured Current - * @throws EV3LibraryException If I/O goes wrong - */ - public static int getMeasuredCurrent() throws EV3LibraryException{ - String str; - try { - str = Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_MEASURED_CURRENT); - } catch (IOException e) { - throw new EV3LibraryException("Get measured current attribute failed", e); - } - return Integer.parseInt(str); - } - - /*** - * The measured voltage that the battery is supplying (in microvolts) - * @return Measured Voltage - * @throws EV3LibraryException If I/O goes wrong - */ - public static int getMeasuredVoltage() throws EV3LibraryException{ - String str; - try { - str = Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_MEASURED_VOLTAGE); - } catch (IOException e) { - throw new EV3LibraryException("Get measured voltage attribute failed", e); - } - return Integer.parseInt(str); - } - - /*** - * Get the maximum voltage - * @return Maximum Voltage - * @throws EV3LibraryException If I/O goes wrong - */ - public static int getMaxVoltage() throws EV3LibraryException{ - String str; - try { - str = Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_MAX_VOLTAGE); - } catch (IOException e) { - throw new EV3LibraryException("Get max voltage attribute failed", e); - } - return Integer.parseInt(str); - } - - /*** - * Get the minimum voltage - * @return Minimum Voltage - * @throws EV3LibraryException If I/O goes wrong - */ - public static int getMinVoltage() throws EV3LibraryException{ - String str; - try { - str = Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_MIN_VOLTAGE); - } catch (IOException e) { - throw new EV3LibraryException("Get min voltage attribute failed", e); - } - return Integer.parseInt(str); - } - - /*** - * Get the technology of this power supply - * @return String - * @throws EV3LibraryException If I/O goes wrong - */ - public static String getTechnology() throws EV3LibraryException{ - try { - return Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_TECHNOLOGY); - } catch (IOException e) { - throw new EV3LibraryException("Get technology attribute failed", e); - } - } - - /*** - * Get the type of this power supply - * @return String - * @throws EV3LibraryException If I/O goes wrong - */ - public static String getType() throws EV3LibraryException{ - try { - return Sysfs.getAttribute(POWER_SUPPLY_CLASS_NAME, SYSFS_TYPE); - } catch (IOException e) { - throw new EV3LibraryException("Get type attribute failed", e); - } - } -} diff --git a/src/main/java/org/ev3dev/hardware/VLCDFrame.java b/src/main/java/org/ev3dev/hardware/VLCDFrame.java deleted file mode 100644 index 972f43b..0000000 --- a/src/main/java/org/ev3dev/hardware/VLCDFrame.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.ev3dev.hardware; - -import java.awt.BorderLayout; -import java.awt.EventQueue; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.ImageIcon; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.Timer; -import javax.swing.border.EmptyBorder; - -import org.ev3dev.hardware.VirtualLCD; -import javax.swing.JLabel; -import javax.swing.SwingConstants; -import java.awt.Color; - -public class VLCDFrame extends JFrame { - - private JPanel contentPane; - private VirtualLCD lcd; - private Thread thread; - private JLabel lblImg; - - /** - * Create the frame. - */ - public VLCDFrame(VirtualLCD vlcd) { - setTitle("ev3dev-lang-java VirtualLCD"); - this.lcd = vlcd; - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - setBounds(100, 100, 418, 321); - contentPane = new JPanel(); - contentPane.setBackground(Color.LIGHT_GRAY); - contentPane.setBorder(null); - contentPane.setLayout(new BorderLayout(0, 0)); - setContentPane(contentPane); - - lblImg = new JLabel(""); - lblImg.setHorizontalAlignment(SwingConstants.CENTER); - contentPane.add(lblImg, BorderLayout.CENTER); - - thread = new Thread(new Runnable(){ - - public void run() { - lblImg.setIcon(new ImageIcon(lcd.getImage())); - } - - }); - thread.start(); - } - -} diff --git a/src/main/java/org/ev3dev/hardware/VirtualLCD.java b/src/main/java/org/ev3dev/hardware/VirtualLCD.java deleted file mode 100644 index 930bd24..0000000 --- a/src/main/java/org/ev3dev/hardware/VirtualLCD.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.ev3dev.hardware; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Toolkit; -import java.awt.image.BufferedImage; -import java.io.IOException; - -import javax.imageio.ImageIO; - -/** - * Provides an interface for developers to emulate the LCD in ev3 - * @author Anthony - * - */ -public class VirtualLCD extends LCD{ - - private BufferedImage image; - - /** - * Creates a new virtual LCD instance - */ - public VirtualLCD(){ - //image = new BufferedImage(SCREEN_WIDTH, SCREEN_HEIGHT, BufferedImage.TYPE_INT_ARGB); - try { - image = ImageIO.read(VirtualLCD.class.getResource("/org/ev3dev/hardware/defaultvirtuallcd.fw.png")); - } catch (IOException e) { - } - } - - /** - * Returns the image drawn - * @return BufferedImage - */ - public BufferedImage getImage(){ - return image; - } - - /** - * Starts up an UI showing the virtual LCD - */ - public void showVLCD(){ - VLCDFrame frame = new VLCDFrame(this); - frame.setVisible(true); - frame.setTitle(this.hashCode() + " - VirtualLCD"); - } - - /** - * This function overrides the original draw() function to draw directly into a BufferedImage - */ - @Override - public void draw(byte[] data){ - if (data == null){ - return; - } - - Graphics g = image.getGraphics(); - for (int i = 0; i < 128; i++){ - for (int j = 0; j < 178; j++){ - if (data[i * 24 + j / 8] == (byte) 0xff){ - g.setColor(Color.BLACK); - g.drawLine(j, i, j, i); - } else { - g.setColor(Color.WHITE); - g.drawLine(j, i, j, i); - } - } - } - } -} diff --git a/src/main/java/org/ev3dev/hardware/defaultvirtuallcd.fw.png b/src/main/java/org/ev3dev/hardware/defaultvirtuallcd.fw.png deleted file mode 100644 index c6cb3ef..0000000 Binary files a/src/main/java/org/ev3dev/hardware/defaultvirtuallcd.fw.png and /dev/null differ diff --git a/src/main/java/org/ev3dev/hardware/motors/DCMotor.java b/src/main/java/org/ev3dev/hardware/motors/DCMotor.java deleted file mode 100644 index 2707c23..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/DCMotor.java +++ /dev/null @@ -1,413 +0,0 @@ -package org.ev3dev.hardware.motors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidMotorException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.Device; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.io.Sysfs; - -/** - * The DC motor class provides a uniform interface for using regular DC motors - * with no fancy controls or feedback. This includes LEGO MINDSTORMS RCX motors and LEGO Power Functions motors. - * @author Anthony - * - */ -public class DCMotor extends Device{ - - /** - * The Sysfs class's address property name - */ - public static final String SYSFS_PROPERTY_ADDRESS = "address"; - - /** - * The Sysfs class's command property name - */ - public static final String SYSFS_PROPERTY_COMMAND = "command"; - - /** - * The Sysfs class's commands property name - */ - public static final String SYSFS_PROPERTY_COMMANDS = "commands"; - - /** - * The Sysfs class's driver_name property name - */ - public static final String SYSFS_PROPERTY_DRIVER_NAME = "driver_name"; - - /** - * The Sysfs class's duty_cycle property name - */ - public static final String SYSFS_PROPERTY_DUTY_CYCLE = "duty_cycle"; - - /** - * The Sysfs class's duty_cycle_sp property name - */ - public static final String SYSFS_PROPERTY_DUTY_CYCLE_SP = "duty_cycle_sp"; - - /** - * The Sysfs class's polarity property name - */ - public static final String SYSFS_PROPERTY_POLARITY = "polarity"; - - /** - * The Sysfs class's ramp_up_sp property name - */ - public static final String SYSFS_PROPERTY_RAMP_UP_SP = "ramp_up_sp"; - - /** - * The Sysfs class's ramp_down_sp property name - */ - public static final String SYSFS_PROPERTY_RAMP_DOWN_SP = "ramp_down_sp"; - - /** - * The Sysfs class's state property name - */ - public static final String SYSFS_PROPERTY_STATE = "state"; - - /** - * The Sysfs class's stop_action property name - */ - public static final String SYSFS_PROPERTY_STOP_ACTION = "stop_action"; - - /** - * The Sysfs class's stop_actions property name - */ - public static final String SYSFS_PROPERTY_STOP_ACTIONS = "stop_actions"; - - /** - * The Sysfs class's time_sp property name - */ - public static final String SYSFS_PROPERTY_TIME_SP = "time_sp"; - - /** - * The Sysfs class's run-forever command - */ - public static final String SYSFS_COMMAND_RUN_FOREVER = "run-forever"; - - /** - * The Sysfs class's run-timed command - */ - public static final String SYSFS_COMMAND_RUN_TIMED = "run-timed"; - - /** - * The Sysfs class's run-direct command - */ - public static final String SYSFS_COMMAND_RUN_DIRECT = "run-direct"; - - /** - * The Sysfs class's stop command - */ - public static final String SYSFS_COMMAND_STOP = "stop"; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String CLASS_NAME = "dc-motor"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String CLASS_NAME_PREFIX = "motor"; - - private String address; - - /*** - * Creates a new DC motor object. - * @param port LegoPort - * @throws EV3LibraryException If the LegoPort specified goes wrong - */ - public DCMotor(LegoPort port) throws EV3LibraryException{ - super(port, CLASS_NAME, CLASS_NAME_PREFIX); - - address = port.getAddress(); - - //Verify is the LegoPort connecting a motor / is a output - if (!address.contains("out")){ - throw new InvalidPortException("The specified port (" + port.getAddress() + ") isn't a output."); - } else if (!port.getStatus().equals(CLASS_NAME)){ - throw new InvalidMotorException("The specified port (" + port.getAddress() + ") isn't a motor (" + port.getStatus() + ")"); - } - } - - /*** - * Get the address of this motor. - * @return LegoPort address described in String - * @throws EV3LibraryException If the motor doesn't exist or IO ERROR - */ - public String getAddress() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_ADDRESS); - } - - /*** - * Generic method to send commands to the motor controller. - * @param command Command that suits for the motor driver - * @throws EV3LibraryException If I/O goes wrong - */ - public void sendCommand(String command) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_COMMAND, command); - } - - /*** - * Cause the motor to run until another command is sent - * @throws EV3LibraryException If I/O goes wrong - */ - public void runForever() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_RUN_FOREVER); - } - - /*** - * Run the motor for the amount of time specified in time_sp - * and then stop the motor using the command specified by - * stop_command - * @throws EV3LibraryException If I/O goes wrong - */ - public void runTimed() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_RUN_TIMED); - } - - /** - * Runs the motor at the duty cycle specified by duty_cycle_sp. - * Unlike other run commands, changing duty_cycle_sp while running - * will take effect immediately. - * @throws EV3LibraryException If I/O goes wrong - */ - public void runDirect() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_RUN_DIRECT); - } - - /** - * Stop any of the run commands before they are complete using the command specified by stop_command. - * @throws EV3LibraryException If I/O goes wrong - */ - public void stop() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_STOP); - } - - /** - * Returns a list of commands that are supported by the motor controller. - * Possible values are run-forever, run-to-abs-pos, run-to-rel-pos, - * run-timed, run-direct, stop and reset. Not all commands may be supported. - * @return A String Arrays with all the supported commands - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getCommands() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_COMMANDS); - return Sysfs.separateSpace(str); - } - - /** - * Returns the name of the driver that provides this tacho motor device. - * @return The name of the driver - * @throws EV3LibraryException If I/O goes wrong - */ - public String getDriverName() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_DRIVER_NAME); - } - - /** - * Returns the current duty cycle of the motor. Units are percent. Values are -100 to 100. - * @return Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDutyCycle() throws EV3LibraryException{ - String dutycycle = this.getAttribute(SYSFS_PROPERTY_DUTY_CYCLE); - return Integer.parseInt(dutycycle); - } - - /** - * Writing sets the duty cycle setpoint. Reading returns the current value. Units are in percent. - * Valid values are -100 to 100. A negative value causes the motor to rotate in reverse. - * This value is only used when speed_regulation is off. - * @return Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDutyCycleSP() throws EV3LibraryException{ - String dutycyclesp = this.getAttribute(SYSFS_PROPERTY_DUTY_CYCLE_SP); - return Integer.parseInt(dutycyclesp); - } - - /** - * Writing sets the duty cycle setpoint. Reading returns the current value. Units are in percent. - * Valid values are -100 to 100. A negative value causes the motor to rotate in reverse. - * This value is only used when speed_regulation is off. - * @param sp Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public void setDutyCycleSP(int sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_DUTY_CYCLE_SP, Integer.toString(sp)); - } - - /** - * Sets the polarity of the motor. With normal polarity, a positive duty cycle will cause the motor to rotate clockwise. - * With inversed polarity, a positive duty cycle will cause the motor to rotate counter-clockwise. Valid values are normal and inversed. - * @return The polarity of the motor - * @throws EV3LibraryException If I/O goes wrong - */ - public String getPolarity() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_POLARITY); - } - - /** - * Sets the polarity of the motor. With normal polarity, a positive duty cycle will cause the motor to rotate clockwise. With inversed polarity, - * a positive duty cycle will cause the motor to rotate counter-clockwise. Valid values are normal and inversed. - * @param polarity The polarity of the motor - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPolarity(String polarity) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_POLARITY, polarity); - } - - /** - * Writing sets the ramp up setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 0 to 100% duty - * cycle over the span of this setpoint when starting the motor. If the maximum duty cycle is - * limited by duty_cycle_sp or speed regulation, - * the actual ramp time duration will be less than the setpoint. - * @return The ramp-up set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getRamp_Up_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_RAMP_UP_SP); - return Integer.parseInt(str); - } - - /** - * Writing sets the ramp up setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 0 to 100% duty - * cycle over the span of this setpoint when starting the motor. If the maximum duty cycle is - * limited by duty_cycle_sp or speed regulation, - * the actual ramp time duration will be less than the setpoint. - * @param ramp_up_sp The ramp-up set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public void setRamp_Up_SP(int ramp_up_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_RAMP_UP_SP, Integer.toString(ramp_up_sp)); - } - - /** - * Writing sets the ramp down setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value smaller than 0, the motor will ramp the power sent to the motor from 100% duty cycle down - * to 0 over the span of this setpoint when stopping the motor. If the starting - * duty cycle is less than 100%, the ramp time duration will be less than the full span of the setpoint. - * @return The ramp-down set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getRamp_Down_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_RAMP_DOWN_SP); - return Integer.parseInt(str); - } - - /** - * Writing sets the ramp down setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value smaller than 0, the motor will ramp the power sent to the motor from 100% duty cycle down - * to 0 over the span of this setpoint when stopping the motor. If the starting - * duty cycle is less than 100%, the ramp time duration will be less than the full span of the setpoint. - * @param ramp_down_sp The ramp-down set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public void setRamp_Down_SP(int ramp_down_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_RAMP_DOWN_SP, Integer.toString(ramp_down_sp)); - } - - /** - * This function returns a string that is likely a "spaced-array".
    - * Use this function to directly to return a String array: - *
    -	 * getState()
    -	 * 
    - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list of state flags. String spaced-array - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStateViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_STATE); - } - - /** - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list(String array) of state flags. - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getState() throws EV3LibraryException{ - String str = getStateViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Reading returns the current stop command. Writing sets the stop command. The value determines the motors behavior when command is set to stop. - * Also, it determines the motors behavior when a run command completes. See stop_commands for a list of possible values. - * @return A stop command that listed using getStopActions() - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStopAction() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_STOP_ACTION); - } - - /** - * Reading returns the current stop command. Writing sets the stop command. The value determines the motors behavior when command is set to stop. - * Also, it determines the motors behavior when a run command completes. See stop_commands for a list of possible values. - * @param stop_command A stop command that listed using getStopCommands() - * @throws EV3LibraryException If I/O goes wrong - */ - public void setStopAction(String stop_command) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_STOP_ACTION, stop_command); - } - - /** - * This function returns a string that is likely a "spaced-array".
    - * Use this function to directly to return a String array: - *
    -	 * getStopCommands()
    -	 * 
    - * Returns a list of stop modes supported by the motor controller. Possible values are coast, - * brake and hold. coast means that power will be removed from the motor and it will freely - * coast to a stop. brake means that power will be removed from the motor and a passive - * electrical load will be placed on the motor. This is usually done by shorting the motor - * terminals together. This load will absorb the energy from the rotation of the motors - * and cause the motor to stop more quickly than coasting. hold does not remove power from - * the motor. Instead it actively try to hold the motor at the current position. - * If an external force tries to turn the motor, the motor will 'push back' to maintain its position. - * @return A list of stop modes supported by the motor controller - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStopActionsViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_STOP_ACTIONS); - } - - /** - * Returns a list of stop modes supported by the motor controller. Possible values are coast, - * brake and hold. coast means that power will be removed from the motor and it will freely - * coast to a stop. brake means that power will be removed from the motor and a passive - * electrical load will be placed on the motor. This is usually done by shorting the motor - * terminals together. This load will absorb the energy from the rotation of the motors - * and cause the motor to stop more quickly than coasting. hold does not remove power from - * the motor. Instead it actively try to hold the motor at the current position. - * If an external force tries to turn the motor, the motor will 'push back' to maintain its position. - * @return A list of stop modes supported by the motor controller - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getStopActions() throws EV3LibraryException{ - String str = getStopActionsViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Writing specifies the amount of time the motor will run when using the run-timed command. Reading returns the current value. Units are in milliseconds. - * @return Amount of time in ms - * @throws EV3LibraryException If I/O goes wrong - */ - public int getTime_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_TIME_SP); - return Integer.parseInt(str); - } - - /** - * Writing specifies the amount of time the motor will run when using the run-timed command. Reading returns the current value. Units are in milliseconds. - * @param time_sp Amount of time in ms - * @throws EV3LibraryException If I/O goes wrong - */ - public void setTime_SP(int time_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_TIME_SP, Integer.toString(time_sp)); - } -} diff --git a/src/main/java/org/ev3dev/hardware/motors/FirgelliL12100Motor.java b/src/main/java/org/ev3dev/hardware/motors/FirgelliL12100Motor.java deleted file mode 100644 index 52b2cd9..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/FirgelliL12100Motor.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.ev3dev.hardware.motors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.ports.LegoPort; - -public class FirgelliL12100Motor extends Motor { - - /** - * The Sysfs class's count_per_m property name - */ - public static final String SYSFS_PROPERTY_COUNT_PER_M = "count_per_m"; - - /** - * The Sysfs class's full_travel_count property name - */ - public static final String SYSFS_PROPERTY_FULL_TRAVEL_COUNT = "full_travel_count"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String LINEAR_MOTOR_CLASS_NAME_PREFIX = "linear"; - - /** - * The driver name for the L12 EV3 100mm by Actuonix - */ - public static final String DRIVER_NAME_100MM = "act-l12-ev3-100"; - - public FirgelliL12100Motor(int portField) throws EV3LibraryException { - this(new LegoPort(portField)); - } - - public FirgelliL12100Motor(LegoPort port) throws EV3LibraryException { - super(port, LINEAR_MOTOR_CLASS_NAME_PREFIX); - if (!port.getDriverName().equals(DRIVER_NAME_100MM)){ - throw new InvalidPortException("The port does not have a Firgelli L12 100 Motor."); - } - } - - /** - * Do not use this on Firgelli L12 50/100 Motors (Linear motors).
    - * -1 will be returned instead, use getCountPerMetre() - */ - @Override - public int getCountPerRot() throws EV3LibraryException{ - return -1; - } - - /** - * Returns the number of tacho counts in one meter of travel of the motor. - * Tacho counts are used by the position and speed attributes, so you can - * use this value to convert from distance to tacho counts. (linear motors only) - * @return Counts per metre - * @throws EV3LibraryException If I/O goes wrong - */ - public int getCountPerMetre() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String countpermetre = this.getAttribute(SYSFS_PROPERTY_COUNT_PER_M); - return Integer.parseInt(countpermetre); - } - - /** - * Returns the number of tacho counts in the full travel of the motor. - * When combined with the count_per_m attribute, you can use this value - * to calculate the maximum travel distance of the motor. - * (linear motors only) - * @return Full Travel Count - * @throws EV3LibraryException If I/O goes wrong - */ - public int getFullTravelCount() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_FULL_TRAVEL_COUNT); - return Integer.parseInt(str); - } - -} diff --git a/src/main/java/org/ev3dev/hardware/motors/FirgelliL1250Motor.java b/src/main/java/org/ev3dev/hardware/motors/FirgelliL1250Motor.java deleted file mode 100644 index ea1d49f..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/FirgelliL1250Motor.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.ev3dev.hardware.motors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.ports.LegoPort; - -public class FirgelliL1250Motor extends Motor { - - /** - * The Sysfs class's count_per_m property name - */ - public static final String SYSFS_PROPERTY_COUNT_PER_M = "count_per_m"; - - /** - * The Sysfs class's full_travel_count property name - */ - public static final String SYSFS_PROPERTY_FULL_TRAVEL_COUNT = "full_travel_count"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String LINEAR_MOTOR_CLASS_NAME_PREFIX = "linear"; - - /** - * The driver name for the L12 EV3 50mm by Actuonix - */ - public static final String DRIVER_NAME_50MM = "act-l12-ev3-50"; - - public FirgelliL1250Motor(int portField) throws EV3LibraryException { - this(new LegoPort(portField)); - } - - public FirgelliL1250Motor(LegoPort port) throws EV3LibraryException { - super(port, LINEAR_MOTOR_CLASS_NAME_PREFIX); - if (!port.getDriverName().equals(DRIVER_NAME_50MM)){ - throw new InvalidPortException("The port does not have a Firgelli L12 50 Motor driver."); - } - } - - /** - * Do not use this on Firgelli L12 50/100 Motors (Linear motors).
    - * -1 will be returned instead, use getCountPerMetre() - */ - @Override - public int getCountPerRot() throws EV3LibraryException{ - return -1; - } - - /** - * Returns the number of tacho counts in one meter of travel of the motor. - * Tacho counts are used by the position and speed attributes, so you can - * use this value to convert from distance to tacho counts. (linear motors only) - * @return Counts per metre - * @throws EV3LibraryException If I/O goes wrong - */ - public int getCountPerMetre() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String countpermetre = this.getAttribute(SYSFS_PROPERTY_COUNT_PER_M); - return Integer.parseInt(countpermetre); - } - - /** - * Returns the number of tacho counts in the full travel of the motor. - * When combined with the count_per_m attribute, you can use this value - * to calculate the maximum travel distance of the motor. - * (linear motors only) - * @return Full Travel Count - * @throws EV3LibraryException If I/O goes wrong - */ - public int getFullTravelCount() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_FULL_TRAVEL_COUNT); - return Integer.parseInt(str); - } - -} diff --git a/src/main/java/org/ev3dev/hardware/motors/LargeMotor.java b/src/main/java/org/ev3dev/hardware/motors/LargeMotor.java deleted file mode 100644 index 1cc063c..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/LargeMotor.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.ev3dev.hardware.motors; - -import java.io.IOException; - -import org.ev3dev.exception.InvalidMotorException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.ports.LegoPort; - -public class LargeMotor extends Motor { - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-ev3-l-motor"; - - public LargeMotor(int portField) throws InvalidPortException, IOException { - this(new LegoPort(portField)); - } - - public LargeMotor(LegoPort port) throws InvalidPortException, IOException, InvalidMotorException { - super(port); - String drivername = this.getDriverName(); - if (!drivername.equals(DRIVER_NAME)){ - throw new InvalidMotorException("The port is not connected to a LargeMotor (" + DRIVER_NAME + "): " + drivername); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/motors/MediumMotor.java b/src/main/java/org/ev3dev/hardware/motors/MediumMotor.java deleted file mode 100644 index 1674c6f..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/MediumMotor.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.ev3dev.hardware.motors; - -import java.io.IOException; - -import org.ev3dev.exception.InvalidMotorException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.ports.LegoPort; - -public class MediumMotor extends Motor { - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-ev3-m-motor"; - - public MediumMotor(int portField) throws InvalidPortException, IOException { - this(new LegoPort(portField)); - } - - public MediumMotor(LegoPort port) throws InvalidPortException, IOException, InvalidMotorException { - super(port); - String drivername = this.getDriverName(); - if (!drivername.equals(DRIVER_NAME)){ - throw new InvalidMotorException("The port is not connected to a LargeMotor (" + DRIVER_NAME + "): " + drivername); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/motors/Motor.java b/src/main/java/org/ev3dev/hardware/motors/Motor.java deleted file mode 100644 index dff8009..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/Motor.java +++ /dev/null @@ -1,815 +0,0 @@ -//----------------------------------------------------------------------------- -//~autogen autogen-header - -//~autogen -//----------------------------------------------------------------------------- - -package org.ev3dev.hardware.motors; - -//----------------------------------------------------------------------------- - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.Device; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.io.Sysfs; - -//----------------------------------------------------------------------------- - -//~autogen generic-classes classes.motor>currentClass - - -//~autogen - - -/** - * The motor class provides a uniform interface for using motors with positional and directional feedback such as the EV3 and NXT motors. - * This feedback allows for precise control of the motors. This is the most common type of motor, so we just call it motor. - * @author Anthony - * - */ -public class Motor extends Device{ - - /** - * The Sysfs class's address property name - */ - public static final String SYSFS_PROPERTY_ADDRESS = "address"; - - /** - * The Sysfs class's command property name - */ - public static final String SYSFS_PROPERTY_COMMAND = "command"; - - /** - * The Sysfs class's commands property name - */ - public static final String SYSFS_PROPERTY_COMMANDS = "commands"; - - /** - * The Sysfs class's count_per_rot property name - */ - public static final String SYSFS_PROPERTY_COUNT_PER_ROT = "count_per_rot"; - - /** - * The Sysfs class's driver_name property name - */ - public static final String SYSFS_PROPERTY_DRIVER_NAME = "driver_name"; - - /** - * The Sysfs class's duty_cycle property name - */ - public static final String SYSFS_PROPERTY_DUTY_CYCLE = "duty_cycle"; - - /** - * The Sysfs class's duty_cycle_sp property name - */ - public static final String SYSFS_PROPERTY_DUTY_CYCLE_SP = "duty_cycle_sp"; - - /** - * The Sysfs class's polarity property name - */ - public static final String SYSFS_PROPERTY_POLARITY = "polarity"; - - /** - * The Sysfs class's position property name - */ - public static final String SYSFS_PROPERTY_POSITION = "position"; - - /** - * The Sysfs class's position_p property name - */ - public static final String SYSFS_PROPERTY_POSITION_P = "hold_pid/Kp"; - - /** - * The Sysfs class's position_i property name - */ - public static final String SYSFS_PROPERTY_POSITION_I = "hold_pid/Ki"; - - /** - * The Sysfs class's position_d property name - */ - public static final String SYSFS_PROPERTY_POSITION_D = "hold_pid/Kd"; - - /** - * The Sysfs class's position_sp property name - */ - public static final String SYSFS_PROPERTY_POSITION_SP = "position_sp"; - - /** - * The Sysfs class's speed property name - */ - public static final String SYSFS_PROPERTY_SPEED = "speed"; - - /** - * The Sysfs class's speed_sp property name - */ - public static final String SYSFS_PROPERTY_SPEED_SP = "speed_sp"; - - /** - * The Sysfs class's ramp_up_sp property name - */ - public static final String SYSFS_PROPERTY_RAMP_UP_SP = "ramp_up_sp"; - - /** - * The Sysfs class's ramp_down_sp property name - */ - public static final String SYSFS_PROPERTY_RAMP_DOWN_SP = "ramp_down_sp"; - - /** - * The Sysfs class's state property name - */ - public static final String SYSFS_PROPERTY_STATE = "state"; - - /** - * The Sysfs class's stop_action property name - */ - public static final String SYSFS_PROPERTY_STOP_ACTION = "stop_action"; - - /** - * The Sysfs class's stop_actions property name - */ - public static final String SYSFS_PROPERTY_STOP_ACTIONS = "stop_actions"; - - /** - * The Sysfs class's time_sp property name - */ - public static final String SYSFS_PROPERTY_TIME_SP = "time_sp"; - - /** - * The Sysfs class's run-forever command - */ - public static final String SYSFS_COMMAND_RUN_FOREVER = "run-forever"; - - /** - * The Sysfs class's run-to-abs-pos command - */ - public static final String SYSFS_COMMAND_RUN_TO_ABS_POS = "run-to-abs-pos"; - - /** - * The Sysfs class's run-to-rel-pos command - */ - public static final String SYSFS_COMMAND_RUN_TO_REL_POS = "run-to-rel-pos"; - - /** - * The Sysfs class's run-timed command - */ - public static final String SYSFS_COMMAND_RUN_TIMED = "run-timed"; - - /** - * The Sysfs class's run-direct command - */ - public static final String SYSFS_COMMAND_RUN_DIRECT = "run-direct"; - - /** - * The Sysfs class's stop command - */ - public static final String SYSFS_COMMAND_STOP = "stop"; - - /** - * The Sysfs class's reset command - */ - public static final String SYSFS_COMMAND_RESET = "reset"; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String CLASS_NAME = "tacho-motor"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String CLASS_NAME_PREFIX = "motor"; - -//----------------------------------------------------------------------------- - - private String address; - -//----------------------------------------------------------------------------- - - /*** - * Creates a new motor object. - * @param portField a LegoPort field (e.g. LegoPort.INPUT_1) - * @throws EV3LibraryException If the LegoPort specified goes wrong - */ - public Motor(int portField) throws EV3LibraryException{ - this(new LegoPort(portField)); - } - - /*** - * Creates a new motor object. - * @param port LegoPort - * @throws EV3LibraryException If the LegoPort specified goes wrong - */ - public Motor(LegoPort port) throws EV3LibraryException{ - this(port, CLASS_NAME_PREFIX); - } - - /*** - * Creates a new motor object. - * @param port LegoPort - * @param class_name_prefix Specify a class name prefix (e.g. motor[N], which "motor" is the prefix) - * @throws EV3LibraryException If the LegoPort specified goes wrong - */ - public Motor(LegoPort port, String class_name_prefix) throws EV3LibraryException{ - super(port, CLASS_NAME, CLASS_NAME_PREFIX); - address = port.getAddress(); - - //Verify is the LegoPort connecting a motor / is a output - if (!address.contains("out")){ - throw new InvalidPortException("The specified port (" + port.getAddress() + ") isn't a output."); - } else if (!port.getStatus().equals(CLASS_NAME)){ - throw new InvalidPortException("The specified port (" + port.getAddress() + ") isn't a motor (" + port.getStatus() + ")"); - } - } - -//----------------------------------------------------------------------------- - -//~autogen generic-get-set classes.motor>currentClass - /*** - * Get the address of this motor. - * @return LegoPort address described in String - * @throws EV3LibraryException If the motor doesn't exist or IO ERROR - */ - public String getAddress() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_ADDRESS); - } - - /*** - * Generic method to send commands to the motor controller. - * @param command Command that suits for the motor driver - * @throws EV3LibraryException If I/O goes wrong - */ - public void sendCommand(String command) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_COMMAND, command); - } - - /*** - * Cause the motor to run until another command is sent - * @throws EV3LibraryException If I/O goes wrong - */ - public void runForever() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RUN_FOREVER); - } - - /*** - * Run to an absolute position specified by position_sp - * and then stop using the command specified in stop_command - * @throws EV3LibraryException If I/O goes wrong - */ - public void runToAbsPos() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RUN_TO_ABS_POS); - } - - /*** - * Run to a position relative to the current position value. - * The new position will be current position + position_sp. - * When the new position is reached, the motor will stop - * using the command specified by stop_command. - * @throws EV3LibraryException If I/O goes wrong. - */ - public void runToRelPos() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RUN_TO_REL_POS); - } - - /*** - * Run the motor for the amount of time specified in time_sp - * and then stop the motor using the command specified by - * stop_command - * @throws EV3LibraryException If I/O goes wrong - */ - public void runTimed() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RUN_TIMED); - } - - /*** - * Run the motor at the duty cycle specified by duty_cycle_sp. - * Unlike other run commands, changing duty_cycle_sp while - * running will take effect immediately - * @throws EV3LibraryException If I/O goes wrong - */ - public void runDirect() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RUN_DIRECT); - } - - /** - * Stop any of the run commands before they are complete using the command specified by stop_command. - * @throws EV3LibraryException If I/O goes wrong - */ - public void stop() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_STOP); - } - - /** - * Reset all of the motor parameter attributes to their default value. This will also have the effect of stopping the motor. - * @throws EV3LibraryException If I/O goes wrong - */ - public void reset() throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - sendCommand(SYSFS_COMMAND_RESET); - } - - /** - * Returns a list of commands that are supported by the motor controller. - * Possible values are run-forever, run-to-abs-pos, run-to-rel-pos, - * run-timed, run-direct, stop and reset. Not all commands may be supported. - * @return A String Arrays with all the supported commands - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getCommands() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - String str = this.getAttribute(SYSFS_PROPERTY_COMMANDS); - return Sysfs.separateSpace(str); - } - - /** - * Returns the number of tacho counts in one rotation of the motor. - * Tacho counts are used by the position and speed attributes, so - * you can use this value to convert rotations or degrees to tacho - * counts. In the case of linear actuators, the units here will - * be counts per centimeter. - * @return Counts per cm - * @throws EV3LibraryException If I/O goes wrong - */ - public int getCountPerRot() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String countperrot = this.getAttribute(SYSFS_PROPERTY_COUNT_PER_ROT); - return Integer.parseInt(countperrot); - } - - //getCountPerM() Linear Motor (Just for mark down) - - /** - * Returns the name of the driver that provides this tacho motor device. - * @return The name of the driver - * @throws EV3LibraryException If I/O goes wrong - */ - public String getDriverName() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_DRIVER_NAME); - } - - - /** - * Returns the current duty cycle of the motor. Units are percent. Values are -100 to 100. - * @return Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDutyCycle() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String dutycycle = this.getAttribute(SYSFS_PROPERTY_DUTY_CYCLE); - return Integer.parseInt(dutycycle); - } - - /** - * Writing sets the duty cycle setpoint. Reading returns the current value. Units are in percent. - * Valid values are -100 to 100. A negative value causes the motor to rotate in reverse. - * This value is only used when speed_regulation is off. - * @return Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDutyCycleSP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String dutycyclesp = this.getAttribute(SYSFS_PROPERTY_DUTY_CYCLE_SP); - return Integer.parseInt(dutycyclesp); - } - - /** - * Writing sets the duty cycle setpoint. Reading returns the current value. Units are in percent. - * Valid values are -100 to 100. A negative value causes the motor to rotate in reverse. - * This value is only used when speed_regulation is off. - * @param sp Percentage - * @throws EV3LibraryException If I/O goes wrong - */ - public void setDutyCycleSP(int sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_DUTY_CYCLE_SP, Integer.toString(sp)); - } - - //getFullTravelCount() Linear Motor Only (Mark down) - - /** - * Sets the polarity of the motor. With normal polarity, a positive duty cycle will cause the motor to rotate clockwise. - * With inversed polarity, a positive duty cycle will cause the motor to rotate counter-clockwise. Valid values are normal and inversed. - * @return The polarity of the motor - * @throws EV3LibraryException If I/O goes wrong - */ - public String getPolarity() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_POLARITY); - } - - /** - * Sets the polarity of the motor. With normal polarity, a positive duty cycle will cause the motor to rotate clockwise. With inversed polarity, - * a positive duty cycle will cause the motor to rotate counter-clockwise. Valid values are normal and inversed. - * @param polarity The polarity of the motor - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPolarity(String polarity) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POLARITY, polarity); - } - - /** - * Returns the current position of the motor in pulses of the rotary encoder. When the motor rotates clockwise, the position will increase. Likewise, - * rotating counter-clockwise causes the position to decrease. Writing will set the position to that value. - * @return The current position - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPosition() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute("position_p"); - return Integer.parseInt(str); - } - - /** - * Returns the current position of the motor in pulses of the rotary encoder. When the motor rotates clockwise, the position will increase. - * Likewise, rotating counter-clockwise causes the position to decrease. Writing will set the position to that value. - * @param position The current position - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition(int position) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POSITION, Integer.toString(position)); - } - - /** - * The proportional constant for the position PID. - * @return The proportional constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPosition_P() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_POSITION_P); - return Integer.parseInt(str); - } - - /** - * The integral constant for the position PID. - * @return The integral constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPosition_I() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_POSITION_I); - return Integer.parseInt(str); - } - - /** - * The derivative constant for the position PID. - * @return The derivative constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPosition_D() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_POSITION_D); - return Integer.parseInt(str); - } - - /** - * The proportional constant for the position PID. - * @param position_p The proportional constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition_P(int position_p) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POSITION_P, Integer.toString(position_p)); - } - - /** - * The integral constant for the position PID. - * @param position_i The integral constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition_I(int position_i) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POSITION_I, Integer.toString(position_i)); - } - - /** - * The derivative constant for the position PID. - * @param position_d The derivative constant for the position PID. - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition_D(int position_d) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POSITION_D, Integer.toString(position_d)); - } - - /** - * Writing specifies the target position for the run-to-abs-pos and run-to-rel-pos commands. Reading returns the current value. - * Units are in tacho counts. You can use the value returned by counts_per_rot to convert tacho counts to/from rotations or degrees. - * @return The target position - * @throws EV3LibraryException if I/O goes wrong - */ - public int getPosition_SP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_POSITION_SP); - return Integer.parseInt(str); - } - - /** - * Writing specifies the target position for the run-to-abs-pos and run-to-rel-pos commands. Reading returns the current value. - * Units are in tacho counts. You can use the value returned by counts_per_rot to convert tacho counts to/from rotations or degrees. - * @param position_sp The target position - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition_SP(int position_sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_POSITION_SP, Integer.toString(position_sp)); - } - - /** - * Returns the current motor speed in tacho counts per second. Note, this is not necessarily degrees - * (although it is for LEGO motors). Use the count_per_rot attribute to convert this value to RPM or deg/sec. - * @return The current speed - * @throws EV3LibraryException If I/O goes wrong - */ - public int getSpeed() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_SPEED); - return Integer.parseInt(str); - } - - /** - * Writing sets the target speed in tacho counts per second used when speed_regulation is on. - * Reading returns the current value. Use the count_per_rot attribute to convert RPM or deg/sec to tacho counts per second. - * @return The target speed - * @throws EV3LibraryException If I/O goes wrong - */ - public int getSpeed_SP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_SPEED); - return Integer.parseInt(str); - } - - /** - * Writing sets the target speed in tacho counts per second used when speed_regulation is on. Reading returns the current value. - * Use the count_per_rot attribute to convert RPM or deg/sec to tacho counts per second. - * @param speed_sp The target speed - * @throws EV3LibraryException If I/O goes wrong - */ - public void setSpeed_SP(int speed_sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_SPEED_SP, Integer.toString(speed_sp)); - } - - /** - * Writing sets the ramp up setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 0 to 100% duty - * cycle over the span of this setpoint when starting the motor. If the maximum duty cycle is - * limited by duty_cycle_sp or speed regulation, - * the actual ramp time duration will be less than the setpoint. - * @return The ramp-up set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getRamp_Up_SP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_RAMP_UP_SP); - return Integer.parseInt(str); - } - - /** - * Writing sets the ramp up setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 0 to 100% duty - * cycle over the span of this setpoint when starting the motor. If the maximum duty cycle is - * limited by duty_cycle_sp or speed regulation, - * the actual ramp time duration will be less than the setpoint. - * @param ramp_up_sp The ramp-up set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public void setRamp_Up_SP(int ramp_up_sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_RAMP_UP_SP, Integer.toString(ramp_up_sp)); - } - - /** - * Writing sets the ramp down setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 100% duty cycle down - * to 0 over the span of this setpoint when stopping the motor. If the starting - * duty cycle is less than 100%, the ramp time duration will be less than the full span of the setpoint. - * @return The ramp-down set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getRamp_Down_SP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_RAMP_DOWN_SP); - return Integer.parseInt(str); - } - - /** - * Writing sets the ramp down setpoint. Reading returns the current value. Units are in milliseconds. - * When set to a value bigger than 0, the motor will ramp the power sent to the motor from 100% duty cycle down - * to 0 over the span of this setpoint when stopping the motor. If the starting - * duty cycle is less than 100%, the ramp time duration will be less than the full span of the setpoint. - * @param ramp_down_sp The ramp-down set-point - * @throws EV3LibraryException If I/O goes wrong - */ - public void setRamp_Down_SP(int ramp_down_sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_RAMP_DOWN_SP, Integer.toString(ramp_down_sp)); - } - - /** - * This function returns a string that is likely a "spaced-array".
    - * Use this function to directly to return a String array: - *
    -	 * getState()
    -	 * 
    - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list of state flags. String spaced-array - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStateViaString() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_STATE); - } - - /** - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list(String array) of state flags. - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getState() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - String str = getStateViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Reading returns the current stop command. Writing sets the stop command. The value determines the motors behavior when command is set to stop. - * Also, it determines the motors behavior when a run command completes. See stop_commands for a list of possible values. - * @return A stop command that listed using getStopCommands() - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStopAction() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_STOP_ACTION); - } - - /** - * Reading returns the current stop command. Writing sets the stop command. The value determines the motors behavior when command is set to stop. - * Also, it determines the motors behavior when a run command completes. See stop_commands for a list of possible values. - * @param stop_action A stop command that listed using getStopCommands() - * @throws EV3LibraryException If I/O goes wrong - */ - public void setStopAction(String stop_action) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_STOP_ACTION, stop_action); - } - - /** - * This function returns a string that is likely a "spaced-array".
    - * Use this function to directly to return a String array: - *
    -	 * getStopCommands()
    -	 * 
    - * Returns a list of stop modes supported by the motor controller. Possible values are coast, - * brake and hold. coast means that power will be removed from the motor and it will freely - * coast to a stop. brake means that power will be removed from the motor and a passive - * electrical load will be placed on the motor. This is usually done by shorting the motor - * terminals together. This load will absorb the energy from the rotation of the motors - * and cause the motor to stop more quickly than coasting. hold does not remove power from - * the motor. Instead it actively try to hold the motor at the current position. - * If an external force tries to turn the motor, the motor will 'push back' to maintain its position. - * @return A list of stop modes supported by the motor controller - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStopCommandsViaString() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - return this.getAttribute(SYSFS_PROPERTY_STOP_ACTIONS); - } - - /** - * Returns a list of stop modes supported by the motor controller. Possible values are coast, - * brake and hold. coast means that power will be removed from the motor and it will freely - * coast to a stop. brake means that power will be removed from the motor and a passive - * electrical load will be placed on the motor. This is usually done by shorting the motor - * terminals together. This load will absorb the energy from the rotation of the motors - * and cause the motor to stop more quickly than coasting. hold does not remove power from - * the motor. Instead it actively try to hold the motor at the current position. - * If an external force tries to turn the motor, the motor will 'push back' to maintain its position. - * @return A list of stop modes supported by the motor controller - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getStopCommands() throws EV3LibraryException{ - if (!this.isConnected()){ - return null; - } - String str = getStopCommandsViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Writing specifies the amount of time the motor will run when using the run-timed command. Reading returns the current value. Units are in milliseconds. - * @return Amount of time in ms - * @throws EV3LibraryException If I/O goes wrong - */ - public int getTime_SP() throws EV3LibraryException{ - if (!this.isConnected()){ - return -1; - } - String str = this.getAttribute(SYSFS_PROPERTY_TIME_SP); - return Integer.parseInt(str); - } - - /** - * Writing specifies the amount of time the motor will run when using the run-timed command. Reading returns the current value. Units are in milliseconds. - * @param time_sp Amount of time in ms - * @throws EV3LibraryException If I/O goes wrong - */ - public void setTime_SP(int time_sp) throws EV3LibraryException{ - if (!this.isConnected()){ - return; - } - this.setAttribute(SYSFS_PROPERTY_TIME_SP, Integer.toString(time_sp)); - } - -//~autogen -} -//----------------------------------------------------------------------------- \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/motors/NXTMotor.java b/src/main/java/org/ev3dev/hardware/motors/NXTMotor.java deleted file mode 100644 index 499e8b8..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/NXTMotor.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.ev3dev.hardware.motors; - -import java.io.IOException; - -import org.ev3dev.exception.InvalidMotorException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.ports.LegoPort; - -public class NXTMotor extends Motor { - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-nxt-motor"; - - public NXTMotor(int portField) throws InvalidPortException, IOException { - this(new LegoPort(portField)); - } - - public NXTMotor(LegoPort port) throws InvalidPortException, IOException { - super(port); - String drivername = port.getDriverName(); - if (!drivername.equals(DRIVER_NAME)){ - throw new InvalidMotorException("The port is not connected to a Lego NXT Motor (" + DRIVER_NAME + "): " + drivername); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/motors/ServoMotor.java b/src/main/java/org/ev3dev/hardware/motors/ServoMotor.java deleted file mode 100644 index bd22e42..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/ServoMotor.java +++ /dev/null @@ -1,300 +0,0 @@ -package org.ev3dev.hardware.motors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidMotorException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.Device; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.io.Sysfs; - -/** - * The servo motor class provides a uniform interface for using hobby type servo motors. - * @author Anthony - * - */ -public class ServoMotor extends Device{ - - /** - * The Sysfs class's address property name - */ - private static final String SYSFS_PROPERTY_ADDRESS = "address"; - - /** - * The Sysfs class's command property name - */ - private static final String SYSFS_PROPERTY_COMMAND = "command"; - - /** - * The Sysfs class's driver_name property name - */ - private static final String SYSFS_PROPERTY_DRIVER_NAME = "driver_name"; - - /** - * The Sysfs class's polarity property name - */ - private static final String SYSFS_PROPERTY_POLARITY = "polarity"; - - /** - * The Sysfs class's position_sp property name - */ - private static final String SYSFS_PROPERTY_POSITION_SP = "position_sp"; - - /** - * The Sysfs class's state property name - */ - private static final String SYSFS_PROPERTY_STATE = "state"; - - /** - * The Sysfs class's max_pulse_sp property name - */ - private static final String SYSFS_PROPERTY_MAX_PULSE_SP = "max_pulse_sp"; - - /** - * The Sysfs class's mid_pulse_sp property name - */ - private static final String SYSFS_PROPERTY_MID_PULSE_SP = "mid_pulse_sp"; - - /** - * The Sysfs class's min_pulse_sp property name - */ - private static final String SYSFS_PROPERTY_MIN_PULSE_SP = "min_pulse_sp"; - - /** - * The Sysfs class's rate_sp property name - */ - private static final String SYSFS_PROPERTY_RATE_SP = "rate_sp"; - - /** - * The Sysfs class's run command - */ - public static final String SYSFS_COMMAND_RUN = "run"; - - /** - * The Sysfs class's float command - */ - public static final String SYSFS_COMMAND_FLOAT = "float"; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String CLASS_NAME = "servo-motor"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String CLASS_NAME_PREFIX = "motor"; - - private String address; - - /*** - * Creates a new motor object. - * @param port LegoPort - * @throws InvalidPortException If the LegoPort isn't a OUTPUT, invalid or a tacho-motor. - * @throws EV3LibraryException If the LegoPort specified goes wrong - * @throws InvalidMotorException The specified motor wasn't a motor - */ - public ServoMotor(LegoPort port) throws EV3LibraryException{ - super(port, CLASS_NAME, CLASS_NAME_PREFIX); - address = port.getAddress(); - - //Verify is the LegoPort connecting a motor / is a output - if (!address.contains("out")){ - throw new InvalidPortException("The specified port (" + port.getAddress() + ") isn't a output."); - } else if (!port.getStatus().equals(CLASS_NAME)){ - throw new InvalidMotorException("The specified port (" + port.getAddress() + ") isn't a motor (" + port.getStatus() + ")"); - } - } - - /*** - * Get the address of this motor. - * @return LegoPort address described in String - * @throws EV3LibraryException If the motor doesn't exist or IO ERROR - */ - public String getAddress() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_ADDRESS); - } - - /*** - * Generic method to send commands to the motor controller. - * @param command Command that suits for the motor driver - * @throws EV3LibraryException If I/O goes wrong - */ - public void sendCommand(String command) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_COMMAND, command); - } - - /*** - * Setting to run will cause the servo to be driven to the position_sp set in the position_sp attribute. - * @throws EV3LibraryException If I/O goes wrong - */ - public void run() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_RUN); - } - - /*** - * Run to an absolute position specified by position_sp - * and then stop using the command specified in stop_command - * @throws EV3LibraryException If I/O goes wrong - */ - public void Float() throws EV3LibraryException{ - sendCommand(SYSFS_COMMAND_FLOAT); - } - - /** - * Returns the name of the driver that provides this tacho motor device. - * @return The name of the driver - * @throws EV3LibraryException If I/O goes wrong - */ - public String getDriverName() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_DRIVER_NAME); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the maximum (clockwise) position_sp. Default value is 2400. - * Valid values are 2300 to 2700. You must write to the position_sp attribute for changes to this attribute to take effect. - * @return The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getMaxPulse_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_MAX_PULSE_SP); - return Integer.parseInt(str); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the maximum (clockwise) position_sp. Default value is 2400. - * Valid values are 2300 to 2700. You must write to the position_sp attribute for changes to this attribute to take effect. - * @param max_pulse_sp The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setMaxPulse_SP(int max_pulse_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_MAX_PULSE_SP, Integer.toString(max_pulse_sp)); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the mid position_sp. - * Default value is 1500. Valid values are 1300 to 1700. For example, on a 180 degree servo, this would be 90 degrees. - * On continuous rotation servo, this is the 'neutral' position_sp where the motor does not turn. - * You must write to the position_sp attribute for changes to this attribute to take effect. - * @return The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getMidPulse_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_MID_PULSE_SP); - return Integer.parseInt(str); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the mid position_sp. - * Default value is 1500. Valid values are 1300 to 1700. For example, on a 180 degree servo, this would be 90 degrees. - * On continuous rotation servo, this is the 'neutral' position_sp where the motor does not turn. - * You must write to the position_sp attribute for changes to this attribute to take effect. - * @param mid_pulse_sp The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setMidPulse_SP(int mid_pulse_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_MID_PULSE_SP, Integer.toString(mid_pulse_sp)); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the - * minimum (counter-clockwise) position_sp. Default value is 600. Valid values are 300 to 700. - * You must write to the position_sp attribute for changes to this attribute to take effect. - * @return The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getMinPulse_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_MIN_PULSE_SP); - return Integer.parseInt(str); - } - - /** - * Used to set the pulse size in milliseconds for the signal that tells the servo to drive to the - * minimum (counter-clockwise) position_sp. Default value is 600. Valid values are 300 to 700. - * You must write to the position_sp attribute for changes to this attribute to take effect. - * @param min_pulse_sp The pulse size in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setMinPulse_SP(int min_pulse_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_MIN_PULSE_SP, Integer.toString(min_pulse_sp)); - } - - /** - * Sets the polarity of the servo. Valid values are normal and inversed. Setting the value to inversed will cause the position_sp value to be inversed. - * i.e -100 will correspond to max_pulse_sp, and 100 will correspond to min_pulse_sp. - * @return The polarity of the servo - * @throws EV3LibraryException If I/O goes wrong - */ - public String getPolarity() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_POLARITY); - } - - /** - * Sets the polarity of the servo. Valid values are normal and inversed. Setting the value to inversed will cause the position_sp value to be inversed. - * i.e -100 will correspond to max_pulse_sp, and 100 will correspond to min_pulse_sp. - * @param polarity The polarity of the servo - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPolarity(String polarity) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_POLARITY, polarity); - } - - /** - * Reading returns the current position_sp of the servo. Writing instructs the servo to move to the specified position_sp. - * Units are percent. Valid values are -100 to 100 (-100% to 100%) - * where -100 corresponds to min_pulse_sp, 0 corresponds to mid_pulse_sp and 100 corresponds to max_pulse_sp. - * @return The current position_sp of the servo - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPosition_SP() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_POSITION_SP); - return Integer.parseInt(str); - } - - /** - * Reading returns the current position_sp of the servo. Writing instructs the servo to move to the specified position_sp. - * Units are percent. Valid values are -100 to 100 (-100% to 100%) - * where -100 corresponds to min_pulse_sp, 0 corresponds to mid_pulse_sp and 100 corresponds to max_pulse_sp. - * @param position_sp The current position_sp of the servo - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPosition_SP(int position_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_POSITION_SP, Integer.toString(position_sp)); - } - - /** - * Sets the rate_sp at which the servo travels from 0 to 100.0% (half of the full range of the servo). - * Units are in milliseconds. Example: Setting the rate_sp to 1000 means that it will take a 180 degree - * servo 2 second to move from 0 to 180 degrees. Note: Some servo controllers may not support this - * in which case reading and writing will fail with -EOPNOTSUPP. - * In continuous rotation servos, this value will affect the rate_sp at which the speed ramps up or down. - * @param rate_sp The rate_sp value - * @throws EV3LibraryException If I/O goes wrong - */ - public void setRate_SP(int rate_sp) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_RATE_SP, Integer.toString(rate_sp)); - } - - /** - * This function returns a string that is likely a "spaced-array".
    - * Use this function to directly to return a String array: - *
    -	 * getState()
    -	 * 
    - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list of state flags. String spaced-array - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStateViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_STATE); - } - - /** - * Reading returns a list of state flags. Possible flags are running, ramping holding and stalled. - * @return A list(String array) of state flags. - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getState() throws EV3LibraryException{ - String str = getStateViaString(); - return Sysfs.separateSpace(str); - } -} diff --git a/src/main/java/org/ev3dev/hardware/motors/package-info.java b/src/main/java/org/ev3dev/hardware/motors/package-info.java deleted file mode 100644 index ec0e15d..0000000 --- a/src/main/java/org/ev3dev/hardware/motors/package-info.java +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Motor classes. e.g. Motor, DCMotor, ServoMotor etc.
    - * Example: - *
    - * LegoPort port = new LegoPort(LegoPort.OUTPUT_A);
    - * Motor motor = new Motor(port);
    - * motor.setDutyCycle_SP(50); //Set Speed
    - * motor.runForever(); //Run forever
    - * 
    - */ -package org.ev3dev.hardware.motors; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/package-info.java b/src/main/java/org/ev3dev/hardware/package-info.java deleted file mode 100644 index 8ef0581..0000000 --- a/src/main/java/org/ev3dev/hardware/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/*** - * Hardware classes of EV3, to interact with them. - * @author Anthony - * - */ -package org.ev3dev.hardware; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/ports/LegoPort.java b/src/main/java/org/ev3dev/hardware/ports/LegoPort.java deleted file mode 100644 index 6ca28aa..0000000 --- a/src/main/java/org/ev3dev/hardware/ports/LegoPort.java +++ /dev/null @@ -1,202 +0,0 @@ -package org.ev3dev.hardware.ports; - -import java.io.IOException; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.io.Sysfs; - -/*** - * The lego-port class provides an interface for working with input and output ports that are compatible with LEGO MINDSTORMS RCX/NXT/EV3, - * LEGO WeDo and LEGO Power Functions sensors and motors. Supported devices include the LEGO MINDSTORMS EV3 Intelligent Brick, the LEGO - * WeDo USB hub and various sensor multiplexers from 3rd party manufacturers.
    - *
    - * Some types of ports may have multiple modes of operation. For example, the input ports on the EV3 brick can communicate - * with sensors using UART, I2C or analog validate signals - but not all at the same time. Therefore there are multiple modes - * available to connect to the different types of sensors.
    - *
    - * In most cases, ports are able to automatically detect what type of sensor or motor is connected. In some cases though, this - * must be manually specified using the mode and set_device attributes. The mode attribute affects how the port communicates - * with the connected device. For example the input ports on the EV3 brick can communicate using UART, I2C or analog voltages, - * but not all at the same time, so the mode must be set to the one that is appropriate for the connected sensor. The set_device - * attribute is used to specify the exact type of sensor that is connected. Note: the mode must be correctly set before setting - * the sensor type.
    - *
    - * Ports can be found at /sys/class/lego-port/port[N] where [N] is incremented each time a new port is registered. Note: The number is not related to the actual port at all - use the address attribute to find a specific port. - * @author Anthony - * - */ -public class LegoPort{ - - private int port = 0; - - /** - * The sysfs class name of LegoPort - */ - public static final String CLASS_NAME = "lego-port"; - - /** - * Sensor Port 1 on the EV3 - */ - public static final int INPUT_1 = 0; - - /** - * Sensor Port 2 on the EV3 - */ - public static final int INPUT_2 = 1; - - /** - * Sensor Port 3 on the EV3 - */ - public static final int INPUT_3 = 2; - - /** - * Sensor Port 4 on the EV3 - */ - public static final int INPUT_4 = 3; - - /** - * Motor Port A on the EV3 - */ - public static final int OUTPUT_A = 4; - - /** - * Motor Port B on the EV3 - */ - public static final int OUTPUT_B = 5; - - /** - * Motor Port C on the EV3 - */ - public static final int OUTPUT_C = 6; - - /** - * Motor Port D on the EV3 - */ - public static final int OUTPUT_D = 7; - - /** - * Creates a new LegoPort object. - * @param port A INPUT/OUTPUT Integer field from LegoPort class. - * @throws InvalidPortException If the specified port is lower than INPUT_1, higher than OUTPUT_D - */ - public LegoPort(int port) throws InvalidPortException{ - if (port < INPUT_1){ - throw new InvalidPortException("Port is lower than " + INPUT_1 + ", Port: " + port); - } else if (port > OUTPUT_D){ - throw new InvalidPortException("Port is higher than " + OUTPUT_D + ", Port: " + port); - } - this.port = port; - } - - /** - * Returns the name of the port. See individual driver documentation for the name that will be returned. - * @return Address (e.g. in1, outA) - * @throws EV3LibraryException If I/O goes wrong - */ - public String getAddress() throws EV3LibraryException{ - String address; - try { - address = Sysfs.getAttribute(CLASS_NAME, "port" + port, "address"); - } catch (IOException e) { - throw new EV3LibraryException("Get address attribute failed", e); - } - return address; - } - - /** - * Returns the name of the driver that loaded this device. You can find the complete list of drivers in the [list of port drivers]. - * @return Driver Name of this port - * @throws EV3LibraryException if I/O goes wrong - */ - public String getDriverName() throws EV3LibraryException{ - String drivername; - try { - drivername = Sysfs.getAttribute(CLASS_NAME, "port" + port, "driver_name"); - } catch (IOException e) { - throw new EV3LibraryException("Get driver name attribute failed", e); - } - return drivername; - } - - /** - * Returns a list of the available modes of the port. - * @return A String Array with a list of available modes - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getModes() throws EV3LibraryException{ - String modesstr; - try { - modesstr = Sysfs.getAttribute(CLASS_NAME, "port" + port, "modes"); - } catch (IOException e) { - throw new EV3LibraryException("Get modes attribute failed", e); - } - return Sysfs.separateSpace(modesstr); - } - - /** - * Reading returns the currently selected mode. Writing sets the mode. Generally - * speaking when the mode changes any sensor or motor devices associated with - * the port will be removed new ones loaded, - * however this this will depend on the individual driver implementing this class. - * @return The currently selected mode - * @throws EV3LibraryException If I/O goes wrong - */ - public String getMode() throws EV3LibraryException{ - String mode; - try { - mode = Sysfs.getAttribute(CLASS_NAME, "port" + port, "mode"); - } catch (IOException e) { - throw new EV3LibraryException("Get mode attribute failed", e); - } - return mode; - } - - /** - * Reading returns the currently selected mode. Writing sets the mode. Generally - * speaking when the mode changes any sensor or motor devices associated with - * the port will be removed new ones loaded, - * however this this will depend on the individual driver implementing this class. - * @param mode A available mode listed using getModes() - * @throws EV3LibraryException If I/O goes wrong - */ - public void setMode(String mode) throws EV3LibraryException{ - try { - Sysfs.setAttribute(CLASS_NAME, "port" + port, "mode", mode); - } catch (IOException e) { - throw new EV3LibraryException("Set mode attribute failed", e); - } - } - - /** - * For modes that support it, writing the name of a driver will cause a new device to be registered for that driver and - * attached to this port. For example, since NXT/Analog sensors cannot be auto-detected, you must use this attribute to - * load the correct driver. Returns -EOPNOTSUPP if setting a device is not supported. - * @param driver A generic driver name - * @throws EV3LibraryException If I/O goes wrong - */ - public void setDevice(String driver) throws EV3LibraryException{ - try { - Sysfs.setAttribute(CLASS_NAME, "port" + port, "set_device", driver); - } catch (IOException e) { - throw new EV3LibraryException("Set device attribute failed", e); - } - } - - /** - * In most cases, reading status will return the same value as mode. In cases where there is an - * auto mode additional values may be returned, such as no-device or error. - * See individual port driver documentation for the full list of possible values. - * @return The same as mode or some errors like: no-device or error. - * @throws EV3LibraryException If I/O goes wrong - */ - public String getStatus() throws EV3LibraryException{ - String status; - try { - status = Sysfs.getAttribute(CLASS_NAME, "port" + port, "status"); - } catch (IOException e) { - throw new EV3LibraryException("Get status attribute failed", e); - } - return status; - } -} diff --git a/src/main/java/org/ev3dev/hardware/ports/MotorPort.java b/src/main/java/org/ev3dev/hardware/ports/MotorPort.java deleted file mode 100644 index b4059cb..0000000 --- a/src/main/java/org/ev3dev/hardware/ports/MotorPort.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.ev3dev.hardware.ports; - -import org.ev3dev.exception.InvalidPortException; - -/*** - * MotorPort class for getting data from a specified motor port.
    - *
    - * You can use a LegoPort to use all the ports. - * @author Anthony - * - */ -public class MotorPort extends LegoPort { - - public static final int MOTOR_A = 4; - public static final int MOTOR_B = 5; - public static final int MOTOR_C = 6; - public static final int MOTOR_D = 7; - - /*** - * Creates a new motor port object.
    - *
    - * NOTE: MotorPort only accepts motors ports. Use LegoPort for all ports. - * @param port A final field from the MotorPort class. e.g.: MotorPort.MOTOR_A - * @throws InvalidPortException If the specified port does not exist - */ - public MotorPort(int port) throws InvalidPortException { - super(port); - if (port < 0){ - throw new InvalidPortException("The port you specified was invaild: 0 > " + port); - } else if (port < MOTOR_A){ - throw new InvalidPortException("The port you specified isn't a motor: " + MOTOR_A + " > " + port); - } else if (port > MOTOR_D){ - throw new InvalidPortException("The port you specified was invaild: " + MOTOR_D + " > " + port); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/ports/SensorPort.java b/src/main/java/org/ev3dev/hardware/ports/SensorPort.java deleted file mode 100644 index 71b42e8..0000000 --- a/src/main/java/org/ev3dev/hardware/ports/SensorPort.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.ev3dev.hardware.ports; - -import org.ev3dev.exception.InvalidPortException; - -/*** - * SensorPort class for getting data from a specified sensor port.
    - *
    - * You can use a LegoPort to use all the ports. - * @author Anthony - * - */ -public class SensorPort extends LegoPort{ - - public static final int SENSOR_1 = 0; - public static final int SENSOR_2 = 1; - public static final int SENSOR_3 = 2; - public static final int SENSOR_4 = 3; - - /*** - * Creates a new sensor port object.
    - *
    - * NOTE: SensorPort only accepts sensor ports. Use LegoPort for all ports. - * @param port A final field from the SensorPort class. e.g.: SensorPort.SENSOR_1 - * @throws InvalidPortException If the specified port does not exist - */ - public SensorPort(int port) throws InvalidPortException { - super(port); - if (port < 0){ - throw new InvalidPortException("The port you specified was invaild: 0 > " + port); - } else if (port > SENSOR_4){ - throw new InvalidPortException("The port you specified isn't a sensor: " + SENSOR_3 + " > " + port); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/ports/package-info.java b/src/main/java/org/ev3dev/hardware/ports/package-info.java deleted file mode 100644 index 05e6ea5..0000000 --- a/src/main/java/org/ev3dev/hardware/ports/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * LegoPort ports, such as LegoPort, SensorPort, MotorPort - * @author Anthony - * - */ -package org.ev3dev.hardware.ports; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/hardware/sensors/ColorSensor.java b/src/main/java/org/ev3dev/hardware/sensors/ColorSensor.java deleted file mode 100644 index 153cdf4..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/ColorSensor.java +++ /dev/null @@ -1,221 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * LEGO EV3 color sensor. - * @author Anthony - * - */ -public class ColorSensor extends Sensor { - - /** - * Reflected Light Intensity required Sysfs mode - */ - public static final String SYSFS_REFLECTED_LIGHT_INTENSITY_MODE = "COL-REFLECT"; - - /** - * Reflected Light Intensity Sysfs value index - */ - public static final int SYSFS_REFLECTED_LIGHT_INTENSITY_VALUE_INDEX = 0; - - /** - * Ambient Light Intensity required Sysfs mode - */ - public static final String SYSFS_AMBIENT_LIGHT_INTENSITY_MODE = "COL-AMBIENT"; - - /** - * Ambient Light Intensity Sysfs value index - */ - public static final int SYSFS_AMBIENT_LIGHT_INTENSITY_VALUE_INDEX = 0; - - /** - * Color required Sysfs mode - */ - public static final String SYSFS_COLOR_MODE = "COL-COLOR"; - - /** - * Color Sysfs value index - */ - public static final int SYSFS_COLOR_VALUE_INDEX = 0; - - /** - * RGB required Sysfs mode - */ - public static final String SYSFS_RGB_MODE = "RGB-RAW"; - - /** - * RGB Red Sysfs value index - */ - public static final int SYSFS_RGB_R_VALUE_INDEX = 0; - - /** - * RGB Green Sysfs value index - */ - public static final int SYSFS_RGB_G_VALUE_INDEX = 1; - - /** - * RGB Blue Sysfs value index - */ - public static final int SYSFS_RGB_B_VALUE_INDEX = 2; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-ev3-color"; - - private boolean autoSwitchMode = true; - - /** - * Creates a new ColorSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a ColorSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public ColorSensor(LegoPort port) throws EV3LibraryException { - super(port); - if (!DRIVER_NAME.equals(this.getDriverName())){ - throw new InvalidSensorException("The specified device is not a color sensor."); - } - port.getAddress(); - } - - /** - * Reflected light intensity as a percentage. Light on sensor is red. - * @return Reflected Light Intensity in percentage - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getReflectedLightIntensity() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_REFLECTED_LIGHT_INTENSITY_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_REFLECTED_LIGHT_INTENSITY_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_REFLECTED_LIGHT_INTENSITY_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_REFLECTED_LIGHT_INTENSITY_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Ambient light intensity. Light on sensor is dimly lit blue. - * @return Ambient light intensity in percentage - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getAmbientLightIntensity() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_AMBIENT_LIGHT_INTENSITY_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_AMBIENT_LIGHT_INTENSITY_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_AMBIENT_LIGHT_INTENSITY_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_AMBIENT_LIGHT_INTENSITY_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Color detected by the sensor, categorized by overall value.
    - * - 0: No color
    - * - 1: Black
    - * - 2: Blue
    - * - 3: Green
    - * - 4: Yellow
    - * - 5: Red
    - * - 6: White
    - * - 7: Brown - * @return Color value - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getColor() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_COLOR_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_COLOR_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_COLOR_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_COLOR_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Red component of the detected color, in the range 0-1020 - * @return RGB Red component - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getRGB_Red() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_RGB_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_RGB_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_RGB_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_RGB_R_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Green component of the detected color, in the range 0-1020 - * @return Green Red component - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getRGB_Green() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_RGB_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_RGB_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_RGB_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_RGB_G_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Blue component of the detected color, in the range 0-1020 - * @return Blue Red component - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getRGB_Blue() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_RGB_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_RGB_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_RGB_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_RGB_B_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/GyroSensor.java b/src/main/java/org/ev3dev/hardware/sensors/GyroSensor.java deleted file mode 100644 index 24cc4eb..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/GyroSensor.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * LEGO EV3 gyro sensor. - * @author Anthony - * - */ -public class GyroSensor extends Sensor { - - /** - * Gyro angle required Sysfs mode - */ - public static final String SYSFS_ANGLE_MODE = "GYRO-ANG"; - - /** - * Gyro angle Sysfs value index - */ - public static final int SYSFS_ANGLE_VALUE_INDEX = 0; - - /** - * Gyro rate required Sysfs mode - */ - public static final String SYSFS_RATE_MODE = "GYRO-RATE"; - - /** - * Gyro angle Sysfs value index - */ - public static final int SYSFS_RATE_VALUE_INDEX = 0; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-ev3-gyro"; - - private boolean autoSwitchMode = true; - - /** - * Creates a new GyroSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a GyroSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public GyroSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - if (!this.getDriverName().equals(DRIVER_NAME)){ - throw new InvalidSensorException("Can't create a GyroSensor instance if port isn't connected to a GyroSensor!"); - } - } - - /** - * The number of degrees that the sensor has been rotated since it was put into this mode. - * @return The number of degrees - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getAngle() throws InvalidModeException, EV3LibraryException{ - if (!this.getMode().equals(SYSFS_ANGLE_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_ANGLE_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_ANGLE_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_ANGLE_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * The rate at which the sensor is rotating, in degrees/second. - * @return The rate at which the sensor is rotating - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getRate() throws InvalidModeException, EV3LibraryException{ - if (!this.getMode().equals(SYSFS_RATE_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_RATE_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_RATE_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_RATE_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/I2CSensor.java b/src/main/java/org/ev3dev/hardware/sensors/I2CSensor.java deleted file mode 100644 index c441766..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/I2CSensor.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * A generic interface to control I2C-type EV3 sensors. - * @author Anthony - * - */ -public class I2CSensor extends Sensor { - - /** - * The Sysfs class's fw_version property name - */ - public static final String SYSFS_PROPERTY_FIRMWARE_VERSION = "fw_version"; - - /** - * The Sysfs class's poll_ms property name - */ - public static final String SYSFS_PROPERTY_POLL_MS = "poll_ms"; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "nxt-i2c-sensor"; - - /** - * Creates a new I2CSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a I2CSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public I2CSensor(LegoPort port) throws InvalidPortException, InvalidSensorException, EV3LibraryException { - this(port, DRIVER_NAME); - } - - /** - * Creates a new I2CSensor instance, and an alternative driver name can be specified. - * @param port LegoPort - * @param target_driver_name The target driver name to be checked. - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a I2CSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public I2CSensor(LegoPort port, String target_driver_name) throws InvalidPortException, InvalidSensorException, EV3LibraryException { - super(port); - if (!this.getDriverName().equals(target_driver_name)){ - throw new InvalidSensorException("The specified port is not a I2C sensor."); - } - } - - /** - * Returns the firmware version of the sensor if available. Currently only I2C/NXT sensors support this. - * @return The firmware version - * @throws EV3LibraryException If I/O goes wrong - */ - public String getFirmwareVersion() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_FIRMWARE_VERSION); - } - - /** - * Returns the polling period of the sensor in milliseconds. Writing sets the polling period. Setting to 0 disables polling. - * Minimum value is hard coded as 50 msec. Returns -EOPNOTSUPP if changing polling is not supported. - * Currently only I2C/NXT sensors support changing the polling period. - * @return The polling period in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public int getPollMs() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_POLL_MS); - return Integer.parseInt(str); - } - - /** - * Sets the polling period of the sensor in milliseconds. Writing sets the polling period. Setting to 0 disables polling. - * Minimum value is hard coded as 50 msec. Returns -EOPNOTSUPP if changing polling is not supported. - * Currently only I2C/NXT sensors support changing the polling period. - * @param ms The polling period in milliseconds - * @throws EV3LibraryException If I/O goes wrong - */ - public void setPollMs(int ms) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_POLL_MS, Integer.toString(ms)); - } -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/InfraredSensor.java b/src/main/java/org/ev3dev/hardware/sensors/InfraredSensor.java deleted file mode 100644 index 8f28447..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/InfraredSensor.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * LEGO EV3 infrared sensor. - * @author Anthony - * - */ -public class InfraredSensor extends Sensor { - - /** - * Proximity required Sysfs mode - */ - public static final String SYSFS_PROXIMITY_REQUIRED_MODE = "IR-PROX"; - - /** - * Proximity Sysfs value index - */ - public static final int SYSFS_PROXIMITY_VALUE_INDEX = 0; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-ev3-ir"; - - private boolean autoSwitchMode = true; - - /** - * Creates a new InfraredSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a InfraredSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public InfraredSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - if (!this.getDriverName().equals(DRIVER_NAME)){ - throw new InvalidSensorException("Can't create a InfraredSensor instance if the port isn't connected a infrared sensor!"); - } - } - - /** - * A measurement of the distance between the sensor and the remote, as a percentage. 100% is approximately 70cm/27in. - * @return A measurement of the distance - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public int getProximity() throws InvalidModeException, EV3LibraryException{ - if (!this.getMode().equals(SYSFS_PROXIMITY_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_PROXIMITY_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_PROXIMITY_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_PROXIMITY_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean getAutoSwitchMode(){ - return autoSwitchMode; - } -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/LightSensor.java b/src/main/java/org/ev3dev/hardware/sensors/LightSensor.java deleted file mode 100644 index 1618fa9..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/LightSensor.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * LEGO NXT Light Sensor - * @author Anthony - * - */ -public class LightSensor extends Sensor { - - /** - * Reflected light Sysfs required mode - */ - public static final String SYSFS_REFLECTED_REQUIRED_MODE = "REFLECT"; - - /** - * Reflected light Sysfs value index - */ - public static final int SYSFS_REFLECTED_VALUE_INDEX = 0; - - /** - * Ambient light Sysfs required mode - */ - public static final String SYSFS_AMBIENT_REQUIRED_MODE = "AMBIENT"; - - /** - * Ambient light Sysfs value index - */ - public static final int SYSFS_AMBIENT_VALUE_INDEX = 0; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-nxt-light"; - - public boolean autoSwitchMode = true; - - /** - * Creates a new LightSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a LightSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public LightSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - if(!this.getDriverName().equals(DRIVER_NAME)){ - throw new InvalidSensorException("Can't create a LightSensor instance if the port isn't connected to a light sensor!"); - } - } - - /** - * A measurement of the reflected light intensity, as a percentage. - * @return A measurement of the reflected light intensity - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getReflectedLightIntensity() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_REFLECTED_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_REFLECTED_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_REFLECTED_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_REFLECTED_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * A measurement of the ambient light intensity, as a percentage. - * @return A measurement of the ambient light intensity - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getAmbientLightIntensity() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_AMBIENT_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_AMBIENT_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_AMBIENT_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_AMBIENT_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/Sensor.java b/src/main/java/org/ev3dev/hardware/sensors/Sensor.java deleted file mode 100644 index deea682..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/Sensor.java +++ /dev/null @@ -1,213 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.hardware.Device; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.io.Sysfs; - -/** - * The sensor class provides a uniform interface for using most of the sensors available for the EV3. - * The various underlying device drivers will create a lego-sensor device for interacting with the sensors.
    - *
    - * Sensors are primarily controlled by setting the mode and monitored by reading the value[N] attributes. - * Values can be converted to floating point if needed by value[N] / 10.0 ^ decimals.
    - *
    - * Since the name of the sensor[N] device node does not correspond to the port that a sensor is plugged in - * to, you must look at the address attribute if you need to know which port a sensor is plugged in to. - * However, if you don't have more than one sensor of each type, you can just look for a matching driver_name. - * Then it will not matter which port a sensor is plugged in to - your program will still work. - * @author Anthony - * - */ -public class Sensor extends Device{ - - /** - * The Sysfs class's address property name - */ - public static final String SYSFS_PROPERTY_ADDRESS = "address"; - - /** - * The Sysfs class's command property name - */ - public static final String SYSFS_PROPERTY_COMMAND = "command"; - - /** - * The Sysfs class's commands property name - */ - public static final String SYSFS_PROPERTY_COMMANDS = "commands"; - - /** - * The Sysfs class's driver_name property name - */ - public static final String SYSFS_PROPERTY_DRIVER_NAME = "driver_name"; - - /** - * The Sysfs class's decimals property name - */ - public static final String SYSFS_PROPERTY_DECIMALS = "decimals"; - - /** - * The Sysfs class's mode property name - */ - public static final String SYSFS_PROPERTY_MODE = "mode"; - - /** - * The Sysfs class's modes property name - */ - public static final String SYSFS_PROPERTY_MODES = "modes"; - - /** - * The Sysfs class's num_values property name - */ - public static final String SYSFS_PROPERTY_NUM_VALUES = "num_values"; - - /** - * The Sysfs class's units property name - */ - public static final String SYSFS_PROPERTY_UNITS = "units"; - - /** - * This Sysfs's class name (e.g. /sys/class/lego-sensor, and lego-sensor is the class name) - */ - public static final String CLASS_NAME = "lego-sensor"; - - /** - * This Sysfs's class name prefix (e.g. /sys/class/lego-sensor/sensor0, and sensor is the class name prefix without the [N] value.) - */ - public static final String CLASS_NAME_PREFIX = "sensor"; - - /** - * Creates a new Sensor instance using a LegoPort - * @param port LegoPort - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidPortException If the specified LegoPort was invalid - */ - public Sensor(LegoPort port) throws EV3LibraryException{ - super(port, CLASS_NAME, CLASS_NAME_PREFIX); - } - - /** - * Returns the name of the port that the sensor is connected to, e.g. ev3:in1. - * I2C sensors also include the I2C address (decimal), e.g. ev3:in1:i2c8. - * @return A sensor address - * @throws EV3LibraryException If I/O goes wrong - */ - public String getAddress() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_ADDRESS); - } - - /*** - * Generic method to send commands to the sensor controller. - * @param command Command that suits for the sensor driver - * @throws EV3LibraryException If I/O goes wrong - */ - public void sendCommand(String command) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_COMMAND, command); - } - - /** - * This function returns a String instead of a String Array
    - * Use this function to return a String Array directly: - *
    -	 * getCommands()
    -	 * 
    - * Returns a list of the valid commands for the sensor. Returns -EOPNOTSUPP if no commands are supported. - * @return A list of valid commands - * @throws EV3LibraryException If I/O goes wrong - */ - public String getCommandsViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_COMMANDS); - } - - /** - * Returns a list of the valid commands for the sensor. Returns -EOPNOTSUPP if no commands are supported. - * @return A list of valid commands - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getCommands() throws EV3LibraryException{ - String str = getCommandsViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Returns the number of decimal places for the values in the value[N] attributes of the current mode. - * @return The number of decimal places - * @throws EV3LibraryException If I/O goes wrong - */ - public int getDecimals() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_DECIMALS); - return Integer.parseInt(str); - } - - /** - * Returns the name of the sensor device/driver. See the list of [supported sensors] for a complete list of drivers. - * @return The name of the sensor device or driver - * @throws EV3LibraryException If I/O goes wrong - */ - public String getDriverName() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_DRIVER_NAME); - } - - /** - * Returns the current mode. Writing one of the values returned by modes sets the sensor to that mode. - * @return The current mode - * @throws EV3LibraryException If I/O goes wrong - */ - public String getMode() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_MODE); - } - - /** - * Sets the current mode. Writing one of the values returned by modes sets the sensor to that mode. - * @param mode The mode listed using getModes() - * @throws EV3LibraryException If I/O goes wrong - */ - public void setMode(String mode) throws EV3LibraryException{ - this.setAttribute(SYSFS_PROPERTY_MODE, mode); - } - - /** - * This function returns a String instead of a array.
    - * Use this function to return a String Array directly: - *
    -	 * getModes()
    -	 * 
    - * Returns a list of the valid modes for the sensor. - * @return A list of valid modes for the sensor - * @throws EV3LibraryException If I/O goes wrong - */ - public String getModesViaString() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_MODES); - } - - /** - * Returns a list of the valid modes for the sensor. - * @return A list of valid modes for the sensor - * @throws EV3LibraryException If I/O goes wrong - */ - public String[] getModes() throws EV3LibraryException{ - String str = getModesViaString(); - return Sysfs.separateSpace(str); - } - - /** - * Returns the number of value[N] attributes that will return a valid value for the current mode. - * @return The number if value[N] attributes - * @throws EV3LibraryException If I/O goes wrong - */ - public int getNumValues() throws EV3LibraryException{ - String str = this.getAttribute(SYSFS_PROPERTY_NUM_VALUES); - return Integer.parseInt(str); - } - - /** - * Returns the units of the measured value for the current mode. May return empty string - * @return The units of measured value - * @throws EV3LibraryException If I/O goes wrong - */ - public String getUnits() throws EV3LibraryException{ - return this.getAttribute(SYSFS_PROPERTY_UNITS); - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/SoundSensor.java b/src/main/java/org/ev3dev/hardware/sensors/SoundSensor.java deleted file mode 100644 index 8f4455b..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/SoundSensor.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -/** - * LEGO NXT Sound Sensor - * @author Anthony - * - */ -public class SoundSensor extends Sensor { - - /** - * Sound pressure Sysfs required mode - */ - public static final String SYSFS_SOUND_PRESSURE_REQUIRED_MODE = "DB"; - - /** - * Sound pressure Sysfs value index - */ - public static final int SYSFS_SOUND_PRESSURE_VALUE_INDEX = 0; - - /** - * Sound pressure Low Sysfs required mode - */ - public static final String SYSFS_SOUND_PRESSURE_LOW_REQUIRED_MODE = "DBA"; - - /** - * Sound pressure Low Sysfs value index - */ - public static final int SYSFS_SOUND_PRESSURE_LOW_VALUE_INDEX = 0; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "lego-nxt-sound"; - - public boolean autoSwitchMode = true; - - /** - * Creates a new SoundSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a SoundSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public SoundSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - if(!this.getDriverName().equals(DRIVER_NAME)){ - throw new InvalidSensorException("Can't create a SoundSensor instance if the port isn't connected to a sound sensor!"); - } - } - - /** - * A measurement of the measured sound pressure level, as a percent. Uses a flat weighting. - * @return The measured sound pressure level - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getSoundPressure() throws InvalidModeException, EV3LibraryException{ - if (!this.getMode().equals(SYSFS_SOUND_PRESSURE_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_SOUND_PRESSURE_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_SOUND_PRESSURE_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_SOUND_PRESSURE_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * A measurement of the measured sound pressure level, as a percent. Uses A-weighting, which focuses on levels up to 55 dB. - * @return The measured sound pressure level, A-weighting. - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getSoundPressureLow() throws InvalidModeException, EV3LibraryException{ - if (!this.getMode().equals(SYSFS_SOUND_PRESSURE_LOW_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_SOUND_PRESSURE_LOW_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_SOUND_PRESSURE_LOW_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_SOUND_PRESSURE_LOW_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/TouchSensor.java b/src/main/java/org/ev3dev/hardware/sensors/TouchSensor.java deleted file mode 100644 index 95c285c..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/TouchSensor.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -public class TouchSensor extends Sensor { - - /** - * Sysfs class TouchSensor required mode - */ - public static final String SYSFS_REQUIRED_MODE = "TOUCH"; - - /** - * Sysfs class TouchSensor Value Index - */ - public static final int SYSFS_VALUE_INDEX = 0; - - /** - * This device's default driver name (EV3 Touch Sensor) - */ - public static final String DRIVER_NAME_EV3 = "lego-ev3-touch"; - - /** - * This device's default driver name (NXT Touch Sensor) - */ - public static final String DRIVER_NAME_NXT = "lego-nxt-touch"; - - public boolean autoSwitchMode = true; - - /** - * Creates a new TouchSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a TouchSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public TouchSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - if (!this.getDriverName().equals(DRIVER_NAME_EV3) && - !this.getDriverName().equals(DRIVER_NAME_NXT)){ - throw new InvalidSensorException("Can't create a TouchSensor instance that isn't a touch sensor!"); - } - port.getAddress(); - if (!this.getMode().equals(SYSFS_REQUIRED_MODE)){ - throw new InvalidSensorException("Can't create a TouchSensor instance that does not support: " + SYSFS_REQUIRED_MODE); - } - } - - /** - * A boolean indicating whether the current touch sensor is being pressed. - * @return The touch sensor is pressed or not. - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public boolean isPressed() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_REQUIRED_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_REQUIRED_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_REQUIRED_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_VALUE_INDEX); - return str.equals("1"); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/UltrasonicSensor.java b/src/main/java/org/ev3dev/hardware/sensors/UltrasonicSensor.java deleted file mode 100644 index 075f543..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/UltrasonicSensor.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.ev3dev.hardware.sensors; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; - -public class UltrasonicSensor extends Sensor { - - /** - * Distance in cm required Sysfs mode - */ - public static final String SYSFS_CM_MODE = "US-DIST-CM"; - - /** - * Distance in cm Sysfs value index - */ - public static final int SYSFS_CM_VALUE_INDEX = 0; - - /** - * Distance in inch required Sysfs mode - */ - public static final String SYSFS_IN_MODE = "US-DIST-IN"; - - /** - * Distance in inch Sysfs value index - */ - public static final int SYSFS_IN_VALUE_INDEX = 0; - - /** - * Other present sensor detection required Sysfs mode - */ - public static final String SYSFS_OTHER_PRESENT_MODE = "US-LISTEN"; - - /** - * Other present sensor detection Sysfs value index - */ - public static final int SYSFS_OTHER_PRESENT_VALUE_INDEX = 0; - - /** - * This device's default driver name (EV3 Ultrasonic Sensor) - */ - public static final String DRIVER_NAME_EV3 = "lego-ev3-us"; - - /** - * This device's default driver name (NXT Ultrasonic Sensor) - */ - public static final String DRIVER_NAME_NXT = "lego-nxt-us"; - - public boolean autoSwitchMode = true; - - /** - * Creates a new UltrasonicSensor instance. - * @param port LegoPort - * @throws InvalidPortException If the specified port wasn't valid - * @throws InvalidSensorException If the specified sensor wasn't a UltrasonicSensor - * @throws EV3LibraryException If I/O goes wrong - */ - public UltrasonicSensor(LegoPort port) throws EV3LibraryException, InvalidPortException, InvalidSensorException { - super(port); - String driverName = this.getDriverName(); - if (!driverName.equals(DRIVER_NAME_EV3) && - !driverName.equals(DRIVER_NAME_NXT)){ - throw new InvalidSensorException("Can't create a UltrasonicSensor instance if it is not a ultrasonic sensor! Yours: " + driverName); - } - } - - /** - * Measurement of the distance detected by the sensor, in centimeters. - * @return The distance in centimeters - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getDistanceCentimeters() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_CM_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_CM_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_CM_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_CM_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * Measurement of the distance detected by the sensor, in inches. - * @return The distance in inches. - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public float getDistanceInches() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_IN_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_IN_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_IN_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_IN_VALUE_INDEX); - return Float.parseFloat(str); - } - - /** - * Value indicating whether another ultrasonic sensor could be heard nearby. - * @return Boolean - * @throws EV3LibraryException If I/O goes wrong - * @throws InvalidModeException The mode selected wasn't valid, or Auto Switch Mode has disabled. - */ - public boolean isOtherSensorPresent() throws EV3LibraryException, InvalidModeException{ - if (!this.getMode().equals(SYSFS_OTHER_PRESENT_MODE)){ - if (autoSwitchMode){ - this.setMode(SYSFS_OTHER_PRESENT_MODE); - } else { - throw new InvalidModeException("[Auto-switch is off] You are not using a correct mode(" + SYSFS_OTHER_PRESENT_MODE + ")! Yours: " + this.getMode()); - } - } - String str = this.getAttribute("value" + SYSFS_OTHER_PRESENT_VALUE_INDEX); - return str.equals("1"); - } - - /** - * Set Auto Switch Mode to be enabled or disabled.
    - * (Default: enabled) - * @param autoswitch A Boolean - */ - public void setAutoSwitchMode(boolean autoswitch){ - this.autoSwitchMode = autoswitch; - } - - /** - * Get whether Auto Switch Mode is enabled or disabled. - * @return A Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5Sensor.java b/src/main/java/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5Sensor.java deleted file mode 100644 index 5429fef..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/charmedlabs/PixyCmucam5Sensor.java +++ /dev/null @@ -1,475 +0,0 @@ -package org.ev3dev.hardware.sensors.charmedlabs; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.I2CSensor; - -/** - * Pixy Cmucam 5 for Lego - * @author Anthony - * - */ -public class PixyCmucam5Sensor extends I2CSensor { - - /** - * ALL Mode - All - */ - public static final String MODE_ALL = "ALL"; - - /** - * ALL Mode - Signature low byte Sysfs value index - */ - public static final int MODE_ALL_SIG_LOW_BYTE_VALUE_INDEX = 0; - - /** - * ALL Mode - Signature high byte Sysfs value index - */ - public static final int MODE_ALL_SIG_HIGH_BYTE_VALUE_INDEX = 1; - - /** - * ALL Mode - X Sysfs value index - */ - public static final int MODE_ALL_X_VALUE_INDEX = 2; - - /** - * ALL Mode - Y Sysfs value index - */ - public static final int MODE_ALL_Y_VALUE_INDEX = 3; - - /** - * ALL Mode - Width Sysfs value index - */ - public static final int MODE_ALL_WIDTH_VALUE_INDEX = 4; - - /** - * ALL Mode - Height Sysfs value index - */ - public static final int MODE_ALL_HEIGHT_VALUE_INDEX = 5; - - /** - * SIG[N] Mode (All signature modes) - Count Sysfs value index - */ - public static final int MODE_SIG_COUNT_VALUE_INDEX = 0; - - /** - * SIG[N] Mode (All signature modes) - X Sysfs value index - */ - public static final int MODE_SIG_X_VALUE_INDEX = 1; - - /** - * SIG[N] Mode (All signature modes) - Y Sysfs value index - */ - public static final int MODE_SIG_Y_VALUE_INDEX = 2; - - /** - * SIG[N] Mode (All signature modes) - Width Sysfs value index - */ - public static final int MODE_SIG_WIDTH_VALUE_INDEX = 3; - - /** - * SIG[N] Mode (All signature modes) - Height Sysfs value index - */ - public static final int MODE_SIG_HEIGHT_VALUE_INDEX = 4; - - /** - * The prefix of modes SIG[N], where SIG is the prefix. - */ - public static final String PREFIX_MODE_SIG = "SIG"; - - /** - * SIG1 Mode - Signature #1 - */ - public static final String MODE_SIG1 = "SIG1"; - - /** - * SIG2 Mode - Signature #2 - */ - public static final String MODE_SIG2 = "SIG2"; - - /** - * SIG3 Mode - Signature #3 - */ - public static final String MODE_SIG3 = "SIG3"; - - /** - * SIG4 Mode - Signature #4 - */ - public static final String MODE_SIG4 = "SIG4"; - - /** - * SIG5 Mode - Signature #5 - */ - public static final String MODE_SIG5 = "SIG5"; - - /** - * SIG6 Mode - Signature #6 - */ - public static final String MODE_SIG6 = "SIG6"; - - /** - * SIG7 Mode - Signature #7 - */ - public static final String MODE_SIG7 = "SIG7"; - - /** - * Vendor ID - */ - public static final String VENDOR_ID = "Pixy"; - - /** - * Product ID - */ - public static final String PRODUCT_ID = "Pixy"; - - /** - * Pixy Cmucam 5 Sensor driver name - */ - public static final String DRIVER_NAME = "pixy-lego"; - - /** - * Address - */ - public static final byte ADDRESS = 0x01; - - /** - * Creates a new Pixy Cmucam 5 instnace - * @param port The LegoPort instance - * @throws EV3LibraryException If I/O goes wrong - */ - public PixyCmucam5Sensor(LegoPort port) throws EV3LibraryException { - super(port, DRIVER_NAME); - } - - /** - * Returns the vendor id - * @return Vendor Id - */ - public String getVendorId(){ - return VENDOR_ID; - } - - /** - * Returns the product id - * @return Product Id - */ - public String getProductId(){ - return PRODUCT_ID; - } - - /** - * Set mode to ALL.
    - *
    - * And returns a ModeAll instance for communication. - * @return ModeAll instance - */ - public ModeAll modeAll(){ - setMode(MODE_ALL); - return new ModeAll(MODE_ALL); - } - - /** - * Set mode to SIG[N], where [N] is the integer parameter specified
    - *
    - * And returns a ModeSig instance for communication. - * @param sigcount The value [N] of mode SIG[N]. (e.g. SIG1 specify 1) - * @return ModeSig instance - */ - public ModeSig modeSig(int sigcount){ - setMode(PREFIX_MODE_SIG + sigcount); - return new ModeSig(PREFIX_MODE_SIG + sigcount); - } - - /** - * Set mode to SIG1
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig1(){ - return modeSig(1); - } - - /** - * Set mode to SIG2
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig2(){ - return modeSig(2); - } - - /** - * Set mode to SIG3
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig3(){ - return modeSig(3); - } - - /** - * Set mode to SIG4
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig4(){ - return modeSig(4); - } - - /** - * Set mode to SIG5
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig5(){ - return modeSig(5); - } - - /** - * Set mode to SIG6
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig6(){ - return modeSig(6); - } - - /** - * Set mode to SIG7
    - *
    - * And returns a ModeSig instance for communication. - * @return ModeSig instance - */ - public ModeSig modeSig7(){ - return modeSig(7); - } - - /** - * A class to communicate with Pixy Cmucam 5 using mode ALL - * @author Anthony - * - */ - public class ModeAll { - - private final String mode; - - private boolean autoSwitchMode = true; - - private ModeAll(String mode){ - this.mode = mode; - } - - /** - * Check mode and switch automatically if autoSwitchMode is false
    - * Otherwise, EV3LibraryException will be thrown.
    - *
    - * Formerly called Fix Mode. - * @throws EV3LibraryException - */ - private void fixMode() throws EV3LibraryException{ - String currMode = getMode(); - if (!currMode.equals(mode)){ - if (autoSwitchMode){ - setMode(mode); - } else { - throw new EV3LibraryException("[Auto Switch Mode Off] You cannot use this function of mode " + mode + " with the current mode: " + currMode); - } - } - } - - /** - * Sets whether it should switch mode automatically if the mode is invalid.
    - * By default, it will auto switch mode. - * @param autoSwitchMode Switch or not - */ - public void setAutoSwitchMode(boolean autoSwitchMode){ - this.autoSwitchMode = autoSwitchMode; - } - - /** - * Returns whether it will auto switch mode or not. - * @return Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - - /** - * Get the signature low byte - * @return A byte representing the signature low byte - * @throws EV3LibraryException If I/O goes wrong - */ - public byte getSignatureLowByte() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_SIG_LOW_BYTE_VALUE_INDEX); - return Byte.parseByte(str); - } - - /** - * Get the signature high byte - * @return A byte representing the signature high byte - * @throws EV3LibraryException If I/O goes wrong - */ - public byte getSignatureHighByte() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_SIG_HIGH_BYTE_VALUE_INDEX); - return Byte.parseByte(str); - } - - /** - * Get the X point - * @return X point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getX() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_X_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the Y point - * @return Y point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getY() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_Y_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the width - * @return Width - * @throws EV3LibraryException If I/O goes wrong - */ - public int getWidth() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_WIDTH_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the height - * @return Height - * @throws EV3LibraryException If I/O goes wrong - */ - public int getHeight() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_ALL_HEIGHT_VALUE_INDEX); - return Integer.parseInt(str); - } - } - - /** - * A class to communicate with Pixy Cmucam 5 using mode SIG[N] - * @author Anthony - * - */ - public class ModeSig { - - private final String mode; - - private boolean autoSwitchMode = true; - - private ModeSig(String mode){ - this.mode = mode; - } - - /** - * Check mode and switch automatically if autoSwitchMode is false
    - * Otherwise, EV3LibraryException will be thrown.
    - *
    - * Formerly called Fix Mode. - * @throws EV3LibraryException - */ - private void fixMode() throws EV3LibraryException{ - String currMode = getMode(); - if (!currMode.equals(mode)){ - if (autoSwitchMode){ - setMode(mode); - } else { - throw new EV3LibraryException("[Auto Switch Mode Off] You cannot use this function of mode " + mode + " with the current mode: " + currMode); - } - } - } - - /** - * Sets whether it should switch mode automatically if the mode is invalid.
    - * By default, it will auto switch mode. - * @param autoSwitchMode Switch or not - */ - public void setAutoSwitchMode(boolean autoSwitchMode){ - this.autoSwitchMode = autoSwitchMode; - } - - /** - * Returns whether it will auto switch mode or not. - * @return Boolean - */ - public boolean isAutoSwitchMode(){ - return autoSwitchMode; - } - - /** - * Get the count - * @return Count - * @throws EV3LibraryException If I/O goes wrong - */ - public byte getCount() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_SIG_COUNT_VALUE_INDEX); - return Byte.parseByte(str); - } - - /** - * Get the X point - * @return X point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getX() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_SIG_X_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the Y point - * @return Y point - * @throws EV3LibraryException If I/O goes wrong - */ - public int getY() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_SIG_Y_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the width - * @return Width - * @throws EV3LibraryException If I/O goes wrong - */ - public int getWidth() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_SIG_WIDTH_VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Get the height - * @return Height - * @throws EV3LibraryException If I/O goes wrong - */ - public int getHeight() throws EV3LibraryException{ - fixMode(); - String str = getAttribute("value" + MODE_SIG_HEIGHT_VALUE_INDEX); - return Integer.parseInt(str); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/di/DflexSensor.java b/src/main/java/org/ev3dev/hardware/sensors/di/DflexSensor.java deleted file mode 100644 index b441dd1..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/di/DflexSensor.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.ev3dev.hardware.sensors.di; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.generic.NXTAnalogSensor; - -public class DflexSensor extends NXTAnalogSensor { - - /** - * FLEX Mode - Flex - */ - public static final String MODE_FLEX = "FLEX"; - - /** - * FLEX Mode - Flex Sysfs value index - */ - public static final int MODE_FLEX_VALUE_INDEX = 0; - - /** - * dFlex Sensor driver name - */ - public static final String DRIVER_NAME = "di-dflex"; - - /** - * Creates a DflexSensor instance. - * @param port The LegoPort instance - * @throws EV3LibraryException If I/O goes wrong - */ - public DflexSensor(LegoPort port) throws EV3LibraryException { - super(port, DRIVER_NAME); - } - - /** - * Flex - * @return an integer from 0-100 - */ - public int getFlex(){ - return Integer.parseInt(this.getAttribute("value" + MODE_FLEX_VALUE_INDEX)); - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/fatcatlab/ADCAdapter.java b/src/main/java/org/ev3dev/hardware/sensors/fatcatlab/ADCAdapter.java deleted file mode 100644 index ca32e5d..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/fatcatlab/ADCAdapter.java +++ /dev/null @@ -1,122 +0,0 @@ -package org.ev3dev.hardware.sensors.fatcatlab; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidModeException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.Sensor; - -public class ADCAdapter extends Sensor { - - /** - * Channel 1 voltage Mode - */ - public static final String MODE_CH1_VOLTAGE = "CH1-VOLTAGE"; - - /** - * Channel 1 voltage mode Sysfs value index - */ - public static final int INDEX_MODE_CH1_VOLTAGE = 0; - - /** - * Channel 2 voltage Mode - */ - public static final String MODE_CH2_VOLTAGE = "CH2-VOLTAGE"; - - /** - * Channel 2 voltage mode Sysfs value index - */ - public static final int INDEX_MODE_CH2_VOLTAGE = 0; - - /** - * All channels voltage Mode - */ - public static final String MODE_ALL_VOLTAGE = "VOLTAGE"; - - /** - * All channels mode channel 1 voltage Sysfs value index - */ - public static final int INDEX_MODE_ALL_CH1_VOLTAGE = 0; - - /** - * All channels mode channel 2 voltage Sysfs value index - */ - public static final int INDEX_MODE_ALL_CH2_VOLTAGE = 1; - - /** - * The property "valueX" prefix - */ - public static final String PROPERTY_PREFIX = "value"; - - /** - * This device's default driver name - */ - public static final String DRIVER_NAME = "fcl-adc"; - - /** - * Creates a new ADCAdapter instance - * @param port LegoPort - * @throws EV3LibraryException If I/O goes wrong - */ - public ADCAdapter(LegoPort port) throws EV3LibraryException { - super(port); - if(!this.getDriverName().equals(DRIVER_NAME)){ - throw new InvalidSensorException("Can't create a ADCAdapter instance if the port isn't connected to a light sensor!"); - } - } - - /** - * Set the device mode as Channel 1 Voltage Mode - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsCh1() throws EV3LibraryException{ - setMode(MODE_CH1_VOLTAGE); - } - - /** - * Set the device mode as Channel 2 Voltage Mode - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsCh2() throws EV3LibraryException{ - setMode(MODE_CH2_VOLTAGE); - } - - /** - * Set the device mode as All Channels Voltage Mode - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsAllCh() throws EV3LibraryException{ - setMode(MODE_ALL_VOLTAGE); - } - - /** - * Gets the voltage in millivolts from channel 1. The device mode must be CH1-VOLTAGE or VOLTAGE. Otherwise, a InvalidModeException will be thrown. - * @return millivolts in Integer - * @throws EV3LibraryException If the mode is invalid or I/O goes wrong - */ - public int getCh1Volt() throws EV3LibraryException{ - String mode = getAttribute(SYSFS_PROPERTY_MODE); - if (mode.equals(MODE_CH1_VOLTAGE) || mode.equals(MODE_ALL_VOLTAGE)){ - String str = getAttribute(PROPERTY_PREFIX + INDEX_MODE_CH1_VOLTAGE); - return Integer.parseInt(str); - } else { - throw new InvalidModeException("The Channel 1 voltage property cannot be accessed if the mode is not \"" + MODE_CH1_VOLTAGE + "\" or \"" + MODE_ALL_VOLTAGE + "\""); - } - } - - /** - * Gets the voltage in millivolts from channel 2. The device mode must be CH2-VOLTAGE or VOLTAGE. Otherwise, a InvalidModeException will be thrown. - * @return millivolts in Integer - * @throws EV3LibraryException If the mode is invalid or I/O goes wrong - */ - public int getCh2Volt() throws EV3LibraryException{ - String mode = getAttribute(SYSFS_PROPERTY_MODE); - if (mode.equals(MODE_CH2_VOLTAGE) || mode.equals(MODE_ALL_VOLTAGE)){ - String str = getAttribute(PROPERTY_PREFIX + (mode.equals(MODE_ALL_VOLTAGE) ? INDEX_MODE_ALL_CH2_VOLTAGE : INDEX_MODE_CH1_VOLTAGE)); - return Integer.parseInt(str); - } else { - throw new InvalidModeException("The Channel 2 voltage property cannot be accessed if the mode is not \"" + MODE_CH2_VOLTAGE + "\" or \"" + MODE_ALL_VOLTAGE + "\""); - } - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.java b/src/main/java/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.java deleted file mode 100644 index c93248e..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/generic/EV3AnalogSensor.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.ev3dev.hardware.sensors.generic; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.Sensor; - -/** - * Generic EV3 Analog Sensor driver - * @author Anthony - * - */ -public class EV3AnalogSensor extends Sensor { - - /** - * ANALOG Mode - Raw analog value - */ - public static final String MODE_ANALOG = "ANALOG"; - - /** - * The Sysfs value index - */ - public static final int VALUE_INDEX = 0; - - /** - * The EV3 Analog sensor driver name - */ - public static final String DRIVER_NAME = "ev3-analog"; - - /** - * Creates a new EV3 analog sensor - * @param port The LegoPort instance - * @param typeId The sensor type ID, see here for more details. - * @throws EV3LibraryException If I/O goes wrong - */ - public EV3AnalogSensor(LegoPort port, String typeId) throws EV3LibraryException{ - super(port); - String drivername = port.getDriverName(); - if (!drivername.equals(DRIVER_NAME + "-" + typeId)){ - throw new EV3LibraryException("The port is not connected to a EV3 analog sensor with type id \"" + typeId + "\": " + drivername); - } - } - - /** - * Set mode as ANALOG Mode - Raw analog value - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAnalog() throws EV3LibraryException{ - setMode(MODE_ANALOG); - } - - /** - * Returns the raw analog voltage / value (0-5000).
    - *
    - * This function does not calculate decimal places. - * @throws EV3LibraryException If I/O goes wrong - * @return The voltage - */ - public int getRawValue() throws EV3LibraryException{ - String str = getAttribute("value" + VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Returns the raw analog voltage / value (0-5000), and with decimal places
    - * @throws EV3LibraryException If I/O goes wrong - * @return The voltage - */ - public float getValue() throws EV3LibraryException{ - float out = getRawValue(); - - int dec = getDecimals(); - for (int i = 1; i <= dec; i++){ - out /= 10; - } - - return out; - } - - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.java b/src/main/java/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.java deleted file mode 100644 index 5aaaa7d..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/generic/NXTAnalogSensor.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.ev3dev.hardware.sensors.generic; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.Sensor; - -/** - * Generic NXT Analog Sensor driver - * @author Anthony - * - */ -public class NXTAnalogSensor extends Sensor { - - /** - * ANALOG-0 Mode - Raw analog value - */ - public static final String MODE_ANALOG_0 = "ANALOG-0"; - - /** - * ANALOG-1 Mode - Raw analog value, Pin 5 high - */ - public static final String MODE_ANALOG_1 = "ANALOG-1"; - - /** - * The Sysfs value index - */ - public static final int VALUE_INDEX = 0; - - /** - * The NXT Analog sensor driver name - */ - public static final String DRIVER_NAME = "nxt-analog"; - - /** - * Creates a new NXT analog sensor. - * @param port The LegoPort instance - * @throws EV3LibraryException If I/O goes wrong - */ - public NXTAnalogSensor(LegoPort port) throws EV3LibraryException{ - this(port, DRIVER_NAME); - } - - /** - * Creates a new NXT analog sensor, and an alternative driver name can be specified. - * @param port The LegoPort instance - * @param target_driver_name The target driver name to be checked. - * @throws EV3LibraryException If I/O goes wrong - */ - public NXTAnalogSensor(LegoPort port, String target_driver_name) throws EV3LibraryException{ - super(port); - String drivername = port.getDriverName(); - if (!drivername.equals(target_driver_name)){ - throw new EV3LibraryException("The port is not connected to a NXT analog sensor: " + drivername); - } - } - - /** - * Set mode as ANALOG-0 Mode - Raw analog value - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAnalog0() throws EV3LibraryException{ - setMode(MODE_ANALOG_0); - } - - /** - * Set mode as ANALOG-1 Mode - Raw analog value, Pin 5 high - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAnalog1() throws EV3LibraryException{ - setMode(MODE_ANALOG_1); - } - - /** - * Returns the raw analog voltage / value (0-5000).
    - * Both mode uses the same value index (value0)
    - *
    - * This function does not calculate decimal places. - * @throws EV3LibraryException If I/O goes wrong - * @return The voltage - */ - public int getRawValue() throws EV3LibraryException{ - String str = getAttribute("value" + VALUE_INDEX); - return Integer.parseInt(str); - } - - /** - * Returns the raw analog voltage / value (0-5000), and with decimal places
    - * Both mode uses the same value index (value0)
    - * @throws EV3LibraryException If I/O goes wrong - * @return The voltage - */ - public float getValue() throws EV3LibraryException{ - float out = getRawValue(); - - int dec = getDecimals(); - for (int i = 1; i <= dec; i++){ - out /= 10; - } - - return out; - } - -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/hitechnic/HTNXTColorSensor.java b/src/main/java/org/ev3dev/hardware/sensors/hitechnic/HTNXTColorSensor.java deleted file mode 100644 index 832f475..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/hitechnic/HTNXTColorSensor.java +++ /dev/null @@ -1,226 +0,0 @@ -package org.ev3dev.hardware.sensors.hitechnic; - -import org.ev3dev.exception.EV3LibraryException; -import org.ev3dev.exception.InvalidPortException; -import org.ev3dev.exception.InvalidSensorException; -import org.ev3dev.hardware.ports.LegoPort; -import org.ev3dev.hardware.sensors.I2CSensor; - -public class HTNXTColorSensor extends I2CSensor { - - /** - * HiTechnic NXT Color sensor - */ - public static final String DRIVER_NAME = "ht-nxt-color"; - - /** - * The vendor id of this sensor - */ - public static final String VENDOR_ID = "HiTechnic"; - - /** - * The product id of this sensor - */ - public static final String PRODUCT_ID = "Color"; - - /** - * Mode "Color" - */ - public static final String MODE_COLOR = "COLOR"; - - /** - * Mode "Red component" - */ - public static final String MODE_RED = "RED"; - - /** - * Mode "Green component" - */ - public static final String MODE_GREEN = "GREEN"; - - /** - * Mode "Blue component" - */ - public static final String MODE_BLUE = "BLUE"; - - /** - * Mode "Raw values" - */ - public static final String MODE_RAW = "RAW"; - - /** - * Mode "Normalized values" - */ - public static final String MODE_NORM = "NORM"; - - /** - * Mode "All values" - */ - public static final String MODE_ALL = "ALL"; - - /** - * Color (0 to 17) Sysfs value index of mode "Color" - */ - public static final int INDEX_MODE_COLOR_COLOR = 0; - - /** - * Reflected light intensity (0 to 255) Sysfs value index of mode "Red","Green","Blue" - */ - public static final int INDEX_REFLECTED = 0; - - /** - * Red component color value (0 to 255) Sysfs value index of mode "Raw","Normalized values" - */ - public static final int INDEX_RED_COMP = 0; - - /** - * Green component color value (0 to 255) Sysfs value index of mode "Raw","Normalized values" - */ - public static final int INDEX_GREEN_COMP = 1; - - /** - * Blue component color value (0 to 255) Sysfs value index of mode "Raw","Normalized values" - */ - public static final int INDEX_BLUE_COMP = 2; - - /** - * ??? (Unknown) component color value (0 to 255) Sysfs value index of mode "Normalized values" - */ - public static final int INDEX_MODE_NORM_UNKNOWN = 3; - - /** - * Color value (0 to 17) Sysfs value index of mode "All" - */ - public static final int INDEX_MODE_ALL_COLOR = 0; - - /** - * Red component color value (0 to 255) Sysfs value index of mode "All" - */ - public static final int INDEX_MODE_ALL_RED = 1; - - /** - * Green component color value (0 to 255) Sysfs value index of mode "All" - */ - public static final int INDEX_MODE_ALL_GREEN = 2; - - /** - * Blue component color value (0 to 255) Sysfs value index of mode "All" - */ - public static final int INDEX_MODE_ALL_BLUE = 3; - - /** - * The attribute prefix before the value index - */ - public static final String VALUE_PREFIX = "value"; - - /** - * I2C Address - */ - public static final byte address = 0x01; - - /** - * Creates a HTNXTColorSensor instance. - * @param port The LegoPort instance - * @throws EV3LibraryException If I/O goes wrong - */ - public HTNXTColorSensor(LegoPort port) throws EV3LibraryException { - super(port, DRIVER_NAME); - } - - /** - * Set mode as mode "Color" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsColor() throws EV3LibraryException { - setMode(MODE_COLOR); - } - - /** - * Set mode as mode "Red" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsRed() throws EV3LibraryException { - setMode(MODE_RED); - } - - /** - * Set mode as mode "Green" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsGreen() throws EV3LibraryException{ - setMode(MODE_GREEN); - } - - /** - * Set mode as mode "Blue" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsBlue() throws EV3LibraryException{ - setMode(MODE_BLUE); - } - - /** - * Set mode as mode "Raw" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsRaw() throws EV3LibraryException{ - setMode(MODE_RAW); - } - - /** - * Set mode as mode "Normalized values" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsNorm() throws EV3LibraryException{ - setMode(MODE_NORM); - } - - /** - * Set mode as mode "All" - * @throws EV3LibraryException If I/O goes wrong - */ - public void setModeAsAll() throws EV3LibraryException{ - setMode(MODE_ALL); - } - - /** - * This function requires mode COLOR or ALL.
    - *
    - * Get the color value from 0 to 17. Color values chart can be found at http://www.ev3dev.org/docs/sensors/hitechnic-nxt-color-sensor/ - * @return a integer from 0 to 17 - */ - public int getColor(){ - String str = getAttribute(VALUE_PREFIX + INDEX_MODE_COLOR_COLOR); - return Integer.parseInt(str); - } - - /** - * This function requires mode RED, GREEN or BLUE.
    - *
    - * Get the reflected color intensity. - * @return a integer from 0 to 255 - */ - public int getReflectedLightIntensity(){ - String str = getAttribute(VALUE_PREFIX + INDEX_REFLECTED); - return Integer.parseInt(str); - } - - /** - * This function requires mode RAW, NORM or ALL.
    - *
    - * Get the red component - * @return - */ - public int getRedComponent(){ - String mode = getMode(); - String str; - if (mode.equals(MODE_ALL)){ - str = getAttribute(VALUE_PREFIX + INDEX_MODE_ALL_RED); - } else if (mode.equals(MODE_RAW) || mode.equals(MODE_NORM)){ - str = getAttribute(VALUE_PREFIX + INDEX_RED_COMP); - } else { - throw new EV3LibraryException("The function does not support with the current mode: " + mode); - } - return Integer.parseInt(str); - } -} diff --git a/src/main/java/org/ev3dev/hardware/sensors/package-info.java b/src/main/java/org/ev3dev/hardware/sensors/package-info.java deleted file mode 100644 index 7868f13..0000000 --- a/src/main/java/org/ev3dev/hardware/sensors/package-info.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Sensor classes. e.g. Sensor, TouchSensor, ColorSensor, UltrasonicSensor etc.
    - * Example: - *
    - * LegoPort port = new LegoPort(LegoPort.INPUT_1);
    - * TouchSensor sensor = new TouchSensor(port);
    - * while(true){
    - * 		if(sensor.isPressed()){
    - * 			System.out.println("Pressed!");
    - * 		}
    - * }
    - * 
    - * @author Anthony - * - */ -package org.ev3dev.hardware.sensors; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/io/Sysfs.java b/src/main/java/org/ev3dev/io/Sysfs.java deleted file mode 100644 index 90bc93f..0000000 --- a/src/main/java/org/ev3dev/io/Sysfs.java +++ /dev/null @@ -1,216 +0,0 @@ -package org.ev3dev.io; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.List; - -/*** - * A class for reading/writing to the EV3 driver system classes - * @author Anthony - * - */ -public class Sysfs { - - /** - * The default ev3dev Sysfs class path (/sys/class/) - */ - public static final String DEFAULT_SYSTEM_CLASS_PATH = "/sys/class/"; - - private static String SYSTEM_CLASS_PATH = DEFAULT_SYSTEM_CLASS_PATH; - - /** - * Get all sub-class files - * @param class_name Main Class Name - * @return File Array - */ - public static File[] getAllSubClass(String class_name){ - File file = new File(SYSTEM_CLASS_PATH + class_name); - File[] files = file.listFiles(); - return files; - } - - /** - * Returns the current ev3dev Sysfs path. - * @return the current Sysfs path - */ - public static String getSysfsPath(){ - return SYSTEM_CLASS_PATH; - } - - /** - * Modify the current ev3dev Sysfs path in this library instance to be used. This is probably used for debugging purpose. Any invalid modification to the path will break the library. - * @param path The file-system path to be used - */ - public static void setSysfsPath(String path){ - SYSTEM_CLASS_PATH = path; - } - - /** - * Sets the current ev3dev Sysfs path to default - */ - public static void resetSysfsPath(){ - SYSTEM_CLASS_PATH = DEFAULT_SYSTEM_CLASS_PATH; - } - - /*** - * Reads the property of the class specified. - * @param class_name The class name - * @param property The property name of the class. - * @return The value of the property - * @throws FileNotFoundException If the specified class isn't exist. - * @throws IOException If the API couldn't read the class's property - */ - public static String getAttribute(String class_name, String property) throws FileNotFoundException, IOException{ - File file = new File(SYSTEM_CLASS_PATH + class_name + "/" + property); - class_name = class_name.toLowerCase(); - property = property.toLowerCase(); - FileInputStream in = new FileInputStream(file); - StringBuilder sb = new StringBuilder(); - BufferedReader br = null; - String line; - try { - br = new BufferedReader(new InputStreamReader(in)); - while ((line = br.readLine()) != null) { - sb.append(line); - } - - } catch (IOException e) { - throw e; - } finally { - if (br != null) { - try { - br.close(); - } catch (IOException e) { - throw e; - } - } - } - return sb.toString(); - } - - /*** - * Reads the property of the class and subclass specified. - * @param class_name The class name. - * @param subclass The Sub-class name. - * @param property The property name of the class - * @return The value of the property - * @throws FileNotFoundException If the specified class isn't exist. - * @throws IOException If the API couldn't read the class's property - */ - public static String getAttribute(String class_name, String subclass, String property) throws FileNotFoundException, IOException{ - return getAttribute(class_name, subclass + "/" + property); - } - - /*** - * Writes the property of the class and subclass specified. - * @param class_name The class name. - * @param subclass The Sub-class name. - * @param property The property name of the class - * @param new_value The new value of the property - * @throws FileNotFoundException If the specified class isn't exist. - * @throws IOException If the API couldn't read the class's property - */ - public static void setAttribute(String class_name, String subclass, String property, String new_value) throws FileNotFoundException, IOException{ - setAttribute(class_name, subclass + "/" + property, new_value); - } - - /*** - * Writes the property of the class specified. - * @param class_name The class name. - * @param property The property name of the class - * @param new_value The new value of the property - * @throws FileNotFoundException If the specified class isn't exist. - * @throws IOException If the API couldn't read the class's property - */ - public static void setAttribute(String class_name, String property, String new_value) throws FileNotFoundException, IOException{ - PrintWriter out = new PrintWriter(SYSTEM_CLASS_PATH + class_name + "/" + property); - out.write(new_value); - out.flush(); - out.close(); - } - - /*** - * A function to separate space from a spaced-array. - * @param space_array A string - * @return A array of the string/space-array - */ - public static String[] separateSpace(String space_array){ - int i; - int j; - String sep; - List list = new ArrayList(50); - for (i = 0; i < space_array.length(); i++){ - for (j = i; j < space_array.length(); j++){ - if (space_array.charAt(j) == ' '){ - break; - } - } - if (j == space_array.length()){ - break; - } - sep = space_array.substring(i, j + 1); - list.add(sep); - i = j; - } - Object[] objarr = list.toArray(); - String[] strarr = new String[objarr.length]; - for (i = 0; i < strarr.length; i++){ - strarr[i] = (String) objarr[i]; - } - return strarr; - } - - private static String readFile(File file) throws IOException{ - FileInputStream in = new FileInputStream(file); - StringBuilder sb = new StringBuilder(); - BufferedReader br = null; - String line; - try { - br = new BufferedReader(new InputStreamReader(in)); - while ((line = br.readLine()) != null) { - sb.append(line); - } - - } catch (IOException e) { - throw e; - } finally { - if (br != null) { - try { - br.close(); - } catch (IOException e) { - throw e; - } - } - } - return sb.toString(); - } - - /** - * Search the full class name, using a class name, FS folder prefix and an address - * @param classname The class Name (e.g. lego-port, tacho-motor) - * @param fsFolderPrefix The FS folder prefix, without the value [N] (e.g. motor, sensor) - * @param address Port address (e.g. outA, in1) - * @return The full FS class folder name, with the same port address, if none, returns null - */ - public static String searchClassFullName(String classname, String fsFolderPrefix, String address){ - File[] sub = Sysfs.getAllSubClass(classname); - File file; - String data; - for (File asub : sub){ - file = new File(asub.getAbsolutePath() + "/address"); - try { - data = readFile(file); - if(data.equals(address)){ - return asub.getName(); - } - } catch (Exception ignore){} - } - return null; - } -} diff --git a/src/main/java/org/ev3dev/io/package-info.java b/src/main/java/org/ev3dev/io/package-info.java deleted file mode 100644 index 7039aed..0000000 --- a/src/main/java/org/ev3dev/io/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * API I/O Controls - * @author Anthony - * - */ -package org.ev3dev.io; \ No newline at end of file diff --git a/src/main/java/org/ev3dev/package-info.java b/src/main/java/org/ev3dev/package-info.java deleted file mode 100644 index 5962920..0000000 --- a/src/main/java/org/ev3dev/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Main package of ev3dev language binding - * @author Anthony - * - */ -package org.ev3dev; \ No newline at end of file diff --git a/vendor/bootstrap-social/bootstrap-social.css b/vendor/bootstrap-social/bootstrap-social.css new file mode 100644 index 0000000..b22f7be --- /dev/null +++ b/vendor/bootstrap-social/bootstrap-social.css @@ -0,0 +1,101 @@ +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2014 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + */ + +.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon :first-child{border:none;text-align:center;width:100% !important} +.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} +.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} +.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} +.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:hover,.btn-adn:focus,.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} +.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} +.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} +.btn-adn .badge{color:#d87a68;background-color:#fff} +.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} +.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket .badge{color:#205081;background-color:#fff} +.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} +.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} +.btn-dropbox .badge{color:#1087dd;background-color:#fff} +.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} +.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} +.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} +.btn-facebook .badge{color:#3b5998;background-color:#fff} +.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} +.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} +.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} +.btn-flickr .badge{color:#ff0084;background-color:#fff} +.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover,.btn-foursquare:focus,.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} +.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} +.btn-foursquare .badge{color:#f94877;background-color:#fff} +.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} +.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} +.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} +.btn-github .badge{color:#444;background-color:#fff} +.btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} +.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{background-image:none} +.btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} +.btn-google-plus .badge{color:#dd4b39;background-color:#fff} +.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} +.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} +.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} +.btn-instagram .badge{color:#3f729b;background-color:#fff} +.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} +.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} +.btn-linkedin .badge{color:#007bb6;background-color:#fff} +.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover,.btn-microsoft:focus,.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} +.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} +.btn-microsoft .badge{color:#2672ec;background-color:#fff} +.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:hover,.btn-openid:focus,.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} +.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} +.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} +.btn-openid .badge{color:#f7931e;background-color:#fff} +.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover,.btn-pinterest:focus,.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} +.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} +.btn-pinterest .badge{color:#cb2027;background-color:#fff} +.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover,.btn-reddit:focus,.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} +.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} +.btn-reddit .badge{color:#eff7ff;background-color:#000} +.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover,.btn-soundcloud:focus,.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} +.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud .badge{color:#f50;background-color:#fff} +.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} +.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} +.btn-tumblr .badge{color:#2c4762;background-color:#fff} +.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} +.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} +.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} +.btn-twitter .badge{color:#55acee;background-color:#fff} +.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover,.btn-vimeo:focus,.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} +.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} +.btn-vimeo .badge{color:#1ab7ea;background-color:#fff} +.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} +.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} +.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} +.btn-vk .badge{color:#587ea3;background-color:#fff} +.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover,.btn-yahoo:focus,.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} +.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} +.btn-yahoo .badge{color:#720e9e;background-color:#fff} diff --git a/vendor/bootstrap-social/bootstrap-social.less b/vendor/bootstrap-social/bootstrap-social.less new file mode 100644 index 0000000..82c91f5 --- /dev/null +++ b/vendor/bootstrap-social/bootstrap-social.less @@ -0,0 +1,114 @@ +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2014 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + */ + +@bs-height-base: (@line-height-computed + @padding-base-vertical * 2); +@bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2); +@bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2); +@bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1); + +.btn-social { + position: relative; + padding-left: (@bs-height-base + @padding-base-horizontal); + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + > :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: @bs-height-base; + line-height: (@bs-height-base + 2); + font-size: 1.6em; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); + } + &.btn-lg { + padding-left: (@bs-height-lg + @padding-large-horizontal); + :first-child { + line-height: @bs-height-lg; + width: @bs-height-lg; + font-size: 1.8em; + } + } + &.btn-sm { + padding-left: (@bs-height-sm + @padding-small-horizontal); + :first-child { + line-height: @bs-height-sm; + width: @bs-height-sm; + font-size: 1.4em; + } + } + &.btn-xs { + padding-left: (@bs-height-xs + @padding-small-horizontal); + :first-child { + line-height: @bs-height-xs; + width: @bs-height-xs; + font-size: 1.2em; + } + } +} + +.btn-social-icon { + .btn-social; + height: (@bs-height-base + 2); + width: (@bs-height-base + 2); + padding: 0; + :first-child { + border: none; + text-align: center; + width: 100%!important; + } + &.btn-lg { + height: @bs-height-lg; + width: @bs-height-lg; + padding-left: 0; + padding-right: 0; + } + &.btn-sm { + height: (@bs-height-sm + 2); + width: (@bs-height-sm + 2); + padding-left: 0; + padding-right: 0; + } + &.btn-xs { + height: (@bs-height-xs + 2); + width: (@bs-height-xs + 2); + padding-left: 0; + padding-right: 0; + } +} + +.btn-social(@color-bg, @color: #fff) { + background-color: @color-bg; + .button-variant(@color, @color-bg, rgba(0,0,0,.2)); +} + + +.btn-adn { .btn-social(#d87a68); } +.btn-bitbucket { .btn-social(#205081); } +.btn-dropbox { .btn-social(#1087dd); } +.btn-facebook { .btn-social(#3b5998); } +.btn-flickr { .btn-social(#ff0084); } +.btn-foursquare { .btn-social(#f94877); } +.btn-github { .btn-social(#444444); } +.btn-google-plus { .btn-social(#dd4b39); } +.btn-instagram { .btn-social(#3f729b); } +.btn-linkedin { .btn-social(#007bb6); } +.btn-microsoft { .btn-social(#2672ec); } +.btn-openid { .btn-social(#f7931e); } +.btn-pinterest { .btn-social(#cb2027); } +.btn-reddit { .btn-social(#eff7ff, #000); } +.btn-soundcloud { .btn-social(#ff5500); } +.btn-tumblr { .btn-social(#2c4762); } +.btn-twitter { .btn-social(#55acee); } +.btn-vimeo { .btn-social(#1ab7ea); } +.btn-vk { .btn-social(#587ea3); } +.btn-yahoo { .btn-social(#720e9e); } diff --git a/vendor/bootstrap-social/bootstrap-social.scss b/vendor/bootstrap-social/bootstrap-social.scss new file mode 100644 index 0000000..667543f --- /dev/null +++ b/vendor/bootstrap-social/bootstrap-social.scss @@ -0,0 +1,114 @@ +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2014 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + */ + +$bs-height-base: ($line-height-computed + $padding-base-vertical * 2); +$bs-height-lg: (floor($font-size-large * $line-height-base) + $padding-large-vertical * 2); +$bs-height-sm: (floor($font-size-small * 1.5) + $padding-small-vertical * 2); +$bs-height-xs: (floor($font-size-small * 1.2) + $padding-small-vertical + 1); + +.btn-social { + position: relative; + padding-left: ($bs-height-base + $padding-base-horizontal); + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + > :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: $bs-height-base; + line-height: ($bs-height-base + 2); + font-size: 1.6em; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); + } + &.btn-lg { + padding-left: ($bs-height-lg + $padding-large-horizontal); + :first-child { + line-height: $bs-height-lg; + width: $bs-height-lg; + font-size: 1.8em; + } + } + &.btn-sm { + padding-left: ($bs-height-sm + $padding-small-horizontal); + :first-child { + line-height: $bs-height-sm; + width: $bs-height-sm; + font-size: 1.4em; + } + } + &.btn-xs { + padding-left: ($bs-height-xs + $padding-small-horizontal); + :first-child { + line-height: $bs-height-xs; + width: $bs-height-xs; + font-size: 1.2em; + } + } +} + +.btn-social-icon { + @extend .btn-social; + height: ($bs-height-base + 2); + width: ($bs-height-base + 2); + padding: 0; + :first-child { + border: none; + text-align: center; + width: 100%!important; + } + &.btn-lg { + height: $bs-height-lg; + width: $bs-height-lg; + padding-left: 0; + padding-right: 0; + } + &.btn-sm { + height: ($bs-height-sm + 2); + width: ($bs-height-sm + 2); + padding-left: 0; + padding-right: 0; + } + &.btn-xs { + height: ($bs-height-xs + 2); + width: ($bs-height-xs + 2); + padding-left: 0; + padding-right: 0; + } +} + +@mixin btn-social($color-bg, $color: #fff) { + background-color: $color-bg; + @include button-variant($color, $color-bg, rgba(0,0,0,.2)); +} + + +.btn-adn { @include btn-social(#d87a68); } +.btn-bitbucket { @include btn-social(#205081); } +.btn-dropbox { @include btn-social(#1087dd); } +.btn-facebook { @include btn-social(#3b5998); } +.btn-flickr { @include btn-social(#ff0084); } +.btn-foursquare { @include btn-social(#f94877); } +.btn-github { @include btn-social(#444444); } +.btn-google-plus { @include btn-social(#dd4b39); } +.btn-instagram { @include btn-social(#3f729b); } +.btn-linkedin { @include btn-social(#007bb6); } +.btn-microsoft { @include btn-social(#2672ec); } +.btn-openid { @include btn-social(#f7931e); } +.btn-pinterest { @include btn-social(#cb2027); } +.btn-reddit { @include btn-social(#eff7ff, #000); } +.btn-soundcloud { @include btn-social(#ff5500); } +.btn-tumblr { @include btn-social(#2c4762); } +.btn-twitter { @include btn-social(#55acee); } +.btn-vimeo { @include btn-social(#1ab7ea); } +.btn-vk { @include btn-social(#587ea3); } +.btn-yahoo { @include btn-social(#720e9e); } diff --git a/vendor/bootstrap/css/bootstrap.css b/vendor/bootstrap/css/bootstrap.css new file mode 100644 index 0000000..6167622 --- /dev/null +++ b/vendor/bootstrap/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-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; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]: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; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +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: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.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; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +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; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .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, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-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 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-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 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-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 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-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.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > 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-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > 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-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.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; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.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; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.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; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > 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 > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + 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; + max-width: 100%; + 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; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-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,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + 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"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + 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], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.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, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.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 .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.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, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.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.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.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.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled: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.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.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.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.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.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.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.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.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: #23527c; + 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: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.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; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.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.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.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-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.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 { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .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 + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-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-top-left-radius: 0; + border-bottom-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:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.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, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].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, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].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; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="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 > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + 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 > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + 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: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + 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: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a: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 { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.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: #337ab7; +} +.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 { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + 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; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@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; + -webkit-box-shadow: none; + 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; + } +} +.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, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .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; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand: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: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.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; +} +@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-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.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; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a: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: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.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: #777; +} +.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.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + 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: #777; + 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; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.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: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.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, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-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-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.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, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + 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: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.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, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > 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 > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.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; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + 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, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/vendor/bootstrap/css/bootstrap.min.css b/vendor/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/vendor/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-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}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;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;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-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,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.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}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{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,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{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;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.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:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.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{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-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-top-left-radius:0;border-bottom-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:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.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,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{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{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@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;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;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,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.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;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.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.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{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:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-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-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.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,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>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>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.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;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);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,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot b/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot differ diff --git a/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg b/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf b/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf differ diff --git a/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff b/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff differ diff --git a/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/vendor/bootstrap/js/bootstrap.js b/vendor/bootstrap/js/bootstrap.js new file mode 100644 index 0000000..8a2e99a --- /dev/null +++ b/vendor/bootstrap/js/bootstrap.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + 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 || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(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() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + 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 activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + 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('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[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 in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(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 && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.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) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + 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 use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/vendor/bootstrap/js/bootstrap.min.js b/vendor/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/vendor/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/vendor/datatables-plugins/dataTables.bootstrap.css b/vendor/datatables-plugins/dataTables.bootstrap.css new file mode 100644 index 0000000..f65e264 --- /dev/null +++ b/vendor/datatables-plugins/dataTables.bootstrap.css @@ -0,0 +1,314 @@ +div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_length select { + width: 75px; + display: inline-block; +} + +div.dataTables_filter { + text-align: right; +} + +div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; +} + +div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} + +div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +@media screen and (max-width: 767px) { + div.dataTables_length, + div.dataTables_filter, + div.dataTables_info, + div.dataTables_paginate { + text-align: center; + } +} + + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} + +table.dataTable thead .sorting { background: url('../images/sort_both.png') no-repeat center right; } +table.dataTable thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } +table.dataTable thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } + +table.dataTable thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } +table.dataTable thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } + +table.dataTable thead > tr > th { + padding-left: 18px; + padding-right: 18px; +} + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column + width calculations when using scrolling impossible to align columns. We have + to use separate + */ +table.table-bordered.dataTable { + border-collapse: separate !important; +} +table.table-bordered thead th, +table.table-bordered thead td { + border-left-width: 0; + border-top-width: 0; +} +table.table-bordered tbody th, +table.table-bordered tbody td { + border-left-width: 0; + border-bottom-width: 0; +} +table.table-bordered th:last-child, +table.table-bordered td:last-child { + border-right-width: 0; +} +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + + + + +/* + * TableTools styles + */ +.table.dataTable tbody tr.active td, +.table.dataTable tbody tr.active th { + background-color: #08C; + color: white; +} + +.table.dataTable tbody tr.active:hover td, +.table.dataTable tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table.dataTable tbody tr.active th > a, +.table.dataTable tbody tr.active td > a { + color: white; +} + +.table-striped.dataTable tbody tr.active:nth-child(odd) td, +.table-striped.dataTable tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ +div.DTTT_print_info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + height: 150px; + margin-left: -200px; + margin-top: -75px; + text-align: center; + color: #333; + padding: 10px 30px; + opacity: 0.95; + + background-color: white; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 60px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + padding-bottom: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); + background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); +} + + + +/* + * FixedColumns styles + */ +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; + margin-bottom: 0; +} + +div.DTFC_RightHeadWrapper table , +div.DTFC_LeftHeadWrapper table { + border-bottom: none !important; + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; + margin-top: 0 !important; +} + + +/* + * FixedHeader styles + */ +div.FixedHeader_Cloned table { + margin: 0 !important +} + diff --git a/vendor/datatables-plugins/dataTables.bootstrap.js b/vendor/datatables-plugins/dataTables.bootstrap.js new file mode 100644 index 0000000..2c6959d --- /dev/null +++ b/vendor/datatables-plugins/dataTables.bootstrap.js @@ -0,0 +1,186 @@ +/*! DataTables Bootstrap 3 integration + * ©2011-2014 SpryMedia Ltd - datatables.net/license + */ + +/** + * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and + * DataTables 1.10 or newer. + * + * This file sets the defaults and adds options to DataTables to style its + * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap + * for further information. + */ +(function(window, document, undefined){ + +var factory = function( $, DataTable ) { +"use strict"; + + +/* Set the defaults for DataTables initialisation */ +$.extend( true, DataTable.defaults, { + dom: + "<'row'<'col-sm-6'l><'col-sm-6'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-6'i><'col-sm-6'p>>", + renderer: 'bootstrap' +} ); + + +/* Default class modification */ +$.extend( DataTable.ext.classes, { + sWrapper: "dataTables_wrapper form-inline dt-bootstrap", + sFilterInput: "form-control input-sm", + sLengthSelect: "form-control input-sm" +} ); + + +/* Bootstrap paging button renderer */ +DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { + var api = new DataTable.Api( settings ); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var btnDisplay, btnClass; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + e.preventDefault(); + if ( !$(e.currentTarget).hasClass('disabled') ) { + api.page( e.data.action ).draw( false ); + } + }; + + for ( i=0, ien=buttons.length ; i 0 ? + '' : ' disabled'); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + 'active' : ''; + break; + } + + if ( btnDisplay ) { + node = $('
  • ', { + 'class': classes.sPageButton+' '+btnClass, + 'aria-controls': settings.sTableId, + 'tabindex': settings.iTabIndex, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .append( $('', { + 'href': '#' + } ) + .html( btnDisplay ) + ) + .appendTo( container ); + + settings.oApi._fnBindAction( + node, {action: button}, clickHandler + ); + } + } + } + }; + + attach( + $(host).empty().html('