├── img ├── logo.png └── DOC_Tutorial_header.jpg ├── font-awesome ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── less │ ├── fixed-width.less │ ├── bordered-pulled.less │ ├── larger.less │ ├── list.less │ ├── font-awesome.less │ ├── core.less │ ├── stacked.less │ ├── rotated-flipped.less │ ├── path.less │ ├── animated.less │ ├── mixins.less │ ├── variables.less │ └── icons.less ├── scss │ ├── _fixed-width.scss │ ├── _bordered-pulled.scss │ ├── _larger.scss │ ├── _list.scss │ ├── font-awesome.scss │ ├── _core.scss │ ├── _stacked.scss │ ├── _rotated-flipped.scss │ ├── _path.scss │ ├── _animated.scss │ ├── _mixins.scss │ └── _variables.scss └── css │ ├── font-awesome.min.css │ └── font-awesome.css ├── fonts ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── css ├── parallax.css └── creative.css ├── js ├── parallax.js ├── cbpAnimatedHeader.js ├── creative.js └── bootstrap.min.js └── README.md /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/img/logo.png -------------------------------------------------------------------------------- /img/DOC_Tutorial_header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/img/DOC_Tutorial_header.jpg -------------------------------------------------------------------------------- /font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommerceDataService/tutorial_mapbox_part2/HEAD/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /font-awesome/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /css/parallax.css: -------------------------------------------------------------------------------- 1 | .scroll { 2 | /*Set a css background */ 3 | background:url(../img/DOC_Tutorial_header.jpg); 4 | 5 | /*Dont mind the rest*/ 6 | position:relative; 7 | height:130%; 8 | background-position:bottom; 9 | -webkit-background-size: cover; 10 | -moz-background-size: cover; 11 | background-repeat: no-repeat; 12 | 13 | text-align:center; 14 | color:#fff; 15 | font-family:'Open Sans' sans-serif; 16 | } 17 | -------------------------------------------------------------------------------- /font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /js/parallax.js: -------------------------------------------------------------------------------- 1 | //Parallax -- COVER 2 | function simpleParallax() { 3 | //This variable is storing the distance scrolled 4 | var scrolled = $(window).scrollTop() + 1; 5 | 6 | //Every element with the class "scroll" will have parallax background 7 | //Change the "0.3" for adjusting scroll speed. 8 | $('.scroll').css('background-position', '0' + -(scrolled * 0.05) + 'px'); 9 | } 10 | //Everytime we scroll, it will fire the function 11 | $(window).scroll(function (e) { 12 | simpleParallax(); 13 | }); 14 | -------------------------------------------------------------------------------- /font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /font-awesome/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /font-awesome/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /font-awesome/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /font-awesome/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /js/cbpAnimatedHeader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * cbpAnimatedHeader.js v1.0.0 3 | * http://www.codrops.com 4 | * 5 | * Licensed under the MIT license. 6 | * http://www.opensource.org/licenses/mit-license.php 7 | * 8 | * Copyright 2013, Codrops 9 | * http://www.codrops.com 10 | */ 11 | var cbpAnimatedHeader = (function() { 12 | 13 | var docElem = document.documentElement, 14 | header = document.querySelector( '.navbar-default' ), 15 | didScroll = false, 16 | changeHeaderOn = 300; 17 | 18 | function init() { 19 | window.addEventListener( 'scroll', function( event ) { 20 | if( !didScroll ) { 21 | didScroll = true; 22 | setTimeout( scrollPage, 250 ); 23 | } 24 | }, false ); 25 | } 26 | 27 | function scrollPage() { 28 | var sy = scrollY(); 29 | if ( sy >= changeHeaderOn ) { 30 | classie.add( header, 'navbar-shrink' ); 31 | } 32 | else { 33 | classie.remove( header, 'navbar-shrink' ); 34 | } 35 | didScroll = false; 36 | } 37 | 38 | function scrollY() { 39 | return window.pageYOffset || docElem.scrollTop; 40 | } 41 | 42 | init(); 43 | 44 | })(); -------------------------------------------------------------------------------- /font-awesome/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | 15 | .fa-icon-rotate(@degrees, @rotation) { 16 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 17 | -webkit-transform: rotate(@degrees); 18 | -ms-transform: rotate(@degrees); 19 | transform: rotate(@degrees); 20 | } 21 | 22 | .fa-icon-flip(@horiz, @vert, @rotation) { 23 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 24 | -webkit-transform: scale(@horiz, @vert); 25 | -ms-transform: scale(@horiz, @vert); 26 | transform: scale(@horiz, @vert); 27 | } 28 | -------------------------------------------------------------------------------- /font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | 15 | @mixin fa-icon-rotate($degrees, $rotation) { 16 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 17 | -webkit-transform: rotate($degrees); 18 | -ms-transform: rotate($degrees); 19 | transform: rotate($degrees); 20 | } 21 | 22 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 23 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 24 | -webkit-transform: scale($horiz, $vert); 25 | -ms-transform: scale($horiz, $vert); 26 | transform: scale($horiz, $vert); 27 | } 28 | -------------------------------------------------------------------------------- /js/creative.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - Creative Bootstrap Theme (http://startbootstrap.com) 3 | * Code licensed under the Apache License v2.0. 4 | * For details, see http://www.apache.org/licenses/LICENSE-2.0. 5 | */ 6 | 7 | (function($) { 8 | "use strict"; // Start of use strict 9 | 10 | // jQuery for page scrolling feature - requires jQuery Easing plugin 11 | $('a.page-scroll').bind('click', function(event) { 12 | var $anchor = $(this); 13 | $('html, body').stop().animate({ 14 | scrollTop: ($($anchor.attr('href')).offset().top - 50) 15 | }, 1250, 'easeInOutExpo'); 16 | event.preventDefault(); 17 | }); 18 | 19 | // Highlight the top nav as scrolling occurs 20 | $('body').scrollspy({ 21 | target: '.navbar-fixed-top', 22 | offset: 51 23 | }) 24 | 25 | // Closes the Responsive Menu on Menu Item Click 26 | $('.navbar-collapse ul li a').click(function() { 27 | $('.navbar-toggle:visible').click(); 28 | }); 29 | 30 | // Fit Text Plugin for Main Header 31 | $("h1").fitText( 32 | 1.2, { 33 | minFontSize: '35px', 34 | maxFontSize: '65px' 35 | } 36 | ); 37 | 38 | // Offset for Main Navigation 39 | $('#mainNav').affix({ 40 | offset: { 41 | top: 100 42 | } 43 | }) 44 | 45 | // Initialize WOW.js Scrolling Animations 46 | new WOW().init(); 47 | 48 | })(jQuery); // End of use strict 49 | -------------------------------------------------------------------------------- /css/creative.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | html, 4 | body { 5 | width: 100%; 6 | height: 100%; 7 | } 8 | 9 | 10 | 11 | hr { 12 | max-width: 50px; 13 | border-color: #002952; 14 | border-width: 3px; 15 | } 16 | 17 | hr.light { 18 | border-color: #fff; 19 | } 20 | 21 | a { 22 | color: #002952; 23 | -webkit-transition: all .35s; 24 | -moz-transition: all .35s; 25 | transition: all .35s; 26 | } 27 | 28 | a:hover, 29 | a:focus { 30 | color: #f; 31 | } 32 | 33 | h1, 34 | h2, 35 | h3, 36 | h4, 37 | h5, 38 | h6 { 39 | font-family: 'SourceSansProRegular','Open Sans','Helvetica Neue',Arial,sans-serif; 40 | } 41 | 42 | p { 43 | margin-bottom: 20px; 44 | font-size: 16px; 45 | line-height: 1.5; 46 | } 47 | 48 | .bg-primary { 49 | background-color: #002952; 50 | } 51 | 52 | .bg-dark { 53 | color: #fff; 54 | background-color: #222; 55 | } 56 | 57 | .text-faded { 58 | color: rgba(255,255,255,.7); 59 | } 60 | 61 | section.datacorps { 62 | padding: 100px 0; 63 | } 64 | 65 | aside { 66 | padding: 50px 0; 67 | } 68 | 69 | .no-padding { 70 | padding: 0; 71 | } 72 | 73 | .navbar-default { 74 | border-color: rgba(34,34,34,.05); 75 | font-family: "SourceSansProRegular",'Open Sans','Helvetica Neue',Arial,sans-serif; 76 | background-color: #fff; 77 | -webkit-transition: all .35s; 78 | -moz-transition: all .35s; 79 | transition: all .35s; 80 | } 81 | 82 | .navbar-default .navbar-header .navbar-brand { 83 | text-transform: uppercase; 84 | font-family: "SourceSansProRegular",'Open Sans','Helvetica Neue',Arial,sans-serif; 85 | font-weight: 700; 86 | color: #002952; 87 | } 88 | 89 | .navbar-default .navbar-header .navbar-brand:hover, 90 | .navbar-default .navbar-header .navbar-brand:focus { 91 | color: #eb3812; 92 | } 93 | 94 | .navbar-default .nav > li>a, 95 | .navbar-default .nav>li>a:focus { 96 | text-transform: uppercase; 97 | font-size: 13px; 98 | font-weight: 700; 99 | color: #222; 100 | } 101 | 102 | .navbar-default .nav > li>a:hover, 103 | .navbar-default .nav>li>a:focus:hover { 104 | color: #002952; 105 | } 106 | 107 | .navbar-default .nav > li.active>a, 108 | .navbar-default .nav>li.active>a:focus { 109 | color: #002952!important; 110 | background-color: transparent; 111 | } 112 | 113 | .navbar-default .nav > li.active>a:hover, 114 | .navbar-default .nav>li.active>a:focus:hover { 115 | background-color: transparent; 116 | } 117 | 118 | @media(min-width:768px) { 119 | .navbar-default { 120 | border-color: rgba(255,255,255,.3); 121 | background-color: black; 122 | } 123 | 124 | .navbar-default .navbar-header .navbar-brand { 125 | color: rgba(255,255,255,.7); 126 | } 127 | 128 | .navbar-default .navbar-header .navbar-brand:hover, 129 | .navbar-default .navbar-header .navbar-brand:focus { 130 | color: #fff; 131 | } 132 | 133 | .navbar-default .nav > li>a, 134 | .navbar-default .nav>li>a:focus { 135 | color: rgba(255,255,255,1); 136 | } 137 | 138 | .navbar-default .nav > li>a:hover, 139 | .navbar-default .nav>li>a:focus:hover { 140 | color: #fff; 141 | } 142 | 143 | .navbar-default.affix { 144 | border-color: rgba(34,34,34,.05); 145 | background-color: #fff; 146 | } 147 | 148 | .navbar-default.affix .navbar-header .navbar-brand { 149 | font-size: 14px; 150 | color: #002952; 151 | } 152 | 153 | .navbar-default.affix .navbar-header .navbar-brand:hover, 154 | .navbar-default.affix .navbar-header .navbar-brand:focus { 155 | color: #eb3812; 156 | } 157 | 158 | .navbar-default.affix .nav > li>a, 159 | .navbar-default.affix .nav>li>a:focus { 160 | color: #222; 161 | } 162 | 163 | .navbar-default.affix .nav > li>a:hover, 164 | .navbar-default.affix .nav>li>a:focus:hover { 165 | color: #002952; 166 | } 167 | } 168 | 169 | .backie { 170 | position: relative; 171 | 172 | height:120%; 173 | 174 | min-height: auto; 175 | 176 | text-align: center; 177 | color: #fff; 178 | background-image: url(../img/DOC_Tutorial_header.jpg); 179 | 180 | -webkit-background-size: cover; 181 | -moz-background-size: cover; 182 | background-size: cover; 183 | -o-background-size: cover; 184 | background-repeat: no-repeat; 185 | } 186 | 187 | 188 | 189 | header .header-content { 190 | position: relative; 191 | width: 100%; 192 | padding: 100px 15px; 193 | text-align: center; 194 | } 195 | 196 | header .header-content .header-content-inner h1 { 197 | margin-top: 0; 198 | margin-bottom: 0; 199 | text-transform: uppercase; 200 | font-weight: 700; 201 | } 202 | 203 | header .header-content .header-content-inner hr { 204 | margin: 30px auto; 205 | } 206 | 207 | header .header-content .header-content-inner p { 208 | margin-bottom: 50px; 209 | font-size: 16px; 210 | font-weight: 300; 211 | color: rgba(255,255,255,.7); 212 | } 213 | 214 | @media(min-width:768px) { 215 | header { 216 | min-height: 100%; 217 | } 218 | 219 | header .header-content { 220 | position: absolute; 221 | top: 50%; 222 | padding: 0 50px; 223 | -webkit-transform: translateY(-50%); 224 | -ms-transform: translateY(-50%); 225 | transform: translateY(-50%); 226 | } 227 | 228 | header .header-content .header-content-inner { 229 | margin-right: auto; 230 | margin-left: auto; 231 | max-width: 1000px; 232 | } 233 | 234 | header .header-content .header-content-inner p { 235 | margin-right: auto; 236 | margin-left: auto; 237 | max-width: 80%; 238 | font-size: 18px; 239 | } 240 | } 241 | 242 | .section-heading { 243 | margin-top: 0; 244 | } 245 | 246 | .service-box { 247 | margin: 50px auto 0; 248 | max-width: 400px; 249 | } 250 | 251 | @media(min-width:992px) { 252 | .service-box { 253 | margin: 20px auto 0; 254 | } 255 | } 256 | 257 | .service-box p { 258 | margin-bottom: 0; 259 | } 260 | 261 | .portfolio-box { 262 | display: block; 263 | position: relative; 264 | margin: 0 auto; 265 | max-width: 650px; 266 | } 267 | 268 | .portfolio-box .portfolio-box-caption { 269 | display: block; 270 | position: absolute; 271 | bottom: 0; 272 | width: 100%; 273 | height: 100%; 274 | text-align: center; 275 | color: #002952; 276 | opacity: 0; 277 | background: #B2D1FF; 278 | -webkit-transition: all .35s; 279 | -moz-transition: all .35s; 280 | transition: all .35s; 281 | } 282 | 283 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content { 284 | position: absolute; 285 | top: 50%; 286 | width: 100%; 287 | text-align: center; 288 | transform: translateY(-50%); 289 | } 290 | 291 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category, 292 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name { 293 | padding: 0 15px; 294 | font-family:'SourceSansProRegular', 'Open Sans','Helvetica Neue',Arial,sans-serif; 295 | } 296 | 297 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category { 298 | text-transform: uppercase; 299 | font-size: 14px; 300 | font-weight: 600; 301 | } 302 | 303 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name { 304 | font-size: 18px; 305 | } 306 | 307 | .portfolio-box:hover .portfolio-box-caption { 308 | opacity: 0.95; 309 | } 310 | 311 | @media(min-width:768px) { 312 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-category { 313 | font-size: 16px; 314 | } 315 | 316 | .portfolio-box .portfolio-box-caption .portfolio-box-caption-content .project-name { 317 | font-size: 22px; 318 | } 319 | } 320 | 321 | .call-to-action h2 { 322 | margin: 0 auto 20px; 323 | } 324 | 325 | .text-primary { 326 | color: #002952; 327 | } 328 | 329 | 330 | 331 | .no-gutter > [class*=col-] { 332 | padding-right: 0; 333 | padding-left: 0; 334 | } 335 | 336 | .btn-default { 337 | border-color: #fff; 338 | color: #222; 339 | background-color: #fff; 340 | -webkit-transition: all .35s; 341 | -moz-transition: all .35s; 342 | transition: all .35s; 343 | } 344 | 345 | .btn-default:hover, 346 | .btn-default:focus, 347 | .btn-default.focus, 348 | .btn-default:active, 349 | .btn-default.active, 350 | .open > .dropdown-toggle.btn-default { 351 | border-color: #ededed; 352 | color: #222; 353 | background-color: #f2f2f2; 354 | } 355 | 356 | .btn-default:active, 357 | .btn-default.active, 358 | .open > .dropdown-toggle.btn-default { 359 | background-image: none; 360 | } 361 | 362 | .btn-default.disabled, 363 | .btn-default[disabled], 364 | fieldset[disabled] .btn-default, 365 | .btn-default.disabled:hover, 366 | .btn-default[disabled]:hover, 367 | fieldset[disabled] .btn-default:hover, 368 | .btn-default.disabled:focus, 369 | .btn-default[disabled]:focus, 370 | fieldset[disabled] .btn-default:focus, 371 | .btn-default.disabled.focus, 372 | .btn-default[disabled].focus, 373 | fieldset[disabled] .btn-default.focus, 374 | .btn-default.disabled:active, 375 | .btn-default[disabled]:active, 376 | fieldset[disabled] .btn-default:active, 377 | .btn-default.disabled.active, 378 | .btn-default[disabled].active, 379 | fieldset[disabled] .btn-default.active { 380 | border-color: #fff; 381 | background-color: #fff; 382 | } 383 | 384 | .btn-default .badge { 385 | color: #fff; 386 | background-color: #222; 387 | } 388 | 389 | .btn-primary { 390 | border-color: white; 391 | color: #fff; 392 | background-color: red; 393 | -webkit-transition: all .35s; 394 | -moz-transition: all .35s; 395 | transition: all .35s; 396 | } 397 | 398 | .btn-primary:hover, 399 | .btn-primary:focus, 400 | .btn-primary.focus, 401 | .btn-primary:active, 402 | .btn-primary.active, 403 | .open > .dropdown-toggle.btn-primary { 404 | border-color: #ed431f; 405 | color: red; 406 | background-color: orange; 407 | } 408 | 409 | .btn-primary:active, 410 | .btn-primary.active, 411 | .open > .dropdown-toggle.btn-primary { 412 | background-image: none; 413 | } 414 | 415 | .btn-primary.disabled, 416 | .btn-primary[disabled], 417 | fieldset[disabled] .btn-primary, 418 | .btn-primary.disabled:hover, 419 | .btn-primary[disabled]:hover, 420 | fieldset[disabled] .btn-primary:hover, 421 | .btn-primary.disabled:focus, 422 | .btn-primary[disabled]:focus, 423 | fieldset[disabled] .btn-primary:focus, 424 | .btn-primary.disabled.focus, 425 | .btn-primary[disabled].focus, 426 | fieldset[disabled] .btn-primary.focus, 427 | .btn-primary.disabled:active, 428 | .btn-primary[disabled]:active, 429 | fieldset[disabled] .btn-primary:active, 430 | .btn-primary.disabled.active, 431 | .btn-primary[disabled].active, 432 | fieldset[disabled] .btn-primary.active { 433 | border-color: #002952; 434 | background-color: #002952; 435 | } 436 | 437 | .btn-primary .badge { 438 | color: #002952; 439 | background-color: #fff; 440 | } 441 | 442 | .btn { 443 | border: 0; 444 | border-radius: 300px; 445 | text-transform: uppercase; 446 | font-family: 'SourceSansProRegular','Open Sans','Helvetica Neue',Arial,sans-serif; 447 | font-weight: 700; 448 | } 449 | 450 | .btn-xl { 451 | padding: 15px 30px; 452 | } 453 | 454 | ::-moz-selection { 455 | text-shadow: none; 456 | color: #fff; 457 | background: #222; 458 | } 459 | 460 | ::selection { 461 | text-shadow: none; 462 | color: #fff; 463 | background: #222; 464 | } 465 | 466 | img::selection { 467 | color: #fff; 468 | background: 0 0; 469 | } 470 | 471 | img::-moz-selection { 472 | color: #fff; 473 | background: 0 0; 474 | } 475 | 476 | body { 477 | webkit-tap-highlight-color: #222; 478 | } 479 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mapbox: Living Weather Data on Web Maps 2 | ##### 3 | By Damon Burgett, Geographer, Mapbox and Charlie Lloyd, Mapbox 4 | 5 | ##### *Part 2: Using Mapbox and Open source tools to animate map atmospheric water* 6 | By [Damon Burgett](https://www.mapbox.com/about/team/#damon-burgett), Geographer, Mapbox and Charlie Lloyd, Mapbox 7 | 8 | *As part of the [Commerce Data Usability Project](https://www.commerce.gov/datausability/), Mapbox in collaboration with the [Commerce Data Service](https://www.commerce.gov/dataservice/) has created a two part tutorial that will guide you though processing and visualizating precipitable water data from NOAA. If you have question, feel free to reach out to the Commerce Data Service at data@doc.gov or Mapbox at help@mapbox.com.* 9 | 10 | 11 | #### Atmospheric data is a digital representation of the living environment. 12 | 13 | In this second tutorial in a two part series working with National Oceanic + Atmospheric Administration (NOAA) Precipitable Water (Pwat) data, we extend the data processing and visualization demonstrated in Part One and an animated interactive map of global Pwat over 12 days. In this segment, we’ll be repeating the steps from [Part One](http://commercedataservice.github.io/tutorial_mapbox_part1/), but in bulk and in parallel on over 100 datasets. At the end of this tutorial, we’ll have an animated, interactive map of global pwat over 12 days. 14 | 15 | 16 | ![full](https://cloud.githubusercontent.com/assets/5084513/13926440/9296d324-ef49-11e5-9819-425eb184098f.gif) 17 | 18 | ## Getting Started 19 | 20 | To get started quickly, the code for this tutorial can be found at the following [Github repo]([https://github.com/CommerceDataService/tutorial_mapbox_part2]). 21 | 22 | ### Step 1: Preliminaries 23 | 24 | #### Libraries and Utilities 25 | We'll be using the following tools to wrangle the weather model output files: 26 | 27 | - **[GDAL](http://www.gdal.org/)**: Translator library for raster and vector geospatial data formats; 28 | - **[parallel](http://www.gnu.org/software/parallel/)**: Shell tool for executing jobs in parallel; 29 | - **[rasterio](https://github.com/mapbox/rasterio)**: Clean and fast and geospatial raster I/O for Python programmers who use Numpy; 30 | - **[gribdoctor](https://github.com/mapbox/grib-doctor)**: Utilities for handling quirks of weather data General Regularly-distributed Information in Binary form (grib) files. grib data is a concise data format commonly used in meteorology to store historical and forecast weather data which can looked at using software applications; and 31 | - **[ffmpeg](https://www.ffmpeg.org/)**: Library to record, convert and stream audio and video 32 | 33 | #### Folder Setup 34 | 35 | Let's first setup a few folders to store intermediate files. In your working directory, make these 6 files - keeping it organized as such will keep things simpler down the line: 36 | 37 | ``` 38 | working directory 39 | +-data 40 | +-global 41 | +-clip 42 | +-mercator 43 | +-pngs 44 | +-output 45 | ``` 46 | 47 | As a command (from within your working directory): 48 | 49 | ``` 50 | mkdir data global clip mercator color png output 51 | ``` 52 | 53 | ### Step 2: Get the data 54 | 55 | From part one of our tutorial, we have the following url: 56 | 57 | ``` 58 | http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t12z.pgrb2.0p25.f000&all_lev=on&var_PWAT=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.2016011212 59 | ``` 60 | 61 | This links to the Global Forecast System (GFS) model of Pwat on 01/12/2016 at 12 GST, for a forecast of 0 hours. The GFS forcast dataset is created every six hours, with predictions produced from each model every 3 hours. By combining every six-hour model run's hour 0 and hour 3 prediction data, we'll be able to download data at a 3-hour interval. 62 | 63 | [GNU Parallel](http://www.gnu.org/software/parallel/) offers an efficient approach to abstract away a lot of the complication of iterating over numerous files. In particular, `parallel`'s abstraction of number expansion makes this manageable. Taking the above URL and replacing all the variables we want to iterate over, we have the following: 64 | 65 | ``` 66 | http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t{time}z.pgrb2.0p25.f{time}&all_lev=on&var_PWAT=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.201603{date}{time} 67 | ``` 68 | Iterations are determined by the following three variables: 69 | 70 | - `{date}` = Prediction date. We want 12 days, from the to 5th to the 17th, as two-digit numbers `{05..17}` 71 | 72 | - `{hour}` = Prediction hour. We want 0, 6, 12, and 18 hours (every 6 hours), as two digit numbers `{00..18..6}` 73 | 74 | - `{time}` = Prediction time. We want the 0 and 3 hour predictions, as three-digit numbers `{000..003..3}` 75 | 76 | Let's put it all together to see how it works: 77 | ``` 78 | parallel --header : echo {date}-{hour}-{off} ::: off {000..003..3} ::: date {05..17} ::: hour {00..18..6} 79 | ``` 80 | This should create 104 combinations of our input ranges in no particular order. With the URL, we can simply put these variables in place of the static numbers we see in the download link as in the example above. 81 | 82 | Here, we use `wget`, a command to download data from a URL. Plugging it into `parallel` means that for every combination of numbers we input, we'll perform `wget`. Let's first "dryrun" (`--dryrun`) to see the URLs we are creating: 83 | ``` 84 | parallel --dryrun --header : wget '"http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t{time}z.pgrb2.0p25.f{time}&all_lev=on&var_PWAT=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.201603{date}{time}"' ::: date {05..17} ::: time {00..18..06} ::: hour {000..003..003} 85 | ``` 86 | This will print the URLs we'll want - grab one and paste it into a browser to see if it works. It should start downloading a *grib2* file. If not, double check your syntax. Keep an eye out for the URL string formatting; various shells handle these characters differently. 87 | 88 | To keep the gribs in sorted order for the rest of the process, use the date-hour prediction number as the filename. This will ensure that we can simple re-use the iteration numbers as the output, saving in our `raw` folder as `data/{date}{time}{hour}.grib2`. Add this, remove the `--dryrun` flag, and re-run. 89 | ``` 90 | parallel --header : wget '"http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t{time}z.pgrb2.0p25.f{time}&all_lev=on&var_PWAT=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.201603{date}{time}"' -O data/{date}{time}{hour}.grib2 ::: date {05..17} ::: time {00..18..06} ::: hour {000..003..003} 91 | ``` 92 | If this worked, you'll have a directory of numerically sorted grib files! Open any of these freshly downloaded raster files in a desktop GIS system such as [QGIS](http://www.qgis.org/) and you should see the following: 93 | 94 | ![image](https://cloud.githubusercontent.com/assets/5084513/12276750/5fc8b3ca-b92c-11e5-8332-9460e5655074.png) 95 | 96 | ### Part 3: Geoprocessing 97 | 98 | We are going to repeat each step that we referenced in Part 1, this time in parallel on our 104 input files. Luckily, `parallel` again handles much of the complication for us. A quick introduction to working with files in parallel. To list each file in our data directory with the `.grib2` extension, we can run the following command: 99 | 100 | ``` 101 | parallel echo {} ::: data/*.grib2 102 | ``` 103 | 104 | This should list out all the `grib2`s in your data directory. To list just the base filename: 105 | 106 | ``` 107 | parallel echo {/} ::: data/*.grib2 108 | ``` 109 | 110 | And to list just the filename without the file extension: 111 | ``` 112 | parallel echo {/.} ::: data/*.grib2 113 | ``` 114 | 115 | We'll use these three abstractions to process our data. 116 | 117 | #### Converting to global grib using `gribdoctor` 118 | 119 | A quick refresh on usage of this tool (see Part 1 for details): 120 | 121 | ``` 122 | gribdoctor smoosh -dev -uw .grib2 .tif 123 | ``` 124 | We want to take each `.grib2` in our `/data` directory, perform this operation, and output a `.tif` file of the same name in our `/global` directory. Here is the command: 125 | 126 | ``` 127 | parallel gribdoctor smoosh -dev -uw {} global/{/.}.tif ::: data/*.grib2 128 | ``` 129 | 130 | To deconstruct the above: 131 | 132 | - `gribdoctor smoosh` is the command used to undertake geoprocessing; 133 | - `-dev -uw` are input options for `gribdoctor` 134 | - `data/*.grib2` is the input directory. Each file in this directory will run in `parallel` as `{}`; and 135 | - `global/{/.}.tif` is the output filename (which is each input base filename without the extension - after which we add on the `/global` directory and the `.tif` extension. 136 | 137 | After running `gribdoctor`, you should have a set files that look like the following (open them in a GIS or other `GeoTIFF` viewer): 138 | 139 | ![image](https://cloud.githubusercontent.com/assets/5084513/12286506/6bae416c-b979-11e5-8eeb-31fa137ca8b1.png) 140 | 141 | #### Clip to reasonable latitudes 142 | 143 | We'll be adding this data to a web map in web mercator, which will overly stretch the higher latitudes to take up the bulk of our video size. To make the presentation neater, let's trim off the data at extreme latitudes using `rio clip`, a [rasterio](https://github.com/mapbox/rasterio) command. 144 | 145 | We want to clip to West: -180.0, South: -70.0, East: 180.0, North: 70.0. Here again, is the command in `parallel`: 146 | 147 | ``` 148 | parallel rio clip {} clip/{/} --bounds -180.0 -70.0 180.0 70.0 ::: global/*.tif 149 | ``` 150 | 151 | Note that this time, we can simply use `{/}` as the input and outputs are both `.tif`s. Your `clip/` directory should have images like this: 152 | 153 | ![image](https://cloud.githubusercontent.com/assets/5084513/12313441/482599ea-ba1c-11e5-818f-7fa095fde032.png) 154 | 155 | #### Warp to Web Mercator 156 | 157 | Mapbox GL JS utilizes the web mercator projection. In order to integrate the PWAT imagery with street and terrain data, we will need to warp our input data into this projection. Let's also take this opportunity to make sure our image dimensions are divisible by two, which is neccesary for properly encoding into video. 158 | 159 | The dimensions of your input data _after_ being warped to web mercator should be ~ 2705 x 1494. This gives us an aspect ratio of: 160 | 161 | ``` 162 | 2705 / 1495 = ~1.8:1 163 | ``` 164 | 165 | Let's say we want our eventual output video to be 2048 pixels wide: 166 | 167 | ``` 168 | 2048 * (1 / 1.8) = 1138px 169 | ``` 170 | Giving us desired output dimensions of 2048 x 1138. We then specify this in the `gdalwarp` command as `-ts`. Here it is in `parallel`: 171 | 172 | ``` 173 | parallel gdalwarp {} mercator/{/} -t_srs EPSG:3857 -co COMPRESS=DEFLATE -r bilinear -ts 2048 1138 ::: clip/*.tif 174 | ``` 175 | Here's an example output file: 176 | 177 | ![image](https://cloud.githubusercontent.com/assets/5084513/12313499/cd5c8de4-ba1c-11e5-8ddc-dc884dd94291.png) 178 | 179 | 180 | #### Colorize PWAT 181 | 182 | Let's colorize our data. Take the color ramp that you created in the first tutorial, and apply it on all of the warped files: 183 | 184 | ``` 185 | parallel gdaldem color-relief {} color-ramp.txt color/{/} ::: mercator/*.tif 186 | ``` 187 | Now, you should essentially have a set of `tifs` similar to what we'll have in our final product. Take the time now to tweak your color ramp as you see fit. 188 | 189 | ![image](https://cloud.githubusercontent.com/assets/5084513/12313587/ac86d808-ba1d-11e5-9405-e1597f9db8a6.png) 190 | 191 | 192 | #### Convert to png 193 | 194 | In order to use this in an animation, we need to convert them into a format that `ffmpeg` can recognize. In this case, we'll use `png` - here is the command: 195 | 196 | ``` 197 | parallel rio convert {} pngs/{/.}.png --format PNG ::: color/*.tif 198 | ``` 199 | 200 | ### Part 3: Animate 201 | 202 | To animate this set of `png`s we'll use the `ffmpeg` library. To encode this dataset in a way that maintains a high quality file while keeping the size down requires customization of the command, and a "double-pass" encoding technique. To keep this simpler, we've put this command into a bash script, and made the parameters that you may want to tweak into variables - the input `dir` and output `movie`, `bitrate`, and `framerate`: 203 | 204 | ```bash 205 | #!/usr/bin/env bash 206 | 207 | dir=png 208 | movie=output/pwat.mp4 209 | bitrate=4000k 210 | framerate=12 211 | ffmpeg -r $framerate -y -f image2 -pattern_type glob -i "$dir/*.png" -c:v libx264 -preset slow -b:v $bitrate -pass 1 -c:a libfdk_aac -b:a 0k -f mp4 -r $framerate -profile:v high -level 4.2 -pix_fmt yuv420p -movflags +faststart /dev/null && \ 212 | ffmpeg -r $framerate -f image2 -pattern_type glob -i "$dir/*.png" -c:v libx264 -preset slow -b:v $bitrate -pass 2 -c:a libfdk_aac -b:a 0k -r $framerate -profile:v high -level 4.2 -pix_fmt yuv420p -movflags +faststart $movie 213 | ``` 214 | View the created animation to see how it looks. You can adjust the speed by modifying the framerate: lower framerate = slower. If the animation is too large (I try to stay under 5mb), you can lower the bitrate. 215 | 216 | #### Style your reference data 217 | 218 | Let's first modify the reference data in the style that we used for our visualization in [Part 1](http://commercedataservice.github.io/tutorial_mapbox_part1/). Navigate to https://www.mapbox.com/studio/styles/, find your style, and duplicate it: 219 | 220 | ![image](https://cloud.githubusercontent.com/assets/5084513/13894313/9b06ea62-ed23-11e5-93f0-5a410edd3ffb.png) 221 | 222 | Then, edit this copied style. At the very least, we need to: 223 | 1. Delete the static pwat layer we used in part 1; and 224 | 2. Change the water + background colors to match our video. 225 | 226 | BEFORE deleting the layer, move our previous pwat layer to the back to "stand in" for our video while we still - drag it to the bottom of the layers panel, _right_ above "Background." 227 | 228 | Take note of the _first_ color category you used in the colorization process. In my case, I had: 229 | ``` 230 | 10.0 23 31 39 231 | ``` 232 | Values 10.0 and under are the RGB value 23, 31, 39. Let's make this our water (fill) and background color: 233 | ![image](https://cloud.githubusercontent.com/assets/5084513/13894412/b3028544-ed24-11e5-8ecf-0fd344ccf8d0.png) 234 | 235 | Since our animation will be _under_ the map, let's also make the water transparent - I am starting with 0.25. 236 | 237 | You may also want to remove certain features, and change the style of others. I like to keep terrain visible, as I find the interplay between mountain ranges and pwat fascinating: 238 | 239 | ![inter](https://cloud.githubusercontent.com/assets/5084513/13924322/18f7cb0c-ef41-11e5-9d02-1ba23b44f6fa.gif) 240 | 241 | Once you are done styling, click publish, and save your style url. Don't worry - you can edit your style and access its url at any time. 242 | 243 | #### Add your data to the map 244 | 245 | We'll be using [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/api/) to create an interactive animated map with our data. First, create an html document, and copy in the skeleton html for a Mapbox GL map: 246 | 247 | ```code 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 260 | 261 | 262 | 263 |
264 | 267 | 268 | 269 | ``` 270 | 271 | Next, we'll create a GL map in the `#map` div, and add our style to it. Within the `` tags, add: 272 | 273 | ```Javascript 274 | 275 | // mapboxgl.accessToken = ''; 276 | 277 | var map = new mapboxgl.Map({ 278 | container: 'map', // container id 279 | style: 'mapbox://styles/dnomadb/cilybj8yj00a99km8o74phrfp', //stylesheet url from above 280 | center: [ 281 | 0, 282 | 0 283 | ], // starting position 284 | zoom: 1.6 // starting zoom 285 | }); 286 | ``` 287 | 288 | Lets also add a contol for our map: 289 | ``` 290 | map.addControl(new mapboxgl.Navigation()); 291 | ``` 292 | 293 | If you view your map, you should see something pretty bare bones: 294 | ![image](https://cloud.githubusercontent.com/assets/5084513/13925430/80464276-ef45-11e5-9d0d-adc21966e19e.png) 295 | 296 | Let's add our video! For convenience, move the video to the same directory as your `html` file from above. To insert this into our map, we'll need to specify 3 main things: 297 | 298 | 1. When the video should be added to the map. In our case, we'll want to do it _after_ our stylesheed loads so that it is accessible. 299 | 2. Where to add the video spatially. We'll be using our clip bounds of `-180.0 -70.0 180.0 70.0` as the bounds for the video. 300 | 3. Where to add the video in terms of z-index. We want to add our video directly under the style's `hillshade` layer. 301 | 302 | Here's how to do these three things: 303 | 304 | ```Javascript 305 | map.once('style.load', function() { 306 | // once the style loads, do this 307 | map.batch(function() { 308 | // add our video source 309 | map.addSource('storm-source', { 310 | type: 'video', 311 | urls: [ 312 | 'pwat.mp4' // path to our video 313 | ], 314 | coordinates: [ 315 | [ -180, 70 ], 316 | [ 180, 70 ], 317 | [ 180, -70 ], 318 | [ -180, -70 ] 319 | ] // the coordinates to which your data is clipped: 320 | }); 321 | // add this layer to the map 322 | map.addLayer({ 323 | type: 'raster', 324 | id: 'storm-layer', 325 | source: 'storm-source', 326 | paint: { 327 | 'raster-opacity': 0.75 328 | } 329 | }, 330 | 'hillshade_shadow_faint'); // "after" our lowest hillshade layer 331 | }); 332 | }); 333 | ``` 334 | 335 | Add this to your script, and your map should be ready to go! 336 | 337 | 338 | 339 | 340 | 341 | -------------------------------------------------------------------------------- /font-awesome/less/variables.less: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | @fa-font-path: "../fonts"; 5 | @fa-font-size-base: 14px; 6 | //@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts"; // for referencing Bootstrap CDN font files directly 7 | @fa-css-prefix: fa; 8 | @fa-version: "4.3.0"; 9 | @fa-border-color: #eee; 10 | @fa-inverse: #fff; 11 | @fa-li-width: (30em / 14); 12 | 13 | @fa-var-adjust: "\f042"; 14 | @fa-var-adn: "\f170"; 15 | @fa-var-align-center: "\f037"; 16 | @fa-var-align-justify: "\f039"; 17 | @fa-var-align-left: "\f036"; 18 | @fa-var-align-right: "\f038"; 19 | @fa-var-ambulance: "\f0f9"; 20 | @fa-var-anchor: "\f13d"; 21 | @fa-var-android: "\f17b"; 22 | @fa-var-angellist: "\f209"; 23 | @fa-var-angle-double-down: "\f103"; 24 | @fa-var-angle-double-left: "\f100"; 25 | @fa-var-angle-double-right: "\f101"; 26 | @fa-var-angle-double-up: "\f102"; 27 | @fa-var-angle-down: "\f107"; 28 | @fa-var-angle-left: "\f104"; 29 | @fa-var-angle-right: "\f105"; 30 | @fa-var-angle-up: "\f106"; 31 | @fa-var-apple: "\f179"; 32 | @fa-var-archive: "\f187"; 33 | @fa-var-area-chart: "\f1fe"; 34 | @fa-var-arrow-circle-down: "\f0ab"; 35 | @fa-var-arrow-circle-left: "\f0a8"; 36 | @fa-var-arrow-circle-o-down: "\f01a"; 37 | @fa-var-arrow-circle-o-left: "\f190"; 38 | @fa-var-arrow-circle-o-right: "\f18e"; 39 | @fa-var-arrow-circle-o-up: "\f01b"; 40 | @fa-var-arrow-circle-right: "\f0a9"; 41 | @fa-var-arrow-circle-up: "\f0aa"; 42 | @fa-var-arrow-down: "\f063"; 43 | @fa-var-arrow-left: "\f060"; 44 | @fa-var-arrow-right: "\f061"; 45 | @fa-var-arrow-up: "\f062"; 46 | @fa-var-arrows: "\f047"; 47 | @fa-var-arrows-alt: "\f0b2"; 48 | @fa-var-arrows-h: "\f07e"; 49 | @fa-var-arrows-v: "\f07d"; 50 | @fa-var-asterisk: "\f069"; 51 | @fa-var-at: "\f1fa"; 52 | @fa-var-automobile: "\f1b9"; 53 | @fa-var-backward: "\f04a"; 54 | @fa-var-ban: "\f05e"; 55 | @fa-var-bank: "\f19c"; 56 | @fa-var-bar-chart: "\f080"; 57 | @fa-var-bar-chart-o: "\f080"; 58 | @fa-var-barcode: "\f02a"; 59 | @fa-var-bars: "\f0c9"; 60 | @fa-var-bed: "\f236"; 61 | @fa-var-beer: "\f0fc"; 62 | @fa-var-behance: "\f1b4"; 63 | @fa-var-behance-square: "\f1b5"; 64 | @fa-var-bell: "\f0f3"; 65 | @fa-var-bell-o: "\f0a2"; 66 | @fa-var-bell-slash: "\f1f6"; 67 | @fa-var-bell-slash-o: "\f1f7"; 68 | @fa-var-bicycle: "\f206"; 69 | @fa-var-binoculars: "\f1e5"; 70 | @fa-var-birthday-cake: "\f1fd"; 71 | @fa-var-bitbucket: "\f171"; 72 | @fa-var-bitbucket-square: "\f172"; 73 | @fa-var-bitcoin: "\f15a"; 74 | @fa-var-bold: "\f032"; 75 | @fa-var-bolt: "\f0e7"; 76 | @fa-var-bomb: "\f1e2"; 77 | @fa-var-book: "\f02d"; 78 | @fa-var-bookmark: "\f02e"; 79 | @fa-var-bookmark-o: "\f097"; 80 | @fa-var-briefcase: "\f0b1"; 81 | @fa-var-btc: "\f15a"; 82 | @fa-var-bug: "\f188"; 83 | @fa-var-building: "\f1ad"; 84 | @fa-var-building-o: "\f0f7"; 85 | @fa-var-bullhorn: "\f0a1"; 86 | @fa-var-bullseye: "\f140"; 87 | @fa-var-bus: "\f207"; 88 | @fa-var-buysellads: "\f20d"; 89 | @fa-var-cab: "\f1ba"; 90 | @fa-var-calculator: "\f1ec"; 91 | @fa-var-calendar: "\f073"; 92 | @fa-var-calendar-o: "\f133"; 93 | @fa-var-camera: "\f030"; 94 | @fa-var-camera-retro: "\f083"; 95 | @fa-var-car: "\f1b9"; 96 | @fa-var-caret-down: "\f0d7"; 97 | @fa-var-caret-left: "\f0d9"; 98 | @fa-var-caret-right: "\f0da"; 99 | @fa-var-caret-square-o-down: "\f150"; 100 | @fa-var-caret-square-o-left: "\f191"; 101 | @fa-var-caret-square-o-right: "\f152"; 102 | @fa-var-caret-square-o-up: "\f151"; 103 | @fa-var-caret-up: "\f0d8"; 104 | @fa-var-cart-arrow-down: "\f218"; 105 | @fa-var-cart-plus: "\f217"; 106 | @fa-var-cc: "\f20a"; 107 | @fa-var-cc-amex: "\f1f3"; 108 | @fa-var-cc-discover: "\f1f2"; 109 | @fa-var-cc-mastercard: "\f1f1"; 110 | @fa-var-cc-paypal: "\f1f4"; 111 | @fa-var-cc-stripe: "\f1f5"; 112 | @fa-var-cc-visa: "\f1f0"; 113 | @fa-var-certificate: "\f0a3"; 114 | @fa-var-chain: "\f0c1"; 115 | @fa-var-chain-broken: "\f127"; 116 | @fa-var-check: "\f00c"; 117 | @fa-var-check-circle: "\f058"; 118 | @fa-var-check-circle-o: "\f05d"; 119 | @fa-var-check-square: "\f14a"; 120 | @fa-var-check-square-o: "\f046"; 121 | @fa-var-chevron-circle-down: "\f13a"; 122 | @fa-var-chevron-circle-left: "\f137"; 123 | @fa-var-chevron-circle-right: "\f138"; 124 | @fa-var-chevron-circle-up: "\f139"; 125 | @fa-var-chevron-down: "\f078"; 126 | @fa-var-chevron-left: "\f053"; 127 | @fa-var-chevron-right: "\f054"; 128 | @fa-var-chevron-up: "\f077"; 129 | @fa-var-child: "\f1ae"; 130 | @fa-var-circle: "\f111"; 131 | @fa-var-circle-o: "\f10c"; 132 | @fa-var-circle-o-notch: "\f1ce"; 133 | @fa-var-circle-thin: "\f1db"; 134 | @fa-var-clipboard: "\f0ea"; 135 | @fa-var-clock-o: "\f017"; 136 | @fa-var-close: "\f00d"; 137 | @fa-var-cloud: "\f0c2"; 138 | @fa-var-cloud-download: "\f0ed"; 139 | @fa-var-cloud-upload: "\f0ee"; 140 | @fa-var-cny: "\f157"; 141 | @fa-var-code: "\f121"; 142 | @fa-var-code-fork: "\f126"; 143 | @fa-var-codepen: "\f1cb"; 144 | @fa-var-coffee: "\f0f4"; 145 | @fa-var-cog: "\f013"; 146 | @fa-var-cogs: "\f085"; 147 | @fa-var-columns: "\f0db"; 148 | @fa-var-comment: "\f075"; 149 | @fa-var-comment-o: "\f0e5"; 150 | @fa-var-comments: "\f086"; 151 | @fa-var-comments-o: "\f0e6"; 152 | @fa-var-compass: "\f14e"; 153 | @fa-var-compress: "\f066"; 154 | @fa-var-connectdevelop: "\f20e"; 155 | @fa-var-copy: "\f0c5"; 156 | @fa-var-copyright: "\f1f9"; 157 | @fa-var-credit-card: "\f09d"; 158 | @fa-var-crop: "\f125"; 159 | @fa-var-crosshairs: "\f05b"; 160 | @fa-var-css3: "\f13c"; 161 | @fa-var-cube: "\f1b2"; 162 | @fa-var-cubes: "\f1b3"; 163 | @fa-var-cut: "\f0c4"; 164 | @fa-var-cutlery: "\f0f5"; 165 | @fa-var-dashboard: "\f0e4"; 166 | @fa-var-dashcube: "\f210"; 167 | @fa-var-database: "\f1c0"; 168 | @fa-var-dedent: "\f03b"; 169 | @fa-var-delicious: "\f1a5"; 170 | @fa-var-desktop: "\f108"; 171 | @fa-var-deviantart: "\f1bd"; 172 | @fa-var-diamond: "\f219"; 173 | @fa-var-digg: "\f1a6"; 174 | @fa-var-dollar: "\f155"; 175 | @fa-var-dot-circle-o: "\f192"; 176 | @fa-var-download: "\f019"; 177 | @fa-var-dribbble: "\f17d"; 178 | @fa-var-dropbox: "\f16b"; 179 | @fa-var-drupal: "\f1a9"; 180 | @fa-var-edit: "\f044"; 181 | @fa-var-eject: "\f052"; 182 | @fa-var-ellipsis-h: "\f141"; 183 | @fa-var-ellipsis-v: "\f142"; 184 | @fa-var-empire: "\f1d1"; 185 | @fa-var-envelope: "\f0e0"; 186 | @fa-var-envelope-o: "\f003"; 187 | @fa-var-envelope-square: "\f199"; 188 | @fa-var-eraser: "\f12d"; 189 | @fa-var-eur: "\f153"; 190 | @fa-var-euro: "\f153"; 191 | @fa-var-exchange: "\f0ec"; 192 | @fa-var-exclamation: "\f12a"; 193 | @fa-var-exclamation-circle: "\f06a"; 194 | @fa-var-exclamation-triangle: "\f071"; 195 | @fa-var-expand: "\f065"; 196 | @fa-var-external-link: "\f08e"; 197 | @fa-var-external-link-square: "\f14c"; 198 | @fa-var-eye: "\f06e"; 199 | @fa-var-eye-slash: "\f070"; 200 | @fa-var-eyedropper: "\f1fb"; 201 | @fa-var-facebook: "\f09a"; 202 | @fa-var-facebook-f: "\f09a"; 203 | @fa-var-facebook-official: "\f230"; 204 | @fa-var-facebook-square: "\f082"; 205 | @fa-var-fast-backward: "\f049"; 206 | @fa-var-fast-forward: "\f050"; 207 | @fa-var-fax: "\f1ac"; 208 | @fa-var-female: "\f182"; 209 | @fa-var-fighter-jet: "\f0fb"; 210 | @fa-var-file: "\f15b"; 211 | @fa-var-file-archive-o: "\f1c6"; 212 | @fa-var-file-audio-o: "\f1c7"; 213 | @fa-var-file-code-o: "\f1c9"; 214 | @fa-var-file-excel-o: "\f1c3"; 215 | @fa-var-file-image-o: "\f1c5"; 216 | @fa-var-file-movie-o: "\f1c8"; 217 | @fa-var-file-o: "\f016"; 218 | @fa-var-file-pdf-o: "\f1c1"; 219 | @fa-var-file-photo-o: "\f1c5"; 220 | @fa-var-file-picture-o: "\f1c5"; 221 | @fa-var-file-powerpoint-o: "\f1c4"; 222 | @fa-var-file-sound-o: "\f1c7"; 223 | @fa-var-file-text: "\f15c"; 224 | @fa-var-file-text-o: "\f0f6"; 225 | @fa-var-file-video-o: "\f1c8"; 226 | @fa-var-file-word-o: "\f1c2"; 227 | @fa-var-file-zip-o: "\f1c6"; 228 | @fa-var-files-o: "\f0c5"; 229 | @fa-var-film: "\f008"; 230 | @fa-var-filter: "\f0b0"; 231 | @fa-var-fire: "\f06d"; 232 | @fa-var-fire-extinguisher: "\f134"; 233 | @fa-var-flag: "\f024"; 234 | @fa-var-flag-checkered: "\f11e"; 235 | @fa-var-flag-o: "\f11d"; 236 | @fa-var-flash: "\f0e7"; 237 | @fa-var-flask: "\f0c3"; 238 | @fa-var-flickr: "\f16e"; 239 | @fa-var-floppy-o: "\f0c7"; 240 | @fa-var-folder: "\f07b"; 241 | @fa-var-folder-o: "\f114"; 242 | @fa-var-folder-open: "\f07c"; 243 | @fa-var-folder-open-o: "\f115"; 244 | @fa-var-font: "\f031"; 245 | @fa-var-forumbee: "\f211"; 246 | @fa-var-forward: "\f04e"; 247 | @fa-var-foursquare: "\f180"; 248 | @fa-var-frown-o: "\f119"; 249 | @fa-var-futbol-o: "\f1e3"; 250 | @fa-var-gamepad: "\f11b"; 251 | @fa-var-gavel: "\f0e3"; 252 | @fa-var-gbp: "\f154"; 253 | @fa-var-ge: "\f1d1"; 254 | @fa-var-gear: "\f013"; 255 | @fa-var-gears: "\f085"; 256 | @fa-var-genderless: "\f1db"; 257 | @fa-var-gift: "\f06b"; 258 | @fa-var-git: "\f1d3"; 259 | @fa-var-git-square: "\f1d2"; 260 | @fa-var-github: "\f09b"; 261 | @fa-var-github-alt: "\f113"; 262 | @fa-var-github-square: "\f092"; 263 | @fa-var-gittip: "\f184"; 264 | @fa-var-glass: "\f000"; 265 | @fa-var-globe: "\f0ac"; 266 | @fa-var-google: "\f1a0"; 267 | @fa-var-google-plus: "\f0d5"; 268 | @fa-var-google-plus-square: "\f0d4"; 269 | @fa-var-google-wallet: "\f1ee"; 270 | @fa-var-graduation-cap: "\f19d"; 271 | @fa-var-gratipay: "\f184"; 272 | @fa-var-group: "\f0c0"; 273 | @fa-var-h-square: "\f0fd"; 274 | @fa-var-hacker-news: "\f1d4"; 275 | @fa-var-hand-o-down: "\f0a7"; 276 | @fa-var-hand-o-left: "\f0a5"; 277 | @fa-var-hand-o-right: "\f0a4"; 278 | @fa-var-hand-o-up: "\f0a6"; 279 | @fa-var-hdd-o: "\f0a0"; 280 | @fa-var-header: "\f1dc"; 281 | @fa-var-headphones: "\f025"; 282 | @fa-var-heart: "\f004"; 283 | @fa-var-heart-o: "\f08a"; 284 | @fa-var-heartbeat: "\f21e"; 285 | @fa-var-history: "\f1da"; 286 | @fa-var-home: "\f015"; 287 | @fa-var-hospital-o: "\f0f8"; 288 | @fa-var-hotel: "\f236"; 289 | @fa-var-html5: "\f13b"; 290 | @fa-var-ils: "\f20b"; 291 | @fa-var-image: "\f03e"; 292 | @fa-var-inbox: "\f01c"; 293 | @fa-var-indent: "\f03c"; 294 | @fa-var-info: "\f129"; 295 | @fa-var-info-circle: "\f05a"; 296 | @fa-var-inr: "\f156"; 297 | @fa-var-instagram: "\f16d"; 298 | @fa-var-institution: "\f19c"; 299 | @fa-var-ioxhost: "\f208"; 300 | @fa-var-italic: "\f033"; 301 | @fa-var-joomla: "\f1aa"; 302 | @fa-var-jpy: "\f157"; 303 | @fa-var-jsfiddle: "\f1cc"; 304 | @fa-var-key: "\f084"; 305 | @fa-var-keyboard-o: "\f11c"; 306 | @fa-var-krw: "\f159"; 307 | @fa-var-language: "\f1ab"; 308 | @fa-var-laptop: "\f109"; 309 | @fa-var-lastfm: "\f202"; 310 | @fa-var-lastfm-square: "\f203"; 311 | @fa-var-leaf: "\f06c"; 312 | @fa-var-leanpub: "\f212"; 313 | @fa-var-legal: "\f0e3"; 314 | @fa-var-lemon-o: "\f094"; 315 | @fa-var-level-down: "\f149"; 316 | @fa-var-level-up: "\f148"; 317 | @fa-var-life-bouy: "\f1cd"; 318 | @fa-var-life-buoy: "\f1cd"; 319 | @fa-var-life-ring: "\f1cd"; 320 | @fa-var-life-saver: "\f1cd"; 321 | @fa-var-lightbulb-o: "\f0eb"; 322 | @fa-var-line-chart: "\f201"; 323 | @fa-var-link: "\f0c1"; 324 | @fa-var-linkedin: "\f0e1"; 325 | @fa-var-linkedin-square: "\f08c"; 326 | @fa-var-linux: "\f17c"; 327 | @fa-var-list: "\f03a"; 328 | @fa-var-list-alt: "\f022"; 329 | @fa-var-list-ol: "\f0cb"; 330 | @fa-var-list-ul: "\f0ca"; 331 | @fa-var-location-arrow: "\f124"; 332 | @fa-var-lock: "\f023"; 333 | @fa-var-long-arrow-down: "\f175"; 334 | @fa-var-long-arrow-left: "\f177"; 335 | @fa-var-long-arrow-right: "\f178"; 336 | @fa-var-long-arrow-up: "\f176"; 337 | @fa-var-magic: "\f0d0"; 338 | @fa-var-magnet: "\f076"; 339 | @fa-var-mail-forward: "\f064"; 340 | @fa-var-mail-reply: "\f112"; 341 | @fa-var-mail-reply-all: "\f122"; 342 | @fa-var-male: "\f183"; 343 | @fa-var-map-marker: "\f041"; 344 | @fa-var-mars: "\f222"; 345 | @fa-var-mars-double: "\f227"; 346 | @fa-var-mars-stroke: "\f229"; 347 | @fa-var-mars-stroke-h: "\f22b"; 348 | @fa-var-mars-stroke-v: "\f22a"; 349 | @fa-var-maxcdn: "\f136"; 350 | @fa-var-meanpath: "\f20c"; 351 | @fa-var-medium: "\f23a"; 352 | @fa-var-medkit: "\f0fa"; 353 | @fa-var-meh-o: "\f11a"; 354 | @fa-var-mercury: "\f223"; 355 | @fa-var-microphone: "\f130"; 356 | @fa-var-microphone-slash: "\f131"; 357 | @fa-var-minus: "\f068"; 358 | @fa-var-minus-circle: "\f056"; 359 | @fa-var-minus-square: "\f146"; 360 | @fa-var-minus-square-o: "\f147"; 361 | @fa-var-mobile: "\f10b"; 362 | @fa-var-mobile-phone: "\f10b"; 363 | @fa-var-money: "\f0d6"; 364 | @fa-var-moon-o: "\f186"; 365 | @fa-var-mortar-board: "\f19d"; 366 | @fa-var-motorcycle: "\f21c"; 367 | @fa-var-music: "\f001"; 368 | @fa-var-navicon: "\f0c9"; 369 | @fa-var-neuter: "\f22c"; 370 | @fa-var-newspaper-o: "\f1ea"; 371 | @fa-var-openid: "\f19b"; 372 | @fa-var-outdent: "\f03b"; 373 | @fa-var-pagelines: "\f18c"; 374 | @fa-var-paint-brush: "\f1fc"; 375 | @fa-var-paper-plane: "\f1d8"; 376 | @fa-var-paper-plane-o: "\f1d9"; 377 | @fa-var-paperclip: "\f0c6"; 378 | @fa-var-paragraph: "\f1dd"; 379 | @fa-var-paste: "\f0ea"; 380 | @fa-var-pause: "\f04c"; 381 | @fa-var-paw: "\f1b0"; 382 | @fa-var-paypal: "\f1ed"; 383 | @fa-var-pencil: "\f040"; 384 | @fa-var-pencil-square: "\f14b"; 385 | @fa-var-pencil-square-o: "\f044"; 386 | @fa-var-phone: "\f095"; 387 | @fa-var-phone-square: "\f098"; 388 | @fa-var-photo: "\f03e"; 389 | @fa-var-picture-o: "\f03e"; 390 | @fa-var-pie-chart: "\f200"; 391 | @fa-var-pied-piper: "\f1a7"; 392 | @fa-var-pied-piper-alt: "\f1a8"; 393 | @fa-var-pinterest: "\f0d2"; 394 | @fa-var-pinterest-p: "\f231"; 395 | @fa-var-pinterest-square: "\f0d3"; 396 | @fa-var-plane: "\f072"; 397 | @fa-var-play: "\f04b"; 398 | @fa-var-play-circle: "\f144"; 399 | @fa-var-play-circle-o: "\f01d"; 400 | @fa-var-plug: "\f1e6"; 401 | @fa-var-plus: "\f067"; 402 | @fa-var-plus-circle: "\f055"; 403 | @fa-var-plus-square: "\f0fe"; 404 | @fa-var-plus-square-o: "\f196"; 405 | @fa-var-power-off: "\f011"; 406 | @fa-var-print: "\f02f"; 407 | @fa-var-puzzle-piece: "\f12e"; 408 | @fa-var-qq: "\f1d6"; 409 | @fa-var-qrcode: "\f029"; 410 | @fa-var-question: "\f128"; 411 | @fa-var-question-circle: "\f059"; 412 | @fa-var-quote-left: "\f10d"; 413 | @fa-var-quote-right: "\f10e"; 414 | @fa-var-ra: "\f1d0"; 415 | @fa-var-random: "\f074"; 416 | @fa-var-rebel: "\f1d0"; 417 | @fa-var-recycle: "\f1b8"; 418 | @fa-var-reddit: "\f1a1"; 419 | @fa-var-reddit-square: "\f1a2"; 420 | @fa-var-refresh: "\f021"; 421 | @fa-var-remove: "\f00d"; 422 | @fa-var-renren: "\f18b"; 423 | @fa-var-reorder: "\f0c9"; 424 | @fa-var-repeat: "\f01e"; 425 | @fa-var-reply: "\f112"; 426 | @fa-var-reply-all: "\f122"; 427 | @fa-var-retweet: "\f079"; 428 | @fa-var-rmb: "\f157"; 429 | @fa-var-road: "\f018"; 430 | @fa-var-rocket: "\f135"; 431 | @fa-var-rotate-left: "\f0e2"; 432 | @fa-var-rotate-right: "\f01e"; 433 | @fa-var-rouble: "\f158"; 434 | @fa-var-rss: "\f09e"; 435 | @fa-var-rss-square: "\f143"; 436 | @fa-var-rub: "\f158"; 437 | @fa-var-ruble: "\f158"; 438 | @fa-var-rupee: "\f156"; 439 | @fa-var-save: "\f0c7"; 440 | @fa-var-scissors: "\f0c4"; 441 | @fa-var-search: "\f002"; 442 | @fa-var-search-minus: "\f010"; 443 | @fa-var-search-plus: "\f00e"; 444 | @fa-var-sellsy: "\f213"; 445 | @fa-var-send: "\f1d8"; 446 | @fa-var-send-o: "\f1d9"; 447 | @fa-var-server: "\f233"; 448 | @fa-var-share: "\f064"; 449 | @fa-var-share-alt: "\f1e0"; 450 | @fa-var-share-alt-square: "\f1e1"; 451 | @fa-var-share-square: "\f14d"; 452 | @fa-var-share-square-o: "\f045"; 453 | @fa-var-shekel: "\f20b"; 454 | @fa-var-sheqel: "\f20b"; 455 | @fa-var-shield: "\f132"; 456 | @fa-var-ship: "\f21a"; 457 | @fa-var-shirtsinbulk: "\f214"; 458 | @fa-var-shopping-cart: "\f07a"; 459 | @fa-var-sign-in: "\f090"; 460 | @fa-var-sign-out: "\f08b"; 461 | @fa-var-signal: "\f012"; 462 | @fa-var-simplybuilt: "\f215"; 463 | @fa-var-sitemap: "\f0e8"; 464 | @fa-var-skyatlas: "\f216"; 465 | @fa-var-skype: "\f17e"; 466 | @fa-var-slack: "\f198"; 467 | @fa-var-sliders: "\f1de"; 468 | @fa-var-slideshare: "\f1e7"; 469 | @fa-var-smile-o: "\f118"; 470 | @fa-var-soccer-ball-o: "\f1e3"; 471 | @fa-var-sort: "\f0dc"; 472 | @fa-var-sort-alpha-asc: "\f15d"; 473 | @fa-var-sort-alpha-desc: "\f15e"; 474 | @fa-var-sort-amount-asc: "\f160"; 475 | @fa-var-sort-amount-desc: "\f161"; 476 | @fa-var-sort-asc: "\f0de"; 477 | @fa-var-sort-desc: "\f0dd"; 478 | @fa-var-sort-down: "\f0dd"; 479 | @fa-var-sort-numeric-asc: "\f162"; 480 | @fa-var-sort-numeric-desc: "\f163"; 481 | @fa-var-sort-up: "\f0de"; 482 | @fa-var-soundcloud: "\f1be"; 483 | @fa-var-space-shuttle: "\f197"; 484 | @fa-var-spinner: "\f110"; 485 | @fa-var-spoon: "\f1b1"; 486 | @fa-var-spotify: "\f1bc"; 487 | @fa-var-square: "\f0c8"; 488 | @fa-var-square-o: "\f096"; 489 | @fa-var-stack-exchange: "\f18d"; 490 | @fa-var-stack-overflow: "\f16c"; 491 | @fa-var-star: "\f005"; 492 | @fa-var-star-half: "\f089"; 493 | @fa-var-star-half-empty: "\f123"; 494 | @fa-var-star-half-full: "\f123"; 495 | @fa-var-star-half-o: "\f123"; 496 | @fa-var-star-o: "\f006"; 497 | @fa-var-steam: "\f1b6"; 498 | @fa-var-steam-square: "\f1b7"; 499 | @fa-var-step-backward: "\f048"; 500 | @fa-var-step-forward: "\f051"; 501 | @fa-var-stethoscope: "\f0f1"; 502 | @fa-var-stop: "\f04d"; 503 | @fa-var-street-view: "\f21d"; 504 | @fa-var-strikethrough: "\f0cc"; 505 | @fa-var-stumbleupon: "\f1a4"; 506 | @fa-var-stumbleupon-circle: "\f1a3"; 507 | @fa-var-subscript: "\f12c"; 508 | @fa-var-subway: "\f239"; 509 | @fa-var-suitcase: "\f0f2"; 510 | @fa-var-sun-o: "\f185"; 511 | @fa-var-superscript: "\f12b"; 512 | @fa-var-support: "\f1cd"; 513 | @fa-var-table: "\f0ce"; 514 | @fa-var-tablet: "\f10a"; 515 | @fa-var-tachometer: "\f0e4"; 516 | @fa-var-tag: "\f02b"; 517 | @fa-var-tags: "\f02c"; 518 | @fa-var-tasks: "\f0ae"; 519 | @fa-var-taxi: "\f1ba"; 520 | @fa-var-tencent-weibo: "\f1d5"; 521 | @fa-var-terminal: "\f120"; 522 | @fa-var-text-height: "\f034"; 523 | @fa-var-text-width: "\f035"; 524 | @fa-var-th: "\f00a"; 525 | @fa-var-th-large: "\f009"; 526 | @fa-var-th-list: "\f00b"; 527 | @fa-var-thumb-tack: "\f08d"; 528 | @fa-var-thumbs-down: "\f165"; 529 | @fa-var-thumbs-o-down: "\f088"; 530 | @fa-var-thumbs-o-up: "\f087"; 531 | @fa-var-thumbs-up: "\f164"; 532 | @fa-var-ticket: "\f145"; 533 | @fa-var-times: "\f00d"; 534 | @fa-var-times-circle: "\f057"; 535 | @fa-var-times-circle-o: "\f05c"; 536 | @fa-var-tint: "\f043"; 537 | @fa-var-toggle-down: "\f150"; 538 | @fa-var-toggle-left: "\f191"; 539 | @fa-var-toggle-off: "\f204"; 540 | @fa-var-toggle-on: "\f205"; 541 | @fa-var-toggle-right: "\f152"; 542 | @fa-var-toggle-up: "\f151"; 543 | @fa-var-train: "\f238"; 544 | @fa-var-transgender: "\f224"; 545 | @fa-var-transgender-alt: "\f225"; 546 | @fa-var-trash: "\f1f8"; 547 | @fa-var-trash-o: "\f014"; 548 | @fa-var-tree: "\f1bb"; 549 | @fa-var-trello: "\f181"; 550 | @fa-var-trophy: "\f091"; 551 | @fa-var-truck: "\f0d1"; 552 | @fa-var-try: "\f195"; 553 | @fa-var-tty: "\f1e4"; 554 | @fa-var-tumblr: "\f173"; 555 | @fa-var-tumblr-square: "\f174"; 556 | @fa-var-turkish-lira: "\f195"; 557 | @fa-var-twitch: "\f1e8"; 558 | @fa-var-twitter: "\f099"; 559 | @fa-var-twitter-square: "\f081"; 560 | @fa-var-umbrella: "\f0e9"; 561 | @fa-var-underline: "\f0cd"; 562 | @fa-var-undo: "\f0e2"; 563 | @fa-var-university: "\f19c"; 564 | @fa-var-unlink: "\f127"; 565 | @fa-var-unlock: "\f09c"; 566 | @fa-var-unlock-alt: "\f13e"; 567 | @fa-var-unsorted: "\f0dc"; 568 | @fa-var-upload: "\f093"; 569 | @fa-var-usd: "\f155"; 570 | @fa-var-user: "\f007"; 571 | @fa-var-user-md: "\f0f0"; 572 | @fa-var-user-plus: "\f234"; 573 | @fa-var-user-secret: "\f21b"; 574 | @fa-var-user-times: "\f235"; 575 | @fa-var-users: "\f0c0"; 576 | @fa-var-venus: "\f221"; 577 | @fa-var-venus-double: "\f226"; 578 | @fa-var-venus-mars: "\f228"; 579 | @fa-var-viacoin: "\f237"; 580 | @fa-var-video-camera: "\f03d"; 581 | @fa-var-vimeo-square: "\f194"; 582 | @fa-var-vine: "\f1ca"; 583 | @fa-var-vk: "\f189"; 584 | @fa-var-volume-down: "\f027"; 585 | @fa-var-volume-off: "\f026"; 586 | @fa-var-volume-up: "\f028"; 587 | @fa-var-warning: "\f071"; 588 | @fa-var-wechat: "\f1d7"; 589 | @fa-var-weibo: "\f18a"; 590 | @fa-var-weixin: "\f1d7"; 591 | @fa-var-whatsapp: "\f232"; 592 | @fa-var-wheelchair: "\f193"; 593 | @fa-var-wifi: "\f1eb"; 594 | @fa-var-windows: "\f17a"; 595 | @fa-var-won: "\f159"; 596 | @fa-var-wordpress: "\f19a"; 597 | @fa-var-wrench: "\f0ad"; 598 | @fa-var-xing: "\f168"; 599 | @fa-var-xing-square: "\f169"; 600 | @fa-var-yahoo: "\f19e"; 601 | @fa-var-yelp: "\f1e9"; 602 | @fa-var-yen: "\f157"; 603 | @fa-var-youtube: "\f167"; 604 | @fa-var-youtube-play: "\f16a"; 605 | @fa-var-youtube-square: "\f166"; 606 | 607 | -------------------------------------------------------------------------------- /font-awesome/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | $fa-font-path: "../fonts" !default; 5 | $fa-font-size-base: 14px !default; 6 | //$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly 7 | $fa-css-prefix: fa !default; 8 | $fa-version: "4.3.0" !default; 9 | $fa-border-color: #eee !default; 10 | $fa-inverse: #fff !default; 11 | $fa-li-width: (30em / 14) !default; 12 | 13 | $fa-var-adjust: "\f042"; 14 | $fa-var-adn: "\f170"; 15 | $fa-var-align-center: "\f037"; 16 | $fa-var-align-justify: "\f039"; 17 | $fa-var-align-left: "\f036"; 18 | $fa-var-align-right: "\f038"; 19 | $fa-var-ambulance: "\f0f9"; 20 | $fa-var-anchor: "\f13d"; 21 | $fa-var-android: "\f17b"; 22 | $fa-var-angellist: "\f209"; 23 | $fa-var-angle-double-down: "\f103"; 24 | $fa-var-angle-double-left: "\f100"; 25 | $fa-var-angle-double-right: "\f101"; 26 | $fa-var-angle-double-up: "\f102"; 27 | $fa-var-angle-down: "\f107"; 28 | $fa-var-angle-left: "\f104"; 29 | $fa-var-angle-right: "\f105"; 30 | $fa-var-angle-up: "\f106"; 31 | $fa-var-apple: "\f179"; 32 | $fa-var-archive: "\f187"; 33 | $fa-var-area-chart: "\f1fe"; 34 | $fa-var-arrow-circle-down: "\f0ab"; 35 | $fa-var-arrow-circle-left: "\f0a8"; 36 | $fa-var-arrow-circle-o-down: "\f01a"; 37 | $fa-var-arrow-circle-o-left: "\f190"; 38 | $fa-var-arrow-circle-o-right: "\f18e"; 39 | $fa-var-arrow-circle-o-up: "\f01b"; 40 | $fa-var-arrow-circle-right: "\f0a9"; 41 | $fa-var-arrow-circle-up: "\f0aa"; 42 | $fa-var-arrow-down: "\f063"; 43 | $fa-var-arrow-left: "\f060"; 44 | $fa-var-arrow-right: "\f061"; 45 | $fa-var-arrow-up: "\f062"; 46 | $fa-var-arrows: "\f047"; 47 | $fa-var-arrows-alt: "\f0b2"; 48 | $fa-var-arrows-h: "\f07e"; 49 | $fa-var-arrows-v: "\f07d"; 50 | $fa-var-asterisk: "\f069"; 51 | $fa-var-at: "\f1fa"; 52 | $fa-var-automobile: "\f1b9"; 53 | $fa-var-backward: "\f04a"; 54 | $fa-var-ban: "\f05e"; 55 | $fa-var-bank: "\f19c"; 56 | $fa-var-bar-chart: "\f080"; 57 | $fa-var-bar-chart-o: "\f080"; 58 | $fa-var-barcode: "\f02a"; 59 | $fa-var-bars: "\f0c9"; 60 | $fa-var-bed: "\f236"; 61 | $fa-var-beer: "\f0fc"; 62 | $fa-var-behance: "\f1b4"; 63 | $fa-var-behance-square: "\f1b5"; 64 | $fa-var-bell: "\f0f3"; 65 | $fa-var-bell-o: "\f0a2"; 66 | $fa-var-bell-slash: "\f1f6"; 67 | $fa-var-bell-slash-o: "\f1f7"; 68 | $fa-var-bicycle: "\f206"; 69 | $fa-var-binoculars: "\f1e5"; 70 | $fa-var-birthday-cake: "\f1fd"; 71 | $fa-var-bitbucket: "\f171"; 72 | $fa-var-bitbucket-square: "\f172"; 73 | $fa-var-bitcoin: "\f15a"; 74 | $fa-var-bold: "\f032"; 75 | $fa-var-bolt: "\f0e7"; 76 | $fa-var-bomb: "\f1e2"; 77 | $fa-var-book: "\f02d"; 78 | $fa-var-bookmark: "\f02e"; 79 | $fa-var-bookmark-o: "\f097"; 80 | $fa-var-briefcase: "\f0b1"; 81 | $fa-var-btc: "\f15a"; 82 | $fa-var-bug: "\f188"; 83 | $fa-var-building: "\f1ad"; 84 | $fa-var-building-o: "\f0f7"; 85 | $fa-var-bullhorn: "\f0a1"; 86 | $fa-var-bullseye: "\f140"; 87 | $fa-var-bus: "\f207"; 88 | $fa-var-buysellads: "\f20d"; 89 | $fa-var-cab: "\f1ba"; 90 | $fa-var-calculator: "\f1ec"; 91 | $fa-var-calendar: "\f073"; 92 | $fa-var-calendar-o: "\f133"; 93 | $fa-var-camera: "\f030"; 94 | $fa-var-camera-retro: "\f083"; 95 | $fa-var-car: "\f1b9"; 96 | $fa-var-caret-down: "\f0d7"; 97 | $fa-var-caret-left: "\f0d9"; 98 | $fa-var-caret-right: "\f0da"; 99 | $fa-var-caret-square-o-down: "\f150"; 100 | $fa-var-caret-square-o-left: "\f191"; 101 | $fa-var-caret-square-o-right: "\f152"; 102 | $fa-var-caret-square-o-up: "\f151"; 103 | $fa-var-caret-up: "\f0d8"; 104 | $fa-var-cart-arrow-down: "\f218"; 105 | $fa-var-cart-plus: "\f217"; 106 | $fa-var-cc: "\f20a"; 107 | $fa-var-cc-amex: "\f1f3"; 108 | $fa-var-cc-discover: "\f1f2"; 109 | $fa-var-cc-mastercard: "\f1f1"; 110 | $fa-var-cc-paypal: "\f1f4"; 111 | $fa-var-cc-stripe: "\f1f5"; 112 | $fa-var-cc-visa: "\f1f0"; 113 | $fa-var-certificate: "\f0a3"; 114 | $fa-var-chain: "\f0c1"; 115 | $fa-var-chain-broken: "\f127"; 116 | $fa-var-check: "\f00c"; 117 | $fa-var-check-circle: "\f058"; 118 | $fa-var-check-circle-o: "\f05d"; 119 | $fa-var-check-square: "\f14a"; 120 | $fa-var-check-square-o: "\f046"; 121 | $fa-var-chevron-circle-down: "\f13a"; 122 | $fa-var-chevron-circle-left: "\f137"; 123 | $fa-var-chevron-circle-right: "\f138"; 124 | $fa-var-chevron-circle-up: "\f139"; 125 | $fa-var-chevron-down: "\f078"; 126 | $fa-var-chevron-left: "\f053"; 127 | $fa-var-chevron-right: "\f054"; 128 | $fa-var-chevron-up: "\f077"; 129 | $fa-var-child: "\f1ae"; 130 | $fa-var-circle: "\f111"; 131 | $fa-var-circle-o: "\f10c"; 132 | $fa-var-circle-o-notch: "\f1ce"; 133 | $fa-var-circle-thin: "\f1db"; 134 | $fa-var-clipboard: "\f0ea"; 135 | $fa-var-clock-o: "\f017"; 136 | $fa-var-close: "\f00d"; 137 | $fa-var-cloud: "\f0c2"; 138 | $fa-var-cloud-download: "\f0ed"; 139 | $fa-var-cloud-upload: "\f0ee"; 140 | $fa-var-cny: "\f157"; 141 | $fa-var-code: "\f121"; 142 | $fa-var-code-fork: "\f126"; 143 | $fa-var-codepen: "\f1cb"; 144 | $fa-var-coffee: "\f0f4"; 145 | $fa-var-cog: "\f013"; 146 | $fa-var-cogs: "\f085"; 147 | $fa-var-columns: "\f0db"; 148 | $fa-var-comment: "\f075"; 149 | $fa-var-comment-o: "\f0e5"; 150 | $fa-var-comments: "\f086"; 151 | $fa-var-comments-o: "\f0e6"; 152 | $fa-var-compass: "\f14e"; 153 | $fa-var-compress: "\f066"; 154 | $fa-var-connectdevelop: "\f20e"; 155 | $fa-var-copy: "\f0c5"; 156 | $fa-var-copyright: "\f1f9"; 157 | $fa-var-credit-card: "\f09d"; 158 | $fa-var-crop: "\f125"; 159 | $fa-var-crosshairs: "\f05b"; 160 | $fa-var-css3: "\f13c"; 161 | $fa-var-cube: "\f1b2"; 162 | $fa-var-cubes: "\f1b3"; 163 | $fa-var-cut: "\f0c4"; 164 | $fa-var-cutlery: "\f0f5"; 165 | $fa-var-dashboard: "\f0e4"; 166 | $fa-var-dashcube: "\f210"; 167 | $fa-var-database: "\f1c0"; 168 | $fa-var-dedent: "\f03b"; 169 | $fa-var-delicious: "\f1a5"; 170 | $fa-var-desktop: "\f108"; 171 | $fa-var-deviantart: "\f1bd"; 172 | $fa-var-diamond: "\f219"; 173 | $fa-var-digg: "\f1a6"; 174 | $fa-var-dollar: "\f155"; 175 | $fa-var-dot-circle-o: "\f192"; 176 | $fa-var-download: "\f019"; 177 | $fa-var-dribbble: "\f17d"; 178 | $fa-var-dropbox: "\f16b"; 179 | $fa-var-drupal: "\f1a9"; 180 | $fa-var-edit: "\f044"; 181 | $fa-var-eject: "\f052"; 182 | $fa-var-ellipsis-h: "\f141"; 183 | $fa-var-ellipsis-v: "\f142"; 184 | $fa-var-empire: "\f1d1"; 185 | $fa-var-envelope: "\f0e0"; 186 | $fa-var-envelope-o: "\f003"; 187 | $fa-var-envelope-square: "\f199"; 188 | $fa-var-eraser: "\f12d"; 189 | $fa-var-eur: "\f153"; 190 | $fa-var-euro: "\f153"; 191 | $fa-var-exchange: "\f0ec"; 192 | $fa-var-exclamation: "\f12a"; 193 | $fa-var-exclamation-circle: "\f06a"; 194 | $fa-var-exclamation-triangle: "\f071"; 195 | $fa-var-expand: "\f065"; 196 | $fa-var-external-link: "\f08e"; 197 | $fa-var-external-link-square: "\f14c"; 198 | $fa-var-eye: "\f06e"; 199 | $fa-var-eye-slash: "\f070"; 200 | $fa-var-eyedropper: "\f1fb"; 201 | $fa-var-facebook: "\f09a"; 202 | $fa-var-facebook-f: "\f09a"; 203 | $fa-var-facebook-official: "\f230"; 204 | $fa-var-facebook-square: "\f082"; 205 | $fa-var-fast-backward: "\f049"; 206 | $fa-var-fast-forward: "\f050"; 207 | $fa-var-fax: "\f1ac"; 208 | $fa-var-female: "\f182"; 209 | $fa-var-fighter-jet: "\f0fb"; 210 | $fa-var-file: "\f15b"; 211 | $fa-var-file-archive-o: "\f1c6"; 212 | $fa-var-file-audio-o: "\f1c7"; 213 | $fa-var-file-code-o: "\f1c9"; 214 | $fa-var-file-excel-o: "\f1c3"; 215 | $fa-var-file-image-o: "\f1c5"; 216 | $fa-var-file-movie-o: "\f1c8"; 217 | $fa-var-file-o: "\f016"; 218 | $fa-var-file-pdf-o: "\f1c1"; 219 | $fa-var-file-photo-o: "\f1c5"; 220 | $fa-var-file-picture-o: "\f1c5"; 221 | $fa-var-file-powerpoint-o: "\f1c4"; 222 | $fa-var-file-sound-o: "\f1c7"; 223 | $fa-var-file-text: "\f15c"; 224 | $fa-var-file-text-o: "\f0f6"; 225 | $fa-var-file-video-o: "\f1c8"; 226 | $fa-var-file-word-o: "\f1c2"; 227 | $fa-var-file-zip-o: "\f1c6"; 228 | $fa-var-files-o: "\f0c5"; 229 | $fa-var-film: "\f008"; 230 | $fa-var-filter: "\f0b0"; 231 | $fa-var-fire: "\f06d"; 232 | $fa-var-fire-extinguisher: "\f134"; 233 | $fa-var-flag: "\f024"; 234 | $fa-var-flag-checkered: "\f11e"; 235 | $fa-var-flag-o: "\f11d"; 236 | $fa-var-flash: "\f0e7"; 237 | $fa-var-flask: "\f0c3"; 238 | $fa-var-flickr: "\f16e"; 239 | $fa-var-floppy-o: "\f0c7"; 240 | $fa-var-folder: "\f07b"; 241 | $fa-var-folder-o: "\f114"; 242 | $fa-var-folder-open: "\f07c"; 243 | $fa-var-folder-open-o: "\f115"; 244 | $fa-var-font: "\f031"; 245 | $fa-var-forumbee: "\f211"; 246 | $fa-var-forward: "\f04e"; 247 | $fa-var-foursquare: "\f180"; 248 | $fa-var-frown-o: "\f119"; 249 | $fa-var-futbol-o: "\f1e3"; 250 | $fa-var-gamepad: "\f11b"; 251 | $fa-var-gavel: "\f0e3"; 252 | $fa-var-gbp: "\f154"; 253 | $fa-var-ge: "\f1d1"; 254 | $fa-var-gear: "\f013"; 255 | $fa-var-gears: "\f085"; 256 | $fa-var-genderless: "\f1db"; 257 | $fa-var-gift: "\f06b"; 258 | $fa-var-git: "\f1d3"; 259 | $fa-var-git-square: "\f1d2"; 260 | $fa-var-github: "\f09b"; 261 | $fa-var-github-alt: "\f113"; 262 | $fa-var-github-square: "\f092"; 263 | $fa-var-gittip: "\f184"; 264 | $fa-var-glass: "\f000"; 265 | $fa-var-globe: "\f0ac"; 266 | $fa-var-google: "\f1a0"; 267 | $fa-var-google-plus: "\f0d5"; 268 | $fa-var-google-plus-square: "\f0d4"; 269 | $fa-var-google-wallet: "\f1ee"; 270 | $fa-var-graduation-cap: "\f19d"; 271 | $fa-var-gratipay: "\f184"; 272 | $fa-var-group: "\f0c0"; 273 | $fa-var-h-square: "\f0fd"; 274 | $fa-var-hacker-news: "\f1d4"; 275 | $fa-var-hand-o-down: "\f0a7"; 276 | $fa-var-hand-o-left: "\f0a5"; 277 | $fa-var-hand-o-right: "\f0a4"; 278 | $fa-var-hand-o-up: "\f0a6"; 279 | $fa-var-hdd-o: "\f0a0"; 280 | $fa-var-header: "\f1dc"; 281 | $fa-var-headphones: "\f025"; 282 | $fa-var-heart: "\f004"; 283 | $fa-var-heart-o: "\f08a"; 284 | $fa-var-heartbeat: "\f21e"; 285 | $fa-var-history: "\f1da"; 286 | $fa-var-home: "\f015"; 287 | $fa-var-hospital-o: "\f0f8"; 288 | $fa-var-hotel: "\f236"; 289 | $fa-var-html5: "\f13b"; 290 | $fa-var-ils: "\f20b"; 291 | $fa-var-image: "\f03e"; 292 | $fa-var-inbox: "\f01c"; 293 | $fa-var-indent: "\f03c"; 294 | $fa-var-info: "\f129"; 295 | $fa-var-info-circle: "\f05a"; 296 | $fa-var-inr: "\f156"; 297 | $fa-var-instagram: "\f16d"; 298 | $fa-var-institution: "\f19c"; 299 | $fa-var-ioxhost: "\f208"; 300 | $fa-var-italic: "\f033"; 301 | $fa-var-joomla: "\f1aa"; 302 | $fa-var-jpy: "\f157"; 303 | $fa-var-jsfiddle: "\f1cc"; 304 | $fa-var-key: "\f084"; 305 | $fa-var-keyboard-o: "\f11c"; 306 | $fa-var-krw: "\f159"; 307 | $fa-var-language: "\f1ab"; 308 | $fa-var-laptop: "\f109"; 309 | $fa-var-lastfm: "\f202"; 310 | $fa-var-lastfm-square: "\f203"; 311 | $fa-var-leaf: "\f06c"; 312 | $fa-var-leanpub: "\f212"; 313 | $fa-var-legal: "\f0e3"; 314 | $fa-var-lemon-o: "\f094"; 315 | $fa-var-level-down: "\f149"; 316 | $fa-var-level-up: "\f148"; 317 | $fa-var-life-bouy: "\f1cd"; 318 | $fa-var-life-buoy: "\f1cd"; 319 | $fa-var-life-ring: "\f1cd"; 320 | $fa-var-life-saver: "\f1cd"; 321 | $fa-var-lightbulb-o: "\f0eb"; 322 | $fa-var-line-chart: "\f201"; 323 | $fa-var-link: "\f0c1"; 324 | $fa-var-linkedin: "\f0e1"; 325 | $fa-var-linkedin-square: "\f08c"; 326 | $fa-var-linux: "\f17c"; 327 | $fa-var-list: "\f03a"; 328 | $fa-var-list-alt: "\f022"; 329 | $fa-var-list-ol: "\f0cb"; 330 | $fa-var-list-ul: "\f0ca"; 331 | $fa-var-location-arrow: "\f124"; 332 | $fa-var-lock: "\f023"; 333 | $fa-var-long-arrow-down: "\f175"; 334 | $fa-var-long-arrow-left: "\f177"; 335 | $fa-var-long-arrow-right: "\f178"; 336 | $fa-var-long-arrow-up: "\f176"; 337 | $fa-var-magic: "\f0d0"; 338 | $fa-var-magnet: "\f076"; 339 | $fa-var-mail-forward: "\f064"; 340 | $fa-var-mail-reply: "\f112"; 341 | $fa-var-mail-reply-all: "\f122"; 342 | $fa-var-male: "\f183"; 343 | $fa-var-map-marker: "\f041"; 344 | $fa-var-mars: "\f222"; 345 | $fa-var-mars-double: "\f227"; 346 | $fa-var-mars-stroke: "\f229"; 347 | $fa-var-mars-stroke-h: "\f22b"; 348 | $fa-var-mars-stroke-v: "\f22a"; 349 | $fa-var-maxcdn: "\f136"; 350 | $fa-var-meanpath: "\f20c"; 351 | $fa-var-medium: "\f23a"; 352 | $fa-var-medkit: "\f0fa"; 353 | $fa-var-meh-o: "\f11a"; 354 | $fa-var-mercury: "\f223"; 355 | $fa-var-microphone: "\f130"; 356 | $fa-var-microphone-slash: "\f131"; 357 | $fa-var-minus: "\f068"; 358 | $fa-var-minus-circle: "\f056"; 359 | $fa-var-minus-square: "\f146"; 360 | $fa-var-minus-square-o: "\f147"; 361 | $fa-var-mobile: "\f10b"; 362 | $fa-var-mobile-phone: "\f10b"; 363 | $fa-var-money: "\f0d6"; 364 | $fa-var-moon-o: "\f186"; 365 | $fa-var-mortar-board: "\f19d"; 366 | $fa-var-motorcycle: "\f21c"; 367 | $fa-var-music: "\f001"; 368 | $fa-var-navicon: "\f0c9"; 369 | $fa-var-neuter: "\f22c"; 370 | $fa-var-newspaper-o: "\f1ea"; 371 | $fa-var-openid: "\f19b"; 372 | $fa-var-outdent: "\f03b"; 373 | $fa-var-pagelines: "\f18c"; 374 | $fa-var-paint-brush: "\f1fc"; 375 | $fa-var-paper-plane: "\f1d8"; 376 | $fa-var-paper-plane-o: "\f1d9"; 377 | $fa-var-paperclip: "\f0c6"; 378 | $fa-var-paragraph: "\f1dd"; 379 | $fa-var-paste: "\f0ea"; 380 | $fa-var-pause: "\f04c"; 381 | $fa-var-paw: "\f1b0"; 382 | $fa-var-paypal: "\f1ed"; 383 | $fa-var-pencil: "\f040"; 384 | $fa-var-pencil-square: "\f14b"; 385 | $fa-var-pencil-square-o: "\f044"; 386 | $fa-var-phone: "\f095"; 387 | $fa-var-phone-square: "\f098"; 388 | $fa-var-photo: "\f03e"; 389 | $fa-var-picture-o: "\f03e"; 390 | $fa-var-pie-chart: "\f200"; 391 | $fa-var-pied-piper: "\f1a7"; 392 | $fa-var-pied-piper-alt: "\f1a8"; 393 | $fa-var-pinterest: "\f0d2"; 394 | $fa-var-pinterest-p: "\f231"; 395 | $fa-var-pinterest-square: "\f0d3"; 396 | $fa-var-plane: "\f072"; 397 | $fa-var-play: "\f04b"; 398 | $fa-var-play-circle: "\f144"; 399 | $fa-var-play-circle-o: "\f01d"; 400 | $fa-var-plug: "\f1e6"; 401 | $fa-var-plus: "\f067"; 402 | $fa-var-plus-circle: "\f055"; 403 | $fa-var-plus-square: "\f0fe"; 404 | $fa-var-plus-square-o: "\f196"; 405 | $fa-var-power-off: "\f011"; 406 | $fa-var-print: "\f02f"; 407 | $fa-var-puzzle-piece: "\f12e"; 408 | $fa-var-qq: "\f1d6"; 409 | $fa-var-qrcode: "\f029"; 410 | $fa-var-question: "\f128"; 411 | $fa-var-question-circle: "\f059"; 412 | $fa-var-quote-left: "\f10d"; 413 | $fa-var-quote-right: "\f10e"; 414 | $fa-var-ra: "\f1d0"; 415 | $fa-var-random: "\f074"; 416 | $fa-var-rebel: "\f1d0"; 417 | $fa-var-recycle: "\f1b8"; 418 | $fa-var-reddit: "\f1a1"; 419 | $fa-var-reddit-square: "\f1a2"; 420 | $fa-var-refresh: "\f021"; 421 | $fa-var-remove: "\f00d"; 422 | $fa-var-renren: "\f18b"; 423 | $fa-var-reorder: "\f0c9"; 424 | $fa-var-repeat: "\f01e"; 425 | $fa-var-reply: "\f112"; 426 | $fa-var-reply-all: "\f122"; 427 | $fa-var-retweet: "\f079"; 428 | $fa-var-rmb: "\f157"; 429 | $fa-var-road: "\f018"; 430 | $fa-var-rocket: "\f135"; 431 | $fa-var-rotate-left: "\f0e2"; 432 | $fa-var-rotate-right: "\f01e"; 433 | $fa-var-rouble: "\f158"; 434 | $fa-var-rss: "\f09e"; 435 | $fa-var-rss-square: "\f143"; 436 | $fa-var-rub: "\f158"; 437 | $fa-var-ruble: "\f158"; 438 | $fa-var-rupee: "\f156"; 439 | $fa-var-save: "\f0c7"; 440 | $fa-var-scissors: "\f0c4"; 441 | $fa-var-search: "\f002"; 442 | $fa-var-search-minus: "\f010"; 443 | $fa-var-search-plus: "\f00e"; 444 | $fa-var-sellsy: "\f213"; 445 | $fa-var-send: "\f1d8"; 446 | $fa-var-send-o: "\f1d9"; 447 | $fa-var-server: "\f233"; 448 | $fa-var-share: "\f064"; 449 | $fa-var-share-alt: "\f1e0"; 450 | $fa-var-share-alt-square: "\f1e1"; 451 | $fa-var-share-square: "\f14d"; 452 | $fa-var-share-square-o: "\f045"; 453 | $fa-var-shekel: "\f20b"; 454 | $fa-var-sheqel: "\f20b"; 455 | $fa-var-shield: "\f132"; 456 | $fa-var-ship: "\f21a"; 457 | $fa-var-shirtsinbulk: "\f214"; 458 | $fa-var-shopping-cart: "\f07a"; 459 | $fa-var-sign-in: "\f090"; 460 | $fa-var-sign-out: "\f08b"; 461 | $fa-var-signal: "\f012"; 462 | $fa-var-simplybuilt: "\f215"; 463 | $fa-var-sitemap: "\f0e8"; 464 | $fa-var-skyatlas: "\f216"; 465 | $fa-var-skype: "\f17e"; 466 | $fa-var-slack: "\f198"; 467 | $fa-var-sliders: "\f1de"; 468 | $fa-var-slideshare: "\f1e7"; 469 | $fa-var-smile-o: "\f118"; 470 | $fa-var-soccer-ball-o: "\f1e3"; 471 | $fa-var-sort: "\f0dc"; 472 | $fa-var-sort-alpha-asc: "\f15d"; 473 | $fa-var-sort-alpha-desc: "\f15e"; 474 | $fa-var-sort-amount-asc: "\f160"; 475 | $fa-var-sort-amount-desc: "\f161"; 476 | $fa-var-sort-asc: "\f0de"; 477 | $fa-var-sort-desc: "\f0dd"; 478 | $fa-var-sort-down: "\f0dd"; 479 | $fa-var-sort-numeric-asc: "\f162"; 480 | $fa-var-sort-numeric-desc: "\f163"; 481 | $fa-var-sort-up: "\f0de"; 482 | $fa-var-soundcloud: "\f1be"; 483 | $fa-var-space-shuttle: "\f197"; 484 | $fa-var-spinner: "\f110"; 485 | $fa-var-spoon: "\f1b1"; 486 | $fa-var-spotify: "\f1bc"; 487 | $fa-var-square: "\f0c8"; 488 | $fa-var-square-o: "\f096"; 489 | $fa-var-stack-exchange: "\f18d"; 490 | $fa-var-stack-overflow: "\f16c"; 491 | $fa-var-star: "\f005"; 492 | $fa-var-star-half: "\f089"; 493 | $fa-var-star-half-empty: "\f123"; 494 | $fa-var-star-half-full: "\f123"; 495 | $fa-var-star-half-o: "\f123"; 496 | $fa-var-star-o: "\f006"; 497 | $fa-var-steam: "\f1b6"; 498 | $fa-var-steam-square: "\f1b7"; 499 | $fa-var-step-backward: "\f048"; 500 | $fa-var-step-forward: "\f051"; 501 | $fa-var-stethoscope: "\f0f1"; 502 | $fa-var-stop: "\f04d"; 503 | $fa-var-street-view: "\f21d"; 504 | $fa-var-strikethrough: "\f0cc"; 505 | $fa-var-stumbleupon: "\f1a4"; 506 | $fa-var-stumbleupon-circle: "\f1a3"; 507 | $fa-var-subscript: "\f12c"; 508 | $fa-var-subway: "\f239"; 509 | $fa-var-suitcase: "\f0f2"; 510 | $fa-var-sun-o: "\f185"; 511 | $fa-var-superscript: "\f12b"; 512 | $fa-var-support: "\f1cd"; 513 | $fa-var-table: "\f0ce"; 514 | $fa-var-tablet: "\f10a"; 515 | $fa-var-tachometer: "\f0e4"; 516 | $fa-var-tag: "\f02b"; 517 | $fa-var-tags: "\f02c"; 518 | $fa-var-tasks: "\f0ae"; 519 | $fa-var-taxi: "\f1ba"; 520 | $fa-var-tencent-weibo: "\f1d5"; 521 | $fa-var-terminal: "\f120"; 522 | $fa-var-text-height: "\f034"; 523 | $fa-var-text-width: "\f035"; 524 | $fa-var-th: "\f00a"; 525 | $fa-var-th-large: "\f009"; 526 | $fa-var-th-list: "\f00b"; 527 | $fa-var-thumb-tack: "\f08d"; 528 | $fa-var-thumbs-down: "\f165"; 529 | $fa-var-thumbs-o-down: "\f088"; 530 | $fa-var-thumbs-o-up: "\f087"; 531 | $fa-var-thumbs-up: "\f164"; 532 | $fa-var-ticket: "\f145"; 533 | $fa-var-times: "\f00d"; 534 | $fa-var-times-circle: "\f057"; 535 | $fa-var-times-circle-o: "\f05c"; 536 | $fa-var-tint: "\f043"; 537 | $fa-var-toggle-down: "\f150"; 538 | $fa-var-toggle-left: "\f191"; 539 | $fa-var-toggle-off: "\f204"; 540 | $fa-var-toggle-on: "\f205"; 541 | $fa-var-toggle-right: "\f152"; 542 | $fa-var-toggle-up: "\f151"; 543 | $fa-var-train: "\f238"; 544 | $fa-var-transgender: "\f224"; 545 | $fa-var-transgender-alt: "\f225"; 546 | $fa-var-trash: "\f1f8"; 547 | $fa-var-trash-o: "\f014"; 548 | $fa-var-tree: "\f1bb"; 549 | $fa-var-trello: "\f181"; 550 | $fa-var-trophy: "\f091"; 551 | $fa-var-truck: "\f0d1"; 552 | $fa-var-try: "\f195"; 553 | $fa-var-tty: "\f1e4"; 554 | $fa-var-tumblr: "\f173"; 555 | $fa-var-tumblr-square: "\f174"; 556 | $fa-var-turkish-lira: "\f195"; 557 | $fa-var-twitch: "\f1e8"; 558 | $fa-var-twitter: "\f099"; 559 | $fa-var-twitter-square: "\f081"; 560 | $fa-var-umbrella: "\f0e9"; 561 | $fa-var-underline: "\f0cd"; 562 | $fa-var-undo: "\f0e2"; 563 | $fa-var-university: "\f19c"; 564 | $fa-var-unlink: "\f127"; 565 | $fa-var-unlock: "\f09c"; 566 | $fa-var-unlock-alt: "\f13e"; 567 | $fa-var-unsorted: "\f0dc"; 568 | $fa-var-upload: "\f093"; 569 | $fa-var-usd: "\f155"; 570 | $fa-var-user: "\f007"; 571 | $fa-var-user-md: "\f0f0"; 572 | $fa-var-user-plus: "\f234"; 573 | $fa-var-user-secret: "\f21b"; 574 | $fa-var-user-times: "\f235"; 575 | $fa-var-users: "\f0c0"; 576 | $fa-var-venus: "\f221"; 577 | $fa-var-venus-double: "\f226"; 578 | $fa-var-venus-mars: "\f228"; 579 | $fa-var-viacoin: "\f237"; 580 | $fa-var-video-camera: "\f03d"; 581 | $fa-var-vimeo-square: "\f194"; 582 | $fa-var-vine: "\f1ca"; 583 | $fa-var-vk: "\f189"; 584 | $fa-var-volume-down: "\f027"; 585 | $fa-var-volume-off: "\f026"; 586 | $fa-var-volume-up: "\f028"; 587 | $fa-var-warning: "\f071"; 588 | $fa-var-wechat: "\f1d7"; 589 | $fa-var-weibo: "\f18a"; 590 | $fa-var-weixin: "\f1d7"; 591 | $fa-var-whatsapp: "\f232"; 592 | $fa-var-wheelchair: "\f193"; 593 | $fa-var-wifi: "\f1eb"; 594 | $fa-var-windows: "\f17a"; 595 | $fa-var-won: "\f159"; 596 | $fa-var-wordpress: "\f19a"; 597 | $fa-var-wrench: "\f0ad"; 598 | $fa-var-xing: "\f168"; 599 | $fa-var-xing-square: "\f169"; 600 | $fa-var-yahoo: "\f19e"; 601 | $fa-var-yelp: "\f1e9"; 602 | $fa-var-yen: "\f157"; 603 | $fa-var-youtube: "\f167"; 604 | $fa-var-youtube-play: "\f16a"; 605 | $fa-var-youtube-square: "\f166"; 606 | 607 | -------------------------------------------------------------------------------- /font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.2",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.2",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('