From 6237ada8f119dcb07b6bab730a547bb4eb968adc Mon Sep 17 00:00:00 2001 From: Lewis Ardern Date: Sat, 29 Mar 2014 21:35:53 +0000 Subject: [PATCH] initial commit --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 2 + Gemfile | 3 + LICENSE | 21 + README.md | 124 + filecreator.rb | 52 + lib/.DS_Store | Bin 0 -> 12292 bytes lib/commandui/.DS_Store | Bin 0 -> 6148 bytes lib/commandui/Logo/.DS_Store | Bin 0 -> 6148 bytes lib/commandui/Logo/logo.txt | 6 + lib/templates/.DS_Store | Bin 0 -> 6148 bytes lib/templates/report.erb | 33 + lib/templates/vagrantbase.erb | 64 + lib/tests/checkifequal.rb | 63 + lib/xml/.DS_Store | Bin 0 -> 6148 bytes lib/xml/bases.xml | 9 + lib/xml/boxes.xml | 10 + lib/xml/networks.xml | 5 + lib/xml/vulns.xml | 88 + mount/.DS_Store | Bin 0 -> 15364 bytes mount/files/.DS_Store | Bin 0 -> 12292 bytes mount/files/shell/copyvsftpd.sh | 13 + mount/files/shell/startvsftpd.sh | 3 + mount/files/shell/vsftpd-2.3.4.tar.gz | Bin 0 -> 187043 bytes mount/files/web/.DS_Store | Bin 0 -> 6148 bytes mount/files/web/commandinjection/.DS_Store | Bin 0 -> 6148 bytes .../web/commandinjection/list-filter.php | 16 + .../web/commandinjection/list-filter2.php | 16 + mount/files/web/commandinjection/list.php | 16 + mount/files/web/sqlinjection/.DS_Store | Bin 0 -> 6148 bytes mount/files/web/sqlinjection/blog.php | 118 + .../web/sqlinjection/static/css/boostrap.css | 6805 +++++++++++++++++ mount/puppet/.DS_Store | Bin 0 -> 15364 bytes mount/puppet/manifests/.webserver.pp.swp | Bin 0 -> 12288 bytes mount/puppet/manifests/cleanup.pp | 1 + mount/puppet/manifests/commandinjection.pp | 16 + mount/puppet/manifests/default.pp | 44 + mount/puppet/manifests/distcc.pp | 1 + mount/puppet/manifests/ftp.pp | 8 + mount/puppet/manifests/ftpbackdoor.pp | 1 + mount/puppet/manifests/nfs.pp | 1 + mount/puppet/manifests/samba.pp | 33 + mount/puppet/manifests/sqlinjection.pp | 27 + mount/puppet/manifests/webserver.pp | 6 + mount/puppet/manifests/writeableshadow.pp | 1 + mount/puppet/modules/.DS_Store | Bin 0 -> 15364 bytes mount/puppet/modules/apache | 1 + mount/puppet/modules/archive | 1 + .../modules/cleanup/manifests/config.pp | 35 + mount/puppet/modules/concat | 1 + .../puppet/modules/distcc/manifests/config.pp | 23 + .../modules/distcc/templates/distcc.erb | 24 + mount/puppet/modules/mysql | 1 + mount/puppet/modules/nfslewis/.DS_Store | Bin 0 -> 6148 bytes .../modules/nfslewis/manifests/config.pp | 25 + .../modules/nfslewis/templates/exports.erb | 11 + mount/puppet/modules/samba | 1 + mount/puppet/modules/stdlib | 1 + mount/puppet/modules/vsftpd | 1 + .../vsftpdbackdoor/manifests/install.pp | 46 + .../puppet/modules/writeableshadow/.DS_Store | Bin 0 -> 6148 bytes .../writeableshadow/manifests/config.pp | 9 + mount/scripts/bootstrap.sh | 25 + mount/ssh-keys/kali-1.0 | 27 + mount/ssh-keys/kali-1.0.pub | 1 + securitysimulator.rb | 81 + system.rb | 228 + systemreader.rb | 48 + vagrant.rb | 9 + 69 files changed, 8205 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 filecreator.rb create mode 100644 lib/.DS_Store create mode 100644 lib/commandui/.DS_Store create mode 100644 lib/commandui/Logo/.DS_Store create mode 100644 lib/commandui/Logo/logo.txt create mode 100644 lib/templates/.DS_Store create mode 100644 lib/templates/report.erb create mode 100644 lib/templates/vagrantbase.erb create mode 100644 lib/tests/checkifequal.rb create mode 100644 lib/xml/.DS_Store create mode 100644 lib/xml/bases.xml create mode 100644 lib/xml/boxes.xml create mode 100644 lib/xml/networks.xml create mode 100644 lib/xml/vulns.xml create mode 100644 mount/.DS_Store create mode 100644 mount/files/.DS_Store create mode 100755 mount/files/shell/copyvsftpd.sh create mode 100755 mount/files/shell/startvsftpd.sh create mode 100644 mount/files/shell/vsftpd-2.3.4.tar.gz create mode 100644 mount/files/web/.DS_Store create mode 100644 mount/files/web/commandinjection/.DS_Store create mode 100644 mount/files/web/commandinjection/list-filter.php create mode 100644 mount/files/web/commandinjection/list-filter2.php create mode 100644 mount/files/web/commandinjection/list.php create mode 100644 mount/files/web/sqlinjection/.DS_Store create mode 100644 mount/files/web/sqlinjection/blog.php create mode 100644 mount/files/web/sqlinjection/static/css/boostrap.css create mode 100644 mount/puppet/.DS_Store create mode 100644 mount/puppet/manifests/.webserver.pp.swp create mode 100644 mount/puppet/manifests/cleanup.pp create mode 100644 mount/puppet/manifests/commandinjection.pp create mode 100644 mount/puppet/manifests/default.pp create mode 100644 mount/puppet/manifests/distcc.pp create mode 100644 mount/puppet/manifests/ftp.pp create mode 100644 mount/puppet/manifests/ftpbackdoor.pp create mode 100644 mount/puppet/manifests/nfs.pp create mode 100644 mount/puppet/manifests/samba.pp create mode 100644 mount/puppet/manifests/sqlinjection.pp create mode 100644 mount/puppet/manifests/webserver.pp create mode 100644 mount/puppet/manifests/writeableshadow.pp create mode 100644 mount/puppet/modules/.DS_Store create mode 160000 mount/puppet/modules/apache create mode 160000 mount/puppet/modules/archive create mode 100644 mount/puppet/modules/cleanup/manifests/config.pp create mode 160000 mount/puppet/modules/concat create mode 100644 mount/puppet/modules/distcc/manifests/config.pp create mode 100644 mount/puppet/modules/distcc/templates/distcc.erb create mode 160000 mount/puppet/modules/mysql create mode 100644 mount/puppet/modules/nfslewis/.DS_Store create mode 100644 mount/puppet/modules/nfslewis/manifests/config.pp create mode 100644 mount/puppet/modules/nfslewis/templates/exports.erb create mode 160000 mount/puppet/modules/samba create mode 160000 mount/puppet/modules/stdlib create mode 160000 mount/puppet/modules/vsftpd create mode 100644 mount/puppet/modules/vsftpdbackdoor/manifests/install.pp create mode 100644 mount/puppet/modules/writeableshadow/.DS_Store create mode 100644 mount/puppet/modules/writeableshadow/manifests/config.pp create mode 100644 mount/scripts/bootstrap.sh create mode 100644 mount/ssh-keys/kali-1.0 create mode 100644 mount/ssh-keys/kali-1.0.pub create mode 100644 securitysimulator.rb create mode 100644 system.rb create mode 100644 systemreader.rb create mode 100644 vagrant.rb diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b72f241135e027405f63c851c6c11382d8797c1b GIT binary patch literal 6148 zcmeHLKX21O6n~ed)ZvemflA%5m>8lcQ4ugOgpl%QKtfGLhX%EF91fx=ik zi|QC+IhQ#qD9#E{un(_aZ+HFScurF@bOdw+{>BLK*)39)`s7lWIlphVD{0x#Z?&8# z>=GSxKK_(TIkFr2&WW<|Aay5vh}m$7?oyA2^aNvi)VuHbUEA|*NcbAMgL36i5?VwH z&~eGmX?qefcVu(e_f579UU8d7!UYeQY+ntqgGeWn)>HThOv5v9Rp3psoR4N+hPSMk19RVGI|1Sc3KbRJvjG=HQ!3uc0tbFfk_~M}{9YvQS?rLXHl; zDb-0d64bShfQ~>m0t-pE%0B3Bi+*x&=L5jA|Q&bcB_dcske1*as1YrC_5-j qtQRLJO;D-lST^`6=KmEWL1uCT*iaZJ2o6a95RhTem5#t4jleGvF8>h# literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c85139842 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +projects/** +unusedcode diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..26a4f1477 --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "nokogiri" diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0c3f75c58 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Lewis Ardern + +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 new file mode 100644 index 000000000..6706d0bf5 --- /dev/null +++ b/README.md @@ -0,0 +1,124 @@ + +Security-Simulator +== + +Summary +-- + +Security Simulator is a ruby application developed by Lewis Ardern for his Final Year Project that uses virtualization software to automatically create vulnerable virtual machines so students can learn security penetration testing techniques. + +Boxes like Metasploitable2 are always the same, this project uses Vagrant, Puppet, and Ruby to create vulnerable virtual machines quickly that can be used for learning or CTF events. + +Requirements +-- +For now you will need to install the following: + +Vagrant: http://www.vagrantup.com/ + +Ruby: https://www.ruby-lang.org/en/ + +Nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html + +Puppet is not required on your local machine, the boxes that you use will need to have puppet installed on them the main box used has been from puppetlabs: http://puppet-vagrant-boxes.puppetlabs.com/centos-59-x64-vbox4210.box + +Testing +-- +While creatng this application I used the following: + + OSx Version 10.8.5 + Vagrant 1.5.0 + nokogiri (1.6.1) + ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.5.0] + basebox = puppettest - http://puppet-vagrant-boxes.puppetlabs.com/centos-59-x64-vbox4210.box + +It should work on most linux distros but if there are any problems contact me. + +Usage +-- +ruby securitysimulator.rb -r + +This will create you a new project in /projects/Project and will create a Vagrant File / Report for you to view and see what has been installed, this will also give you a feel for how Vagrant spins up virtual machines. + +Puppet +-- + +mount/puppet/module +contains all currently useable puppet module some self-created some taken from https://forge.puppetlabs.com/ + +mount/puppet/manifests +contains all the includes and modifications that are used to create vulnerabilities e.g + +include nfslewis::config + +which includes all of the class information of nfslewis and config.pp + +to learn more about puppet and understand the code check out http://puppetlabs.com/ + +Boxes +-- +by default the 'system machines' are specified to boxes.xml you will need to modify this file to create a new system e.g. + +each system must be incremented by system3, system4, etc to work. Each vulnerability must match a type from vulns.xml or be blank or you will be returned an error. + +Networking +-- +by default the networking is specified in networks.xml you will need to modify the range to you want. Each network is set to a range e.g: + + +You can modify this to whatever range you desire and vagrant will build it. + +An example of how the program sets up the ip range for each system: + +System1 + + homeonly1 = 172.16.0.10 + homeonly2 = 172.17.0.10 + +System2 + + homeonly1 = 172.16.0.20 + homeonly2 = 172.17.0.20 + +The reason why is in lib/templates/vagrantbase.erb it appends the system number along with a 0 at the end to remove the issue of system1 being on the .1 network. + +Bases +-- +Currently the only tested base is puppettest, however any debian system should work if it has puppet installed, you can add new bases to bases.xml by following the current structure. + +Vulnerabilities +-- +Vulnerabilities are specified in vulns.xml, these are the 'useable' vulnerabilities currently, so when specifing vulnerabilities in boxes.xml you must use from this list or leave the name blank. current automated vulnerabilities are: + + ftp + commandinjection + nfs + samba + writeableshadow + distcc + ftpbackdoor + sqlinjection + +Kali +-- +A Kali image is built with every project, this is very slow and can be tedious, if you already have your own hack lab then you can remove this from vagrantbase.erb, but you will need to modify your IP address so it is on the network range, or modify networks.xml. + +Mount +-- +the mount file contains all of the puppet information, ssh keys for the default kali image, along with files to be transfered during the installation phase, this is mounted to each machine but removed once the installation has completed. + +Cleanup +-- +After each system is installed, the systems will clean up after itself. + + Removes internet access to each host + unmounting the /mount/ + clober files to all look like they were installed in 2006 + change vagrant password + +Contributing +-- +If you like the idea of Security Simulator, you are more than welcome to contribute to the project. + +Contact +-- +If you need to reach me my email is: lewisardern [at] live.co.uk diff --git a/filecreator.rb b/filecreator.rb new file mode 100644 index 000000000..a73c5ad48 --- /dev/null +++ b/filecreator.rb @@ -0,0 +1,52 @@ +require 'erb' +require_relative 'system.rb' + + +VAGRANT_TEMPLATE_FILE = "#{ROOT_DIR}/lib/templates/vagrantbase.erb" +REPORT_TEMPLATE_FILE = "#{ROOT_DIR}/lib/templates/report.erb" + +PROJECTS_DIR = "#{ROOT_DIR}/projects" + +class FileCreator +# Creates project directory, uses .erb files to create a report and the vagrant file that will be used +# to create the virtual machines + def initialize(systems) + @systems = systems + end + def generate(system) + Dir::mkdir("#{PROJECTS_DIR}") unless File.exists?("#{PROJECTS_DIR}") + + count = Dir["#{PROJECTS_DIR}/*"].length + build_number = count.next + + p "the system is now creating the Project#{build_number}" + Dir::mkdir("#{PROJECTS_DIR}/Project#{build_number}") unless File.exists?("#{PROJECTS_DIR}/#{build_number}") + + controller = ERBController.new + controller.systems = system + vagrant_template = ERB.new(File.read(VAGRANT_TEMPLATE_FILE)) + p "#{PROJECTS_DIR}/Project#{build_number}/VagrantFile file has been created" + File.open("#{PROJECTS_DIR}/Project#{build_number}/VagrantFile", 'w') { |file| file.write(vagrant_template.result(controller.get_binding)) } + + + report_template = ERB.new(File.read(REPORT_TEMPLATE_FILE)) + p "#{PROJECTS_DIR}/Project#{build_number}/Report file has been created" + File.open("#{PROJECTS_DIR}/Project#{build_number}/Report", 'w'){ |file| file.write(report_template.result(controller.get_binding)) } + + return build_number + end + +end + + +class ERBController + +# ERB Controller initializes the system and returns the binding when mapping .erb files + attr_accessor :systems + def initialize + @systems = [] + end + def get_binding + return binding + end +end \ No newline at end of file diff --git a/lib/.DS_Store b/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..18965f3e16b92f071150bd478b4937e17c19426e GIT binary patch literal 12292 zcmeHM&2JJx6n_I$mRJ)mCY;Rbi32fgYN`hhgrKpWn$V<)tse{90C8anyObsrCH@Wm z8^*+|e}p$<;?D zn}kAos{ssi_nN7u5@!VHhZW#ea zU@Z}#`@zIYvZCcwNqKc(BU1pB861`c`?DY2%BuO^DU?oL{i&x5G2;Qm}+r$Mr$a^?EJTs+9+Dgv|EA zMRuw0@3>)Z#Rs$`ZjA-EF^@mQ?bcaw8{1Hn+n74a?bWvu>6lfB+Xru6p$+koV71`( zCst8zD=T6xal4`T#MY0lc(aQELfX(u?|(j};8E>jg$df|%1rXj!ZDtu77XNl5k${Z z>JeHLXR?s-vh^H#Ql;SpkEXj6;1g=X0kqY>eF*g?=DVklrXGq?SN!%v6Qb?l>r)(G z_=GNuB~6qrc{}NOmJW{$$IUt;kXD;7Q2u{s_3!`d3=!|05%}*B5Sd!NR>f`3zacO0 zm~w3s>l3V0$Zo2nbisy9Xk4b_C>MViV&Bxdik4F)QG?~&e+c-^1mldpg!1!Wvds-6 izz8q`i~u9R2rvSS03*N%FanGKBftnS0*t_UA@CjiR=1V_ literal 0 HcmV?d00001 diff --git a/lib/commandui/.DS_Store b/lib/commandui/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..be4e61cccd58b76f2e58aec9e6eaa17ade7c4b65 GIT binary patch literal 6148 zcmeHK!Ab)$5KY>uyQt8M;BoP4ku8dP@URpW1rI_CJ*enzS8QQvq`S3;T3!4G|HHrW zcj}uYEok*7B4q|9Z+0@1G%qE|2q9#xA6JDa3n3gRVZlZ7jZi=7j1;V=1e7$!X`)(D zq9T0LfGq!?0ouEgI1@_T3H4?Fj?uRXmE*Bq$TTh*r1y58-=h1ZlV-mEE(^ud!s3$S zy3WdFv(t^$pr-oWIK8O1)u7&qZ=7Mg2YokZo4W$y;mo~cDiL>@~ zd3`vn?)nw4>W?bkuKQ{n5yE9Jl=HtZi%^oHWA6(bIFTf2ff7J8D_AIDr=! z(`CeID~T{81y7w1^<3~ky>Eur$5jm2QaXh8-xcUO)Ai&N?T$`TRBLRj{d;L=LSu>ka}i} zV`rAOLXo!cke&_~GBC(3Gr$adW}s+3%XI%A{apWlPU0_SfEk!824v~5epthj?A+=na&F;&Ox26d3v{Ml4;$>rgH5dt?9ui@8B~Ap8)}G;qTV{3!z;EBI2X literal 0 HcmV?d00001 diff --git a/lib/commandui/Logo/.DS_Store b/lib/commandui/Logo/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3345165c215a819a03ccfd3a565fa9193e5aedd4 GIT binary patch literal 6148 zcmeHKyGjH>5Ukb<7ECTQoX|+{4~F9ujQs&Q1(StMPB7f)zRN#5s~?ERY9uC74b?T% z)4g+B!S*!(+q^#C0BZmP;f#a3rTMvIVP_RFGQnqDV~;oN@5kwBk^OzZYX^*&@Irj4 z-;L9bXa2+Ph%3U5M|znQkOERb3P=Gd@EZlZ_tJ)oWO*qd1*E{I0{(qygmW*RljGAt z7b5_9#c&wcF-wq}2gtp6PG*E=SxU}Qs}aMpobgt9y?9Q}a#-BV=hV$s6N<&{jJHUK z^<;S|AO%hpIM40c`~NNR!~B0*q@5Iy0{=<@TWue<8@^KY*2T+tuWiI5;W_Vw8`n`n n7wwoF?U);H$Cr_mdCk{6@5OU+lrtXXWc?X%U1U<=uNC+JG?^ET literal 0 HcmV?d00001 diff --git a/lib/commandui/Logo/logo.txt b/lib/commandui/Logo/logo.txt new file mode 100644 index 000000000..9d45a97a7 --- /dev/null +++ b/lib/commandui/Logo/logo.txt @@ -0,0 +1,6 @@ + ______________________________________________________________________________ +| | +| Security Simulator | +| Created By Lewis Ardern | +| Leeds Met Final Year Project | +|______________________________________________________________________________| \ No newline at end of file diff --git a/lib/templates/.DS_Store b/lib/templates/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2ee34ff66ed9c1fa7ec34b34646a7439d6b61b4c GIT binary patch literal 6148 zcmeHKyH3ME5S)b+ktmXq@=7Ws{=kX?5;Z>nhKMF25|7mG_-vScfUpb&4F#H&cIR%r z#3Wvm?Gaq!Kegs?>nH2a71>ON=6ddXR literal 0 HcmV?d00001 diff --git a/lib/templates/report.erb b/lib/templates/report.erb new file mode 100644 index 000000000..8acd11924 --- /dev/null +++ b/lib/templates/report.erb @@ -0,0 +1,33 @@ +This document has been automated for build +<%if systems.count == 1%> +There was only 1 system generated for this project. +<%else %> +There were <%systems.count%> systems generated for this project. +<%end%> + + The module files for puppet can be found here: "<%=ROOT_DIR%>/mount/puppet/modules" + The manifest files for puppet can be found here: "<%=ROOT_DIR%>/mount/puppet/manifests" + +<% systems.each do |s| %> + +<%=s.id%> uses <%=s.basebox%> a distro of <%=s.os%> which can be downloaded from <%=s.url%> + + <% s.vulns.each do |v| %> +Here is a summary of the vulnerability <%=v.type%>: + Type: <%=v.type%> + Details: <%= v.details %> + privilege: <%= v.privilege %> + access: <%= v.access %> + <%if not v.cve == ""%> + cve: <%= v.cve %> + <% end %> + <% v.puppets.each do |p| %> + Puppet "<%=p%>.pp" has been used to create these vulnerabiliies + <% end %> + <% v.ports.each do |port| %> + Web server runs on port <%=port%> + <% end %> + <% end %> + +<% end %> + diff --git a/lib/templates/vagrantbase.erb b/lib/templates/vagrantbase.erb new file mode 100644 index 000000000..028dda2d1 --- /dev/null +++ b/lib/templates/vagrantbase.erb @@ -0,0 +1,64 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! +VAGRANTFILE_API_VERSION = "2" + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| +<% systems.each do |s| %> + + config.vm.define "<%=s.id%>" do |<%=s.id%>| + <%=s.id%>.vm.box = "<%=s.basebox%>" + <%=s.id%>.vm.box_url = "<%=s.url%>" + <% s.networks.each do |n| %> + <%grab_system_number = s.id.gsub(/[^0-9]/i, "") %> + <% n.range[9..9] = grab_system_number %> + <%=s.id%>.vm.network :public_network + <%=s.id%>.vm.network :private_network, :ip => "<%=n.range%>0" + <% end %> + <%=s.id%>.vm.synced_folder "<%=MOUNT_DIR%>", "/mount" + end + + config.vm.provision :shell, :inline => "apt-get update --fix-missing" + + <%s.vulns.each do |v|%> + <%v.puppets.each do |p|%> + config.vm.provision "puppet" do |<%=p%>| + <%=p%>.module_path = "<%=ROOT_DIR%>/mount/puppet/modules" + <%=p%>.manifests_path = "<%=ROOT_DIR%>/mount/puppet/manifests" + + <%=p%>.manifest_file = "<%=p%>.pp" + <% end %> + <% end %> + end + config.vm.provision "puppet" do |cleanup| + cleanup.module_path = "<%=ROOT_DIR%>/mount/puppet/modules" + cleanup.manifests_path = "<%=ROOT_DIR%>/mount/puppet/manifests" + + cleanup.manifest_file = "cleanup.pp" + + end + + # clean up script which clears history and clobs files together + + config.vm.provision :shell, :inline => "history -c && history -w" + config.vm.provision :shell, :inline => "umount /mount/" +<% end %> + config.vm.define "kali" do | kali | + + kali.ssh.private_key_path = "<%=ROOT_DIR%>/mount/ssh-keys/kali-1.0" + kali.ssh.username = "root" + + kali.vm.box = "kali-1.0.4-amd64" + kali.vm.box_url = "http://ftp.sliim-projects.eu/boxes/kali-linux-1.0.4-amd64.box" + + kali.vm.network :public_network + kali.vm.network :private_network, ip: "172.16.0.4" + + kali.vm.provider "virtualbox" do |v| + v.gui = true + v.customize ["modifyvm", :id, "--memory", 1024] + v.customize ["modifyvm", :id, "--macaddress3", "0800276cf835"] + end + end +end diff --git a/lib/tests/checkifequal.rb b/lib/tests/checkifequal.rb new file mode 100644 index 000000000..88df45b3c --- /dev/null +++ b/lib/tests/checkifequal.rb @@ -0,0 +1,63 @@ +require "test/unit" +require 'nokogiri' +require_relative "../../system.rb" +#http://ruby-doc.org/stdlib-2.0.0/libdoc/test/unit/rdoc/Test/Unit/Assertions.html + +class TestXMLIsEqual < Test::Unit::TestCase + + def setup + @vulns = [] + + @systems = [] + doc = Nokogiri::XML(File.read(BOXES_DIR)) + doc.xpath("//systems/system").each do |system| + id = system["id"] + os = system["os"] + base = system["basebox"] + vulns = system.css('vulnerabilities vulnerability').collect do |v| + Vulnerability.new(v[:type],v[:privilege],v[:access],v[:puppet],v[:details]) + end + networks = system.css('networks network').collect { |n| n['name'] } + + @systems << System.new(id, os, base, vulns, networks) + end + end + + def test_system_data + assert_equal(@systems[0].id, "system1") + assert_equal(@systems[1].id, "system2") + assert_equal(@systems[2].id, "system3") + end + + + def test_intersection + list1 = [Vulnerability.new("nfs","root", "remote","", ""), Vulnerability.new("ftp","root", "remote","", "")] + list2 = [Vulnerability.new("nfs","root", "remote","", ""), Vulnerability.new("samba","root", "remote","", ""), ] + p ilist = list1 & list2 + + end + + def test_system_vulnerabilities + dummy_list = [] + + empty_type = Vulnerability.new("","root", "remote","", "") + + valid_type = Vulnerability.new("ftp","root", "remote","", "") + + invalid_type = Vulnerability.new("THISISFAKE","root", "remote","", "") + + valid_type = Vulnerability.new("nfs","root", "remote","", "") + valid_type1 = Vulnerability.new("nfs","root", "remote","", "") + + + if empty_type.type == "" + p empty_type + vuln = generate_vulnerability(empty_type,Conf.vulnerabilities,dummy_list) + assert_not_match(vuln,"") + end + end + + def test_system_networks + # + end +end \ No newline at end of file diff --git a/lib/xml/.DS_Store b/lib/xml/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + + + + + + + + diff --git a/lib/xml/boxes.xml b/lib/xml/boxes.xml new file mode 100644 index 000000000..4ac1d505a --- /dev/null +++ b/lib/xml/boxes.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/lib/xml/networks.xml b/lib/xml/networks.xml new file mode 100644 index 000000000..2a5c9f0e4 --- /dev/null +++ b/lib/xml/networks.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/lib/xml/vulns.xml b/lib/xml/vulns.xml new file mode 100644 index 000000000..39840a0b1 --- /dev/null +++ b/lib/xml/vulns.xml @@ -0,0 +1,88 @@ + + + + ftp + + + + + 80 + + + commandinjection + + + + + nfs + + + + + samba + + + + + writeableshadow + + + + + distcc + + + + + ftpbackdoor + + + + + 80 + + + sqlinjection + + + diff --git a/mount/.DS_Store b/mount/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..266eefd8ecea4accfb3075a2249ebfa85cd4d252 GIT binary patch literal 15364 zcmeHMTWl0n82?9P-9Om{Xrvs-S( z28g~G!9-uwL=>LX#Kg#xm+&TuBt}ELz379+czH4L$rt?3nQ58XT}(*4g`AU|^Us|B z|L4s4&Uen4{|o?NU(x6SNC1FDnMrLL6;%?`vs{s4LCr#vNd5rscH7BjY$sD;D=Gv6 z0s(=5KtLcM5cq!}KzlYzlIlxQ3IqfK0)Z(6*!qy5%w#f<6Tak22NgU7AX!V*Jkd49 z0o*4M$YdZVe92wunSS(ufhz_f2Kw%#PcUgg0)a{dSnOU0!(f38W+Z-R6KN~uwp%=L*N|mq%*_Xp{yUkxZMj}&=NA~OsjaJT zkYrh!Hkh_@hBMaZ6my1qsDH#6>$eOuqZgj!*PiYb-9Ej*HG6b#gf#qmz;SH49t^D0 zmf?*IY4KC1y1Lf3Csuckw|9Cg`Dl=j!-S@Kt1H4NI6fV4=J@dH7Y7V+i!Q0F$ z_gm!4>V`C}=$d;?ateG>c+>wJcadMtDY?%eQ5!>Z~oIYyaY@Dghm=jl(L4%&T%Q2YV(5^}{*DQ#u z>LI4tTrjCLB#Boi?pKuomtITL1H)yliZXDF=Bnn(zU%T8in`C%Gp4N>vhTL4Q&H0; z9~*5)P}$w2sQYP-jMB@wL0wO;sy@Y<-Ko3Y?!1|!SGrDZZ`k-qqZ(KH?$kv|I>5X( z8HQ;rNw(2QQd*Mi^e<%kI+zO`^er#|gESNJZ~~r#=ivfegje7SybbTd2k5O}`nwnc?b29d9*fcewWy2UI6K9Z55l)>+YH(sk_;_ujo9a*XQ3oeO+VZ}#v-Sk#!<1QKb`!qj zE>tiRR?m;)>4qK0^C+I`f*_vjlY!lYFS$GUad(pbY5qU{GeE@u!6}r8|L^Lo>7I)J t*$fm(ARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5V#i+_!IaxH|+ob literal 0 HcmV?d00001 diff --git a/mount/files/.DS_Store b/mount/files/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4ffcee3c671276719a1ace31da7a31e4f7eefe08 GIT binary patch literal 12292 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

So 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 + + + + + + + + + + + +

+ + + + + + + + + diff --git a/mount/files/web/sqlinjection/static/css/boostrap.css b/mount/files/web/sqlinjection/static/css/boostrap.css new file mode 100644 index 000000000..4c5a81f03 --- /dev/null +++ b/mount/files/web/sqlinjection/static/css/boostrap.css @@ -0,0 +1,6805 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input, +select[multiple], +textarea { + background-image: none; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-warning { + color: #c09853; +} + +.text-danger { + color: #b94a48; +} + +.text-success { + color: #468847; +} + +.text-info { + color: #3a87ad; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +h1, +.h1 { + font-size: 36px; +} + +h2, +.h2 { + font-size: 30px; +} + +h3, +.h3 { + font-size: 24px; +} + +h4, +.h4 { + font-size: 18px; +} + +h5, +.h5 { + font-size: 14px; +} + +h6, +.h6 { + font-size: 12px; +} + +h1 small, +.h1 small { + font-size: 24px; +} + +h2 small, +.h2 small { + font-size: 18px; +} + +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 0; +} + +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-12 { + width: 100%; +} + +@media (min-width: 768px) { + .container { + max-width: 750px; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 992px) { + .container { + max-width: 970px; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table thead > tr > th, +.table tbody > tr > th, +.table tfoot > tr > th, +.table thead > tr > td, +.table tbody > tr > td, +.table tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.table caption + thead tr:first-child th, +.table colgroup + thead tr:first-child th, +.table thead:first-child tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed thead > tr > th, +.table-condensed tbody > tr > th, +.table-condensed tfoot > tr > th, +.table-condensed thead > tr > td, +.table-condensed tbody > tr > td, +.table-condensed tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; +} + +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} + +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; + border-color: #eed3d7; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} + +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} + +@media (max-width: 768px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > thead > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > thead > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + padding-top: 7px; + margin-bottom: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-briefcase:before { + content: "\1f4bc"; +} + +.glyphicon-calendar:before { + content: "\1f4c5"; +} + +.glyphicon-pushpin:before { + content: "\1f4cc"; +} + +.glyphicon-paperclip:before { + content: "\1f4ce"; +} + +.glyphicon-camera:before { + content: "\1f4f7"; +} + +.glyphicon-lock:before { + content: "\1f512"; +} + +.glyphicon-bell:before { + content: "\1f514"; +} + +.glyphicon-bookmark:before { + content: "\1f516"; +} + +.glyphicon-fire:before { + content: "\1f525"; +} + +.glyphicon-wrench:before { + content: "\1f527"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open > .dropdown-menu { + display: block; +} + +.open > a { + outline: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group > .btn { + float: none; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 45px; + line-height: 45px; +} + +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} + +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav > li { + position: relative; + display: block; +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} + +.nav-tabs.nav-justified > li { + float: none; +} + +.nav-tabs.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 5px; +} + +.nav-pills > li + li { + margin-left: 2px; +} + +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified > li { + float: none; +} + +.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + z-index: 1030; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} + +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav { + margin: 7.5px -15px; +} + +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} + +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} + +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} + +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e6e6e6; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; +} + +.breadcrumb > li + li:before { + padding: 0 5px; + color: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination > li { + display: inline; +} + +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} + +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #428bca; +} + +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: bold; +} + +.alert > p, +.alert > ul { + margin-bottom: 0; +} + +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.alert-warning hr { + border-top-color: #f8e5be; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger hr { + border-top-color: #e6c1c7; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table { + margin-bottom: 0; +} + +.panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #fbeed5; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} + +.panel-danger { + border-color: #eed3d7; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 15px; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + right: auto; + left: 50%; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} + +.carousel-control .icon-prev:before { + content: '\2039'; +} + +.carousel-control .icon-next:before { + content: '\203a'; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} + +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.visible-xs { + display: none !important; +} + +tr.visible-xs { + display: none !important; +} + +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm { + display: none !important; +} + +tr.visible-sm { + display: none !important; +} + +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md { + display: none !important; +} + +tr.visible-md { + display: none !important; +} + +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg { + display: none !important; +} + +tr.visible-lg { + display: none !important; +} + +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + tr.hidden-xs { + display: none !important; + } + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm { + display: none !important; + } + tr.hidden-xs.hidden-sm { + display: none !important; + } + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md { + display: none !important; + } + tr.hidden-xs.hidden-md { + display: none !important; + } + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg { + display: none !important; + } + tr.hidden-xs.hidden-lg { + display: none !important; + } + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs { + display: none !important; + } + tr.hidden-sm.hidden-xs { + display: none !important; + } + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + tr.hidden-sm { + display: none !important; + } + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md { + display: none !important; + } + tr.hidden-sm.hidden-md { + display: none !important; + } + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg { + display: none !important; + } + tr.hidden-sm.hidden-lg { + display: none !important; + } + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs { + display: none !important; + } + tr.hidden-md.hidden-xs { + display: none !important; + } + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm { + display: none !important; + } + tr.hidden-md.hidden-sm { + display: none !important; + } + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + tr.hidden-md { + display: none !important; + } + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg { + display: none !important; + } + tr.hidden-md.hidden-lg { + display: none !important; + } + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs { + display: none !important; + } + tr.hidden-lg.hidden-xs { + display: none !important; + } + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm { + display: none !important; + } + tr.hidden-lg.hidden-sm { + display: none !important; + } + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md { + display: none !important; + } + tr.hidden-lg.hidden-md { + display: none !important; + } + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + tr.hidden-lg { + display: none !important; + } + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +tr.visible-print { + display: none !important; +} + +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } + tr.hidden-print { + display: none !important; + } + th.hidden-print, + td.hidden-print { + display: none !important; + } +} diff --git a/mount/puppet/.DS_Store b/mount/puppet/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e370859bed7e76f75f1681f55d0b41e7a7b2c626 GIT binary patch literal 15364 zcmeI1TWl0n7{|Zww6wFkr3^(_Zpum(3zXV|+%Imoi8myMcu9`QyXOcPJ z*>k?{oHM^U|Cu>w0RUq;wGJQx01}Ny;EGo zaR-dLR-}S}ATW^tU%LmO7Zk{Ve)al2ZKO=o;A)$s+UTx}r_J6zx4n(KC->?#8ynS} zod!5RGWLw)J4su;rurAW`g*SJaf~-sO2almg&Y`s+aWbz^`#6mMK!Oc`V8H&YimD8 zR#ZHtq*Mw7q_RZ2o>9$#n3>C{R#&{o9Ej_xmQu3&oxH8sIV+}QothTK?x7kd-%1=P zpYXifb=B@k%HhGm&`>~<0`im6%!M@@wzVpQ4-OrB zh!2*YNZykRrnpmZJ@c&*3FEySIb&tlkzl+h;2`snU<`^>yz^Iv|^-lhGJ{=h7s3~ zYF2yNG;+NetHaig*u13EGP8DrQ`n(XEH6vSa?aBBXcVaTYmF3c$rzAcoI2~aJD088 zxOr#mX!$gGdc}-ju#;|3#?}w%TDEO~bKj>}X)UAbneO&}-O^Kr)|ydzwdq(L2#l78 zXU~~CFBJ51O{mmYld1CdRQa4l5ep)>FPs+&`9*Z`h=#02sVYgM<%{mBTD-)+gI0?! zPgZ!tHFww6Ef4w*rS&k)McLwmUbTA7+I2zSA+#AvN;70NK;3V;H(DR_cWv)?@0GlR zJ8#*#ZTk#==MK_uFTu6AZ_}>kmfijs4sZ-R70Yh!(=vqaBC%-O+g=`;7wXL4heCvs zw2w#CtE#3}MyvQt2B?hIx|smI?&m-az1&+NLF(;;2jB#pgi|mAr{Q@x1Lxpfcn>~+ zkKkkY1TMiC`~bhe6+~oMgk@NP^YIR>#X4M$>#-hpU>rNJ6T2{h8Xm?R4&iZp1Rur6 z@Dx6UPvZ;t3ZB8&@GQQK=ka~~6ffad_%&X}@9;HU~^a{Tguk44QwOZ z#I~|#*2a?TAXC_3X0svp5?Ef(2i)KJlpUj7p)#$0@7Yuon^bp+^8Npm?!KJrs_mAU zvlc9>S+!})uD#=P!x7ijB5-E7J0+bdoS$+9GvpejjXJWNPg9ZRymq8;qU0x#T*_4} zjfP2*mGk|jBLk@>%!Rnrf5ys;^i6GX6|V3XtX$-%HOwWr-d`*76i0tyF29EBjI7vE zbeM#9-;V3FR^kXWOp@CZzs@B{j?TjE9s2@H{VzcZ+?cwagO}kfyaN~DB76v+!ME@; z{EmPnDC2CLi?`x!xB#oL2G?K|W7vR=*hJdePpaxh9q%V?*?5$cbplV~2tJNa;Awmo zU&7b%9KL~X;#+tDFM8^_jNjlGevd!lZ;akEYzix3rA%hCScFxvC9Ik)V>N6w>5Qwa zh3#gYjJ_B6F|Mzq`#Ya9m2w68n&eAkg2#lfi~^5qzA%nE%ZLJx{&+THn3-#hXVFh(-kRU3k9vN?u64pG&Iu>$?&kmPe+G#4|DXGA yV*Nk*e_a1_{fR>m5CjAPK|l}?1Ox#=KoAfF1OY)n5D)|e0YN|z5Cs041pWZH8HJDl literal 0 HcmV?d00001 diff --git a/mount/puppet/manifests/.webserver.pp.swp b/mount/puppet/manifests/.webserver.pp.swp new file mode 100644 index 0000000000000000000000000000000000000000..2aedab45b2a623fbc0a1c09bb436ff7bfd8841e3 GIT binary patch literal 12288 zcmeI&zi-qq6bEo0BN9IZ6ALnQ$kN0|D@1h?427i1LFX2a|V`C`#Mtbo%dGE#kY|&*geRp)spJn@uj=PL~+sWoHs|S;><%CuG ztZb#rwQIuNt;g$-*QUo(9UAi?edA1486~T6!R2oa#Vez_S~tEGbFDg8`gJ-l>#maC zI8mFf@xpf2YA+*Ib#oRGq#`z|Njr~|6lGfc13YX@s>hRe5ahx6oz6&5o@mDp0Q*IKmY;| zfB*y_009U<00I#B2Le1CES~vAKXRV5oh@v#xg5{WU+|B-qtClJ{YvV!v^LC=UA}Ur zv%jv!X~Hjd`(}CRw4#s3OWpo#7n@n>i&!QKQ)|&T6!n^(Op|125SQ{^nPyq8Vhyzk zYY^HiLAg(Lpr&t+{Zohef%Gxh`EoUpe5 literal 0 HcmV?d00001 diff --git a/mount/puppet/manifests/cleanup.pp b/mount/puppet/manifests/cleanup.pp new file mode 100644 index 000000000..38a7e228a --- /dev/null +++ b/mount/puppet/manifests/cleanup.pp @@ -0,0 +1 @@ +include cleanup::config \ No newline at end of file diff --git a/mount/puppet/manifests/commandinjection.pp b/mount/puppet/manifests/commandinjection.pp new file mode 100644 index 000000000..adefc2da2 --- /dev/null +++ b/mount/puppet/manifests/commandinjection.pp @@ -0,0 +1,16 @@ + class { 'apache': mpm_module => 'prefork' } + apache::vhost { 'localhost': + port => '80', + docroot => '/var/www/commandinjection', + } +include apache::mod::php +package { ['php5', 'libapache2-mod-php5']: + ensure => installed, + notify => Service["apache2"] + } + +file { "/var/www/commandinjection": + ensure => directory, + recurse => true, + source => "/mount/files/web/commandinjection/" +} diff --git a/mount/puppet/manifests/default.pp b/mount/puppet/manifests/default.pp new file mode 100644 index 000000000..c6878008a --- /dev/null +++ b/mount/puppet/manifests/default.pp @@ -0,0 +1,44 @@ +class { 'vsftpd': + anonymous_enable => 'YES', + write_enable => 'YES', + ftpd_banner => 'Marmotte FTP Server', + chroot_local_user => 'YES', +} + +include vsftpd + +class { 'samba::server': + workgroup => 'EXAMPLE', + server_string => 'Example File Server 01', + netbios_name => 'F01', + interfaces => [ 'lo', 'eth0' ], + hosts_allow => [ '127.', '192.168.' ], + local_master => 'yes', + map_to_guest => 'Bad User', + os_level => '50', + preferred_master => 'yes', + extra_global_options => [ + 'printing = BSD', + 'printcap name = /dev/null', + ], + shares => { + 'homes' => [ + 'comment = Home Directories', + 'browseable = no', + 'writable = yes', + ], + 'pictures' => [ + 'comment = Pictures', + 'path = /srv/pictures', + 'browseable = yes', + 'writable = yes', + 'guest ok = yes', + 'available = yes', + ], + }, + selinux_enable_home_dirs => true, +} + +include samba::server + +include nfslewis::config diff --git a/mount/puppet/manifests/distcc.pp b/mount/puppet/manifests/distcc.pp new file mode 100644 index 000000000..f4a0967d8 --- /dev/null +++ b/mount/puppet/manifests/distcc.pp @@ -0,0 +1 @@ +include distcc::config \ No newline at end of file diff --git a/mount/puppet/manifests/ftp.pp b/mount/puppet/manifests/ftp.pp new file mode 100644 index 000000000..de7ecdaef --- /dev/null +++ b/mount/puppet/manifests/ftp.pp @@ -0,0 +1,8 @@ +class { 'vsftpd': + anonymous_enable => 'YES', + write_enable => 'YES', + ftpd_banner => 'Marmotte FTP Server', + chroot_local_user => 'YES', +} + +include vsftpd \ No newline at end of file diff --git a/mount/puppet/manifests/ftpbackdoor.pp b/mount/puppet/manifests/ftpbackdoor.pp new file mode 100644 index 000000000..e28968771 --- /dev/null +++ b/mount/puppet/manifests/ftpbackdoor.pp @@ -0,0 +1 @@ +include vsftpdbackdoor::install \ No newline at end of file diff --git a/mount/puppet/manifests/nfs.pp b/mount/puppet/manifests/nfs.pp new file mode 100644 index 000000000..cfbeb0a40 --- /dev/null +++ b/mount/puppet/manifests/nfs.pp @@ -0,0 +1 @@ +include nfslewis::config \ No newline at end of file diff --git a/mount/puppet/manifests/samba.pp b/mount/puppet/manifests/samba.pp new file mode 100644 index 000000000..062eb7275 --- /dev/null +++ b/mount/puppet/manifests/samba.pp @@ -0,0 +1,33 @@ +class { 'samba::server': + workgroup => 'EXAMPLE', + server_string => 'Example File Server 01', + netbios_name => 'F01', + interfaces => [ 'lo', 'eth0' ], + hosts_allow => [ '127.', '192.168.' ], + local_master => 'yes', + map_to_guest => 'Bad User', + os_level => '50', + preferred_master => 'yes', + extra_global_options => [ + 'printing = BSD', + 'printcap name = /dev/null', + ], + shares => { + 'homes' => [ + 'comment = Home Directories', + 'browseable = no', + 'writable = yes', + ], + 'pictures' => [ + 'comment = Pictures', + 'path = /srv/pictures', + 'browseable = yes', + 'writable = yes', + 'guest ok = yes', + 'available = yes', + ], + }, + selinux_enable_home_dirs => true, +} + +include samba::server \ No newline at end of file diff --git a/mount/puppet/manifests/sqlinjection.pp b/mount/puppet/manifests/sqlinjection.pp new file mode 100644 index 000000000..f2b90e113 --- /dev/null +++ b/mount/puppet/manifests/sqlinjection.pp @@ -0,0 +1,27 @@ + class { 'apache': mpm_module => 'prefork' } + apache::vhost { 'localhost': + port => '80', + docroot => '/var/www/sqlinjection', + } +include apache::mod::php +package { ['php5', 'libapache2-mod-php5']: + ensure => installed, + notify => Service["apache2"] + } + + class { '::mysql::server': + root_password => 'strongpassword', + override_options => { 'mysqld' => { 'max_connections' => '1024' } } + +} + mysql_database { 'flag': + ensure => 'present', + charset => 'latin1', + collate => 'latin1_swedish_ci', +} + +file { "/var/www/sqlinjection": + ensure => directory, + recurse => true, + source => "/mount/files/web/sqlinjection/" +} diff --git a/mount/puppet/manifests/webserver.pp b/mount/puppet/manifests/webserver.pp new file mode 100644 index 000000000..9944f55b6 --- /dev/null +++ b/mount/puppet/manifests/webserver.pp @@ -0,0 +1,6 @@ + class { 'apache': } + apache::vhost { 'first.example.com': + port => '80', + docroot => '/var/www/commandinjection', + } + diff --git a/mount/puppet/manifests/writeableshadow.pp b/mount/puppet/manifests/writeableshadow.pp new file mode 100644 index 000000000..8120fae64 --- /dev/null +++ b/mount/puppet/manifests/writeableshadow.pp @@ -0,0 +1 @@ +include writeableshadow::config \ No newline at end of file diff --git a/mount/puppet/modules/.DS_Store b/mount/puppet/modules/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d33fe3f250ba7e5798423baad97e0b927dd9a3b9 GIT binary patch literal 15364 zcmeHMTWl0n82_B5ekjR zfkZ$eAQ6xVNCYGTcLM@6XR||5eJQUJ0f~S_U<3g+KBVbnvMrFqzT`s(UHB4!WDOPb zgYIb^z8~CzaK&JWfxbKG)6AS?TOfyh>AM5^?tnqd7_3l`w@!X( zZVuSyOL>(DNCYYoU~BgT=#Zx~8(F`f&*W{(^_rT##j5I>+Qb+onN-I1bXz&Y8Ekio zIm6xC+3yT?T85d?3s3WVPxp#$yI$a$?Yh@b8h+p9I5yq)1lHY_;q~`wbw`gjH?L?+ zFKZfVOdoA-TCuD#y|SfsXeg;DN$oXd>YOF3H+AX9hK@fs>_?Bm2ms?E*_?=`V()M6 z%sK;kZdd>F>vR2?X%`u#|%DRu1nNgb(PZBofH2e;)t%gMP3g+_S>4VSZQV21*> zHLd8HJ4|x4N@fSSyBa2ycg9VdHGAH|CCgT>zA}D-HgVGARB8|5ob#+c%Pj01Wbp0Q z-K?22tla+YlI2<%+w98e1Lj0*OeVS4^g1=wV^E!29fSE9+6Bee)Yqx%UZz=JFzIS2 z3U^39pr*Q93QN-i!}$%VRM$c3a?K4YU9>o*?zHucX=_H(cU#(&QoBn&HrnQ(uw`;e z-9`8hP|$8r*1AenpJB~z(Oqv_-po-*Ur^g?);>C3ty9~}c|`M5l-`Vya{LFJY0a!;B)vAF2QB^8h(Ud;WxMj zzr%F|M65y;HJpT#aSGmtb8sHc#|B)A%W);P;wo&%CvXdH#V4^F_o0p%Jcvi|7!Kia zd-ZL)#<%eteu$s=Ayt)Gy3v0wU-47A6J9vmEd?89RXbu?*fC|pf5pNd#`)Zv zGIbg!W9yoABRv}F#xR*UgM5l`>XfO$*(vbx%JjM!GiTKkp@?DTp=h_4>7b2aoL0Cs zQB>6w&Kl-CzkwdBh}XV$(PA~FRde<-EhDB@%X!KkTb8F%S`BA1dtCJ}X%n2V>~U>9 zX@OYI9+C}eN=g1ZuAPB*;bYFTZ{R!l34Vb;;4flWg4k7uGl^UG<7`}ji?9(N#3jV8 zRrm<5#x=MRHxb7+6U%lI$9Cf$+=~YGVLw`U09`ENARfZQcmkit7w|>m+$nq&-@r2w zwmnwnnJ@8dlx+h}M~6}LvH%xPT|LdM1U3#h#x3>v{?M4Z@FJ@~@Go^1a<-G(Pvz_l z7(>%afln+Jl)w~5WcX@YrA179kvd``j93UUCfcYGiX#g)jSM>Epa^*}j_SWFEn?#k z>WGa)un^+#ziSf|heI)BDH2bJqV|InMIq>8Vu>g4>h;kw$Gf3bPP9ZXXpcqy>k`HKGNP)DRcwOdM~bmn9itZB&JI$ zY=n;S7j_jkkpZNZI!!0iWI!+H$oex>EF^%n^`bT=^pI~%&>^i5?wI#ky9xg87{ntB zGU0#(g%HxTE$5<+H-fs<^HDXcSFHF(Sn+xxu(@g9zeJ(+(Tkl2Y#sU)gjk{G z8dY{n`(qPr@JAjogM9zXL-*ensOBt zr0Lv8Cp(zkurIj_U6=_guVIoN*mgYMrlGQt(U$Jpn4aXYFX@hsJN{=tu*R3`e}=xW ze!ubQ8TxDrZ4V3cs9gVxJ1LP}1_7(PZT-)BULFzwiGV~vA|Mfv2uK7Z0uljn+a literal 0 HcmV?d00001 diff --git a/mount/puppet/modules/apache b/mount/puppet/modules/apache new file mode 160000 index 000000000..208005d03 --- /dev/null +++ b/mount/puppet/modules/apache @@ -0,0 +1 @@ +Subproject commit 208005d038b0044b3a387cbc23e7e1e8caf3d101 diff --git a/mount/puppet/modules/archive b/mount/puppet/modules/archive new file mode 160000 index 000000000..f4c7c9785 --- /dev/null +++ b/mount/puppet/modules/archive @@ -0,0 +1 @@ +Subproject commit f4c7c97856674e109b80b35ea419811a0f3b5160 diff --git a/mount/puppet/modules/cleanup/manifests/config.pp b/mount/puppet/modules/cleanup/manifests/config.pp new file mode 100644 index 000000000..067ad26b2 --- /dev/null +++ b/mount/puppet/modules/cleanup/manifests/config.pp @@ -0,0 +1,35 @@ + class cleanup::config { +# removes bash history + exec { "rm": + command => "rm -rf .bash_history", + path => "/bin/", + } +# finds every file and modifies with date may 2006 + exec { "find": + command => "find / -exec touch -d '17 May 2006 14:16' {} \\;", + path => "/usr/bin/", + } +# disables eth1 which runs the public network for each vulnerable machine +# vagrant runs over 10.0 for eth0 .. eth1 for public .. and eth2 for private. + + exec { "ifconfig": + command => "ifconfig eth1 down", + path => "/sbin/", + } +# changes default vagrant password, would kind of be pointless if they could just ssh to vagrant/vagrant :P + + user { 'vagrant': + password => 'superdupersecurepassword', + } + + # or you can remove the user entierly, up to you 'but if you are playing around with vagrant might cause problems' + #use this option only when you are rolling out to users. + + # user { 'vagrant': + # uid => '444', + # gid => '444', + # ensure => 'absent', + # password => '!' + # } + +} \ No newline at end of file diff --git a/mount/puppet/modules/concat b/mount/puppet/modules/concat new file mode 160000 index 000000000..cd2e1d97e --- /dev/null +++ b/mount/puppet/modules/concat @@ -0,0 +1 @@ +Subproject commit cd2e1d97e94da67c184a3a121b4493898fabe4a8 diff --git a/mount/puppet/modules/distcc/manifests/config.pp b/mount/puppet/modules/distcc/manifests/config.pp new file mode 100644 index 000000000..74ae28408 --- /dev/null +++ b/mount/puppet/modules/distcc/manifests/config.pp @@ -0,0 +1,23 @@ +class distcc::config { + + package { 'distcc': + ensure => installed + } + + + file { '/etc/default/distcc': + require => Package['distcc'], + ensure => present, + owner => 'root', + group => 'root', + mode => '0777', + content => template('distcc/distcc.erb') + } + + + service { 'distcc': + ensure => running, +} +} + + diff --git a/mount/puppet/modules/distcc/templates/distcc.erb b/mount/puppet/modules/distcc/templates/distcc.erb new file mode 100644 index 000000000..8dec8ff78 --- /dev/null +++ b/mount/puppet/modules/distcc/templates/distcc.erb @@ -0,0 +1,24 @@ +# Defaults for distcc initscript +# sourced by /etc/init.d/distcc + +# +# should distcc be started on boot? +# + STARTDISTCC="true" + +#STARTDISTCC="false" + +# +# Which networks/hosts should be allowed to connect to the daemon? +# You can list multiple hosts/networks separated by spaces. +# Networks have to be in CIDR notation, f.e. 192.168.1.0/24 +# Hosts are represented by a single IP Adress +# +# ALLOWEDNETS="127.0.0.1" + + +ALLOWEDNETS="172.16.0.0/16 192.168.0.0/16 10.0.0.0/8" +# +# Which interface should distccd listen on? + + LISTENER="" diff --git a/mount/puppet/modules/mysql b/mount/puppet/modules/mysql new file mode 160000 index 000000000..97c4d4e28 --- /dev/null +++ b/mount/puppet/modules/mysql @@ -0,0 +1 @@ +Subproject commit 97c4d4e28240143289c14515539b57ce554a1746 diff --git a/mount/puppet/modules/nfslewis/.DS_Store b/mount/puppet/modules/nfslewis/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1197126ac182456bf5aa9c676ca2738aed157d7d GIT binary patch literal 6148 zcmeHKOHRZv47G<@%)n+AELipmbAxJBPB0e$T7FVHt<=uGM_|LAqi__C!m}NXS|v!V z03lm)Uh3G1^AaTu5%KO=ZHYESw1NsQ)+iDp?V^z^g5?~@+Q$RkQ%?i+RUdh~;V&{E zYqzF`Zs|bJG+Dp0zH8eW%bIGgAGiCmZ91FL;xg^kv_(-Jhmz?1<>O6#6GJs^^$oA? zX*!~8SL8KdyEW8Njr66CZ8uFjYM!Ufujx*bX-9n}(~i6nX)6z2I0MdrGw`bn$l(rI zT^M@l3^)VMz=;7lA2O(59&j|&qXUIL0f0-GRZ!QTGhikLU>8Ug~B>I`p?vzI5+gt8E^*X44m2LM(+RXuiyXkApdd(oPmGE z056MuvBQ+Y-5O0!?%E7`0~Ha!(eM<4ieAO=m8KLSdF7tX+s GGVlqQO installed + } + + + file { '/etc/exports': + require => Package['nfs-common'], + ensure => present, + owner => 'root', + group => 'root', + mode => '0777', + content => template('nfslewis/exports.erb') + } + + exec { "exportfs": + require => Package['nfs-common'], + command => "exportfs -a", + path => "/usr/sbin", + # path => [ "/usr/local/bin/", "/bin/" ], # alternative syntax + } +} + + diff --git a/mount/puppet/modules/nfslewis/templates/exports.erb b/mount/puppet/modules/nfslewis/templates/exports.erb new file mode 100644 index 000000000..12f34dc9c --- /dev/null +++ b/mount/puppet/modules/nfslewis/templates/exports.erb @@ -0,0 +1,11 @@ +# /etc/exports: the access control list for filesystems which may be exported +# to NFS clients. See exports(5). +# +# Example for NFSv2 and NFSv3: + / 172.0.0.0/8(rw,sync,no_subtree_check) + / 192.0.0.0/8(rw,sync,no_subtree_check) +# +# Example for NFSv4: +# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) +# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) +# diff --git a/mount/puppet/modules/samba b/mount/puppet/modules/samba new file mode 160000 index 000000000..3a768f245 --- /dev/null +++ b/mount/puppet/modules/samba @@ -0,0 +1 @@ +Subproject commit 3a768f245940a1123607577016918ee9e299dc99 diff --git a/mount/puppet/modules/stdlib b/mount/puppet/modules/stdlib new file mode 160000 index 000000000..a2f7202ec --- /dev/null +++ b/mount/puppet/modules/stdlib @@ -0,0 +1 @@ +Subproject commit a2f7202ec9f9a338b9cc75d76e2fd764fa8011b8 diff --git a/mount/puppet/modules/vsftpd b/mount/puppet/modules/vsftpd new file mode 160000 index 000000000..6da9a8ecc --- /dev/null +++ b/mount/puppet/modules/vsftpd @@ -0,0 +1 @@ +Subproject commit 6da9a8ecc499e54256d75cf9274324b7d9c95960 diff --git a/mount/puppet/modules/vsftpdbackdoor/manifests/install.pp b/mount/puppet/modules/vsftpdbackdoor/manifests/install.pp new file mode 100644 index 000000000..74bcbd770 --- /dev/null +++ b/mount/puppet/modules/vsftpdbackdoor/manifests/install.pp @@ -0,0 +1,46 @@ + #copies and unpacks vsftpd saves it to usr/local/sbin and executes it for startup + class vsftpdbackdoor::install { + exec { 'unzip-vsftpd': + command => 'tar xzf vsftpd-2.3.4.tar.gz && mv vsftpd-2.3.4 /home/vagrant/vsftpd-2.3.4', + path => '/bin', + cwd => "/mount/files/shell", + creates => "/home/vagrant/vsftpd-2.3.4/vsftpd", + notify => Exec['make-vsftpd'] + } + + exec { 'make-vsftpd': + command => '/usr/bin/make', + cwd => "/home/vagrant/vsftpd-2.3.4", + creates => "/home/vagrant/vsftpd-2.3.4/vsftpd", + notify => Exec['copy-vsftpd'], + require => Exec["unzip-vsftpd"], + } + + + exec { 'copy-vsftpd': + command => '/mount/files/shell/copyvsftpd.sh', + cwd => "/home/vagrant/vsftpd-2.3.4", + creates => "/usr/local/sbin/vsftpd", + notify => User['ftp'], + require => Exec["make-vsftpd"], + } + + user { 'ftp': + ensure => present, + uid => '507', + gid => 'root', + shell => '/bin/zsh', + home => '/var/ftp', + notify => Exec['start-vsftpd'], + require => Exec["copy-vsftpd"], + managehome => true, + } + + exec { 'start-vsftpd': + command => '/mount/files/shell/startvsftpd.sh', + require => User["ftp"], + } +} + + + diff --git a/mount/puppet/modules/writeableshadow/.DS_Store b/mount/puppet/modules/writeableshadow/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0184618bed347da79eb3d3a4193091567eb80c2f GIT binary patch literal 6148 zcmeHKOHRWu5S@V{6|w1(rLWK%SXFw0UI0k=NeQWxcJCu_1dhT{I0|n*pjLQ+SRjOE zB>Ro$f{5m5f-Fi!#9Vcqc<>pJb&fl_rHOVlbyH=czi5(oKc|7N z>4_fc;QibFW*mDgtLE7MIVgP2x zVh9U_Efr{~>{kr7bl8)}WyfM@>BN5dV1M$*<%Rud%t^zEvtjhXKrnF3z^M%vQvcWZ zC99YGeu05^=4LiQ literal 0 HcmV?d00001 diff --git a/mount/puppet/modules/writeableshadow/manifests/config.pp b/mount/puppet/modules/writeableshadow/manifests/config.pp new file mode 100644 index 000000000..5c430f2be --- /dev/null +++ b/mount/puppet/modules/writeableshadow/manifests/config.pp @@ -0,0 +1,9 @@ +class writeableshadow::config { + + file { '/etc/shadow': + ensure => present, + mode => '0777', + } + + +} diff --git a/mount/scripts/bootstrap.sh b/mount/scripts/bootstrap.sh new file mode 100644 index 000000000..27ba08a02 --- /dev/null +++ b/mount/scripts/bootstrap.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -e + +if [ "$EUID" -ne "0" ] ; then + echo "Script must be run as root." >&2 + exit 1 +fi + +if which puppet > /dev/null ; then + echo "Puppet is already installed" + exit 0 +fi + +echo "Installing Puppet repo for Ubuntu 12.04 LTS" +wget -qO /tmp/puppetlabs-release-precise.deb \ + +https://apt.puppetlabs.com/puppetlabs-release-precise.deb + +dpkg -i /tmp/puppetlabs-release-precise.deb +rm /tmp/puppetlabs-release-precise.deb +aptitude update +#aptitude upgrade -y +echo Installing puppet +aptitude install -y puppet +echo "Puppet installed!" diff --git a/mount/ssh-keys/kali-1.0 b/mount/ssh-keys/kali-1.0 new file mode 100644 index 000000000..ac5f2b084 --- /dev/null +++ b/mount/ssh-keys/kali-1.0 @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEArvBoa+yz0D6dHtssTftgC6vy1TdwoBqXcGEPGHdv7BnsXAo7 +cCCTDkDk+/2yAAEd/1EDFo11fqxrbA4KhHLchAQRCHr8xNQpmNladd7ElhSsQ1bx +AQbTAzu1Hb7IcxevE0VTDFmVlThsw6GWXe5lTYI8+pZXUpyrb/K8eUi/7hykI2vU +shrkfSaCmtnjRs6xdCkWS18MJR1zeRsJiSwPMCG40DPetiGBoQw4xtcUhXxjtecY +2mwoe2x7TZN0G+VkTQQUZkxL5SRunjKJCLFuruh//drCms3psfDGHPqkvPBHmGbM +vn1vDMgE9KHdJvbLq2o3/rZmIpvUab5/4Lt0+wIDAQABAoIBAHZt/FMr8GNHMDkm +aWz1g4UDSCa+HHnW5rTGkGCg4t00g4Wfy7NR6hwZJKvPiMRl/TfOUUfgRi2Wbja9 +nrMhy1V4J0vVbu+VLf/zDUGEqRNtNV11KzzlsM6cijVz5eG8o+Jo6RsQPqrBgyhB +aTl33Y7GX5/JTZ54v7rO2ndFH+IC1Gzb8UFj5bIcAD8MAvXdazIpSuEzpMKaHVY/ +cLGli/vIGKAcc9I5gCA4iTxNEc0n736gAJYD06SSAcxaK7VHBYwld5fMpeT7pBfT +o5FmWGdiNDOFr50acOfNHmMevJAO6KhmIU7XEohweeFaNiq9K6Nf/8k+1Vn1SQL3 +0CcYodECgYEA4/LorHCJVbAaQOzf+BwXjkhrXv6R5iFO7hvlxBkYfuOVr1u2lY0s +TD/otK2S335n59ptfcmNf2n+mfLGjtDRkJGDEl/aSL6xZ3dKctXStpV6dih3AH52 +4JtZdWQSWVaPN1CVoUDcezxYlv//3wtm4bAAfQ9yFQuCWaEMg3Qt3HMCgYEAxHeH +LaYyjC/lfEqhuSoOLx+BeHv92o72vo4GJz+VX+0/k1o002mQM6H6ka6uI5Pk2Sfm +/MgbZGhtJTbXcWeoeHALB3QI3FBn9GtwZud8F71TIRge+nlLlPbp0IEphWPgxKCo +6fXc6ClYko5YtENGhzxqLenAvR/JGlp1mgoTq1kCgYAp2W7eOcr88Ffhk5uK8Z1h +geo0hohCt9rF3FlSp0jYAvB4QV5EFqcLWLBge317irmI15FChr5zpgIYQXoyviO7 +ZvupY++va1Mmq7//VUJaQxc4mjU+4fjxQ5Qo+TZlMH8aqLDP6hiQh4O8NUPEr1M0 +HBv62dsYAgTsb6TcfXfuAQKBgQC1BnWVyEdXCGLpTVMKbAe5v8vqGkVjdss/9VkS +HPIj+1TTDxERo3jtOljIly15NrJsrOmXDULAF8BJw+hrY9nFb2eaLH5lkejXO4/M +IYsjzJymJ7WTkOPllEUIi5qYf9kBFA/P020CteYY0/RD1KFNxosHVxTyrjD8iVFG +5/YLsQKBgG7G9lMbzbXsdTvlJJm5sId0Nxdc97PezpC3IAdDCiqRwushbGV00n9W +tzg8udeocVh3KeL9btxIovSFKgGC1ONKbsYULuVQVGe0LMpqGr6IVjhoOEQzGaJA +a9CvKv9Qk2UPgtNBVpP4fhEhyTaHY8sWCSYXvKRhFlL4gH47P0tl +-----END RSA PRIVATE KEY----- diff --git a/mount/ssh-keys/kali-1.0.pub b/mount/ssh-keys/kali-1.0.pub new file mode 100644 index 000000000..f6d8b2e2c --- /dev/null +++ b/mount/ssh-keys/kali-1.0.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCu8Ghr7LPQPp0e2yxN+2ALq/LVN3CgGpdwYQ8Yd2/sGexcCjtwIJMOQOT7/bIAAR3/UQMWjXV+rGtsDgqEctyEBBEIevzE1CmY2Vp13sSWFKxDVvEBBtMDO7UdvshzF68TRVMMWZWVOGzDoZZd7mVNgjz6lldSnKtv8rx5SL/uHKQja9SyGuR9JoKa2eNGzrF0KRZLXwwlHXN5GwmJLA8wIbjQM962IYGhDDjG1xSFfGO15xjabCh7bHtNk3Qb5WRNBBRmTEvlJG6eMokIsW6u6H/92sKazemx8MYc+qS88EeYZsy+fW8MyAT0od0m9surajf+tmYim9Rpvn/gu3T7 sliim@S70wN diff --git a/securitysimulator.rb b/securitysimulator.rb new file mode 100644 index 000000000..08a203b52 --- /dev/null +++ b/securitysimulator.rb @@ -0,0 +1,81 @@ +# Security Simulator +# +# $Id$ +# +# $Revision$ +# +# This program allows you to use a large amount of virtual machines and install vulnerable software to create a learning environment. +# +# By: Lewis Ardern (Leeds Metropolitan University) + +require 'getoptlong' +require 'fileutils' +require_relative 'system.rb' +require_relative 'filecreator.rb' +require_relative 'systemreader.rb' +require_relative 'vagrant.rb' + +File.open('lib/commandui/logo/logo.txt', 'r') do |f1| + while line = f1.gets + puts line + end +end + + +def usage + puts 'Usage: + + run - creates virtual machines e.g run 10 + + kill - destoys current session + + ssh - creates a ssh session for specifiec box e.g ssh box1 + + All options options are: + --help -h: show + --run -r: run +' + exit +end + +def run + puts 'reading configuration file on how many virtual machines you want to create' + + puts 'creating vagrant file' + # uses nokogoiri to grab all the system information from boxes.xml + systems = SystemReader.new(BOXES_XML).systems + + # create's vagrant file / report a starts the vagrant installation' + create_files = FileCreator.new(systems) + build_number = create_files.generate(systems) + + vagrant = VagrantController.new + vagrant.vagrant_up(build_number) +end + +def config + usage +end + +opts = GetoptLong.new( + [ '--help', '-h', GetoptLong::NO_ARGUMENT ], + [ '--run', '-r', GetoptLong::NO_ARGUMENT ], + [ '--config', '-c', GetoptLong::NO_ARGUMENT ] +) + +opts.each do |opt, arg| + case opt + when '--help' + usage + when '--run' + run + when '--config' + #do a box count increment to next one + #create template config file! + config + end +end + + + + diff --git a/system.rb b/system.rb new file mode 100644 index 000000000..2983aedf6 --- /dev/null +++ b/system.rb @@ -0,0 +1,228 @@ +require 'nokogiri' +# assign constants +ROOT_DIR = File.dirname(__FILE__) + +BOXES_XML = "#{ROOT_DIR}/lib/xml/boxes.xml" +NETWORKS_XML = "#{ROOT_DIR}/lib/xml/networks.xml" +VULN_XML = "#{ROOT_DIR}/lib/xml/vulns.xml" +BASE_XML = "#{ROOT_DIR}/lib/xml/bases.xml" +MOUNT_DIR = "#{ROOT_DIR}/mount/" + +class System + # can access from outside of class + attr_accessor :id, :os, :url,:basebox, :networks, :vulns + + #initalizes system variables + def initialize(id, os, basebox, url, vulns=[], networks=[]) + @id = id + @os = os + @url = url + @basebox = basebox + @vulns = vulns + @networks = networks + end + + def is_valid_base + valid_base = Conf.bases + + valid_base.each do |b| + if @basebox == b.vagrantbase + @url = b.url + return true + end + end + return false + end +end + + +class Network + attr_accessor :name, :range + + def initialize(name="", range="") + @name = name + @range = range + end + + def id + hash = @name + @range + return hash + # return string that connects everything to 1 massive string + end + + def eql? other + # checks if name matches networks.xml from boxes.xml + other.kind_of?(self.class) && @name == other.name + end + + def hash + @type.hash + end +end + +class NetworkManager + # the user will either specify a blank network type or a knownnetwork type + def self.process(networks,valid_network) + new_networks = {} + # intersection of valid networks / user defined networks + legal_networks = valid_network & networks + networks.each do |network| + # checks to see string is blank if so valid network into a new hash map of vulnerabilities + if network.name == "" + random = valid_network.sample + new_networks[random.id] = random + else + has_found = false + # shuffle randomly selects first match + legal_networks.shuffle.each do |valid| + if network.name == valid.name + network.range = valid.range unless not network.range.empty? + # valid network into a new hash map of networks + new_networks[network.id] = network + has_found = true + break + end + end + if not has_found + p "Network was not found please check the xml boxes.xml" + exit + end + end + end + return new_networks.values + end +end + +class Basebox + attr_accessor :name, :os, :distro, :vagrantbase, :url +end + +class BaseManager + def self.generate_base(system,bases) + # takes a sample from bases.xml and then assigns it to system + box = bases.sample + system.basebox = box.vagrantbase + system.url = box.url + return system + end +end + +class Vulnerability + attr_accessor :type, :privilege, :access ,:puppets, :details, :ports, :cve + + def eql? other + # checks if type matches vulns.xml from boxes.xml + other.kind_of?(self.class) && @type == other.type + end + + def hash + @type.hash + end + + def initialize(type="", privilege="", access="", puppets=[], details="", ports=[], cve="") + @type = type + @privilege = privilege + @access = access + @puppets = puppets + @details = details + @ports = ports + @cve = cve + end + + def id + return @type + @privilege + @access + end + +end + +class VulnerabilityManager + # the user will either specify a blank vulnerability or will check it against vulns.xml and will append + # specific information to system if the system information is empty + def self.process(vulns,valid_vulns) + new_vulns = {} + + + legal_vulns = valid_vulns & vulns + vulns.each do |vuln| + + if vuln.type == "" + random = valid_vulns.sample + # valid vulnerability into a new hash map of vulnerabilities + new_vulns[random.id] = random + else + has_found = false + # shuffle randomly selects first match of ftp or nfs and then abandon + legal_vulns.shuffle.each do |valid| + if vuln.type == valid.type + vuln.puppets = valid.puppets unless not vuln.puppets.empty? + vuln.ports = valid.ports unless not vuln.ports.empty? + vuln.cve = valid.cve unless not vuln.cve.empty? + vuln.privilege = valid.privilege unless not vuln.privilege.empty? + vuln.access = valid.access unless not vuln.access.empty? + vuln.details = valid.details + # valid vulnerability into a new hash map of vulnerabilities + new_vulns[vuln.id] = vuln + has_found = true + break + end + end + if not has_found + STDERR.puts "vulnerability was not found please check the xml boxes.xml" + exit + end + end + end + return new_vulns.values + end + + #loop through vulns, fill in missing details if not enough info, choose one at random fill in vulns.. +end + +class Conf + # this class uses nokogiri to grab all of the information from network.xml, bases.xml, and vulns.xml + # then adds them to their specific class to do checking for legal in Manager.process + def self.networks + if defined? @@networks + return @@networks + end + return @@networks = self._get_list(NETWORKS_XML, "//networks/network", Network) + end + + def self.bases + if defined? @@bases + return @@bases + end + return @@bases = self._get_list(BASE_XML, "//bases/base", Basebox) + end + + def self.vulnerabilities + if defined? @@vulnerabilities + return @@vulnerabilities + end + return @@vulnerabilities = self._get_list(VULN_XML, "//vulnerabilities/vulnerability", Vulnerability) + end + + def self._get_list(xmlfile, xpath, cls) + itemlist = [] + + doc = Nokogiri::XML(File.read(xmlfile)) + doc.xpath(xpath).each do |item| + # new class e.g networks + obj = cls.new + # checks to see if there are children puppet and add string to obj.puppets + # move this to vulnerabilities class + if defined? obj.puppets + item.xpath("puppets/puppet").each { |c| obj.puppets << c.text.strip if not c.text.strip.empty? } + item.xpath("ports/port").each { |c| obj.ports << c.text.strip if not c.text.strip.empty? } + end + # too specific move to vuln class end + item.each do |attr, value| + + obj.send "#{attr}=", value + end + # vulnerability item + itemlist << obj + end + return itemlist + end +end \ No newline at end of file diff --git a/systemreader.rb b/systemreader.rb new file mode 100644 index 000000000..d032f3e51 --- /dev/null +++ b/systemreader.rb @@ -0,0 +1,48 @@ +require_relative 'system.rb' + +class SystemReader + + def initialize(systems_xml) + @systems_xml = systems_xml + end + + def systems + systems = [] + doc = Nokogiri::XML(File.read(@systems_xml)) + doc.xpath("//systems/system").each do |system| + id = system["id"] + os = system["os"] + basebox = system["basebox"] + url = system["url"] + vulns = [] + networks = [] + + system.css('vulnerabilities vulnerability').each do |v| + vulnerability = Vulnerability.new + vulnerability.privilege = v['privilege'] + vulnerability.cve = v['cve'] + vulnerability.access = v['access'] + vulnerability.type = v['type'] + vulns << vulnerability + end + + system.css('networks network').each do |n| + network = Network.new + network.name = n['name'] + networks << network + end + # vulns / networks are passed through to their manager and the program will create valid vulnerabilities / networks + # depending on what the user has specified these two will return valid vulns to be used in vagrant file creation. + new_vulns = VulnerabilityManager.process(vulns, Conf.vulnerabilities) + new_networks = NetworkManager.process(networks, Conf.networks) + + s = System.new(id, os, basebox, url, new_vulns, new_networks) + if s.is_valid_base == false + BaseManager.generate_base(s,Conf.bases) + end + + systems << s + end + return systems + end +end \ No newline at end of file diff --git a/vagrant.rb b/vagrant.rb new file mode 100644 index 000000000..62b140cf7 --- /dev/null +++ b/vagrant.rb @@ -0,0 +1,9 @@ +class VagrantController + + def vagrant_up(build_number) + #executes vagrant up from the current build. + p 'building now.....' + command = "cd #{PROJECTS_DIR}/Project#{build_number}/; vagrant up" + exec command + end +end \ No newline at end of file
+ + + + + +
+

Please enter your user ID so you can read/make blog posts + +

+

+

+ CHALLENGE TWO:
+

+       
+ + + + +
+ ' . mysql_error(). '
'); + + $num = mysql_numrows($result); + $i = 0; + + + while ($i < $num){ + $first = mysql_result($result,$i,'name'); + echo '
';  
+	echo 'ID : ' . $id . ' 
Flag : ' . $first .' '; + echo '
'; + + $i++; + + +} +} +?> + +
+