diff --git a/.editorconfig b/.editorconfig index f6b5670..c6f3cf4 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,20 +1,24 @@ +# This file is for unifying the coding style for different editors and IDEs # editorconfig.org + +# WordPress Coding Standards +# https://make.wordpress.org/core/handbook/coding-standards/ + root = true [*] charset = utf-8 end_of_line = lf -indent_size = 4 -tab_width = 4 -indent_style = tab insert_final_newline = true trim_trailing_whitespace = true +indent_style = tab + +[*.yml] +indent_style = space +indent_size = 2 [*.md] trim_trailing_whitespace = false -[*.json] -indent_size = 2 -tab_width = 2 -indent_style = space -insert_final_newline = false +[{*.txt,wp-config-sample.php}] +end_of_line = crlf diff --git a/.gitignore b/.gitignore index 242437a..7c0c2cf 100644 --- a/.gitignore +++ b/.gitignore @@ -28,9 +28,10 @@ Thumbs.db bower_components node_modules .sass-cache +vendor # Ignore project files sftp-config.json .ftppass *.zip -src/node_modules/* +dist diff --git a/assets/js/.jshintrc b/.jshintrc similarity index 72% rename from assets/js/.jshintrc rename to .jshintrc index 0766eb4..caf2c55 100644 --- a/assets/js/.jshintrc +++ b/.jshintrc @@ -7,6 +7,7 @@ "expr": true, "immed": true, "noarg": true, + "nonbsp": true, "onevar": true, "quotmark": "single", "trailing": true, @@ -16,9 +17,14 @@ "browser": true, "globals": { + "$": false, "_": false, "Backbone": false, "jQuery": false, - "wp": false + "JSON": false, + "wp": false, + "export": false, + "module": false, + "require": false } } diff --git a/404.php b/404.php index 799bb02..d8cba74 100644 --- a/404.php +++ b/404.php @@ -1,26 +1,24 @@ - -
- - - -
-

- - -
- -
+/** + * Content Component. + */ +get_template_part( 'components/main/main', '404' ); -Odin logo

-[Ver essa documentação em Português do Brasil](https://github.com/wpbrasil/odin/blob/master/docs/README-pt_BR.md) +# Odin -![Odin Framework](https://i.imgur.com/DdeMgUx.png) +Odin is a base theme made in [@wpbrasil](https://github.com/wpbrasil) to ~kick ass~ help developing of WordPress themes. -* [Website](http://wpod.in/) -* [Odin Expo](http://expo.wpod.in/) -* [GitHub](https://github.com/wpbrasil/odin) -* [WordPress Brasil Group on Facebook](https://www.facebook.com/groups/wordpress.brasil) +- [Odin](http://wpod.in/) +- [Docs](https://github.com/wpbrasil/odin/tree/master/docs) +- [Expo](http://expo.wpod.in/) +- [Toolkit](https://github.com/wpbrasil/odin-toolkit) +- [WordPress Brasil](https://github.com/wpbrasil/) -## Project Description ## +## Getting start -Welcome to Odin, a base-theme developed by [WordPress Brasil Group](https://www.facebook.com/groups/wordpress.brasil), to help on agile development of themes for WordPress. +```bash +# install dependencies +npm install -## Installation ## +# serve with live reload at localhost:3000 +npm run dev -Send the folder "odin" to the default themes folder from WordPress `wp-content/themes` or send the zipball using the WordPress Theme Installer. +# build for production with minification +npm run build +``` -## Documentation ## +**To fix dependencies on Windows +https://github.com/nodejs/node-gyp#on-windows** -Informations about how-to use the classes and functions from Odin is on the [Official Wiki](https://github.com/wpbrasil/odin/wiki/) +For detailed explanation on how things work, consult the [docs for Odin](https://github.com/wpbrasil/odin/tree/master/docs). -## Plugins Support ## +## License -Odin supports natively these plugins: +[MIT](http://opensource.org/licenses/MIT). And all PHP files [GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt). -* [WooCommerce](http://wordpress.org/extend/plugins/woocommerce/) -* [JetPack](http://wordpress.org/extend/plugins/jetpack/) Infinite Scroll - -## References ## - -* [Bootstrap](http://getbootstrap.com/) -* [Bootstrap Sass](https://github.com/twbs/bootstrap-sass) -* [HTML5shiv](https://github.com/aFarkas/html5shiv) -* [matchMedia() polyfill](https://github.com/paulirish/matchMedia.js/) -* [Respond.js](https://github.com/scottjehl/Respond) -* [Sass](http://sass-lang.com/) -* [Compass](http://compass-style.org/) -* [Grunt.js](http://gruntjs.com/) -* [aq_resize](https://github.com/sy4mil/Aqua-Resizer) -* [FitVids](https://github.com/davatron5000/FitVids.js) -* [EditorConfig](http://editorconfig.org/) -* [goqr.me](http://goqr.me/) -* [Google Maps](https://developers.google.com/maps/) - -## Bugs and Sugestions ## - -The Odin Framework is an **Open Source** project. Anyone can (and should) help us to improve it. - -Report bugs or do suggestions using the [Issues/Project Forum](https://github.com/wpbrasil/odin/issues) - -## Contribute to the Project ## - -To contribute, just click on the **Fork** button, create a *Branch*, improve the code and send it with a **Pull Request**. - -More details about how to contribute and send Pull Requests in [GitHub Collaborating](https://help.github.com/categories/63/articles). - -[How to colaborate to opensource projects on GitHub](http://www.youtube.com/watch?v=H3olaBo83As) - -## Changelog ## - -[Changelog here!](https://github.com/wpbrasil/odin/blob/master/docs/CHANGELOG.md) - -## Copyright and License ## - -Copyright 2013 - 2018 - WordPress Brasil Group. - -The PHP code is licensed with [GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt). -All the CSS, SCSS, JS, images files and others, not including the PHP files is licensed with [MIT](http://opensource.org/licenses/MIT) or by the license specified inside the file. +Copyright (c) 2013-Present, [@wpbrasil](https://github.com/wpbrasil). diff --git a/archive.php b/archive.php index 5d7ee57..1c855b8 100644 --- a/archive.php +++ b/archive.php @@ -1,59 +1,29 @@ - -
- - - - - - +/** + * Header Component. + */ +get_header(); -
+/** + * Main Component. + */ +get_template_part( 'components/main/main' ); -.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table,.page-content table,.entry-content table,.widget_calendar #wp-calendar{border-collapse:collapse !important}.table td,.page-content table td,.entry-content table td,.widget_calendar #wp-calendar td,.table th,.page-content table th,.entry-content table th,.widget_calendar #wp-calendar th{background-color:#fff !important}.table-bordered th,.widget_calendar #wp-calendar th,.table-bordered td,.widget_calendar #wp-calendar td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.comment-content img,.widget img,.entry-content p img,.wp-caption{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.gallery .gallery-item img{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center,.entry-attachment .attachment,.gallery .gallery-item{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right,blockquote.alignright,.entry-attachment #nav-below blockquote.nav-next{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.alignright footer:before,.entry-attachment #nav-below blockquote.nav-next footer:before,blockquote.pull-right small:before,blockquote.alignright small:before,.entry-attachment #nav-below blockquote.nav-next small:before,blockquote.pull-right .small:before,blockquote.alignright .small:before,.entry-attachment #nav-below blockquote.nav-next .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.alignright footer:after,.entry-attachment #nav-below blockquote.nav-next footer:after,blockquote.pull-right small:after,blockquote.alignright small:after,.entry-attachment #nav-below blockquote.nav-next small:after,blockquote.pull-right .small:after,blockquote.alignright .small:after,.entry-attachment #nav-below blockquote.nav-next .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table,.page-content table,.entry-content table,.widget_calendar #wp-calendar{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.page-content table>thead>tr>th,.entry-content table>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table>thead>tr>td,.page-content table>thead>tr>td,.entry-content table>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table>tbody>tr>th,.page-content table>tbody>tr>th,.entry-content table>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table>tbody>tr>td,.page-content table>tbody>tr>td,.entry-content table>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table>tfoot>tr>th,.page-content table>tfoot>tr>th,.entry-content table>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table>tfoot>tr>td,.page-content table>tfoot>tr>td,.entry-content table>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th,.page-content table>thead>tr>th,.entry-content table>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.page-content table>caption+thead>tr:first-child>th,.entry-content table>caption+thead>tr:first-child>th,.widget_calendar #wp-calendar>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.page-content table>caption+thead>tr:first-child>td,.entry-content table>caption+thead>tr:first-child>td,.widget_calendar #wp-calendar>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.page-content table>colgroup+thead>tr:first-child>th,.entry-content table>colgroup+thead>tr:first-child>th,.widget_calendar #wp-calendar>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.page-content table>colgroup+thead>tr:first-child>td,.entry-content table>colgroup+thead>tr:first-child>td,.widget_calendar #wp-calendar>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.page-content table>thead:first-child>tr:first-child>th,.entry-content table>thead:first-child>tr:first-child>th,.widget_calendar #wp-calendar>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.page-content table>thead:first-child>tr:first-child>td,.entry-content table>thead:first-child>tr:first-child>td,.widget_calendar #wp-calendar>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody,.page-content table>tbody+tbody,.entry-content table>tbody+tbody,.widget_calendar #wp-calendar>tbody+tbody{border-top:2px solid #ddd}.table .table,.page-content table .table,.entry-content table .table,.widget_calendar #wp-calendar .table,.table .page-content table,.page-content .table table,.page-content table table,.widget_calendar #wp-calendar .page-content table,.page-content .widget_calendar #wp-calendar table,.table .entry-content table,.entry-content .table table,.entry-content table table,.widget_calendar #wp-calendar .entry-content table,.entry-content .widget_calendar #wp-calendar table,.table .widget_calendar #wp-calendar,.widget_calendar .table #wp-calendar,.page-content table .widget_calendar #wp-calendar,.widget_calendar .page-content table #wp-calendar,.entry-content table .widget_calendar #wp-calendar,.widget_calendar .entry-content table #wp-calendar,.widget_calendar #wp-calendar #wp-calendar{background-color:#fff}.table-condensed>thead>tr>th,.page-content .table-condensed>thead>tr>th,.entry-content .table-condensed>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-condensed>thead>tr>td,.page-content .table-condensed>thead>tr>td,.entry-content .table-condensed>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table-condensed>tbody>tr>th,.page-content .table-condensed>tbody>tr>th,.entry-content .table-condensed>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table-condensed>tbody>tr>td,.page-content .table-condensed>tbody>tr>td,.entry-content .table-condensed>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table-condensed>tfoot>tr>th,.page-content .table-condensed>tfoot>tr>th,.entry-content .table-condensed>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table-condensed>tfoot>tr>td,.page-content .table-condensed>tfoot>tr>td,.entry-content .table-condensed>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{padding:5px}.table-bordered,.widget_calendar #wp-calendar{border:1px solid #ddd}.table-bordered>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-bordered>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table-bordered>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table-bordered>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table-bordered>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table-bordered>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-bordered>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd),.widget_calendar #wp-calendar>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.page-content table>thead>tr>td.active,.entry-content table>thead>tr>td.active,.widget_calendar #wp-calendar>thead>tr>td.active,.table>thead>tr>th.active,.page-content table>thead>tr>th.active,.entry-content table>thead>tr>th.active,.widget_calendar #wp-calendar>thead>tr>th.active,.table>thead>tr.active>td,.page-content table>thead>tr.active>td,.entry-content table>thead>tr.active>td,.widget_calendar #wp-calendar>thead>tr.active>td,.table>thead>tr.active>th,.page-content table>thead>tr.active>th,.entry-content table>thead>tr.active>th,.widget_calendar #wp-calendar>thead>tr.active>th,.table>tbody>tr>td.active,.page-content table>tbody>tr>td.active,.entry-content table>tbody>tr>td.active,.widget_calendar #wp-calendar>tbody>tr>td.active,.table>tbody>tr>th.active,.page-content table>tbody>tr>th.active,.entry-content table>tbody>tr>th.active,.widget_calendar #wp-calendar>tbody>tr>th.active,.table>tbody>tr.active>td,.page-content table>tbody>tr.active>td,.entry-content table>tbody>tr.active>td,.widget_calendar #wp-calendar>tbody>tr.active>td,.table>tbody>tr.active>th,.page-content table>tbody>tr.active>th,.entry-content table>tbody>tr.active>th,.widget_calendar #wp-calendar>tbody>tr.active>th,.table>tfoot>tr>td.active,.page-content table>tfoot>tr>td.active,.entry-content table>tfoot>tr>td.active,.widget_calendar #wp-calendar>tfoot>tr>td.active,.table>tfoot>tr>th.active,.page-content table>tfoot>tr>th.active,.entry-content table>tfoot>tr>th.active,.widget_calendar #wp-calendar>tfoot>tr>th.active,.table>tfoot>tr.active>td,.page-content table>tfoot>tr.active>td,.entry-content table>tfoot>tr.active>td,.widget_calendar #wp-calendar>tfoot>tr.active>td,.table>tfoot>tr.active>th,.page-content table>tfoot>tr.active>th,.entry-content table>tfoot>tr.active>th,.widget_calendar #wp-calendar>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.page-content table>thead>tr>td.success,.entry-content table>thead>tr>td.success,.widget_calendar #wp-calendar>thead>tr>td.success,.table>thead>tr>th.success,.page-content table>thead>tr>th.success,.entry-content table>thead>tr>th.success,.widget_calendar #wp-calendar>thead>tr>th.success,.table>thead>tr.success>td,.page-content table>thead>tr.success>td,.entry-content table>thead>tr.success>td,.widget_calendar #wp-calendar>thead>tr.success>td,.table>thead>tr.success>th,.page-content table>thead>tr.success>th,.entry-content table>thead>tr.success>th,.widget_calendar #wp-calendar>thead>tr.success>th,.table>tbody>tr>td.success,.page-content table>tbody>tr>td.success,.entry-content table>tbody>tr>td.success,.widget_calendar #wp-calendar>tbody>tr>td.success,.table>tbody>tr>th.success,.page-content table>tbody>tr>th.success,.entry-content table>tbody>tr>th.success,.widget_calendar #wp-calendar>tbody>tr>th.success,.table>tbody>tr.success>td,.page-content table>tbody>tr.success>td,.entry-content table>tbody>tr.success>td,.widget_calendar #wp-calendar>tbody>tr.success>td,.table>tbody>tr.success>th,.page-content table>tbody>tr.success>th,.entry-content table>tbody>tr.success>th,.widget_calendar #wp-calendar>tbody>tr.success>th,.table>tfoot>tr>td.success,.page-content table>tfoot>tr>td.success,.entry-content table>tfoot>tr>td.success,.widget_calendar #wp-calendar>tfoot>tr>td.success,.table>tfoot>tr>th.success,.page-content table>tfoot>tr>th.success,.entry-content table>tfoot>tr>th.success,.widget_calendar #wp-calendar>tfoot>tr>th.success,.table>tfoot>tr.success>td,.page-content table>tfoot>tr.success>td,.entry-content table>tfoot>tr.success>td,.widget_calendar #wp-calendar>tfoot>tr.success>td,.table>tfoot>tr.success>th,.page-content table>tfoot>tr.success>th,.entry-content table>tfoot>tr.success>th,.widget_calendar #wp-calendar>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.page-content table>thead>tr>td.info,.entry-content table>thead>tr>td.info,.widget_calendar #wp-calendar>thead>tr>td.info,.table>thead>tr>th.info,.page-content table>thead>tr>th.info,.entry-content table>thead>tr>th.info,.widget_calendar #wp-calendar>thead>tr>th.info,.table>thead>tr.info>td,.page-content table>thead>tr.info>td,.entry-content table>thead>tr.info>td,.widget_calendar #wp-calendar>thead>tr.info>td,.table>thead>tr.info>th,.page-content table>thead>tr.info>th,.entry-content table>thead>tr.info>th,.widget_calendar #wp-calendar>thead>tr.info>th,.table>tbody>tr>td.info,.page-content table>tbody>tr>td.info,.entry-content table>tbody>tr>td.info,.widget_calendar #wp-calendar>tbody>tr>td.info,.table>tbody>tr>th.info,.page-content table>tbody>tr>th.info,.entry-content table>tbody>tr>th.info,.widget_calendar #wp-calendar>tbody>tr>th.info,.table>tbody>tr.info>td,.page-content table>tbody>tr.info>td,.entry-content table>tbody>tr.info>td,.widget_calendar #wp-calendar>tbody>tr.info>td,.table>tbody>tr.info>th,.page-content table>tbody>tr.info>th,.entry-content table>tbody>tr.info>th,.widget_calendar #wp-calendar>tbody>tr.info>th,.table>tfoot>tr>td.info,.page-content table>tfoot>tr>td.info,.entry-content table>tfoot>tr>td.info,.widget_calendar #wp-calendar>tfoot>tr>td.info,.table>tfoot>tr>th.info,.page-content table>tfoot>tr>th.info,.entry-content table>tfoot>tr>th.info,.widget_calendar #wp-calendar>tfoot>tr>th.info,.table>tfoot>tr.info>td,.page-content table>tfoot>tr.info>td,.entry-content table>tfoot>tr.info>td,.widget_calendar #wp-calendar>tfoot>tr.info>td,.table>tfoot>tr.info>th,.page-content table>tfoot>tr.info>th,.entry-content table>tfoot>tr.info>th,.widget_calendar #wp-calendar>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.page-content table>thead>tr>td.warning,.entry-content table>thead>tr>td.warning,.widget_calendar #wp-calendar>thead>tr>td.warning,.table>thead>tr>th.warning,.page-content table>thead>tr>th.warning,.entry-content table>thead>tr>th.warning,.widget_calendar #wp-calendar>thead>tr>th.warning,.table>thead>tr.warning>td,.page-content table>thead>tr.warning>td,.entry-content table>thead>tr.warning>td,.widget_calendar #wp-calendar>thead>tr.warning>td,.table>thead>tr.warning>th,.page-content table>thead>tr.warning>th,.entry-content table>thead>tr.warning>th,.widget_calendar #wp-calendar>thead>tr.warning>th,.table>tbody>tr>td.warning,.page-content table>tbody>tr>td.warning,.entry-content table>tbody>tr>td.warning,.widget_calendar #wp-calendar>tbody>tr>td.warning,.table>tbody>tr>th.warning,.page-content table>tbody>tr>th.warning,.entry-content table>tbody>tr>th.warning,.widget_calendar #wp-calendar>tbody>tr>th.warning,.table>tbody>tr.warning>td,.page-content table>tbody>tr.warning>td,.entry-content table>tbody>tr.warning>td,.widget_calendar #wp-calendar>tbody>tr.warning>td,.table>tbody>tr.warning>th,.page-content table>tbody>tr.warning>th,.entry-content table>tbody>tr.warning>th,.widget_calendar #wp-calendar>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.page-content table>tfoot>tr>td.warning,.entry-content table>tfoot>tr>td.warning,.widget_calendar #wp-calendar>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.page-content table>tfoot>tr>th.warning,.entry-content table>tfoot>tr>th.warning,.widget_calendar #wp-calendar>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.page-content table>tfoot>tr.warning>td,.entry-content table>tfoot>tr.warning>td,.widget_calendar #wp-calendar>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.page-content table>tfoot>tr.warning>th,.entry-content table>tfoot>tr.warning>th,.widget_calendar #wp-calendar>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.page-content table>thead>tr>td.danger,.entry-content table>thead>tr>td.danger,.widget_calendar #wp-calendar>thead>tr>td.danger,.table>thead>tr>th.danger,.page-content table>thead>tr>th.danger,.entry-content table>thead>tr>th.danger,.widget_calendar #wp-calendar>thead>tr>th.danger,.table>thead>tr.danger>td,.page-content table>thead>tr.danger>td,.entry-content table>thead>tr.danger>td,.widget_calendar #wp-calendar>thead>tr.danger>td,.table>thead>tr.danger>th,.page-content table>thead>tr.danger>th,.entry-content table>thead>tr.danger>th,.widget_calendar #wp-calendar>thead>tr.danger>th,.table>tbody>tr>td.danger,.page-content table>tbody>tr>td.danger,.entry-content table>tbody>tr>td.danger,.widget_calendar #wp-calendar>tbody>tr>td.danger,.table>tbody>tr>th.danger,.page-content table>tbody>tr>th.danger,.entry-content table>tbody>tr>th.danger,.widget_calendar #wp-calendar>tbody>tr>th.danger,.table>tbody>tr.danger>td,.page-content table>tbody>tr.danger>td,.entry-content table>tbody>tr.danger>td,.widget_calendar #wp-calendar>tbody>tr.danger>td,.table>tbody>tr.danger>th,.page-content table>tbody>tr.danger>th,.entry-content table>tbody>tr.danger>th,.widget_calendar #wp-calendar>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.page-content table>tfoot>tr>td.danger,.entry-content table>tfoot>tr>td.danger,.widget_calendar #wp-calendar>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.page-content table>tfoot>tr>th.danger,.entry-content table>tfoot>tr>th.danger,.widget_calendar #wp-calendar>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.page-content table>tfoot>tr.danger>td,.entry-content table>tfoot>tr.danger>td,.widget_calendar #wp-calendar>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.page-content table>tfoot>tr.danger>th,.entry-content table>tfoot>tr.danger>th,.widget_calendar #wp-calendar>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive,.widget_calendar #wp-calendar{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive,.widget_calendar #wp-calendar{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table,.widget_calendar #wp-calendar>.table,.page-content .table-responsive>table,.widget_calendar .page-content #wp-calendar>table,.page-content .widget_calendar #wp-calendar>table,.entry-content .table-responsive>table,.widget_calendar .entry-content #wp-calendar>table,.entry-content .widget_calendar #wp-calendar>table,.widget_calendar .table-responsive>#wp-calendar,.widget_calendar #wp-calendar>#wp-calendar{margin-bottom:0}.table-responsive>.table>thead>tr>th,.widget_calendar #wp-calendar>.table>thead>tr>th,.page-content .table-responsive>table>thead>tr>th,.widget_calendar .page-content #wp-calendar>table>thead>tr>th,.page-content .widget_calendar #wp-calendar>table>thead>tr>th,.entry-content .table-responsive>table>thead>tr>th,.widget_calendar .entry-content #wp-calendar>table>thead>tr>th,.entry-content .widget_calendar #wp-calendar>table>thead>tr>th,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th,.table-responsive>.table>thead>tr>td,.widget_calendar #wp-calendar>.table>thead>tr>td,.page-content .table-responsive>table>thead>tr>td,.widget_calendar .page-content #wp-calendar>table>thead>tr>td,.page-content .widget_calendar #wp-calendar>table>thead>tr>td,.entry-content .table-responsive>table>thead>tr>td,.widget_calendar .entry-content #wp-calendar>table>thead>tr>td,.entry-content .widget_calendar #wp-calendar>table>thead>tr>td,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td,.table-responsive>.table>tbody>tr>th,.widget_calendar #wp-calendar>.table>tbody>tr>th,.page-content .table-responsive>table>tbody>tr>th,.widget_calendar .page-content #wp-calendar>table>tbody>tr>th,.page-content .widget_calendar #wp-calendar>table>tbody>tr>th,.entry-content .table-responsive>table>tbody>tr>th,.widget_calendar .entry-content #wp-calendar>table>tbody>tr>th,.entry-content .widget_calendar #wp-calendar>table>tbody>tr>th,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.widget_calendar #wp-calendar>.table>tbody>tr>td,.page-content .table-responsive>table>tbody>tr>td,.widget_calendar .page-content #wp-calendar>table>tbody>tr>td,.page-content .widget_calendar #wp-calendar>table>tbody>tr>td,.entry-content .table-responsive>table>tbody>tr>td,.widget_calendar .entry-content #wp-calendar>table>tbody>tr>td,.entry-content .widget_calendar #wp-calendar>table>tbody>tr>td,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.widget_calendar #wp-calendar>.table>tfoot>tr>th,.page-content .table-responsive>table>tfoot>tr>th,.widget_calendar .page-content #wp-calendar>table>tfoot>tr>th,.page-content .widget_calendar #wp-calendar>table>tfoot>tr>th,.entry-content .table-responsive>table>tfoot>tr>th,.widget_calendar .entry-content #wp-calendar>table>tfoot>tr>th,.entry-content .widget_calendar #wp-calendar>table>tfoot>tr>th,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td,.widget_calendar #wp-calendar>.table>tfoot>tr>td,.page-content .table-responsive>table>tfoot>tr>td,.widget_calendar .page-content #wp-calendar>table>tfoot>tr>td,.page-content .widget_calendar #wp-calendar>table>tfoot>tr>td,.entry-content .table-responsive>table>tfoot>tr>td,.widget_calendar .entry-content #wp-calendar>table>tfoot>tr>td,.entry-content .widget_calendar #wp-calendar>table>tfoot>tr>td,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered,.widget_calendar #wp-calendar>.table-bordered,.widget_calendar .table-responsive>#wp-calendar,.widget_calendar #wp-calendar>#wp-calendar{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.widget_calendar #wp-calendar>.table-bordered>tbody>tr:last-child>th,.widget_calendar .table-responsive>#wp-calendar>tbody>tr:last-child>th,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.widget_calendar #wp-calendar>.table-bordered>tbody>tr:last-child>td,.widget_calendar .table-responsive>#wp-calendar>tbody>tr:last-child>td,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr:last-child>th,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr:last-child>td,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control,input[name="post_password"]{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus,input[name="post_password"]:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder,input[name="post_password"]::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder,input[name="post_password"]:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder,input[name="post_password"]::-webkit-input-placeholder{color:#999}.form-control::-ms-expand,input[name="post_password"]::-ms-expand{border:0;background-color:transparent}.form-control[disabled],input[disabled][name="post_password"],.form-control[readonly],input[readonly][name="post_password"],fieldset[disabled] .form-control,fieldset[disabled] input[name="post_password"]{background-color:#eee;opacity:1}.form-control[disabled],input[disabled][name="post_password"],fieldset[disabled] .form-control,fieldset[disabled] input[name="post_password"]{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].form-control,input[type="date"][name="post_password"],input[type="time"].form-control,input[type="time"][name="post_password"],input[type="datetime-local"].form-control,input[type="datetime-local"][name="post_password"],input[type="month"].form-control,input[type="month"][name="post_password"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"][name="post_password"],.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,.input-group-sm input[type="date"],input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"][name="post_password"],.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,.input-group-sm input[type="time"],input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"][name="post_password"],.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,.input-group-sm input[type="datetime-local"],input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"][name="post_password"],.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn,.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"][name="post_password"],.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,.input-group-lg input[type="date"],input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"][name="post_password"],.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,.input-group-lg input[type="time"],input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"][name="post_password"],.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,.input-group-lg input[type="datetime-local"],input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"][name="post_password"],.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn,.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>input.form-control-static[name="post_password"],.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>input.form-control-static[name="post_password"],.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>input[name="post_password"],.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.form-group-sm .form-control,.form-group-sm input[name="post_password"]{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg,.input-group-lg>.form-control,.input-group-lg>input[name="post_password"],.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.form-group-lg .form-control,.form-group-lg input[name="post_password"]{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.has-feedback{position:relative}.has-feedback .form-control,.has-feedback input[name="post_password"]{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>input[name="post_password"]+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback,.form-group-lg input[name="post_password"]+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>input[name="post_password"]+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback,.form-group-sm input[name="post_password"]+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control,.has-success input[name="post_password"]{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus,.has-success input[name="post_password"]:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control,.has-warning input[name="post_password"]{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus,.has-warning input[name="post_password"]:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control,.has-error input[name="post_password"]{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus,.has-error input[name="post_password"]:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.form-inline input[name="post_password"]{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control,.form-inline .input-group input[name="post_password"]{width:auto}.form-inline .input-group>.form-control,.form-inline .input-group>input[name="post_password"]{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default:active:focus,.btn-default:active.focus,.btn-default.active:hover,.btn-default.active:focus,.btn-default.active.focus,.open>.btn-default.dropdown-toggle:hover,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary:active:focus,.btn-primary:active.focus,.btn-primary.active:hover,.btn-primary.active:focus,.btn-primary.active.focus,.open>.btn-primary.dropdown-toggle:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success:active:focus,.btn-success:active.focus,.btn-success.active:hover,.btn-success.active:focus,.btn-success.active.focus,.open>.btn-success.dropdown-toggle:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info:active:focus,.btn-info:active.focus,.btn-info.active:hover,.btn-info.active:focus,.btn-info.active.focus,.open>.btn-info.dropdown-toggle:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning:active:focus,.btn-warning:active.focus,.btn-warning.active:hover,.btn-warning.active:focus,.btn-warning.active.focus,.open>.btn-warning.dropdown-toggle:hover,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger:active:focus,.btn-danger:active.focus,.btn-danger.active:hover,.btn-danger.active:focus,.btn-danger.active.focus,.open>.btn-danger.dropdown-toggle:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right,.dropdown-menu.alignright,.entry-attachment #nav-below .dropdown-menu.nav-next,.widget_calendar #wp-calendar #next a.dropdown-menu{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu,.alignright>.dropdown-menu,.entry-attachment #nav-below .nav-next>.dropdown-menu,.widget_calendar #wp-calendar #next a>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control,.input-group input[name="post_password"]{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus,.input-group input[name="post_password"]:focus{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control,.input-group input[name="post_password"]{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child),.input-group input[name="post_password"]:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group input[name="post_password"]:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group input[name="post_password"]:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control,.navbar-form input[name="post_password"]{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control,.navbar-form .input-group input[name="post_password"]{width:auto}.navbar-form .input-group>.form-control,.navbar-form .input-group>input[name="post_password"]{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail,.wp-caption{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.wp-caption>img,.thumbnail a>img,.wp-caption a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption,.wp-caption .caption{padding:9px;color:#333}a.thumbnail:hover,a.wp-caption:hover,a.thumbnail:focus,a.wp-caption:focus,a.thumbnail.active,a.active.wp-caption{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail,.gallery .gallery-item img.media-object{max-width:none}.media-right,.media>.pull-right,.media>.alignright,.entry-attachment #nav-below .media>.nav-next,.widget_calendar #wp-calendar #next .media>a{padding-left:10px}.media-left,.media>.pull-left,.media>.alignleft,.entry-attachment #nav-below .media>.nav-previous,.gallery .media>.gallery-item,.widget_calendar #wp-calendar #prev .media>a{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus,button.list-group-item:hover,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:hover,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active,button.list-group-item-success.active:hover,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:hover,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active,button.list-group-item-info.active:hover,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:hover,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active,button.list-group-item-warning.active:hover,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:hover,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active,button.list-group-item-danger.active:hover,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.page-content .panel>table,.entry-content .panel>table,.widget_calendar .panel>#wp-calendar,.panel>.table-responsive>.table,.widget_calendar .panel>#wp-calendar>.table,.page-content .panel>.table-responsive>table,.widget_calendar .page-content .panel>#wp-calendar>table,.page-content .widget_calendar .panel>#wp-calendar>table,.entry-content .panel>.table-responsive>table,.widget_calendar .entry-content .panel>#wp-calendar>table,.entry-content .widget_calendar .panel>#wp-calendar>table,.widget_calendar .panel>.table-responsive>#wp-calendar,.widget_calendar .panel>#wp-calendar>#wp-calendar,.panel>.panel-collapse>.table,.page-content .panel>.panel-collapse>table,.entry-content .panel>.panel-collapse>table,.widget_calendar .panel>.panel-collapse>#wp-calendar{margin-bottom:0}.panel>.table caption,.page-content .panel>table caption,.entry-content .panel>table caption,.widget_calendar .panel>#wp-calendar caption,.panel>.table-responsive>.table caption,.widget_calendar .panel>#wp-calendar>.table caption,.page-content .panel>.table-responsive>table caption,.widget_calendar .page-content .panel>#wp-calendar>table caption,.page-content .widget_calendar .panel>#wp-calendar>table caption,.entry-content .panel>.table-responsive>table caption,.widget_calendar .entry-content .panel>#wp-calendar>table caption,.entry-content .widget_calendar .panel>#wp-calendar>table caption,.widget_calendar .panel>.table-responsive>#wp-calendar caption,.widget_calendar .panel>#wp-calendar>#wp-calendar caption,.panel>.panel-collapse>.table caption,.page-content .panel>.panel-collapse>table caption,.entry-content .panel>.panel-collapse>table caption,.widget_calendar .panel>.panel-collapse>#wp-calendar caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.page-content .panel>table:first-child,.entry-content .panel>table:first-child,.widget_calendar .panel>#wp-calendar:first-child,.panel>.table-responsive:first-child>.table:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child,.page-content .panel>.table-responsive:first-child>table:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.page-content .panel>table:last-child,.entry-content .panel>table:last-child,.widget_calendar .panel>#wp-calendar:last-child,.panel>.table-responsive:last-child>.table:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child,.page-content .panel>.table-responsive:last-child>table:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.page-content .panel>.panel-body+table,.entry-content .panel>.panel-body+table,.widget_calendar .panel>.panel-body+#wp-calendar,.panel>.panel-body+.table-responsive,.widget_calendar .panel>.panel-body+#wp-calendar,.panel>.table+.panel-body,.page-content .panel>table+.panel-body,.entry-content .panel>table+.panel-body,.widget_calendar .panel>#wp-calendar+.panel-body,.panel>.table-responsive+.panel-body,.widget_calendar .panel>#wp-calendar+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.page-content .panel>table>tbody:first-child>tr:first-child th,.entry-content .panel>table>tbody:first-child>tr:first-child th,.widget_calendar .panel>#wp-calendar>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.page-content .panel>table>tbody:first-child>tr:first-child td,.entry-content .panel>table>tbody:first-child>tr:first-child td,.widget_calendar .panel>#wp-calendar>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.widget_calendar .panel>#wp-calendar,.panel>.table-responsive>.table-bordered,.widget_calendar .panel>#wp-calendar>.table-bordered,.widget_calendar .panel>.table-responsive>#wp-calendar,.widget_calendar .panel>#wp-calendar>#wp-calendar{border:0}.panel>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.widget_calendar .panel>#wp-calendar{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:before,.modal-header:after{content:" ";display:table}.modal-header:after{clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:transparent}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block,.aligncenter{display:block;margin-left:auto;margin-right:auto}.pull-right,.alignright,.entry-attachment #nav-below .nav-next,.widget_calendar #wp-calendar #next a{float:right !important}.pull-left,.alignleft,.entry-attachment #nav-below .nav-previous,.gallery .gallery-item,.widget_calendar #wp-calendar #prev a{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.alignnone{margin:0.5em 0}.alignright{margin:0.5em 0 1em 1em}.alignleft{margin:0.5em 1em 1em 0}.aligncenter{margin:0.5em auto}.hentry,.widget{-ms-word-wrap:break-word;word-wrap:break-word}.page-content:before,.page-content:after,.entry-content:before,.entry-content:after{content:" ";display:table}.page-content:after,.entry-content:after{clear:both}.entry-attachment .attachment{margin-bottom:1em}.entry-caption{color:#666}.twitter-tweet-rendered{max-width:100% !important}.gallery{margin:0 auto 1em}.gallery:before,.gallery:after{content:" ";display:table}.gallery:after{clear:both}.gallery.gallery-columns-1 .gallery-item{float:none;margin:2em 2%;width:96%}.gallery.gallery-columns-2 .gallery-item{margin:2em 2%;width:46%}.gallery.gallery-columns-3 .gallery-item{margin:2em 2%;width:29.33333%}.gallery.gallery-columns-4 .gallery-item{margin:2em 2%;width:21%}.gallery.gallery-columns-5 .gallery-item{margin:2em 2%;width:16%}.gallery.gallery-columns-6 .gallery-item{margin:2em 1%;width:14.66667%}.gallery.gallery-columns-7 .gallery-item{margin:2em 1%;width:12.28571%}.gallery.gallery-columns-8 .gallery-item{margin:2em 1%;width:10.5%}.gallery.gallery-columns-9 .gallery-item{margin:2em 1%;width:9.11111%}.gallery .gallery-caption{color:#333;margin-left:0}.gallery dl{margin:0}.gallery br+br{display:none}.hentry img,.widget img{height:auto;max-width:100%;width:auto}img.header-image,img.wp-post-image{max-width:100%;height:auto}img.wp-smiley,.rsswidget img{border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;margin-bottom:0;margin-top:0;padding:0}img#wpstats{display:none}.entry-content p img.alignleft,.entry-content p img.alignright,.entry-content p img.aligncenter,.entry-content p img.aligncenter,.entry-content p img.alignnone,.wp-caption.alignleft,.wp-caption.alignright,.wp-caption.aligncenter,.wp-caption.aligncenter,.wp-caption.alignnone{margin-top:1em;margin-bottom:2em}.wp-caption.aligncenter,.wp-caption.alignnone{clear:both !important}.wp-caption .wp-caption-text{display:inline-block;padding:9px;color:#333}.wp-caption .wp-caption-text:before{color:#666;content:'\2014';font-size:12px;font-style:normal;font-weight:bold;margin-right:5px}.widget_calendar #wp-calendar #prev{border-right:0}.widget_calendar #wp-calendar #next{border-left:0}.widget_tag_cloud a:nth-child(1){font-size:19px!important}.widget_tag_cloud a:nth-child(2){font-size:18px!important}.widget_tag_cloud a:nth-child(3){font-size:30px!important}.widget_tag_cloud a:nth-child(4){font-size:26px!important}.widget_tag_cloud a:nth-child(5){font-size:21px!important}.widget_tag_cloud a:nth-child(6){font-size:16px!important}.widget_tag_cloud a:nth-child(7){font-size:15px!important}.widget_tag_cloud a:nth-child(8){font-size:29px!important}.widget_tag_cloud a:nth-child(9){font-size:16px!important}.widget_tag_cloud a:nth-child(10){font-size:17px!important}.widget_tag_cloud a:nth-child(11){font-size:31px!important}.widget_tag_cloud a:nth-child(12){font-size:32px!important}.wp-video-shortcode{max-width:100%}body{padding:10px} diff --git a/assets/css/editor.scss b/assets/css/editor.scss new file mode 100644 index 0000000..249018b --- /dev/null +++ b/assets/css/editor.scss @@ -0,0 +1,16 @@ +// +// WordPress TinyMCE editor Style +// + +// Import Theme Style +@import "theme.min.css"; + +// Editor Only +html { + max-width: 1200px; + margin-left: auto; + margin-right: auto; + padding: 30px; +} + + diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100644 index 32509c4..0000000 --- a/assets/css/style.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! -Theme Name: Odin -Author URI: http://wpod.in/ -Description: Odin main stylesheet. -Author: the Odin team -Author URI: http://wpod.in/#colaboradores -*//*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,input[type="submit"]>.caret,input[type="reset"]>.caret,button>.caret,.dropup>.btn>.caret,.dropup>input[type="submit"]>.caret,.dropup>input[type="reset"]>.caret,.dropup>button>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table,.page-content table,.entry-content table,.widget_calendar #wp-calendar{border-collapse:collapse !important}.table td,.page-content table td,.entry-content table td,.widget_calendar #wp-calendar td,.table th,.page-content table th,.entry-content table th,.widget_calendar #wp-calendar th{background-color:#fff !important}.table-bordered th,.widget_calendar #wp-calendar th,.table-bordered td,.widget_calendar #wp-calendar td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.comment-content img,.widget img,.entry-content p img,.wp-caption{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.gallery .gallery-item img{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center,.entry-attachment .attachment,.gallery .gallery-item{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right,blockquote.alignright,.entry-attachment #nav-below blockquote.nav-next{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.alignright footer:before,.entry-attachment #nav-below blockquote.nav-next footer:before,blockquote.pull-right small:before,blockquote.alignright small:before,.entry-attachment #nav-below blockquote.nav-next small:before,blockquote.pull-right .small:before,blockquote.alignright .small:before,.entry-attachment #nav-below blockquote.nav-next .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.alignright footer:after,.entry-attachment #nav-below blockquote.nav-next footer:after,blockquote.pull-right small:after,blockquote.alignright small:after,.entry-attachment #nav-below blockquote.nav-next small:after,blockquote.pull-right .small:after,blockquote.alignright .small:after,.entry-attachment #nav-below blockquote.nav-next .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table,.page-content table,.entry-content table,.widget_calendar #wp-calendar{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.page-content table>thead>tr>th,.entry-content table>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table>thead>tr>td,.page-content table>thead>tr>td,.entry-content table>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table>tbody>tr>th,.page-content table>tbody>tr>th,.entry-content table>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table>tbody>tr>td,.page-content table>tbody>tr>td,.entry-content table>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table>tfoot>tr>th,.page-content table>tfoot>tr>th,.entry-content table>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table>tfoot>tr>td,.page-content table>tfoot>tr>td,.entry-content table>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th,.page-content table>thead>tr>th,.entry-content table>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.page-content table>caption+thead>tr:first-child>th,.entry-content table>caption+thead>tr:first-child>th,.widget_calendar #wp-calendar>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.page-content table>caption+thead>tr:first-child>td,.entry-content table>caption+thead>tr:first-child>td,.widget_calendar #wp-calendar>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.page-content table>colgroup+thead>tr:first-child>th,.entry-content table>colgroup+thead>tr:first-child>th,.widget_calendar #wp-calendar>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.page-content table>colgroup+thead>tr:first-child>td,.entry-content table>colgroup+thead>tr:first-child>td,.widget_calendar #wp-calendar>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.page-content table>thead:first-child>tr:first-child>th,.entry-content table>thead:first-child>tr:first-child>th,.widget_calendar #wp-calendar>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.page-content table>thead:first-child>tr:first-child>td,.entry-content table>thead:first-child>tr:first-child>td,.widget_calendar #wp-calendar>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody,.page-content table>tbody+tbody,.entry-content table>tbody+tbody,.widget_calendar #wp-calendar>tbody+tbody{border-top:2px solid #ddd}.table .table,.page-content table .table,.entry-content table .table,.widget_calendar #wp-calendar .table,.table .page-content table,.page-content .table table,.page-content table table,.widget_calendar #wp-calendar .page-content table,.page-content .widget_calendar #wp-calendar table,.table .entry-content table,.entry-content .table table,.entry-content table table,.widget_calendar #wp-calendar .entry-content table,.entry-content .widget_calendar #wp-calendar table,.table .widget_calendar #wp-calendar,.widget_calendar .table #wp-calendar,.page-content table .widget_calendar #wp-calendar,.widget_calendar .page-content table #wp-calendar,.entry-content table .widget_calendar #wp-calendar,.widget_calendar .entry-content table #wp-calendar,.widget_calendar #wp-calendar #wp-calendar{background-color:#fff}.table-condensed>thead>tr>th,.page-content .table-condensed>thead>tr>th,.entry-content .table-condensed>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-condensed>thead>tr>td,.page-content .table-condensed>thead>tr>td,.entry-content .table-condensed>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table-condensed>tbody>tr>th,.page-content .table-condensed>tbody>tr>th,.entry-content .table-condensed>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table-condensed>tbody>tr>td,.page-content .table-condensed>tbody>tr>td,.entry-content .table-condensed>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table-condensed>tfoot>tr>th,.page-content .table-condensed>tfoot>tr>th,.entry-content .table-condensed>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table-condensed>tfoot>tr>td,.page-content .table-condensed>tfoot>tr>td,.entry-content .table-condensed>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{padding:5px}.table-bordered,.widget_calendar #wp-calendar{border:1px solid #ddd}.table-bordered>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-bordered>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td,.table-bordered>tbody>tr>th,.widget_calendar #wp-calendar>tbody>tr>th,.table-bordered>tbody>tr>td,.widget_calendar #wp-calendar>tbody>tr>td,.table-bordered>tfoot>tr>th,.widget_calendar #wp-calendar>tfoot>tr>th,.table-bordered>tfoot>tr>td,.widget_calendar #wp-calendar>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.widget_calendar #wp-calendar>thead>tr>th,.table-bordered>thead>tr>td,.widget_calendar #wp-calendar>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd),.widget_calendar #wp-calendar>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.page-content table>thead>tr>td.active,.entry-content table>thead>tr>td.active,.widget_calendar #wp-calendar>thead>tr>td.active,.table>thead>tr>th.active,.page-content table>thead>tr>th.active,.entry-content table>thead>tr>th.active,.widget_calendar #wp-calendar>thead>tr>th.active,.table>thead>tr.active>td,.page-content table>thead>tr.active>td,.entry-content table>thead>tr.active>td,.widget_calendar #wp-calendar>thead>tr.active>td,.table>thead>tr.active>th,.page-content table>thead>tr.active>th,.entry-content table>thead>tr.active>th,.widget_calendar #wp-calendar>thead>tr.active>th,.table>tbody>tr>td.active,.page-content table>tbody>tr>td.active,.entry-content table>tbody>tr>td.active,.widget_calendar #wp-calendar>tbody>tr>td.active,.table>tbody>tr>th.active,.page-content table>tbody>tr>th.active,.entry-content table>tbody>tr>th.active,.widget_calendar #wp-calendar>tbody>tr>th.active,.table>tbody>tr.active>td,.page-content table>tbody>tr.active>td,.entry-content table>tbody>tr.active>td,.widget_calendar #wp-calendar>tbody>tr.active>td,.table>tbody>tr.active>th,.page-content table>tbody>tr.active>th,.entry-content table>tbody>tr.active>th,.widget_calendar #wp-calendar>tbody>tr.active>th,.table>tfoot>tr>td.active,.page-content table>tfoot>tr>td.active,.entry-content table>tfoot>tr>td.active,.widget_calendar #wp-calendar>tfoot>tr>td.active,.table>tfoot>tr>th.active,.page-content table>tfoot>tr>th.active,.entry-content table>tfoot>tr>th.active,.widget_calendar #wp-calendar>tfoot>tr>th.active,.table>tfoot>tr.active>td,.page-content table>tfoot>tr.active>td,.entry-content table>tfoot>tr.active>td,.widget_calendar #wp-calendar>tfoot>tr.active>td,.table>tfoot>tr.active>th,.page-content table>tfoot>tr.active>th,.entry-content table>tfoot>tr.active>th,.widget_calendar #wp-calendar>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.page-content table>thead>tr>td.success,.entry-content table>thead>tr>td.success,.widget_calendar #wp-calendar>thead>tr>td.success,.table>thead>tr>th.success,.page-content table>thead>tr>th.success,.entry-content table>thead>tr>th.success,.widget_calendar #wp-calendar>thead>tr>th.success,.table>thead>tr.success>td,.page-content table>thead>tr.success>td,.entry-content table>thead>tr.success>td,.widget_calendar #wp-calendar>thead>tr.success>td,.table>thead>tr.success>th,.page-content table>thead>tr.success>th,.entry-content table>thead>tr.success>th,.widget_calendar #wp-calendar>thead>tr.success>th,.table>tbody>tr>td.success,.page-content table>tbody>tr>td.success,.entry-content table>tbody>tr>td.success,.widget_calendar #wp-calendar>tbody>tr>td.success,.table>tbody>tr>th.success,.page-content table>tbody>tr>th.success,.entry-content table>tbody>tr>th.success,.widget_calendar #wp-calendar>tbody>tr>th.success,.table>tbody>tr.success>td,.page-content table>tbody>tr.success>td,.entry-content table>tbody>tr.success>td,.widget_calendar #wp-calendar>tbody>tr.success>td,.table>tbody>tr.success>th,.page-content table>tbody>tr.success>th,.entry-content table>tbody>tr.success>th,.widget_calendar #wp-calendar>tbody>tr.success>th,.table>tfoot>tr>td.success,.page-content table>tfoot>tr>td.success,.entry-content table>tfoot>tr>td.success,.widget_calendar #wp-calendar>tfoot>tr>td.success,.table>tfoot>tr>th.success,.page-content table>tfoot>tr>th.success,.entry-content table>tfoot>tr>th.success,.widget_calendar #wp-calendar>tfoot>tr>th.success,.table>tfoot>tr.success>td,.page-content table>tfoot>tr.success>td,.entry-content table>tfoot>tr.success>td,.widget_calendar #wp-calendar>tfoot>tr.success>td,.table>tfoot>tr.success>th,.page-content table>tfoot>tr.success>th,.entry-content table>tfoot>tr.success>th,.widget_calendar #wp-calendar>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.page-content table>thead>tr>td.info,.entry-content table>thead>tr>td.info,.widget_calendar #wp-calendar>thead>tr>td.info,.table>thead>tr>th.info,.page-content table>thead>tr>th.info,.entry-content table>thead>tr>th.info,.widget_calendar #wp-calendar>thead>tr>th.info,.table>thead>tr.info>td,.page-content table>thead>tr.info>td,.entry-content table>thead>tr.info>td,.widget_calendar #wp-calendar>thead>tr.info>td,.table>thead>tr.info>th,.page-content table>thead>tr.info>th,.entry-content table>thead>tr.info>th,.widget_calendar #wp-calendar>thead>tr.info>th,.table>tbody>tr>td.info,.page-content table>tbody>tr>td.info,.entry-content table>tbody>tr>td.info,.widget_calendar #wp-calendar>tbody>tr>td.info,.table>tbody>tr>th.info,.page-content table>tbody>tr>th.info,.entry-content table>tbody>tr>th.info,.widget_calendar #wp-calendar>tbody>tr>th.info,.table>tbody>tr.info>td,.page-content table>tbody>tr.info>td,.entry-content table>tbody>tr.info>td,.widget_calendar #wp-calendar>tbody>tr.info>td,.table>tbody>tr.info>th,.page-content table>tbody>tr.info>th,.entry-content table>tbody>tr.info>th,.widget_calendar #wp-calendar>tbody>tr.info>th,.table>tfoot>tr>td.info,.page-content table>tfoot>tr>td.info,.entry-content table>tfoot>tr>td.info,.widget_calendar #wp-calendar>tfoot>tr>td.info,.table>tfoot>tr>th.info,.page-content table>tfoot>tr>th.info,.entry-content table>tfoot>tr>th.info,.widget_calendar #wp-calendar>tfoot>tr>th.info,.table>tfoot>tr.info>td,.page-content table>tfoot>tr.info>td,.entry-content table>tfoot>tr.info>td,.widget_calendar #wp-calendar>tfoot>tr.info>td,.table>tfoot>tr.info>th,.page-content table>tfoot>tr.info>th,.entry-content table>tfoot>tr.info>th,.widget_calendar #wp-calendar>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.page-content table>thead>tr>td.warning,.entry-content table>thead>tr>td.warning,.widget_calendar #wp-calendar>thead>tr>td.warning,.table>thead>tr>th.warning,.page-content table>thead>tr>th.warning,.entry-content table>thead>tr>th.warning,.widget_calendar #wp-calendar>thead>tr>th.warning,.table>thead>tr.warning>td,.page-content table>thead>tr.warning>td,.entry-content table>thead>tr.warning>td,.widget_calendar #wp-calendar>thead>tr.warning>td,.table>thead>tr.warning>th,.page-content table>thead>tr.warning>th,.entry-content table>thead>tr.warning>th,.widget_calendar #wp-calendar>thead>tr.warning>th,.table>tbody>tr>td.warning,.page-content table>tbody>tr>td.warning,.entry-content table>tbody>tr>td.warning,.widget_calendar #wp-calendar>tbody>tr>td.warning,.table>tbody>tr>th.warning,.page-content table>tbody>tr>th.warning,.entry-content table>tbody>tr>th.warning,.widget_calendar #wp-calendar>tbody>tr>th.warning,.table>tbody>tr.warning>td,.page-content table>tbody>tr.warning>td,.entry-content table>tbody>tr.warning>td,.widget_calendar #wp-calendar>tbody>tr.warning>td,.table>tbody>tr.warning>th,.page-content table>tbody>tr.warning>th,.entry-content table>tbody>tr.warning>th,.widget_calendar #wp-calendar>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.page-content table>tfoot>tr>td.warning,.entry-content table>tfoot>tr>td.warning,.widget_calendar #wp-calendar>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.page-content table>tfoot>tr>th.warning,.entry-content table>tfoot>tr>th.warning,.widget_calendar #wp-calendar>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.page-content table>tfoot>tr.warning>td,.entry-content table>tfoot>tr.warning>td,.widget_calendar #wp-calendar>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.page-content table>tfoot>tr.warning>th,.entry-content table>tfoot>tr.warning>th,.widget_calendar #wp-calendar>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.page-content table>thead>tr>td.danger,.entry-content table>thead>tr>td.danger,.widget_calendar #wp-calendar>thead>tr>td.danger,.table>thead>tr>th.danger,.page-content table>thead>tr>th.danger,.entry-content table>thead>tr>th.danger,.widget_calendar #wp-calendar>thead>tr>th.danger,.table>thead>tr.danger>td,.page-content table>thead>tr.danger>td,.entry-content table>thead>tr.danger>td,.widget_calendar #wp-calendar>thead>tr.danger>td,.table>thead>tr.danger>th,.page-content table>thead>tr.danger>th,.entry-content table>thead>tr.danger>th,.widget_calendar #wp-calendar>thead>tr.danger>th,.table>tbody>tr>td.danger,.page-content table>tbody>tr>td.danger,.entry-content table>tbody>tr>td.danger,.widget_calendar #wp-calendar>tbody>tr>td.danger,.table>tbody>tr>th.danger,.page-content table>tbody>tr>th.danger,.entry-content table>tbody>tr>th.danger,.widget_calendar #wp-calendar>tbody>tr>th.danger,.table>tbody>tr.danger>td,.page-content table>tbody>tr.danger>td,.entry-content table>tbody>tr.danger>td,.widget_calendar #wp-calendar>tbody>tr.danger>td,.table>tbody>tr.danger>th,.page-content table>tbody>tr.danger>th,.entry-content table>tbody>tr.danger>th,.widget_calendar #wp-calendar>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.page-content table>tfoot>tr>td.danger,.entry-content table>tfoot>tr>td.danger,.widget_calendar #wp-calendar>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.page-content table>tfoot>tr>th.danger,.entry-content table>tfoot>tr>th.danger,.widget_calendar #wp-calendar>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.page-content table>tfoot>tr.danger>td,.entry-content table>tfoot>tr.danger>td,.widget_calendar #wp-calendar>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.page-content table>tfoot>tr.danger>th,.entry-content table>tfoot>tr.danger>th,.widget_calendar #wp-calendar>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive,.widget_calendar #wp-calendar{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive,.widget_calendar #wp-calendar{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table,.widget_calendar #wp-calendar>.table,.page-content .table-responsive>table,.widget_calendar .page-content #wp-calendar>table,.page-content .widget_calendar #wp-calendar>table,.entry-content .table-responsive>table,.widget_calendar .entry-content #wp-calendar>table,.entry-content .widget_calendar #wp-calendar>table,.widget_calendar .table-responsive>#wp-calendar,.widget_calendar #wp-calendar>#wp-calendar{margin-bottom:0}.table-responsive>.table>thead>tr>th,.widget_calendar #wp-calendar>.table>thead>tr>th,.page-content .table-responsive>table>thead>tr>th,.widget_calendar .page-content #wp-calendar>table>thead>tr>th,.page-content .widget_calendar #wp-calendar>table>thead>tr>th,.entry-content .table-responsive>table>thead>tr>th,.widget_calendar .entry-content #wp-calendar>table>thead>tr>th,.entry-content .widget_calendar #wp-calendar>table>thead>tr>th,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th,.table-responsive>.table>thead>tr>td,.widget_calendar #wp-calendar>.table>thead>tr>td,.page-content .table-responsive>table>thead>tr>td,.widget_calendar .page-content #wp-calendar>table>thead>tr>td,.page-content .widget_calendar #wp-calendar>table>thead>tr>td,.entry-content .table-responsive>table>thead>tr>td,.widget_calendar .entry-content #wp-calendar>table>thead>tr>td,.entry-content .widget_calendar #wp-calendar>table>thead>tr>td,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td,.table-responsive>.table>tbody>tr>th,.widget_calendar #wp-calendar>.table>tbody>tr>th,.page-content .table-responsive>table>tbody>tr>th,.widget_calendar .page-content #wp-calendar>table>tbody>tr>th,.page-content .widget_calendar #wp-calendar>table>tbody>tr>th,.entry-content .table-responsive>table>tbody>tr>th,.widget_calendar .entry-content #wp-calendar>table>tbody>tr>th,.entry-content .widget_calendar #wp-calendar>table>tbody>tr>th,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.widget_calendar #wp-calendar>.table>tbody>tr>td,.page-content .table-responsive>table>tbody>tr>td,.widget_calendar .page-content #wp-calendar>table>tbody>tr>td,.page-content .widget_calendar #wp-calendar>table>tbody>tr>td,.entry-content .table-responsive>table>tbody>tr>td,.widget_calendar .entry-content #wp-calendar>table>tbody>tr>td,.entry-content .widget_calendar #wp-calendar>table>tbody>tr>td,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.widget_calendar #wp-calendar>.table>tfoot>tr>th,.page-content .table-responsive>table>tfoot>tr>th,.widget_calendar .page-content #wp-calendar>table>tfoot>tr>th,.page-content .widget_calendar #wp-calendar>table>tfoot>tr>th,.entry-content .table-responsive>table>tfoot>tr>th,.widget_calendar .entry-content #wp-calendar>table>tfoot>tr>th,.entry-content .widget_calendar #wp-calendar>table>tfoot>tr>th,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td,.widget_calendar #wp-calendar>.table>tfoot>tr>td,.page-content .table-responsive>table>tfoot>tr>td,.widget_calendar .page-content #wp-calendar>table>tfoot>tr>td,.page-content .widget_calendar #wp-calendar>table>tfoot>tr>td,.entry-content .table-responsive>table>tfoot>tr>td,.widget_calendar .entry-content #wp-calendar>table>tfoot>tr>td,.entry-content .widget_calendar #wp-calendar>table>tfoot>tr>td,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered,.widget_calendar #wp-calendar>.table-bordered,.widget_calendar .table-responsive>#wp-calendar,.widget_calendar #wp-calendar>#wp-calendar{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th:first-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td:first-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>thead>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>thead>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>tbody>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>tbody>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>th:last-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr>td:last-child,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.widget_calendar #wp-calendar>.table-bordered>tbody>tr:last-child>th,.widget_calendar .table-responsive>#wp-calendar>tbody>tr:last-child>th,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.widget_calendar #wp-calendar>.table-bordered>tbody>tr:last-child>td,.widget_calendar .table-responsive>#wp-calendar>tbody>tr:last-child>td,.widget_calendar #wp-calendar>#wp-calendar>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr:last-child>th,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.widget_calendar #wp-calendar>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .table-responsive>#wp-calendar>tfoot>tr:last-child>td,.widget_calendar #wp-calendar>#wp-calendar>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control,input[name="post_password"]{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus,input[name="post_password"]:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder,input[name="post_password"]::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder,input[name="post_password"]:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder,input[name="post_password"]::-webkit-input-placeholder{color:#999}.form-control::-ms-expand,input[name="post_password"]::-ms-expand{border:0;background-color:transparent}.form-control[disabled],input[disabled][name="post_password"],.form-control[readonly],input[readonly][name="post_password"],fieldset[disabled] .form-control,fieldset[disabled] input[name="post_password"]{background-color:#eee;opacity:1}.form-control[disabled],input[disabled][name="post_password"],fieldset[disabled] .form-control,fieldset[disabled] input[name="post_password"]{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].form-control,input[type="date"][name="post_password"],input[type="time"].form-control,input[type="time"][name="post_password"],input[type="datetime-local"].form-control,input[type="datetime-local"][name="post_password"],input[type="month"].form-control,input[type="month"][name="post_password"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"][name="post_password"],.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,.input-group-sm>.input-group-btn>input[type="date"][type="submit"],.input-group-sm>.input-group-btn>input[type="date"][type="reset"],.input-group-sm input[type="date"],input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"][name="post_password"],.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,.input-group-sm>.input-group-btn>input[type="time"][type="submit"],.input-group-sm>.input-group-btn>input[type="time"][type="reset"],.input-group-sm input[type="time"],input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"][name="post_password"],.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,.input-group-sm>.input-group-btn>input[type="datetime-local"][type="submit"],.input-group-sm>.input-group-btn>input[type="datetime-local"][type="reset"],.input-group-sm input[type="datetime-local"],input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"][name="post_password"],.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn,.input-group-sm>.input-group-btn>input[type="month"][type="submit"],.input-group-sm>.input-group-btn>input[type="month"][type="reset"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"][name="post_password"],.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,.input-group-lg>.input-group-btn>input[type="date"][type="submit"],.input-group-lg>.input-group-btn>input[type="date"][type="reset"],.input-group-lg input[type="date"],input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"][name="post_password"],.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,.input-group-lg>.input-group-btn>input[type="time"][type="submit"],.input-group-lg>.input-group-btn>input[type="time"][type="reset"],.input-group-lg input[type="time"],input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"][name="post_password"],.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,.input-group-lg>.input-group-btn>input[type="datetime-local"][type="submit"],.input-group-lg>.input-group-btn>input[type="datetime-local"][type="reset"],.input-group-lg input[type="datetime-local"],input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"][name="post_password"],.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn,.input-group-lg>.input-group-btn>input[type="month"][type="submit"],.input-group-lg>.input-group-btn>input[type="month"][type="reset"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>input.form-control-static[name="post_password"],.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-lg>.input-group-btn>input.form-control-static[type="submit"],.input-group-lg>.input-group-btn>input.form-control-static[type="reset"],.input-group-lg>.input-group-btn>button.form-control-static,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>input.form-control-static[name="post_password"],.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn,.input-group-sm>.input-group-btn>input.form-control-static[type="submit"],.input-group-sm>.input-group-btn>input.form-control-static[type="reset"],.input-group-sm>.input-group-btn>button.form-control-static{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>input[name="post_password"],.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-group-sm>.input-group-btn>input[type="submit"],.input-group-sm>.input-group-btn>input[type="reset"],.input-group-sm>.input-group-btn>button{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.form-group-sm .form-control,.form-group-sm input[name="post_password"]{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg,.input-group-lg>.form-control,.input-group-lg>input[name="post_password"],.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-group-lg>.input-group-btn>input[type="submit"],.input-group-lg>.input-group-btn>input[type="reset"],.input-group-lg>.input-group-btn>button{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.form-group-lg .form-control,.form-group-lg input[name="post_password"]{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.has-feedback{position:relative}.has-feedback .form-control,.has-feedback input[name="post_password"]{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>input[name="post_password"]+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-group-lg>.input-group-btn>input[type="submit"]+.form-control-feedback,.input-group-lg>.input-group-btn>input[type="reset"]+.form-control-feedback,.input-group-lg>.input-group-btn>button+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback,.form-group-lg input[name="post_password"]+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>input[name="post_password"]+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-group-sm>.input-group-btn>input[type="submit"]+.form-control-feedback,.input-group-sm>.input-group-btn>input[type="reset"]+.form-control-feedback,.input-group-sm>.input-group-btn>button+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback,.form-group-sm input[name="post_password"]+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control,.has-success input[name="post_password"]{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus,.has-success input[name="post_password"]:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control,.has-warning input[name="post_password"]{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus,.has-warning input[name="post_password"]:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control,.has-error input[name="post_password"]{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus,.has-error input[name="post_password"]:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.form-inline input[name="post_password"]{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control,.form-inline .input-group input[name="post_password"]{width:auto}.form-inline .input-group>.form-control,.form-inline .input-group>input[name="post_password"]{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn,input[type="submit"],input[type="reset"],button{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,input[type="submit"]:focus,input[type="reset"]:focus,button:focus,.btn.focus,input.focus[type="submit"],input.focus[type="reset"],button.focus,.btn:active:focus,input[type="submit"]:active:focus,input[type="reset"]:active:focus,button:active:focus,.btn:active.focus,input[type="submit"]:active.focus,input[type="reset"]:active.focus,button:active.focus,.btn.active:focus,input.active[type="submit"]:focus,input.active[type="reset"]:focus,button.active:focus,.btn.active.focus,input.active.focus[type="submit"],input.active.focus[type="reset"],button.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,input[type="submit"]:hover,input[type="reset"]:hover,button:hover,.btn:focus,input[type="submit"]:focus,input[type="reset"]:focus,button:focus,.btn.focus,input.focus[type="submit"],input.focus[type="reset"],button.focus{color:#333;text-decoration:none}.btn:active,input[type="submit"]:active,input[type="reset"]:active,button:active,.btn.active,input.active[type="submit"],input.active[type="reset"],button.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,input.disabled[type="submit"],input.disabled[type="reset"],button.disabled,.btn[disabled],input[disabled][type="submit"],input[disabled][type="reset"],button[disabled],fieldset[disabled] .btn,fieldset[disabled] input[type="submit"],fieldset[disabled] input[type="reset"],fieldset[disabled] button{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default,input[type="submit"],input[type="reset"],button{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,input[type="submit"]:focus,input[type="reset"]:focus,button:focus,.btn-default.focus,input.focus[type="submit"],input.focus[type="reset"],button.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover,input[type="submit"]:hover,input[type="reset"]:hover,button:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,input[type="submit"]:active,input[type="reset"]:active,button:active,.btn-default.active,input.active[type="submit"],input.active[type="reset"],button.active,.open>.btn-default.dropdown-toggle,.open>input.dropdown-toggle[type="submit"],.open>input.dropdown-toggle[type="reset"],.open>button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,input[type="submit"]:active:hover,input[type="reset"]:active:hover,button:active:hover,.btn-default:active:focus,input[type="submit"]:active:focus,input[type="reset"]:active:focus,button:active:focus,.btn-default:active.focus,input[type="submit"]:active.focus,input[type="reset"]:active.focus,button:active.focus,.btn-default.active:hover,input.active[type="submit"]:hover,input.active[type="reset"]:hover,button.active:hover,.btn-default.active:focus,input.active[type="submit"]:focus,input.active[type="reset"]:focus,button.active:focus,.btn-default.active.focus,input.active.focus[type="submit"],input.active.focus[type="reset"],button.active.focus,.open>.btn-default.dropdown-toggle:hover,.open>input.dropdown-toggle[type="submit"]:hover,.open>input.dropdown-toggle[type="reset"]:hover,.open>button.dropdown-toggle:hover,.open>.btn-default.dropdown-toggle:focus,.open>input.dropdown-toggle[type="submit"]:focus,.open>input.dropdown-toggle[type="reset"]:focus,.open>button.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle.focus,.open>input.dropdown-toggle.focus[type="submit"],.open>input.dropdown-toggle.focus[type="reset"],.open>button.dropdown-toggle.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,input[type="submit"]:active,input[type="reset"]:active,button:active,.btn-default.active,input.active[type="submit"],input.active[type="reset"],button.active,.open>.btn-default.dropdown-toggle,.open>input.dropdown-toggle[type="submit"],.open>input.dropdown-toggle[type="reset"],.open>button.dropdown-toggle{background-image:none}.btn-default.disabled:hover,input.disabled[type="submit"]:hover,input.disabled[type="reset"]:hover,button.disabled:hover,.btn-default.disabled:focus,input.disabled[type="submit"]:focus,input.disabled[type="reset"]:focus,button.disabled:focus,.btn-default.disabled.focus,input.disabled.focus[type="submit"],input.disabled.focus[type="reset"],button.disabled.focus,.btn-default[disabled]:hover,input[disabled][type="submit"]:hover,input[disabled][type="reset"]:hover,button[disabled]:hover,.btn-default[disabled]:focus,input[disabled][type="submit"]:focus,input[disabled][type="reset"]:focus,button[disabled]:focus,.btn-default[disabled].focus,input[disabled].focus[type="submit"],input[disabled].focus[type="reset"],button[disabled].focus,fieldset[disabled] .btn-default:hover,fieldset[disabled] input[type="submit"]:hover,fieldset[disabled] input[type="reset"]:hover,fieldset[disabled] button:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] input[type="submit"]:focus,fieldset[disabled] input[type="reset"]:focus,fieldset[disabled] button:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] input.focus[type="submit"],fieldset[disabled] input.focus[type="reset"],fieldset[disabled] button.focus{background-color:#fff;border-color:#ccc}.btn-default .badge,input[type="submit"] .badge,input[type="reset"] .badge,button .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary:active:focus,.btn-primary:active.focus,.btn-primary.active:hover,.btn-primary.active:focus,.btn-primary.active.focus,.open>.btn-primary.dropdown-toggle:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success:active:focus,.btn-success:active.focus,.btn-success.active:hover,.btn-success.active:focus,.btn-success.active.focus,.open>.btn-success.dropdown-toggle:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info:active:focus,.btn-info:active.focus,.btn-info.active:hover,.btn-info.active:focus,.btn-info.active.focus,.open>.btn-info.dropdown-toggle:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning:active:focus,.btn-warning:active.focus,.btn-warning.active:hover,.btn-warning.active:focus,.btn-warning.active.focus,.open>.btn-warning.dropdown-toggle:hover,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger:active:focus,.btn-danger:active.focus,.btn-danger.active:hover,.btn-danger.active:focus,.btn-danger.active.focus,.open>.btn-danger.dropdown-toggle:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn,.btn-group-lg>input[type="submit"],.btn-group-lg>input[type="reset"],.btn-group-lg>button{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.btn-sm,.btn-group-sm>.btn,.btn-group-sm>input[type="submit"],.btn-group-sm>input[type="reset"],.btn-group-sm>button{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn,.btn-group-xs>input[type="submit"],.btn-group-xs>input[type="reset"],.btn-group-xs>button{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right,.dropdown-menu.alignright,.entry-attachment #nav-below .dropdown-menu.nav-next,.widget_calendar #wp-calendar #next a.dropdown-menu{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu,.alignright>.dropdown-menu,.entry-attachment #nav-below .nav-next>.dropdown-menu,.widget_calendar #wp-calendar #next a>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group>input[type="submit"],.btn-group>input[type="reset"],.btn-group>button,.btn-group-vertical>.btn,.btn-group-vertical>input[type="submit"],.btn-group-vertical>input[type="reset"],.btn-group-vertical>button{position:relative;float:left}.btn-group>.btn:hover,.btn-group>input[type="submit"]:hover,.btn-group>input[type="reset"]:hover,.btn-group>button:hover,.btn-group>.btn:focus,.btn-group>input[type="submit"]:focus,.btn-group>input[type="reset"]:focus,.btn-group>button:focus,.btn-group>.btn:active,.btn-group>input[type="submit"]:active,.btn-group>input[type="reset"]:active,.btn-group>button:active,.btn-group>.btn.active,.btn-group>input.active[type="submit"],.btn-group>input.active[type="reset"],.btn-group>button.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>input[type="submit"]:hover,.btn-group-vertical>input[type="reset"]:hover,.btn-group-vertical>button:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>input[type="submit"]:focus,.btn-group-vertical>input[type="reset"]:focus,.btn-group-vertical>button:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>input[type="submit"]:active,.btn-group-vertical>input[type="reset"]:active,.btn-group-vertical>button:active,.btn-group-vertical>.btn.active,.btn-group-vertical>input.active[type="submit"],.btn-group-vertical>input.active[type="reset"],.btn-group-vertical>button.active{z-index:2}.btn-group .btn+.btn,.btn-group input[type="submit"]+.btn,.btn-group input[type="reset"]+.btn,.btn-group button+.btn,.btn-group .btn+input[type="submit"],.btn-group input[type="submit"]+input[type="submit"],.btn-group input[type="reset"]+input[type="submit"],.btn-group button+input[type="submit"],.btn-group .btn+input[type="reset"],.btn-group input[type="submit"]+input[type="reset"],.btn-group input[type="reset"]+input[type="reset"],.btn-group button+input[type="reset"],.btn-group .btn+button,.btn-group input[type="submit"]+button,.btn-group input[type="reset"]+button,.btn-group button+button,.btn-group .btn+.btn-group,.btn-group input[type="submit"]+.btn-group,.btn-group input[type="reset"]+.btn-group,.btn-group button+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+input[type="submit"],.btn-group .btn-group+input[type="reset"],.btn-group .btn-group+button,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn,.btn-toolbar input[type="submit"],.btn-toolbar input[type="reset"],.btn-toolbar button,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>input[type="submit"],.btn-toolbar>input[type="reset"],.btn-toolbar>button,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>input[type="submit"]:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>input[type="reset"]:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>button:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child,.btn-group>input[type="submit"]:first-child,.btn-group>input[type="reset"]:first-child,.btn-group>button:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>input[type="submit"]:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>input[type="reset"]:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>button:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>input[type="submit"]:last-child:not(:first-child),.btn-group>input[type="reset"]:last-child:not(:first-child),.btn-group>button:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn-group:not(:first-child):not(:last-child)>input[type="submit"],.btn-group>.btn-group:not(:first-child):not(:last-child)>input[type="reset"],.btn-group>.btn-group:not(:first-child):not(:last-child)>button{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>input[type="submit"]:last-child,.btn-group>.btn-group:first-child:not(:last-child)>input[type="reset"]:last-child,.btn-group>.btn-group:first-child:not(:last-child)>button:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn-group:last-child:not(:first-child)>input[type="submit"]:first-child,.btn-group>.btn-group:last-child:not(:first-child)>input[type="reset"]:first-child,.btn-group>.btn-group:last-child:not(:first-child)>button:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle,.btn-group>input[type="submit"]+.dropdown-toggle,.btn-group>input[type="reset"]+.dropdown-toggle,.btn-group>button+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group-lg.btn-group>input[type="submit"]+.dropdown-toggle,.btn-group-lg.btn-group>input[type="reset"]+.dropdown-toggle,.btn-group-lg.btn-group>button+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret,input[type="submit"] .caret,input[type="reset"] .caret,button .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret,.btn-group-lg>input[type="submit"] .caret,.btn-group-lg>input[type="reset"] .caret,.btn-group-lg>button .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret,.dropup .btn-group-lg>input[type="submit"] .caret,.dropup .btn-group-lg>input[type="reset"] .caret,.dropup .btn-group-lg>button .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>input[type="submit"],.btn-group-vertical>input[type="reset"],.btn-group-vertical>button,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn,.btn-group-vertical>.btn-group>input[type="submit"],.btn-group-vertical>.btn-group>input[type="reset"],.btn-group-vertical>.btn-group>button{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn,.btn-group-vertical>.btn-group>input[type="submit"],.btn-group-vertical>.btn-group>input[type="reset"],.btn-group-vertical>.btn-group>button{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>input[type="submit"]+.btn,.btn-group-vertical>input[type="reset"]+.btn,.btn-group-vertical>button+.btn,.btn-group-vertical>.btn+input[type="submit"],.btn-group-vertical>input[type="submit"]+input[type="submit"],.btn-group-vertical>input[type="reset"]+input[type="submit"],.btn-group-vertical>button+input[type="submit"],.btn-group-vertical>.btn+input[type="reset"],.btn-group-vertical>input[type="submit"]+input[type="reset"],.btn-group-vertical>input[type="reset"]+input[type="reset"],.btn-group-vertical>button+input[type="reset"],.btn-group-vertical>.btn+button,.btn-group-vertical>input[type="submit"]+button,.btn-group-vertical>input[type="reset"]+button,.btn-group-vertical>button+button,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>input[type="submit"]+.btn-group,.btn-group-vertical>input[type="reset"]+.btn-group,.btn-group-vertical>button+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+input[type="submit"],.btn-group-vertical>.btn-group+input[type="reset"],.btn-group-vertical>.btn-group+button,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group-vertical>input[type="submit"]:not(:first-child):not(:last-child),.btn-group-vertical>input[type="reset"]:not(:first-child):not(:last-child),.btn-group-vertical>button:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child),.btn-group-vertical>input[type="submit"]:first-child:not(:last-child),.btn-group-vertical>input[type="reset"]:first-child:not(:last-child),.btn-group-vertical>button:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),.btn-group-vertical>input[type="submit"]:last-child:not(:first-child),.btn-group-vertical>input[type="reset"]:last-child:not(:first-child),.btn-group-vertical>button:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>input[type="submit"],.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>input[type="reset"],.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>button{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>input[type="submit"]:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>input[type="reset"]:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>button:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>input[type="submit"]:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>input[type="reset"]:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>button:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>input[type="submit"],.btn-group-justified>input[type="reset"],.btn-group-justified>button,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn,.btn-group-justified>.btn-group input[type="submit"],.btn-group-justified>.btn-group input[type="reset"],.btn-group-justified>.btn-group button{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>input[type="submit"] input[type="radio"],[data-toggle="buttons"]>input[type="reset"] input[type="radio"],[data-toggle="buttons"]>button input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>input[type="submit"] input[type="checkbox"],[data-toggle="buttons"]>input[type="reset"] input[type="checkbox"],[data-toggle="buttons"]>button input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>input[type="submit"] input[type="radio"],[data-toggle="buttons"]>.btn-group>input[type="reset"] input[type="radio"],[data-toggle="buttons"]>.btn-group>button input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>input[type="submit"] input[type="checkbox"],[data-toggle="buttons"]>.btn-group>input[type="reset"] input[type="checkbox"],[data-toggle="buttons"]>.btn-group>button input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control,.input-group input[name="post_password"]{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus,.input-group input[name="post_password"]:focus{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control,.input-group input[name="post_password"]{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child),.input-group input[name="post_password"]:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn,.input-group-sm>.input-group-btn>input.input-group-addon[type="submit"],.input-group-sm>.input-group-btn>input.input-group-addon[type="reset"],.input-group-sm>.input-group-btn>button.input-group-addon{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn,.input-group-lg>.input-group-btn>input.input-group-addon[type="submit"],.input-group-lg>.input-group-btn>input.input-group-addon[type="reset"],.input-group-lg>.input-group-btn>button.input-group-addon{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group input[name="post_password"]:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>input[type="submit"],.input-group-btn:first-child>input[type="reset"],.input-group-btn:first-child>button,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.btn-group>input[type="submit"],.input-group-btn:first-child>.btn-group>input[type="reset"],.input-group-btn:first-child>.btn-group>button,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>input[type="submit"]:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>input[type="reset"]:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>button:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn-group:not(:last-child)>input[type="submit"],.input-group-btn:last-child>.btn-group:not(:last-child)>input[type="reset"],.input-group-btn:last-child>.btn-group:not(:last-child)>button{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group input[name="post_password"]:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>input[type="submit"],.input-group-btn:last-child>input[type="reset"],.input-group-btn:last-child>button,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.btn-group>input[type="submit"],.input-group-btn:last-child>.btn-group>input[type="reset"],.input-group-btn:last-child>.btn-group>button,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>input[type="submit"]:not(:first-child),.input-group-btn:first-child>input[type="reset"]:not(:first-child),.input-group-btn:first-child>button:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn-group:not(:first-child)>input[type="submit"],.input-group-btn:first-child>.btn-group:not(:first-child)>input[type="reset"],.input-group-btn:first-child>.btn-group:not(:first-child)>button{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn,.input-group-btn>input[type="submit"],.input-group-btn>input[type="reset"],.input-group-btn>button{position:relative}.input-group-btn>.btn+.btn,.input-group-btn>input[type="submit"]+.btn,.input-group-btn>input[type="reset"]+.btn,.input-group-btn>button+.btn,.input-group-btn>.btn+input[type="submit"],.input-group-btn>input[type="submit"]+input[type="submit"],.input-group-btn>input[type="reset"]+input[type="submit"],.input-group-btn>button+input[type="submit"],.input-group-btn>.btn+input[type="reset"],.input-group-btn>input[type="submit"]+input[type="reset"],.input-group-btn>input[type="reset"]+input[type="reset"],.input-group-btn>button+input[type="reset"],.input-group-btn>.btn+button,.input-group-btn>input[type="submit"]+button,.input-group-btn>input[type="reset"]+button,.input-group-btn>button+button{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>input[type="submit"]:hover,.input-group-btn>input[type="reset"]:hover,.input-group-btn>button:hover,.input-group-btn>.btn:focus,.input-group-btn>input[type="submit"]:focus,.input-group-btn>input[type="reset"]:focus,.input-group-btn>button:focus,.input-group-btn>.btn:active,.input-group-btn>input[type="submit"]:active,.input-group-btn>input[type="reset"]:active,.input-group-btn>button:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>input[type="submit"],.input-group-btn:first-child>input[type="reset"],.input-group-btn:first-child>button,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>input[type="submit"],.input-group-btn:last-child>input[type="reset"],.input-group-btn:last-child>button,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control,.navbar-form input[name="post_password"]{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control,.navbar-form .input-group input[name="post_password"]{width:auto}.navbar-form .input-group>.form-control,.navbar-form .input-group>input[name="post_password"]{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn,.btn-group-sm>input.navbar-btn[type="submit"],.btn-group-sm>input.navbar-btn[type="reset"],.btn-group-sm>button.navbar-btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn,.btn-group-xs>input.navbar-btn[type="submit"],.btn-group-xs>input.navbar-btn[type="reset"],.btn-group-xs>button.navbar-btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination,ul.page-numbers{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li,ul.page-numbers>li{display:inline}.pagination>li>a,ul.page-numbers>li>a,.pagination>li>span,ul.page-numbers>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,ul.page-numbers>li:first-child>a,.pagination>li:first-child>span,ul.page-numbers>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,ul.page-numbers>li:last-child>a,.pagination>li:last-child>span,ul.page-numbers>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,ul.page-numbers>li>a:hover,.pagination>li>a:focus,ul.page-numbers>li>a:focus,.pagination>li>span:hover,ul.page-numbers>li>span:hover,.pagination>li>span:focus,ul.page-numbers>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,ul.page-numbers>.active>a,.pagination>.active>a:hover,ul.page-numbers>.active>a:hover,.pagination>.active>a:focus,ul.page-numbers>.active>a:focus,.pagination>.active>span,ul.page-numbers>.active>span,.pagination>.active>span:hover,ul.page-numbers>.active>span:hover,.pagination>.active>span:focus,ul.page-numbers>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,ul.page-numbers>.disabled>span,.pagination>.disabled>span:hover,ul.page-numbers>.disabled>span:hover,.pagination>.disabled>span:focus,ul.page-numbers>.disabled>span:focus,.pagination>.disabled>a,ul.page-numbers>.disabled>a,.pagination>.disabled>a:hover,ul.page-numbers>.disabled>a:hover,.pagination>.disabled>a:focus,ul.page-numbers>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label,input[type="submit"] .label,input[type="reset"] .label,button .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge,input[type="submit"] .badge,input[type="reset"] .badge,button .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge,.btn-group-xs>input[type="submit"] .badge,.btn-group-xs>input[type="reset"] .badge,.btn-group-xs>button .badge,.btn-group-xs>.btn .badge,.btn-group-xs>input[type="submit"] .badge,.btn-group-xs>input[type="reset"] .badge,.btn-group-xs>button .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail,.wp-caption{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.wp-caption>img,.thumbnail a>img,.wp-caption a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption,.wp-caption .caption{padding:9px;color:#333}a.thumbnail:hover,a.wp-caption:hover,a.thumbnail:focus,a.wp-caption:focus,a.thumbnail.active,a.active.wp-caption{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail,.gallery .gallery-item img.media-object{max-width:none}.media-right,.media>.pull-right,.media>.alignright,.entry-attachment #nav-below .media>.nav-next,.widget_calendar #wp-calendar #next .media>a{padding-left:10px}.media-left,.media>.pull-left,.media>.alignleft,.entry-attachment #nav-below .media>.nav-previous,.gallery .media>.gallery-item,.widget_calendar #wp-calendar #prev .media>a{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus,button.list-group-item:hover,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:hover,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active,button.list-group-item-success.active:hover,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:hover,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active,button.list-group-item-info.active:hover,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:hover,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active,button.list-group-item-warning.active:hover,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:hover,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active,button.list-group-item-danger.active:hover,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.page-content .panel>table,.entry-content .panel>table,.widget_calendar .panel>#wp-calendar,.panel>.table-responsive>.table,.widget_calendar .panel>#wp-calendar>.table,.page-content .panel>.table-responsive>table,.widget_calendar .page-content .panel>#wp-calendar>table,.page-content .widget_calendar .panel>#wp-calendar>table,.entry-content .panel>.table-responsive>table,.widget_calendar .entry-content .panel>#wp-calendar>table,.entry-content .widget_calendar .panel>#wp-calendar>table,.widget_calendar .panel>.table-responsive>#wp-calendar,.widget_calendar .panel>#wp-calendar>#wp-calendar,.panel>.panel-collapse>.table,.page-content .panel>.panel-collapse>table,.entry-content .panel>.panel-collapse>table,.widget_calendar .panel>.panel-collapse>#wp-calendar{margin-bottom:0}.panel>.table caption,.page-content .panel>table caption,.entry-content .panel>table caption,.widget_calendar .panel>#wp-calendar caption,.panel>.table-responsive>.table caption,.widget_calendar .panel>#wp-calendar>.table caption,.page-content .panel>.table-responsive>table caption,.widget_calendar .page-content .panel>#wp-calendar>table caption,.page-content .widget_calendar .panel>#wp-calendar>table caption,.entry-content .panel>.table-responsive>table caption,.widget_calendar .entry-content .panel>#wp-calendar>table caption,.entry-content .widget_calendar .panel>#wp-calendar>table caption,.widget_calendar .panel>.table-responsive>#wp-calendar caption,.widget_calendar .panel>#wp-calendar>#wp-calendar caption,.panel>.panel-collapse>.table caption,.page-content .panel>.panel-collapse>table caption,.entry-content .panel>.panel-collapse>table caption,.widget_calendar .panel>.panel-collapse>#wp-calendar caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.page-content .panel>table:first-child,.entry-content .panel>table:first-child,.widget_calendar .panel>#wp-calendar:first-child,.panel>.table-responsive:first-child>.table:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child,.page-content .panel>.table-responsive:first-child>table:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .panel>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .panel>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .panel>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .panel>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .panel>.table-responsive:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:first-child>table:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>.table-responsive:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child,.widget_calendar .panel>#wp-calendar:first-child>#wp-calendar:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.page-content .panel>table:last-child,.entry-content .panel>table:last-child,.widget_calendar .panel>#wp-calendar:last-child,.panel>.table-responsive:last-child>.table:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child,.page-content .panel>.table-responsive:last-child>table:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .panel>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .panel>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .panel>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .panel>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .page-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.page-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .panel>.table-responsive:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .entry-content .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.entry-content .widget_calendar .panel>#wp-calendar:last-child>table:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>.table-responsive:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child,.widget_calendar .panel>#wp-calendar:last-child>#wp-calendar:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.page-content .panel>.panel-body+table,.entry-content .panel>.panel-body+table,.widget_calendar .panel>.panel-body+#wp-calendar,.panel>.panel-body+.table-responsive,.widget_calendar .panel>.panel-body+#wp-calendar,.panel>.table+.panel-body,.page-content .panel>table+.panel-body,.entry-content .panel>table+.panel-body,.widget_calendar .panel>#wp-calendar+.panel-body,.panel>.table-responsive+.panel-body,.widget_calendar .panel>#wp-calendar+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.page-content .panel>table>tbody:first-child>tr:first-child th,.entry-content .panel>table>tbody:first-child>tr:first-child th,.widget_calendar .panel>#wp-calendar>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.page-content .panel>table>tbody:first-child>tr:first-child td,.entry-content .panel>table>tbody:first-child>tr:first-child td,.widget_calendar .panel>#wp-calendar>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.widget_calendar .panel>#wp-calendar,.panel>.table-responsive>.table-bordered,.widget_calendar .panel>#wp-calendar>.table-bordered,.widget_calendar .panel>.table-responsive>#wp-calendar,.widget_calendar .panel>#wp-calendar>#wp-calendar{border:0}.panel>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>th:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>th:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>td:first-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>td:first-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>th:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>th:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr>td:last-child,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr>td:last-child,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr:first-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr:first-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>thead>tr:first-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>thead>tr:first-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:first-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:first-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:first-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:first-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:last-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:last-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tbody>tr:last-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tbody>tr:last-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr:last-child>td,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr:last-child>td,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>.table-bordered>tfoot>tr:last-child>th,.widget_calendar .panel>.table-responsive>#wp-calendar>tfoot>tr:last-child>th,.widget_calendar .panel>#wp-calendar>#wp-calendar>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.widget_calendar .panel>#wp-calendar{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:before,.modal-header:after{content:" ";display:table}.modal-header:after{clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn,.modal-footer input[type="submit"]+.btn,.modal-footer input[type="reset"]+.btn,.modal-footer button+.btn,.modal-footer .btn+input[type="submit"],.modal-footer input[type="submit"]+input[type="submit"],.modal-footer input[type="reset"]+input[type="submit"],.modal-footer button+input[type="submit"],.modal-footer .btn+input[type="reset"],.modal-footer input[type="submit"]+input[type="reset"],.modal-footer input[type="reset"]+input[type="reset"],.modal-footer button+input[type="reset"],.modal-footer .btn+button,.modal-footer input[type="submit"]+button,.modal-footer input[type="reset"]+button,.modal-footer button+button{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn,.modal-footer .btn-group input[type="submit"]+.btn,.modal-footer .btn-group input[type="reset"]+.btn,.modal-footer .btn-group button+.btn,.modal-footer .btn-group .btn+input[type="submit"],.modal-footer .btn-group input[type="submit"]+input[type="submit"],.modal-footer .btn-group input[type="reset"]+input[type="submit"],.modal-footer .btn-group button+input[type="submit"],.modal-footer .btn-group .btn+input[type="reset"],.modal-footer .btn-group input[type="submit"]+input[type="reset"],.modal-footer .btn-group input[type="reset"]+input[type="reset"],.modal-footer .btn-group button+input[type="reset"],.modal-footer .btn-group .btn+button,.modal-footer .btn-group input[type="submit"]+button,.modal-footer .btn-group input[type="reset"]+button,.modal-footer .btn-group button+button{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:transparent}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn,.carousel-caption input[type="submit"],.carousel-caption input[type="reset"],.carousel-caption button{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block,.aligncenter{display:block;margin-left:auto;margin-right:auto}.pull-right,.alignright,.entry-attachment #nav-below .nav-next,.widget_calendar #wp-calendar #next a{float:right !important}.pull-left,.alignleft,.entry-attachment #nav-below .nav-previous,.gallery .gallery-item,.widget_calendar #wp-calendar #prev a{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.alignnone{margin:0.5em 0}.alignright{margin:0.5em 0 1em 1em}.alignleft{margin:0.5em 1em 1em 0}.aligncenter{margin:0.5em auto}.hentry,.widget{-ms-word-wrap:break-word;word-wrap:break-word}.page-content:before,.page-content:after,.entry-content:before,.entry-content:after{content:" ";display:table}.page-content:after,.entry-content:after{clear:both}.entry-attachment .attachment{margin-bottom:1em}.entry-caption{color:#666}.twitter-tweet-rendered{max-width:100% !important}.gallery{margin:0 auto 1em}.gallery:before,.gallery:after{content:" ";display:table}.gallery:after{clear:both}.gallery.gallery-columns-1 .gallery-item{float:none;margin:2em 2%;width:96%}.gallery.gallery-columns-2 .gallery-item{margin:2em 2%;width:46%}.gallery.gallery-columns-3 .gallery-item{margin:2em 2%;width:29.33333%}.gallery.gallery-columns-4 .gallery-item{margin:2em 2%;width:21%}.gallery.gallery-columns-5 .gallery-item{margin:2em 2%;width:16%}.gallery.gallery-columns-6 .gallery-item{margin:2em 1%;width:14.66667%}.gallery.gallery-columns-7 .gallery-item{margin:2em 1%;width:12.28571%}.gallery.gallery-columns-8 .gallery-item{margin:2em 1%;width:10.5%}.gallery.gallery-columns-9 .gallery-item{margin:2em 1%;width:9.11111%}.gallery .gallery-caption{color:#333;margin-left:0}.gallery dl{margin:0}.gallery br+br{display:none}.hentry img,.widget img{height:auto;max-width:100%;width:auto}img.header-image,img.wp-post-image{max-width:100%;height:auto}img.wp-smiley,.rsswidget img{border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;margin-bottom:0;margin-top:0;padding:0}img#wpstats{display:none}.entry-content p img.alignleft,.entry-content p img.alignright,.entry-content p img.aligncenter,.entry-content p img.aligncenter,.entry-content p img.alignnone,.wp-caption.alignleft,.wp-caption.alignright,.wp-caption.aligncenter,.wp-caption.aligncenter,.wp-caption.alignnone{margin-top:1em;margin-bottom:2em}.wp-caption.aligncenter,.wp-caption.alignnone{clear:both !important}.wp-caption .wp-caption-text{display:inline-block;padding:9px;color:#333}.wp-caption .wp-caption-text:before{color:#666;content:'\2014';font-size:12px;font-style:normal;font-weight:bold;margin-right:5px}.widget_calendar #wp-calendar #prev{border-right:0}.widget_calendar #wp-calendar #next{border-left:0}.widget_tag_cloud a:nth-child(1){font-size:18px!important}.widget_tag_cloud a:nth-child(2){font-size:24px!important}.widget_tag_cloud a:nth-child(3){font-size:29px!important}.widget_tag_cloud a:nth-child(4){font-size:15px!important}.widget_tag_cloud a:nth-child(5){font-size:26px!important}.widget_tag_cloud a:nth-child(6){font-size:30px!important}.widget_tag_cloud a:nth-child(7){font-size:22px!important}.widget_tag_cloud a:nth-child(8){font-size:25px!important}.widget_tag_cloud a:nth-child(9){font-size:15px!important}.widget_tag_cloud a:nth-child(10){font-size:23px!important}.widget_tag_cloud a:nth-child(11){font-size:19px!important}.widget_tag_cloud a:nth-child(12){font-size:31px!important}.wp-video-shortcode{max-width:100%}ul.page-numbers>li>span.current,ul.page-numbers>li>span.current:hover,ul.page-numbers>li>span.current:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}select{max-width:100%}.form-radio-group .radio:first-child{margin-top:0}.form-radio-group .radio:last-child{margin-bottom:0}.hentry .odin-map img,.widget .odin-map img{max-width:none !important}#header #main-navigation{margin:20px 0}#header .page-header{margin:20px 0 20px}#header .page-header .site-description{font-size:16px;font-style:italic}.home #content .post{margin-bottom:40px}.home #content .post.sticky{padding:0 20px 20px;border:1px dashed #5bc0de}#skippy{display:block;padding:1em;background-color:#f5f5f5;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}#content:focus{outline:none}.pagination-wrap{text-align:center;margin-top:15px}.infinite-scroll .pagination-wrap{display:none}#footer{text-align:center;position:absolute;bottom:0;width:100%;height:50px;background-color:#f5f5f5;padding-top:15px}html{position:relative;min-height:100%;overflow-y:scroll}body{margin-bottom:70px} diff --git a/assets/css/theme.scss b/assets/css/theme.scss new file mode 100644 index 0000000..4d4c26c --- /dev/null +++ b/assets/css/theme.scss @@ -0,0 +1,13 @@ +// +// Theme Style Main +// + +// Variables, tools and mixins +@import 'theme/abstracts'; + +// Dependencies and vendors +@import 'vendors/bootstrap'; +@import 'vendors/font-awesome'; + +// Components +@import "../../components/**/*"; diff --git a/assets/css/theme/_abstracts.scss b/assets/css/theme/_abstracts.scss new file mode 100644 index 0000000..466db76 --- /dev/null +++ b/assets/css/theme/_abstracts.scss @@ -0,0 +1,21 @@ +// +// Theme Sass variables +// + +// +// Theme +// +@import "theme/variables"; + +// +// Bootstrap 4 +// +@import "bootstrap/scss/functions"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/mixins"; + +// +// Font Awesome 5 +// +@import '@fortawesome/fontawesome-free-webfonts/scss/variables'; +@import '@fortawesome/fontawesome-free-webfonts/scss/mixins'; diff --git a/assets/css/theme/_variables.scss b/assets/css/theme/_variables.scss new file mode 100644 index 0000000..356d9c2 --- /dev/null +++ b/assets/css/theme/_variables.scss @@ -0,0 +1,59 @@ +// +// Theme Sass variables +// + +// +// Bootstrap 4. +// +// Try add value to $body-bg or $body-color variables +// @link http://getbootstrap.com/docs/4.0/getting-started/theming +// +$primary: #007bff; + +// +// Font Awesome 5. +// +$fa-font-path: '../fonts/'; +$fa-font-size-base: 16px; +$fa-css-prefix: fa; +$fa-border-color: #eee; +$fa-inverse: #fff; +$fa-li-width: 2em; + +// +// WordPress Admin. +// +$wp-login-bg: #f1f1f1; +$wp-login-logo: '../img/admin-logo-login.png'; +$wp-login-logo-width: 80px; +$wp-login-logo-height: 80px; + +// +// App Components. +// + +// Navigation Topbar Component. +$odin-navigation-topbar-bg: $primary; +$odin-navigation-topbar-color: #e9ecef; +$odin-navigation-topbar-link-color: #ffffff; +$odin-navigation-topbar-brand-logo-height: 50px; +$odin-navigation-topbar-brand-logo-width: auto; +$odin-navigation-topbar-formSearch-color: #ffffff; +$odin-navigation-topbar-formSearch-bg: none; +$odin-navigation-topbar-formSearch-border-color: #ffffff; +$odin-navigation-topbar-formSearch-placeholder-color: rgba(255, 255, 255, 0.6); + +// Navigation Main Component. +$odin-navigation-main-bg: $primary; +$odin-navigation-main-color: #e9ecef; +$odin-navigation-main-link-color: #ffffff; + +// Banner Component. +$odin-banner-height: 400px; +$odin-banner-bg: darken($primary,10%); +$odin-banner-color: #f8f9fa; + +// Sidebar Component. +$odin-sidebar-bg: #e9ecef; +$odin-sidebar-color: #343a40; + diff --git a/assets/css/vendors/_bootstrap.scss b/assets/css/vendors/_bootstrap.scss new file mode 100644 index 0000000..d4b9fcc --- /dev/null +++ b/assets/css/vendors/_bootstrap.scss @@ -0,0 +1,40 @@ +/*! + * Bootstrap v4.1.0 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Optional +@import "bootstrap/scss/root"; +@import "bootstrap/scss/reboot"; +@import "bootstrap/scss/type"; +@import "bootstrap/scss/images"; +@import "bootstrap/scss/code"; +@import "bootstrap/scss/grid"; +@import "bootstrap/scss/tables"; +@import "bootstrap/scss/forms"; +@import "bootstrap/scss/buttons"; +@import "bootstrap/scss/transitions"; +@import "bootstrap/scss/dropdown"; +@import "bootstrap/scss/button-group"; +@import "bootstrap/scss/input-group"; +@import "bootstrap/scss/custom-forms"; +@import "bootstrap/scss/nav"; +@import "bootstrap/scss/navbar"; +@import "bootstrap/scss/card"; +@import "bootstrap/scss/breadcrumb"; +@import "bootstrap/scss/pagination"; +@import "bootstrap/scss/badge"; +@import "bootstrap/scss/jumbotron"; +@import "bootstrap/scss/alert"; +@import "bootstrap/scss/progress"; +@import "bootstrap/scss/media"; +@import "bootstrap/scss/list-group"; +@import "bootstrap/scss/close"; +@import "bootstrap/scss/modal"; +@import "bootstrap/scss/tooltip"; +@import "bootstrap/scss/popover"; +@import "bootstrap/scss/carousel"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/print"; diff --git a/assets/css/vendors/_font-awesome.scss b/assets/css/vendors/_font-awesome.scss new file mode 100644 index 0000000..8687976 --- /dev/null +++ b/assets/css/vendors/_font-awesome.scss @@ -0,0 +1,21 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ + +// Optional +@import '@fortawesome/fontawesome-free-webfonts/scss/core'; +@import '@fortawesome/fontawesome-free-webfonts/scss/larger'; +@import '@fortawesome/fontawesome-free-webfonts/scss/fixed-width'; +@import '@fortawesome/fontawesome-free-webfonts/scss/list'; +@import '@fortawesome/fontawesome-free-webfonts/scss/bordered-pulled'; +@import '@fortawesome/fontawesome-free-webfonts/scss/animated'; +@import '@fortawesome/fontawesome-free-webfonts/scss/rotated-flipped'; +@import '@fortawesome/fontawesome-free-webfonts/scss/stacked'; +@import '@fortawesome/fontawesome-free-webfonts/scss/icons'; +@import '@fortawesome/fontawesome-free-webfonts/scss/screen-reader'; + +// Choose brands, regular and solid fonts +@import '@fortawesome/fontawesome-free-webfonts/scss/fa-brands'; +@import '@fortawesome/fontawesome-free-webfonts/scss/fa-regular'; +@import '@fortawesome/fontawesome-free-webfonts/scss/fa-solid'; diff --git a/core/assets/css/editor.css b/assets/fonts/.gitkeep similarity index 100% rename from core/assets/css/editor.css rename to assets/fonts/.gitkeep diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/assets/fonts/bootstrap/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a495..0000000 Binary files a/assets/fonts/bootstrap/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/assets/fonts/bootstrap/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb549..0000000 --- a/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc6..0000000 Binary files a/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico deleted file mode 100644 index 2094167..0000000 Binary files a/assets/images/favicon.ico and /dev/null differ diff --git a/assets/img/admin-logo-login.png b/assets/img/admin-logo-login.png new file mode 100644 index 0000000..ad1f52c Binary files /dev/null and b/assets/img/admin-logo-login.png differ diff --git a/assets/img/theme-icon.png b/assets/img/theme-icon.png new file mode 100644 index 0000000..799d175 Binary files /dev/null and b/assets/img/theme-icon.png differ diff --git a/assets/img/theme-logo.png b/assets/img/theme-logo.png new file mode 100644 index 0000000..e358ae6 Binary files /dev/null and b/assets/img/theme-logo.png differ diff --git a/assets/js/admin.js b/assets/js/admin.js new file mode 100644 index 0000000..8d5dd5f --- /dev/null +++ b/assets/js/admin.js @@ -0,0 +1,7 @@ +/** + * -------------------------------------------------------------------------- + * Custom Admin Area Scripts + * -------------------------------------------------------------------------- + */ + +window.console.log('hello admin area, by Odin'); diff --git a/assets/js/bootstrap/affix.js b/assets/js/bootstrap/affix.js deleted file mode 100644 index 7f65168..0000000 --- a/assets/js/bootstrap/affix.js +++ /dev/null @@ -1,162 +0,0 @@ -/* ======================================================================== - * Bootstrap: affix.js v3.3.7 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.7' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/alert.js b/assets/js/bootstrap/alert.js deleted file mode 100644 index db97f3b..0000000 --- a/assets/js/bootstrap/alert.js +++ /dev/null @@ -1,94 +0,0 @@ -/* ======================================================================== - * Bootstrap: alert.js v3.3.7 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.7' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector === '#' ? [] : selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); diff --git a/assets/js/bootstrap/button.js b/assets/js/bootstrap/button.js deleted file mode 100644 index 843b39c..0000000 --- a/assets/js/bootstrap/button.js +++ /dev/null @@ -1,125 +0,0 @@ -/* ======================================================================== - * Bootstrap: button.js v3.3.7 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.7' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d).prop(d, true) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d).prop(d, false) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target).closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { - // Prevent double click on radios, and the double selections (so cancellation) on checkboxes - e.preventDefault() - // The target component still receive the focus - if ($btn.is('input,button')) $btn.trigger('focus') - else $btn.find('input:visible,button:visible').first().trigger('focus') - } - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/carousel.js b/assets/js/bootstrap/carousel.js deleted file mode 100644 index 6ff954c..0000000 --- a/assets/js/bootstrap/carousel.js +++ /dev/null @@ -1,237 +0,0 @@ -/* ======================================================================== - * Bootstrap: carousel.js v3.3.7 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.7' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/collapse.js b/assets/js/bootstrap/collapse.js deleted file mode 100644 index 1203869..0000000 --- a/assets/js/bootstrap/collapse.js +++ /dev/null @@ -1,212 +0,0 @@ -/* ======================================================================== - * Bootstrap: collapse.js v3.3.7 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - -/* jshint latedef: false */ - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.7' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/dropdown.js b/assets/js/bootstrap/dropdown.js deleted file mode 100644 index 04e9c2d..0000000 --- a/assets/js/bootstrap/dropdown.js +++ /dev/null @@ -1,165 +0,0 @@ -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.7 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.7' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger($.Event('shown.bs.dropdown', relatedTarget)) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); diff --git a/assets/js/bootstrap/modal.js b/assets/js/bootstrap/modal.js deleted file mode 100644 index f84142d..0000000 --- a/assets/js/bootstrap/modal.js +++ /dev/null @@ -1,339 +0,0 @@ -/* ======================================================================== - * Bootstrap: modal.js v3.3.7 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.7' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (document !== e.target && - this.$element[0] !== e.target && - !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/popover.js b/assets/js/bootstrap/popover.js deleted file mode 100644 index efe1956..0000000 --- a/assets/js/bootstrap/popover.js +++ /dev/null @@ -1,108 +0,0 @@ -/* ======================================================================== - * Bootstrap: popover.js v3.3.7 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.7' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); diff --git a/assets/js/bootstrap/scrollspy.js b/assets/js/bootstrap/scrollspy.js deleted file mode 100644 index fe19809..0000000 --- a/assets/js/bootstrap/scrollspy.js +++ /dev/null @@ -1,172 +0,0 @@ -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.7 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.7' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); diff --git a/assets/js/bootstrap/tab.js b/assets/js/bootstrap/tab.js deleted file mode 100644 index c4a8635..0000000 --- a/assets/js/bootstrap/tab.js +++ /dev/null @@ -1,155 +0,0 @@ -/* ======================================================================== - * Bootstrap: tab.js v3.3.7 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.7' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); diff --git a/assets/js/bootstrap/tooltip.js b/assets/js/bootstrap/tooltip.js deleted file mode 100644 index e35d9c7..0000000 --- a/assets/js/bootstrap/tooltip.js +++ /dev/null @@ -1,520 +0,0 @@ -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.7 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.7' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - } - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var isSvg = window.SVGElement && el instanceof window.SVGElement - // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. - // See https://github.com/twbs/bootstrap/issues/20280 - var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - that.$element = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); diff --git a/assets/js/bootstrap/transition.js b/assets/js/bootstrap/transition.js deleted file mode 100644 index db76596..0000000 --- a/assets/js/bootstrap/transition.js +++ /dev/null @@ -1,59 +0,0 @@ -/* ======================================================================== - * Bootstrap: transition.js v3.3.7 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); diff --git a/assets/js/html5.js b/assets/js/html5.js deleted file mode 100644 index 073b4ed..0000000 --- a/assets/js/html5.js +++ /dev/null @@ -1,9 +0,0 @@ -/** -* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); - -/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl - * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT - * */ -!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;bthis.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/assets/js/libs/jquery.fitvids.js b/assets/js/libs/jquery.fitvids.js deleted file mode 100644 index a8551f6..0000000 --- a/assets/js/libs/jquery.fitvids.js +++ /dev/null @@ -1,74 +0,0 @@ -/*global jQuery */ -/*jshint multistr:true browser:true */ -/*! -* FitVids 1.0.3 -* -* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com -* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ -* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ -* -* Date: Thu Sept 01 18:00:00 2011 -0500 -*/ - -(function( $ ){ - - "use strict"; - - $.fn.fitVids = function( options ) { - var settings = { - customSelector: null - }; - - if(!document.getElementById('fit-vids-style')) { - - var div = document.createElement('div'), - ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0], - cssStyles = '­'; - - div.className = 'fit-vids-style'; - div.id = 'fit-vids-style'; - div.style.display = 'none'; - div.innerHTML = cssStyles; - - ref.parentNode.insertBefore(div,ref); - - } - - if ( options ) { - $.extend( settings, options ); - } - - return this.each(function(){ - var selectors = [ - "iframe[src*='player.vimeo.com']", - "iframe[src*='youtube.com']", - "iframe[src*='youtube-nocookie.com']", - "iframe[src*='kickstarter.com'][src*='video.html']", - "object", - "embed" - ]; - - if (settings.customSelector) { - selectors.push(settings.customSelector); - } - - var $allVideos = $(this).find(selectors.join(',')); - $allVideos = $allVideos.not("object object"); // SwfObj conflict patch - - $allVideos.each(function(){ - var $this = $(this); - if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } - var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), - width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), - aspectRatio = height / width; - if(!$this.attr('id')){ - var videoID = 'fitvid' + Math.floor(Math.random()*999999); - $this.attr('id', videoID); - } - $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); - $this.removeAttr('height').removeAttr('width'); - }); - }); - }; -// Works with either jQuery or Zepto -})( window.jQuery || window.Zepto ); diff --git a/assets/js/main.js b/assets/js/main.js deleted file mode 100644 index 52b8cc8..0000000 --- a/assets/js/main.js +++ /dev/null @@ -1,21 +0,0 @@ -jQuery(document).ready(function($) { - // fitVids. - $( '.entry-content' ).fitVids(); - - // Responsive wp_video_shortcode(). - $( '.wp-video-shortcode' ).parent( 'div' ).css( 'width', 'auto' ); - - /** - * Odin Core shortcodes - */ - - // Tabs. - $( '.odin-tabs a' ).click(function(e) { - e.preventDefault(); - $(this).tab( 'show' ); - }); - - // Tooltip. - $( '.odin-tooltip' ).tooltip(); - -}); diff --git a/assets/js/main.min.js b/assets/js/main.min.js deleted file mode 100644 index 2f5ba74..0000000 --- a/assets/js/main.min.js +++ /dev/null @@ -1,2 +0,0 @@ -+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery),function(a){"use strict";a.fn.fitVids=function(b){var c={customSelector:null};if(!document.getElementById("fit-vids-style")){var d=document.createElement("div"),e=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0],f="­";d.className="fit-vids-style",d.id="fit-vids-style",d.style.display="none",d.innerHTML=f,e.parentNode.insertBefore(d,e)}return b&&a.extend(c,b),this.each(function(){var b=["iframe[src*='player.vimeo.com']","iframe[src*='youtube.com']","iframe[src*='youtube-nocookie.com']","iframe[src*='kickstarter.com'][src*='video.html']","object","embed"];c.customSelector&&b.push(c.customSelector);var d=a(this).find(b.join(","));d=d.not("object object"),d.each(function(){var b=a(this);if(!("embed"===this.tagName.toLowerCase()&&b.parent("object").length||b.parent(".fluid-width-video-wrapper").length)){var c="object"===this.tagName.toLowerCase()||b.attr("height")&&!isNaN(parseInt(b.attr("height"),10))?parseInt(b.attr("height"),10):b.height(),d=isNaN(parseInt(b.attr("width"),10))?b.width():parseInt(b.attr("width"),10),e=c/d;if(!b.attr("id")){var f="fitvid"+Math.floor(999999*Math.random());b.attr("id",f)}b.wrap('
').parent(".fluid-width-video-wrapper").css("padding-top",100*e+"%"),b.removeAttr("height").removeAttr("width")}})})}}(window.jQuery||window.Zepto),jQuery(document).ready(function(a){a(".entry-content").fitVids(),a(".wp-video-shortcode").parent("div").css("width","auto"),a(".odin-tabs a").click(function(b){b.preventDefault(),a(this).tab("show")}),a(".odin-tooltip").tooltip()}); \ No newline at end of file diff --git a/assets/js/theme.js b/assets/js/theme.js new file mode 100644 index 0000000..6a34924 --- /dev/null +++ b/assets/js/theme.js @@ -0,0 +1,49 @@ +/** + * -------------------------------------------------------------------------- + * Vendors + * -------------------------------------------------------------------------- + */ + +// Code here will be linted with JSHint. +/* jshint ignore:start */ + +/** + * Popper.js + * + * A library used to position poppers in web applications. + * + * @link https://popper.js.org + */ +@@include('../../node_modules/popper.js/dist/umd/popper.js') + +/** + * Bootstrap + * + * 1. All Bootstrap’s JavaScript files depend on util.js + * 2. The dropdown.js and popover.js JavaScript files requires Popper.js + * + * @link http://getbootstrap.com + */ +@@include('../../node_modules/bootstrap/js/dist/index.js') +@@include('../../node_modules/bootstrap/js/dist/util.js') +@@include('../../node_modules/bootstrap/js/dist/alert.js') +@@include('../../node_modules/bootstrap/js/dist/button.js') +@@include('../../node_modules/bootstrap/js/dist/carousel.js') +@@include('../../node_modules/bootstrap/js/dist/collapse.js') +@@include('../../node_modules/bootstrap/js/dist/dropdown.js') +@@include('../../node_modules/bootstrap/js/dist/modal.js') +@@include('../../node_modules/bootstrap/js/dist/tooltip.js') +@@include('../../node_modules/bootstrap/js/dist/popover.js') +@@include('../../node_modules/bootstrap/js/dist/scrollspy.js') +@@include('../../node_modules/bootstrap/js/dist/tab.js') + +// Code here will be ignored by JSHint. +/* jshint ignore:end */ + +/** + * -------------------------------------------------------------------------- + * Theme + * -------------------------------------------------------------------------- + */ + +window.console.log('hello theme area, by Odin'); diff --git a/assets/sass/_layout.scss b/assets/sass/_layout.scss deleted file mode 100644 index 1c3ab3b..0000000 --- a/assets/sass/_layout.scss +++ /dev/null @@ -1,133 +0,0 @@ -// ========================================================================== -// TABLE OF CONTENTS: -// ========================================================================== -// -// # Header -// # Title + description -// # Navbar -// # Wrapper -// # Content -// # Sidebar and Widgets -// # Components -// # Fancy skip link -// # Pagination -// # Comments -// # Footer -// - -// ========================================================================== -// Header -// ========================================================================== -#header { - // - // Navbar - // - #main-navigation { - margin: 20px 0; - } - // - // Title, description and image - // - .page-header { - margin: 20px 0 20px; - .site-title {} - .site-description { - font-size: 16px; - font-style: italic; - } - } -} - -// ========================================================================== -// Wrapper -// ========================================================================== -#wrapper {} - -// ========================================================================== -// Content -// ========================================================================== -#content {} - -// -// Home -// -.home { - #content { - .post { - margin-bottom: 40px; - &.sticky { - padding: 0 20px 20px; - border: 1px dashed $brand-info; - } - } - } -} - -// ========================================================================== -// Sidebar -// ========================================================================== -#sidebar {} - -// ========================================================================== -// Components -// ========================================================================== - -// -// Fancy skip link -// -// Make it look a bit less "bare bones" -// Also includes focus suppression for the Chrome tabindex="-1" workaround -// -#skippy { - display: block; - padding: 1em; - background-color: #f5f5f5; - outline: 0; -} - -#skippy .skiplink-text { - padding: .5em; - outline: 1px dotted; -} - -#content:focus { - outline: none; -} - -// -// Pagination -// -.pagination-wrap { - text-align: center; - margin-top: 15px; - .infinite-scroll & { - display: none; - } -} - -// ========================================================================== -// Footer -// ========================================================================== - -// -// Sticky footer styles -// -#footer { - text-align: center; - position: absolute; - bottom: 0; - width: 100%; - height: 50px; - background-color: #f5f5f5; - padding-top: 15px; -} - -html { - position: relative; - min-height: 100%; - overflow-y: scroll; -} - -body { - margin-bottom: 70px; -} diff --git a/assets/sass/_variables.scss b/assets/sass/_variables.scss deleted file mode 100644 index 64b3656..0000000 --- a/assets/sass/_variables.scss +++ /dev/null @@ -1,9 +0,0 @@ -// ========================================================================== -// Theme Custom Variables -// ========================================================================== - -// -// Example, Try next line! -// - -// $brand-primary: blueviolet; diff --git a/assets/sass/_woocommerce.scss b/assets/sass/_woocommerce.scss deleted file mode 100644 index 3b298f0..0000000 --- a/assets/sass/_woocommerce.scss +++ /dev/null @@ -1,17 +0,0 @@ -// ========================================================================== -// WooCommerce Styles Core -// ========================================================================== -// -// Important -// -// @use 'grunt woo' for get the files SASS -// @see How remove style native WooCommerce in 'inc/woocommerce/hooks.php'. -// - -@import "woocommerce/mixins"; -@import "woocommerce/variables"; -@import "woocommerce/animation"; -@import "woocommerce/fonts"; -@import "woocommerce/woocommerce-layout"; -@media screen and (max-width: 768px) { @import "woocommerce/woocommerce-smallscreen"; } -@import "woocommerce/woocommerce"; diff --git a/assets/sass/bootstrap/_bootstrap-compass.scss b/assets/sass/bootstrap/_bootstrap-compass.scss deleted file mode 100644 index 8fbc3cd..0000000 --- a/assets/sass/bootstrap/_bootstrap-compass.scss +++ /dev/null @@ -1,9 +0,0 @@ -@function twbs-font-path($path) { - @return font-url($path, true); -} - -@function twbs-image-path($path) { - @return image-url($path, true); -} - -$bootstrap-sass-asset-helper: true; diff --git a/assets/sass/bootstrap/_bootstrap-mincer.scss b/assets/sass/bootstrap/_bootstrap-mincer.scss deleted file mode 100644 index 0c4655e..0000000 --- a/assets/sass/bootstrap/_bootstrap-mincer.scss +++ /dev/null @@ -1,19 +0,0 @@ -// Mincer asset helper functions -// -// This must be imported into a .css.ejs.scss file. -// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. - - -@function twbs-font-path($path) { - // do something like following - // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" - // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" - // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" - @return "<%- asset_path("#{$path}".replace(/[#?].*$/, '')) + "#{$path}".replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; -} - -@function twbs-image-path($file) { - @return "<%- asset_path("#{$file}") %>"; -} - -$bootstrap-sass-asset-helper: true; diff --git a/assets/sass/bootstrap/_bootstrap-sprockets.scss b/assets/sass/bootstrap/_bootstrap-sprockets.scss deleted file mode 100644 index 9fffc1e..0000000 --- a/assets/sass/bootstrap/_bootstrap-sprockets.scss +++ /dev/null @@ -1,9 +0,0 @@ -@function twbs-font-path($path) { - @return font-path($path); -} - -@function twbs-image-path($path) { - @return image-path($path); -} - -$bootstrap-sass-asset-helper: true; diff --git a/assets/sass/bootstrap/_bootstrap.scss b/assets/sass/bootstrap/_bootstrap.scss deleted file mode 100644 index e72d1de..0000000 --- a/assets/sass/bootstrap/_bootstrap.scss +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap/variables"; -@import "bootstrap/mixins"; - -// Reset and dependencies -@import "bootstrap/normalize"; -@import "bootstrap/print"; -@import "bootstrap/glyphicons"; - -// Core CSS -@import "bootstrap/scaffolding"; -@import "bootstrap/type"; -@import "bootstrap/code"; -@import "bootstrap/grid"; -@import "bootstrap/tables"; -@import "bootstrap/forms"; -@import "bootstrap/buttons"; - -// Components -@import "bootstrap/component-animations"; -@import "bootstrap/dropdowns"; -@import "bootstrap/button-groups"; -@import "bootstrap/input-groups"; -@import "bootstrap/navs"; -@import "bootstrap/navbar"; -@import "bootstrap/breadcrumbs"; -@import "bootstrap/pagination"; -@import "bootstrap/pager"; -@import "bootstrap/labels"; -@import "bootstrap/badges"; -@import "bootstrap/jumbotron"; -@import "bootstrap/thumbnails"; -@import "bootstrap/alerts"; -@import "bootstrap/progress-bars"; -@import "bootstrap/media"; -@import "bootstrap/list-group"; -@import "bootstrap/panels"; -@import "bootstrap/responsive-embed"; -@import "bootstrap/wells"; -@import "bootstrap/close"; - -// Components w/ JavaScript -@import "bootstrap/modals"; -@import "bootstrap/tooltip"; -@import "bootstrap/popovers"; -@import "bootstrap/carousel"; - -// Utility classes -@import "bootstrap/utilities"; -@import "bootstrap/responsive-utilities"; diff --git a/assets/sass/bootstrap/bootstrap/_alerts.scss b/assets/sass/bootstrap/bootstrap/_alerts.scss deleted file mode 100644 index 7d1e1fd..0000000 --- a/assets/sass/bootstrap/bootstrap/_alerts.scss +++ /dev/null @@ -1,73 +0,0 @@ -// -// Alerts -// -------------------------------------------------- - - -// Base styles -// ------------------------- - -.alert { - padding: $alert-padding; - margin-bottom: $line-height-computed; - border: 1px solid transparent; - border-radius: $alert-border-radius; - - // Headings for larger alerts - h4 { - margin-top: 0; - // Specified for the h4 to prevent conflicts of changing $headings-color - color: inherit; - } - - // Provide class for links that match alerts - .alert-link { - font-weight: $alert-link-font-weight; - } - - // Improve alignment and spacing of inner content - > p, - > ul { - margin-bottom: 0; - } - - > p + p { - margin-top: 5px; - } -} - -// Dismissible alerts -// -// Expand the right padding and account for the close button's positioning. - -.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. -.alert-dismissible { - padding-right: ($alert-padding + 20); - - // Adjust close link position - .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; - } -} - -// Alternate styles -// -// Generate contextual modifier classes for colorizing the alert. - -.alert-success { - @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); -} - -.alert-info { - @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); -} - -.alert-warning { - @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); -} - -.alert-danger { - @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); -} diff --git a/assets/sass/bootstrap/bootstrap/_badges.scss b/assets/sass/bootstrap/bootstrap/_badges.scss deleted file mode 100644 index 70002e0..0000000 --- a/assets/sass/bootstrap/bootstrap/_badges.scss +++ /dev/null @@ -1,68 +0,0 @@ -// -// Badges -// -------------------------------------------------- - - -// Base class -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: $font-size-small; - font-weight: $badge-font-weight; - color: $badge-color; - line-height: $badge-line-height; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: $badge-bg; - border-radius: $badge-border-radius; - - // Empty badges collapse automatically (not available in IE8) - &:empty { - display: none; - } - - // Quick fix for badges in buttons - .btn & { - position: relative; - top: -1px; - } - - .btn-xs &, - .btn-group-xs > .btn & { - top: 0; - padding: 1px 5px; - } - - // [converter] extracted a& to a.badge - - // Account for badges in navs - .list-group-item.active > &, - .nav-pills > .active > a > & { - color: $badge-active-color; - background-color: $badge-active-bg; - } - - .list-group-item > & { - float: right; - } - - .list-group-item > & + & { - margin-right: 5px; - } - - .nav-pills > li > a > & { - margin-left: 3px; - } -} - -// Hover state, but only for links -a.badge { - &:hover, - &:focus { - color: $badge-link-hover-color; - text-decoration: none; - cursor: pointer; - } -} diff --git a/assets/sass/bootstrap/bootstrap/_breadcrumbs.scss b/assets/sass/bootstrap/bootstrap/_breadcrumbs.scss deleted file mode 100644 index b61f0c7..0000000 --- a/assets/sass/bootstrap/bootstrap/_breadcrumbs.scss +++ /dev/null @@ -1,28 +0,0 @@ -// -// Breadcrumbs -// -------------------------------------------------- - - -.breadcrumb { - padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; - margin-bottom: $line-height-computed; - list-style: none; - background-color: $breadcrumb-bg; - border-radius: $border-radius-base; - - > li { - display: inline-block; - - + li:before { - // [converter] Workaround for https://github.com/sass/libsass/issues/1115 - $nbsp: "\00a0"; - content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space - padding: 0 5px; - color: $breadcrumb-color; - } - } - - > .active { - color: $breadcrumb-active-color; - } -} diff --git a/assets/sass/bootstrap/bootstrap/_button-groups.scss b/assets/sass/bootstrap/bootstrap/_button-groups.scss deleted file mode 100644 index 4b385f5..0000000 --- a/assets/sass/bootstrap/bootstrap/_button-groups.scss +++ /dev/null @@ -1,244 +0,0 @@ -// -// Button groups -// -------------------------------------------------- - -// Make the div behave like a button -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; // match .btn alignment given font-size hack above - > .btn { - position: relative; - float: left; - // Bring the "active" button to the front - &:hover, - &:focus, - &:active, - &.active { - z-index: 2; - } - } -} - -// Prevent double borders when buttons are next to each other -.btn-group { - .btn + .btn, - .btn + .btn-group, - .btn-group + .btn, - .btn-group + .btn-group { - margin-left: -1px; - } -} - -// Optional: Group multiple button groups together for a toolbar -.btn-toolbar { - margin-left: -5px; // Offset the first child's margin - @include clearfix; - - .btn, - .btn-group, - .input-group { - float: left; - } - > .btn, - > .btn-group, - > .input-group { - margin-left: 5px; - } -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match -.btn-group > .btn:first-child { - margin-left: 0; - &:not(:last-child):not(.dropdown-toggle) { - @include border-right-radius(0); - } -} -// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - @include border-left-radius(0); -} - -// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - @include border-right-radius(0); - } -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - @include border-left-radius(0); -} - -// On active and open, don't show outline -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - - -// Sizing -// -// Remix the default button sizing classes into new ones for easier manipulation. - -.btn-group-xs > .btn { @extend .btn-xs; } -.btn-group-sm > .btn { @extend .btn-sm; } -.btn-group-lg > .btn { @extend .btn-lg; } - - -// Split button dropdowns -// ---------------------- - -// Give the line between buttons some depth -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} - -// The clickable button for toggling the menu -// Remove the gradient and set the same inset shadow as the :active state -.btn-group.open .dropdown-toggle { - @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - - // Show no shadow for `.btn-link` since it has no other button styles. - &.btn-link { - @include box-shadow(none); - } -} - - -// Reposition the caret -.btn .caret { - margin-left: 0; -} -// Carets in other button sizes -.btn-lg .caret { - border-width: $caret-width-large $caret-width-large 0; - border-bottom-width: 0; -} -// Upside down carets for .dropup -.dropup .btn-lg .caret { - border-width: 0 $caret-width-large $caret-width-large; -} - - -// Vertical button groups -// ---------------------- - -.btn-group-vertical { - > .btn, - > .btn-group, - > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; - } - - // Clear floats so dropdown menus can be properly placed - > .btn-group { - @include clearfix; - > .btn { - float: none; - } - } - - > .btn + .btn, - > .btn + .btn-group, - > .btn-group + .btn, - > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; - } -} - -.btn-group-vertical > .btn { - &:not(:first-child):not(:last-child) { - border-radius: 0; - } - &:first-child:not(:last-child) { - @include border-top-radius($btn-border-radius-base); - @include border-bottom-radius(0); - } - &:last-child:not(:first-child) { - @include border-top-radius(0); - @include border-bottom-radius($btn-border-radius-base); - } -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - @include border-bottom-radius(0); - } -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - @include border-top-radius(0); -} - - -// Justified button groups -// ---------------------- - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; - > .btn, - > .btn-group { - float: none; - display: table-cell; - width: 1%; - } - > .btn-group .btn { - width: 100%; - } - - > .btn-group .dropdown-menu { - left: auto; - } -} - - -// Checkbox and radio options -// -// In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use -// `display: none;` or `visibility: hidden;` as that also hides the popover. -// Simply visually hiding the inputs via `opacity` would leave them clickable in -// certain cases which is prevented by using `clip` and `pointer-events`. -// This way, we ensure a DOM element is visible to position the popover from. -// -// See https://github.com/twbs/bootstrap/pull/12794 and -// https://github.com/twbs/bootstrap/pull/14559 for more information. - -[data-toggle="buttons"] { - > .btn, - > .btn-group > .btn { - input[type="radio"], - input[type="checkbox"] { - position: absolute; - clip: rect(0,0,0,0); - pointer-events: none; - } - } -} diff --git a/assets/sass/bootstrap/bootstrap/_buttons.scss b/assets/sass/bootstrap/bootstrap/_buttons.scss deleted file mode 100644 index 6452b70..0000000 --- a/assets/sass/bootstrap/bootstrap/_buttons.scss +++ /dev/null @@ -1,168 +0,0 @@ -// -// Buttons -// -------------------------------------------------- - - -// Base styles -// -------------------------------------------------- - -.btn { - display: inline-block; - margin-bottom: 0; // For input.btn - font-weight: $btn-font-weight; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid transparent; - white-space: nowrap; - @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); - @include user-select(none); - - &, - &:active, - &.active { - &:focus, - &.focus { - @include tab-focus; - } - } - - &:hover, - &:focus, - &.focus { - color: $btn-default-color; - text-decoration: none; - } - - &:active, - &.active { - outline: 0; - background-image: none; - @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - cursor: $cursor-disabled; - @include opacity(.65); - @include box-shadow(none); - } - - // [converter] extracted a& to a.btn -} - -a.btn { - &.disabled, - fieldset[disabled] & { - pointer-events: none; // Future-proof disabling of clicks on `` elements - } -} - - -// Alternate buttons -// -------------------------------------------------- - -.btn-default { - @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); -} -.btn-primary { - @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); -} -// Success appears as green -.btn-success { - @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); -} -// Info appears as blue-green -.btn-info { - @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); -} -// Warning appears as orange -.btn-warning { - @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); -} -// Danger and error appear as red -.btn-danger { - @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); -} - - -// Link buttons -// ------------------------- - -// Make a button look and behave like a link -.btn-link { - color: $link-color; - font-weight: normal; - border-radius: 0; - - &, - &:active, - &.active, - &[disabled], - fieldset[disabled] & { - background-color: transparent; - @include box-shadow(none); - } - &, - &:hover, - &:focus, - &:active { - border-color: transparent; - } - &:hover, - &:focus { - color: $link-hover-color; - text-decoration: $link-hover-decoration; - background-color: transparent; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: $btn-link-disabled-color; - text-decoration: none; - } - } -} - - -// Button Sizes -// -------------------------------------------------- - -.btn-lg { - // line-height: ensure even-numbered height of button next to large input - @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); -} -.btn-sm { - // line-height: ensure proper height of button next to small input - @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); -} -.btn-xs { - @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); -} - - -// Block button -// -------------------------------------------------- - -.btn-block { - display: block; - width: 100%; -} - -// Vertically space out multiple block buttons -.btn-block + .btn-block { - margin-top: 5px; -} - -// Specificity overrides -input[type="submit"], -input[type="reset"], -input[type="button"] { - &.btn-block { - width: 100%; - } -} diff --git a/assets/sass/bootstrap/bootstrap/_carousel.scss b/assets/sass/bootstrap/bootstrap/_carousel.scss deleted file mode 100644 index 753d881..0000000 --- a/assets/sass/bootstrap/bootstrap/_carousel.scss +++ /dev/null @@ -1,270 +0,0 @@ -// -// Carousel -// -------------------------------------------------- - - -// Wrapper for the slide container and indicators -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; - - > .item { - display: none; - position: relative; - @include transition(.6s ease-in-out left); - - // Account for jankitude on images - > img, - > a > img { - @include img-responsive; - line-height: 1; - } - - // WebKit CSS3 transforms for supported devices - @media all and (transform-3d), (-webkit-transform-3d) { - @include transition-transform(0.6s ease-in-out); - @include backface-visibility(hidden); - @include perspective(1000px); - - &.next, - &.active.right { - @include translate3d(100%, 0, 0); - left: 0; - } - &.prev, - &.active.left { - @include translate3d(-100%, 0, 0); - left: 0; - } - &.next.left, - &.prev.right, - &.active { - @include translate3d(0, 0, 0); - left: 0; - } - } - } - - > .active, - > .next, - > .prev { - display: block; - } - - > .active { - left: 0; - } - - > .next, - > .prev { - position: absolute; - top: 0; - width: 100%; - } - - > .next { - left: 100%; - } - > .prev { - left: -100%; - } - > .next.left, - > .prev.right { - left: 0; - } - - > .active.left { - left: -100%; - } - > .active.right { - left: 100%; - } - -} - -// Left/right controls for nav -// --------------------------- - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: $carousel-control-width; - @include opacity($carousel-control-opacity); - font-size: $carousel-control-font-size; - color: $carousel-control-color; - text-align: center; - text-shadow: $carousel-text-shadow; - background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug - // We can't have this transition here because WebKit cancels the carousel - // animation if you trip this while in the middle of another animation. - - // Set gradients for backgrounds - &.left { - @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); - } - &.right { - left: auto; - right: 0; - @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); - } - - // Hover/focus state - &:hover, - &:focus { - outline: 0; - color: $carousel-control-color; - text-decoration: none; - @include opacity(.9); - } - - // Toggles - .icon-prev, - .icon-next, - .glyphicon-chevron-left, - .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; - } - .icon-prev, - .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; - } - .icon-next, - .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; - } - .icon-prev, - .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; - } - - - .icon-prev { - &:before { - content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) - } - } - .icon-next { - &:before { - content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) - } - } -} - -// Optional indicator pips -// -// Add an unordered list with the following class and add a list item for each -// slide your carousel holds. - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; - - li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid $carousel-indicator-border-color; - border-radius: 10px; - cursor: pointer; - - // IE8-9 hack for event handling - // - // Internet Explorer 8-9 does not support clicks on elements without a set - // `background-color`. We cannot use `filter` since that's not viewed as a - // background color by the browser. Thus, a hack is needed. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer - // - // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we - // set alpha transparency for the best results possible. - background-color: #000 \9; // IE8 - background-color: rgba(0,0,0,0); // IE9 - } - .active { - margin: 0; - width: 12px; - height: 12px; - background-color: $carousel-indicator-active-bg; - } -} - -// Optional captions -// ----------------------------- -// Hidden by default for smaller viewports -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: $carousel-caption-color; - text-align: center; - text-shadow: $carousel-text-shadow; - & .btn { - text-shadow: none; // No shadow for button elements in carousel-caption - } -} - - -// Scale up controls for tablets and up -@media screen and (min-width: $screen-sm-min) { - - // Scale up the controls a smidge - .carousel-control { - .glyphicon-chevron-left, - .glyphicon-chevron-right, - .icon-prev, - .icon-next { - width: ($carousel-control-font-size * 1.5); - height: ($carousel-control-font-size * 1.5); - margin-top: ($carousel-control-font-size / -2); - font-size: ($carousel-control-font-size * 1.5); - } - .glyphicon-chevron-left, - .icon-prev { - margin-left: ($carousel-control-font-size / -2); - } - .glyphicon-chevron-right, - .icon-next { - margin-right: ($carousel-control-font-size / -2); - } - } - - // Show and left align the captions - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - - // Move up the indicators - .carousel-indicators { - bottom: 20px; - } -} diff --git a/assets/sass/bootstrap/bootstrap/_close.scss b/assets/sass/bootstrap/bootstrap/_close.scss deleted file mode 100644 index 3b74d8a..0000000 --- a/assets/sass/bootstrap/bootstrap/_close.scss +++ /dev/null @@ -1,36 +0,0 @@ -// -// Close icons -// -------------------------------------------------- - - -.close { - float: right; - font-size: ($font-size-base * 1.5); - font-weight: $close-font-weight; - line-height: 1; - color: $close-color; - text-shadow: $close-text-shadow; - @include opacity(.2); - - &:hover, - &:focus { - color: $close-color; - text-decoration: none; - cursor: pointer; - @include opacity(.5); - } - - // [converter] extracted button& to button.close -} - -// Additional properties for button version -// iOS requires the button element instead of an anchor tag. -// If you want the anchor version, it requires `href="#"`. -// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} diff --git a/assets/sass/bootstrap/bootstrap/_code.scss b/assets/sass/bootstrap/bootstrap/_code.scss deleted file mode 100644 index caa5f06..0000000 --- a/assets/sass/bootstrap/bootstrap/_code.scss +++ /dev/null @@ -1,69 +0,0 @@ -// -// Code (inline and block) -// -------------------------------------------------- - - -// Inline and block code styles -code, -kbd, -pre, -samp { - font-family: $font-family-monospace; -} - -// Inline code -code { - padding: 2px 4px; - font-size: 90%; - color: $code-color; - background-color: $code-bg; - border-radius: $border-radius-base; -} - -// User input typically entered via keyboard -kbd { - padding: 2px 4px; - font-size: 90%; - color: $kbd-color; - background-color: $kbd-bg; - border-radius: $border-radius-small; - box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); - - kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; - } -} - -// Blocks of code -pre { - display: block; - padding: (($line-height-computed - 1) / 2); - margin: 0 0 ($line-height-computed / 2); - font-size: ($font-size-base - 1); // 14px to 13px - line-height: $line-height-base; - word-break: break-all; - word-wrap: break-word; - color: $pre-color; - background-color: $pre-bg; - border: 1px solid $pre-border-color; - border-radius: $border-radius-base; - - // Account for some code outputs that place code tags in pre tags - code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; - } -} - -// Enable scrollable blocks of code -.pre-scrollable { - max-height: $pre-scrollable-max-height; - overflow-y: scroll; -} diff --git a/assets/sass/bootstrap/bootstrap/_component-animations.scss b/assets/sass/bootstrap/bootstrap/_component-animations.scss deleted file mode 100644 index ca3b43c..0000000 --- a/assets/sass/bootstrap/bootstrap/_component-animations.scss +++ /dev/null @@ -1,37 +0,0 @@ -// -// Component animations -// -------------------------------------------------- - -// Heads up! -// -// We don't use the `.opacity()` mixin here since it causes a bug with text -// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. - -.fade { - opacity: 0; - @include transition(opacity .15s linear); - &.in { - opacity: 1; - } -} - -.collapse { - display: none; - - &.in { display: block; } - // [converter] extracted tr&.in to tr.collapse.in - // [converter] extracted tbody&.in to tbody.collapse.in -} - -tr.collapse.in { display: table-row; } - -tbody.collapse.in { display: table-row-group; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - @include transition-property(height, visibility); - @include transition-duration(.35s); - @include transition-timing-function(ease); -} diff --git a/assets/sass/bootstrap/bootstrap/_dropdowns.scss b/assets/sass/bootstrap/bootstrap/_dropdowns.scss deleted file mode 100644 index aac8459..0000000 --- a/assets/sass/bootstrap/bootstrap/_dropdowns.scss +++ /dev/null @@ -1,216 +0,0 @@ -// -// Dropdown menus -// -------------------------------------------------- - - -// Dropdown arrow/caret -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: $caret-width-base dashed; - border-top: $caret-width-base solid \9; // IE8 - border-right: $caret-width-base solid transparent; - border-left: $caret-width-base solid transparent; -} - -// The dropdown wrapper (div) -.dropup, -.dropdown { - position: relative; -} - -// Prevent the focus on the dropdown toggle when closing dropdowns -.dropdown-toggle:focus { - outline: 0; -} - -// The dropdown menu (ul) -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: $zindex-dropdown; - display: none; // none by default, but block on "open" of the menu - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; // override default ul - list-style: none; - font-size: $font-size-base; - text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) - background-color: $dropdown-bg; - border: 1px solid $dropdown-fallback-border; // IE8 fallback - border: 1px solid $dropdown-border; - border-radius: $border-radius-base; - @include box-shadow(0 6px 12px rgba(0,0,0,.175)); - background-clip: padding-box; - - // Aligns the dropdown menu to right - // - // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` - &.pull-right { - right: 0; - left: auto; - } - - // Dividers (basically an hr) within the dropdown - .divider { - @include nav-divider($dropdown-divider-bg); - } - - // Links within the dropdown menu - > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: $line-height-base; - color: $dropdown-link-color; - white-space: nowrap; // prevent links from randomly breaking onto new lines - } -} - -// Hover/Focus state -.dropdown-menu > li > a { - &:hover, - &:focus { - text-decoration: none; - color: $dropdown-link-hover-color; - background-color: $dropdown-link-hover-bg; - } -} - -// Active state -.dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: $dropdown-link-active-color; - text-decoration: none; - outline: 0; - background-color: $dropdown-link-active-bg; - } -} - -// Disabled state -// -// Gray out text and ensure the hover/focus state remains gray - -.dropdown-menu > .disabled > a { - &, - &:hover, - &:focus { - color: $dropdown-link-disabled-color; - } - - // Nuke hover/focus effects - &:hover, - &:focus { - text-decoration: none; - background-color: transparent; - background-image: none; // Remove CSS gradient - @include reset-filter; - cursor: $cursor-disabled; - } -} - -// Open state for the dropdown -.open { - // Show the menu - > .dropdown-menu { - display: block; - } - - // Remove the outline when :focus is triggered - > a { - outline: 0; - } -} - -// Menu positioning -// -// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown -// menu with the parent. -.dropdown-menu-right { - left: auto; // Reset the default from `.dropdown-menu` - right: 0; -} -// With v3, we enabled auto-flipping if you have a dropdown within a right -// aligned nav component. To enable the undoing of that, we provide an override -// to restore the default dropdown menu alignment. -// -// This is only for left-aligning a dropdown menu within a `.navbar-right` or -// `.pull-right` nav component. -.dropdown-menu-left { - left: 0; - right: auto; -} - -// Dropdown section headers -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: $font-size-small; - line-height: $line-height-base; - color: $dropdown-header-color; - white-space: nowrap; // as with > li > a -} - -// Backdrop to catch body clicks on mobile, etc. -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: ($zindex-dropdown - 10); -} - -// Right aligned dropdowns -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -// Allow for dropdowns to go bottom up (aka, dropup-menu) -// -// Just add .dropup after the standard .dropdown class and you're set, bro. -// TODO: abstract this so that the navbar fixed styles are not placed here? - -.dropup, -.navbar-fixed-bottom .dropdown { - // Reverse the caret - .caret { - border-top: 0; - border-bottom: $caret-width-base dashed; - border-bottom: $caret-width-base solid \9; // IE8 - content: ""; - } - // Different positioning for bottom up menu - .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; - } -} - - -// Component alignment -// -// Reiterate per navbar.less and the modified component alignment there. - -@media (min-width: $grid-float-breakpoint) { - .navbar-right { - .dropdown-menu { - right: 0; left: auto; - } - // Necessary for overrides of the default right aligned menu. - // Will remove come v4 in all likelihood. - .dropdown-menu-left { - left: 0; right: auto; - } - } -} diff --git a/assets/sass/bootstrap/bootstrap/_forms.scss b/assets/sass/bootstrap/bootstrap/_forms.scss deleted file mode 100644 index ac26a6a..0000000 --- a/assets/sass/bootstrap/bootstrap/_forms.scss +++ /dev/null @@ -1,617 +0,0 @@ -// -// Forms -// -------------------------------------------------- - - -// Normalize non-controls -// -// Restyle and baseline non-control form elements. - -fieldset { - padding: 0; - margin: 0; - border: 0; - // Chrome and Firefox set a `min-width: min-content;` on fieldsets, - // so we reset that to ensure it behaves more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359. - min-width: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: $line-height-computed; - font-size: ($font-size-base * 1.5); - line-height: inherit; - color: $legend-color; - border: 0; - border-bottom: 1px solid $legend-border-color; -} - -label { - display: inline-block; - max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) - margin-bottom: 5px; - font-weight: bold; -} - - -// Normalize form controls -// -// While most of our form styles require extra classes, some basic normalization -// is required to ensure optimum display with or without those classes to better -// address browser inconsistencies. - -// Override content-box in Normalize (* isn't specific enough) -input[type="search"] { - @include box-sizing(border-box); -} - -// Position radios and checkboxes better -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; // IE8-9 - line-height: normal; -} - -input[type="file"] { - display: block; -} - -// Make range inputs behave like textual form controls -input[type="range"] { - display: block; - width: 100%; -} - -// Make multiple select elements height not fixed -select[multiple], -select[size] { - height: auto; -} - -// Focus for file, radio, and checkbox -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - @include tab-focus; -} - -// Adjust output element -output { - display: block; - padding-top: ($padding-base-vertical + 1); - font-size: $font-size-base; - line-height: $line-height-base; - color: $input-color; -} - - -// Common form controls -// -// Shared size and type resets for form controls. Apply `.form-control` to any -// of the following form controls: -// -// select -// textarea -// input[type="text"] -// input[type="password"] -// input[type="datetime"] -// input[type="datetime-local"] -// input[type="date"] -// input[type="month"] -// input[type="time"] -// input[type="week"] -// input[type="number"] -// input[type="email"] -// input[type="url"] -// input[type="search"] -// input[type="tel"] -// input[type="color"] - -.form-control { - display: block; - width: 100%; - height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) - padding: $padding-base-vertical $padding-base-horizontal; - font-size: $font-size-base; - line-height: $line-height-base; - color: $input-color; - background-color: $input-bg; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid $input-border; - border-radius: $input-border-radius; // Note: This has no effect on s in CSS. - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); - @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); - - // Customize the `:focus` state to imitate native WebKit styles. - @include form-control-focus; - - // Placeholder - @include placeholder; - - // Unstyle the caret on `` background color -$input-bg: #fff !default; -//** `` background color -$input-bg-disabled: $gray-lighter !default; - -//** Text color for ``s -$input-color: $gray !default; -//** `` border color -$input-border: #ccc !default; - -// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 -//** Default `.form-control` border radius -// This has no effect on ``s in CSS. -$input-border-radius: $border-radius-base !default; -//** Large `.form-control` border radius -$input-border-radius-large: $border-radius-large !default; -//** Small `.form-control` border radius -$input-border-radius-small: $border-radius-small !default; - -//** Border color for inputs on focus -$input-border-focus: #66afe9 !default; - -//** Placeholder text color -$input-color-placeholder: #999 !default; - -//** Default `.form-control` height -$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; -//** Large `.form-control` height -$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; -//** Small `.form-control` height -$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; - -//** `.form-group` margin -$form-group-margin-bottom: 15px !default; - -$legend-color: $gray-dark !default; -$legend-border-color: #e5e5e5 !default; - -//** Background color for textual input addons -$input-group-addon-bg: $gray-lighter !default; -//** Border color for textual input addons -$input-group-addon-border-color: $input-border !default; - -//** Disabled cursor for form controls and buttons. -$cursor-disabled: not-allowed !default; - - -//== Dropdowns -// -//## Dropdown menu container and contents. - -//** Background for the dropdown menu. -$dropdown-bg: #fff !default; -//** Dropdown menu `border-color`. -$dropdown-border: rgba(0,0,0,.15) !default; -//** Dropdown menu `border-color` **for IE8**. -$dropdown-fallback-border: #ccc !default; -//** Divider color for between dropdown items. -$dropdown-divider-bg: #e5e5e5 !default; - -//** Dropdown link text color. -$dropdown-link-color: $gray-dark !default; -//** Hover color for dropdown links. -$dropdown-link-hover-color: darken($gray-dark, 5%) !default; -//** Hover background for dropdown links. -$dropdown-link-hover-bg: #f5f5f5 !default; - -//** Active dropdown menu item text color. -$dropdown-link-active-color: $component-active-color !default; -//** Active dropdown menu item background color. -$dropdown-link-active-bg: $component-active-bg !default; - -//** Disabled dropdown menu item background color. -$dropdown-link-disabled-color: $gray-light !default; - -//** Text color for headers within dropdown menus. -$dropdown-header-color: $gray-light !default; - -//** Deprecated `$dropdown-caret-color` as of v3.1.0 -$dropdown-caret-color: #000 !default; - - -//-- Z-index master list -// -// Warning: Avoid customizing these values. They're used for a bird's eye view -// of components dependent on the z-axis and are designed to all work together. -// -// Note: These variables are not generated into the Customizer. - -$zindex-navbar: 1000 !default; -$zindex-dropdown: 1000 !default; -$zindex-popover: 1060 !default; -$zindex-tooltip: 1070 !default; -$zindex-navbar-fixed: 1030 !default; -$zindex-modal-background: 1040 !default; -$zindex-modal: 1050 !default; - - -//== Media queries breakpoints -// -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -// Extra small screen / phone -//** Deprecated `$screen-xs` as of v3.0.1 -$screen-xs: 480px !default; -//** Deprecated `$screen-xs-min` as of v3.2.0 -$screen-xs-min: $screen-xs !default; -//** Deprecated `$screen-phone` as of v3.0.1 -$screen-phone: $screen-xs-min !default; - -// Small screen / tablet -//** Deprecated `$screen-sm` as of v3.0.1 -$screen-sm: 768px !default; -$screen-sm-min: $screen-sm !default; -//** Deprecated `$screen-tablet` as of v3.0.1 -$screen-tablet: $screen-sm-min !default; - -// Medium screen / desktop -//** Deprecated `$screen-md` as of v3.0.1 -$screen-md: 992px !default; -$screen-md-min: $screen-md !default; -//** Deprecated `$screen-desktop` as of v3.0.1 -$screen-desktop: $screen-md-min !default; - -// Large screen / wide desktop -//** Deprecated `$screen-lg` as of v3.0.1 -$screen-lg: 1200px !default; -$screen-lg-min: $screen-lg !default; -//** Deprecated `$screen-lg-desktop` as of v3.0.1 -$screen-lg-desktop: $screen-lg-min !default; - -// So media queries don't overlap when required, provide a maximum -$screen-xs-max: ($screen-sm-min - 1) !default; -$screen-sm-max: ($screen-md-min - 1) !default; -$screen-md-max: ($screen-lg-min - 1) !default; - - -//== Grid system -// -//## Define your custom responsive grid. - -//** Number of columns in the grid. -$grid-columns: 12 !default; -//** Padding between columns. Gets divided in half for the left and right. -$grid-gutter-width: 30px !default; -// Navbar collapse -//** Point at which the navbar becomes uncollapsed. -$grid-float-breakpoint: $screen-sm-min !default; -//** Point at which the navbar begins collapsing. -$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; - - -//== Container sizes -// -//## Define the maximum width of `.container` for different screen sizes. - -// Small screen / tablet -$container-tablet: (720px + $grid-gutter-width) !default; -//** For `$screen-sm-min` and up. -$container-sm: $container-tablet !default; - -// Medium screen / desktop -$container-desktop: (940px + $grid-gutter-width) !default; -//** For `$screen-md-min` and up. -$container-md: $container-desktop !default; - -// Large screen / wide desktop -$container-large-desktop: (1140px + $grid-gutter-width) !default; -//** For `$screen-lg-min` and up. -$container-lg: $container-large-desktop !default; - - -//== Navbar -// -//## - -// Basics of a navbar -$navbar-height: 50px !default; -$navbar-margin-bottom: $line-height-computed !default; -$navbar-border-radius: $border-radius-base !default; -$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; -$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; -$navbar-collapse-max-height: 340px !default; - -$navbar-default-color: #777 !default; -$navbar-default-bg: #f8f8f8 !default; -$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; - -// Navbar links -$navbar-default-link-color: #777 !default; -$navbar-default-link-hover-color: #333 !default; -$navbar-default-link-hover-bg: transparent !default; -$navbar-default-link-active-color: #555 !default; -$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; -$navbar-default-link-disabled-color: #ccc !default; -$navbar-default-link-disabled-bg: transparent !default; - -// Navbar brand label -$navbar-default-brand-color: $navbar-default-link-color !default; -$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; -$navbar-default-brand-hover-bg: transparent !default; - -// Navbar toggle -$navbar-default-toggle-hover-bg: #ddd !default; -$navbar-default-toggle-icon-bar-bg: #888 !default; -$navbar-default-toggle-border-color: #ddd !default; - - -//=== Inverted navbar -// Reset inverted navbar basics -$navbar-inverse-color: lighten($gray-light, 15%) !default; -$navbar-inverse-bg: #222 !default; -$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; - -// Inverted navbar links -$navbar-inverse-link-color: lighten($gray-light, 15%) !default; -$navbar-inverse-link-hover-color: #fff !default; -$navbar-inverse-link-hover-bg: transparent !default; -$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; -$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; -$navbar-inverse-link-disabled-color: #444 !default; -$navbar-inverse-link-disabled-bg: transparent !default; - -// Inverted navbar brand label -$navbar-inverse-brand-color: $navbar-inverse-link-color !default; -$navbar-inverse-brand-hover-color: #fff !default; -$navbar-inverse-brand-hover-bg: transparent !default; - -// Inverted navbar toggle -$navbar-inverse-toggle-hover-bg: #333 !default; -$navbar-inverse-toggle-icon-bar-bg: #fff !default; -$navbar-inverse-toggle-border-color: #333 !default; - - -//== Navs -// -//## - -//=== Shared nav styles -$nav-link-padding: 10px 15px !default; -$nav-link-hover-bg: $gray-lighter !default; - -$nav-disabled-link-color: $gray-light !default; -$nav-disabled-link-hover-color: $gray-light !default; - -//== Tabs -$nav-tabs-border-color: #ddd !default; - -$nav-tabs-link-hover-border-color: $gray-lighter !default; - -$nav-tabs-active-link-hover-bg: $body-bg !default; -$nav-tabs-active-link-hover-color: $gray !default; -$nav-tabs-active-link-hover-border-color: #ddd !default; - -$nav-tabs-justified-link-border-color: #ddd !default; -$nav-tabs-justified-active-link-border-color: $body-bg !default; - -//== Pills -$nav-pills-border-radius: $border-radius-base !default; -$nav-pills-active-link-hover-bg: $component-active-bg !default; -$nav-pills-active-link-hover-color: $component-active-color !default; - - -//== Pagination -// -//## - -$pagination-color: $link-color !default; -$pagination-bg: #fff !default; -$pagination-border: #ddd !default; - -$pagination-hover-color: $link-hover-color !default; -$pagination-hover-bg: $gray-lighter !default; -$pagination-hover-border: #ddd !default; - -$pagination-active-color: #fff !default; -$pagination-active-bg: $brand-primary !default; -$pagination-active-border: $brand-primary !default; - -$pagination-disabled-color: $gray-light !default; -$pagination-disabled-bg: #fff !default; -$pagination-disabled-border: #ddd !default; - - -//== Pager -// -//## - -$pager-bg: $pagination-bg !default; -$pager-border: $pagination-border !default; -$pager-border-radius: 15px !default; - -$pager-hover-bg: $pagination-hover-bg !default; - -$pager-active-bg: $pagination-active-bg !default; -$pager-active-color: $pagination-active-color !default; - -$pager-disabled-color: $pagination-disabled-color !default; - - -//== Jumbotron -// -//## - -$jumbotron-padding: 30px !default; -$jumbotron-color: inherit !default; -$jumbotron-bg: $gray-lighter !default; -$jumbotron-heading-color: inherit !default; -$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; -$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; - - -//== Form states and alerts -// -//## Define colors for form feedback states and, by default, alerts. - -$state-success-text: #3c763d !default; -$state-success-bg: #dff0d8 !default; -$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; - -$state-info-text: #31708f !default; -$state-info-bg: #d9edf7 !default; -$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; - -$state-warning-text: #8a6d3b !default; -$state-warning-bg: #fcf8e3 !default; -$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; - -$state-danger-text: #a94442 !default; -$state-danger-bg: #f2dede !default; -$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; - - -//== Tooltips -// -//## - -//** Tooltip max width -$tooltip-max-width: 200px !default; -//** Tooltip text color -$tooltip-color: #fff !default; -//** Tooltip background color -$tooltip-bg: #000 !default; -$tooltip-opacity: .9 !default; - -//** Tooltip arrow width -$tooltip-arrow-width: 5px !default; -//** Tooltip arrow color -$tooltip-arrow-color: $tooltip-bg !default; - - -//== Popovers -// -//## - -//** Popover body background color -$popover-bg: #fff !default; -//** Popover maximum width -$popover-max-width: 276px !default; -//** Popover border color -$popover-border-color: rgba(0,0,0,.2) !default; -//** Popover fallback border color -$popover-fallback-border-color: #ccc !default; - -//** Popover title background color -$popover-title-bg: darken($popover-bg, 3%) !default; - -//** Popover arrow width -$popover-arrow-width: 10px !default; -//** Popover arrow color -$popover-arrow-color: $popover-bg !default; - -//** Popover outer arrow width -$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; -//** Popover outer arrow color -$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default; -//** Popover outer arrow fallback color -$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; - - -//== Labels -// -//## - -//** Default label background color -$label-default-bg: $gray-light !default; -//** Primary label background color -$label-primary-bg: $brand-primary !default; -//** Success label background color -$label-success-bg: $brand-success !default; -//** Info label background color -$label-info-bg: $brand-info !default; -//** Warning label background color -$label-warning-bg: $brand-warning !default; -//** Danger label background color -$label-danger-bg: $brand-danger !default; - -//** Default label text color -$label-color: #fff !default; -//** Default text color of a linked label -$label-link-hover-color: #fff !default; - - -//== Modals -// -//## - -//** Padding applied to the modal body -$modal-inner-padding: 15px !default; - -//** Padding applied to the modal title -$modal-title-padding: 15px !default; -//** Modal title line-height -$modal-title-line-height: $line-height-base !default; - -//** Background color of modal content area -$modal-content-bg: #fff !default; -//** Modal content border color -$modal-content-border-color: rgba(0,0,0,.2) !default; -//** Modal content border color **for IE8** -$modal-content-fallback-border-color: #999 !default; - -//** Modal backdrop background color -$modal-backdrop-bg: #000 !default; -//** Modal backdrop opacity -$modal-backdrop-opacity: .5 !default; -//** Modal header border color -$modal-header-border-color: #e5e5e5 !default; -//** Modal footer border color -$modal-footer-border-color: $modal-header-border-color !default; - -$modal-lg: 900px !default; -$modal-md: 600px !default; -$modal-sm: 300px !default; - - -//== Alerts -// -//## Define alert colors, border radius, and padding. - -$alert-padding: 15px !default; -$alert-border-radius: $border-radius-base !default; -$alert-link-font-weight: bold !default; - -$alert-success-bg: $state-success-bg !default; -$alert-success-text: $state-success-text !default; -$alert-success-border: $state-success-border !default; - -$alert-info-bg: $state-info-bg !default; -$alert-info-text: $state-info-text !default; -$alert-info-border: $state-info-border !default; - -$alert-warning-bg: $state-warning-bg !default; -$alert-warning-text: $state-warning-text !default; -$alert-warning-border: $state-warning-border !default; - -$alert-danger-bg: $state-danger-bg !default; -$alert-danger-text: $state-danger-text !default; -$alert-danger-border: $state-danger-border !default; - - -//== Progress bars -// -//## - -//** Background color of the whole progress component -$progress-bg: #f5f5f5 !default; -//** Progress bar text color -$progress-bar-color: #fff !default; -//** Variable for setting rounded corners on progress bar. -$progress-border-radius: $border-radius-base !default; - -//** Default progress bar color -$progress-bar-bg: $brand-primary !default; -//** Success progress bar color -$progress-bar-success-bg: $brand-success !default; -//** Warning progress bar color -$progress-bar-warning-bg: $brand-warning !default; -//** Danger progress bar color -$progress-bar-danger-bg: $brand-danger !default; -//** Info progress bar color -$progress-bar-info-bg: $brand-info !default; - - -//== List group -// -//## - -//** Background color on `.list-group-item` -$list-group-bg: #fff !default; -//** `.list-group-item` border color -$list-group-border: #ddd !default; -//** List group border radius -$list-group-border-radius: $border-radius-base !default; - -//** Background color of single list items on hover -$list-group-hover-bg: #f5f5f5 !default; -//** Text color of active list items -$list-group-active-color: $component-active-color !default; -//** Background color of active list items -$list-group-active-bg: $component-active-bg !default; -//** Border color of active list elements -$list-group-active-border: $list-group-active-bg !default; -//** Text color for content within active list items -$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; - -//** Text color of disabled list items -$list-group-disabled-color: $gray-light !default; -//** Background color of disabled list items -$list-group-disabled-bg: $gray-lighter !default; -//** Text color for content within disabled list items -$list-group-disabled-text-color: $list-group-disabled-color !default; - -$list-group-link-color: #555 !default; -$list-group-link-hover-color: $list-group-link-color !default; -$list-group-link-heading-color: #333 !default; - - -//== Panels -// -//## - -$panel-bg: #fff !default; -$panel-body-padding: 15px !default; -$panel-heading-padding: 10px 15px !default; -$panel-footer-padding: $panel-heading-padding !default; -$panel-border-radius: $border-radius-base !default; - -//** Border color for elements within panels -$panel-inner-border: #ddd !default; -$panel-footer-bg: #f5f5f5 !default; - -$panel-default-text: $gray-dark !default; -$panel-default-border: #ddd !default; -$panel-default-heading-bg: #f5f5f5 !default; - -$panel-primary-text: #fff !default; -$panel-primary-border: $brand-primary !default; -$panel-primary-heading-bg: $brand-primary !default; - -$panel-success-text: $state-success-text !default; -$panel-success-border: $state-success-border !default; -$panel-success-heading-bg: $state-success-bg !default; - -$panel-info-text: $state-info-text !default; -$panel-info-border: $state-info-border !default; -$panel-info-heading-bg: $state-info-bg !default; - -$panel-warning-text: $state-warning-text !default; -$panel-warning-border: $state-warning-border !default; -$panel-warning-heading-bg: $state-warning-bg !default; - -$panel-danger-text: $state-danger-text !default; -$panel-danger-border: $state-danger-border !default; -$panel-danger-heading-bg: $state-danger-bg !default; - - -//== Thumbnails -// -//## - -//** Padding around the thumbnail image -$thumbnail-padding: 4px !default; -//** Thumbnail background color -$thumbnail-bg: $body-bg !default; -//** Thumbnail border color -$thumbnail-border: #ddd !default; -//** Thumbnail border radius -$thumbnail-border-radius: $border-radius-base !default; - -//** Custom text color for thumbnail captions -$thumbnail-caption-color: $text-color !default; -//** Padding around the thumbnail caption -$thumbnail-caption-padding: 9px !default; - - -//== Wells -// -//## - -$well-bg: #f5f5f5 !default; -$well-border: darken($well-bg, 7%) !default; - - -//== Badges -// -//## - -$badge-color: #fff !default; -//** Linked badge text color on hover -$badge-link-hover-color: #fff !default; -$badge-bg: $gray-light !default; - -//** Badge text color in active nav link -$badge-active-color: $link-color !default; -//** Badge background color in active nav link -$badge-active-bg: #fff !default; - -$badge-font-weight: bold !default; -$badge-line-height: 1 !default; -$badge-border-radius: 10px !default; - - -//== Breadcrumbs -// -//## - -$breadcrumb-padding-vertical: 8px !default; -$breadcrumb-padding-horizontal: 15px !default; -//** Breadcrumb background color -$breadcrumb-bg: #f5f5f5 !default; -//** Breadcrumb text color -$breadcrumb-color: #ccc !default; -//** Text color of current page in the breadcrumb -$breadcrumb-active-color: $gray-light !default; -//** Textual separator for between breadcrumb elements -$breadcrumb-separator: "/" !default; - - -//== Carousel -// -//## - -$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; - -$carousel-control-color: #fff !default; -$carousel-control-width: 15% !default; -$carousel-control-opacity: .5 !default; -$carousel-control-font-size: 20px !default; - -$carousel-indicator-active-bg: #fff !default; -$carousel-indicator-border-color: #fff !default; - -$carousel-caption-color: #fff !default; - - -//== Close -// -//## - -$close-font-weight: bold !default; -$close-color: #000 !default; -$close-text-shadow: 0 1px 0 #fff !default; - - -//== Code -// -//## - -$code-color: #c7254e !default; -$code-bg: #f9f2f4 !default; - -$kbd-color: #fff !default; -$kbd-bg: #333 !default; - -$pre-bg: #f5f5f5 !default; -$pre-color: $gray-dark !default; -$pre-border-color: #ccc !default; -$pre-scrollable-max-height: 340px !default; - - -//== Type -// -//## - -//** Horizontal offset for forms and lists. -$component-offset-horizontal: 180px !default; -//** Text muted color -$text-muted: $gray-light !default; -//** Abbreviations and acronyms border color -$abbr-border-color: $gray-light !default; -//** Headings small color -$headings-small-color: $gray-light !default; -//** Blockquote small color -$blockquote-small-color: $gray-light !default; -//** Blockquote font size -$blockquote-font-size: ($font-size-base * 1.25) !default; -//** Blockquote border color -$blockquote-border-color: $gray-lighter !default; -//** Page header border color -$page-header-border-color: $gray-lighter !default; -//** Width of horizontal description list titles -$dl-horizontal-offset: $component-offset-horizontal !default; -//** Point at which .dl-horizontal becomes horizontal -$dl-horizontal-breakpoint: $grid-float-breakpoint !default; -//** Horizontal line color. -$hr-border: $gray-lighter !default; diff --git a/assets/sass/bootstrap/bootstrap/_wells.scss b/assets/sass/bootstrap/bootstrap/_wells.scss deleted file mode 100644 index b865711..0000000 --- a/assets/sass/bootstrap/bootstrap/_wells.scss +++ /dev/null @@ -1,29 +0,0 @@ -// -// Wells -// -------------------------------------------------- - - -// Base class -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: $well-bg; - border: 1px solid $well-border; - border-radius: $border-radius-base; - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); - blockquote { - border-color: #ddd; - border-color: rgba(0,0,0,.15); - } -} - -// Sizes -.well-lg { - padding: 24px; - border-radius: $border-radius-large; -} -.well-sm { - padding: 9px; - border-radius: $border-radius-small; -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_alerts.scss b/assets/sass/bootstrap/bootstrap/mixins/_alerts.scss deleted file mode 100644 index 3faf0b5..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_alerts.scss +++ /dev/null @@ -1,14 +0,0 @@ -// Alerts - -@mixin alert-variant($background, $border, $text-color) { - background-color: $background; - border-color: $border; - color: $text-color; - - hr { - border-top-color: darken($border, 5%); - } - .alert-link { - color: darken($text-color, 10%); - } -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_background-variant.scss b/assets/sass/bootstrap/bootstrap/mixins/_background-variant.scss deleted file mode 100644 index 4c7769e..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_background-variant.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Contextual backgrounds - -// [converter] $parent hack -@mixin bg-variant($parent, $color) { - #{$parent} { - background-color: $color; - } - a#{$parent}:hover, - a#{$parent}:focus { - background-color: darken($color, 10%); - } -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_border-radius.scss b/assets/sass/bootstrap/bootstrap/mixins/_border-radius.scss deleted file mode 100644 index ce19499..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_border-radius.scss +++ /dev/null @@ -1,18 +0,0 @@ -// Single side border-radius - -@mixin border-top-radius($radius) { - border-top-right-radius: $radius; - border-top-left-radius: $radius; -} -@mixin border-right-radius($radius) { - border-bottom-right-radius: $radius; - border-top-right-radius: $radius; -} -@mixin border-bottom-radius($radius) { - border-bottom-right-radius: $radius; - border-bottom-left-radius: $radius; -} -@mixin border-left-radius($radius) { - border-bottom-left-radius: $radius; - border-top-left-radius: $radius; -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_buttons.scss b/assets/sass/bootstrap/bootstrap/mixins/_buttons.scss deleted file mode 100644 index b93f84b..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_buttons.scss +++ /dev/null @@ -1,65 +0,0 @@ -// Button variants -// -// Easily pump out default styles, as well as :hover, :focus, :active, -// and disabled options for all buttons - -@mixin button-variant($color, $background, $border) { - color: $color; - background-color: $background; - border-color: $border; - - &:focus, - &.focus { - color: $color; - background-color: darken($background, 10%); - border-color: darken($border, 25%); - } - &:hover { - color: $color; - background-color: darken($background, 10%); - border-color: darken($border, 12%); - } - &:active, - &.active, - .open > &.dropdown-toggle { - color: $color; - background-color: darken($background, 10%); - border-color: darken($border, 12%); - - &:hover, - &:focus, - &.focus { - color: $color; - background-color: darken($background, 17%); - border-color: darken($border, 25%); - } - } - &:active, - &.active, - .open > &.dropdown-toggle { - background-image: none; - } - &.disabled, - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus, - &.focus { - background-color: $background; - border-color: $border; - } - } - - .badge { - color: $background; - background-color: $color; - } -} - -// Button sizes -@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { - padding: $padding-vertical $padding-horizontal; - font-size: $font-size; - line-height: $line-height; - border-radius: $border-radius; -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_center-block.scss b/assets/sass/bootstrap/bootstrap/mixins/_center-block.scss deleted file mode 100644 index e06fb5e..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_center-block.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Center-align a block level element - -@mixin center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_clearfix.scss b/assets/sass/bootstrap/bootstrap/mixins/_clearfix.scss deleted file mode 100644 index dc3e2ab..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_clearfix.scss +++ /dev/null @@ -1,22 +0,0 @@ -// Clearfix -// -// For modern browsers -// 1. The space content is one way to avoid an Opera bug when the -// contenteditable attribute is included anywhere else in the document. -// Otherwise it causes space to appear at the top and bottom of elements -// that are clearfixed. -// 2. The use of `table` rather than `block` is only necessary if using -// `:before` to contain the top-margins of child elements. -// -// Source: http://nicolasgallagher.com/micro-clearfix-hack/ - -@mixin clearfix() { - &:before, - &:after { - content: " "; // 1 - display: table; // 2 - } - &:after { - clear: both; - } -} diff --git a/assets/sass/bootstrap/bootstrap/mixins/_forms.scss b/assets/sass/bootstrap/bootstrap/mixins/_forms.scss deleted file mode 100644 index 277aa5f..0000000 --- a/assets/sass/bootstrap/bootstrap/mixins/_forms.scss +++ /dev/null @@ -1,88 +0,0 @@ -// Form validation states -// -// Used in forms.less to generate the form validation CSS for warnings, errors, -// and successes. - -@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { - // Color the label and help text - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label { - color: $text-color; - } - // Set the border and box shadow on specific inputs to match - .form-control { - border-color: $border-color; - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work - &:focus { - border-color: darken($border-color, 10%); - $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); - @include box-shadow($shadow); - } - } - // Set validation states also for addons - .input-group-addon { - color: $text-color; - border-color: $border-color; - background-color: $background-color; - } - // Optional feedback icon - .form-control-feedback { - color: $text-color; - } -} - - -// Form control focus state -// -// Generate a customized focus state and for any input with the specified color, -// which defaults to the `$input-border-focus` variable. -// -// We highly encourage you to not customize the default value, but instead use -// this to tweak colors on an as-needed basis. This aesthetic change is based on -// WebKit's default styles, but applicable to a wider range of browsers. Its -// usability and accessibility should be taken into account with any change. -// -// Example usage: change the default blue border and shadow to white for better -// contrast against a dark gray background. -@mixin form-control-focus($color: $input-border-focus) { - $color-rgba: rgba(red($color), green($color), blue($color), .6); - &:focus { - border-color: $color; - outline: 0; - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); - } -} - -// Form control sizing -// -// Relative text size, padding, and border-radii changes for form controls. For -// horizontal sizing, wrap controls in the predefined grid classes. `'; - $fields = array( - 'author' => '
' . ' ' . - '
', - 'email' => '', - 'url' => '
' . - '
' - ); - comment_form( array( - 'comment_notes_after' => '', - 'comment_field' => $comment_field, - 'fields' => apply_filters( 'comment_form_default_fields', $fields ), - 'class_submit' => 'submit btn btn-default' - )); - ?> - +/** + * Comments component. + */ +get_template_part( 'components/comments/comments' ); diff --git a/components/_app.scss b/components/_app.scss new file mode 100644 index 0000000..de0872a --- /dev/null +++ b/components/_app.scss @@ -0,0 +1,15 @@ +/*! + * App Component + */ + +.odin-app { + &-body { + @extend .container; + + // Wrapper + &-wrapper{ + @extend .row; + @extend .justify-content-around; + } + } +} diff --git a/components/_wordpress.scss b/components/_wordpress.scss new file mode 100644 index 0000000..cba03f7 --- /dev/null +++ b/components/_wordpress.scss @@ -0,0 +1,153 @@ +/*! + * WordPress Native Classes + */ + +// +// Variables WordPress +// + +$wp-spacer: 1.5rem !default; + +// +// Image +// + +.widget img, +[class*="wp-image-"], +.gallery-item .attachment-thumbnail, +.gallery-item .gallery-icon { + max-width: 100%; + height: auto; + line-height: 1px; +} + +// +// Figure +// + +.gallery-item, +.wp-caption { + display: inline-block; + max-width: 100%; + height: auto; + + img { + margin-bottom: 0.5rem; + line-height: 1; + } + + figcaption { + font-size: 90%; + } +} + +// +// Gallery +// + +@if mixin-exists(make-row) { + @for $i from 1 through 9 { + .gallery-columns-#{$i} { + @include make-row(); + + .gallery-item { + @include make-col-ready(); + @include make-col(12 / $i); + } + } + } +} + + +// +// Alignments +// + +.alignnone { + margin: $wp-spacer 0; +} + +.alignright { + @extend .float-right; + margin: $wp-spacer 0 $wp-spacer $wp-spacer; +} + +.alignleft { + @extend .float-left; + margin: $wp-spacer $wp-spacer $wp-spacer 0; +} + +.aligncenter { + display: block; + margin: $wp-spacer auto; +} + +// +// Fix break word +// +// Specify that the browser can break a line of text inside the targeted element onto multiple lines in an otherwise unbreakable place. +// @link https://css-tricks.com/almanac/properties/o/overflow-wrap/ +// + +.hentry, +.comment, +#comments { + word-wrap: break-word; + overflow-wrap: break-word; + word-break: break-all; + hyphens: auto; +} + +// +// Default widget +// +.widget { + + ul { + li { + word-wrap: break-word; + } + } + + widgettitle { + @extend .h2; + @extend .mt-0; + @extend .mb-3; + } +} + +// +// Tag cloud widget +// +.widget_tag_cloud { + @each $child, $random in (1: 30, 2: 23, 3: 29, 4: 23, 5: 23, 6: 23, 7: 21, 8: 16, 9: 14, 10: 25, 11: 26, 12: 32) { + a:nth-child(#{$child}) { + font-size: #{$random}px !important; + } + } +} + +// +// Calendar widget +// +.widget_calendar { + .calendar_wrap > table { + @extend .table; + @extend .table-bordered; + @extend .table-sm; + + > caption { + text-align: center; + } + + > tfoot { + #prev { + @extend .text-sm-left; + } + + #next { + @extend .text-sm-right; + } + } + } +} diff --git a/components/banner/_banner.scss b/components/banner/_banner.scss new file mode 100644 index 0000000..21728fd --- /dev/null +++ b/components/banner/_banner.scss @@ -0,0 +1,75 @@ +/*! + * Banner Component + */ +.odin-banner { + @extend .container-fluid; + @extend .clearfix; + position: relative; + min-height: $odin-banner-height; + + // Background image with ::after + &::after { + background: $odin-banner-bg; + min-height: $odin-banner-height; + content: ""; + opacity: 1; + top: 0; + left: 0; + bottom: 0; + right: 0; + position: absolute; + z-index: -1; + } + + &-wrapper { + @extend .d-flex; + @extend .flex-column; + @extend .flex-md-row; + @extend .justify-content-center; + @extend .align-items-center; + min-height: $odin-banner-height; + } + + // Content + &-content { + @extend .text-center; + word-break: break-all; + + // Header title + &__title { + @extend .display-4; + @extend .mb-3; + color: $odin-banner-color; + } + + // Header description + &__description { + @extend .h5; + @extend .px-1; + color: $odin-banner-color; + } + } + + // Banner styled in phones and tables + @include media-breakpoint-down(md) { + &, + &::after, + &-wrapper { + min-height: 150px !important; + } + + &-content { + word-break: normal; + + &__title { + font-size: 1.5rem; + font-weight: bold; + } + + &__description { + font-size: 1rem; + font-weight: bold; + } + } + } +} diff --git a/components/banner/banner.functions.php b/components/banner/banner.functions.php new file mode 100644 index 0000000..4d94ec5 --- /dev/null +++ b/components/banner/banner.functions.php @@ -0,0 +1,69 @@ +ID ) ); // https://core.trac.wordpress.org/ticket/42814 + } elseif ( is_archive() ) { + // Archive. + return get_the_archive_description(); + } else { + return; + } + } +} + +/** + * Get banner image. + */ +if ( ! function_exists( 'odin_get_banner_image' ) ) { + function odin_get_banner_image() { + if ( get_header_image() && is_home() ) { + // Header Image (support custom header support) only if is home. + return get_header_image(); + } elseif ( has_post_thumbnail() ) { + // Thumbnail Post (get original size if not exists the correct). + $image = odin_get_attachment_image_src( get_post_thumbnail_id(), 1400, 600 ); + return ( ! isset( $image ) ) ?: wp_get_attachment_url( get_post_thumbnail_id() ); + } else { + return; + } + } +} diff --git a/components/banner/banner.php b/components/banner/banner.php new file mode 100644 index 0000000..a808556 --- /dev/null +++ b/components/banner/banner.php @@ -0,0 +1,40 @@ + + +
+ +
+ +
+ +

+ + +

+ + +
+ +
+ +
+ + + + diff --git a/components/comments/_comments.scss b/components/comments/_comments.scss new file mode 100644 index 0000000..6be7048 --- /dev/null +++ b/components/comments/_comments.scss @@ -0,0 +1,58 @@ +/*! + * Comments Area + */ + +.odin-comments { + @extend .my-5; + + // Title + &__title { + @extend .h3; + } +} + +/*! + * Comment Single + */ + +.odin-comment { + // Wrappper + &-wrapper { + @extend .media; + @extend .mb-4; + } + + // Avatar + &-avatar { + @extend .align-self-start; + @extend .mr-4; + + img { + @extend .rounded-circle; + } + } + + // Body + &-body { + @extend .media-body; + + &__header { + @extend .h6; + } + + &__content { + .odin-alert-info { + @extend .alert; + @extend .alert-info; + } + + img { + @extend .img-fluid; + } + + iframe { + @extend .embed-responsive; + } + } + } +} diff --git a/components/comments/comments.functions.php b/components/comments/comments.functions.php new file mode 100644 index 0000000..885cdb1 --- /dev/null +++ b/components/comments/comments.functions.php @@ -0,0 +1,88 @@ +comment_type ) { + case 'pingback' : + case 'trackback' : + ?> +
+

+ + + ', '' ); ?> +

+
+ +
id="comment-"> + +
+ +
+ +
+ +
+
+ %1$s %2$s %7$s', + get_comment_author_link(), esc_attr__( 'in', 'odin' ), + esc_url( get_comment_link( $comment->comment_ID ) ), + get_comment_time( 'c' ), + get_comment_date(), esc_attr__( 'at', 'odin' ), + get_comment_time(), esc_attr__( 'said:', 'odin' ) + ); ?> +
+ +
+ + comment_approved ) : ?> + + + + +
+ +
+ + + +
+
+ +
+ +
+ + +
+ +
+ + +

+ "' . get_the_title() . '"'; + ?> +

+ +
+ 'odin_comments_loop', + ) ); ?> +
+ + __( '← Old Comments', 'odin' ), + 'next_text' => __( 'New Comments →', 'odin' ), + ) ); + endif; // Check for have_comments(). + + // If comments are closed and there are comments, let's leave a little note, shall we? + if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) : ?> +
+

+
+ + + + +
+ +
diff --git a/components/footer/_footer.scss b/components/footer/_footer.scss new file mode 100644 index 0000000..25e5668 --- /dev/null +++ b/components/footer/_footer.scss @@ -0,0 +1,41 @@ +/*! + * Footer Component + */ +.odin-footer { + + // Wrapper + &-wrapper { + @extend .container; + @extend .py-5; + } + + // Copyright + &__copyright { + @extend .text-center; + } + + // Widgets + &__widgets { + @extend .row; + @extend .justify-content-around; + + .odin-widget, + .widget { + @extend .col-lg-4; + @extend .d-print-none; + @extend .mb-3; + } + } + + // Sticky footer styled + // @link https://css-tricks.com/couple-takes-sticky-footer + @at-root .odin-app-wrapper { + display: flex; + min-height: 100vh; + flex-direction: column; + } + + @at-root .odin-app-body { + flex: 1; + } +} diff --git a/components/footer/footer.functions.php b/components/footer/footer.functions.php new file mode 100644 index 0000000..56339a0 --- /dev/null +++ b/components/footer/footer.functions.php @@ -0,0 +1,35 @@ + 'odin-widgets-footer', + 'name' => __( 'Footer', 'odin' ), + 'description' => __( 'Widgets in Footer', 'odin' ), + 'before_widget' => '', + 'before_title' => '

', + 'after_title' => '

', + ) + ); + + } + + add_action( 'widgets_init', 'odin_widgets_footer_init' ); + +} diff --git a/components/footer/footer.php b/components/footer/footer.php new file mode 100644 index 0000000..f740c5d --- /dev/null +++ b/components/footer/footer.php @@ -0,0 +1,31 @@ + + +
+ + + +
diff --git a/components/form/_form-comment.scss b/components/form/_form-comment.scss new file mode 100644 index 0000000..396ec69 --- /dev/null +++ b/components/form/_form-comment.scss @@ -0,0 +1,18 @@ +/*! + * Form Comment Component + */ +.odin-commentForm { + + &__group { + @extend .form-group; + } + + &__control { + @extend .form-control; + } + + &__btn { + @extend .btn; + @extend .btn-secondary; + } +} diff --git a/components/form/_form-search.scss b/components/form/_form-search.scss new file mode 100644 index 0000000..17994aa --- /dev/null +++ b/components/form/_form-search.scss @@ -0,0 +1,48 @@ +/*! + * Form Search Component + */ +.odin-formSearch { + @extend .form-inline; + + &__group { + @extend .form-group; + } + + &__label { + @extend .sr-only; + } + + &__control { + @extend .form-control; + } + + &__btn { + @extend .btn; + @extend .btn-primary; + @extend .mx-2; + } + + // Inside Navigation Topbar Component + .odin-navigation-topbar & { + + &__control { + background: $odin-navigation-topbar-formSearch-bg; + color: $odin-navigation-topbar-formSearch-color; + border-color: $odin-navigation-topbar-formSearch-border-color; + + &:focus { + border-color: $odin-navigation-topbar-formSearch-color; + box-shadow: 0 0 0 0.2rem $odin-navigation-topbar-formSearch-placeholder-color; + } + &::placeholder { + color: $odin-navigation-topbar-formSearch-placeholder-color; + } + } + + &__btn { + @extend .btn-outline-light; + @extend .mx-2; + } + + } +} diff --git a/components/form/form-comment.php b/components/form/form-comment.php new file mode 100644 index 0000000..ef2e6d7 --- /dev/null +++ b/components/form/form-comment.php @@ -0,0 +1,52 @@ + + '
+ + +
', + 'email' => + '', + 'url' => + '
+ + +
', +); + +$comment_field = + '
+ + +
'; + +/** + * Display comment form. + * + * @link https://developer.wordpress.org/reference/functions/comment_form + */ +comment_form( array( + 'format' => 'xhtml', + 'comment_notes_after' => '', + 'comment_field' => $comment_field, + 'fields' => apply_filters( 'comment_form_default_fields', $fields ), + 'class_form' => 'odin-commentForm', + 'class_submit' => 'odin-commentForm__btn', +)); diff --git a/components/form/form-search.php b/components/form/form-search.php new file mode 100644 index 0000000..4789ff1 --- /dev/null +++ b/components/form/form-search.php @@ -0,0 +1,24 @@ + + + diff --git a/components/header/_header.scss b/components/header/_header.scss new file mode 100644 index 0000000..059fa91 --- /dev/null +++ b/components/header/_header.scss @@ -0,0 +1,3 @@ +/*! + * Header Component + */ diff --git a/components/header/header.functions.php b/components/header/header.functions.php new file mode 100644 index 0000000..50c5ca2 --- /dev/null +++ b/components/header/header.functions.php @@ -0,0 +1,26 @@ + 1400, + 'height' => 600, + 'flex-width' => true, + 'flex-height' => true, + 'header-text' => false, + 'default-image' => '', + 'uploads' => true, + ); + add_theme_support( 'custom-header', $args ); +} +add_action( 'after_setup_theme', 'odin_custom_header_setup' ); diff --git a/components/header/header.php b/components/header/header.php new file mode 100644 index 0000000..2e67277 --- /dev/null +++ b/components/header/header.php @@ -0,0 +1,38 @@ + + +
+ +
+ + + + + + + + +
+ +
+ + diff --git a/components/main/_main-404.scss b/components/main/_main-404.scss new file mode 100644 index 0000000..7227a9f --- /dev/null +++ b/components/main/_main-404.scss @@ -0,0 +1,14 @@ +/*! + * Content 404 Component + */ + +.odin-main { + .error404 & { + @extend .text-center; + + .odin-formSearch { + @extend .d-flex; + @extend .justify-content-center; + } + } +} diff --git a/components/main/_main.scss b/components/main/_main.scss new file mode 100644 index 0000000..3d1b87a --- /dev/null +++ b/components/main/_main.scss @@ -0,0 +1,11 @@ +/*! + * Main Component + */ + +.odin-main { + @extend .col-lg-8; + + &-wrapper{ + @extend .p-5; + } +} diff --git a/components/main/main-404.php b/components/main/main-404.php new file mode 100644 index 0000000..90240de --- /dev/null +++ b/components/main/main-404.php @@ -0,0 +1,31 @@ + + +
+ +
+ +
+

+
+ +
+

+ + +
+ +
+ +
diff --git a/components/main/main-page.php b/components/main/main-page.php new file mode 100644 index 0000000..accf6cd --- /dev/null +++ b/components/main/main-page.php @@ -0,0 +1,31 @@ + + +
+ +
+ + + +
+ +
diff --git a/components/main/main.php b/components/main/main.php new file mode 100644 index 0000000..4e1e408 --- /dev/null +++ b/components/main/main.php @@ -0,0 +1,43 @@ + + +
+ +
+ + + +
+ +
diff --git a/components/navigation/_navigation-main.scss b/components/navigation/_navigation-main.scss new file mode 100644 index 0000000..450265c --- /dev/null +++ b/components/navigation/_navigation-main.scss @@ -0,0 +1,77 @@ +/*! + * Navigation Main Component + */ +.odin-navMain { + @extend .navbar; + @extend .navbar-expand-md; + @extend .navbar-dark; + @extend .py-2; + background: $odin-navigation-main-bg; + color: $odin-navigation-main-color; + + &-wrapper { + @extend .container; + } + + /* + * Toggler button + */ + &__toggler { + @extend .navbar-toggler; + > span { + @extend .navbar-toggler-icon; + } + } + + /* + * Collapse area + */ + &__collapse { + @extend .collapse; + @extend .navbar-collapse; + } + + /* + * Main menu + */ + &__mainMenu { + @extend .navbar-nav; + + .menu-item { + @extend .nav-item; + + > a { + @extend .nav-link; + color: $odin-navigation-main-link-color; + } + + &.current-menu-item { + @extend .active; + } + + &.menu-item-has-children { + @extend .dropdown; + + &:hover > .dropdown-menu { + display: block; /* BS4 dropdown hover */ + } + + > a { + @extend .dropdown-toggle; + + &:active { + pointer-events: none; /* BS4 dropdown hover: Without this, clicking will make it sticky */ + } + } + + > ul { + @extend .dropdown-menu; + + .menu-item a { + @extend .dropdown-item; + } + } + } + } + } +} diff --git a/components/navigation/_navigation-skiplink.scss b/components/navigation/_navigation-skiplink.scss new file mode 100644 index 0000000..9fb0ebb --- /dev/null +++ b/components/navigation/_navigation-skiplink.scss @@ -0,0 +1,12 @@ +/*! + * Navigation Skiplink Component + */ +.odin-navigationSkiplink { + &__item { + @include sr-only; + @include sr-only-focusable; + @extend .d-block; + @extend .p-3; + outline: 0; + } +} diff --git a/components/navigation/_navigation-topbar.scss b/components/navigation/_navigation-topbar.scss new file mode 100644 index 0000000..379594b --- /dev/null +++ b/components/navigation/_navigation-topbar.scss @@ -0,0 +1,24 @@ +/*! + * Nagivation Topbar Component + */ +.odin-navigation-topbar { + @extend .py-1; + background: $odin-navigation-topbar-bg; + color: $odin-navigation-topbar-color; + + &-wrapper { + @extend .container; + } + + &-container { + @extend .d-flex; + @extend .flex-column; + @extend .flex-sm-row; + @extend .justify-content-between; + @extend .align-items-center; + } + + a { + color: $odin-navigation-topbar-link-color; + } +} diff --git a/components/navigation/navigation-main.php b/components/navigation/navigation-main.php new file mode 100644 index 0000000..b797cd1 --- /dev/null +++ b/components/navigation/navigation-main.php @@ -0,0 +1,38 @@ + + + diff --git a/components/navigation/navigation-skiplink.php b/components/navigation/navigation-skiplink.php new file mode 100644 index 0000000..64429d3 --- /dev/null +++ b/components/navigation/navigation-skiplink.php @@ -0,0 +1,15 @@ + + + diff --git a/components/navigation/navigation-topbar.php b/components/navigation/navigation-topbar.php new file mode 100644 index 0000000..468afac --- /dev/null +++ b/components/navigation/navigation-topbar.php @@ -0,0 +1,35 @@ + + + + + diff --git a/components/page/_page.scss b/components/page/_page.scss new file mode 100644 index 0000000..03d4ea5 --- /dev/null +++ b/components/page/_page.scss @@ -0,0 +1,7 @@ +/*! + * Page Component + */ + +.odin-page { + @extend .odin-post; +} diff --git a/components/page/page.php b/components/page/page.php new file mode 100644 index 0000000..b8f3709 --- /dev/null +++ b/components/page/page.php @@ -0,0 +1,75 @@ + + +
> + +
+ +
+ + ', '' ); + else : + the_title( '

', '

' ); + endif; + ?> + +
+ +
+ + ' . __( 'Continue reading', 'odin' ) . '' ); + + /** + * Pagination within a post. + */ + get_template_part( 'components/pagination/pagination', 'within-post' ); + } ?> + +
+ + +
+ + + +
+ + + + +
+ +
diff --git a/components/pagination/_pagination-between-single-posts.scss b/components/pagination/_pagination-between-single-posts.scss new file mode 100644 index 0000000..838c3c6 --- /dev/null +++ b/components/pagination/_pagination-between-single-posts.scss @@ -0,0 +1,15 @@ +/*! + * Pagination Between Single Posts. + */ +.odin-pagination-between-single-posts { + @extend .pagination; + @extend .justify-content-between; + + &__item { + @extend .page-item; + + > span { + @extend .page-link; + } + } +} diff --git a/components/pagination/_pagination-posts.scss b/components/pagination/_pagination-posts.scss new file mode 100644 index 0000000..36e9b75 --- /dev/null +++ b/components/pagination/_pagination-posts.scss @@ -0,0 +1,21 @@ +/*! + * Pagination Posts Component + */ +.odin-pagination-posts { + @extend .d-flex; + @extend .justify-content-center; + + .nav-links { + @extend .pagination; + + + & > .page-numbers { + @extend .page-item; + @extend .page-link; + } + } + + .screen-reader-text { + @extend .sr-only; + } +} diff --git a/components/pagination/_pagination-within-post.scss b/components/pagination/_pagination-within-post.scss new file mode 100644 index 0000000..2ba2615 --- /dev/null +++ b/components/pagination/_pagination-within-post.scss @@ -0,0 +1,15 @@ +/*! + * Pagination within a post Component + */ +.odin-pagination-with-post { + @extend .pagination; + @extend .justify-content-between; + + &__item { + @extend .page-item; + } + + &__link { + @extend .page-link; + } +} diff --git a/components/pagination/pagination-between-single-posts.php b/components/pagination/pagination-between-single-posts.php new file mode 100644 index 0000000..630f64d --- /dev/null +++ b/components/pagination/pagination-between-single-posts.php @@ -0,0 +1,19 @@ + + + diff --git a/components/pagination/pagination-posts.php b/components/pagination/pagination-posts.php new file mode 100644 index 0000000..6f49c59 --- /dev/null +++ b/components/pagination/pagination-posts.php @@ -0,0 +1,22 @@ + + +
+ +
diff --git a/components/pagination/pagination-within-post.php b/components/pagination/pagination-within-post.php new file mode 100644 index 0000000..f7aa076 --- /dev/null +++ b/components/pagination/pagination-within-post.php @@ -0,0 +1,18 @@ + '', + 'separator' => '
  • ', + 'link_before' => '', + 'link_after' => '', + 'next_or_number' => 'next', +) ); diff --git a/components/post/_post.scss b/components/post/_post.scss new file mode 100644 index 0000000..9a2d5df --- /dev/null +++ b/components/post/_post.scss @@ -0,0 +1,41 @@ +/*! + * Post Component + */ + +.odin-post { + @extend .mb-5; + overflow-wrap: break-word; + + // Meta author post + &__meta-author { + &-wrapper { + @extend .d-flex; + @extend .align-items-center; + img { + @extend .mr-2; + @extend .rounded-circle; + } + } + } + + // Header post + &-header { + &__title { + @extend .h2; + } + } + + // Body post + &-body { + @extend .mt-3; + + img { + @extend .img-fluid; + } + } + + // Footer post + &-footer { + @extend .clearfix; + } +} diff --git a/components/post/parts/comments-link-post.php b/components/post/parts/comments-link-post.php new file mode 100644 index 0000000..34186e6 --- /dev/null +++ b/components/post/parts/comments-link-post.php @@ -0,0 +1,21 @@ + + +
    + +
    + + + +
    + +
    diff --git a/components/post/parts/footer-post.php b/components/post/parts/footer-post.php new file mode 100644 index 0000000..943262e --- /dev/null +++ b/components/post/parts/footer-post.php @@ -0,0 +1,29 @@ + + +
    + + + +
    diff --git a/components/post/parts/header-post.php b/components/post/parts/header-post.php new file mode 100644 index 0000000..b1b91c2 --- /dev/null +++ b/components/post/parts/header-post.php @@ -0,0 +1,27 @@ + + +
    + + ', '' ); + else : + the_title( '

    ', '

    ' ); + endif; + ?> + +
    + + + +
    + +
    diff --git a/components/post/parts/meta-author-post.php b/components/post/parts/meta-author-post.php new file mode 100644 index 0000000..01d0d58 --- /dev/null +++ b/components/post/parts/meta-author-post.php @@ -0,0 +1,27 @@ + + + + + diff --git a/components/post/parts/meta-date-post.php b/components/post/parts/meta-date-post.php new file mode 100644 index 0000000..bbe62d2 --- /dev/null +++ b/components/post/parts/meta-date-post.php @@ -0,0 +1,23 @@ + + + diff --git a/components/post/parts/taxonomy-category-post.php b/components/post/parts/taxonomy-category-post.php new file mode 100644 index 0000000..bb394a7 --- /dev/null +++ b/components/post/parts/taxonomy-category-post.php @@ -0,0 +1,21 @@ + + +
    + +
    + + + +
    + +
    diff --git a/components/post/parts/taxonomy-tag-post.php b/components/post/parts/taxonomy-tag-post.php new file mode 100644 index 0000000..b203490 --- /dev/null +++ b/components/post/parts/taxonomy-tag-post.php @@ -0,0 +1,19 @@ + + +
    + +
    + + ' . __( 'Tagged as:', 'odin' ) . ' ', ', ', '' ); ?> + +
    + +
    diff --git a/components/post/post-audio.php b/components/post/post-audio.php new file mode 100644 index 0000000..4d65995 --- /dev/null +++ b/components/post/post-audio.php @@ -0,0 +1,66 @@ + + +
    > + +
    + + + +
    + + ' . __( 'Continue reading', 'odin' ) . '' ); + + /** + * Pagination within a post. + */ + get_template_part( 'components/pagination/pagination', 'within-post' ); + + } ?> + +
    + + + + + +
    + +
    diff --git a/components/post/post-gallery.php b/components/post/post-gallery.php new file mode 100644 index 0000000..cf23ab6 --- /dev/null +++ b/components/post/post-gallery.php @@ -0,0 +1,61 @@ + + +
    > + +
    + + + +
    + + ' . __( 'Continue reading', 'odin' ) . '' ); + + /** + * Pagination within a post. + */ + get_template_part( 'components/pagination/pagination', 'within-post' ); + + } ?> + +
    + + + + + +
    + +
    diff --git a/components/post/post-none.php b/components/post/post-none.php new file mode 100644 index 0000000..de9605c --- /dev/null +++ b/components/post/post-none.php @@ -0,0 +1,35 @@ + + +
    > + +
    +

    +
    + +
    + + +

    Get started here.', 'odin' ), admin_url( 'post-new.php' ) ); ?>

    + + + +

    + + + + +

    + + + +
    + +
    diff --git a/components/post/post-video.php b/components/post/post-video.php new file mode 100644 index 0000000..e109477 --- /dev/null +++ b/components/post/post-video.php @@ -0,0 +1,66 @@ + + +
    > + +
    + + + +
    + + ' . __( 'Continue reading', 'odin' ) . '' ); + + /** + * Pagination within a post. + */ + get_template_part( 'components/pagination/pagination', 'within-post' ); + + } ?> + +
    + + + + + +
    + +
    diff --git a/components/post/post.functions.php b/components/post/post.functions.php new file mode 100644 index 0000000..0c23986 --- /dev/null +++ b/components/post/post.functions.php @@ -0,0 +1,26 @@ + + +
    > + +
    + + + +
    + + ' . __( 'Continue reading', 'odin' ) . '' ); + + /** + * Pagination within a post. + */ + get_template_part( 'components/pagination/pagination', 'within-post' ); + + } ?> + +
    + + + + + +
    + +
    diff --git a/components/shared/_brand-logo.scss b/components/shared/_brand-logo.scss new file mode 100644 index 0000000..3f77a18 --- /dev/null +++ b/components/shared/_brand-logo.scss @@ -0,0 +1,25 @@ +/*! + * Brand Logo Component + */ + + +.odin-brand-logo { + @extend .d-flex; + @extend .align-items-center; + + // Inside Navigation Topbar Component + .odin-navigation-topbar & { + &__link, + .custom-logo-link { + @extend .navbar-brand; + } + + &__image, + .custom-logo { + // Update the height/width and in assets/css/theme/_variables.scss + // Update the ratio image in components/shared/brand-logo.functions.php + height: $odin-navigation-topbar-brand-logo-height; + width: $odin-navigation-topbar-brand-logo-width; + } + } +} diff --git a/components/shared/brand-logo.functions.php b/components/shared/brand-logo.functions.php new file mode 100644 index 0000000..f28610f --- /dev/null +++ b/components/shared/brand-logo.functions.php @@ -0,0 +1,24 @@ + 50, + 'width' => 50, + 'flex-height' => true, + 'flex-width' => true, + ); + add_theme_support( 'custom-logo', $defaults ); +} + +add_action( 'after_setup_theme', 'odin_custom_logo_setup' ); diff --git a/components/shared/brand-logo.php b/components/shared/brand-logo.php new file mode 100644 index 0000000..f0c200f --- /dev/null +++ b/components/shared/brand-logo.php @@ -0,0 +1,25 @@ + + + diff --git a/components/sidebar/_sidebar.scss b/components/sidebar/_sidebar.scss new file mode 100644 index 0000000..f3b5bd4 --- /dev/null +++ b/components/sidebar/_sidebar.scss @@ -0,0 +1,26 @@ +/*! + * Sidebar Component + */ +.odin-sidebar { + @extend .col-lg-4; + @extend .d-print-none; + @extend .d-md-none; + @extend .d-lg-block; + background: $odin-sidebar-bg; + color: $odin-sidebar-color; + + &-wrapper{ + @extend .p-5; + } + + // + // Widgets + // + &__widgets { + .odin-widget, + .widget { + @extend .mb-3; + } + } + +} diff --git a/components/sidebar/sidebar.functions.php b/components/sidebar/sidebar.functions.php new file mode 100644 index 0000000..a212d7a --- /dev/null +++ b/components/sidebar/sidebar.functions.php @@ -0,0 +1,35 @@ + 'odin-widgets-sidebar', + 'name' => __( 'Sidebar', 'odin' ), + 'description' => __( 'Widgets in Sidebar', 'odin' ), + 'before_widget' => '', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) + ); + + } + + add_action( 'widgets_init', 'odin_widgets_sidebar_init' ); + +} diff --git a/components/sidebar/sidebar.php b/components/sidebar/sidebar.php new file mode 100644 index 0000000..89729ec --- /dev/null +++ b/components/sidebar/sidebar.php @@ -0,0 +1,29 @@ + + + diff --git a/content-none.php b/content-none.php deleted file mode 100644 index 4190ab5..0000000 --- a/content-none.php +++ /dev/null @@ -1,30 +0,0 @@ - - - - -
    - - -

    Get started here.', 'odin' ), admin_url( 'post-new.php' ) ); ?>

    - - - -

    - - - - -

    - - - -
    diff --git a/content-page.php b/content-page.php deleted file mode 100644 index 7b5f2df..0000000 --- a/content-page.php +++ /dev/null @@ -1,24 +0,0 @@ - - -
    > -

    ', '

    ' ); ?> - -
    - '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    -
    diff --git a/content.php b/content.php deleted file mode 100644 index a899432..0000000 --- a/content.php +++ /dev/null @@ -1,56 +0,0 @@ - - -
    > -
    - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - - - -
    - - -
    - -
    - -
    - →', 'odin' ) ); - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - -
    - - - - ' . __( 'Tagged as:', 'odin' ) . ' ', ', ', '' ); ?> - - - -
    -
    diff --git a/core/assets/css/admin.css b/core/assets/css/admin.css deleted file mode 100644 index c9c481e..0000000 --- a/core/assets/css/admin.css +++ /dev/null @@ -1,114 +0,0 @@ -/* =Gallery styles. --------------------------------------------------------------- */ - -.odin-gallery-images .image, -.odin-gallery-images .add, -.odin-gallery-images .wc-metabox-sortable-placeholder { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - background: none repeat scroll 0 0 #F7F7F7; - border: 1px solid #D5D5D5; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - cursor: move; - float: left; - height: 150px; - margin: 9px 9px 0 0; - overflow: hidden; - position: relative; - width: 150px; -} - -.odin-gallery-images img { - height: 150px; - width: 150px; -} - -.odin-gallery-images .wc-metabox-sortable-placeholder { - border: 4px dashed #ddd; -} - -.odin-form-table .description { - display: block; -} - - -/* =Image upload --------------------------------------------------------------- */ - -.odin-upload-image { - position: relative; - width: 150px; -} - -.odin-upload-image .preview { - display: block; - float: none; - margin-bottom: 5px; -} - -.odin-upload-image .default-image { - display: none; -} - -/* =Image and Plupload common --------------------------------------------------------------- */ - -.odin-gallery-images .image .actions, -.odin-upload-image .actions { - display: none; - padding: 2px; - position: absolute; - margin: 0; - right: 0; - top: 0; -} - -.odin-gallery-images .image:hover > .actions, -.odin-upload-image:hover > .actions { - display: block; -} - -.odin-gallery-images .image .actions li, -.odin-upload-image .actions li { - background: #eee; - border: 1px solid #ddd; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - float: right; - margin: 0 0 0 2px; - padding: 1px; - text-align: center; -} - -.odin-gallery-images .image .actions li:hover, -.odin-upload-image .actions li:hover { - background: #ddd; -} - -.odin-gallery-images .image .actions li a, -.odin-upload-image .actions li a { - text-decoration: none; -} - -.odin-gallery-images .image .actions li a:hover, -.odin-upload-image .actions li a:hover { - text-decoration: none; -} - -.odin-gallery-images .image .actions .delete, -.odin-upload-image .actions .delete { - color: #d00; -} - -/* =Separator --------------------------------------------------------------- */ - -.odin-metabox-separator { - border-bottom: 1px solid #fff; - border-top: 1px solid #dfdfdf; - display: block; -} diff --git a/core/assets/images/odin-thumb-placeholder.jpg b/core/assets/images/odin-thumb-placeholder.jpg deleted file mode 100644 index 3c2476f..0000000 Binary files a/core/assets/images/odin-thumb-placeholder.jpg and /dev/null differ diff --git a/core/assets/images/placeholder.png b/core/assets/images/placeholder.png deleted file mode 100644 index b520a8c..0000000 Binary files a/core/assets/images/placeholder.png and /dev/null differ diff --git a/core/assets/js/admin-custom-status.js b/core/assets/js/admin-custom-status.js deleted file mode 100644 index 6b23d70..0000000 --- a/core/assets/js/admin-custom-status.js +++ /dev/null @@ -1,42 +0,0 @@ -(function ( $ ) { - 'use strict'; - - /** - * Custom post status - */ - $(function() { - var html = ''; - var label = false; - var $body = $( document.body ); - var $odinMeta = document.querySelectorAll( 'meta.odin-custom-status-meta' ); - - Array.prototype.forEach.call( $odinMeta, function( item ) { - var $meta = $( item ); - var args = $.parseJSON( $meta.attr( 'value' ) ); - - if( $body.hasClass( 'post-php' ) || $body.hasClass( 'post-new-php' ) ) { - var select = ''; - if( args.select ) { - select = 'selected="selected"'; - label = ' ' + $.trim( args.appliedLabel ) + ''; - } - html += ''; - } - if( $body.hasClass( 'edit-php' ) ) { - html += ''; - } - }); - if( $body.hasClass( 'post-php' ) || $body.hasClass( 'post-new-php' ) ) { - $( '#post_status ').append( html ); - if( label ) { - $( 'label[for="post_status"]' ).append( label ); - } - } - if( $body.hasClass( 'edit-php' ) ) { - var $inlineStatus = document.querySelectorAll( '.inline-edit-status select' ); - Array.prototype.forEach.call( $inlineStatus, function( item ) { - $( item ).append( html ); - }); - } - }); -}( jQuery )); diff --git a/core/assets/js/admin.js b/core/assets/js/admin.js deleted file mode 100644 index 823a0c8..0000000 --- a/core/assets/js/admin.js +++ /dev/null @@ -1,219 +0,0 @@ -/* global odinAdminParams */ -(function ( $ ) { - 'use strict'; - - /** - * Theme Options and Metaboxes. - */ - $( function () { - - /** - * Image field. - */ - $( '.odin-upload-image .button' ).on( 'click', function ( e ) { - e.preventDefault(); - - var uploadFrame, - uploadInput = $(this).siblings( '.image' ), - uploadPreview = $(this).siblings( '.preview' ); - - // If the media frame already exists, reopen it. - if ( uploadFrame ) { - uploadFrame.open(); - - return; - } - - // Create the media frame. - uploadFrame = wp.media.frames.downloadable_file = wp.media({ - title: odinAdminParams.uploadTitle, - button: { - text: odinAdminParams.uploadButton - }, - multiple: false, - library: { - type: 'image' - } - }); - - uploadFrame.on( 'select', function () { - var attachment = uploadFrame.state().get( 'selection' ).first().toJSON(); - uploadPreview.attr( 'src', attachment.url ); - uploadInput.val( attachment.id ); - }); - - // Finally, open the modal. - uploadFrame.open(); - }); - - $( '.odin-upload-image .delete' ).click( function ( e ) { - e.preventDefault(); - - var wrapper = $( this ).parents( '.odin-upload-image' ), - defaultImage = $( '.default-image', wrapper ).text(); - - $( '.image', wrapper ).val( '' ); - $( '.preview', wrapper ).attr( 'src', defaultImage ); - }); - - /** - * Upload. - */ - $( '.odin-upload-button' ).on( 'click', function ( e ) { - e.preventDefault(); - - var uploadFrame, - uploadInput = $( this ).prev( 'input' ); - - // If the media frame already exists, reopen it. - if ( uploadFrame ) { - uploadFrame.open(); - - return; - } - - // Create the media frame. - uploadFrame = wp.media.frames.downloadable_file = wp.media({ - title: odinAdminParams.uploadTitle, - button: { - text: odinAdminParams.uploadButton - }, - multiple: false - }); - - uploadFrame.on( 'select', function () { - var attachment = uploadFrame.state().get( 'selection').first().toJSON(); - uploadInput.val( attachment.url ); - }); - - // Finally, open the modal. - uploadFrame.open(); - }); - - /** - * Color Picker. - */ - $( '.odin-color-field' ).wpColorPicker(); - - /** - * Image plupload adds. - */ - $( '.odin-gallery-container' ).on( 'click', '.odin-gallery-add', function ( e ) { - e.preventDefault(); - - var galleryFrame, - galleryWrap = $( this ).parent( '.odin-gallery-container' ), - imageGalleryIds = $( '.odin-gallery-field', galleryWrap ), - images = $( 'ul.odin-gallery-images', galleryWrap ), - attachmentIds = imageGalleryIds.val(); - - // If the media frame already exists, reopen it. - if ( galleryFrame ) { - galleryFrame.open(); - - return; - } - - // Create the media frame. - galleryFrame = wp.media.frames.downloadable_file = wp.media({ - title: odinAdminParams.galleryTitle, - button: { - text: odinAdminParams.galleryButton - }, - multiple: true, - library: { - type: 'image' - } - }); - - // When an image is selected, run a callback. - galleryFrame.on( 'select', function () { - - var selection = galleryFrame.state().get( 'selection' ); - - selection.map( function ( attachment ) { - - attachment = attachment.toJSON(); - - if ( attachment.id ) { - attachmentIds = attachmentIds ? attachmentIds + ',' + attachment.id : attachment.id; - - images.append( '
  • ' ); - } - - }); - - imageGalleryIds.val( attachmentIds ); - }); - - // Finally, open the modal. - galleryFrame.open(); - }); - - /** - * Image plupload ordering. - */ - $( '.odin-gallery-container' ).on( 'mouseover', 'ul.odin-gallery-images', function () { - var galleryWrap = $( this ).parent( '.odin-gallery-container' ), - imageGalleryIds = $( '.odin-gallery-field', galleryWrap ); - - // Call the sortable action. - $( this ).sortable({ - items: 'li.image', - cursor: 'move', - scrollSensitivity: 40, - forcePlaceholderSize: true, - forceHelperSize: false, - helper: 'clone', - opacity: 0.65, - placeholder: 'wc-metabox-sortable-placeholder', - start: function ( event, ui ) { - ui.item.css('background-color', '#f6f6f6'); - }, stop: function ( event, ui ) { - ui.item.removeAttr( 'style' ); - }, update: function () { - var attachmentIds = ''; - - // Gets the current ids. - $( 'li.image', $( this ) ).css( 'cursor', 'default' ).each( function () { - var attachmentId = $( this ).attr( 'data-attachment_id' ); - attachmentIds = attachmentIds + attachmentId + ','; - }); - - // Return the new value. - imageGalleryIds.val( attachmentIds ); - } - }); - }); - - /** - * Image plupload remove link. - */ - $( '.odin-gallery-container' ).on( 'click', 'a.delete', function ( e ) { - e.preventDefault(); - - var galleryWrap = $( this ).parents( '.odin-gallery-container' ), - imageGalleryIds = $( '.odin-gallery-field', galleryWrap ), - attachmentIds = ''; - - // Remove the item. - $( this ).closest( 'li.image' ).remove(); - - // Gets the current ids. - $( 'ul li.image', galleryWrap ).css( 'cursor', 'default' ).each( function () { - var attachmentId = $( this ).attr( 'data-attachment_id' ); - attachmentIds = attachmentIds ? attachmentIds + ',' + attachmentId : attachmentId; - }); - - // Return the new value. - imageGalleryIds.val( attachmentIds ); - }); - /** - * Save editor field in add term screen - */ - $( 'body.edit-tags-php .wp-editor-wrap' ).on( 'mouseover mouseout', function( e ) { - tinyMCE.triggerSave(); - }); - - }); -}( jQuery )); diff --git a/core/assets/js/editor-shortcodes.js b/core/assets/js/editor-shortcodes.js deleted file mode 100644 index 64ad6b5..0000000 --- a/core/assets/js/editor-shortcodes.js +++ /dev/null @@ -1,889 +0,0 @@ -/*global tinymce */ -(function() { - - /** - * Add the shortcodes downdown. - */ - tinymce.PluginManager.add( 'odin_shortcodes', function( editor ) { - var ed = tinymce.activeEditor; - var odin_ui = new Odin_Shortcode_UI( editor, ed ); - - editor.addButton( - 'odin', { - text: ed.getLang( 'odin.shortcode_title' ), - type: 'menubutton', - menu: [ { - text : ed.getLang( 'odin.button' ), - onclick: function() { - odin_ui.button(); - } - }, { - text : ed.getLang( 'odin.group_button' ), - onclick: function() { - odin_ui.group_button(); - } - }, { - text : ed.getLang( 'odin.alert' ), - onclick: function() { - odin_ui.alert(); - } - }, { - text : ed.getLang( 'odin.label' ), - onclick: function() { - odin_ui.label(); - } - }, { - text : ed.getLang( 'odin.badge' ), - onclick: function() { - odin_ui.badge(); - } - }, { - text : ed.getLang( 'odin.icon' ), - onclick: function() { - odin_ui.icon(); - } - }, { - text : ed.getLang( 'odin.well' ), - onclick: function() { - odin_ui.well(); - } - }, { - text : ed.getLang( 'odin.table' ), - onclick: function() { - odin_ui.table(); - } - }, { - text : ed.getLang( 'odin.grid' ), - onclick: function() { - odin_ui.grids(); - } - }, { - text : ed.getLang( 'odin.progress_bar' ), - onclick: function() { - odin_ui.progress(); - } - }, { - text : ed.getLang( 'odin.panel' ), - onclick: function() { - odin_ui.panel(); - } - }, { - text : ed.getLang( 'odin.tabs' ), - onclick: function() { - odin_ui.tabs(); - } - }, { - text : ed.getLang( 'odin.accordion' ), - onclick: function() { - odin_ui.accordion(); - } - }, { - text : ed.getLang( 'odin.tooltip' ), - onclick: function() { - odin_ui.tooltip(); - } - }, { - text : ed.getLang( 'odin.map' ), - onclick: function() { - odin_ui.map(); - } - }, { - text : ed.getLang( 'odin.clear' ), - onclick: function() { - odin_ui.clear(); - } - }, { - text : ed.getLang( 'odin.qrcode' ), - onclick: function() { - odin_ui.qrcode(); - } - } ] - } ); - } ); -})(); - -function Odin_Shortcode_UI( _editor, _ed ) { - var editor = _editor; - var ed = _ed; - - this.button = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.button' ), - body : [ { - type : 'textbox', - name : 'text', - label: ed.getLang( 'odin.text' ) - }, { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.default' ), - value: 'default' - }, { - text : ed.getLang( 'odin.success' ), - value: 'success' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger' - }, { - text : ed.getLang( 'odin.link' ), - value: 'link' - } ] - }, { - type : 'listbox', - name : 'size', - label : ed.getLang( 'odin.size' ), - values: [ { - text : ed.getLang( 'odin.lg' ), - value: 'lg' - }, { - text : ed.getLang( 'odin.sm' ), - value: 'sm' - }, { - text : ed.getLang( 'odin.xs' ), - value: 'xs' - } ] - }, { - type : 'textbox', - name : 'link', - id : 'link_button_input', - label: ed.getLang( 'odin.link' ) - }, { - type : 'textbox', - name : 'class_css', - id : 'class_button_input', - label: ed.getLang( 'odin.class' ) - }, { - type : 'textbox', - name : 'tooltip', - label: ed.getLang( 'odin.tooltip' ) - }, { - type : 'listbox', - name : 'direction', - label : ed.getLang( 'odin.direction' ), - values: [ { - text : ed.getLang( 'odin.default' ), - value: 'default' - }, { - text : ed.getLang( 'odin.top' ), - value: 'top' - }, { - text : ed.getLang( 'odin.right' ), - value: 'right' - }, { - text : ed.getLang( 'odin.left' ), - value: 'left' - }, { - text : ed.getLang( 'odin.bottom' ), - value: 'bottom' - } ] - } ], - onsubmit: function( e ) { - // From textfield fields - var text = isEmpty( e.data.text ) ? '' : e.data.text, - link = isEmpty( e.data.link ) ? '' : 'link="' + e.data.link + '" ', - class_css = isEmpty( e.data.class_css ) ? '' : 'class="' + e.data.class_css + '" ', - tooltip = isEmpty( e.data.tooltip ) ? '' : 'tooltip="' + e.data.tooltip + '" '; - // From dropdown fields - var type = 'type="' + e.data.type + '" ', - size = 'size="' + e.data.size + '" ', - direction = e.data.direction == 'default' ? '' : 'direction="' + e.data.direction + '" '; - - editor.insertContent( '[button ' + type + size + link + class_css + tooltip + direction + ']' + text + '[/button]' ); - } - } ); - - jQuery( '#class_button_input' ).attr( 'placeholder', 'hover' ); - jQuery( '#link_button_input' ).attr( 'placeholder', 'http://www.site.com' ); - - }; - - this.group_button = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.group_button' ), - minWidth: 300, - body : [ { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.vertical' ), - value: 'vertical' - }, { - text : ed.getLang( 'odin.group' ), - value: 'group' - } ] - }, { - type : 'listbox', - name : 'size', - label : ed.getLang( 'odin.size' ), - values: [ { - text : ed.getLang( 'odin.lg' ), - value: 'lg' - }, { - text : ed.getLang( 'odin.sm' ), - value: 'sm' - }, { - text : ed.getLang( 'odin.xs' ), - value: 'xs' - } ] - }, { - type : 'checkbox', - name : 'justified', - label : ed.getLang( 'odin.justified' ), - checked: false - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" ', - size = 'size="' + e.data.size + '" ', - justified = 'justified="' + e.data.justified + '" '; - editor.insertContent( '[button_group ' + type + size + justified + '] #content [/button_group]' ); - } - } ); - }; - - this.alert = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.alert' ), - body : [ { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - }, { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.success' ), - value: 'success' - }, { - text : ed.getLang( 'odin.info' ), - value: 'info' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger' - } ] - }, { - type : 'checkbox', - name : 'close', - label : ed.getLang( 'odin.close' ), - checked: false - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" ', - close = true === e.data.close ? 'close="' + e.data.close + '" ' : ''; - - editor.insertContent( '[alert ' + type + close + ']' + e.data.content + '[/alert]' ); - } - } ); - }; - - this.label = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.label' ), - body : [ { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - }, { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.default' ), - value: 'default' - }, { - text : ed.getLang( 'odin.success' ), - value: 'success' - }, { - text : ed.getLang( 'odin.info' ), - value: 'info' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger' - } ] - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" '; - editor.insertContent( '[label ' + type + ']' + e.data.content + '[/label]' ); - } - } ); - }; - - this.badge = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.badge' ), - body : [ { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" '; - editor.insertContent( '[badge ]' + e.data.content + '[/badge]' ); - } - } ); - }; - - this.grids = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.grid' ), - body : [ { - type : 'textbox', - name : 'columns', - label: ed.getLang( 'odin.columns' ) - }, { - type : 'textbox', - name : 'rows', - label: ed.getLang( 'odin.rows' ) - } ], - onsubmit: function( e ) { - var rows = e.data.rows, - columns = e.data.columns > 12 ? 12 : e.data.columns, - final_content = ''; - - for( var r = 0; r < rows; r ++ ) { - final_content += '[row] \n'; - for( var c = 0; c < columns; c ++ ) { - final_content += '[col class="col-md-' + Math.floor( 12 / columns ) + '"] Column# ' + c + ' Row# ' + r + ' [/col]\n'; - } - final_content += '[/row] \n'; - } - - final_content = final_content.replace( /\n/ig, "
    " ); - editor.insertContent( final_content ); - } - } ); - }; - - this.icon = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.icon' ), - minWidth: 200, - body : [ { - type : 'textbox', - name : 'icon', - label: ed.getLang( 'odin.icon' ), - } ], - - onsubmit: function( e ) { - var icon = 'type="' + e.data.icon + '" '; - editor.insertContent( '[icon ' + icon + ']' ); - } - } ); - }; - - this.well = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.well' ), - body : [ { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" '; - editor.insertContent( '[well]' + e.data.content + '[/well]' ); - } - } ); - }; - - this.table = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.table' ), - minWidth: 500, - body : [ { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.striped' ), - value: 'striped' - }, { - text : ed.getLang( 'odin.hover' ), - value: 'hover' - }, { - text : ed.getLang( 'odin.condensed' ), - value: 'condensed' - }, { - text : ed.getLang( 'odin.responsive' ), - value: 'responsive' - } ] - }, { - type : 'checkbox', - name : 'border', - label : ed.getLang( 'odin.border' ), - checked: false - }, { - type : 'textbox', - name : 'cols', - id : 'cols_table_input', - label: ed.getLang( 'odin.cols' ), - }, { - type : 'textbox', - name : 'rows', - id : 'rows_table_input', - label: ed.getLang( 'odin.rows' ), - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" ', - border = true === e.data.border ? 'border=true" ' : '', - cols = 'cols="' + e.data.cols + '" ', - rows = 'rows="' + e.data.rows + '" '; - - editor.insertContent( '[table ' + type + border + cols + rows + ' ] ' ); - } - } ); - - jQuery( '#cols_table_input' ).attr( 'placeholder', 'Column 1, Column 2, ...' ); - jQuery( '#rows_table_input' ).attr( 'placeholder', 'Column 1 row 1, Column 2 row1 | Column 1 row 2' ); - }; - - this.progress = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.progress' ), - body : [ { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.success' ), - value: 'striped' - }, { - text : ed.getLang( 'odin.info' ), - value: 'info' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning ' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger' - } ] - }, { - type : 'listbox', - name : 'class_css', - label : ed.getLang( 'odin.class' ), - values: [ { - text : ed.getLang( 'odin.progress_striped' ), - value: 'progress-striped' - }, { - text : ed.getLang( 'odin.active' ), - value: 'active' - } ] - }, { - type : 'slider', - name : 'value', - label: ed.getLang( 'odin.value_progress' ), - }, { - type : 'textbox', - name : 'max', - label: ed.getLang( 'odin.max' ), - value: '100' - }, { - type : 'textbox', - name : 'min', - label: ed.getLang( 'odin.min' ), - value: '0' - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" ', - class_css = 'class="' + e.data.class + '" ', - value = 'value="' +((e.data.value * 0.01) * e.data.max - e.data.min) + '" ', - max = 'max="' + e.data.max + '" ', - min = 'min="' + e.data.min + '" '; - - editor.insertContent( '[progress ' + type + class_css + value + max + min + ' ] ' ); - } - } ); - }; - - this.panel = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.panel' ), - body : [ { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - }, { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.default' ), - value: 'default' - }, { - text : ed.getLang( 'odin.info' ), - value: 'info' - }, { - text : ed.getLang( 'odin.primary' ), - value: 'primary' - }, { - text : ed.getLang( 'odin.success' ), - value: 'success' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger' - } ] - } ], - onsubmit: function( e ) { - var type = 'type="' + e.data.type + '" '; - - editor.insertContent( '[panel '+ type +'][panel_body]' + e.data.content + '[/panel_body][/panel]' ); - } - } ); - }; - - this.tabs = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.tabs' ), - body : [ { - type : 'textbox', - name : 'tabs', - id : 'childs_tabs_input', - label: ed.getLang( 'odin.childs' ), - } ], - onsubmit: function( e ) { - var tabs = e.data.tabs, - tabs_title = '', - tabs_content = '', - final_content = ''; - - for( var i = 0; i < tabs; i ++ ) { - tabs_title += ' [tab id="tab_id_' + i + '" ' +( 0 === i ? 'active = "true"' : "") + ' ]Title #' + i + ' [/tab] \n '; - tabs_content += ' [tab_content id="tab_id_' + i + '" ' +( 0 === i ? 'active = "true"' : "") + ' ]' + 'content #' + i + '[/tab_content] \n'; - } - - //formating the output to break line - final_content += '[tabs]\n' + tabs_title + '[/tabs]\n'; - final_content += '[tab_contents]\n' + tabs_content + '[/tab_contents]\n'; - final_content = final_content.replace( /\n/ig, '
    ' ); - - editor.insertContent( final_content ); - - } - } ); - jQuery( '#childs_tabs_input' ).attr( 'placeholder', '3' ); - }; - - this.accordion = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.accordion' ), - body : [ { - type : 'textbox', - name : 'accordions_id', - label: ed.getLang( 'odin.accordions_id' ), - value: 'odin-accordion' - }, { - type : 'textbox', - name : 'childs', - id : 'childs_accordion_input', - label: ed.getLang( 'odin.childs' ), - }, { - type : 'listbox', - name : 'type', - label : ed.getLang( 'odin.type' ), - values: [ { - text : ed.getLang( 'odin.default' ), - value: 'default' - }, { - text : ed.getLang( 'odin.info' ), - value: 'info' - }, { - text : ed.getLang( 'odin.primary' ), - value: 'primary' - }, { - text : ed.getLang( 'odin.success' ), - value: 'success' - }, { - text : ed.getLang( 'odin.warning' ), - value: 'warning ' - }, { - text : ed.getLang( 'odin.danger' ), - value: 'danger ' - } ] - } ], - onsubmit: function( e ) { - var type = ' type="' + e.data.type + '" ', - accordions_id = ' id="' + e.data.accordions_id + '" ', - childs = e.data.childs <= 0 ? 1 : e.data.childs, - accordions = '', - final_content = ''; - - for( var i = 0; i < childs; i ++ ) { - accordions += '[accordion id=accordion#' + i + ' title="title#' + i + '" ' + ( 0 === i ? " active='true' " : " " ) + ' ]' + 'content #' + i + ' [/accordion] \n'; - } - - final_content += ' [accordions' + accordions_id + ' ] \n'; - final_content += accordions; - final_content += '[/accordions] \n'; - final_content = final_content.replace( /\n/ig, '
    ' ); - editor.insertContent( final_content ); - } - } ); - jQuery( '#childs_accordion_input' ).attr( 'placeholder', '3' ); - }; - - this.tooltip = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.tooltip' ), - body : [ { - type : 'textbox', - name : 'title', - label: ed.getLang( 'odin.title' ) - }, { - type : 'textbox', - name : 'content', - label: ed.getLang( 'odin.content' ) - }, { - type : 'textbox', - name : 'link', - id : 'link_tooltip_input', - label: ed.getLang( 'odin.link' ) - }, { - type : 'listbox', - name : 'direction', - label : ed.getLang( 'odin.direction' ), - values: [ { - text : ed.getLang( 'odin.top' ), - value: 'top' - }, { - text : ed.getLang( 'odin.right' ), - value: 'right' - }, { - text : ed.getLang( 'odin.left' ), - value: 'left' - }, { - text : ed.getLang( 'odin.bottom' ), - value: 'success' - } ] - } ], - onsubmit: function( e ) { - var direction = 'direction="' + e.data.direction + '" ', - title = 'title="' + e.data.title + '" ', - link = 'link="' + e.data.link + '" '; - - editor.insertContent( ' [tooltip ' + title + direction + link + ']' + e.data.content + '[/tooltip]' ); - - } - } ); - - jQuery( '#link_tooltip_input' ).attr( 'placeholder', 'http://www.site.com' ); - }; - - this.clear = function() { - editor.insertContent( '[clear]' ); - }; - - this.qrcode = function() { - editor.windowManager.open( { - title : ed.getLang( 'odin.qrcode' ), - body : [ { - type : 'textbox', - name : 'data', - id : 'data_qr_input', - label: ed.getLang( 'odin.data' ) - }, { - type : 'textbox', - name : 'size', - label: ed.getLang( 'odin.size' ), - value: '150x150' - }, { - type : 'textbox', - name : 'title', - label: ed.getLang( 'odin.title' ) - } ], - onsubmit: function( e ) { - var data = 'data="' + e.data.data + '" ', - size = 'size="' + e.data.size + '" ', - title = 'title="' + e.data.title + '" '; - - editor.insertContent( ' [qrcode ' + data + size + title + ']' ); - } - } ); - - jQuery( '#data_qr_input' ).attr( 'placeholder', 'http://www.site.com' ); - }; - - this.map = function() { - editor.windowManager.open( { - maxHeight: 500, - minHeight: 300, - maxWidth : 700, - minWidth : 450, - title : ed.getLang( 'odin.map' ), - id : 'map-shortcode-panel', - body : [ { - - type : 'textbox', - name : 'id', - value: 'odin_gmap', - label: ed.getLang( 'odin.id' ) - }, { - type : 'textbox', - name : 'latitude', - id : 'lat_map_input', - label: ed.getLang( 'odin.latitude' ) - }, { - type : 'textbox', - name : 'longitude', - id : 'long_map_input', - label: ed.getLang( 'odin.longitude' ) - }, { - type : 'textbox', - name : 'zoom', - value: '10', - label: ed.getLang( 'odin.zoom' ) - }, { - type : 'textbox', - name : 'width', - value: '600', - label: ed.getLang( 'odin.width' ) - }, { - type : 'textbox', - name : 'height', - value: '400', - label: ed.getLang( 'odin.height' ) - }, { - type : 'listbox', - name : 'maptype', - label : ed.getLang( 'odin.maptype' ), - values: [ { - text : ed.getLang( 'odin.ROADMAP' ), - value: 'ROADMAP' - }, { - text : ed.getLang( 'odin.SATELLITE' ), - value: 'SATELLITE' - }, { - text : ed.getLang( 'odin.HYBRID' ), - value: 'HYBRID' - }, { - text : ed.getLang( 'odin.TERRAIN' ), - value: 'TERRAIN' - } ] - }, { - type : 'textbox', - name : 'address', - label: ed.getLang( 'odin.address' ) - }, { - type : 'textbox', - name : 'kml', - id : 'kml_map_input', - label: ed.getLang( 'odin.kml' ) - }, { - type : 'checkbox', - name : 'kmlautofit', - label : ed.getLang( 'odin.kmlautofit' ), - checked: false - }, { - type : 'checkbox', - name : 'marker', - label : ed.getLang( 'odin.marker' ), - checked: false - }, { - type : 'textbox', - name : 'markerimage', - id : 'markerimg_map_input', - label: ed.getLang( 'odin.markerimage' ) - }, { - type : 'checkbox', - name : 'traffic', - label : ed.getLang( 'odin.traffic' ), - checked: false - }, { - type : 'checkbox', - name : 'bike', - label : ed.getLang( 'odin.bike' ), - checked: false - }, { - type : 'textbox', - name : 'fusion', - label: ed.getLang( 'odin.fusion' ), - - }, { - type : 'textbox', - name : 'infowindow', - label: ed.getLang( 'odin.infowindow' ), - - }, { - type : 'checkbox', - name : 'infowindowdefault', - label : ed.getLang( 'odin.infowindowdefault' ), - checked: false - }, { - type : 'checkbox', - name : 'hidecontrols', - label : ed.getLang( 'odin.hidecontrols' ), - checked: false - }, { - type : 'checkbox', - name : 'scale', - label : ed.getLang( 'odin.scale' ), - checked: false - }, { - type : 'checkbox', - name : 'scrollwheel', - label : ed.getLang( 'odin.scrollwheel' ), - checked: true - } ], - onsubmit : function( e ) { - var id = ' id="' + e.data.id + '" ', - latitude = '' === e.data.latitude ? '' : ' latitude="' + e.data.latitude + '" ', - longitude = '' === e.data.longitude ? '' : ' longitude="' + e.data.longitude + '" ', - zoom = ' zoom="' + e.data.zoom + '" ', - width = ' width="' + e.data.width + '" ', - height = ' height="' + e.data.height + '" ', - maptype = ' maptype="' + e.data.maptype + '" ', - address = ' address="' + e.data.address + '" ', - kml = ' kml="' + e.data.kml + '" ', - kmlautofit = ' kmlautofit="' + e.data.kmlautofit + '" ', - marker = ' marker="' + e.data.marker + '" ', - markerimage = ' markerimage="' + e.data.markerimage + '" ', - traffic = ' traffic="' + e.data.traffic + '" ', - fusion = ' fusion="' + e.data.fusion + '" ', - bike = ' bike="' + e.data.bike + '" ', - infowindow = ' infowindow="' + e.data.infowindow + '" ', - infowindowdefault = ' infowindowdefault="' + e.data.infowindowdefault + '" ', - hidecontrols = ' hidecontrols="' + e.data.hidecontrols + '" ', - scale = ' scale="' + e.data.scale + '" ', - scrollwheel = ' scrollwheel="' + e.data.scrollwheel + '" '; - - editor.insertContent( ' [map' + id + latitude + longitude + zoom + width + height + maptype + address + - kml + kmlautofit + marker + markerimage + traffic + fusion + bike + infowindow + infowindowdefault + scale + scrollwheel + ']' ); - } - } ); - - jQuery( '#lat_map_input' ).attr( 'placeholder', '-25.363882' ); - jQuery( '#long_map_input' ).attr( 'placeholder', '131.044922' ); - jQuery( '#markerimg_map_input' ).attr( 'placeholder', 'http://.../beachflag.png' ); - jQuery( '#kml_map_input' ).attr( 'placeholder', 'http://.../ggeoxml/cta.kml' ); - }; -} - -/** - * Check is empty. - * - * @param {string} value - * @return {bool} - */ -this.isEmpty = function( value ) { - value = value.toString(); - - if ( 0 !== value.length ) { - return false; - } - - return true; -}; diff --git a/core/classes/abstracts/abstract-front-end-form.php b/core/classes/abstracts/abstract-front-end-form.php deleted file mode 100755 index 3608fa5..0000000 --- a/core/classes/abstracts/abstract-front-end-form.php +++ /dev/null @@ -1,759 +0,0 @@ -id = $id; - $this->action = $action; - $this->method = $method; - $this->attributes = $attributes; - } - - /** - * Set form fields. - * - * @param array $fields Form fields. - */ - public function set_fields( $fields = array() ) { - $this->fields = $fields; - } - - /** - * Set form buttons. - * - * @param array $buttons Form buttons. - */ - public function set_buttons( $buttons = array() ) { - $this->buttons = $buttons; - } - - /** - * Set errors. - * - * @param array $errors Form errors. - */ - protected function set_errors( $errors = array() ) { - $this->errors[] = $errors; - } - - /** - * Set success message. - * - * @param string $success Form success message. - */ - public function set_success_message( $success = '' ) { - $this->success = $success; - } - - /** - * Get submitted data. - * - * @return array Submitted data. - */ - public function get_submitted_data() { - $data = $this->submitted_form_data(); - - return $data; - } - - /** - * Get submitted attachments. - * - * @return array Submitted attachments. - */ - public function get_attachments() { - $attachments = $this->uploaded_files(); - - return $attachments; - } - - /** - * Get current page. - * - * @return string Currente Page URL. - */ - protected function get_current_page() { - $url = 'http'; - if ( isset( $_SERVER['HTTPS'] ) && 'on' == $_SERVER['HTTPS'] ) { - $url .= 's'; - } - - $url .= '://'; - - if ( '80' != $_SERVER['SERVER_PORT'] ) { - $url .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI']; - } else { - $url .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; - } - - return $url; - } - - /** - * Get field label via ID. - * - * @param string $id Field ID. - * - * @return string Field label. - */ - protected function get_field_label( $id ) { - foreach ( $this->fields as $fieldset ) { - foreach ( $fieldset['fields'] as $field ) { - if ( $field['id'] == $id ) { - return $field['label']['text']; - } - } - } - - return ''; - } - - /** - * Process form and fields attributes. - * - * @param array $attributes Attributes as array. - * - * @return string Attributes as string. - */ - protected function process_attributes( $attributes = array() ) { - $attrs = ''; - - if ( ! empty( $attributes ) ) { - foreach ( $attributes as $key => $attribute ) { - $attrs .= ' ' . $key . '="' . $attribute . '"'; - } - } - - return $attrs; - } - - /** - * Process class for label tag. - * - * @param string $class Class as string, separated by blankspace. - * - * @return string Class as string. - */ - protected function process_label_class( $class ) { - return ! empty( $class ) ? ' class="' . esc_attr( $class ) . '"' : ''; - } - - /** - * Sets the field default value. - * - * @return string Default value. - */ - protected function default_field( $id, $default ) { - if ( 'get' == $this->method ) { - return isset( $_GET[ $id ] ) ? sanitize_text_field( $_GET[ $id ] ) : $default; - } else { - return isset( $_POST[ $id ] ) ? sanitize_text_field( $_POST[ $id ] ) : $default; - } - } - - /** - * Process form fields. - * - * @return string Form fields HTML. - */ - protected function process_fields() { - $html = ''; - - if ( ! empty( $this->fields ) ) { - foreach ( $this->fields as $key => $fieldset ) { - $fieldset_attributes = isset( $fieldset['attributes'] ) ? $fieldset['attributes'] : array(); - - $html .= sprintf( '
    ', $key, $this->process_attributes( $fieldset_attributes ) ); - $html .= isset( $fieldset['legend'] ) ? '' . $fieldset['legend'] . '' : ''; - - foreach ( $fieldset['fields'] as $field ) { - $id = $field['id']; - $type = $field['type']; - $label = isset( $field['label'] ) ? $field['label'] : array(); - $description = isset( $field['description'] ) ? $field['description'] : ''; - $attributes = isset( $field['attributes'] ) ? $field['attributes'] : array(); - $options = isset( $field['options'] ) ? $field['options'] : ''; - $required = isset( $field['required'] ) && $field['required'] ? true : false; - $default = isset( $field['default'] ) ? $field['default'] : ''; - $default = $this->default_field( $id, $default ); - - if ( $required ) { - $attributes = array_merge( array( 'required' => 'required' ), $attributes ); - } - - switch ( $type ) { - case 'text': - $html .= $this->field_input( $id, $label, $default, $description, $attributes ); - break; - case 'hidden': - $html .= $this->field_hidden( $id, $default, $attributes ); - break; - case 'email': - $html .= $this->field_input( $id, $label, $default, $description, array_merge( array( 'type' => 'email' ), $attributes ) ); - break; - case 'tel': - $html .= $this->field_input( $id, $label, $default, $description, array_merge( array( 'type' => 'tel' ), $attributes ) ); - break; - case 'file': - $html .= $this->field_input( $id, $label, $default, $description, array_merge( array( 'type' => 'file', 'class' => 'form-file' ), $attributes ) ); - $this->attributes = array_merge( array( 'enctype' => 'multipart/form-data' ), $this->attributes ); - break; - case 'input': - $html .= $this->field_input( $id, $label, $default, $description, $attributes ); - break; - case 'textarea': - $html .= $this->field_textarea( $id, $label, $default, $description, $attributes ); - break; - case 'checkbox': - $html .= $this->field_checkbox( $id, $label, $default, $description, $attributes ); - break; - case 'select': - $html .= $this->field_select( $id, $label, $default, $description, $attributes, $options ); - break; - case 'radio': - $html .= $this->field_radio( $id, $label, $default, $description, $attributes, $options ); - break; - - default: - $html .= do_action( 'odin_front_end_form_field_' . $this->id, $id, $label, $default, $description, $attributes, $options ); - break; - } - } - - $html .= '
    '; - } - } - - return $html; - } - - /** - * Process form buttons. - * - * @return string Form buttons HTML. - */ - protected function process_buttons() { - $html = '
    '; - - if ( ! empty( $this->buttons ) ) { - foreach ( $this->buttons as $button ) { - $attributes = isset( $button['attributes'] ) ? $button['attributes'] : array( 'class' => 'btn btn-primary' ); - - $html .= sprintf( - '', - $button['id'], - $button['type'], - $this->process_attributes( $attributes ), - $button['label'] - ); - } - } else { - $html .= ''; - } - - $html .= '
    '; - - return $html; - } - - /** - * Display error messages. - * - * @param string $html Form HTML. - * - * @return string Error messages. - */ - public function display_error_messages( $html ) { - if ( ! empty( $this->errors ) ) { - - $html .= '
    '; - - foreach ( $this->errors as $error ) { - $html .= '

    ' . $error . '

    '; - } - - $html .= '
    '; - } - - return $html; - } - - /** - * Display success message. - * - * @return string Success message. - */ - protected function display_success_message() { - $html = ''; - - if ( isset( $_GET['success'] ) && 1 == $_GET['success'] ) { - $html .= '
    '; - if ( ! empty( $this->success ) ) { - $html .= '

    ' . $this->success . '

    '; - } else { - $html .= '

    ' . __( 'Form submitted successfully!', 'odin' ) . '

    '; - } - $html .= '
    '; - } - - return $html; - } - - /** - * Required field HTML. - * - * @param array $attributes Array with field attributes. - * - * @return string Alert for required field. - */ - protected function required_field_alert( $attributes ) { - if ( isset( $attributes['required'] ) ) { - return ' *'; - } - } - - /** - * Input field. - * - * @param string $id Field id. - * @param array $label Array with label attributes. - * @param string $default Default value. - * @param string $description Field description. - * @param array $attributes Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_input( $id, $label, $default, $description, $attributes ) { - // Set the default type. - if ( ! isset( $attributes['type'] ) ) { - $attributes['type'] = 'text'; - } - - // Set the default class. - if ( ! isset( $attributes['class'] ) ) { - $attributes['class'] = 'form-control'; - } - - $html = sprintf( '
    ', $id ); - $html .= sprintf( '', $id, $this->process_label_class( $label['class'] ), $label['text'], $this->required_field_alert( $attributes ) ); - $html .= sprintf( '', $id, $default, $this->process_attributes( $attributes ) ); - $html .= ! empty( $description ) ? '' . $description . '' : ''; - $html .= '
    '; - - return $html; - } - - /** - * Hidden field. - * - * @param string $id Field id. - * @param string $default Default value. - * @param array $attributes Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_hidden( $id, $default, $attributes ) { - // Set the default type. - if ( ! isset( $attributes['type'] ) ) { - $attributes['type'] = 'hidden'; - } - - $html = sprintf( '', $id, $default, $this->process_attributes( $attributes ) ); - - return $html; - } - - /** - * Textarea field. - * - * @param string $id Field id. - * @param array $label Array with label attributes. - * @param string $default Default value. - * @param string $description Field description. - * @param array $attributes Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_textarea( $id, $label, $default, $description, $attributes ) { - // Set the default class. - if ( ! isset( $attributes['class'] ) ) { - $attributes['class'] = 'form-control'; - } - - if ( ! isset( $attributes['cols'] ) ) { - $attributes['cols'] = '60'; - } - - if ( ! isset( $attributes['rows'] ) ) { - $attributes['rows'] = '4'; - } - - $html = sprintf( '
    ', $id ); - $html .= sprintf( '', $id, $this->process_label_class( $label['class'] ), $label['text'], $this->required_field_alert( $attributes ) ); - $html .= sprintf( '', $id, $this->process_attributes( $attributes ), $default ); - $html .= ! empty( $description ) ? '' . $description . '' : ''; - $html .= '
    '; - - return $html; - } - - /** - * Checkbox field. - * - * @param string $id Field id. - * @param array $label Array with label attributes. - * @param string $default Default value. - * @param string $description Field description. - * @param array $attributes Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_checkbox( $id, $label, $default, $description, $attributes ) { - // Set the checked attribute - if ( ! empty( $default ) ) { - $attributes['checked'] = 'checked'; - } - - $html = sprintf( '
    ', $id ); - $html .= sprintf( ''; - $html .= ! empty( $description ) ? '' . $description . '' : ''; - $html .= '
    '; - - return $html; - } - - /** - * Select field. - * - * @param string $id Field id. - * @param array $label Array with label attributes. - * @param string $default Default value. - * @param string $description Field description. - * @param array $attributes Array with field attributes. - * @param array $options Array with field options (value => name). - * - * @return string HTML of the field. - */ - protected function field_select( $id, $label, $default, $description, $attributes, $options ) { - // Set the default class. - if ( ! isset( $attributes['class'] ) ) { - $attributes['class'] = 'form-control'; - } - - // If multiple add a array in the option. - $multiple = ( in_array( 'multiple', $attributes ) ) ? '[]' : ''; - - $html = sprintf( '
    ', $id ); - $html .= sprintf( '', $id, $this->process_label_class( $label['class'] ), $label['text'], $this->required_field_alert( $attributes ) ); - $html .= sprintf( ''; - $html .= ! empty( $description ) ? '' . $description . '' : ''; - $html .= '
    '; - - return $html; - } - - /** - * Radio field. - * - * @param string $id Field id. - * @param array $label Array with label attributes. - * @param string $default Default value. - * @param string $description Field description. - * @param array $attributes Array with field attributes. - * @param array $options Array with field options (value => label). - * - * @return string HTML of the field. - */ - protected function field_radio( $id, $label, $default, $description, $attributes, $options ) { - $html = sprintf( '
    ', $id ); - $html .= sprintf( '', $id, $this->process_label_class( $label['class'] ), $label['text'], $this->required_field_alert( $attributes ) ); - $html .= '
    '; - - foreach ( $options as $value => $label ) { - // Set the checked attribute. - if ( $value == $default ) { - $attributes['checked'] = 'checked'; - } else if ( isset( $attributes['checked'] ) ) { - unset( $attributes['checked'] ); - } - - $html .= '
    '; - $html .= sprintf( '', $id, $value, $label, $this->process_attributes( $attributes ) ); - $html .= '
    '; - } - $html .= '
    '; - - $html .= ! empty( $description ) ? '' . $description . '' : ''; - - $html .= '
    '; - - return $html; - } - - /** - * Checks if the form data is valid. - * - * @return bool - */ - protected function is_valid() { - $valid = empty( $this->errors ) ? true : false; - - return $valid; - } - - /** - * Gests the form submitted data. - * - * @return array Form submitted data. - */ - protected function submitted_form_data() { - // Checks the form method. - if ( 'get' == $this->method ) { - $data = $_GET; - } else { - $data = $_POST; - } - - return $data; - } - - /** - * Gests the form submitted files. - * - * @return array Form submitted files. - */ - protected function submitted_form_files() { - $files = array(); - - // Checks the form method. - if ( 0 < count( $_FILES ) ) { - $files = $_FILES; - } - - return $files; - } - - /** - * Validates the form data. - */ - protected function validate_form_data() { - $errors = array(); - - // Sets the data. - $data = $this->submitted_form_data(); - $files = $this->submitted_form_files(); - - if ( ! empty( $this->fields ) && ! empty( $data ) ) { - foreach ( $this->fields as $fieldset ) { - foreach ( $fieldset['fields'] as $field ) { - $id = $field['id']; - $type = $field['type']; - $label = isset( $field['label'] ) ? $field['label'] : ''; - $value = ! empty( $data[ $id ] ) ? $data[ $id ] : ''; - $required = isset( $field['required'] ) && $field['required'] ? true : false; - - if ( $type != 'file' && $required && empty( $data[ $id ] ) ) { - $this->set_errors( sprintf( __( '%s is required.', 'odin' ), '' . $label . '' ) ); - } - - switch ( $type ) { - case 'email': - if ( ! is_email( $value ) ) { - $this->set_errors( sprintf( __( '%s must be an email address valid.', 'odin' ), '' . $label . '' ) ); - } - break; - case 'file': - if ( count($files) >= 1 ) { - if ( $required && empty( $files[ $id ]['name'] ) ) { - $this->set_errors( sprintf( __( '%s is required.', 'odin' ), '' . $label . '' ) ); - } - } - break; - - default: - $custom_message = apply_filters( 'odin_front_end_form_valid_' . $this->id . '_' . $id, '', $label, $value ); - if ( $custom_message ) { - $this->set_errors( $custom_message ); - } - break; - } - } - } - } - - // Sets the errors. - if ( ! empty( $this->errors ) ) { - - // Remove valid param. - if ( isset( $_GET['success'] ) && 1 == $_GET['success'] ) { - unset( $_GET['success'] ); - } - } - } - - /** - * Redirect to current page. - */ - protected function redirect() { - @ob_clean(); - - $url = $this->get_current_page(); - $url = apply_filters( 'odin_front_end_form_redirect_' . $this->id, add_query_arg( 'success', '1', $url ) ); - - wp_redirect( $url, 303 ); - - exit; - } - - /** - * Process the send form files. - * - * @return array - */ - protected function uploaded_files() { - require_once ABSPATH . 'wp-admin/includes/image.php'; - require_once ABSPATH . 'wp-admin/includes/file.php'; - require_once ABSPATH . 'wp-admin/includes/media.php'; - - $attachments = array(); - - foreach ( $this->fields as $fieldset ) { - foreach ( $fieldset['fields'] as $field ) { - $id = $field['id']; - if ( 'file' == $field['type'] && isset( $_FILES[ $id ] ) ) { - $attachment_id = media_handle_upload( $id, 0 ); - - if ( is_wp_error( $attachment_id ) && $_FILES[ $id ]['size'] > 0 ) { - $error = apply_filters( 'odin_front_end_form_upload_error_' . $this->id, sprintf( '%s %s.', '' . $this->get_field_label( $id ) . '', $attachment_id->get_error_message() ) ); - $this->set_errors( $error ); - } else { - $attachments[ $id ] = array( - 'file' => get_attached_file( $attachment_id ), - 'url' => wp_get_attachment_url( $attachment_id ) - ); - } - } - } - } - - return $attachments; - } - - /** - * Form init. - * Hook this in the WordPress init action. - */ - public function init() { - $submitted_data = $this->submitted_form_data(); - $uploaded_files = $this->get_attachments(); - - if ( ! empty( $submitted_data ) && isset( $submitted_data['odin_form_action'] ) && $this->id == $submitted_data['odin_form_action'] ) { - // Validates the form data. - $this->validate_form_data(); - - if ( $this->is_valid() ) { - // Hook to process submitted form data. - do_action( 'odin_front_end_form_submitted_data_' . $this->id, $submitted_data, $uploaded_files ); - - // Redirect after submit. - $this->redirect(); - } else { - add_filter( 'odin_front_end_form_messages_' . $this->id, array( $this, 'display_error_messages' ) ); - } - } - } - - /** - * Render the form. - * - * @return string Form HTML. - */ - public function render() { - - $html = ''; - - // Display error messages. - $html .= apply_filters( 'odin_front_end_form_messages_' . $this->id, $html ); - - // Display success message. - $html .= $this->display_success_message(); - - // Process the fields. - $fields = $this->process_fields(); - - // Generate the form. - $html .= sprintf( - '
    ', - $this->id, - $this->action, - $this->method, - $this->process_attributes( array_merge( array( 'class' => 'form' ), $this->attributes ) ) - ); - - $html .= do_action( 'odin_front_end_form_before_fields_' . $this->id ); - $html .= $fields; - $html .= do_action( 'odin_front_end_form_after_fields_' . $this->id ); - $html .= $this->process_buttons(); - $html .= sprintf( '', $this->id ); - $html .= '
    '; - - return $html; - } - -} diff --git a/core/classes/class-bootstrap-nav.php b/core/classes/class-bootstrap-nav.php deleted file mode 100644 index 848c989..0000000 --- a/core/classes/class-bootstrap-nav.php +++ /dev/null @@ -1,213 +0,0 @@ -, - * created by Edward McIntyre and with the licence GPLv2. - * - * @package Odin - * @category Bootstrap - * @author WPBrasil - * @version 2.1.4 - */ -class Odin_Bootstrap_Nav_Walker extends Walker_Nav_Menu { - - /** - * @see Walker::start_lvl() - * - * @param string $output Passed by reference. Used to append additional content. - * @param int $depth Depth of page. Used for padding. - */ - public function start_lvl( &$output, $depth = 0, $args = array() ) { - $indent = str_repeat( "\t", $depth ); - $output .= "\n$indent
      \n"; - } - - /** - * @see Walker::start_el() - * - * @param string $output Passed by reference. Used to append additional content. - * @param object $item Menu item data object. - * @param int $depth Depth of menu item. Used for padding. - * @param int $current_page Menu item ID. - * @param object $args - */ - public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { - $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; - - /** - * Dividers, Headers or Disabled - * ============================= - * Determine whether the item is a Divider, Header, Disabled or regular - * menu item. To prevent errors we use the strcasecmp() function to so a - * comparison that is not case sensitive. The strcasecmp() function returns - * a 0 if the strings are equal. - */ - if ( strcasecmp( $item->attr_title, 'divider' ) == 0 && $depth === 1 ) { - $output .= $indent . ''; - $fb_output .= '
    '; - - if ( $container ) { - $fb_output .= ''; - } - - echo $fb_output; - } - } -} diff --git a/core/classes/class-contact-form.php b/core/classes/class-contact-form.php deleted file mode 100755 index eddbefb..0000000 --- a/core/classes/class-contact-form.php +++ /dev/null @@ -1,271 +0,0 @@ -id = $id; - $this->to = $to; - $this->cc = $cc; - $this->bcc = $bcc; - $this->attributes = $attributes; - $this->attachment_type = $attachment_type; - - parent::__construct( $this->id, '', 'post', $this->attributes ); - - // Hooks send_mail. - add_action( 'odin_front_end_form_submitted_data_' . $this->id, array( $this, 'send_mail' ), 1, 2 ); - } - - /** - * Set the mail content type. - * - * @param string $content_type Mail content type. - */ - public function set_content_type( $content_type ) { - if ( 'html' == $content_type ) { - $this->content_type = 'text/html'; - } - } - - /** - * Set the mail subject. - * - * @param string $subject Mail subject. - */ - public function set_subject( $subject ) { - $this->subject = $subject; - } - - /** - * Mail Reply-To. - * - * @param string - */ - public function set_reply_to( $reply_to ) { - $this->reply_to = $reply_to; - } - - /** - * Process the sent form data. - * - * @param array $submitted_data Submitted data. - * @param array $$attachments Submitted attachments. - * - * @return array Processed sent data. - */ - protected function process_submitted_form_data( $submitted_data, $attachments ) { - $data = array(); - - // Process the fields. - if ( ! empty( $this->fields ) && ! empty( $submitted_data ) ) { - foreach ( $this->fields as $fieldset ) { - foreach ( $fieldset['fields'] as $field ) { - if ( 'file' != $field['type'] ) { - $id = $field['id']; - $label = isset( $field['label'] ) ? $field['label'] : $id; - - $data[ $label['text'] ] = $submitted_data[ $id ]; - } elseif ( 'file' == $field['type'] && 'url' == $this->attachment_type ) { - $id = $field['id']; - $label = isset( $field['label'] ) ? $field['label'] : $id; - $url = $attachments[ $id ]['url']; - - $data[ $label['text'] ] = '' . $url . ''; - } - } - } - } - - return $data; - } - - /** - * Build the mail message. - * - * @param array $submitted_data Form submitted data. - * @param array $$attachments Form submitted attachments. - * - * @return string Mail HTML message. - */ - protected function build_mail_message( $submitted_data, $attachments ) { - // Sets the message header. - $message = apply_filters( 'odin_contact_form_message_header_' . $this->id, '' ); - - // Gets the submitted data. - $data = $this->process_submitted_form_data( $submitted_data, $attachments ); - - // Sets the message content. - foreach ( $data as $label => $value ) { - if ( 'text/html' == $this->content_type ) { - $message .= sprintf( '%s:%s', wp_kses( $label, array() ), wpautop( wp_kses( $value, array() ) ) ); - } else { - $message .= sanitize_text_field( $label . ': ' . $value ) . PHP_EOL; - } - } - - // Sets the message footer. - $message .= apply_filters( 'odin_contact_form_message_footer_' . $this->id, '' ); - - return $message; - } - - /** - * Build the mail subject. - * - * @param array $submitted_data Form submitted data. - * - * @return string Mail subject. - */ - protected function build_mail_subject( $submitted_data ) { - if ( ! empty( $this->subject ) ) { - $subject = $this->subject; - - // Create the placeholders. - $placeholders = array_merge( - array( - 'form_id' => $this->id, - 'sent_date' => date( get_option( 'date_format' ) ), - 'sent_time' => date( get_option( 'time_format' ) ) - ), - $submitted_data - ); - - // Process the placeholders. - foreach ( $placeholders as $placeholder => $value ) { - $subject = str_replace( '[' . $placeholder . ']', sanitize_text_field( $value ), $subject ); - } - - return $subject; - } else { - // Default subject. - return sprintf( - __( 'Message sent by the form %s in %s at %s', 'odin' ), - $this->id, - date( get_option( 'date_format' ) ), - date( get_option( 'time_format' ) ) - ); - } - } - - /** - * Get attachments paths. - * - * @param array $attachments Submitted attachments. - * - * @return array Paths. - */ - protected function get_attachments_paths( $attachments ) { - $paths = array(); - - foreach ( $attachments as $attachment ) { - $paths[] = $attachment['file']; - } - - return $paths; - } - - /** - * Format the mail headers. - * - * @param array $submitted_data Form submitted data. - * - * @return array Mail headers. - */ - protected function format_mail_headers( $submitted_data ) { - $headers = array(); - - // Cc. - if ( ! empty( $this->cc ) ) { - foreach ( $this->cc as $cc ) { - $headers[] = 'Cc: ' . $cc; - } - } - - // Bc. - if ( ! empty( $this->bcc ) ) { - foreach ( $this->bcc as $bcc ) { - $headers[] = 'Bcc: ' . $bcc; - } - } - - // Reply-To. - if ( ! empty( $this->reply_to ) ) { - $headers[] = 'Reply-To: ' . sanitize_email( $submitted_data[ $this->reply_to ] ); - } - - // Content type. - if ( 'text/html' == $this->content_type ) { - $headers[] = 'Content-type: text/html; charset=' . get_bloginfo( 'charset' ); - } - - return apply_filters( 'odin_contact_form_mail_headers_' . $this->id, $headers ); - } - - /** - * Send the mail. - * - * @param array $submitted_data Submitted form data. - */ - public function send_mail( $submitted_data, $attachments ) { - if ( ! empty( $submitted_data ) ) { - // Mail subject. - $subject = $this->build_mail_subject( $submitted_data ); - - // Mail message. - $message = $this->build_mail_message( $submitted_data, $attachments ); - - // Mail headers. - $headers = $this->format_mail_headers( $submitted_data ); - - // Send mail. - if ( 0 < count( $attachments ) && 'file' == $this->attachment_type ) { - $files = $this->get_attachments_paths( $attachments ); - } else { - $files = ''; - } - - wp_mail( $this->to, $subject, $message, $headers, $files ); - } - } - -} diff --git a/core/classes/class-metabox.php b/core/classes/class-metabox.php deleted file mode 100644 index a9b00ea..0000000 --- a/core/classes/class-metabox.php +++ /dev/null @@ -1,610 +0,0 @@ -id = $id; - $this->title = $title; - $this->post_type = $post_type; - $this->context = $context; - $this->priority = $priority; - $this->nonce = $id . '_nonce'; - - // Add Metabox. - add_action( 'add_meta_boxes', array( $this, 'add' ) ); - - // Save Metaboxs. - add_action( 'save_post', array( $this, 'save' ) ); - - // Load scripts. - add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); - - //Check if $post_type is an array. If not, makes it one. - if( !is_array($post_type) ){ - $post_type = array( $post_type ); - } - - //Run trough the array, setting up nedded things - foreach($post_type as $p_type) { - // For each post type, add post type columns - add_filter( 'manage_edit-' . $p_type . '_columns', array($this, 'add_columns' )); - - // Set post type columns value - add_action( 'manage_' . $p_type . '_posts_custom_column', array($this, 'set_columns_value'), 10,2); - } - - } - - /** - * Get the post typea. - * - * @return array - */ - protected function get_post_type() { - return is_array( $this->post_type ) ? $this->post_type : array( $this->post_type ); - } - - /** - * Load metabox scripts. - */ - public function scripts() { - $screen = get_current_screen(); - - if ( in_array( $screen->id, $this->get_post_type() ) ) { - // Color Picker. - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker' ); - - // Media Upload. - wp_enqueue_media(); - - // jQuery UI. - wp_enqueue_script( 'jquery-ui-sortable' ); - - // Metabox. - wp_enqueue_script( 'odin-admin', get_template_directory_uri() . '/core/assets/js/admin.js', array( 'jquery' ), null, true ); - wp_enqueue_style( 'odin-admin', get_template_directory_uri() . '/core/assets/css/admin.css', array(), null, 'all' ); - - // Localize strings. - wp_localize_script( - 'odin-admin', - 'odinAdminParams', - array( - 'galleryTitle' => __( 'Add images in gallery', 'odin' ), - 'galleryButton' => __( 'Add in gallery', 'odin' ), - 'galleryRemove' => __( 'Remove image', 'odin' ), - 'uploadTitle' => __( 'Choose a file', 'odin' ), - 'uploadButton' => __( 'Add file', 'odin' ), - ) - ); - } - } - - /** - * Add the metabox in edit screens. - */ - public function add() { - foreach ( $this->get_post_type() as $post_type ) { - add_meta_box( - $this->id, - $this->title, - array( $this, 'metabox' ), - $post_type, - $this->context, - $this->priority - ); - } - } - - /** - * Set metabox fields. - * - * @param array $fields Metabox fields. - */ - public function set_fields( $fields = array() ) { - $this->fields = $fields; - } - - /** - * Get field type by field ID - * - * @param string $field_id Field ID - * - * @return string Field type - */ - protected function get_field_type_by_id( $field_id ) { - foreach ( $this->fields as $field ) { - if ( $field['id'] == $field_id ) { - return $field['type']; - } - } - - return ''; - } - - /** - * Check if index add_column is true - * - * - * @return bool Field type - */ - protected function check_field_is_column() { - foreach ( $this->fields as $field ) { - if ( isset( $field['add_column'] ) && $field['add_column'] ) { - return true; - } - } - - return false; - } - - /** - * Metabox view. - * - * @param object $post Post object. - * - * @return string Metabox HTML fields. - */ - public function metabox( $post ) { - // Use nonce for verification. - wp_nonce_field( basename( __FILE__ ), $this->nonce ); - - $post_id = $post->ID; - - do_action( 'odin_metabox_header_' . $this->id, $post_id ); - - echo apply_filters( 'odin_metabox_container_before_' . $this->id, '' ); - - foreach ( $this->fields as $field ) { - echo apply_filters( 'odin_metabox_wrap_before_' . $this->id, '', $field ); - - if ( 'title' == $field['type'] ) { - $title = sprintf( '', $field['label'] ); - } elseif ( 'separator' == $field['type'] ) { - $title = sprintf( '', $field['id'] ); - } else { - $title = sprintf( '', $field['id'], $field['label'] ); - } - - echo apply_filters( 'odin_metabox_field_title_' . $this->id, $title, $field ); - - echo apply_filters( 'odin_metabox_field_before_' . $field['id'], '', $field ); - - echo apply_filters( 'odin_metabox_wrap_after_' . $this->id, '', $field ); - } - - echo apply_filters( 'odin_metabox_container_after_' . $this->id, '
    %s', $field ); - $this->process_fields( $field, $post_id ); - - if ( isset( $field['description'] ) ) { - echo sprintf( '%s', $field['description'] ); - } - - - echo apply_filters( 'odin_metabox_field_after_' . $field['id'], '
    ' ); - - do_action( 'odin_metabox_footer_' . $this->id, $post_id ); - - } - - /** - * Process the metabox fields. - * - * @param array $args Field arguments - * @param int $post_id ID of the current post type. - * - * @return string HTML of the field. - */ - protected function process_fields( $args, $post_id ) { - $id = $args['id']; - $type = $args['type']; - $options = isset( $args['options'] ) ? $args['options'] : ''; - $attrs = isset( $args['attributes'] ) ? $args['attributes'] : array(); - - // Gets current value or default. - $current = get_post_meta( $post_id, $id, true ); - if ( empty( $current ) ) { - $current = isset( $args['default'] ) ? $args['default'] : ''; - } - - switch ( $type ) { - case 'text': - $this->field_input( $id, $current, array_merge( array( 'class' => 'regular-text' ), $attrs ) ); - break; - case 'input': - $this->field_input( $id, $current, $attrs ); - break; - case 'textarea': - $this->field_textarea( $id, $current, $attrs ); - break; - case 'checkbox': - $this->field_checkbox( $id, $current, $attrs ); - break; - case 'select': - $this->field_select( $id, $current, $options, $attrs ); - break; - case 'radio': - $this->field_radio( $id, $current, $options, $attrs ); - break; - case 'editor': - $this->field_editor( $id, $current, $options ); - break; - case 'color': - $this->field_input( $id, $current, array_merge( array( 'class' => 'odin-color-field' ), $attrs ) ); - break; - case 'upload': - $this->field_upload( $id, $current, $attrs ); - break; - case 'image': - $this->field_image( $id, $current ); - break; - case 'image_plupload': - $this->field_image_plupload( $id, $current ); - break; - - default: - do_action( 'odin_metabox_field_' . $this->id, $type, $id, $current, $options, $attrs ); - break; - } - } - - /** - * Build field attributes. - * - * @param array $attrs Attributes as array. - * - * @return string Attributes as string. - */ - protected function build_field_attributes( $attrs ) { - $attributes = ''; - - if ( ! empty( $attrs ) ) { - foreach ( $attrs as $key => $attr ) { - $attributes .= ' ' . $key . '="' . $attr . '"'; - } - } - - return $attributes; - } - - /** - * Add post columns - * - * @param array $columns Default WordPress Columns - * - * @return array Columns - */ - public function add_columns( $columns ) { - foreach ( $this->fields as $key => $field ) { - if ( isset( $field['add_column'] ) && $field['add_column'] ) { - $columns[ $field['id'] ] = $field['label']; - } - } - - return $columns; - } - - /** - * Set value for each column - * - * @param string $column $column - * @param int $column $post_id - * - * @return string Value - */ - public function set_columns_value( $column , $post_id ) { - $type = $this->get_field_type_by_id( $column ); - $is_column = $this->check_field_is_column(); - if ( ! $is_column ) { - return; - } - - switch ( $type ) { - case 'image' : - case 'image_plupload' : - $value = wp_get_attachment_image( get_post_meta( $post_id, $column, true ) , array( 50, 50 ) ); - break; - default : - $value = apply_filters( 'admin_post_column_value_' . $this->post_type . '_' . $column, get_post_meta( $post_id, $column, true ) ); - break; - } - - echo $value; - } - - /** - * Input field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_input( $id, $current, $attrs ) { - if ( ! isset( $attrs['type'] ) ) { - $attrs['type'] = 'text'; - } - - echo sprintf( '', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Textarea field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_textarea( $id, $current, $attrs ) { - if ( ! isset( $attrs['cols'] ) ) { - $attrs['cols'] = '60'; - } - - if ( ! isset( $attrs['rows'] ) ) { - $attrs['rows'] = '5'; - } - - echo sprintf( '', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Checkbox field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_checkbox( $id, $current, $attrs ) { - echo sprintf( '', $id, checked( 'yes', $current, false ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Select field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with select options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_select( $id, $current, $options, $attrs ) { - // If multiple add a array in the option. - $multiple = ( in_array( 'multiple', $attrs ) ) ? '[]' : ''; - - $html = sprintf( ''; - - echo $html; - } - - /** - * Current value is selected. - * - * @param array/string $current Field current value. - * @param string $key Actual option value. - * - * @return boolean $current is selected or not. - */ - protected function is_selected( $current, $key ) { - $selected = false; - if ( is_array( $current ) ) { - for ( $i = 0; $i < count( $current ); $i++ ) { - if ( selected( $current[ $i ], $key, false ) ) { - $selected = selected( $current[ $i ], $key, false ); - break 1; - } - } - } else { - $selected = selected( $current, $key, false ); - } - - return $selected; - } - - /** - * Radio field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with input options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_radio( $id, $current, $options, $attrs ) { - $html = ''; - - foreach ( $options as $key => $label ) { - $html .= sprintf( '
    ', $id, $key, checked( $current, $key, false ), $label, $this->build_field_attributes( $attrs ) ); - } - - echo $html; - } - - /** - * Editor field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with wp_editor options. - * - * @return string HTML of the field. - */ - protected function field_editor( $id, $current, $options ) { - // Set default options. - if ( empty( $options ) ) { - $options = array( 'textarea_rows' => 10 ); - } - - $options[ 'textarea_name' ] = $id; - - echo '
    '; - wp_editor( wpautop( $current ), $id, $options ); - echo '
    '; - } - - /** - * Upload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_upload( $id, $current, $attrs ) { - echo sprintf( ' ', $id, esc_url( $current ), __( 'Select file', 'odin' ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Image field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image( $id, $current ) { - - // Gets placeholder image. - $image = apply_filters( 'odin_placeholder_path', get_template_directory_uri() . '/core/assets/images/placeholder.png' ); - $html = '
    '; - $html .= '' . $image . ''; - - if ( $current ) { - $image = wp_get_attachment_image_src( $current, 'thumbnail' ); - $image = $image[0]; - } - - $html .= sprintf( '
    ', $id, $current, $image, __( 'Select image', 'odin' ), __( 'Remove image', 'odin' ) ); - - $html .= '
    '; - $html .= '
    '; - - echo $html; - } - - /** - * Image plupload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image_plupload( $id, $current ) { - $html = ''; - - echo $html; - } - - /** - * Save metabox data. - * - * @param int $post_id Current post type ID. - */ - public function save( $post_id ) { - // Verify nonce. - if ( ! isset( $_POST[ $this->nonce ] ) || ! wp_verify_nonce( $_POST[ $this->nonce ], basename( __FILE__ ) ) ) { - return $post_id; - } - - // Verify if this is an auto save routine. - if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { - return $post_id; - } - - // Check permissions. - if ( isset( $_POST['post_type'] ) && in_array( $_POST['post_type'], $this->get_post_type() ) ) { - if ( ! current_user_can( 'edit_page', $post_id ) ) { - return $post_id; - } - } elseif ( ! current_user_can( 'edit_post', $post_id ) ) { - return $post_id; - } - - foreach ( $this->fields as $field ) { - $name = $field['id']; - - if( 'checkbox' === $field['type'] ) { - $value = isset( $_POST[ $name ] ) ? 'yes' : 'no'; - } else { - $value = isset( $_POST[ $name ] ) ? $_POST[ $name ] : null; - } - - if ( ! in_array( $field['type'], array( 'separator', 'title' ) ) ) { - $old = get_post_meta( $post_id, $name, true ); - - $new = apply_filters( 'odin_save_metabox_' . $this->id, $value, $name ); - - if ( $new && $new != $old ) { - update_post_meta( $post_id, $name, $new ); - } elseif ( '' == $new && $old ) { - delete_post_meta( $post_id, $name, $old ); - } - } - } - - } - -} diff --git a/core/classes/class-options-helper.php b/core/classes/class-options-helper.php deleted file mode 100644 index 4a6b85b..0000000 --- a/core/classes/class-options-helper.php +++ /dev/null @@ -1,126 +0,0 @@ -set_option_father( $option_father ); - - /** - * Set the option child property. - */ - $this->set_option_child( $option_child ); - - /** - * Discover the option child value. - */ - $this->get_option_value(); - } - - /** - * Getter of Option Father. - * - * @return string option_father property. - */ - public function get_option_father() { - return $this->option_father; - } - - /** - * Getter of Option Child. - * - * @return string option_child property. - */ - public function get_option_child() { - return $this->option_child; - } - - /** - * Getter of Option Child Value. - * - * @return string option_child_value property. - */ - public function get_option_child_value() { - return $this->option_child_value; - } - - /** - * Setter of Option Father. - * - * @param string $option_father Option father. - */ - public function set_option_father( $option_father ) { - $this->option_father = $option_father; - } - - /** - * Setter of Option Child. - * - * @param string $option_child Option child. - */ - public function set_option_child( $option_child ) { - $this->option_child = $option_child; - } - - /** - * Setter of Option Child Value. - * - * @param string $option_child_value Option child value. - */ - public function set_option_child_value( $option_child_value ) { - $this->option_child_value = $option_child_value; - } - - /** - * Discover the option child value. - */ - private function get_option_value() { - $option_father_object = get_option( $this->option_father ); - - $option_value = $option_father_object[ $this->option_child ]; - - $this->set_option_child_value( $option_value ); - } - - /** - * Automagic __toString() method to returns the Option Child value. - * - * @return string $option_child_value Option Child value. - */ - public function __toString() { - return $this->option_child_value; - } -} diff --git a/core/classes/class-post-form.php b/core/classes/class-post-form.php deleted file mode 100644 index e5d9d6a..0000000 --- a/core/classes/class-post-form.php +++ /dev/null @@ -1,160 +0,0 @@ -id = $id; - $this->post_type = $post_type; - $this->post_status = $post_status; - $this->attributes = $attributes; - - parent::__construct( $this->id, '', 'post', $this->attributes ); - - // Hooks save_post. - add_action( 'odin_front_end_form_submitted_data_' . $this->id, array( $this, 'save_post' ) ); - } - - /** - * Set the post content field. - * - * @param string $content_field Content field. - */ - public function set_content_field( $content_field ) { - $this->content_field = $content_field; - } - - /** - * Set the post title field. - * - * @param string $title_field Title field. - */ - public function set_title_field( $title_field ) { - $this->title_field = $title_field; - } - - /** - * Set the post custom fields. - * - * @param string $custom_fields Title field. - */ - public function set_custom_fields( $custom_fields = array() ) { - $this->custom_fields = $custom_fields; - } - - /** - * Set the post terms. - * - * @param string $terms Terms. - */ - public function set_terms( $terms = array() ) { - $this->terms = $terms; - } - - /** - * Save custom fields. - * - * @param int $post_id Post ID. - * @param array $submitted_data Submitted form data. - */ - protected function save_custom_fields( $post_id, $submitted_data ) { - if ( ! empty( $this->custom_fields ) ) { - foreach ( $this->custom_fields as $key ) { - // Apply filter to sanitization. - $data = apply_filters( 'odin_post_form_custom_field_data_' . $this->id, $submitted_data[ $key ] ); - - // Save custom field. - update_post_meta( $post_id, $key, $data ); - } - } - } - - /** - * Save terms. - * - * @param int $post_id Post ID. - * @param array $submitted_data Submitted form data. - */ - protected function save_terms( $post_id, $submitted_data ) { - if ( ! empty( $this->terms ) ) { - foreach ( $this->terms as $taxonomy => $term ) { - // Apply filter to sanitization. - $term = apply_filters( 'odin_post_form_term_data_' . $this->id, $submitted_data[ $term ] ); - - // Save term. - wp_set_post_terms( $post_id, $term, $taxonomy ); - } - } - } - - /** - * Save post. - * - * @param array $submitted_data Submitted form data. - */ - public function save_post( $submitted_data ) { - if ( ! empty( $submitted_data ) ) { - $post_data = apply_filters( 'odin_post_form_insert_data_' . $this->id, array( - 'post_content' => $submitted_data[ $this->content_field ], - 'post_status' => $this->post_status, - 'post_title' => sanitize_text_field( $submitted_data[ $this->title_field ] ), - 'post_type' => $this->post_type, - ), $submitted_data ); - - // Save post. - $post_id = wp_insert_post( $post_data ); - - // Save custom fields. - $this->save_custom_fields( $post_id, $submitted_data ); - - // Save terms. - $this->save_terms( $post_id, $submitted_data ); - - do_action( 'odin_post_form_after_save_' . $this->id, $post_id, $submitted_data ); - } - } -} diff --git a/core/classes/class-post-status.php b/core/classes/class-post-status.php deleted file mode 100644 index 7689aea..0000000 --- a/core/classes/class-post-status.php +++ /dev/null @@ -1,124 +0,0 @@ -post_status = $post_status; - $this->post_types = $post_types; - $this->action_label = isset( $args['label'] ) ? $args['label'] : $post_status; - $this->applied_label = isset( $args['applied_label'] ) ? $args['applied_label'] : $this->action_label; - $this->args = $args; - - // Removes the arguments that do not belong to register_post_type - unset( $this->args['applied_label'] ); - - if( ! isset( $this->args['label_count'] ) ) { - $this->args['label_count'] = _n_noop( $this->applied_label . ' (%s)', $this->applied_label . ' (%s)', 'odin' ); - } - - // Register post status - add_action( 'init', array( $this, 'register_post_status' ) ); - - // Add meta tags to pass args - add_action( 'admin_head', array( $this, 'meta_tags' ) ); - - // Load scripts - add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); - - } - - /** - * Register the Custom Post Status with Wordpress ;) - * - * @param string $post_status The name of Custom Post Status. - * @param array $args Array of arguments to pass register_post_status() - **/ - public function register_post_status() { - register_post_status( $this->post_status, $this->args ); - } - - /** - * Add meta tags to JS - */ - public function meta_tags() { - $screen = get_current_screen(); - if( ! in_array( $screen->post_type, $this->post_types ) ) { - return; - } - - $args = array( - 'postTypes' => $this->post_types, - 'appliedLabel' => $this->applied_label, - 'slug' => $this->post_status, - ); - if( $screen->base === 'post' ) { - global $post; - if( is_object( $post ) && $post->post_status === $this->post_status ) { - $args['select'] = true; - } - } - printf( '', esc_attr( json_encode( $args ) ) ); - } - - /** - * Load post status scripts and inject JS vars - */ - public function scripts() { - // Load admin JS - wp_enqueue_script( 'odin-custom-status', get_template_directory_uri() . '/core/assets/js/admin-custom-status.js', array( 'jquery' ), null, true ); - - } -} diff --git a/core/classes/class-post-type.php b/core/classes/class-post-type.php deleted file mode 100644 index 028c8c8..0000000 --- a/core/classes/class-post-type.php +++ /dev/null @@ -1,118 +0,0 @@ -name = $name; - $this->slug = $slug; - - // Register post type. - add_action( 'init', array( &$this, 'register_post_type' ) ); - } - - /** - * Set custom labels. - * - * @param array $labels Custom labels. - */ - public function set_labels( $labels = array() ) { - $this->labels = $labels; - } - - /** - * Set custom arguments. - * - * @param array $arguments Custom arguments. - */ - public function set_arguments( $arguments = array() ) { - $this->arguments = $arguments; - } - - /** - * Define Post Type labels. - * - * @return array Post Type labels. - */ - protected function labels() { - $default = array( - 'name' => sprintf( __( '%ss', 'odin' ), $this->name ), - 'singular_name' => sprintf( __( '%s', 'odin' ), $this->name ), - 'view_item' => sprintf( __( 'View %s', 'odin' ), $this->name ), - 'edit_item' => sprintf( __( 'Edit %s', 'odin' ), $this->name ), - 'search_items' => sprintf( __( 'Search %s', 'odin' ), $this->name ), - 'update_item' => sprintf( __( 'Update %s', 'odin' ), $this->name ), - 'parent_item_colon' => sprintf( __( 'Parent %s:', 'odin' ), $this->name ), - 'menu_name' => sprintf( __( '%ss', 'odin' ), $this->name ), - 'add_new' => __( 'Add New', 'odin' ), - 'add_new_item' => sprintf( __( 'Add New %s', 'odin' ), $this->name ), - 'new_item' => sprintf( __( 'New %s', 'odin' ), $this->name ), - 'all_items' => sprintf( __( 'All %ss', 'odin' ), $this->name ), - 'not_found' => sprintf( __( 'No %s found', 'odin' ), $this->name ), - 'not_found_in_trash' => sprintf( __( 'No %s found in Trash', 'odin' ), $this->name ) - ); - - return array_merge( $default, $this->labels ); - } - - /** - * Define Post Type arguments. - * - * @return array Post Type arguments. - */ - protected function arguments() { - $default = array( - 'labels' => $this->labels(), - 'hierarchical' => false, - 'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'revisions' ), - 'public' => true, - 'show_ui' => true, - 'show_in_menu' => true, - 'show_in_nav_menus' => false, - 'publicly_queryable' => true, - 'exclude_from_search' => false, - 'has_archive' => true, - 'query_var' => true, - 'can_export' => true, - 'rewrite' => true, - 'capability_type' => 'post' - ); - - return array_merge( $default, $this->arguments ); - } - - /** - * Register Post Type. - */ - public function register_post_type() { - register_post_type( $this->slug, $this->arguments() ); - } -} diff --git a/core/classes/class-shortcodes-menu.php b/core/classes/class-shortcodes-menu.php deleted file mode 100644 index edfe3ee..0000000 --- a/core/classes/class-shortcodes-menu.php +++ /dev/null @@ -1,77 +0,0 @@ - 'default', - 'size' => false, - 'link' => '#', - 'class' => false, - 'tooltip' => false, - 'direction' => 'top' - ), $atts ) ); - - $html = ' 'group', - 'size' => false, - 'justified' => false - ), $atts ) ); - - $html = '
    '; - $html .= str_replace( '
    ', '', do_shortcode( $content ) ); - $html .= '
    '; - - return $html; - } - - /** - * Alert shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Alert HTML. - */ - function alert( $atts, $content = null ) { - extract( shortcode_atts( array( - 'type' => 'info', - 'close' => false - ), $atts ) ); - - $html = '
    ' : '">'; - $html .= do_shortcode( $content ); - $html .= '
    '; - - return $html; - } - - /** - * Label shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Label HTML. - */ - function label( $atts, $content = null ) { - extract( shortcode_atts( array( - 'type' => 'default' - ), $atts ) ); - - return '' . do_shortcode( $content ) . ''; - } - - /** - * Badge shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Badge HTML. - */ - function badge( $atts, $content = null ) { - return '' . do_shortcode( $content ) . ''; - } - - /** - * Icon shortcode. - * - * @param array $atts Shortcode attributes. - * - * @return string Icon HTML. - */ - function icon( $atts ) { - extract( shortcode_atts( array( - 'type' => 'thumbs-up' - ), $atts ) ); - - return ''; - } - - /** - * Well shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Well HTML. - */ - function well( $atts, $content = null ) { - extract( shortcode_atts( array( - 'size' => false - ), $atts ) ); - - $html = '
    ' : '">'; - $html .= do_shortcode( $content ); - $html .= '
    '; - - return $html; - } - - /** - * Table shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Table HTML. - */ - function table( $atts, $content = null ) { - extract( shortcode_atts( array( - 'type' => false, - 'border' => false, - 'cols' => '', - 'rows' => '' - ), $atts ) ); - - $html = '' . PHP_EOL : '">' . PHP_EOL; - $html .= '' . PHP_EOL; - $html .= '' . PHP_EOL; - - foreach ( explode( ',', $cols ) as $col ) { - $html .= '' . PHP_EOL; - } - - $html .= '' . PHP_EOL; - $html .= '' . PHP_EOL; - $html .= '' . PHP_EOL; - - foreach ( explode( '|', $rows ) as $row ) { - $html .= '' . PHP_EOL; - - foreach ( explode( ',', $row ) as $item ) { - $html .= '' . PHP_EOL; - } - - $html .= '' . PHP_EOL; - } - - $html .= '' . PHP_EOL; - $html .= '
    ' . $col . '
    ' . $item . '
    ' . PHP_EOL; - - return $html; - } - - /** - * Row shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Row HTML. - */ - function row( $atts, $content = null ) { - return '
    ' . str_replace( 'div>
    ', 'div>', do_shortcode( $content ) ) . '
    '; - } - - /** - * Col shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Col HTML. - */ - function col( $atts, $content = null ) { - extract( shortcode_atts( array( - 'class' => false - ), $atts ) ); - - $html = ' false, - 'class' => false, - 'value' => 50, - 'max' => 100, - 'min' => 0 - ), $atts ) ); - - $html = '
    ' : '">'; - $html .= '
    '; - $html .= ( $content ) ? '' . $content . '' : ''; - $html .= '
    '; - $html .= '
    '; - - return $html; - } - - /** - * Panel shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Panel HTML. - */ - function panel( $atts, $content = null ) { - extract( shortcode_atts( array( - 'type' => 'default' - ), $atts ) ); - - return '
    ' . str_replace( '
    ', '', do_shortcode( $content ) ) . '
    '; - } - - /** - * Panel Heading shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Panel Heading HTML. - */ - function panel_heading( $atts, $content = null ) { - return '
    ' . do_shortcode( $content ) . '
    '; - } - - /** - * Panel Body shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Panel Body HTML. - */ - function panel_body( $atts, $content = null ) { - return '
    ' . do_shortcode( $content ) . '
    '; - } - - /** - * Panel Footer shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Panel Footer HTML. - */ - function panel_footer( $atts, $content = null ) { - return ''; - } - - /** - * Tabs shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tabs HTML. - */ - function tabs( $atts, $content = null ) { - return ''; - } - - /** - * Tab shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tab HTML. - */ - function tab( $atts, $content = null ) { - extract( shortcode_atts( array( - 'id' => '', - 'active' => false - ), $atts ) ); - - $html = ''; - $html .= do_shortcode( $content ); - $html .= '
    '; - $html .= ''; - - return $html; - } - - /** - * Tab Dropdown shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tab Dropdown HTML. - */ - function tab_dropdown( $atts, $content = null ) { - extract( shortcode_atts( array( - 'title' => '', - ), $atts ) ); - - $id = sanitize_title( $title ); - - $html = ''; - - return $html; - } - - /** - * Tabs Contents shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tabs Contents HTML. - */ - function tab_contents( $atts, $content = null ) { - return '
    ' . str_replace( '
    ', '', do_shortcode( $content ) ) . '
    '; - } - - /** - * Tabs Content shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tabs Content HTML. - */ - function tab_content( $atts, $content = null ) { - extract( shortcode_atts( array( - 'id' => '', - 'active' => false, - ), $atts ) ); - - $html = '
    '; - $html .= do_shortcode( $content ); - $html .= '
    '; - - return $html; - } - - /** - * Accordions shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Accordions HTML. - */ - function accordions( $atts, $content = null ) { - extract( shortcode_atts( array( - 'id' => 'odin-accordion', - ), $atts ) ); - - $html = '
    '; - $html .= str_replace( '
    ', '', do_shortcode( $content ) ); - $html .= '
    '; - - return $html; - } - - /** - * Accordion shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Accordion HTML. - */ - function accordion( $atts, $content = null ) { - extract( shortcode_atts( array( - 'id' => 'odin-accordion', - 'title' => '', - 'type' => 'default', - 'active' => false - ), $atts ) ); - - $accordion = sanitize_title( $title ); - - $html = '
    '; - $html .= '

    '; - $html .= ''; - $html .= $title; - $html .= ''; - $html .= '

    '; - $html .= '
    ' : '">'; - $html .= '
    '; - $html .= do_shortcode( $content ); - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - - return $html; - } - - /** - * Tooltip shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Tooltip HTML. - */ - function tooltip( $atts, $content = null ) { - extract( shortcode_atts( array( - 'title' => '', - 'link' => '#', - 'direction' => 'top' - ), $atts ) ); - - $html = ''; - $html .= do_shortcode( $content ); - $html .= ''; - - return $html; - } - - /** - * Google Maps shortcode. - * - * @param array $atts Shortcode attributes. - * @param string $content Content. - * - * @return string Google Maps HTML. - */ - function map( $atts, $content = null ) { - extract( shortcode_atts( array( - 'id' => 'odin_map', - 'latitude' => '0', - 'longitude' => '0', - 'zoom' => '10', - 'width' => '600', - 'height' => '400', - 'maptype' => 'ROADMAP', - 'address' => false, - 'kml' => false, - 'kmlautofit' => true, - 'marker' => false, - 'markerimage' => false, - 'traffic' => false, - 'bike' => false, - 'fusion' => false, - 'infowindow' => false, - 'infowindowdefault' => true, - 'hidecontrols' => 'false', - 'scale' => 'false', - 'scrollwheel' => 'true' - ), $atts ) ); - - // JS var. - $id = str_replace( '-', '_', $id ); - - $html = '
    '; - - $js = ''; - $html .= apply_filters( 'odin_map_shortcode_js_' . $id, $js ); - $html .= ''; - - return $html; - } - - /** - * QR Code shortcode. - * - * @param array $atts Shortcode attributes. - * - * @return string QR Code HTML. - */ - function qrcode( $atts ) { - extract( shortcode_atts( array( - 'data' => '', - 'size' => '150x150', - 'title' => '', - 'alt' => '', - ), $atts ) ); - - $url = 'http://api.qrserver.com/v1/create-qr-code/?data=' . rawurlencode( $data ) . '&size=' . $size; - - return '' . esc_attr( $alt ) . ''; - } - - /** - * Clear Float shortcode. - * - * @param array $atts Shortcode attributes. - * - * @return string Clear Float HTML. - */ - function clear( $atts ) { - return '
    '; - } - -} - -new Odin_Shortcodes; diff --git a/core/classes/class-taxonomy.php b/core/classes/class-taxonomy.php deleted file mode 100644 index 17e2b4e..0000000 --- a/core/classes/class-taxonomy.php +++ /dev/null @@ -1,114 +0,0 @@ -name = $name; - $this->slug = $slug; - $this->object_type = $object_type; - - // Register Taxonomy. - add_action( 'init', array( &$this, 'register_taxonomy' ) ); - } - - /** - * Set custom labels. - * - * @param array $labels Custom labels. - */ - public function set_labels( $labels = array() ) { - $this->labels = $labels; - } - - /** - * Set custom arguments. - * - * @param array $arguments Custom arguments. - */ - public function set_arguments( $arguments = array() ) { - $this->arguments = $arguments; - } - - /** - * Define Taxonomy labels. - * - * @return array Taxonomy labels. - */ - protected function labels() { - $default = array( - 'name' => sprintf( __( '%ss', 'odin' ), $this->name ), - 'singular_name' => sprintf( __( '%s', 'odin' ), $this->name ), - 'add_or_remove_items' => sprintf( __( 'Add or Remove %ss', 'odin' ), $this->name ), - 'view_item' => sprintf( __( 'View %s', 'odin' ), $this->name ), - 'edit_item' => sprintf( __( 'Edit %s', 'odin' ), $this->name ), - 'search_items' => sprintf( __( 'Search %s', 'odin' ), $this->name ), - 'update_item' => sprintf( __( 'Update %s', 'odin' ), $this->name ), - 'parent_item' => sprintf( __( 'Parent %s:', 'odin' ), $this->name ), - 'parent_item_colon' => sprintf( __( 'Parent %s:', 'odin' ), $this->name ), - 'menu_name' => sprintf( __( '%ss', 'odin' ), $this->name ), - 'add_new_item' => sprintf( __( 'Add New %s', 'odin' ), $this->name ), - 'new_item_name' => sprintf( __( 'New %s', 'odin' ), $this->name ), - 'all_items' => sprintf( __( 'All %ss', 'odin' ), $this->name ), - 'separate_items_with_commas' => sprintf( __( 'Separate %ss with comma', 'odin' ), $this->name ), - 'choose_from_most_used' => sprintf( __( 'Choose from %ss most used', 'odin' ), $this->name ) - ); - - return array_merge( $default, $this->labels ); - } - - /** - * Define Taxonomy arguments. - * - * @return array Taxonomy arguments. - */ - protected function arguments() { - $default = array( - 'labels' => $this->labels(), - 'hierarchical' => true, // Like categories. - 'public' => true, - 'show_ui' => true, - 'show_admin_column' => true, - 'show_in_nav_menus' => true, - 'show_tagcloud' => true, - ); - - return array_merge( $default, $this->arguments ); - } - - /** - * Register Taxonomy. - */ - public function register_taxonomy() { - register_taxonomy( $this->slug, $this->object_type, $this->arguments() ); - } -} diff --git a/core/classes/class-term-meta.php b/core/classes/class-term-meta.php deleted file mode 100644 index 5eec6f6..0000000 --- a/core/classes/class-term-meta.php +++ /dev/null @@ -1,520 +0,0 @@ -id = $id; - $this->taxonomy = $taxonomy; - $this->nonce = $this->id . '_nonce'; - - if ( is_array( $this->taxonomy ) ) { - foreach ( $this->taxonomy as $tax_slug ) { - // Print Taxonomy fields. - add_action( $tax_slug . '_add_form_fields', array( $this, 'add_view' ) ); - add_action( $tax_slug . '_edit_form_fields', array( $this, 'edit_view' ) ); - // Delete term fields. - add_action( 'delete_' . $tax_slug, array( $this, 'delete_fields' ) ); - // Save term fields. - add_action( 'create_' . $tax_slug, array( $this, 'save' ) ); - add_action( 'edit_' . $tax_slug, array( $this, 'save' ) ); - } - } else { - // Print Taxonomy fields. - add_action( $this->taxonomy . '_add_form_fields', array( $this, 'add_view' ) ); - add_action( $this->taxonomy . '_edit_form_fields', array( $this, 'edit_view' ) ); - // Delete term fields. - add_action( 'delete_' . $this->taxonomy, array( $this, 'delete_fields' ) ); - // Save term fields. - add_action( 'create_' . $this->taxonomy, array( $this, 'save' ) ); - add_action( 'edit_' . $this->taxonomy, array( $this, 'save' ) ); - } - // Load scripts. - add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); - } - - /** - * Load user meta scripts. - */ - public function scripts() { - // jQuery. - wp_enqueue_script( 'jquery' ); - - // Color Picker. - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker' ); - - // Media Upload. - wp_enqueue_media(); - - // jQuery UI. - wp_enqueue_script( 'jquery-ui-sortable' ); - - // user_meta. - wp_enqueue_script( 'odin-admin', get_template_directory_uri() . '/core/assets/js/admin.js', array( 'jquery' ), null, true ); - wp_enqueue_style( 'odin-admin', get_template_directory_uri() . '/core/assets/css/admin.css', array(), null, 'all' ); - - // Localize strings. - wp_localize_script( - 'odin-admin', - 'odinAdminParams', - array( - 'galleryTitle' => __( 'Add images in gallery', 'odin' ), - 'galleryButton' => __( 'Add in gallery', 'odin' ), - 'galleryRemove' => __( 'Remove image', 'odin' ), - 'uploadTitle' => __( 'Choose a file', 'odin' ), - 'uploadButton' => __( 'Add file', 'odin' ), - ) - ); - } - - /** - * Set user meta fields. - * - * @param array $fields User meta fields. - * - * @return void - */ - public function set_fields( $fields = array() ) { - $this->fields = $fields; - } - - /** - * User meta view for add term page (without a table). - * - * @return string User meta HTML fields. - */ - public function add_view() { - // Use nonce for verification. - wp_nonce_field( basename( __FILE__ ), $this->nonce ); - - foreach ( $this->fields as $field ) { - - echo '
    '; - - echo sprintf( '', $field['id'], $field['label'] ); - - $this->process_fields( $field ); - - if ( isset( $field['description'] ) ) { - echo sprintf( '

    %s

    ', $field['description'] ); - } - - echo '
    '; - } - } - - /** - * User meta view for edit page (inside a table). - * - * @return string User meta HTML fields. - */ - public function edit_view() { - // Use nonce for verification. - wp_nonce_field( basename( __FILE__ ), $this->nonce ); - - foreach ( $this->fields as $field ) { - - echo ''; - - echo sprintf( '', $field['id'], $field['label'] ); - - echo apply_filters( 'odin_term_meta_field_edit_screen_before_' . $this->id, '', $field ); - $this->process_fields( $field ); - - if ( isset( $field['description'] ) ) { - echo sprintf( '

    %s

    ', $field['description'] ); - } - - echo apply_filters( 'odin_term_meta_field_edit_screen__after_' . $this->id, '', $field ); - - echo ''; - } - - echo ''; - } - - /** - * Delete fields - * - * @param int $term Term id. - */ - public function delete_fields( $term ) { - global $wpdb; - - $option = sprintf( 'odin_term_meta_%s', $term ); - $option = '%' . $wpdb->esc_like( $option ) . '%'; - - $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name LIKE %s", $option ) ); - } - - /** - * Get field value - * - * @param string $field Field name. - * - * @return string Field value. - */ - protected function get_value( $id, $field ) { - // First try to get value in the new Term Meta WP API. - if ( $value = get_term_meta( $id, $field, true ) ) { - return $value; - } - - // After, try to get in the old way (option API). - $option_name = sprintf( 'odin_term_meta_%s_%s', $id, $field ); - $value = get_option( $option_name ); - - // Upgrade to new update_term_meta(). - if ( false !== $value ) { - update_term_meta( $id, $field, $value ); - delete_option( $option_name ); - } - - return $value; - } - - /** - * Delete field meta. - * - * @param string $field Field name. - * - * @return string Field value. - */ - protected function delete_term_meta( $id, $field ) { - // First delete value from the Term Meta API (WP 4.4). - if ( $option = get_term_meta( $id, $field ) ) { - delete_term_meta( $id, $field ); - } - - // After, delete from the options API (old way) - $option_name = sprintf( 'odin_term_meta_%s_%s', $id, $field ); - delete_option( $option_name ); - } - - /** - * Process the user meta fields. - * - * @param array $args Field arguments. - * @param int $user_id ID of the current post type. - * - * @return string HTML of the field. - */ - protected function process_fields( $args ) { - $id = $args['id']; - $type = $args['type']; - $options = isset( $args['options'] ) ? $args['options'] : ''; - $attrs = isset( $args['attributes'] ) ? $args['attributes'] : array(); - $current = ''; - - // Gets current value or default. - if ( isset( $_GET['tag_ID'] ) ) { - $current = $this->get_value( $_GET['tag_ID'], $id ); - } - - if ( ! $current ) { - $current = isset( $args['default'] ) ? $args['default'] : ''; - } - - switch ( $type ) { - case 'text' : - $this->field_input( $id, $current, array_merge( array( 'class' => 'regular-text' ), $attrs ) ); - break; - case 'input' : - $this->field_input( $id, $current, $attrs ); - break; - case 'textarea' : - $this->field_textarea( $id, $current, $attrs ); - break; - case 'checkbox' : - $this->field_checkbox( $id, $current, $attrs ); - break; - case 'select' : - $this->field_select( $id, $current, $options, $attrs ); - break; - case 'radio' : - $this->field_radio( $id, $current, $options, $attrs ); - break; - case 'editor' : - $this->field_editor( $id, $current, $options ); - break; - case 'color' : - $this->field_input( $id, $current, array_merge( array( 'class' => 'odin-color-field' ), $attrs ) ); - break; - case 'upload' : - $this->field_upload( $id, $current, $attrs ); - break; - case 'image' : - $this->field_image( $id, $current ); - break; - case 'image_plupload' : - $this->field_image_plupload( $id, $current ); - break; - - default : - do_action( 'odin_user_meta_field_' . $this->id, $type, $id, $current, $options, $attrs ); - break; - } - } - - /** - * Build field attributes. - * - * @param array $attrs Attributes as array. - * - * @return string Attributes as string. - */ - protected function build_field_attributes( $attrs ) { - $attributes = ''; - - if ( ! empty( $attrs ) ) { - foreach ( $attrs as $key => $attr ) { - $attributes .= ' ' . $key . '="' . $attr . '"'; - } - } - - return $attributes; - } - - /** - * Input field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_input( $id, $current, $attrs ) { - if ( ! isset( $attrs['type'] ) ) { - $attrs['type'] = 'text'; - } - - echo sprintf( '', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Textarea field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_textarea( $id, $current, $attrs ) { - if ( ! isset( $attrs['cols'] ) ) { - $attrs['cols'] = '60'; - } - - if ( ! isset( $attrs['rows'] ) ) { - $attrs['rows'] = '5'; - } - - echo sprintf( '
    ', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Checkbox field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_checkbox( $id, $current, $attrs ) { - echo sprintf( '', $id, checked( 1, $current, false ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Select field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with select options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_select( $id, $current, $options, $attrs ) { - // If multiple add a array in the option. - $multiple = ( in_array( 'multiple', $attrs ) ) ? '[]' : ''; - - $html = sprintf( ''; - - echo $html; - } - - /** - * Radio field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with input options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_radio( $id, $current, $options, $attrs ) { - $html = ''; - - foreach ( $options as $key => $label ) { - $html .= sprintf( '
    ', $id, $key, checked( $current, $key, false ), $label, $this->build_field_attributes( $attrs ) ); - } - - echo $html; - } - - /** - * Editor field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with wp_editor options. - * - * @return string HTML of the field. - */ - protected function field_editor( $id, $current, $options ) { - // Set default options. - if ( empty( $options ) ) { - $options = array( 'textarea_rows' => 10 ); - } - - $options[ 'textarea_name' ] = $id; - - echo '
    '; - wp_editor( wpautop( $current ), $id, $options ); - echo '
    '; - } - - /** - * Upload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_upload( $id, $current, $attrs ) { - echo sprintf( '
    ', $id, esc_url( $current ), __( 'Select file', 'odin' ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Image field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image( $id, $current ) { - - // Gets placeholder image. - $image = get_template_directory_uri() . '/core/assets/images/placeholder.png'; - $html = '
    '; - $html .= '' . $image . ''; - - if ( $current ) { - $image = wp_get_attachment_image_src( $current, 'thumbnail' ); - $image = $image[0]; - } - - $html .= sprintf( '
    ', $id, $current, $image, __( 'Select image', 'odin' ), __( 'Remove image', 'odin' ) ); - - $html .= '
    '; - $html .= '
    '; - - echo $html; - } - - /** - * Image plupload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image_plupload( $id, $current ) { - $html = ''; - - echo $html; - } - - /** - * Save term meta data. - * - * @param int $term_id Field id. - * @param int $tt_id Term taxonomy ID. - */ - public function save( $term_id, $tt_id = null ) { - // Verify nonce. - if ( ! isset( $_POST[ $this->nonce ] ) || ! wp_verify_nonce( $_POST[ $this->nonce ], basename( __FILE__ ) ) ) { - return ''; - } - - foreach ( $this->fields as $field ) { - $name = $field['id']; - $old = $this->get_value( $term_id, $name ); - $new = apply_filters( 'odin_save_term_meta_' . $this->id, $_POST[ $name ], $name ); - - if ( $new && $new != $old ) { - update_term_meta( $term_id, $name, $new ); - } else if ( '' == $new && $old ) { - $this->delete_term_meta( $term_id, $name ); - } - } - } -} diff --git a/core/classes/class-theme-options.php b/core/classes/class-theme-options.php deleted file mode 100644 index bf54477..0000000 --- a/core/classes/class-theme-options.php +++ /dev/null @@ -1,660 +0,0 @@ -id = $id; - $this->title = $title; - $this->capability = $capability; - - // Actions. - add_action( 'admin_menu', array( &$this, 'add_page' ) ); - add_action( 'admin_init', array( &$this, 'create_settings' ) ); - add_action( 'admin_enqueue_scripts', array( &$this, 'scripts' ) ); - } - - /** - * Add Settings Theme page. - */ - public function add_page() { - add_theme_page( - $this->title, - $this->title, - $this->capability, - $this->id, - array( &$this, 'settings_page' ) - ); - } - - /** - * Load options scripts. - */ - function scripts() { - // Checks if is the settings page. - if ( isset( $_GET['page'] ) && $this->id == $_GET['page'] ) { - - // Color Picker. - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker' ); - - // Media Upload. - wp_enqueue_media(); - - // jQuery UI. - wp_enqueue_script( 'jquery-ui-sortable' ); - - // Theme Options. - wp_enqueue_style( 'odin-admin', get_template_directory_uri() . '/core/assets/css/admin.css', array(), null, 'all' ); - wp_enqueue_script( 'odin-admin', get_template_directory_uri() . '/core/assets/js/admin.js', array( 'jquery' ), null, true ); - - // Localize strings. - wp_localize_script( - 'odin-admin', - 'odinAdminParams', - array( - 'galleryTitle' => __( 'Add images in gallery', 'odin' ), - 'galleryButton' => __( 'Add in gallery', 'odin' ), - 'galleryRemove' => __( 'Remove image', 'odin' ), - 'uploadTitle' => __( 'Choose a file', 'odin' ), - 'uploadButton' => __( 'Add file', 'odin' ), - ) - ); - } - } - - /** - * Set settings tabs. - * - * @param array $tabs Settings tabs. - */ - public function set_tabs( $tabs ) { - $this->tabs = $tabs; - } - - /** - * Set settings fields - * - * @param array $fields Settings fields. - */ - public function set_fields( $fields ) { - $this->fields = $fields; - } - - /** - * Get current tab. - * - * @return string Current tab ID. - */ - protected function get_current_tab() { - if ( isset( $_GET['tab'] ) ) { - $current_tab = $_GET['tab']; - } else { - $current_tab = $this->tabs[0]['id']; - } - - return $current_tab; - } - - /** - * Get the menu current URL. - * - * @return string Current URL. - */ - private function get_current_url() { - $url = 'http'; - if ( isset( $_SERVER['HTTPS'] ) && 'on' == $_SERVER['HTTPS'] ) { - $url .= 's'; - } - - $url .= '://'; - - if ( '80' != $_SERVER['SERVER_PORT'] ) { - $url .= $_SERVER['SERVER_NAME'] . ' : ' . $_SERVER['SERVER_PORT'] . $_SERVER['PHP_SELF']; - } else { - $url .= $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; - } - - return esc_url( $url ); - } - - /** - * Get tab navigation. - * - * @param string $current_tab Current tab ID. - * - * @return string Tab Navigation. - */ - protected function get_navigation( $current_tab ) { - - $html = ''; - - echo $html; - } - - /** - * Built settings page. - */ - public function settings_page() { - // Get current tag. - $current_tab = $this->get_current_tab(); - - // Opens the wrap. - echo '
    '; - - // Display the navigation menu. - $this->get_navigation( $current_tab ); - - // Display erros. - settings_errors(); - - // Creates the option form. - echo '
    '; - foreach ( $this->tabs as $tabs ) { - if ( $current_tab == $tabs['id'] ) { - - // Prints nonce, action and options_page fields. - settings_fields( $tabs['id'] ); - - // Prints settings sections and settings fields. - do_settings_sections( $tabs['id'] ); - - break; - } - } - - // Display submit button. - submit_button(); - - // Closes the form. - echo '
    '; - - // Closes the wrap. - echo '
    '; - } - - /** - * Create settings. - */ - public function create_settings() { - - // Register settings fields. - foreach ( $this->fields as $section => $items ) { - - // Register settings sections. - add_settings_section( - $section, - $items['title'], - '__return_false', - $items['tab'] - ); - - foreach ( $items['fields'] as $option ) { - - $type = isset( $option['type'] ) ? $option['type'] : 'text'; - - $args = array( - 'id' => $option['id'], - 'tab' => $items['tab'], - 'section' => $section, - 'options' => isset( $option['options'] ) ? $option['options'] : '', - 'default' => isset( $option['default'] ) ? $option['default'] : '', - 'attributes' => isset( $option['attributes'] ) ? $option['attributes'] : array(), - 'description' => isset( $option['description'] ) ? $option['description'] : '' - ); - - add_settings_field( - $option['id'], - $option['label'], - array( &$this, 'callback_' . $type ), - $items['tab'], - $section, - $args - ); - } - } - - // Register settings. - foreach ( $this->tabs as $tabs ) { - register_setting( $tabs['id'], $tabs['id'], array( &$this, 'validate_input' ) ); - } - } - - /** - * Get Option. - * - * @param string $tab Tab that the option belongs - * @param string $id Option ID. - * @param string $default Default option. - * - * @return array Item options. - */ - protected function get_option( $tab, $id, $default = '' ) { - $options = get_option( $tab ); - - if ( isset( $options[ $id ] ) ) { - $default = $options[ $id ]; - } - - return $default; - - } - - /** - * Build field attributes. - * - * @param array $attrs Attributes as array. - * - * @return string Attributes as string. - */ - protected function build_field_attributes( $attrs ) { - $attributes = ''; - - if ( ! empty( $attrs ) ) { - foreach ( $attrs as $key => $attr ) { - $attributes .= ' ' . $key . '="' . $attr . '"'; - } - } - - return $attributes; - } - - /** - * Input field callback. - * - * @param array $args Arguments from the option. - * - * @return string Input field HTML. - */ - public function callback_input( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - // Sets default type. - if ( ! isset( $attrs['type'] ) ) { - $attrs['type'] = 'text'; - } - - // Sets current option. - $current = esc_html( $this->get_option( $tab, $id, $args['default'] ) ); - - $html = sprintf( '', $id, $tab, $current, $this->build_field_attributes( $attrs ) ); - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Text field callback. - * - * @param array $args Arguments from the option. - * - * @return string Text field HTML. - */ - public function callback_text( $args ) { - // Sets regular text class. - $args['attributes']['class'] = 'regular-text'; - - $this->callback_input( $args ); - } - - /** - * Textarea field callback. - * - * @param array $args Arguments from the option. - * - * @return string Textarea field HTML. - */ - public function callback_textarea( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - if ( ! isset( $attrs['cols'] ) ) { - $attrs['cols'] = '60'; - } - - if ( ! isset( $attrs['rows'] ) ) { - $attrs['rows'] = '5'; - } - - // Sets current option. - $current = esc_textarea( $this->get_option( $tab, $id, $args['default'] ) ); - - $html = sprintf( '', $id, $tab, $current, $this->build_field_attributes( $attrs ) ); - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Editor field callback. - * - * @param array $args Arguments from the option. - * - * @return string Editor field HTML. - */ - public function callback_editor( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $options = $args['options']; - - // Sets current option. - $current = wpautop( $this->get_option( $tab, $id, $args['default'] ) ); - - // Set default options. - if ( empty( $options ) ) { - $options = array( 'textarea_rows' => 10 ); - } - - $options[ 'textarea_name' ] = $tab . '[' . $id . ']'; - - echo '
    '; - - wp_editor( $current, $id, $options ); - - echo '
    '; - - // Displays the description. - if ( $args['description'] ) { - echo sprintf( '

    %s

    ', $args['description'] ); - } - } - - /** - * Checkbox field callback. - * - * @param array $args Arguments from the option. - * - * @return string Checkbox field HTML. - */ - public function callback_checkbox( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - // Sets current option. - $current = $this->get_option( $tab, $id, $args['default'] ); - - $html = sprintf( '', $id, $tab, checked( 1, $current, false ), $this->build_field_attributes( $attrs ) ); - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '', $id, $args['description'] ); - } - - echo $html; - } - - /** - * Radio field callback. - * - * @param array $args Arguments from the option. - * - * @return string Radio field HTML. - */ - public function callback_radio( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - // Sets current option. - $current = $this->get_option( $tab, $id, $args['default'] ); - - $html = ''; - foreach( $args['options'] as $key => $label ) { - $item_id = $id . '_' . $key; - $key = sanitize_title( $key ); - - $html .= sprintf( '', $id, $tab, $key, checked( $current, $key, false ), $this->build_field_attributes( $attrs ) ); - $html .= sprintf( '
    ', $item_id, $label ); - } - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Select field callback. - * - * @param array $args Arguments from the option. - * - * @return string Select field HTML. - */ - public function callback_select( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - // Sets current option. - $current = $this->get_option( $tab, $id, $args['default'] ); - - // If multiple add a array in the option. - $multiple = ( in_array( 'multiple', $attrs ) ) ? '[]' : ''; - - $html = sprintf( ''; - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Color field callback. - * - * @param array $args Arguments from the option. - * - * @return string Color field HTML. - */ - public function callback_color( $args ) { - // Sets color class. - $args['attributes']['class'] = 'odin-color-field'; - - $this->callback_input( $args ); - } - - /** - * Upload field callback. - * - * @param array $args Arguments from the option. - * - * @return string Upload field HTML. - */ - public function callback_upload( $args ) { - $tab = $args['tab']; - $id = $args['id']; - $attrs = $args['attributes']; - - // Sets current option. - $current = esc_url( $this->get_option( $tab, $id, $args['default'] ) ); - - $html = sprintf( ' ', $id, $tab, $current, __( 'Select file', 'odin' ), $this->build_field_attributes( $attrs ) ); - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Image field callback. - * - * @param array $args Arguments from the option. - * - * @return string Image field HTML. - */ - public function callback_image( $args ) { - $tab = $args['tab']; - $id = $args['id']; - - // Sets current option. - $current = $this->get_option( $tab, $id, $args['default'] ); - - // Gets placeholder image. - $image = get_template_directory_uri() . '/core/assets/images/placeholder.png'; - $html = '
    '; - $html .= '' . $image . ''; - - if ( ! empty( $current ) ) { - $image = wp_get_attachment_image_src( $current, 'thumbnail' ); - $image = $image[0]; - } - - $html .= sprintf( '
    ', $id, $tab, $current, $image, __( 'Select image', 'odin' ), __( 'Remove image', 'odin' ) ); - - $html .= '
    '; - $html .= '
    '; - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * Image Plupload field callback. - * - * @param array $args Arguments from the option. - * - * @return string Image Plupload field HTML. - */ - public function callback_image_plupload( $args ) { - $tab = $args['tab']; - $id = $args['id']; - - // Sets current option. - $current = $this->get_option( $tab, $id, $args['default'] ); - - $html = ''; - - // Displays the description. - if ( $args['description'] ) { - $html .= sprintf( '

    %s

    ', $args['description'] ); - } - - echo $html; - } - - /** - * HTML callback. - * - * @param array $args Arguments from the option. - * - * @return string HTML. - */ - public function callback_html( $args ) { - echo $args['description']; - } - - /** - * Sanitization fields callback. - * - * @param string $input The unsanitized collection of options. - * - * @return string The collection of sanitized values. - */ - public function validate_input( $input ) { - - // Create our array for storing the validated options. - $output = array(); - - // Loop through each of the incoming options. - foreach ( $input as $key => $value ) { - - // Check to see if the current option has a value. If so, process it. - if ( isset( $input[ $key ] ) ) { - $output[ $key ] = apply_filters( 'odin_theme_options_validate_' . $this->id, $value, $key ); - } - - } - - return $output; - } -} diff --git a/core/classes/class-thumbnail-resizer.php b/core/classes/class-thumbnail-resizer.php deleted file mode 100644 index f961352..0000000 --- a/core/classes/class-thumbnail-resizer.php +++ /dev/null @@ -1,220 +0,0 @@ -, - * created by Syamil MJ and with the licence WTFPL. - * - * @package Odin - * @category Thumbnail_Resizer - * @author WPBrasil - * @version 2.1.5 - */ -class Odin_Thumbnail_Resizer { - - /** - * The singleton instance. - * - * @var object - */ - protected static $instance = null; - - /** - * Image properties - */ - protected static $image_url = null; - protected static $width = null; - protected static $height = null; - - /** - * No initialization allowed. - */ - private function __construct() {} - - /** - * No cloning allowed. - */ - private function __clone() {} - - /** - * Return an instance of this class. - * - * @return object A single instance of this class. - */ - public static function get_instance() { - // If the single instance hasn't been set, set it now. - if ( null == self::$instance ) { - self::$instance = new self; - } - - return self::$instance; - } - - /** - * Gets the upload path (directory and url). - * - * @param string $url Image URL. - * - * @return array Upload directory and URL. - */ - protected static function get_upload_path( $url ) { - $upload_info = wp_upload_dir(); - $upload_dir = $upload_info['basedir']; - $upload_url = $upload_info['baseurl']; - $http_prefix = 'http://'; - $https_prefix = 'https://'; - - // If the $url scheme differs from $upload_url scheme, make them match, - // If the schemes differe, images don't show up. - if ( ! strncmp( $url, $https_prefix, strlen( $https_prefix ) ) ) { - // If url begins with https:// make $upload_url begin with https:// as well. - $upload_url = str_replace( $http_prefix, $https_prefix, $upload_url ); - } elseif ( ! strncmp( $url, $http_prefix, strlen( $http_prefix ) ) ) { - // If url begins with http:// make $upload_url begin with http:// as well. - $upload_url = str_replace( $https_prefix, $http_prefix, $upload_url ); - } - - return array( - 'upload_dir' => $upload_dir, - 'upload_url' => $upload_url - ); - } - - /** - * Process the thumbnail. - * - * @param string $url Image URL (must be uploaded using wp media uploader). - * @param int $width Thumbnail width. - * @param int $height Thumbnail height. - * @param boolean $crop Soft (false) or hard (true) crop. - * @param boolean $upscale Force the resize. - * - * @return string New thumbnail. - */ - public function process( $url, $width = null, $height = null, $crop = false, $upscale = false ) { - // Validate inputs. - if ( ! $url || ( ! $width && ! $height ) ) { - return false; - } - - // Caipt'n, ready to hook. - if ( true === $upscale ) { - add_filter( 'image_resize_dimensions', array( $this, 'aq_upscale' ), 10, 6 ); - } - - // Define upload path, directory and http prefix. - $generate_paths = self::get_upload_path( $url ); - $upload_dir = $generate_paths['upload_dir']; - $upload_url = $generate_paths['upload_url']; - - // Check if $image_url is local. - if ( false === strpos( $url, $upload_url ) ) { - return false; - } - - // Define path of image. - $rel_path = str_replace( $upload_url, '', $url ); - $image_path = $upload_dir . $rel_path; - - // Check if img path exists, and is an image indeed. - if ( ! file_exists( $image_path ) || ! getimagesize( $image_path ) ) { - return false; - } - - // Get image info. - $info = pathinfo( $image_path ); - $ext = $info['extension']; - list( $original_width, $original_height ) = getimagesize( $image_path ); - - // Get image size after cropping. - $dimensions = image_resize_dimensions( $original_width, $original_height, $width, $height, $crop ); - $original_width = $dimensions[4]; - $original_height = $dimensions[5]; - - // Return the original image only if it exactly fits the needed measures. - if ( ! $dimensions && ( ( ( null === $height && $original_width == $width ) xor ( null === $width && $original_height == $height ) ) xor ( $height == $original_height && $width == $original_width ) ) ) { - $image_url = $url; - } else { - // Use this to check if cropped image already exists, so we can return that instead. - $suffix = $original_width . 'x' . $original_height; - $original_rel_path = str_replace( '.' . $ext, '', $rel_path ); - $destfilename = $upload_dir . $original_rel_path . '-' . $suffix . '.' . $ext; - - // Can't resize, so return false saying that the action to do could not be processed as planned. - if ( ! $dimensions || ( true == $crop && false == $upscale && ( $original_width < $width || $original_height < $height ) ) ) { - return false; - - // Else check if cache exists. - } elseif ( file_exists( $destfilename ) && @getimagesize( $destfilename ) ) { - $image_url = $upload_url . $original_rel_path . '-' . $suffix . '.' . $ext; - - // Else, we resize the image and return the new resized image url. - } else { - $editor = wp_get_image_editor( $image_path ); - if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) ) { - return false; - } - - $resized_file = $editor->save(); - - if ( ! is_wp_error( $resized_file ) ) { - $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path'] ); - $image_url = $upload_url . $resized_rel_path; - } else { - return false; - } - - } - } - - self::$image_url = $image_url; - self::$width = $original_width; - self::$height = $original_height; - - // Okay, leave the ship. - if ( true === $upscale ) { - remove_filter( 'image_resize_dimensions', array( $this, 'aq_upscale' ) ); - } - - return $image_url; - } - - /** - * Callback to overwrite WP computing of thumbnail measures - */ - public function aq_upscale( $default, $original_width, $original_height, $new_width, $new_height, $crop ) { - // Let the wordpress default function handle this. - if ( ! $crop ) { - return null; - } - - // Here is the point we allow to use larger image size than the original one. - $aspect_ratio = $original_width / $original_height; - - if ( ! $new_width ) { - $new_width = intval( $new_height * $aspect_ratio ); - } - - if ( ! $new_height ) { - $new_height = intval( $new_width / $aspect_ratio ); - } - - $size_ratio = max( $new_width / $original_width, $new_height / $original_height ); - - $crop_width = round( $new_width / $size_ratio ); - $crop_height = round( $new_height / $size_ratio ); - - $s_x = floor( ( $original_width - $crop_width ) / 2 ); - $s_y = floor( ( $original_height - $crop_height ) / 2 ); - - return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_width, (int) $new_height, (int) $crop_width, (int) $crop_height ); - } - - /** - * Return array with image url, width and height - */ - public function get_image_url_with_dimensions() { - return array( self::$image_url, self::$width, self::$height ); - } -} diff --git a/core/classes/class-user-meta.php b/core/classes/class-user-meta.php deleted file mode 100644 index 3532733..0000000 --- a/core/classes/class-user-meta.php +++ /dev/null @@ -1,440 +0,0 @@ -id = $id; - $this->title = $title; - $this->nonce = $this->id . '_nonce'; - - // View Additional User Fields. - add_action( 'show_user_profile', array( $this, 'view' ) ); - add_action( 'edit_user_profile', array( $this, 'view' ) ); - - // Update Additional User Fields. - add_action( 'personal_options_update', array( $this, 'save' ) ); - add_action( 'edit_user_profile_update', array( $this, 'save' ) ); - - // Load scripts. - add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); - } - - /** - * Load user meta scripts. - */ - public function scripts() { - - // Color Picker. - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker' ); - - // Media Upload. - wp_enqueue_media(); - - // jQuery UI. - wp_enqueue_script( 'jquery-ui-sortable' ); - - // user_meta. - wp_enqueue_script( 'odin-admin', get_template_directory_uri() . '/core/assets/js/admin.js', array( 'jquery' ), null, true ); - wp_enqueue_style( 'odin-admin', get_template_directory_uri() . '/core/assets/css/admin.css', array(), null, 'all' ); - - // Localize strings. - wp_localize_script( - 'odin-admin', - 'odinAdminParams', - array( - 'galleryTitle' => __( 'Add images in gallery', 'odin' ), - 'galleryButton' => __( 'Add in gallery', 'odin' ), - 'galleryRemove' => __( 'Remove image', 'odin' ), - 'uploadTitle' => __( 'Choose a file', 'odin' ), - 'uploadButton' => __( 'Add file', 'odin' ), - ) - ); - } - - /** - * Set user meta fields. - * - * @param array $fields User meta fields. - */ - public function set_fields( $fields = array() ) { - $this->fields = $fields; - } - - /** - * User meta view. - * - * @param object $post Post object. - * - * @return string User meta HTML fields. - */ - public function view() { - // Use nonce for verification. - wp_nonce_field( basename( __FILE__ ), $this->nonce ); - - echo '

    ' . $this->title . '

    '; - - echo ''; - - foreach ( $this->fields as $field ) { - - echo ''; - - $title = sprintf( '', $field['id'], $field['label'] ); - - echo $title; - - echo apply_filters( 'odin_user_meta_field_before_' . $this->id, '', $field ); - - echo ''; - - } - - echo '
    ', $field ); - $this->process_fields( $field ); - - if ( isset( $field['description'] ) ) { - echo sprintf( '%s', $field['description'] ); - } - - echo apply_filters( 'odin_user_meta_field_after_' . $this->id, '
    '; - - } - - /** - * Process the user meta fields. - * - * @param array $args Field arguments - * @param int $user_id ID of the current post type. - * - * @return string HTML of the field. - */ - protected function process_fields( $args ) { - $id = $args['id']; - $type = $args['type']; - $options = isset( $args['options'] ) ? $args['options'] : ''; - $attrs = isset( $args['attributes'] ) ? $args['attributes'] : array(); - - // Gets current value or default. - if ( defined( 'IS_PROFILE_PAGE' ) && IS_PROFILE_PAGE ) { - $current_user = wp_get_current_user(); - $user_id = $current_user->ID; - // If is another user's profile page - } elseif ( ! empty( $_GET['user_id'] ) && is_numeric( $_GET['user_id'] ) ) { - $user_id = $_GET['user_id']; - } - - $current = get_user_meta( $user_id, $id, true ); - - if ( ! $current ) { - $current = isset( $args['default'] ) ? $args['default'] : ''; - } - - switch ( $type ) { - case 'text': - $this->field_input( $id, $current, array_merge( array( 'class' => 'regular-text' ), $attrs ) ); - break; - case 'input': - $this->field_input( $id, $current, $attrs ); - break; - case 'textarea': - $this->field_textarea( $id, $current, $attrs ); - break; - case 'checkbox': - $this->field_checkbox( $id, $current, $attrs ); - break; - case 'select': - $this->field_select( $id, $current, $options, $attrs ); - break; - case 'radio': - $this->field_radio( $id, $current, $options, $attrs ); - break; - case 'editor': - $this->field_editor( $id, $current, $options ); - break; - case 'color': - $this->field_input( $id, $current, array_merge( array( 'class' => 'odin-color-field' ), $attrs ) ); - break; - case 'upload': - $this->field_upload( $id, $current, $attrs ); - break; - case 'image': - $this->field_image( $id, $current ); - break; - case 'image_plupload': - $this->field_image_plupload( $id, $current ); - break; - - default: - do_action( 'odin_user_meta_field_' . $this->id, $type, $id, $current, $options, $attrs ); - break; - } - } - - /** - * Build field attributes. - * - * @param array $attrs Attributes as array. - * - * @return string Attributes as string. - */ - protected function build_field_attributes( $attrs ) { - $attributes = ''; - - if ( ! empty( $attrs ) ) { - foreach ( $attrs as $key => $attr ) { - $attributes .= ' ' . $key . '="' . $attr . '"'; - } - } - - return $attributes; - } - - /** - * Input field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_input( $id, $current, $attrs ) { - if ( ! isset( $attrs['type'] ) ) { - $attrs['type'] = 'text'; - } - - echo sprintf( '', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Textarea field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_textarea( $id, $current, $attrs ) { - if ( ! isset( $attrs['cols'] ) ) { - $attrs['cols'] = '60'; - } - - if ( ! isset( $attrs['rows'] ) ) { - $attrs['rows'] = '5'; - } - - echo sprintf( '
    ', $id, esc_attr( $current ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Checkbox field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_checkbox( $id, $current, $attrs ) { - echo sprintf( '', $id, checked( 1, $current, false ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Select field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with select options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_select( $id, $current, $options, $attrs ) { - // If multiple add a array in the option. - $multiple = ( in_array( 'multiple', $attrs ) ) ? '[]' : ''; - - $html = sprintf( ''; - - echo $html; - } - - /** - * Radio field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with input options. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_radio( $id, $current, $options, $attrs ) { - $html = ''; - - foreach ( $options as $key => $label ) { - $html .= sprintf( '
    ', $id, $key, checked( $current, $key, false ), $label, $this->build_field_attributes( $attrs ) ); - } - - echo $html; - } - - /** - * Editor field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $options Array with wp_editor options. - * - * @return string HTML of the field. - */ - protected function field_editor( $id, $current, $options ) { - // Set default options. - if ( empty( $options ) ) { - $options = array( 'textarea_rows' => 10 ); - } - - $options[ 'textarea_name' ] = $id; - - echo '
    '; - wp_editor( wpautop( $current ), $id, $options ); - echo '
    '; - } - - /** - * Upload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * @param array $attrs Array with field attributes. - * - * @return string HTML of the field. - */ - protected function field_upload( $id, $current, $attrs ) { - echo sprintf( '
    ', $id, esc_url( $current ), __( 'Select file', 'odin' ), $this->build_field_attributes( $attrs ) ); - } - - /** - * Image field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image( $id, $current ) { - - // Gets placeholder image. - $image = get_template_directory_uri() . '/core/assets/images/placeholder.png'; - $html = '
    '; - $html .= '' . $image . ''; - - if ( $current ) { - $image = wp_get_attachment_image_src( $current, 'thumbnail' ); - $image = $image[0]; - } - - $html .= sprintf( '
    ', $id, $current, $image, __( 'Select image', 'odin' ), __( 'Remove image', 'odin' ) ); - - $html .= '
    '; - $html .= '
    '; - - echo $html; - } - - /** - * Image plupload field. - * - * @param string $id Field id. - * @param string $current Field current value. - * - * @return string HTML of the field. - */ - protected function field_image_plupload( $id, $current ) { - $html = ''; - - echo $html; - } - - /** - * Save user meta data. - * - * @param string $id Field id. - * @param string $current Field current value. - */ - public function save( $user_id ) { - // Verify nonce. - if ( ! isset( $_POST[ $this->nonce ] ) || ! wp_verify_nonce( $_POST[ $this->nonce ], basename( __FILE__ ) ) ) { - return ''; - } - - // Only saves if the current user can edit user profiles. - if ( ! current_user_can( 'edit_user', $user_id ) ) { - return ''; - } - - foreach ( $this->fields as $field ) { - $name = $field['id']; - $old = get_user_meta( $user_id, $name, true ); - $new = apply_filters( 'odin_save_user_meta_' . $this->id, $_POST[ $name ], $name ); - - if ( $new && $new != $old ) { - update_user_meta( $user_id, $name, $new ); - } elseif ( '' == $new && $old ) { - delete_user_meta( $user_id, $name, $old ); - } - } - } -} diff --git a/core/classes/widgets/class-widget-like-box.php b/core/classes/widgets/class-widget-like-box.php deleted file mode 100644 index c80f58e..0000000 --- a/core/classes/widgets/class-widget-like-box.php +++ /dev/null @@ -1,166 +0,0 @@ - __( 'This widget includes a facebook like box on your blog', 'odin' ), ) - ); - } - - /** - * Back-end widget form. - * - * @see WP_Widget::form() - * - * @param array $instance Previously saved values from database. - * - * @return string Widget options form. - */ - public function form( $instance ) { - $title = isset( $instance['title'] ) ? $instance['title'] : ''; - $url = isset( $instance['url'] ) ? $instance['url'] : ''; - $width = isset( $instance['width'] ) ? $instance['width'] : 300; - $height = isset( $instance['height'] ) ? $instance['height'] : 500; - $color_scheme = isset( $instance['color_scheme'] ) ? $instance['color_scheme'] : 'light'; - $friends_faces = isset( $instance['friends_faces'] ) ? $instance['friends_faces'] : 1; - $show_posts = isset( $instance['show_posts'] ) ? $instance['show_posts'] : 0; - $show_header = isset( $instance['show_header'] ) ? $instance['show_header'] : 0; - $show_border = isset( $instance['show_border'] ) ? $instance['show_border'] : 0; - - ?> -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    - ', - $instance['url'], - $instance['width'], - $instance['height'], - $instance['color_scheme'], - $instance['friends_faces'], - $instance['show_posts'], - $instance['show_header'], - $instance['show_border'] - ); - - echo $args['after_widget']; - } -} - -/** - * Register the Like Box Widget. - */ -function odin_like_box_widget() { - register_widget( 'Odin_Widget_Like_Box' ); -} - -add_action( 'widgets_init', 'odin_like_box_widget' ); diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md deleted file mode 100644 index b91dace..0000000 --- a/docs/CHANGELOG.md +++ /dev/null @@ -1,265 +0,0 @@ -## Changelog ## - -#### v2.2.8 - 01/09/2015 #### -- Added metabox in terms page #318 #319 -- Added Post Status class #310 -- Improved indentation text-domain #343 -- Added file .ftppass in FTP-deploy and rsync #339 -- Removed default favicon if has custom #338 -- Fixed variable name #338 -- Fixed images list when deleted plupload gallery #334 -- Improved `odin_get_url` return #332 -- Added WC condition #331 -- Added Bootstrap styled in comments form #327 -- Improved comments form #324 -- Fixed parameter name in `odin_get_term_meta` #323 -- Fixed indentation in `header.php` #322 -- Fixed bug file upload #321 -- Fixed .gitignore #315 -- Added placeholder post without thumb #313 -- Fixed tags WC #309 -- Fixed indentation in `class-metabox.php` #308 -- Improved function `odin_breadcrumbs()` #307 - -#### v2.2.7 - 26/06/2015 #### -* Updated dependencies package.json. -* Added option disable emoji's since version 4.2.2 WordPress. -* Updated Boostrap to version 3.3.5. -* Added sidebar() in image.php. -* Attached a footer to the bottom of the viewport when the content is shorter than it. -* Improved semantic theme. -* Added skip navigation for better accessibility. -* Improved SASS and fixed style WordPress. -* Moved files markdown to diretory docs/ -* Moved file .jshintrc to diretory assets/js/ -* Tested with WordPress 4.4.2. - -#### v2.2.6 - 26/06/2014 #### - -* Improved the odin_breadcrumbs() to works better with custom post type and taxonomies. -* Added support to "multiple" attribute in select in all core classes. -* Improved the Odin_Metabox to work with one or more post types. -* Fixed the `title` and `separator` elements in core classes. -* Updated the Bootstrap to 2.2 - -#### v2.2.5 - 13/05/2014 #### - -* Tested with WordPress 3.9. -* Added Odin_User_Meta class. -* Added ability to attach files using Odin_Contact_Form. -* Improved the image upload field. -* Improved the image plupload field. -* Improved the breadcrumbs. -* Improved the odin_pagination(). - -#### v2.2.3 - 31/01/2014 #### - -* Updated the Bootstrap to version 3.1.0. - -#### v2.2.2 - 28/12/2013 #### - -* Modified the bootstrap sass mirror to the official version. -* Updated the Grunt dependencies. - -#### v2.2.1 - 12/12/2013 #### - -* Updated the Bootstrap to version 3.0.3. -* Fixed WordPress logo to version 3.8. -* Added new Odin logo. - -#### v2.2.0 - 12/12/2013 #### - -* Improved the templates in favor the Twenty Fourteen standards. -* Tested with WordPress 3.8. -* Improved the functions to be able to be a parent theme. -* Updated the FitVidsJS. -* Removed bxSlider lib. -* Remove jQuery Validation in favor to [PowerComment plugin](http://wordpress.org/plugins/powercomment/). - -#### v2.1.5 - 17/11/2013 #### - -* Fixed the `process` method in `Odin_Thumbnail_Resizer` -* Fixed the thumbnail creation in `odin_related_posts_custom_thumbnails()` function. -* Improved the `odin_related_posts()` function. - -#### v2.1.4 - 15/11/2013 #### - -* Fixed new PHP code standards. -* Fixed new JavaScript code standards. -* Added `Odin_Thumbnail_Resizer` class. -* Removed old `thumbnail.php` file. -* Created a new `odin_thumbnail()` function with `Odin_Thumbnail_Resizer` class. - -#### v2.1.3 - 10/11/2013 #### - -* Updated the Boostrap to version 3.0.2. - -#### v2.1.2 - 31/10/2013 #### - -* Updated the Bootstrap to version 3.0.1. -* Updated the Bootstrap Menu Walker. -* Fixed the admin logo for MP6. -* Added attributes to edit the rows and cols for textarea in all core classes. - -#### v2.1.1 - 18/10/2013 #### - -* Improved the gmap shortcode. -* Added `$class` param to `odin_thumbnail` function. -* Fixed the bxSlider enqueue script. -* Added dinamic attributes cols and rows for textarea in `Odin_Metabox` class. -* Improved the variables in `Odin_Post_Form` class. -* Added support to mp6 admin theme. -* Updated the Bootstrap menu walker. -* Removed the `force` param in grunt compass task. -* Updated the grunt packages. -* Fixed the Odin URL in `footer.php`. -* Fixed the Custom login styles logo in `inc/assets/css/custom-admin.css`. - -#### v2.1.0 - 29/09/2013 #### - -* Added `Odin_Shortcodes` class. -* Added $name in `odin_save_metabox_*` filter in `Odin_Metabox` class. -* Addded `odin_front_end_form_redirect_*` in `Odin_Front_End_Form` class. -* Added `separator` field type in `Odin_Metabox` class. -* Added `odin_metabox_container_before_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_wrap_before_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_field_title_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_field_before_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_field_after_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_wrap_after_*` filter in `Odin_Metabox` class. -* Added `odin_metabox_container_after_*` filter in `Odin_Metabox` class. -* Fixed select field in `Odin_Metabox` class and `Odin_Theme_Options` class. -* Added id in fieldset in `Odin_Front_End_Form` class. - -#### v2.0.0 - 16/09/2013 #### - -* Changed attrs to attributes in `Odin_Metabox` fields options. -* Changed name to label in `Odin_Metabox` fields options. -* Refactored the `Odin_Theme_Options` class. -* Added `Odin_Front_End_Form` abstract class. -* Added `Odin_Contact_Form` class. -* Added `Odin_Post_Form` class. -* Removed `hgroup`s. -* Fixed select mutiple fields in `Odin_Metabox` and `Odin_Theme_Options`. - -#### v1.9.0 - 30/08/2013 #### - -* Updated sass-bootstrap. -* Created grunt compress task. -* Fixed Bootstrap support to WooCommerce and Jigoshop. -* Improved the templates inline documentation. -* Created a editor-style.css file. -* Improved the scss files. -* Added param attr to insert attributes in metabox fields. -* Removed attachment.php. -* Added audio.php. -* Added image.php. -* Added video.php. -* Added styles to force video shortcode to be responsive. -* Fixed the $icon-font-path. - -#### v1.8.1 - 23/08/2013 #### - -* Fixed image max size. -* Fixed word-wrap for .hentry. -* Fixed galleries styles. -* Fixed wp-caption styles. - -#### v1.8.0 - 21/08/2013 #### - -* Added .editorconfig file. -* Improved the Gruntfile.js. -* Improved the .gitignore. -* Added .jshintrc. -* Added Bootstrap 3.0. -* Removed Colorbox, Socialite.js, LazyLoad and PhotoSwipe from Odin's core. - -#### v1.7.2 - 02/08/2013 #### - -* Improved the Core JavaScript. - -#### v1.7.1 - 01/08/2013 #### - -* Fixed `Odin_Bootstrap_Nav_Walker` class to improved compatibility with WordPress 3.6. - -#### v1.7.0 - 27/07/2013 #### - -* Fixed the main navigation. -* Updated the `Odin_Bootstrap_Nav_Walker` class. -* Updated the Bootstrap files. -* Fixed the Gruntfile.js. -* Improved the code. - -#### v1.6.0 - 22/06/2013 #### - -* Fixed the translation. -* Removed $sex in `Odin_Metabox` class and `Odin_Post_Type` class. - -#### v1.5.1 - 20/06/2013 #### - -* Fixed the translation. -* Fixed Image Uplupload in `Odin_Theme_Options` class. -* Updated the Bootstrap to version v2.3.2. - -#### v1.5.0 - 13/06/2013 #### - -* Added Image Uplupload field in `Odin_Theme_Options` class. -* Added Input field type in `Odin_Theme_Options` class and `Odin_Metabox` class. -* Optimized the `Odin_Theme_Options` class and `Odin_Metabox` class. -* Modified the default language to en_US. -* Added pt_BR translation. - -#### v1.4.0 - 26/05/2013 #### - -* Added Image Uplupload field in `Odin_Metabox` class. -* Optimized the loading of scripts in `class-metabox.php`. -* Fixed the plurals in `class-post-type.php` and `class-taxonomy.php`. -* Moved the `odin_autoset_featured()` function to `functions.php`. -* Fixed code standards. - -#### v1.3.0 - 17/05/2013 #### - -* Added Bootstrap. -* Removed old SASS files. -* Added Grunt task to updated and install the Bootstrap. -* Refixed the Photoswipe. - -#### v1.2.6 - 17/05/2013 #### - -* Reordered the functions.php to load scripts always last. -* Fixed the Photoswipe. - -#### v1.2.5 - 16/05/2013 #### - -* Fixed the Photoswipe feature. - -#### v1.2.4 - 15/05/2013 #### - -* Updated aq_resize to version 1.1.7. - -#### v1.2.3 - 14/05/2013 #### - -* Fixed core admin.js. - -#### v1.2.2 - 14/04/2013 #### - -* Improved file structure in SASS folder. -* Added wp_trim_words() in odin_excerpt() function. - -#### v1.2.1 - 14/04/2013 #### - -* Added `options` argument in editor of Metabox class and Theme Options class. - -#### v1.2.0 - 02/04/2013 #### - -* Added FitVids. - -#### v1.1.0 - 27/03/2013 #### - -* Added Odin_Options_Helper class. -* Added Grunt FTP. -* Added Grunt rsync. - -#### v1.0.0 - 24/03/2013 #### - -* First Release. diff --git a/docs/README-pt_BR.md b/docs/README-pt_BR.md deleted file mode 100644 index da8b074..0000000 --- a/docs/README-pt_BR.md +++ /dev/null @@ -1,69 +0,0 @@ -# Odin Framework # - -[View this documentation in English](https://github.com/wpbrasil/odin/blob/master/README.md) - -![Odin Framework](https://camo.githubusercontent.com/f51173b8da26083e2cfdc893ef532a8bc2457bcb/68747470733a2f2f692e696d6775722e636f6d2f4464654d6755782e706e67) - -* [Website](http://wpod.in/) -* [Odin Expo](http://expo.wpod.in/) -* [GitHub](https://github.com/wpbrasil/odin) -* [Grupo WordPress Brasil no Facebook](https://www.facebook.com/groups/wordpress.brasil) - -## Descrição do Projeto ## - -Bem vindos ao Odin, um tema base desenvolvido pelo [Grupo WordPress Brasil](https://www.facebook.com/groups/wordpress.brasil), para auxiliar no desenvolvimento ágil de temas para WordPress. - -## Instalação ## - -Envie a pasta "odin" para a pasta de temas padrão do WordPress `wp-content/themes` ou simplesmente envie o arquivo zipado utilizando o instalador de temas do WordPress. - -## Documentação ## - -Informações de como usar as classes e funções do Odin na [Wiki Oficial](https://github.com/wpbrasil/odin/wiki/) - -## Suporte a plugins ## - -Odin suporta nativamente os plugins: - -* [WooCommerce](http://wordpress.org/extend/plugins/woocommerce/) -* [JetPack](http://wordpress.org/extend/plugins/jetpack/) Infinite Scroll - -## Referências ## - -* [Bootstrap](http://getbootstrap.com/) -* [Bootstrap Sass](https://github.com/twbs/bootstrap-sass) -* [HTML5shiv](https://github.com/aFarkas/html5shiv) -* [matchMedia() polyfill](https://github.com/paulirish/matchMedia.js/) -* [Respond.js](https://github.com/scottjehl/Respond) -* [Sass](http://sass-lang.com/) -* [Compass](http://compass-style.org/) -* [Grunt.js](http://gruntjs.com/) -* [aq_resize](https://github.com/sy4mil/Aqua-Resizer) -* [FitVids](https://github.com/davatron5000/FitVids.js) -* [EditorConfig](http://editorconfig.org/) -* [goqr.me](http://goqr.me/) -* [Google Maps](https://developers.google.com/maps/) - -## Bugs e Sugestões ## - -O Odin é um projeto **Open Source**. Qualquer um pode (e deveria) ajudar a melhorá-lo. - -Reporte bugs ou faça sugestões utilizando o [Issues/Fórum do Projeto](https://github.com/wpbrasil/odin/issues) - -## Contribua com o Projeto ## - -Para contribuir basta clicar no botão **Fork**, criar um *Branch*, arrumar o código e enviá-lo com um **Pull Request**. - -Mais detalhes de como contribuir e enviar Pull Requests em [GitHub Collaborating](https://help.github.com/categories/63/articles). - -[Como colaborar com projetos opensource com GitHub](http://www.youtube.com/watch?v=H3olaBo83As) - -## Changelog ## - -[Changelog aqui!](https://github.com/wpbrasil/odin/blob/master/docs/CHANGELOG.md) - -## Copyright e Licença ## - -Copyright 2013 - 2018 - Grupo WordPress Brasil. - -O código PHP esta licenciado sob a Licença [GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt). Todos os arquivos CSS, SCSS, JS, imagens e outros não incluindo arquivos PHP estão licenciados como [MIT](http://opensource.org/licenses/MIT) ou pela licença especificada dentro de seus arquivos. diff --git a/docs/pt-BR/README.md b/docs/pt-BR/README.md new file mode 100644 index 0000000..354e37a --- /dev/null +++ b/docs/pt-BR/README.md @@ -0,0 +1,32 @@ +

    Odin logo

    + +# Odin + +Odin é um tema base desenvolvido pela comunidade [@wpbrasil](https://github.com/wpbrasil) para ~chutar bundas~ auxiliar o desenvolvimento de temas para WordPress. + +* [Odin](http://wpod.in/) +* [Docs](https://github.com/wpbrasil/odin/tree/master/docs) +* [Expo](http://expo.wpod.in/) +* [Toolkit](https://github.com/wpbrasil/odin-toolkit) +* [WordPress Brasil](https://github.com/wpbrasil/) + +## Começo rápido + +```bash +# Instale as dependencias +npm install + +# Inicia serve com livereload em localhost:3000 +npm run dev + +# Compila/minifica arquivos fonte (scss, js e etc) para produção +npm run build +``` + +Para mais informações de como o Odin funciona, consulte nossa [documentação](https://github.com/wpbrasil/odin/tree/master/docs). + +## Licença + +[MIT](http://opensource.org/licenses/MIT). Exceto arquivos PHP, que estão sob a Licença [GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt). + +Copyright (c) 2013-Atualmente, [@wpbrasil](https://github.com/wpbrasil). diff --git a/footer.php b/footer.php index 0f4127f..85a0479 100644 --- a/footer.php +++ b/footer.php @@ -2,23 +2,29 @@ /** * The template for displaying the footer. * - * Contains footer content and the closing of the - * #main div element. + * Contains the closing of the all elements after. + * + * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ + ?> - - + + + + + -
    -
    -

    © - | Odin forces and WordPress.', 'odin' ), 'http://wpod.in/', 'http://wordpress.org/' ); ?>

    -
    -
    + + + + + + diff --git a/functions.php b/functions.php index a14b1ca..2717213 100644 --- a/functions.php +++ b/functions.php @@ -1,317 +1,34 @@ __( 'Main Menu', 'odin' ) - ) - ); - - /* - * Add post_thumbnails suport. - */ - add_theme_support( 'post-thumbnails' ); - - /** - * Add feed link. - */ - add_theme_support( 'automatic-feed-links' ); - - /** - * Support Custom Header. - */ - $default = array( - 'width' => 0, - 'height' => 0, - 'flex-height' => false, - 'flex-width' => false, - 'header-text' => false, - 'default-image' => '', - 'uploads' => true, - ); - - add_theme_support( 'custom-header', $default ); - - /** - * Support Custom Background. - */ - $defaults = array( - 'default-color' => '', - 'default-image' => '', - ); - - add_theme_support( 'custom-background', $defaults ); - - /** - * Support Custom Editor Style. - */ - add_editor_style( 'assets/css/editor-style.css' ); - - /** - * Add support for infinite scroll. - */ - add_theme_support( - 'infinite-scroll', - array( - 'type' => 'scroll', - 'footer_widgets' => false, - 'container' => 'content', - 'wrapper' => false, - 'render' => false, - 'posts_per_page' => get_option( 'posts_per_page' ) - ) - ); - - /** - * Add support for Post Formats. - */ - // add_theme_support( 'post-formats', array( - // 'aside', - // 'gallery', - // 'link', - // 'image', - // 'quote', - // 'status', - // 'video', - // 'audio', - // 'chat' - // ) ); - - /** - * Support The Excerpt on pages. - */ - // add_post_type_support( 'page', 'excerpt' ); - - /** - * Switch default core markup for search form, comment form, and comments to output valid HTML5. - */ - add_theme_support( - 'html5', - array( - 'search-form', - 'comment-form', - 'comment-list', - 'gallery', - 'caption' - ) - ); - - /* - * Let WordPress manage the document title. - * By adding theme support, we declare that this theme does not use a - * hard-coded tag in the document head, and expect WordPress to - * provide it for us. - */ - add_theme_support( 'title-tag' ); - - /* - * Enable support for custom logo. - * - * @since Odin 2.2.10 - */ - add_theme_support( 'custom-logo', array( - 'height' => 240, - 'width' => 240, - 'flex-height' => true, - ) ); - } -} - -add_action( 'after_setup_theme', 'odin_setup_features' ); - -/** - * Register widget areas. - * - * @since 2.2.0 - */ -function odin_widgets_init() { - register_sidebar( - array( - 'name' => __( 'Main Sidebar', 'odin' ), - 'id' => 'main-sidebar', - 'description' => __( 'Site Main Sidebar', 'odin' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widgettitle widget-title">', - 'after_title' => '</h3>', - ) - ); -} - -add_action( 'widgets_init', 'odin_widgets_init' ); - -/** - * Flush Rewrite Rules for new CPTs and Taxonomies. - * - * @since 2.2.0 - */ -function odin_flush_rewrite() { - flush_rewrite_rules(); -} - -add_action( 'after_switch_theme', 'odin_flush_rewrite' ); - -/** - * Load site scripts. - * - * @since 2.2.0 - */ -function odin_enqueue_scripts() { - $template_url = get_template_directory_uri(); - - // Loads Odin main stylesheet. - wp_enqueue_style( 'odin-style', get_stylesheet_uri(), array(), null, 'all' ); - - // Html5Shiv - wp_enqueue_script( 'html5shiv', $template_url . '/assets/js/html5.js' ); - wp_script_add_data( 'html5shiv', 'conditional', 'lt IE 9' ); - - // General scripts. - if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { - // Bootstrap. - wp_enqueue_script( 'bootstrap', $template_url . '/assets/js/libs/bootstrap.min.js', array( 'jquery' ), null, true ); - - // FitVids. - wp_enqueue_script( 'fitvids', $template_url . '/assets/js/libs/jquery.fitvids.js', array( 'jquery' ), null, true ); - - // Main. - wp_enqueue_script( 'odin-main', $template_url . '/assets/js/main.js', array( 'jquery' ), null, true ); - } else { - // Grunt main file with Bootstrap, FitVids and others libs. - wp_enqueue_script( 'odin-main-min', $template_url . '/assets/js/main.min.js', array( 'jquery' ), null, true ); - } - - // Grunt watch livereload in the browser. - // wp_enqueue_script( 'odin-livereload', 'http://localhost:35729/livereload.js?snipver=1', array(), null, true ); - - // Load Thread comments WordPress script. - if ( is_singular() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } -} - -add_action( 'wp_enqueue_scripts', 'odin_enqueue_scripts', 1 ); - -/** - * Odin custom stylesheet URI. - * - * @since 2.2.0 - * - * @param string $uri Default URI. - * @param string $dir Stylesheet directory URI. - * - * @return string New URI. - */ -function odin_stylesheet_uri( $uri, $dir ) { - return $dir . '/assets/css/style.css'; -} - -add_filter( 'stylesheet_uri', 'odin_stylesheet_uri', 10, 2 ); - -/** - * Query WooCommerce activation - * - * @since 2.2.6 - * - * @return boolean - */ -if ( ! function_exists( 'is_woocommerce_activated' ) ) { - function is_woocommerce_activated() { - return class_exists( 'woocommerce' ) ? true : false; - } -} - -/** - * Core Helpers. - */ -require_once get_template_directory() . '/core/helpers.php'; - -/** - * WP Custom Admin. - */ -require_once get_template_directory() . '/inc/admin.php'; - -/** - * Comments loop. - */ -require_once get_template_directory() . '/inc/comments-loop.php'; - -/** - * WP optimize functions. - */ -require_once get_template_directory() . '/inc/optimize.php'; - -/** - * Custom template tags. - */ -require_once get_template_directory() . '/inc/template-tags.php'; +require_once get_template_directory() . '/inc/theme/theme.php'; /** - * WooCommerce compatibility files. + * Woocommerce. */ -if ( is_woocommerce_activated() ) { - add_theme_support( 'woocommerce' ); - require get_template_directory() . '/inc/woocommerce/hooks.php'; - require get_template_directory() . '/inc/woocommerce/functions.php'; - require get_template_directory() . '/inc/woocommerce/template-tags.php'; -} +require_once get_template_directory() . '/inc/woocommerce/woocommerce.php'; diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..33dcc51 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,211 @@ +/** + * Packages + */ + +// General +const fs = require('fs'); +const path = require('path'); +const browserSync = require('browser-sync').create(); +const gulp = require('gulp'); +const fileInclude = require('gulp-file-include'); +const flatten = require('gulp-flatten'); +const header = require('gulp-header'); +const plumber = require('gulp-plumber'); +const rename = require('gulp-rename'); +const package = require('./package.json'); +const env = process.env.NODE_ENV === 'production' ? 'production' : 'development'; + +// Scripts +const jshint = require('gulp-jshint'); +const stylish = require('jshint-stylish'); +const uglify = require('gulp-uglify'); + +// Styles +const sass = require('gulp-sass'); +const sassGlob = require('gulp-sass-glob'); + +// Media. +const imagemin = require('gulp-imagemin'); + +// Language. +const checktextdomain = require('gulp-checktextdomain'); + +/** + * Config to project + */ +const config = { + "banner": + "/*!\n" + + " * <%= package.name %> v<%= package.version %> <<%= package.homepage %>>\n"+ + " * <%= package.title %> : <%= package.description %>\n" + + " * (c) " + new Date().getFullYear() + " <%= package.author.name %> <<%= package.author.url %>>\n" + + " * <%= package.license.type %> License <<%= package.license.url %>>\n" + + " * <%= package.repository.url %>\n" + + " */\n\n", + "js": { + "src": "{assets,components}/**/*.js", + "dest": "dist/js/" + }, + "css": { + "src": "{assets,components}/**/*.{scss,sass}", + "dest": "dist/css/", + "includePaths": [ + path.resolve(__dirname, "./"), + path.resolve(__dirname, "./assets/css/"), + path.resolve(__dirname, "./node_modules/") + ] + }, + "images": { + "src": "assets/img/**/*", + "dest": "dist/img/" + }, + "fonts": { + "src": "{assets/fonts/**/,node_modules/@fortawesome/fontawesome-free-webfonts/webfonts/}", + "dest": "dist/fonts/" + } +} + +/** + * Gulp Taks + */ + +// Lint scripts +gulp.task('js:lint', function() { + return gulp.src(config.js.src) + .pipe(plumber()) + .pipe(jshint()) + .pipe(jshint.reporter('jshint-stylish')); +}); + +// File include and concatenate scripts +gulp.task('js:compile', ['js:lint'], function() { + return gulp.src(config.js.src) + .pipe(plumber()) + .pipe(fileInclude({ + prefix: '@@', + basepath: '@file' + })) + .pipe(flatten()) + .pipe(gulp.dest(config.js.dest)) + .pipe(browserSync.stream()); +}); + +// Compress and add banner scripts +gulp.task('js:dist', ['js:compile'], function() { + return gulp.src([config.js.dest+'*.js','!'+config.js.dest+'*.min.js']) + .pipe(plumber()) + .pipe(uglify()) + .pipe(rename({suffix: ".min"})) + .pipe(header(config.banner, {package: package})) + .pipe(flatten()) + .pipe(gulp.dest(config.js.dest)); +}); + +// Process SASS files styles +gulp.task('css:compile', function() { + return gulp.src(config.css.src) + .pipe(plumber()) + .pipe(sassGlob()) + .pipe(sass({ + outputStyle: 'expanded', + sourceComments: true, + includePaths: config.css.includePaths, + indentedSyntax: false + }).on('error', sass.logError)) + .pipe(flatten()) + .pipe(gulp.dest(config.css.dest)) + .pipe(browserSync.stream()); +}); + +// Compress and add banner scripts +gulp.task('css:dist', ['css:compile'], function() { + return gulp.src(config.css.src) + .pipe(plumber()) + .pipe(sassGlob()) + .pipe(sass({ + outputStyle: 'compressed', + sourceComments: false, + includePaths: config.css.includePaths, + indentedSyntax: false + }).on('error', sass.logError)) + .pipe(rename({suffix: '.min'})) + .pipe(header(config.banner, {package: package})) + .pipe(flatten()) + .pipe(gulp.dest(config.css.dest)); +}); + +// Copy image src -> dist to watch +gulp.task('img:compile', function() { + return gulp.src(config.images.src) + .pipe(plumber()) + .pipe(gulp.dest(config.images.dest)) + .pipe(browserSync.stream()); +}); + +// Compress image files +gulp.task('img:dist', function() { + return gulp.src(config.images.src) + .pipe(plumber()) + .pipe(imagemin()) + .pipe(gulp.dest(config.images.dest)); +}); + +// Copy fonts files to dist +gulp.task('fonts:dist', function() { + return gulp.src(config.fonts.src+'*.{svg,eot,ttf,woff,woff2}') + .pipe(flatten()) + .pipe(gulp.dest(config.fonts.dest)); +}); + +// Check text domain in PHP files +gulp.task('lang:checktextdomain', function() { + return gulp + .src(['**/*.php','!node_modules']) + .pipe(checktextdomain({ + text_domain: package.name, + keywords: [ + '__:1,2d', + '_e:1,2d', + '_x:1,2c,3d', + 'esc_html__:1,2d', + 'esc_html_e:1,2d', + 'esc_html_x:1,2c,3d', + 'esc_attr__:1,2d', + 'esc_attr_e:1,2d', + 'esc_attr_x:1,2c,3d', + '_ex:1,2c,3d', + '_n:1,2,4d', + '_nx:1,2,4c,5d', + '_n_noop:1,2,3d', + '_nx_noop:1,2,3c,4d' + ], + })); +}); + +// Starts a BrowerSync instance +gulp.task('serve', function(){ + browserSync.init(package.serveDev); +}); + +// Watch files for changes +gulp.task('watch', ['default'], function(done) { + gulp.watch(config.images.src, ['img:compile']); + gulp.watch(config.css.src, ['css:compile']); + gulp.watch(config.js.src, ['js:compile']); + gulp.watch(['**/*.php']).on('change', browserSync.reload); +}); + +// Compile and compress js, css and img. Move others files to dist, like app/fonts directory (default) +gulp.task('default', [ + 'js:dist', + 'css:dist', + 'img:dist', + 'fonts:dist' +]); + +// Compile, init serve and watch files +gulp.task('dev-server', [ + 'default', + 'serve', + 'watch' +]); diff --git a/header.php b/header.php index 1a770f9..c46ffa2 100644 --- a/header.php +++ b/header.php @@ -1,105 +1,39 @@ <?php /** - * The Header for our theme. + * The header for our theme. * - * Displays all of the <head> section and everything up till #main div + * This is the template that displays all of the <head> section and everything up until <div id="content"> + * + * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ + ?><!DOCTYPE html> -<html class="no-js" <?php language_attributes(); ?>> +<html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <link rel="profile" href="http://gmpg.org/xfn/11" /> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" /> - <?php if ( ! get_option( 'site_icon' ) ) : ?> - <link href="<?php echo get_template_directory_uri(); ?>/assets/images/favicon.ico" rel="shortcut icon" /> - <?php endif; ?> <?php wp_head(); ?> </head> <body <?php body_class(); ?>> - <a id="skippy" class="sr-only sr-only-focusable" href="#content"> - <div class="container"> - <span class="skiplink-text"><?php _e( 'Skip to content', 'odin' ); ?></span> - </div> - </a> - - <header id="header" role="banner"> - <div class="container"> - <div class="page-header hidden-xs"> - - <?php odin_the_custom_logo(); ?> - - <?php if ( is_home() ) : ?> - <h1 class="site-title"> - <a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> - <?php bloginfo( 'name' ); ?> - </a> - </h1> - <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2> - <?php else : ?> - <div class="site-title h1"> - <a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> - <?php bloginfo( 'name' ); ?> - </a> - </div> - <div class="site-description h2"> - <?php bloginfo( 'description' ); ?> - </div> - <?php endif ?> + + <?php if ( function_exists( 'wp_body_open' ) ) { + wp_body_open(); + } ?> + + <?php get_template_part( 'components/navigation/navigation', 'skiplink' ); ?> - <?php if ( get_header_image() ) : ?> - <div class="custom-header"> - <a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"> - <img src="<?php header_image(); ?>" width="<?php echo esc_attr( get_custom_header()->width ); ?>" height="<?php echo esc_attr( get_custom_header()->height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" /> - </a> - </div> - <?php endif; ?> + <div class="odin-app"> - </div><!-- .page-header--> + <div class="odin-app-wrapper"> - <div id="main-navigation" class="navbar navbar-default"> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-navigation"> - <span class="sr-only"><?php _e( 'Toggle navigation', 'odin' ); ?></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand visible-xs-block" href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> - <?php bloginfo( 'name' ); ?> - </a> - </div> - <nav class="collapse navbar-collapse navbar-main-navigation" role="navigation"> - <?php - wp_nav_menu( - array( - 'theme_location' => 'main-menu', - 'depth' => 2, - 'container' => false, - 'menu_class' => 'nav navbar-nav', - 'fallback_cb' => 'Odin_Bootstrap_Nav_Walker::fallback', - 'walker' => new Odin_Bootstrap_Nav_Walker() - ) - ); - ?> - <form method="get" class="navbar-form navbar-right" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search"> - <label for="navbar-search" class="sr-only"> - <?php _e( 'Search:', 'odin' ); ?> - </label> - <div class="form-group"> - <input type="search" value="<?php echo get_search_query(); ?>" class="form-control" name="s" id="navbar-search" /> - </div> - <button type="submit" class="btn btn-default"><?php _e( 'Search', 'odin' ); ?></button> - </form> - </nav><!-- .navbar-collapse --> - </div><!-- #main-navigation--> + <?php get_template_part( 'components/header/header' ); ?> - </div><!-- .container--> - </header><!-- #header --> + <div class="odin-app-body"> - <div id="wrapper" class="container"> - <div class="row"> + <div class="odin-app-body-wrapper"> diff --git a/image.php b/image.php deleted file mode 100644 index ed67464..0000000 --- a/image.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * The template for displaying image attachments. - * - * @link http://codex.wordpress.org/Template_Hierarchy - * - * @package Odin - * @since 2.2.0 - */ - -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - - <?php while ( have_posts() ) : the_post(); ?> - <article <?php post_class(); ?>> - <header class="entry-header"> - <h1 class="entry-title"><?php the_title(); ?></h1> - <div class="entry-meta entry-content"> - <?php - $metadata = wp_get_attachment_metadata(); - printf( __( 'Image total size: %s pixels', 'odin' ), sprintf( '<a href="%1$s" title="%2$s"><span>%3$s</span> × <span>%4$s</span></a>', wp_get_attachment_url(), esc_attr( __( 'Full image link', 'odin' ) ), $metadata['width'], $metadata['height'] ) ); - ?> - </div><!-- .entry-meta --> - </header><!-- .entry-header --> - - <div class="entry-content entry-attachment"> - <p class="attachment"><a href="<?php echo wp_get_attachment_url( $post->ID, 'full' ); ?>" title="<?php the_title_attribute(); ?>"><?php echo wp_get_attachment_image( $post->ID, 'full' ); ?></a></p> - <div class="entry-caption"><em><?php if ( ! empty( $post->post_excerpt ) ) the_excerpt(); ?></em></div> - <?php the_content(); ?> - - <ul class="pager"> - <li class="previous"><?php previous_image_link( false, __( '← Previous image', 'odin' ) ); ?></li> - <li class="next"><?php next_image_link( false, __( 'Next image →', 'odin' ) ); ?></li> - </ul><!-- .pager --> - - <?php if ( ! empty( $post->post_parent ) ) : ?> - <ul class="pager page-title"> - <li class="previous"><a href="<?php echo esc_url( get_permalink( $post->post_parent ) ); ?>" title="<?php echo esc_attr( sprintf( __( 'Back to %s', 'odin' ), strip_tags( get_the_title( $post->post_parent ) ) ) ); ?>" rel="gallery"><?php printf( __( '<span class="meta-nav">←</span> %s', 'odin' ), get_the_title( $post->post_parent ) ); ?></a></li> - </ul><!-- .pager --> - <?php endif; ?> - </div><!-- .entry-content --> - </article> - <?php endwhile; ?> - - </main><!-- #main --> - -<?php -get_sidebar(); -get_footer(); diff --git a/inc/admin/admin.php b/inc/admin/admin.php new file mode 100644 index 0000000..0ab876a --- /dev/null +++ b/inc/admin/admin.php @@ -0,0 +1,17 @@ +<?php +/** + * Admin functions. + * + * @package Odin + * @subpackage Custom_Theme + */ + +/** + * Config. + */ +require_once get_template_directory() . '/inc/admin/config.php'; + +/** + * Functions. + */ +require_once get_template_directory() . '/inc/admin/functions.php'; diff --git a/inc/admin.php b/inc/admin/config.php similarity index 66% rename from inc/admin.php rename to inc/admin/config.php index 22aa773..1565c5d 100644 --- a/inc/admin.php +++ b/inc/admin/config.php @@ -1,17 +1,30 @@ <?php /** - * Odin admin functions. + * Admin Setup. */ /** - * Custom admin scripts. + * Support Custom Editor Style. + * + * @link https://developer.wordpress.org/reference/functions/add_editor_style/ */ -function odin_admin_scripts() { - wp_enqueue_style( 'odin-inc-admin', get_template_directory_uri() . '/inc/assets/css/custom-admin.css' ); +add_editor_style( 'dist/css/editor.css' ); + +/** + * Load scripts and styles in admin area. + */ +function odin_enqueue_scripts_admin() { + $template_url = get_template_directory_uri(); + + // Use minified libraries if SCRIPT_DEBUG is turned off. + $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + + wp_enqueue_script( 'odin-admin-script', $template_url . '/dist/js/admin' . $suffix . '.js', array( 'jquery' ), null, true ); + wp_enqueue_style( 'odin-admin-style', $template_url . '/dist/css/admin' . $suffix . '.css' ); } -add_action( 'admin_enqueue_scripts', 'odin_admin_scripts' ); -add_action( 'login_enqueue_scripts', 'odin_admin_scripts' ); +add_action( 'admin_enqueue_scripts', 'odin_enqueue_scripts_admin' ); +add_action( 'login_enqueue_scripts', 'odin_enqueue_scripts_admin' ); /** * Remove logo from admin bar. diff --git a/inc/admin/functions.php b/inc/admin/functions.php new file mode 100644 index 0000000..01040cf --- /dev/null +++ b/inc/admin/functions.php @@ -0,0 +1,18 @@ +<?php +/** + * Admin Functions. + * + * @package Odin + * @subpackage Custom_Theme + */ + +/** + * Flush Rewrite Rules for new CPTs and Taxonomies. + * + * @since 2.2.0 + */ +function odin_flush_rewrite() { + flush_rewrite_rules(); +} + +add_action( 'after_switch_theme', 'odin_flush_rewrite' ); diff --git a/inc/assets/css/custom-admin.css b/inc/assets/css/custom-admin.css deleted file mode 100644 index 3f4ce84..0000000 --- a/inc/assets/css/custom-admin.css +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Custom login styles. - */ -.login h1 a { - background: url('../images/logo-login.png') center top no-repeat !important; - background: url('../images/logo-login.svg') center top no-repeat !important; - background-size: 80px 80px !important; - height: 80px !important; - width: 80px !important; -} - -/** - * Custom admin styles. - */ -#footer-upgrade { - visibility: hidden !important; -} - -#footer-left { - float: right !important; -} - -#contextual-help-link-wrap, -#wp-version-message, -#normal-sortables #dashboard_right_now .inside .versions p { - display: none !important; -} - -.mce-window .mce-container-body.mce-abs-layout { - overflow: hidden !important; - overflow-y: auto !important; -} diff --git a/inc/assets/images/logo-login.png b/inc/assets/images/logo-login.png deleted file mode 100644 index 60c97f8..0000000 Binary files a/inc/assets/images/logo-login.png and /dev/null differ diff --git a/inc/assets/images/logo-login.svg b/inc/assets/images/logo-login.svg deleted file mode 100644 index f898aea..0000000 --- a/inc/assets/images/logo-login.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"><style>.style0{fill: #0074A2;}</style><g><g><path d="M4.548 31.999c0 10.9 6.3 20.3 15.5 24.706L6.925 20.827C5.402 24.2 4.5 28 4.5 31.999z M50.531 30.614c0-3.394-1.219-5.742-2.264-7.57c-1.391-2.263-2.695-4.177-2.695-6.439c0-2.523 1.912-4.872 4.609-4.872 c0.121 0 0.2 0 0.4 0.022C45.653 7.3 39.1 4.5 32 4.548c-9.591 0-18.027 4.921-22.936 12.4 c0.645 0 1.3 0 1.8 0.033c2.871 0 7.316-0.349 7.316-0.349c1.479-0.086 1.7 2.1 0.2 2.3 c0 0-1.487 0.174-3.142 0.261l9.997 29.735l6.008-18.017l-4.276-11.718c-1.479-0.087-2.879-0.261-2.879-0.261 c-1.48-0.087-1.306-2.349 0.174-2.262c0 0 4.5 0.3 7.2 0.349c2.87 0 7.317-0.349 7.317-0.349 c1.479-0.086 1.7 2.1 0.2 2.262c0 0-1.489 0.174-3.142 0.261l9.92 29.508l2.739-9.148 C49.628 35.7 50.5 33 50.5 30.614z M32.481 34.4l-8.237 23.934c2.46 0.7 5.1 1.1 7.8 1.1 c3.197 0 6.262-0.552 9.116-1.556c-0.072-0.118-0.141-0.243-0.196-0.379L32.481 34.4z M56.088 18.8 c0.119 0.9 0.2 1.8 0.2 2.823c0 2.785-0.521 5.916-2.088 9.832l-8.385 24.242c8.161-4.758 13.65-13.6 13.65-23.728 C59.451 27.2 58.2 22.7 56.1 18.83z M32 0c-17.645 0-32 14.355-32 32C0 49.6 14.4 64 32 64s32-14.355 32-32.001 C64 14.4 49.6 0 32 0z M32 62.533c-16.835 0-30.533-13.698-30.533-30.534C1.467 15.2 15.2 1.5 32 1.5 s30.534 13.7 30.5 30.532C62.533 48.8 48.8 62.5 32 62.533z" class="style0"/></g></g></svg> diff --git a/inc/comments-loop.php b/inc/comments-loop.php deleted file mode 100644 index 41d7bf2..0000000 --- a/inc/comments-loop.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -if ( ! function_exists( 'odin_comments_loop' ) ) { - - /** - * Custom comments loop. - * - * @since 2.2.0 - * - * @param object $comment Comment object. - * @param array $args Comment arguments. - * @param int $depth Comment depth. - */ - function odin_comments_loop( $comment, $args, $depth ) { - $GLOBALS['comment'] = $comment; - - switch ( $comment->comment_type ) { - case 'pingback' : - case 'trackback' : -?> - <li class="media post pingback"> - <p><?php _e( 'Pingback:', 'odin' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit', 'odin' ), '<span class="edit-link">', '</span>' ); ?></p> -<?php - break; - default : -?> - <li <?php comment_class( 'media' ); ?> id="li-comment-<?php comment_ID(); ?>"> - <article id="div-comment-<?php comment_ID(); ?>" class="comment-body comment-author vcard"> - <div class="media-left"> - <?php echo str_replace( "class='avatar", "class='media-object avatar", get_avatar( $comment, 64 ) ); ?> - </div> - <div class="media-body"> - <footer class="comment-meta"> - <h5 class="media-heading"> - <?php echo sprintf( '<strong><span class="fn">%1$s</span></strong> - %2$s <a href="%3$s"><time datetime="%4$s">%5$s %6$s </time></a> - <span class="says"> %7$s</span>', - get_comment_author_link(), __( 'in', 'odin' ), - esc_url( get_comment_link( $comment->comment_ID ) ), - get_comment_time( 'c' ), - get_comment_date(), __( 'at', 'odin' ), - get_comment_time(), __( 'said:', 'odin' ) ); ?> - </h5> - - <?php edit_comment_link( __( 'Edit', 'odin' ), '<span class="edit-link">', ' </span>' ); ?> - - <?php if ( $comment->comment_approved == '0' ) : ?> - <p class="comment-awaiting-moderation alert alert-info"><?php _e( 'Your comment is awaiting moderation.', 'odin' ); ?></p> - <?php endif; ?> - </footer><!-- .comment-meta --> - - <div class="comment-content"> - <?php comment_text(); ?> - </div><!-- .comment-content --> - - <div class="comment-metadata"> - <span class="reply-link"><?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Respond', 'odin' ), 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?></span> - </div><!-- .comment-metadata --> - </div> - </article><!-- .comment-body --> -<?php - break; - } - } -} diff --git a/inc/odin-shortcodes-editor-i18n.php b/inc/odin-shortcodes-editor-i18n.php deleted file mode 100644 index be43473..0000000 --- a/inc/odin-shortcodes-editor-i18n.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -if ( ! defined('ABSPATH' ) ) { - exit; // Exit if accessed directly -} - -$strings = 'tinyMCE.addI18n({' . _WP_Editors::$mce_locale . ': { - odin: { - shortcode_title: "' . esc_js( __( 'Odin shortcodes', 'odin' ) ) . '", - id: "' . esc_js( __( 'Id', 'odin' ) ) . '", - default: "' . esc_js( __( 'default', 'odin' ) ) . '", - buttons: "' . esc_js( __( 'Buttons', 'odin' ) ) . '", - button: "' . esc_js( __( 'Button', 'odin' ) ) . '", - title: "' . esc_js( __( 'Title', 'odin' ) ) . '", - text: "' . esc_js( __( 'Text', 'odin' ) ) . '", - type: "' . esc_js( __( 'Type', 'odin' ) ) . '", - size: "' . esc_js( __( 'Size', 'odin' ) ) . '", - lg: "' . esc_js( __( 'lg (large)', 'odin' ) ) . '", - sm: "' . esc_js( __( 'sm (small)', 'odin' ) ) . '", - xs: "' . esc_js( __( 'xs (extra small)', 'odin' ) ) . '", - link: "' . esc_js( __( 'Link', 'odin' ) ) . '", - class: "' . esc_js( __( 'Class', 'odin' ) ) . '", - tooltip: "' . esc_js( __( 'Tooltip', 'odin' ) ) . '", - direction: "' . esc_js( __( 'Direction', 'odin' ) ) . '", - top: "' . esc_js( __( 'top', 'odin' ) ) . '", - left: "' . esc_js( __( 'left', 'odin' ) ) . '", - right: "' . esc_js( __( 'right', 'odin' ) ) . '", - bottom: "' . esc_js( __( 'bottom', 'odin' ) ) . '", - success: "' . esc_js( __( 'success', 'odin' ) ) . '", - danger: "' . esc_js( __( 'danger', 'odin' ) ) . '", - warning: "' . esc_js( __( 'warning', 'odin' ) ) . '", - info: "' . esc_js( __( 'info', 'odin' ) ) . '", - group_button: "' . esc_js( __( 'Group button', 'odin' ) ) . '", - list: "' . esc_js( __( 'List', 'odin' ) ) . '", - alert: "' . esc_js( __( 'Alert', 'odin' ) ) . '", - vertical: "' . esc_js( __( 'vertical', 'odin' ) ) . '", - group: "' . esc_js( __( 'group', 'odin' ) ) . '", - justified: "' . esc_js( __( 'Justified', 'odin' ) ) . '", - content: "' . esc_js( __( 'Content', 'odin' ) ) . '", - close: "' . esc_js( __( 'Close', 'odin' ) ) . '", - label: "' . esc_js( __( 'Label', 'odin' ) ) . '", - badge: "' . esc_js( __( 'Badge', 'odin' ) ) . '", - well: "' . esc_js( __( 'Well', 'odin' ) ) . '", - table: "' . esc_js( __( 'Table', 'odin' ) ) . '", - striped: "' . esc_js( __( 'striped', 'odin' ) ) . '", - hover: "' . esc_js( __( 'hover', 'odin' ) ) . '", - condensed : "' . esc_js( __( 'condensed', 'odin' ) ) . '", - responsive: "' . esc_js( __( 'responsive', 'odin' ) ) . '", - border: "' . esc_js( __( 'Border', 'odin' ) ) . '", - cols: "' . esc_js( __( 'Columns', 'odin' ) ) . '", - rows: "' . esc_js( __( 'Rows', 'odin' ) ) . '", - progress: "' . esc_js( __( 'Progress bar', 'odin' ) ) . '", - progress_bar: "' . esc_js( __( 'Progress bar', 'odin' ) ) . '", - progress_striped: "' . esc_js( __( 'progress-striped', 'odin' ) ) . '", - active: "' . esc_js( __( 'active', 'odin' ) ) . '", - value_progress: "' . esc_js( __( 'Value (%)', 'odin' ) ) . '", - max: "' . esc_js( __( 'Max value', 'odin' ) ) . '", - min: "' . esc_js( __( 'Min value', 'odin' ) ) . '", - panel: "' . esc_js( __( 'Panel', 'odin' ) ) . '", - primary: "' . esc_js( __( 'primary', 'odin' ) ) . '", - data: "' . esc_js( __( 'Data', 'odin' ) ) . '", - qrcode: "' . esc_js( __( 'QRcode', 'odin' ) ) . '", - clear: "' . esc_js( __( 'Clear', 'odin' ) ) . '", - latitude: "' . esc_js( __( 'Latitude', 'odin' ) ) . '", - longitude: "' . esc_js( __( 'Longitude', 'odin' ) ) . '", - zoom: "' . esc_js( __( 'Zoom', 'odin' ) ) . '", - width: "' . esc_js( __( 'Width', 'odin' ) ) . '", - height: "' . esc_js( __( 'Height', 'odin' ) ) . '", - maptype: "' . esc_js( __( 'Map type', 'odin' ) ) . '", - ROADMAP: "' . esc_js( __( 'ROADMAP', 'odin' ) ) . '", - SATELLITE: "' . esc_js( __( 'SATELLITE', 'odin' ) ) . '", - HYBRID: "' . esc_js( __( 'HYBRID', 'odin' ) ) . '", - TERRAIN: "' . esc_js( __( 'ROADMAP', 'odin' ) ) . '", - TERRAIN: "' . esc_js( __( 'TERRAIN', 'odin' ) ) . '", - address: "' . esc_js( __( 'Address', 'odin' ) ) . '", - kml: "' . esc_js( __( 'Kml', 'odin' ) ) . '", - kmlautofit: "' . esc_js( __( 'Kml autofit', 'odin' ) ) . '", - marker: "' . esc_js( __( 'Marker', 'odin' ) ) . '", - markerimage: "' . esc_js( __( 'Marker image', 'odin' ) ) . '", - traffic: "' . esc_js( __( 'Traffic', 'odin' ) ) . '", - bike: "' . esc_js( __( 'Bike', 'odin' ) ) . '", - fusion: "' . esc_js( __( 'Fusion', 'odin' ) ) . '", - infowindow: "' . esc_js( __( 'Info window', 'odin' ) ) . '", - infowindowdefault: "' . esc_js( __( 'Info window default', 'odin' ) ) . '", - hidecontrols: "' . esc_js( __( 'Hide controls', 'odin' ) ) . '", - scale: "' . esc_js( __( 'Scale', 'odin' ) ) . '", - scrollwheel: "' . esc_js( __( 'Scrollwheel', 'odin' ) ) . '", - map: "' . esc_js( __( 'Map', 'odin' ) ) . '", - accordion: "' . esc_js( __( 'Accordion', 'odin' ) ) . '", - accordions_id: "' . esc_js( __( 'Accordion id', 'odin' ) ) . '", - childs: "' . esc_js( __( 'Childs', 'odin' ) ) . '", - grid: "' . esc_js( __( 'Grid', 'odin' ) ) . '", - columns: "' . esc_js( __( 'Columns', 'odin' ) ) . '", - tabs: "' . esc_js( __( 'Tabs', 'odin' ) ) . '", - icon: "' . esc_js( __( 'Icon', 'odin' ) ) . '", - } -}});'; diff --git a/inc/optimize.php b/inc/optimize.php deleted file mode 100644 index 5eaa058..0000000 --- a/inc/optimize.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * Odin optimize functions. - */ - -/** - * Cleanup wp_head(). - */ -function odin_head_cleanup() { - // Category feeds. - // remove_action( 'wp_head', 'feed_links_extra', 3 ); - - // Post and comment feeds. - // remove_action( 'wp_head', 'feed_links', 2 ); - - // EditURI link. - remove_action( 'wp_head', 'rsd_link' ); - - // Windows live writer. - remove_action( 'wp_head', 'wlwmanifest_link' ); - - // Index link. - remove_action( 'wp_head', 'index_rel_link' ); - - // Previous link. - remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); - - // Start link. - remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); - - // Links for adjacent posts. - remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); - - // WP version. - remove_action( 'wp_head', 'wp_generator' ); - - // Emoji's - // remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); - // remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); - // remove_action( 'wp_print_styles', 'print_emoji_styles' ); - // remove_action( 'admin_print_styles', 'print_emoji_styles' ); - // remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); - // remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); - // remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); -} - -add_action( 'init', 'odin_head_cleanup' ); - -/** - * Remove WP version from RSS. - */ -add_filter( 'the_generator', '__return_false' ); - -/** - * Remove injected CSS for recent comments widget. - */ -function odin_remove_wp_widget_recent_comments_style() { - if ( has_filter( 'wp_head', 'wp_widget_recent_comments_style' ) ) { - remove_filter( 'wp_head', 'wp_widget_recent_comments_style' ); - } -} - -add_filter( 'wp_head', 'odin_remove_wp_widget_recent_comments_style', 1); - -/** - * Remove injected CSS from recent comments widget. - */ -function odin_remove_recent_comments_style() { - global $wp_widget_factory; - - if ( isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ) { - remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) ); - } -} - -add_action( 'wp_head', 'odin_remove_recent_comments_style', 1 ); - -/** - * Remove injected CSS from gallery. - */ -add_filter( 'use_default_gallery_style', '__return_false' ); - -/** - * Add rel="nofollow" and remove rel="category". - */ -function odin_modify_category_rel( $text ) { - $search = array( 'rel="category"', 'rel="category tag"' ); - $text = str_replace( $search, 'rel="nofollow"', $text ); - - return $text; -} - -add_filter( 'wp_list_categories', 'odin_modify_category_rel' ); -add_filter( 'the_category', 'odin_modify_category_rel' ); - -/** - * Add rel="nofollow" and remove rel="tag". - */ -function odin_modify_tag_rel( $taglink ) { - return str_replace( 'rel="tag">', 'rel="nofollow">', $taglink ); -} - -add_filter( 'wp_tag_cloud', 'odin_modify_tag_rel' ); -add_filter( 'the_tags', 'odin_modify_tag_rel' ); - -/** - * Filter function used to remove the tinymce emoji plugin. - * - * @param array $plugins - * - * @return array Difference betwen the two arrays - */ -function disable_emojis_tinymce( $plugins ) { - return is_array( $plugins ) ? array_diff( $plugins, array( 'wpemoji' ) ) : array(); -} - -add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); diff --git a/inc/plugins/plugins.php b/inc/plugins/plugins.php new file mode 100644 index 0000000..d7ffb8b --- /dev/null +++ b/inc/plugins/plugins.php @@ -0,0 +1,57 @@ +<?php +/** + * Plugins. + * + * @package Odin + * @subpackage Custom_Theme + */ + +/** + * Include the TGM_Plugin_Activation class. + * + * @link http://tgmpluginactivation.com/ + */ +//require_once get_template_directory() . '/inc/plugins/tgm/class-tgm-plugin-activation.php'; + +/** + * Register the required plugins for this theme. + * + * @see http://tgmpluginactivation.com/configuration/ for detailed documentation. + */ +if ( class_exists( 'TGM_Plugin_Activation' ) ) { + + add_action( 'tgmpa_register', function() { + + /* + * Array of plugin arrays. Required keys are name and slug. + * If the source is NOT from the .org repo, then source is also required. + */ + $plugins = array( + array( + 'name' => 'Odin Toolkit', + 'slug' => 'odin-toolkit', + 'source' => 'https://github.com/wpbrasil/odin-toolkit/archive/master.zip', + 'required' => false, + ), + ); + + /* + * Array of configuration settings. Amend each line as needed. + */ + $config = array( + 'id' => 'odin', // Unique ID for hashing notices for multiple instances of TGMPA. + 'default_path' => '', // Default absolute path to bundled plugins. + 'menu' => 'tgmpa-install-plugins', // Menu slug. + 'parent_slug' => 'themes.php', // Parent menu slug. + 'capability' => 'edit_theme_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used. + 'has_notices' => true, // Show admin notices or not. + 'dismissable' => true, // If false, a user cannot dismiss the nag message. + 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag. + 'is_automatic' => false, // Automatically activate plugins after installation or not. + 'message' => '', // Message to output right before the plugins table. + ); + + tgmpa( $plugins, $config ); + + } ); +} diff --git a/inc/plugins/tgm/class-tgm-plugin-activation.php b/inc/plugins/tgm/class-tgm-plugin-activation.php new file mode 100644 index 0000000..08fa2ae --- /dev/null +++ b/inc/plugins/tgm/class-tgm-plugin-activation.php @@ -0,0 +1,3760 @@ +<?php +/** + * Plugin installation and activation for WordPress themes. + * + * Please note that this is a drop-in library for a theme or plugin. + * The authors of this library (Thomas, Gary and Juliette) are NOT responsible + * for the support of your plugin or theme. Please contact the plugin + * or theme author for support. + * + * @package TGM-Plugin-Activation + * @version 2.6.1 for parent theme Odin for publication on WordPress.org + * @link http://tgmpluginactivation.com/ + * @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer + * @copyright Copyright (c) 2011, Thomas Griffin + * @license GPL-2.0+ + */ + +/* + Copyright 2011 Thomas Griffin (thomasgriffinmedia.com) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +if ( ! class_exists( 'TGM_Plugin_Activation' ) ) { + + /** + * Automatic plugin installation and activation library. + * + * Creates a way to automatically install and activate plugins from within themes. + * The plugins can be either bundled, downloaded from the WordPress + * Plugin Repository or downloaded from another external source. + * + * @since 1.0.0 + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGM_Plugin_Activation { + /** + * TGMPA version number. + * + * @since 2.5.0 + * + * @const string Version number. + */ + const TGMPA_VERSION = '2.6.1'; + + /** + * Regular expression to test if a URL is a WP plugin repo URL. + * + * @const string Regex. + * + * @since 2.5.0 + */ + const WP_REPO_REGEX = '|^http[s]?://wordpress\.org/(?:extend/)?plugins/|'; + + /** + * Arbitrary regular expression to test if a string starts with a URL. + * + * @const string Regex. + * + * @since 2.5.0 + */ + const IS_URL_REGEX = '|^http[s]?://|'; + + /** + * Holds a copy of itself, so it can be referenced by the class name. + * + * @since 1.0.0 + * + * @var TGM_Plugin_Activation + */ + public static $instance; + + /** + * Holds arrays of plugin details. + * + * @since 1.0.0 + * @since 2.5.0 the array has the plugin slug as an associative key. + * + * @var array + */ + public $plugins = array(); + + /** + * Holds arrays of plugin names to use to sort the plugins array. + * + * @since 2.5.0 + * + * @var array + */ + protected $sort_order = array(); + + /** + * Whether any plugins have the 'force_activation' setting set to true. + * + * @since 2.5.0 + * + * @var bool + */ + protected $has_forced_activation = false; + + /** + * Whether any plugins have the 'force_deactivation' setting set to true. + * + * @since 2.5.0 + * + * @var bool + */ + protected $has_forced_deactivation = false; + + /** + * Name of the unique ID to hash notices. + * + * @since 2.4.0 + * + * @var string + */ + public $id = 'tgmpa'; + + /** + * Name of the query-string argument for the admin page. + * + * @since 1.0.0 + * + * @var string + */ + protected $menu = 'tgmpa-install-plugins'; + + /** + * Parent menu file slug. + * + * @since 2.5.0 + * + * @var string + */ + public $parent_slug = 'themes.php'; + + /** + * Capability needed to view the plugin installation menu item. + * + * @since 2.5.0 + * + * @var string + */ + public $capability = 'edit_theme_options'; + + /** + * Default absolute path to folder containing bundled plugin zip files. + * + * @since 2.0.0 + * + * @var string Absolute path prefix to zip file location for bundled plugins. Default is empty string. + */ + public $default_path = ''; + + /** + * Flag to show admin notices or not. + * + * @since 2.1.0 + * + * @var boolean + */ + public $has_notices = true; + + /** + * Flag to determine if the user can dismiss the notice nag. + * + * @since 2.4.0 + * + * @var boolean + */ + public $dismissable = true; + + /** + * Message to be output above nag notice if dismissable is false. + * + * @since 2.4.0 + * + * @var string + */ + public $dismiss_msg = ''; + + /** + * Flag to set automatic activation of plugins. Off by default. + * + * @since 2.2.0 + * + * @var boolean + */ + public $is_automatic = false; + + /** + * Optional message to display before the plugins table. + * + * @since 2.2.0 + * + * @var string Message filtered by wp_kses_post(). Default is empty string. + */ + public $message = ''; + + /** + * Holds configurable array of strings. + * + * Default values are added in the constructor. + * + * @since 2.0.0 + * + * @var array + */ + public $strings = array(); + + /** + * Holds the version of WordPress. + * + * @since 2.4.0 + * + * @var int + */ + public $wp_version; + + /** + * Holds the hook name for the admin page. + * + * @since 2.5.0 + * + * @var string + */ + public $page_hook; + + /** + * Adds a reference of this object to $instance, populates default strings, + * does the tgmpa_init action hook, and hooks in the interactions to init. + * + * {@internal This method should be `protected`, but as too many TGMPA implementations + * haven't upgraded beyond v2.3.6 yet, this gives backward compatibility issues. + * Reverted back to public for the time being.}} + * + * @since 1.0.0 + * + * @see TGM_Plugin_Activation::init() + */ + public function __construct() { + // Set the current WordPress version. + $this->wp_version = $GLOBALS['wp_version']; + + // Announce that the class is ready, and pass the object (for advanced use). + do_action_ref_array( 'tgmpa_init', array( $this ) ); + + + + // When the rest of WP has loaded, kick-start the rest of the class. + add_action( 'init', array( $this, 'init' ) ); + } + + /** + * Magic method to (not) set protected properties from outside of this class. + * + * {@internal hackedihack... There is a serious bug in v2.3.2 - 2.3.6 where the `menu` property + * is being assigned rather than tested in a conditional, effectively rendering it useless. + * This 'hack' prevents this from happening.}} + * + * @see https://github.com/TGMPA/TGM-Plugin-Activation/blob/2.3.6/tgm-plugin-activation/class-tgm-plugin-activation.php#L1593 + * + * @since 2.5.2 + * + * @param string $name Name of an inaccessible property. + * @param mixed $value Value to assign to the property. + * @return void Silently fail to set the property when this is tried from outside of this class context. + * (Inside this class context, the __set() method if not used as there is direct access.) + */ + public function __set( $name, $value ) { + return; + } + + /** + * Magic method to get the value of a protected property outside of this class context. + * + * @since 2.5.2 + * + * @param string $name Name of an inaccessible property. + * @return mixed The property value. + */ + public function __get( $name ) { + return $this->{$name}; + } + + /** + * Initialise the interactions between this class and WordPress. + * + * Hooks in three new methods for the class: admin_menu, notices and styles. + * + * @since 2.0.0 + * + * @see TGM_Plugin_Activation::admin_menu() + * @see TGM_Plugin_Activation::notices() + * @see TGM_Plugin_Activation::styles() + */ + public function init() { + /** + * By default TGMPA only loads on the WP back-end and not in an Ajax call. Using this filter + * you can overrule that behaviour. + * + * @since 2.5.0 + * + * @param bool $load Whether or not TGMPA should load. + * Defaults to the return of `is_admin() && ! defined( 'DOING_AJAX' )`. + */ + if ( true !== apply_filters( 'tgmpa_load', ( is_admin() && ! defined( 'DOING_AJAX' ) ) ) ) { + return; + } + + // Load class strings. + $this->strings = array( + 'page_title' => __( 'Install Required Plugins', 'odin' ), + 'menu_title' => __( 'Install Plugins', 'odin' ), + /* translators: %s: plugin name. */ + 'installing' => __( 'Installing Plugin: %s', 'odin' ), + /* translators: %s: plugin name. */ + 'updating' => __( 'Updating Plugin: %s', 'odin' ), + 'oops' => __( 'Something went wrong with the plugin API.', 'odin' ), + 'notice_can_install_required' => _n_noop( + /* translators: 1: plugin name(s). */ + 'This theme requires the following plugin: %1$s.', + 'This theme requires the following plugins: %1$s.', + 'odin' + ), + 'notice_can_install_recommended' => _n_noop( + /* translators: 1: plugin name(s). */ + 'This theme recommends the following plugin: %1$s.', + 'This theme recommends the following plugins: %1$s.', + 'odin' + ), + 'notice_ask_to_update' => _n_noop( + /* translators: 1: plugin name(s). */ + 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', + 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', + 'odin' + ), + 'notice_ask_to_update_maybe' => _n_noop( + /* translators: 1: plugin name(s). */ + 'There is an update available for: %1$s.', + 'There are updates available for the following plugins: %1$s.', + 'odin' + ), + 'notice_can_activate_required' => _n_noop( + /* translators: 1: plugin name(s). */ + 'The following required plugin is currently inactive: %1$s.', + 'The following required plugins are currently inactive: %1$s.', + 'odin' + ), + 'notice_can_activate_recommended' => _n_noop( + /* translators: 1: plugin name(s). */ + 'The following recommended plugin is currently inactive: %1$s.', + 'The following recommended plugins are currently inactive: %1$s.', + 'odin' + ), + 'install_link' => _n_noop( + 'Begin installing plugin', + 'Begin installing plugins', + 'odin' + ), + 'update_link' => _n_noop( + 'Begin updating plugin', + 'Begin updating plugins', + 'odin' + ), + 'activate_link' => _n_noop( + 'Begin activating plugin', + 'Begin activating plugins', + 'odin' + ), + 'return' => __( 'Return to Required Plugins Installer', 'odin' ), + 'dashboard' => __( 'Return to the Dashboard', 'odin' ), + 'plugin_activated' => __( 'Plugin activated successfully.', 'odin' ), + 'activated_successfully' => __( 'The following plugin was activated successfully:', 'odin' ), + /* translators: 1: plugin name. */ + 'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'odin' ), + /* translators: 1: plugin name. */ + 'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'odin' ), + /* translators: 1: dashboard link. */ + 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'odin' ), + 'dismiss' => __( 'Dismiss this notice', 'odin' ), + 'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'odin' ), + 'contact_admin' => __( 'Please contact the administrator of this site for help.', 'odin' ), + ); + + do_action( 'tgmpa_register' ); + + /* After this point, the plugins should be registered and the configuration set. */ + + // Proceed only if we have plugins to handle. + if ( empty( $this->plugins ) || ! is_array( $this->plugins ) ) { + return; + } + + // Set up the menu and notices if we still have outstanding actions. + if ( true !== $this->is_tgmpa_complete() ) { + // Sort the plugins. + array_multisort( $this->sort_order, SORT_ASC, $this->plugins ); + + add_action( 'admin_menu', array( $this, 'admin_menu' ) ); + add_action( 'admin_head', array( $this, 'dismiss' ) ); + + // Prevent the normal links from showing underneath a single install/update page. + add_filter( 'install_plugin_complete_actions', array( $this, 'actions' ) ); + add_filter( 'update_plugin_complete_actions', array( $this, 'actions' ) ); + + if ( $this->has_notices ) { + add_action( 'admin_notices', array( $this, 'notices' ) ); + add_action( 'admin_init', array( $this, 'admin_init' ), 1 ); + add_action( 'admin_enqueue_scripts', array( $this, 'thickbox' ) ); + } + } + + // If needed, filter plugin action links. + add_action( 'load-plugins.php', array( $this, 'add_plugin_action_link_filters' ), 1 ); + + // Make sure things get reset on switch theme. + add_action( 'switch_theme', array( $this, 'flush_plugins_cache' ) ); + + if ( $this->has_notices ) { + add_action( 'switch_theme', array( $this, 'update_dismiss' ) ); + } + + // Setup the force activation hook. + if ( true === $this->has_forced_activation ) { + add_action( 'admin_init', array( $this, 'force_activation' ) ); + } + + // Setup the force deactivation hook. + if ( true === $this->has_forced_deactivation ) { + add_action( 'switch_theme', array( $this, 'force_deactivation' ) ); + } + } + + + + + + + + /** + * Hook in plugin action link filters for the WP native plugins page. + * + * - Prevent activation of plugins which don't meet the minimum version requirements. + * - Prevent deactivation of force-activated plugins. + * - Add update notice if update available. + * + * @since 2.5.0 + */ + public function add_plugin_action_link_filters() { + foreach ( $this->plugins as $slug => $plugin ) { + if ( false === $this->can_plugin_activate( $slug ) ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_activate' ), 20 ); + } + + if ( true === $plugin['force_activation'] ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_deactivate' ), 20 ); + } + + if ( false !== $this->does_plugin_require_update( $slug ) ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_update' ), 20 ); + } + } + } + + /** + * Remove the 'Activate' link on the WP native plugins page if the plugin does not meet the + * minimum version requirements. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_activate( $actions ) { + unset( $actions['activate'] ); + + return $actions; + } + + /** + * Remove the 'Deactivate' link on the WP native plugins page if the plugin has been set to force activate. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_deactivate( $actions ) { + unset( $actions['deactivate'] ); + + return $actions; + } + + /** + * Add a 'Requires update' link on the WP native plugins page if the plugin does not meet the + * minimum version requirements. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_update( $actions ) { + $actions['update'] = sprintf( + '<a href="%1$s" title="%2$s" class="edit">%3$s</a>', + esc_url( $this->get_tgmpa_status_url( 'update' ) ), + esc_attr__( 'This plugin needs to be updated to be compatible with your theme.', 'odin' ), + esc_html__( 'Update Required', 'odin' ) + ); + + return $actions; + } + + /** + * Handles calls to show plugin information via links in the notices. + * + * We get the links in the admin notices to point to the TGMPA page, rather + * than the typical plugin-install.php file, so we can prepare everything + * beforehand. + * + * WP does not make it easy to show the plugin information in the thickbox - + * here we have to require a file that includes a function that does the + * main work of displaying it, enqueue some styles, set up some globals and + * finally call that function before exiting. + * + * Down right easy once you know how... + * + * Returns early if not the TGMPA page. + * + * @since 2.1.0 + * + * @global string $tab Used as iframe div class names, helps with styling + * @global string $body_id Used as the iframe body ID, helps with styling + * + * @return null Returns early if not the TGMPA page. + */ + public function admin_init() { + if ( ! $this->is_tgmpa_page() ) { + return; + } + + if ( isset( $_REQUEST['tab'] ) && 'plugin-information' === $_REQUEST['tab'] ) { + // Needed for install_plugin_information(). + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + + wp_enqueue_style( 'plugin-install' ); + + global $tab, $body_id; + $body_id = 'plugin-information'; + // @codingStandardsIgnoreStart + $tab = 'plugin-information'; + // @codingStandardsIgnoreEnd + + install_plugin_information(); + + exit; + } + } + + /** + * Enqueue thickbox scripts/styles for plugin info. + * + * Thickbox is not automatically included on all admin pages, so we must + * manually enqueue it for those pages. + * + * Thickbox is only loaded if the user has not dismissed the admin + * notice or if there are any plugins left to install and activate. + * + * @since 2.1.0 + */ + public function thickbox() { + if ( ! get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) ) { + add_thickbox(); + } + } + + /** + * Adds submenu page if there are plugin actions to take. + * + * This method adds the submenu page letting users know that a required + * plugin needs to be installed. + * + * This page disappears once the plugin has been installed and activated. + * + * @since 1.0.0 + * + * @see TGM_Plugin_Activation::init() + * @see TGM_Plugin_Activation::install_plugins_page() + * + * @return null Return early if user lacks capability to install a plugin. + */ + public function admin_menu() { + // Make sure privileges are correct to see the page. + if ( ! current_user_can( 'install_plugins' ) ) { + return; + } + + $args = apply_filters( + 'tgmpa_admin_menu_args', + array( + 'parent_slug' => $this->parent_slug, // Parent Menu slug. + 'page_title' => $this->strings['page_title'], // Page title. + 'menu_title' => $this->strings['menu_title'], // Menu title. + 'capability' => $this->capability, // Capability. + 'menu_slug' => $this->menu, // Menu slug. + 'function' => array( $this, 'install_plugins_page' ), // Callback. + ) + ); + + $this->add_admin_menu( $args ); + } + + /** + * Add the menu item. + * + * {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA + * generator on the website.}} + * + * @since 2.5.0 + * + * @param array $args Menu item configuration. + */ + protected function add_admin_menu( array $args ) { + $this->page_hook = add_theme_page( $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] ); + } + + /** + * Echoes plugin installation form. + * + * This method is the callback for the admin_menu method function. + * This displays the admin page and form area where the user can select to install and activate the plugin. + * Aborts early if we're processing a plugin installation action. + * + * @since 1.0.0 + * + * @return null Aborts early if we're processing a plugin installation action. + */ + public function install_plugins_page() { + // Store new instance of plugin table in object. + $plugin_table = new TGMPA_List_Table; + + // Return early if processing a plugin installation action. + if ( ( ( 'tgmpa-bulk-install' === $plugin_table->current_action() || 'tgmpa-bulk-update' === $plugin_table->current_action() ) && $plugin_table->process_bulk_actions() ) || $this->do_plugin_install() ) { + return; + } + + // Force refresh of available plugin information so we'll know about manual updates/deletes. + wp_clean_plugins_cache( false ); + + ?> + <div class="tgmpa wrap"> + <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> + <?php $plugin_table->prepare_items(); ?> + + <?php + if ( ! empty( $this->message ) && is_string( $this->message ) ) { + echo wp_kses_post( $this->message ); + } + ?> + <?php $plugin_table->views(); ?> + + <form id="tgmpa-plugins" action="" method="post"> + <input type="hidden" name="tgmpa-page" value="<?php echo esc_attr( $this->menu ); ?>" /> + <input type="hidden" name="plugin_status" value="<?php echo esc_attr( $plugin_table->view_context ); ?>" /> + <?php $plugin_table->display(); ?> + </form> + </div> + <?php + } + + /** + * Installs, updates or activates a plugin depending on the action link clicked by the user. + * + * Checks the $_GET variable to see which actions have been + * passed and responds with the appropriate method. + * + * Uses WP_Filesystem to process and handle the plugin installation + * method. + * + * @since 1.0.0 + * + * @uses WP_Filesystem + * @uses WP_Error + * @uses WP_Upgrader + * @uses Plugin_Upgrader + * @uses Plugin_Installer_Skin + * @uses Plugin_Upgrader_Skin + * + * @return boolean True on success, false on failure. + */ + protected function do_plugin_install() { + if ( empty( $_GET['plugin'] ) ) { + return false; + } + + // All plugin information will be stored in an array for processing. + $slug = $this->sanitize_key( urldecode( $_GET['plugin'] ) ); + + if ( ! isset( $this->plugins[ $slug ] ) ) { + return false; + } + + // Was an install or upgrade action link clicked? + if ( ( isset( $_GET['tgmpa-install'] ) && 'install-plugin' === $_GET['tgmpa-install'] ) || ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) ) { + + $install_type = 'install'; + if ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) { + $install_type = 'update'; + } + + check_admin_referer( 'tgmpa-' . $install_type, 'tgmpa-nonce' ); + + // Pass necessary information via URL if WP_Filesystem is needed. + $url = wp_nonce_url( + add_query_arg( + array( + 'plugin' => urlencode( $slug ), + 'tgmpa-' . $install_type => $install_type . '-plugin', + ), + $this->get_tgmpa_url() + ), + 'tgmpa-' . $install_type, + 'tgmpa-nonce' + ); + + $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. + + if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, array() ) ) ) { + return true; + } + + if ( ! WP_Filesystem( $creds ) ) { + request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, array() ); // Setup WP_Filesystem. + return true; + } + + /* If we arrive here, we have the filesystem. */ + + // Prep variables for Plugin_Installer_Skin class. + $extra = array(); + $extra['slug'] = $slug; // Needed for potentially renaming of directory name. + $source = $this->get_download_url( $slug ); + $api = ( 'repo' === $this->plugins[ $slug ]['source_type'] ) ? $this->get_plugins_api( $slug ) : null; + $api = ( false !== $api ) ? $api : null; + + $url = add_query_arg( + array( + 'action' => $install_type . '-plugin', + 'plugin' => urlencode( $slug ), + ), + 'update.php' + ); + + if ( ! class_exists( 'Plugin_Upgrader', false ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + $title = ( 'update' === $install_type ) ? $this->strings['updating'] : $this->strings['installing']; + $skin_args = array( + 'type' => ( 'bundled' !== $this->plugins[ $slug ]['source_type'] ) ? 'web' : 'upload', + 'title' => sprintf( $title, $this->plugins[ $slug ]['name'] ), + 'url' => esc_url_raw( $url ), + 'nonce' => $install_type . '-plugin_' . $slug, + 'plugin' => '', + 'api' => $api, + 'extra' => $extra, + ); + unset( $title ); + + if ( 'update' === $install_type ) { + $skin_args['plugin'] = $this->plugins[ $slug ]['file_path']; + $skin = new Plugin_Upgrader_Skin( $skin_args ); + } else { + $skin = new Plugin_Installer_Skin( $skin_args ); + } + + // Create a new instance of Plugin_Upgrader. + $upgrader = new Plugin_Upgrader( $skin ); + + // Perform the action and install the plugin from the $source urldecode(). + add_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1, 3 ); + + if ( 'update' === $install_type ) { + // Inject our info into the update transient. + $to_inject = array( $slug => $this->plugins[ $slug ] ); + $to_inject[ $slug ]['source'] = $source; + $this->inject_update_info( $to_inject ); + + $upgrader->upgrade( $this->plugins[ $slug ]['file_path'] ); + } else { + $upgrader->install( $source ); + } + + remove_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1 ); + + // Make sure we have the correct file path now the plugin is installed/updated. + $this->populate_file_path( $slug ); + + // Only activate plugins if the config option is set to true and the plugin isn't + // already active (upgrade). + if ( $this->is_automatic && ! $this->is_plugin_active( $slug ) ) { + $plugin_activate = $upgrader->plugin_info(); // Grab the plugin info from the Plugin_Upgrader method. + if ( false === $this->activate_single_plugin( $plugin_activate, $slug, true ) ) { + return true; // Finish execution of the function early as we encountered an error. + } + } + + $this->show_tgmpa_version(); + + // Display message based on if all plugins are now active or not. + if ( $this->is_tgmpa_complete() ) { + echo '<p>', sprintf( esc_html( $this->strings['complete'] ), '<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'odin' ) . '</a>' ), '</p>'; + echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>'; + } else { + echo '<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>'; + } + + return true; + } elseif ( isset( $this->plugins[ $slug ]['file_path'], $_GET['tgmpa-activate'] ) && 'activate-plugin' === $_GET['tgmpa-activate'] ) { + // Activate action link was clicked. + check_admin_referer( 'tgmpa-activate', 'tgmpa-nonce' ); + + if ( false === $this->activate_single_plugin( $this->plugins[ $slug ]['file_path'], $slug ) ) { + return true; // Finish execution of the function early as we encountered an error. + } + } + + return false; + } + + /** + * Inject information into the 'update_plugins' site transient as WP checks that before running an update. + * + * @since 2.5.0 + * + * @param array $plugins The plugin information for the plugins which are to be updated. + */ + public function inject_update_info( $plugins ) { + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( ! is_object( $repo_updates ) ) { + $repo_updates = new stdClass; + } + + foreach ( $plugins as $slug => $plugin ) { + $file_path = $plugin['file_path']; + + if ( empty( $repo_updates->response[ $file_path ] ) ) { + $repo_updates->response[ $file_path ] = new stdClass; + } + + // We only really need to set package, but let's do all we can in case WP changes something. + $repo_updates->response[ $file_path ]->slug = $slug; + $repo_updates->response[ $file_path ]->plugin = $file_path; + $repo_updates->response[ $file_path ]->new_version = $plugin['version']; + $repo_updates->response[ $file_path ]->package = $plugin['source']; + if ( empty( $repo_updates->response[ $file_path ]->url ) && ! empty( $plugin['external_url'] ) ) { + $repo_updates->response[ $file_path ]->url = $plugin['external_url']; + } + } + + set_site_transient( 'update_plugins', $repo_updates ); + } + + /** + * Adjust the plugin directory name if necessary. + * + * The final destination directory of a plugin is based on the subdirectory name found in the + * (un)zipped source. In some cases - most notably GitHub repository plugin downloads -, this + * subdirectory name is not the same as the expected slug and the plugin will not be recognized + * as installed. This is fixed by adjusting the temporary unzipped source subdirectory name to + * the expected plugin slug. + * + * @since 2.5.0 + * + * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/. + * @param string $remote_source Path to upgrade/zip-file-name.tmp. + * @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin. + * @return string $source + */ + public function maybe_adjust_source_dir( $source, $remote_source, $upgrader ) { + if ( ! $this->is_tgmpa_page() || ! is_object( $GLOBALS['wp_filesystem'] ) ) { + return $source; + } + + // Check for single file plugins. + $source_files = array_keys( $GLOBALS['wp_filesystem']->dirlist( $remote_source ) ); + if ( 1 === count( $source_files ) && false === $GLOBALS['wp_filesystem']->is_dir( $source ) ) { + return $source; + } + + // Multi-file plugin, let's see if the directory is correctly named. + $desired_slug = ''; + + // Figure out what the slug is supposed to be. + if ( false === $upgrader->bulk && ! empty( $upgrader->skin->options['extra']['slug'] ) ) { + $desired_slug = $upgrader->skin->options['extra']['slug']; + } else { + // Bulk installer contains less info, so fall back on the info registered here. + foreach ( $this->plugins as $slug => $plugin ) { + if ( ! empty( $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) && $plugin['name'] === $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) { + $desired_slug = $slug; + break; + } + } + unset( $slug, $plugin ); + } + + if ( ! empty( $desired_slug ) ) { + $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) ); + + if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) { + $from_path = untrailingslashit( $source ); + $to_path = trailingslashit( $remote_source ) . $desired_slug; + + if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) { + return trailingslashit( $to_path ); + } else { + return new WP_Error( 'rename_failed', esc_html__( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'odin' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'odin' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) ); + } + } elseif ( empty( $subdir_name ) ) { + return new WP_Error( 'packaged_wrong', esc_html__( 'The remote plugin package consists of more than one file, but the files are not packaged in a folder.', 'odin' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'odin' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) ); + } + } + + return $source; + } + + /** + * Activate a single plugin and send feedback about the result to the screen. + * + * @since 2.5.0 + * + * @param string $file_path Path within wp-plugins/ to main plugin file. + * @param string $slug Plugin slug. + * @param bool $automatic Whether this is an automatic activation after an install. Defaults to false. + * This determines the styling of the output messages. + * @return bool False if an error was encountered, true otherwise. + */ + protected function activate_single_plugin( $file_path, $slug, $automatic = false ) { + if ( $this->can_plugin_activate( $slug ) ) { + $activate = activate_plugin( $file_path ); + + if ( is_wp_error( $activate ) ) { + echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>', + '<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>'; + + return false; // End it here if there is an error with activation. + } else { + if ( ! $automatic ) { + // Make sure message doesn't display again if bulk activation is performed + // immediately after a single activation. + if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK. + echo '<div id="message" class="updated"><p>', esc_html( $this->strings['activated_successfully'] ), ' <strong>', esc_html( $this->plugins[ $slug ]['name'] ), '.</strong></p></div>'; + } + } else { + // Simpler message layout for use on the plugin install page. + echo '<p>', esc_html( $this->strings['plugin_activated'] ), '</p>'; + } + } + } elseif ( $this->is_plugin_active( $slug ) ) { + // No simpler message format provided as this message should never be encountered + // on the plugin install page. + echo '<div id="message" class="error"><p>', + sprintf( + esc_html( $this->strings['plugin_already_active'] ), + '<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>' + ), + '</p></div>'; + } elseif ( $this->does_plugin_require_update( $slug ) ) { + if ( ! $automatic ) { + // Make sure message doesn't display again if bulk activation is performed + // immediately after a single activation. + if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK. + echo '<div id="message" class="error"><p>', + sprintf( + esc_html( $this->strings['plugin_needs_higher_version'] ), + '<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>' + ), + '</p></div>'; + } + } else { + // Simpler message layout for use on the plugin install page. + echo '<p>', sprintf( esc_html( $this->strings['plugin_needs_higher_version'] ), esc_html( $this->plugins[ $slug ]['name'] ) ), '</p>'; + } + } + + return true; + } + + /** + * Echoes required plugin notice. + * + * Outputs a message telling users that a specific plugin is required for + * their theme. If appropriate, it includes a link to the form page where + * users can install and activate the plugin. + * + * Returns early if we're on the Install page. + * + * @since 1.0.0 + * + * @global object $current_screen + * + * @return null Returns early if we're on the Install page. + */ + public function notices() { + // Remove nag on the install page / Return early if the nag message has been dismissed or user < author. + if ( ( $this->is_tgmpa_page() || $this->is_core_update_page() ) || get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) || ! current_user_can( apply_filters( 'tgmpa_show_admin_notice_capability', 'publish_posts' ) ) ) { + return; + } + + // Store for the plugin slugs by message type. + $message = array(); + + // Initialize counters used to determine plurality of action link texts. + $install_link_count = 0; + $update_link_count = 0; + $activate_link_count = 0; + $total_required_action_count = 0; + + foreach ( $this->plugins as $slug => $plugin ) { + if ( $this->is_plugin_active( $slug ) && false === $this->does_plugin_have_update( $slug ) ) { + continue; + } + + if ( ! $this->is_plugin_installed( $slug ) ) { + if ( current_user_can( 'install_plugins' ) ) { + $install_link_count++; + + if ( true === $plugin['required'] ) { + $message['notice_can_install_required'][] = $slug; + } else { + $message['notice_can_install_recommended'][] = $slug; + } + } + if ( true === $plugin['required'] ) { + $total_required_action_count++; + } + } else { + if ( ! $this->is_plugin_active( $slug ) && $this->can_plugin_activate( $slug ) ) { + if ( current_user_can( 'activate_plugins' ) ) { + $activate_link_count++; + + if ( true === $plugin['required'] ) { + $message['notice_can_activate_required'][] = $slug; + } else { + $message['notice_can_activate_recommended'][] = $slug; + } + } + if ( true === $plugin['required'] ) { + $total_required_action_count++; + } + } + + if ( $this->does_plugin_require_update( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) { + + if ( current_user_can( 'update_plugins' ) ) { + $update_link_count++; + + if ( $this->does_plugin_require_update( $slug ) ) { + $message['notice_ask_to_update'][] = $slug; + } elseif ( false !== $this->does_plugin_have_update( $slug ) ) { + $message['notice_ask_to_update_maybe'][] = $slug; + } + } + if ( true === $plugin['required'] ) { + $total_required_action_count++; + } + } + } + } + unset( $slug, $plugin ); + + // If we have notices to display, we move forward. + if ( ! empty( $message ) || $total_required_action_count > 0 ) { + krsort( $message ); // Sort messages. + $rendered = ''; + + // As add_settings_error() wraps the final message in a <p> and as the final message can't be + // filtered, using <p>'s in our html would render invalid html output. + $line_template = '<span style="display: block; margin: 0.5em 0.5em 0 0; clear: both;">%s</span>' . "\n"; + + if ( ! current_user_can( 'activate_plugins' ) && ! current_user_can( 'install_plugins' ) && ! current_user_can( 'update_plugins' ) ) { + $rendered = esc_html( $this->strings['notice_cannot_install_activate'] ) . ' ' . esc_html( $this->strings['contact_admin'] ); + $rendered .= $this->create_user_action_links_for_notice( 0, 0, 0, $line_template ); + } else { + + // If dismissable is false and a message is set, output it now. + if ( ! $this->dismissable && ! empty( $this->dismiss_msg ) ) { + $rendered .= sprintf( $line_template, wp_kses_post( $this->dismiss_msg ) ); + } + + // Render the individual message lines for the notice. + foreach ( $message as $type => $plugin_group ) { + $linked_plugins = array(); + + // Get the external info link for a plugin if one is available. + foreach ( $plugin_group as $plugin_slug ) { + $linked_plugins[] = $this->get_info_link( $plugin_slug ); + } + unset( $plugin_slug ); + + $count = count( $plugin_group ); + $linked_plugins = array_map( array( 'TGMPA_Utils', 'wrap_in_em' ), $linked_plugins ); + $last_plugin = array_pop( $linked_plugins ); // Pop off last name to prep for readability. + $imploded = empty( $linked_plugins ) ? $last_plugin : ( implode( ', ', $linked_plugins ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'odin' ) . ' ' . $last_plugin ); + + $rendered .= sprintf( + $line_template, + sprintf( + translate_nooped_plural( $this->strings[ $type ], $count, 'odin' ), + $imploded, + $count + ) + ); + + } + unset( $type, $plugin_group, $linked_plugins, $count, $last_plugin, $imploded ); + + $rendered .= $this->create_user_action_links_for_notice( $install_link_count, $update_link_count, $activate_link_count, $line_template ); + } + + // Register the nag messages and prepare them to be processed. + add_settings_error( 'tgmpa', 'tgmpa', $rendered, $this->get_admin_notice_class() ); + } + + // Admin options pages already output settings_errors, so this is to avoid duplication. + if ( 'options-general' !== $GLOBALS['current_screen']->parent_base ) { + $this->display_settings_errors(); + } + } + + /** + * Generate the user action links for the admin notice. + * + * @since 2.6.0 + * + * @param int $install_count Number of plugins to install. + * @param int $update_count Number of plugins to update. + * @param int $activate_count Number of plugins to activate. + * @param int $line_template Template for the HTML tag to output a line. + * @return string Action links. + */ + protected function create_user_action_links_for_notice( $install_count, $update_count, $activate_count, $line_template ) { + // Setup action links. + $action_links = array( + 'install' => '', + 'update' => '', + 'activate' => '', + 'dismiss' => $this->dismissable ? '<a href="' . esc_url( wp_nonce_url( add_query_arg( 'tgmpa-dismiss', 'dismiss_admin_notices' ), 'tgmpa-dismiss-' . get_current_user_id() ) ) . '" class="dismiss-notice" target="_parent">' . esc_html( $this->strings['dismiss'] ) . '</a>' : '', + ); + + $link_template = '<a href="%2$s">%1$s</a>'; + + if ( current_user_can( 'install_plugins' ) ) { + if ( $install_count > 0 ) { + $action_links['install'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['install_link'], $install_count, 'odin' ), + esc_url( $this->get_tgmpa_status_url( 'install' ) ) + ); + } + if ( $update_count > 0 ) { + $action_links['update'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['update_link'], $update_count, 'odin' ), + esc_url( $this->get_tgmpa_status_url( 'update' ) ) + ); + } + } + + if ( current_user_can( 'activate_plugins' ) && $activate_count > 0 ) { + $action_links['activate'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['activate_link'], $activate_count, 'odin' ), + esc_url( $this->get_tgmpa_status_url( 'activate' ) ) + ); + } + + $action_links = apply_filters( 'tgmpa_notice_action_links', $action_links ); + + $action_links = array_filter( (array) $action_links ); // Remove any empty array items. + + if ( ! empty( $action_links ) ) { + $action_links = sprintf( $line_template, implode( ' | ', $action_links ) ); + return apply_filters( 'tgmpa_notice_rendered_action_links', $action_links ); + } else { + return ''; + } + } + + /** + * Get admin notice class. + * + * Work around all the changes to the various admin notice classes between WP 4.4 and 3.7 + * (lowest supported version by TGMPA). + * + * @since 2.6.0 + * + * @return string + */ + protected function get_admin_notice_class() { + if ( ! empty( $this->strings['nag_type'] ) ) { + return sanitize_html_class( strtolower( $this->strings['nag_type'] ) ); + } else { + if ( version_compare( $this->wp_version, '4.2', '>=' ) ) { + return 'notice-warning'; + } elseif ( version_compare( $this->wp_version, '4.1', '>=' ) ) { + return 'notice'; + } else { + return 'updated'; + } + } + } + + /** + * Display settings errors and remove those which have been displayed to avoid duplicate messages showing + * + * @since 2.5.0 + */ + protected function display_settings_errors() { + global $wp_settings_errors; + + settings_errors( 'tgmpa' ); + + foreach ( (array) $wp_settings_errors as $key => $details ) { + if ( 'tgmpa' === $details['setting'] ) { + unset( $wp_settings_errors[ $key ] ); + break; + } + } + } + + /** + * Register dismissal of admin notices. + * + * Acts on the dismiss link in the admin nag messages. + * If clicked, the admin notice disappears and will no longer be visible to this user. + * + * @since 2.1.0 + */ + public function dismiss() { + if ( isset( $_GET['tgmpa-dismiss'] ) && check_admin_referer( 'tgmpa-dismiss-' . get_current_user_id() ) ) { + update_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, 1 ); + } + } + + /** + * Add individual plugin to our collection of plugins. + * + * If the required keys are not set or the plugin has already + * been registered, the plugin is not added. + * + * @since 2.0.0 + * + * @param array|null $plugin Array of plugin arguments or null if invalid argument. + * @return null Return early if incorrect argument. + */ + public function register( $plugin ) { + if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) { + return; + } + + if ( empty( $plugin['slug'] ) || ! is_string( $plugin['slug'] ) || isset( $this->plugins[ $plugin['slug'] ] ) ) { + return; + } + + $defaults = array( + 'name' => '', // String + 'slug' => '', // String + 'source' => 'repo', // String + 'required' => false, // Boolean + 'version' => '', // String + 'force_activation' => false, // Boolean + 'force_deactivation' => false, // Boolean + 'external_url' => '', // String + 'is_callable' => '', // String|Array. + ); + + // Prepare the received data. + $plugin = wp_parse_args( $plugin, $defaults ); + + // Standardize the received slug. + $plugin['slug'] = $this->sanitize_key( $plugin['slug'] ); + + // Forgive users for using string versions of booleans or floats for version number. + $plugin['version'] = (string) $plugin['version']; + $plugin['source'] = empty( $plugin['source'] ) ? 'repo' : $plugin['source']; + $plugin['required'] = TGMPA_Utils::validate_bool( $plugin['required'] ); + $plugin['force_activation'] = TGMPA_Utils::validate_bool( $plugin['force_activation'] ); + $plugin['force_deactivation'] = TGMPA_Utils::validate_bool( $plugin['force_deactivation'] ); + + // Enrich the received data. + $plugin['file_path'] = $this->_get_plugin_basename_from_slug( $plugin['slug'] ); + $plugin['source_type'] = $this->get_plugin_source_type( $plugin['source'] ); + + // Set the class properties. + $this->plugins[ $plugin['slug'] ] = $plugin; + $this->sort_order[ $plugin['slug'] ] = $plugin['name']; + + // Should we add the force activation hook ? + if ( true === $plugin['force_activation'] ) { + $this->has_forced_activation = true; + } + + // Should we add the force deactivation hook ? + if ( true === $plugin['force_deactivation'] ) { + $this->has_forced_deactivation = true; + } + } + + /** + * Determine what type of source the plugin comes from. + * + * @since 2.5.0 + * + * @param string $source The source of the plugin as provided, either empty (= WP repo), a file path + * (= bundled) or an external URL. + * @return string 'repo', 'external', or 'bundled' + */ + protected function get_plugin_source_type( $source ) { + if ( 'repo' === $source || preg_match( self::WP_REPO_REGEX, $source ) ) { + return 'repo'; + } elseif ( preg_match( self::IS_URL_REGEX, $source ) ) { + return 'external'; + } else { + return 'bundled'; + } + } + + /** + * Sanitizes a string key. + * + * Near duplicate of WP Core `sanitize_key()`. The difference is that uppercase characters *are* + * allowed, so as not to break upgrade paths from non-standard bundled plugins using uppercase + * characters in the plugin directory path/slug. Silly them. + * + * @see https://developer.wordpress.org/reference/hooks/sanitize_key/ + * + * @since 2.5.0 + * + * @param string $key String key. + * @return string Sanitized key + */ + public function sanitize_key( $key ) { + $raw_key = $key; + $key = preg_replace( '`[^A-Za-z0-9_-]`', '', $key ); + + /** + * Filter a sanitized key string. + * + * @since 2.5.0 + * + * @param string $key Sanitized key. + * @param string $raw_key The key prior to sanitization. + */ + return apply_filters( 'tgmpa_sanitize_key', $key, $raw_key ); + } + + /** + * Amend default configuration settings. + * + * @since 2.0.0 + * + * @param array $config Array of config options to pass as class properties. + */ + public function config( $config ) { + $keys = array( + 'id', + 'default_path', + 'has_notices', + 'dismissable', + 'dismiss_msg', + 'menu', + 'parent_slug', + 'capability', + 'is_automatic', + 'message', + 'strings', + ); + + foreach ( $keys as $key ) { + if ( isset( $config[ $key ] ) ) { + if ( is_array( $config[ $key ] ) ) { + $this->$key = array_merge( $this->$key, $config[ $key ] ); + } else { + $this->$key = $config[ $key ]; + } + } + } + } + + /** + * Amend action link after plugin installation. + * + * @since 2.0.0 + * + * @param array $install_actions Existing array of actions. + * @return false|array Amended array of actions. + */ + public function actions( $install_actions ) { + // Remove action links on the TGMPA install page. + if ( $this->is_tgmpa_page() ) { + return false; + } + + return $install_actions; + } + + /** + * Flushes the plugins cache on theme switch to prevent stale entries + * from remaining in the plugin table. + * + * @since 2.4.0 + * + * @param bool $clear_update_cache Optional. Whether to clear the Plugin updates cache. + * Parameter added in v2.5.0. + */ + public function flush_plugins_cache( $clear_update_cache = true ) { + wp_clean_plugins_cache( $clear_update_cache ); + } + + /** + * Set file_path key for each installed plugin. + * + * @since 2.1.0 + * + * @param string $plugin_slug Optional. If set, only (re-)populates the file path for that specific plugin. + * Parameter added in v2.5.0. + */ + public function populate_file_path( $plugin_slug = '' ) { + if ( ! empty( $plugin_slug ) && is_string( $plugin_slug ) && isset( $this->plugins[ $plugin_slug ] ) ) { + $this->plugins[ $plugin_slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $plugin_slug ); + } else { + // Add file_path key for all plugins. + foreach ( $this->plugins as $slug => $values ) { + $this->plugins[ $slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $slug ); + } + } + } + + /** + * Helper function to extract the file path of the plugin file from the + * plugin slug, if the plugin is installed. + * + * @since 2.0.0 + * + * @param string $slug Plugin slug (typically folder name) as provided by the developer. + * @return string Either file path for plugin if installed, or just the plugin slug. + */ + protected function _get_plugin_basename_from_slug( $slug ) { + $keys = array_keys( $this->get_plugins() ); + + foreach ( $keys as $key ) { + if ( preg_match( '|^' . $slug . '/|', $key ) ) { + return $key; + } + } + + return $slug; + } + + /** + * Retrieve plugin data, given the plugin name. + * + * Loops through the registered plugins looking for $name. If it finds it, + * it returns the $data from that plugin. Otherwise, returns false. + * + * @since 2.1.0 + * + * @param string $name Name of the plugin, as it was registered. + * @param string $data Optional. Array key of plugin data to return. Default is slug. + * @return string|boolean Plugin slug if found, false otherwise. + */ + public function _get_plugin_data_from_name( $name, $data = 'slug' ) { + foreach ( $this->plugins as $values ) { + if ( $name === $values['name'] && isset( $values[ $data ] ) ) { + return $values[ $data ]; + } + } + + return false; + } + + /** + * Retrieve the download URL for a package. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Plugin download URL or path to local file or empty string if undetermined. + */ + public function get_download_url( $slug ) { + $dl_source = ''; + + switch ( $this->plugins[ $slug ]['source_type'] ) { + case 'repo': + return $this->get_wp_repo_download_url( $slug ); + case 'external': + return $this->plugins[ $slug ]['source']; + case 'bundled': + return $this->default_path . $this->plugins[ $slug ]['source']; + } + + return $dl_source; // Should never happen. + } + + /** + * Retrieve the download URL for a WP repo package. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Plugin download URL. + */ + protected function get_wp_repo_download_url( $slug ) { + $source = ''; + $api = $this->get_plugins_api( $slug ); + + if ( false !== $api && isset( $api->download_link ) ) { + $source = $api->download_link; + } + + return $source; + } + + /** + * Try to grab information from WordPress API. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return object Plugins_api response object on success, WP_Error on failure. + */ + protected function get_plugins_api( $slug ) { + static $api = array(); // Cache received responses. + + if ( ! isset( $api[ $slug ] ) ) { + if ( ! function_exists( 'plugins_api' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + } + + $response = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false ) ) ); + + $api[ $slug ] = false; + + if ( is_wp_error( $response ) ) { + wp_die( esc_html( $this->strings['oops'] ) ); + } else { + $api[ $slug ] = $response; + } + } + + return $api[ $slug ]; + } + + /** + * Retrieve a link to a plugin information page. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Fully formed html link to a plugin information page if available + * or the plugin name if not. + */ + public function get_info_link( $slug ) { + if ( ! empty( $this->plugins[ $slug ]['external_url'] ) && preg_match( self::IS_URL_REGEX, $this->plugins[ $slug ]['external_url'] ) ) { + $link = sprintf( + '<a href="%1$s" target="_blank">%2$s</a>', + esc_url( $this->plugins[ $slug ]['external_url'] ), + esc_html( $this->plugins[ $slug ]['name'] ) + ); + } elseif ( 'repo' === $this->plugins[ $slug ]['source_type'] ) { + $url = add_query_arg( + array( + 'tab' => 'plugin-information', + 'plugin' => urlencode( $slug ), + 'TB_iframe' => 'true', + 'width' => '640', + 'height' => '500', + ), + self_admin_url( 'plugin-install.php' ) + ); + + $link = sprintf( + '<a href="%1$s" class="thickbox">%2$s</a>', + esc_url( $url ), + esc_html( $this->plugins[ $slug ]['name'] ) + ); + } else { + $link = esc_html( $this->plugins[ $slug ]['name'] ); // No hyperlink. + } + + return $link; + } + + /** + * Determine if we're on the TGMPA Install page. + * + * @since 2.1.0 + * + * @return boolean True when on the TGMPA page, false otherwise. + */ + protected function is_tgmpa_page() { + return isset( $_GET['page'] ) && $this->menu === $_GET['page']; + } + + /** + * Determine if we're on a WP Core installation/upgrade page. + * + * @since 2.6.0 + * + * @return boolean True when on a WP Core installation/upgrade page, false otherwise. + */ + protected function is_core_update_page() { + // Current screen is not always available, most notably on the customizer screen. + if ( ! function_exists( 'get_current_screen' ) ) { + return false; + } + + $screen = get_current_screen(); + + if ( 'update-core' === $screen->base ) { + // Core update screen. + return true; + } elseif ( 'plugins' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok. + // Plugins bulk update screen. + return true; + } elseif ( 'update' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok. + // Individual updates (ajax call). + return true; + } + + return false; + } + + /** + * Retrieve the URL to the TGMPA Install page. + * + * I.e. depending on the config settings passed something along the lines of: + * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins + * + * @since 2.5.0 + * + * @return string Properly encoded URL (not escaped). + */ + public function get_tgmpa_url() { + static $url; + + if ( ! isset( $url ) ) { + $parent = $this->parent_slug; + if ( false === strpos( $parent, '.php' ) ) { + $parent = 'admin.php'; + } + $url = add_query_arg( + array( + 'page' => urlencode( $this->menu ), + ), + self_admin_url( $parent ) + ); + } + + return $url; + } + + /** + * Retrieve the URL to the TGMPA Install page for a specific plugin status (view). + * + * I.e. depending on the config settings passed something along the lines of: + * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins&plugin_status=install + * + * @since 2.5.0 + * + * @param string $status Plugin status - either 'install', 'update' or 'activate'. + * @return string Properly encoded URL (not escaped). + */ + public function get_tgmpa_status_url( $status ) { + return add_query_arg( + array( + 'plugin_status' => urlencode( $status ), + ), + $this->get_tgmpa_url() + ); + } + + /** + * Determine whether there are open actions for plugins registered with TGMPA. + * + * @since 2.5.0 + * + * @return bool True if complete, i.e. no outstanding actions. False otherwise. + */ + public function is_tgmpa_complete() { + $complete = true; + foreach ( $this->plugins as $slug => $plugin ) { + if ( ! $this->is_plugin_active( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) { + $complete = false; + break; + } + } + + return $complete; + } + + /** + * Check if a plugin is installed. Does not take must-use plugins into account. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if installed, false otherwise. + */ + public function is_plugin_installed( $slug ) { + $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached). + + return ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ] ) ); + } + + /** + * Check if a plugin is active. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if active, false otherwise. + */ + public function is_plugin_active( $slug ) { + return ( ( ! empty( $this->plugins[ $slug ]['is_callable'] ) && is_callable( $this->plugins[ $slug ]['is_callable'] ) ) || is_plugin_active( $this->plugins[ $slug ]['file_path'] ) ); + } + + /** + * Check if a plugin can be updated, i.e. if we have information on the minimum WP version required + * available, check whether the current install meets them. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if OK to update, false otherwise. + */ + public function can_plugin_update( $slug ) { + // We currently can't get reliable info on non-WP-repo plugins - issue #380. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + return true; + } + + $api = $this->get_plugins_api( $slug ); + + if ( false !== $api && isset( $api->requires ) ) { + return version_compare( $this->wp_version, $api->requires, '>=' ); + } + + // No usable info received from the plugins API, presume we can update. + return true; + } + + /** + * Check to see if the plugin is 'updatetable', i.e. installed, with an update available + * and no WP version requirements blocking it. + * + * @since 2.6.0 + * + * @param string $slug Plugin slug. + * @return bool True if OK to proceed with update, false otherwise. + */ + public function is_plugin_updatetable( $slug ) { + if ( ! $this->is_plugin_installed( $slug ) ) { + return false; + } else { + return ( false !== $this->does_plugin_have_update( $slug ) && $this->can_plugin_update( $slug ) ); + } + } + + /** + * Check if a plugin can be activated, i.e. is not currently active and meets the minimum + * plugin version requirements set in TGMPA (if any). + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if OK to activate, false otherwise. + */ + public function can_plugin_activate( $slug ) { + return ( ! $this->is_plugin_active( $slug ) && ! $this->does_plugin_require_update( $slug ) ); + } + + /** + * Retrieve the version number of an installed plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Version number as string or an empty string if the plugin is not installed + * or version unknown (plugins which don't comply with the plugin header standard). + */ + public function get_installed_version( $slug ) { + $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached). + + if ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'] ) ) { + return $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version']; + } + + return ''; + } + + /** + * Check whether a plugin complies with the minimum version requirements. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True when a plugin needs to be updated, otherwise false. + */ + public function does_plugin_require_update( $slug ) { + $installed_version = $this->get_installed_version( $slug ); + $minimum_version = $this->plugins[ $slug ]['version']; + + return version_compare( $minimum_version, $installed_version, '>' ); + } + + /** + * Check whether there is an update available for a plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return false|string Version number string of the available update or false if no update available. + */ + public function does_plugin_have_update( $slug ) { + // Presume bundled and external plugins will point to a package which meets the minimum required version. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + if ( $this->does_plugin_require_update( $slug ) ) { + return $this->plugins[ $slug ]['version']; + } + + return false; + } + + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( isset( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version ) ) { + return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version; + } + + return false; + } + + /** + * Retrieve potential upgrade notice for a plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string The upgrade notice or an empty string if no message was available or provided. + */ + public function get_upgrade_notice( $slug ) { + // We currently can't get reliable info on non-WP-repo plugins - issue #380. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + return ''; + } + + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( ! empty( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice ) ) { + return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice; + } + + return ''; + } + + /** + * Wrapper around the core WP get_plugins function, making sure it's actually available. + * + * @since 2.5.0 + * + * @param string $plugin_folder Optional. Relative path to single plugin folder. + * @return array Array of installed plugins with plugin information. + */ + public function get_plugins( $plugin_folder = '' ) { + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + return get_plugins( $plugin_folder ); + } + + /** + * Delete dismissable nag option when theme is switched. + * + * This ensures that the user(s) is/are again reminded via nag of required + * and/or recommended plugins if they re-activate the theme. + * + * @since 2.1.1 + */ + public function update_dismiss() { + delete_metadata( 'user', null, 'tgmpa_dismissed_notice_' . $this->id, null, true ); + } + + /** + * Forces plugin activation if the parameter 'force_activation' is + * set to true. + * + * This allows theme authors to specify certain plugins that must be + * active at all times while using the current theme. + * + * Please take special care when using this parameter as it has the + * potential to be harmful if not used correctly. Setting this parameter + * to true will not allow the specified plugin to be deactivated unless + * the user switches themes. + * + * @since 2.2.0 + */ + public function force_activation() { + foreach ( $this->plugins as $slug => $plugin ) { + if ( true === $plugin['force_activation'] ) { + if ( ! $this->is_plugin_installed( $slug ) ) { + // Oops, plugin isn't there so iterate to next condition. + continue; + } elseif ( $this->can_plugin_activate( $slug ) ) { + // There we go, activate the plugin. + activate_plugin( $plugin['file_path'] ); + } + } + } + } + + /** + * Forces plugin deactivation if the parameter 'force_deactivation' + * is set to true and adds the plugin to the 'recently active' plugins list. + * + * This allows theme authors to specify certain plugins that must be + * deactivated upon switching from the current theme to another. + * + * Please take special care when using this parameter as it has the + * potential to be harmful if not used correctly. + * + * @since 2.2.0 + */ + public function force_deactivation() { + $deactivated = array(); + + foreach ( $this->plugins as $slug => $plugin ) { + /* + * Only proceed forward if the parameter is set to true and plugin is active + * as a 'normal' (not must-use) plugin. + */ + if ( true === $plugin['force_deactivation'] && is_plugin_active( $plugin['file_path'] ) ) { + deactivate_plugins( $plugin['file_path'] ); + $deactivated[ $plugin['file_path'] ] = time(); + } + } + + if ( ! empty( $deactivated ) ) { + update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) ); + } + } + + /** + * Echo the current TGMPA version number to the page. + * + * @since 2.5.0 + */ + public function show_tgmpa_version() { + echo '<p style="float: right; padding: 0em 1.5em 0.5em 0;"><strong><small>', + esc_html( + sprintf( + /* translators: %s: version number */ + __( 'TGMPA v%s', 'odin' ), + self::TGMPA_VERSION + ) + ), + '</small></strong></p>'; + } + + /** + * Returns the singleton instance of the class. + * + * @since 2.4.0 + * + * @return \TGM_Plugin_Activation The TGM_Plugin_Activation object. + */ + public static function get_instance() { + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) { + self::$instance = new self(); + } + + return self::$instance; + } + } + + if ( ! function_exists( 'load_tgm_plugin_activation' ) ) { + /** + * Ensure only one instance of the class is ever invoked. + * + * @since 2.5.0 + */ + function load_tgm_plugin_activation() { + $GLOBALS['tgmpa'] = TGM_Plugin_Activation::get_instance(); + } + } + + if ( did_action( 'plugins_loaded' ) ) { + load_tgm_plugin_activation(); + } else { + add_action( 'plugins_loaded', 'load_tgm_plugin_activation' ); + } +} + +if ( ! function_exists( 'tgmpa' ) ) { + /** + * Helper function to register a collection of required plugins. + * + * @since 2.0.0 + * @api + * + * @param array $plugins An array of plugin arrays. + * @param array $config Optional. An array of configuration values. + */ + function tgmpa( $plugins, $config = array() ) { + $instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + foreach ( $plugins as $plugin ) { + call_user_func( array( $instance, 'register' ), $plugin ); + } + + if ( ! empty( $config ) && is_array( $config ) ) { + // Send out notices for deprecated arguments passed. + if ( isset( $config['notices'] ) ) { + _deprecated_argument( __FUNCTION__, '2.2.0', 'The `notices` config parameter was renamed to `has_notices` in TGMPA 2.2.0. Please adjust your configuration.' ); + if ( ! isset( $config['has_notices'] ) ) { + $config['has_notices'] = $config['notices']; + } + } + + if ( isset( $config['parent_menu_slug'] ) ) { + _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_menu_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' ); + } + if ( isset( $config['parent_url_slug'] ) ) { + _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_url_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' ); + } + + call_user_func( array( $instance, 'config' ), $config ); + } + } +} + +/** + * WP_List_Table isn't always available. If it isn't available, + * we load it here. + * + * @since 2.2.0 + */ +if ( ! class_exists( 'WP_List_Table' ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; +} + +if ( ! class_exists( 'TGMPA_List_Table' ) ) { + + /** + * List table class for handling plugins. + * + * Extends the WP_List_Table class to provide a future-compatible + * way of listing out all required/recommended plugins. + * + * Gives users an interface similar to the Plugin Administration + * area with similar (albeit stripped down) capabilities. + * + * This class also allows for the bulk install of plugins. + * + * @since 2.2.0 + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_List_Table extends WP_List_Table { + /** + * TGMPA instance. + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * The currently chosen view. + * + * @since 2.5.0 + * + * @var string One of: 'all', 'install', 'update', 'activate' + */ + public $view_context = 'all'; + + /** + * The plugin counts for the various views. + * + * @since 2.5.0 + * + * @var array + */ + protected $view_totals = array( + 'all' => 0, + 'install' => 0, + 'update' => 0, + 'activate' => 0, + ); + + /** + * References parent constructor and sets defaults for class. + * + * @since 2.2.0 + */ + public function __construct() { + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + parent::__construct( + array( + 'singular' => 'plugin', + 'plural' => 'plugins', + 'ajax' => false, + ) + ); + + if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'install', 'update', 'activate' ), true ) ) { + $this->view_context = sanitize_key( $_REQUEST['plugin_status'] ); + } + + add_filter( 'tgmpa_table_data_items', array( $this, 'sort_table_items' ) ); + } + + /** + * Get a list of CSS classes for the <table> tag. + * + * Overruled to prevent the 'plural' argument from being added. + * + * @since 2.5.0 + * + * @return array CSS classnames. + */ + public function get_table_classes() { + return array( 'widefat', 'fixed' ); + } + + /** + * Gathers and renames all of our plugin information to be used by WP_List_Table to create our table. + * + * @since 2.2.0 + * + * @return array $table_data Information for use in table. + */ + protected function _gather_plugin_data() { + // Load thickbox for plugin links. + $this->tgmpa->admin_init(); + $this->tgmpa->thickbox(); + + // Categorize the plugins which have open actions. + $plugins = $this->categorize_plugins_to_views(); + + // Set the counts for the view links. + $this->set_view_totals( $plugins ); + + // Prep variables for use and grab list of all installed plugins. + $table_data = array(); + $i = 0; + + // Redirect to the 'all' view if no plugins were found for the selected view context. + if ( empty( $plugins[ $this->view_context ] ) ) { + $this->view_context = 'all'; + } + + foreach ( $plugins[ $this->view_context ] as $slug => $plugin ) { + $table_data[ $i ]['sanitized_plugin'] = $plugin['name']; + $table_data[ $i ]['slug'] = $slug; + $table_data[ $i ]['plugin'] = '<strong>' . $this->tgmpa->get_info_link( $slug ) . '</strong>'; + $table_data[ $i ]['source'] = $this->get_plugin_source_type_text( $plugin['source_type'] ); + $table_data[ $i ]['type'] = $this->get_plugin_advise_type_text( $plugin['required'] ); + $table_data[ $i ]['status'] = $this->get_plugin_status_text( $slug ); + $table_data[ $i ]['installed_version'] = $this->tgmpa->get_installed_version( $slug ); + $table_data[ $i ]['minimum_version'] = $plugin['version']; + $table_data[ $i ]['available_version'] = $this->tgmpa->does_plugin_have_update( $slug ); + + // Prep the upgrade notice info. + $upgrade_notice = $this->tgmpa->get_upgrade_notice( $slug ); + if ( ! empty( $upgrade_notice ) ) { + $table_data[ $i ]['upgrade_notice'] = $upgrade_notice; + + add_action( "tgmpa_after_plugin_row_{$slug}", array( $this, 'wp_plugin_update_row' ), 10, 2 ); + } + + $table_data[ $i ] = apply_filters( 'tgmpa_table_data_item', $table_data[ $i ], $plugin ); + + $i++; + } + + return $table_data; + } + + /** + * Categorize the plugins which have open actions into views for the TGMPA page. + * + * @since 2.5.0 + */ + protected function categorize_plugins_to_views() { + $plugins = array( + 'all' => array(), // Meaning: all plugins which still have open actions. + 'install' => array(), + 'update' => array(), + 'activate' => array(), + ); + + foreach ( $this->tgmpa->plugins as $slug => $plugin ) { + if ( $this->tgmpa->is_plugin_active( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) { + // No need to display plugins if they are installed, up-to-date and active. + continue; + } else { + $plugins['all'][ $slug ] = $plugin; + + if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) { + $plugins['install'][ $slug ] = $plugin; + } else { + if ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) { + $plugins['update'][ $slug ] = $plugin; + } + + if ( $this->tgmpa->can_plugin_activate( $slug ) ) { + $plugins['activate'][ $slug ] = $plugin; + } + } + } + } + + return $plugins; + } + + /** + * Set the counts for the view links. + * + * @since 2.5.0 + * + * @param array $plugins Plugins order by view. + */ + protected function set_view_totals( $plugins ) { + foreach ( $plugins as $type => $list ) { + $this->view_totals[ $type ] = count( $list ); + } + } + + /** + * Get the plugin required/recommended text string. + * + * @since 2.5.0 + * + * @param string $required Plugin required setting. + * @return string + */ + protected function get_plugin_advise_type_text( $required ) { + if ( true === $required ) { + return __( 'Required', 'odin' ); + } + + return __( 'Recommended', 'odin' ); + } + + /** + * Get the plugin source type text string. + * + * @since 2.5.0 + * + * @param string $type Plugin type. + * @return string + */ + protected function get_plugin_source_type_text( $type ) { + $string = ''; + + switch ( $type ) { + case 'repo': + $string = __( 'WordPress Repository', 'odin' ); + break; + case 'external': + $string = __( 'External Source', 'odin' ); + break; + case 'bundled': + $string = __( 'Pre-Packaged', 'odin' ); + break; + } + + return $string; + } + + /** + * Determine the plugin status message. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string + */ + protected function get_plugin_status_text( $slug ) { + if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) { + return __( 'Not Installed', 'odin' ); + } + + if ( ! $this->tgmpa->is_plugin_active( $slug ) ) { + $install_status = __( 'Installed But Not Activated', 'odin' ); + } else { + $install_status = __( 'Active', 'odin' ); + } + + $update_status = ''; + + if ( $this->tgmpa->does_plugin_require_update( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) { + $update_status = __( 'Required Update not Available', 'odin' ); + + } elseif ( $this->tgmpa->does_plugin_require_update( $slug ) ) { + $update_status = __( 'Requires Update', 'odin' ); + + } elseif ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) { + $update_status = __( 'Update recommended', 'odin' ); + } + + if ( '' === $update_status ) { + return $install_status; + } + + return sprintf( + /* translators: 1: install status, 2: update status */ + _x( '%1$s, %2$s', 'Install/Update Status', 'odin' ), + $install_status, + $update_status + ); + } + + /** + * Sort plugins by Required/Recommended type and by alphabetical plugin name within each type. + * + * @since 2.5.0 + * + * @param array $items Prepared table items. + * @return array Sorted table items. + */ + public function sort_table_items( $items ) { + $type = array(); + $name = array(); + + foreach ( $items as $i => $plugin ) { + $type[ $i ] = $plugin['type']; // Required / recommended. + $name[ $i ] = $plugin['sanitized_plugin']; + } + + array_multisort( $type, SORT_DESC, $name, SORT_ASC, $items ); + + return $items; + } + + /** + * Get an associative array ( id => link ) of the views available on this table. + * + * @since 2.5.0 + * + * @return array + */ + public function get_views() { + $status_links = array(); + + foreach ( $this->view_totals as $type => $count ) { + if ( $count < 1 ) { + continue; + } + + switch ( $type ) { + case 'all': + /* translators: 1: number of plugins. */ + $text = _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $count, 'plugins', 'odin' ); + break; + case 'install': + /* translators: 1: number of plugins. */ + $text = _n( 'To Install <span class="count">(%s)</span>', 'To Install <span class="count">(%s)</span>', $count, 'odin' ); + break; + case 'update': + /* translators: 1: number of plugins. */ + $text = _n( 'Update Available <span class="count">(%s)</span>', 'Update Available <span class="count">(%s)</span>', $count, 'odin' ); + break; + case 'activate': + /* translators: 1: number of plugins. */ + $text = _n( 'To Activate <span class="count">(%s)</span>', 'To Activate <span class="count">(%s)</span>', $count, 'odin' ); + break; + default: + $text = ''; + break; + } + + if ( ! empty( $text ) ) { + + $status_links[ $type ] = sprintf( + '<a href="%s"%s>%s</a>', + esc_url( $this->tgmpa->get_tgmpa_status_url( $type ) ), + ( $type === $this->view_context ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + /** + * Create default columns to display important plugin information + * like type, action and status. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @param string $column_name The name of the column. + * @return string + */ + public function column_default( $item, $column_name ) { + return $item[ $column_name ]; + } + + /** + * Required for bulk installing. + * + * Adds a checkbox for each plugin. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @return string The input checkbox with all necessary info. + */ + public function column_cb( $item ) { + return sprintf( + '<input type="checkbox" name="%1$s[]" value="%2$s" id="%3$s" />', + esc_attr( $this->_args['singular'] ), + esc_attr( $item['slug'] ), + esc_attr( $item['sanitized_plugin'] ) + ); + } + + /** + * Create default title column along with the action links. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @return string The plugin name and action links. + */ + public function column_plugin( $item ) { + return sprintf( + '%1$s %2$s', + $item['plugin'], + $this->row_actions( $this->get_row_actions( $item ), true ) + ); + } + + /** + * Create version information column. + * + * @since 2.5.0 + * + * @param array $item Array of item data. + * @return string HTML-formatted version information. + */ + public function column_version( $item ) { + $output = array(); + + if ( $this->tgmpa->is_plugin_installed( $item['slug'] ) ) { + $installed = ! empty( $item['installed_version'] ) ? $item['installed_version'] : _x( 'unknown', 'as in: "version nr unknown"', 'odin' ); + + $color = ''; + if ( ! empty( $item['minimum_version'] ) && $this->tgmpa->does_plugin_require_update( $item['slug'] ) ) { + $color = ' color: #ff0000; font-weight: bold;'; + } + + $output[] = sprintf( + '<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Installed version:', 'odin' ) . '</p>', + $color, + $installed + ); + } + + if ( ! empty( $item['minimum_version'] ) ) { + $output[] = sprintf( + '<p><span style="min-width: 32px; text-align: right; float: right;">%1$s</span>' . __( 'Minimum required version:', 'odin' ) . '</p>', + $item['minimum_version'] + ); + } + + if ( ! empty( $item['available_version'] ) ) { + $color = ''; + if ( ! empty( $item['minimum_version'] ) && version_compare( $item['available_version'], $item['minimum_version'], '>=' ) ) { + $color = ' color: #71C671; font-weight: bold;'; + } + + $output[] = sprintf( + '<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Available version:', 'odin' ) . '</p>', + $color, + $item['available_version'] + ); + } + + if ( empty( $output ) ) { + return ' '; // Let's not break the table layout. + } else { + return implode( "\n", $output ); + } + } + + /** + * Sets default message within the plugins table if no plugins + * are left for interaction. + * + * Hides the menu item to prevent the user from clicking and + * getting a permissions error. + * + * @since 2.2.0 + */ + public function no_items() { + echo esc_html__( 'No plugins to install, update or activate.', 'odin' ) . ' <a href="' . esc_url( self_admin_url() ) . '"> ' . esc_html__( 'Return to the Dashboard', 'odin' ) . '</a>'; + echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>'; + } + + /** + * Output all the column information within the table. + * + * @since 2.2.0 + * + * @return array $columns The column names. + */ + public function get_columns() { + $columns = array( + 'cb' => '<input type="checkbox" />', + 'plugin' => __( 'Plugin', 'odin' ), + 'source' => __( 'Source', 'odin' ), + 'type' => __( 'Type', 'odin' ), + ); + + if ( 'all' === $this->view_context || 'update' === $this->view_context ) { + $columns['version'] = __( 'Version', 'odin' ); + $columns['status'] = __( 'Status', 'odin' ); + } + + return apply_filters( 'tgmpa_table_columns', $columns ); + } + + /** + * Get name of default primary column + * + * @since 2.5.0 / WP 4.3+ compatibility + * @access protected + * + * @return string + */ + protected function get_default_primary_column_name() { + return 'plugin'; + } + + /** + * Get the name of the primary column. + * + * @since 2.5.0 / WP 4.3+ compatibility + * @access protected + * + * @return string The name of the primary column. + */ + protected function get_primary_column_name() { + if ( method_exists( 'WP_List_Table', 'get_primary_column_name' ) ) { + return parent::get_primary_column_name(); + } else { + return $this->get_default_primary_column_name(); + } + } + + /** + * Get the actions which are relevant for a specific plugin row. + * + * @since 2.5.0 + * + * @param array $item Array of item data. + * @return array Array with relevant action links. + */ + protected function get_row_actions( $item ) { + $actions = array(); + $action_links = array(); + + // Display the 'Install' action link if the plugin is not yet available. + if ( ! $this->tgmpa->is_plugin_installed( $item['slug'] ) ) { + /* translators: %2$s: plugin name in screen reader markup */ + $actions['install'] = __( 'Install %2$s', 'odin' ); + } else { + // Display the 'Update' action link if an update is available and WP complies with plugin minimum. + if ( false !== $this->tgmpa->does_plugin_have_update( $item['slug'] ) && $this->tgmpa->can_plugin_update( $item['slug'] ) ) { + /* translators: %2$s: plugin name in screen reader markup */ + $actions['update'] = __( 'Update %2$s', 'odin' ); + } + + // Display the 'Activate' action link, but only if the plugin meets the minimum version. + if ( $this->tgmpa->can_plugin_activate( $item['slug'] ) ) { + /* translators: %2$s: plugin name in screen reader markup */ + $actions['activate'] = __( 'Activate %2$s', 'odin' ); + } + } + + // Create the actual links. + foreach ( $actions as $action => $text ) { + $nonce_url = wp_nonce_url( + add_query_arg( + array( + 'plugin' => urlencode( $item['slug'] ), + 'tgmpa-' . $action => $action . '-plugin', + ), + $this->tgmpa->get_tgmpa_url() + ), + 'tgmpa-' . $action, + 'tgmpa-nonce' + ); + + $action_links[ $action ] = sprintf( + '<a href="%1$s">' . esc_html( $text ) . '</a>', // $text contains the second placeholder. + esc_url( $nonce_url ), + '<span class="screen-reader-text">' . esc_html( $item['sanitized_plugin'] ) . '</span>' + ); + } + + $prefix = ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN ) ? 'network_admin_' : ''; + return apply_filters( "tgmpa_{$prefix}plugin_action_links", array_filter( $action_links ), $item['slug'], $item, $this->view_context ); + } + + /** + * Generates content for a single row of the table. + * + * @since 2.5.0 + * + * @param object $item The current item. + */ + public function single_row( $item ) { + parent::single_row( $item ); + + /** + * Fires after each specific row in the TGMPA Plugins list table. + * + * The dynamic portion of the hook name, `$item['slug']`, refers to the slug + * for the plugin. + * + * @since 2.5.0 + */ + do_action( "tgmpa_after_plugin_row_{$item['slug']}", $item['slug'], $item, $this->view_context ); + } + + /** + * Show the upgrade notice below a plugin row if there is one. + * + * @since 2.5.0 + * + * @see /wp-admin/includes/update.php + * + * @param string $slug Plugin slug. + * @param array $item The information available in this table row. + * @return null Return early if upgrade notice is empty. + */ + public function wp_plugin_update_row( $slug, $item ) { + if ( empty( $item['upgrade_notice'] ) ) { + return; + } + + echo ' + <tr class="plugin-update-tr"> + <td colspan="', absint( $this->get_column_count() ), '" class="plugin-update colspanchange"> + <div class="update-message">', + esc_html__( 'Upgrade message from the plugin author:', 'odin' ), + ' <strong>', wp_kses_data( $item['upgrade_notice'] ), '</strong> + </div> + </td> + </tr>'; + } + + /** + * Extra controls to be displayed between bulk actions and pagination. + * + * @since 2.5.0 + * + * @param string $which 'top' or 'bottom' table navigation. + */ + public function extra_tablenav( $which ) { + if ( 'bottom' === $which ) { + $this->tgmpa->show_tgmpa_version(); + } + } + + /** + * Defines the bulk actions for handling registered plugins. + * + * @since 2.2.0 + * + * @return array $actions The bulk actions for the plugin install table. + */ + public function get_bulk_actions() { + + $actions = array(); + + if ( 'update' !== $this->view_context && 'activate' !== $this->view_context ) { + if ( current_user_can( 'install_plugins' ) ) { + $actions['tgmpa-bulk-install'] = __( 'Install', 'odin' ); + } + } + + if ( 'install' !== $this->view_context ) { + if ( current_user_can( 'update_plugins' ) ) { + $actions['tgmpa-bulk-update'] = __( 'Update', 'odin' ); + } + if ( current_user_can( 'activate_plugins' ) ) { + $actions['tgmpa-bulk-activate'] = __( 'Activate', 'odin' ); + } + } + + return $actions; + } + + /** + * Processes bulk installation and activation actions. + * + * The bulk installation process looks for the $_POST information and passes that + * through if a user has to use WP_Filesystem to enter their credentials. + * + * @since 2.2.0 + */ + public function process_bulk_actions() { + // Bulk installation process. + if ( 'tgmpa-bulk-install' === $this->current_action() || 'tgmpa-bulk-update' === $this->current_action() ) { + + check_admin_referer( 'bulk-' . $this->_args['plural'] ); + + $install_type = 'install'; + if ( 'tgmpa-bulk-update' === $this->current_action() ) { + $install_type = 'update'; + } + + $plugins_to_install = array(); + + // Did user actually select any plugins to install/update ? + if ( empty( $_POST['plugin'] ) ) { + if ( 'install' === $install_type ) { + $message = __( 'No plugins were selected to be installed. No action taken.', 'odin' ); + } else { + $message = __( 'No plugins were selected to be updated. No action taken.', 'odin' ); + } + + echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>'; + + return false; + } + + if ( is_array( $_POST['plugin'] ) ) { + $plugins_to_install = (array) $_POST['plugin']; + } elseif ( is_string( $_POST['plugin'] ) ) { + // Received via Filesystem page - un-flatten array (WP bug #19643). + $plugins_to_install = explode( ',', $_POST['plugin'] ); + } + + // Sanitize the received input. + $plugins_to_install = array_map( 'urldecode', $plugins_to_install ); + $plugins_to_install = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins_to_install ); + + // Validate the received input. + foreach ( $plugins_to_install as $key => $slug ) { + // Check if the plugin was registered with TGMPA and remove if not. + if ( ! isset( $this->tgmpa->plugins[ $slug ] ) ) { + unset( $plugins_to_install[ $key ] ); + continue; + } + + // For install: make sure this is a plugin we *can* install and not one already installed. + if ( 'install' === $install_type && true === $this->tgmpa->is_plugin_installed( $slug ) ) { + unset( $plugins_to_install[ $key ] ); + } + + // For updates: make sure this is a plugin we *can* update (update available and WP version ok). + if ( 'update' === $install_type && false === $this->tgmpa->is_plugin_updatetable( $slug ) ) { + unset( $plugins_to_install[ $key ] ); + } + } + + // No need to proceed further if we have no plugins to handle. + if ( empty( $plugins_to_install ) ) { + if ( 'install' === $install_type ) { + $message = __( 'No plugins are available to be installed at this time.', 'odin' ); + } else { + $message = __( 'No plugins are available to be updated at this time.', 'odin' ); + } + + echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>'; + + return false; + } + + // Pass all necessary information if WP_Filesystem is needed. + $url = wp_nonce_url( + $this->tgmpa->get_tgmpa_url(), + 'bulk-' . $this->_args['plural'] + ); + + // Give validated data back to $_POST which is the only place the filesystem looks for extra fields. + $_POST['plugin'] = implode( ',', $plugins_to_install ); // Work around for WP bug #19643. + + $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. + $fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem. + + if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) { + return true; // Stop the normal page form from displaying, credential request form will be shown. + } + + // Now we have some credentials, setup WP_Filesystem. + if ( ! WP_Filesystem( $creds ) ) { + // Our credentials were no good, ask the user for them again. + request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields ); + + return true; + } + + /* If we arrive here, we have the filesystem */ + + // Store all information in arrays since we are processing a bulk installation. + $names = array(); + $sources = array(); // Needed for installs. + $file_paths = array(); // Needed for upgrades. + $to_inject = array(); // Information to inject into the update_plugins transient. + + // Prepare the data for validated plugins for the install/upgrade. + foreach ( $plugins_to_install as $slug ) { + $name = $this->tgmpa->plugins[ $slug ]['name']; + $source = $this->tgmpa->get_download_url( $slug ); + + if ( ! empty( $name ) && ! empty( $source ) ) { + $names[] = $name; + + switch ( $install_type ) { + + case 'install': + $sources[] = $source; + break; + + case 'update': + $file_paths[] = $this->tgmpa->plugins[ $slug ]['file_path']; + $to_inject[ $slug ] = $this->tgmpa->plugins[ $slug ]; + $to_inject[ $slug ]['source'] = $source; + break; + } + } + } + unset( $slug, $name, $source ); + + // Create a new instance of TGMPA_Bulk_Installer. + $installer = new TGMPA_Bulk_Installer( + new TGMPA_Bulk_Installer_Skin( + array( + 'url' => esc_url_raw( $this->tgmpa->get_tgmpa_url() ), + 'nonce' => 'bulk-' . $this->_args['plural'], + 'names' => $names, + 'install_type' => $install_type, + ) + ) + ); + + // Wrap the install process with the appropriate HTML. + echo '<div class="tgmpa">', + '<h2 style="font-size: 23px; font-weight: 400; line-height: 29px; margin: 0; padding: 9px 15px 4px 0;">', esc_html( get_admin_page_title() ), '</h2> + <div class="update-php" style="width: 100%; height: 98%; min-height: 850px; padding-top: 1px;">'; + + // Process the bulk installation submissions. + add_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1, 3 ); + + if ( 'tgmpa-bulk-update' === $this->current_action() ) { + // Inject our info into the update transient. + $this->tgmpa->inject_update_info( $to_inject ); + + $installer->bulk_upgrade( $file_paths ); + } else { + $installer->bulk_install( $sources ); + } + + remove_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1 ); + + echo '</div></div>'; + + return true; + } + + // Bulk activation process. + if ( 'tgmpa-bulk-activate' === $this->current_action() ) { + check_admin_referer( 'bulk-' . $this->_args['plural'] ); + + // Did user actually select any plugins to activate ? + if ( empty( $_POST['plugin'] ) ) { + echo '<div id="message" class="error"><p>', esc_html__( 'No plugins were selected to be activated. No action taken.', 'odin' ), '</p></div>'; + + return false; + } + + // Grab plugin data from $_POST. + $plugins = array(); + if ( isset( $_POST['plugin'] ) ) { + $plugins = array_map( 'urldecode', (array) $_POST['plugin'] ); + $plugins = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins ); + } + + $plugins_to_activate = array(); + $plugin_names = array(); + + // Grab the file paths for the selected & inactive plugins from the registration array. + foreach ( $plugins as $slug ) { + if ( $this->tgmpa->can_plugin_activate( $slug ) ) { + $plugins_to_activate[] = $this->tgmpa->plugins[ $slug ]['file_path']; + $plugin_names[] = $this->tgmpa->plugins[ $slug ]['name']; + } + } + unset( $slug ); + + // Return early if there are no plugins to activate. + if ( empty( $plugins_to_activate ) ) { + echo '<div id="message" class="error"><p>', esc_html__( 'No plugins are available to be activated at this time.', 'odin' ), '</p></div>'; + + return false; + } + + // Now we are good to go - let's start activating plugins. + $activate = activate_plugins( $plugins_to_activate ); + + if ( is_wp_error( $activate ) ) { + echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>'; + } else { + $count = count( $plugin_names ); // Count so we can use _n function. + $plugin_names = array_map( array( 'TGMPA_Utils', 'wrap_in_strong' ), $plugin_names ); + $last_plugin = array_pop( $plugin_names ); // Pop off last name to prep for readability. + $imploded = empty( $plugin_names ) ? $last_plugin : ( implode( ', ', $plugin_names ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'odin' ) . ' ' . $last_plugin ); + + printf( // WPCS: xss ok. + '<div id="message" class="updated"><p>%1$s %2$s.</p></div>', + esc_html( _n( 'The following plugin was activated successfully:', 'The following plugins were activated successfully:', $count, 'odin' ) ), + $imploded + ); + + // Update recently activated plugins option. + $recent = (array) get_option( 'recently_activated' ); + foreach ( $plugins_to_activate as $plugin => $time ) { + if ( isset( $recent[ $plugin ] ) ) { + unset( $recent[ $plugin ] ); + } + } + update_option( 'recently_activated', $recent ); + } + + unset( $_POST ); // Reset the $_POST variable in case user wants to perform one action after another. + + return true; + } + + return false; + } + + /** + * Prepares all of our information to be outputted into a usable table. + * + * @since 2.2.0 + */ + public function prepare_items() { + $columns = $this->get_columns(); // Get all necessary column information. + $hidden = array(); // No columns to hide, but we must set as an array. + $sortable = array(); // No reason to make sortable columns. + $primary = $this->get_primary_column_name(); // Column which has the row actions. + $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); // Get all necessary column headers. + + // Process our bulk activations here. + if ( 'tgmpa-bulk-activate' === $this->current_action() ) { + $this->process_bulk_actions(); + } + + // Store all of our plugin data into $items array so WP_List_Table can use it. + $this->items = apply_filters( 'tgmpa_table_data_items', $this->_gather_plugin_data() ); + } + + /* *********** DEPRECATED METHODS *********** */ + + /** + * Retrieve plugin data, given the plugin name. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see TGM_Plugin_Activation::_get_plugin_data_from_name()} instead. + * @see TGM_Plugin_Activation::_get_plugin_data_from_name() + * + * @param string $name Name of the plugin, as it was registered. + * @param string $data Optional. Array key of plugin data to return. Default is slug. + * @return string|boolean Plugin slug if found, false otherwise. + */ + protected function _get_plugin_data_from_name( $name, $data = 'slug' ) { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'TGM_Plugin_Activation::_get_plugin_data_from_name()' ); + + return $this->tgmpa->_get_plugin_data_from_name( $name, $data ); + } + } +} + + +if ( ! class_exists( 'TGM_Bulk_Installer' ) ) { + + /** + * Hack: Prevent TGMPA v2.4.1- bulk installer class from being loaded if 2.4.1- is loaded after 2.5+. + * + * @since 2.5.2 + * + * {@internal The TGMPA_Bulk_Installer class was originally called TGM_Bulk_Installer. + * For more information, see that class.}} + */ + class TGM_Bulk_Installer { + } +} +if ( ! class_exists( 'TGM_Bulk_Installer_Skin' ) ) { + + /** + * Hack: Prevent TGMPA v2.4.1- bulk installer skin class from being loaded if 2.4.1- is loaded after 2.5+. + * + * @since 2.5.2 + * + * {@internal The TGMPA_Bulk_Installer_Skin class was originally called TGM_Bulk_Installer_Skin. + * For more information, see that class.}} + */ + class TGM_Bulk_Installer_Skin { + } +} + +/** + * The WP_Upgrader file isn't always available. If it isn't available, + * we load it here. + * + * We check to make sure no action or activation keys are set so that WordPress + * does not try to re-include the class when processing upgrades or installs outside + * of the class. + * + * @since 2.2.0 + */ +add_action( 'admin_init', 'tgmpa_load_bulk_installer' ); +if ( ! function_exists( 'tgmpa_load_bulk_installer' ) ) { + /** + * Load bulk installer + */ + function tgmpa_load_bulk_installer() { + // Silently fail if 2.5+ is loaded *after* an older version. + if ( ! isset( $GLOBALS['tgmpa'] ) ) { + return; + } + + // Get TGMPA class instance. + $tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + if ( isset( $_GET['page'] ) && $tgmpa_instance->menu === $_GET['page'] ) { + if ( ! class_exists( 'Plugin_Upgrader', false ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + if ( ! class_exists( 'TGMPA_Bulk_Installer' ) ) { + + /** + * Installer class to handle bulk plugin installations. + * + * Extends WP_Upgrader and customizes to suit the installation of multiple + * plugins. + * + * @since 2.2.0 + * + * {@internal Since 2.5.0 the class is an extension of Plugin_Upgrader rather than WP_Upgrader.}} + * {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer to TGMPA_Bulk_Installer. + * This was done to prevent backward compatibility issues with v2.3.6.}} + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_Bulk_Installer extends Plugin_Upgrader { + /** + * Holds result of bulk plugin installation. + * + * @since 2.2.0 + * + * @var string + */ + public $result; + + /** + * Flag to check if bulk installation is occurring or not. + * + * @since 2.2.0 + * + * @var boolean + */ + public $bulk = false; + + /** + * TGMPA instance + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * Whether or not the destination directory needs to be cleared ( = on update). + * + * @since 2.5.0 + * + * @var bool + */ + protected $clear_destination = false; + + /** + * References parent constructor and sets defaults for class. + * + * @since 2.2.0 + * + * @param \Bulk_Upgrader_Skin|null $skin Installer skin. + */ + public function __construct( $skin = null ) { + // Get TGMPA class instance. + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + parent::__construct( $skin ); + + if ( isset( $this->skin->options['install_type'] ) && 'update' === $this->skin->options['install_type'] ) { + $this->clear_destination = true; + } + + if ( $this->tgmpa->is_automatic ) { + $this->activate_strings(); + } + + add_action( 'upgrader_process_complete', array( $this->tgmpa, 'populate_file_path' ) ); + } + + /** + * Sets the correct activation strings for the installer skin to use. + * + * @since 2.2.0 + */ + public function activate_strings() { + $this->strings['activation_failed'] = __( 'Plugin activation failed.', 'odin' ); + $this->strings['activation_success'] = __( 'Plugin activated successfully.', 'odin' ); + } + + /** + * Performs the actual installation of each plugin. + * + * @since 2.2.0 + * + * @see WP_Upgrader::run() + * + * @param array $options The installation config options. + * @return null|array Return early if error, array of installation data on success. + */ + public function run( $options ) { + $result = parent::run( $options ); + + // Reset the strings in case we changed one during automatic activation. + if ( $this->tgmpa->is_automatic ) { + if ( 'update' === $this->skin->options['install_type'] ) { + $this->upgrade_strings(); + } else { + $this->install_strings(); + } + } + + return $result; + } + + /** + * Processes the bulk installation of plugins. + * + * @since 2.2.0 + * + * {@internal This is basically a near identical copy of the WP Core + * Plugin_Upgrader::bulk_upgrade() method, with minor adjustments to deal with + * new installs instead of upgrades. + * For ease of future synchronizations, the adjustments are clearly commented, but no other + * comments are added. Code style has been made to comply.}} + * + * @see Plugin_Upgrader::bulk_upgrade() + * @see https://core.trac.wordpress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L838 + * (@internal Last synced: Dec 31st 2015 against https://core.trac.wordpress.org/browser/trunk?rev=36134}} + * + * @param array $plugins The plugin sources needed for installation. + * @param array $args Arbitrary passed extra arguments. + * @return array|false Install confirmation messages on success, false on failure. + */ + public function bulk_install( $plugins, $args = array() ) { + // [TGMPA + ] Hook auto-activation in. + add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->bulk = true; + + $this->install_strings(); // [TGMPA + ] adjusted. + + /* [TGMPA - ] $current = get_site_transient( 'update_plugins' ); */ + + /* [TGMPA - ] add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); */ + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + /* + * Only start maintenance mode if: + * - running Multisite and there are one or more plugins specified, OR + * - a plugin with an update available is currently active. + * @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible. + */ + $maintenance = ( is_multisite() && ! empty( $plugins ) ); + + /* + [TGMPA - ] + foreach ( $plugins as $plugin ) + $maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) ); + */ + if ( $maintenance ) { + $this->maintenance_mode( true ); + } + + $results = array(); + + $this->update_count = count( $plugins ); + $this->update_current = 0; + foreach ( $plugins as $plugin ) { + $this->update_current++; + + /* + [TGMPA - ] + $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); + + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->set_result('up_to_date'); + $this->skin->before(); + $this->skin->feedback('up_to_date'); + $this->skin->after(); + $results[$plugin] = true; + continue; + } + + // Get the URL to the zip file. + $r = $current->response[ $plugin ]; + + $this->skin->plugin_active = is_plugin_active($plugin); + */ + + $result = $this->run( + array( + 'package' => $plugin, // [TGMPA + ] adjusted. + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => false, // [TGMPA + ] adjusted. + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'plugin' => $plugin, + ), + ) + ); + + $results[ $plugin ] = $this->result; + + // Prevent credentials auth screen from displaying multiple times. + if ( false === $result ) { + break; + } + } //end foreach $plugins + + $this->maintenance_mode( false ); + + /** + * Fires when the bulk upgrader process is complete. + * + * @since WP 3.6.0 / TGMPA 2.5.0 + * + * @param Plugin_Upgrader $this Plugin_Upgrader instance. In other contexts, $this, might + * be a Theme_Upgrader or Core_Upgrade instance. + * @param array $data { + * Array of bulk item update data. + * + * @type string $action Type of action. Default 'update'. + * @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'. + * @type bool $bulk Whether the update process is a bulk update. Default true. + * @type array $packages Array of plugin, theme, or core packages to update. + * } + */ + do_action( 'upgrader_process_complete', $this, array( + 'action' => 'install', // [TGMPA + ] adjusted. + 'type' => 'plugin', + 'bulk' => true, + 'plugins' => $plugins, + ) ); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + /* [TGMPA - ] remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); */ + + // [TGMPA + ] Remove our auto-activation hook. + remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + // Force refresh of plugin update information. + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + + return $results; + } + + /** + * Handle a bulk upgrade request. + * + * @since 2.5.0 + * + * @see Plugin_Upgrader::bulk_upgrade() + * + * @param array $plugins The local WP file_path's of the plugins which should be upgraded. + * @param array $args Arbitrary passed extra arguments. + * @return string|bool Install confirmation messages on success, false on failure. + */ + public function bulk_upgrade( $plugins, $args = array() ) { + + add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + $result = parent::bulk_upgrade( $plugins, $args ); + + remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + return $result; + } + + /** + * Abuse a filter to auto-activate plugins after installation. + * + * Hooked into the 'upgrader_post_install' filter hook. + * + * @since 2.5.0 + * + * @param bool $bool The value we need to give back (true). + * @return bool + */ + public function auto_activate( $bool ) { + // Only process the activation of installed plugins if the automatic flag is set to true. + if ( $this->tgmpa->is_automatic ) { + // Flush plugins cache so the headers of the newly installed plugins will be read correctly. + wp_clean_plugins_cache(); + + // Get the installed plugin file. + $plugin_info = $this->plugin_info(); + + // Don't try to activate on upgrade of active plugin as WP will do this already. + if ( ! is_plugin_active( $plugin_info ) ) { + $activate = activate_plugin( $plugin_info ); + + // Adjust the success string based on the activation result. + $this->strings['process_success'] = $this->strings['process_success'] . "<br />\n"; + + if ( is_wp_error( $activate ) ) { + $this->skin->error( $activate ); + $this->strings['process_success'] .= $this->strings['activation_failed']; + } else { + $this->strings['process_success'] .= $this->strings['activation_success']; + } + } + } + + return $bool; + } + } + } + + if ( ! class_exists( 'TGMPA_Bulk_Installer_Skin' ) ) { + + /** + * Installer skin to set strings for the bulk plugin installations.. + * + * Extends Bulk_Upgrader_Skin and customizes to suit the installation of multiple + * plugins. + * + * @since 2.2.0 + * + * {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer_Skin to + * TGMPA_Bulk_Installer_Skin. + * This was done to prevent backward compatibility issues with v2.3.6.}} + * + * @see https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_Bulk_Installer_Skin extends Bulk_Upgrader_Skin { + /** + * Holds plugin info for each individual plugin installation. + * + * @since 2.2.0 + * + * @var array + */ + public $plugin_info = array(); + + /** + * Holds names of plugins that are undergoing bulk installations. + * + * @since 2.2.0 + * + * @var array + */ + public $plugin_names = array(); + + /** + * Integer to use for iteration through each plugin installation. + * + * @since 2.2.0 + * + * @var integer + */ + public $i = 0; + + /** + * TGMPA instance + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * Constructor. Parses default args with new ones and extracts them for use. + * + * @since 2.2.0 + * + * @param array $args Arguments to pass for use within the class. + */ + public function __construct( $args = array() ) { + // Get TGMPA class instance. + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + // Parse default and new args. + $defaults = array( + 'url' => '', + 'nonce' => '', + 'names' => array(), + 'install_type' => 'install', + ); + $args = wp_parse_args( $args, $defaults ); + + // Set plugin names to $this->plugin_names property. + $this->plugin_names = $args['names']; + + // Extract the new args. + parent::__construct( $args ); + } + + /** + * Sets install skin strings for each individual plugin. + * + * Checks to see if the automatic activation flag is set and uses the + * the proper strings accordingly. + * + * @since 2.2.0 + */ + public function add_strings() { + if ( 'update' === $this->options['install_type'] ) { + parent::add_strings(); + /* translators: 1: plugin name, 2: action number 3: total number of actions. */ + $this->upgrader->strings['skin_before_update_header'] = __( 'Updating Plugin %1$s (%2$d/%3$d)', 'odin' ); + } else { + /* translators: 1: plugin name, 2: error message. */ + $this->upgrader->strings['skin_update_failed_error'] = __( 'An error occurred while installing %1$s: <strong>%2$s</strong>.', 'odin' ); + /* translators: 1: plugin name. */ + $this->upgrader->strings['skin_update_failed'] = __( 'The installation of %1$s failed.', 'odin' ); + + if ( $this->tgmpa->is_automatic ) { + // Automatic activation strings. + $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation and activation process is starting. This process may take a while on some hosts, so please be patient.', 'odin' ); + /* translators: 1: plugin name. */ + $this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'odin' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'odin' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'odin' ) . '</span>.</a>'; + $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations and activations have been completed.', 'odin' ); + /* translators: 1: plugin name, 2: action number 3: total number of actions. */ + $this->upgrader->strings['skin_before_update_header'] = __( 'Installing and Activating Plugin %1$s (%2$d/%3$d)', 'odin' ); + } else { + // Default installation strings. + $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation process is starting. This process may take a while on some hosts, so please be patient.', 'odin' ); + /* translators: 1: plugin name. */ + $this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'odin' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'odin' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'odin' ) . '</span>.</a>'; + $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations have been completed.', 'odin' ); + /* translators: 1: plugin name, 2: action number 3: total number of actions. */ + $this->upgrader->strings['skin_before_update_header'] = __( 'Installing Plugin %1$s (%2$d/%3$d)', 'odin' ); + } + } + } + + /** + * Outputs the header strings and necessary JS before each plugin installation. + * + * @since 2.2.0 + * + * @param string $title Unused in this implementation. + */ + public function before( $title = '' ) { + if ( empty( $title ) ) { + $title = esc_html( $this->plugin_names[ $this->i ] ); + } + parent::before( $title ); + } + + /** + * Outputs the footer strings and necessary JS after each plugin installation. + * + * Checks for any errors and outputs them if they exist, else output + * success strings. + * + * @since 2.2.0 + * + * @param string $title Unused in this implementation. + */ + public function after( $title = '' ) { + if ( empty( $title ) ) { + $title = esc_html( $this->plugin_names[ $this->i ] ); + } + parent::after( $title ); + + $this->i++; + } + + /** + * Outputs links after bulk plugin installation is complete. + * + * @since 2.2.0 + */ + public function bulk_footer() { + // Serve up the string to say installations (and possibly activations) are complete. + parent::bulk_footer(); + + // Flush plugins cache so we can make sure that the installed plugins list is always up to date. + wp_clean_plugins_cache(); + + $this->tgmpa->show_tgmpa_version(); + + // Display message based on if all plugins are now active or not. + $update_actions = array(); + + if ( $this->tgmpa->is_tgmpa_complete() ) { + // All plugins are active, so we display the complete string and hide the menu to protect users. + echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>'; + $update_actions['dashboard'] = sprintf( + esc_html( $this->tgmpa->strings['complete'] ), + '<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'odin' ) . '</a>' + ); + } else { + $update_actions['tgmpa_page'] = '<a href="' . esc_url( $this->tgmpa->get_tgmpa_url() ) . '" target="_parent">' . esc_html( $this->tgmpa->strings['return'] ) . '</a>'; + } + + /** + * Filter the list of action links available following bulk plugin installs/updates. + * + * @since 2.5.0 + * + * @param array $update_actions Array of plugin action links. + * @param array $plugin_info Array of information for the last-handled plugin. + */ + $update_actions = apply_filters( 'tgmpa_update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info ); + + if ( ! empty( $update_actions ) ) { + $this->feedback( implode( ' | ', (array) $update_actions ) ); + } + } + + /* *********** DEPRECATED METHODS *********** */ + + /** + * Flush header output buffer. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead + * @see Bulk_Upgrader_Skin::flush_output() + */ + public function before_flush_output() { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' ); + $this->flush_output(); + } + + /** + * Flush footer output buffer and iterate $this->i to make sure the + * installation strings reference the correct plugin. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead + * @see Bulk_Upgrader_Skin::flush_output() + */ + public function after_flush_output() { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' ); + $this->flush_output(); + $this->i++; + } + } + } + } + } +} + +if ( ! class_exists( 'TGMPA_Utils' ) ) { + + /** + * Generic utilities for TGMPA. + * + * All methods are static, poor-dev name-spacing class wrapper. + * + * Class was called TGM_Utils in 2.5.0 but renamed TGMPA_Utils in 2.5.1 as this was conflicting with Soliloquy. + * + * @since 2.5.0 + * + * @package TGM-Plugin-Activation + * @author Juliette Reinders Folmer + */ + class TGMPA_Utils { + /** + * Whether the PHP filter extension is enabled. + * + * @see http://php.net/book.filter + * + * @since 2.5.0 + * + * @static + * + * @var bool $has_filters True is the extension is enabled. + */ + public static $has_filters; + + /** + * Wrap an arbitrary string in <em> tags. Meant to be used in combination with array_map(). + * + * @since 2.5.0 + * + * @static + * + * @param string $string Text to be wrapped. + * @return string + */ + public static function wrap_in_em( $string ) { + return '<em>' . wp_kses_post( $string ) . '</em>'; + } + + /** + * Wrap an arbitrary string in <strong> tags. Meant to be used in combination with array_map(). + * + * @since 2.5.0 + * + * @static + * + * @param string $string Text to be wrapped. + * @return string + */ + public static function wrap_in_strong( $string ) { + return '<strong>' . wp_kses_post( $string ) . '</strong>'; + } + + /** + * Helper function: Validate a value as boolean + * + * @since 2.5.0 + * + * @static + * + * @param mixed $value Arbitrary value. + * @return bool + */ + public static function validate_bool( $value ) { + if ( ! isset( self::$has_filters ) ) { + self::$has_filters = extension_loaded( 'filter' ); + } + + if ( self::$has_filters ) { + return filter_var( $value, FILTER_VALIDATE_BOOLEAN ); + } else { + return self::emulate_filter_bool( $value ); + } + } + + /** + * Helper function: Cast a value to bool + * + * @since 2.5.0 + * + * @static + * + * @param mixed $value Value to cast. + * @return bool + */ + protected static function emulate_filter_bool( $value ) { + // @codingStandardsIgnoreStart + static $true = array( + '1', + 'true', 'True', 'TRUE', + 'y', 'Y', + 'yes', 'Yes', 'YES', + 'on', 'On', 'ON', + ); + static $false = array( + '0', + 'false', 'False', 'FALSE', + 'n', 'N', + 'no', 'No', 'NO', + 'off', 'Off', 'OFF', + ); + // @codingStandardsIgnoreEnd + + if ( is_bool( $value ) ) { + return $value; + } elseif ( is_int( $value ) && ( 0 === $value || 1 === $value ) ) { + return (bool) $value; + } elseif ( ( is_float( $value ) && ! is_nan( $value ) ) && ( (float) 0 === $value || (float) 1 === $value ) ) { + return (bool) $value; + } elseif ( is_string( $value ) ) { + $value = trim( $value ); + if ( in_array( $value, $true, true ) ) { + return true; + } elseif ( in_array( $value, $false, true ) ) { + return false; + } else { + return false; + } + } + + return false; + } + } // End of class TGMPA_Utils +} // End of class_exists wrapper diff --git a/inc/template-tags.php b/inc/template-tags.php deleted file mode 100644 index 18f2905..0000000 --- a/inc/template-tags.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php -/** - * Custom template tags for Odin. - * - * @package Odin - * @since 2.2.0 - */ - -if ( ! function_exists( 'odin_classes_page_full' ) ) { - - /** - * Classes page full. - * - * @since 2.2.0 - * - * @return string Classes name. - */ - function odin_classes_page_full() { - return 'col-md-12'; - } -} - -if ( ! function_exists( 'odin_classes_page_sidebar' ) ) { - - /** - * Classes page with sidebar. - * - * @since 2.2.0 - * - * @return string Classes name. - */ - function odin_classes_page_sidebar() { - return 'col-md-9'; - } -} - -if ( ! function_exists( 'odin_classes_page_sidebar_aside' ) ) { - - /** - * Classes aside of page with sidebar. - * - * @since 2.2.0 - * - * @return string Classes name. - */ - function odin_classes_page_sidebar_aside() { - return 'col-md-3 hidden-xs hidden-print widget-area'; - } -} - -if ( ! function_exists( 'odin_posted_on' ) ) { - - /** - * Print HTML with meta information for the current post-date/time and author. - * - * @since 2.2.0 - */ - function odin_posted_on() { - if ( is_sticky() && is_home() && ! is_paged() ) { - echo '<span class="featured-post">' . __( 'Sticky', 'odin' ) . ' </span>'; - } - - // Set up and print post meta information. - printf( '<span class="entry-date">%s <time class="entry-date" datetime="%s">%s</time></span> <span class="byline">%s <span class="author vcard"><a class="url fn n" href="%s" rel="author">%s</a></span>.</span>', - __( 'Posted in', 'odin' ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ), - __( 'by', 'odin' ), - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - get_the_author() - ); - } -} - -if ( ! function_exists( 'odin_paging_nav' ) ) { - - /** - * Print HTML with meta information for the current post-date/time and author. - * - * @since 2.2.0 - */ - function odin_paging_nav() { - $mid = 2; // Total of items that will show along with the current page. - $end = 1; // Total of items displayed for the last few pages. - $show = false; // Show all items. - - echo odin_pagination( $mid, $end, false ); - } -} - -if ( ! function_exists( 'odin_the_custom_logo' ) ) { - - /** - * Displays the optional custom logo. - * - * Does nothing if the custom logo is not available. - * - * @since Odin 2.2.10 - */ - function odin_the_custom_logo() { - if ( function_exists( 'the_custom_logo' ) ) { - the_custom_logo(); - } - } -} diff --git a/inc/theme/config.php b/inc/theme/config.php new file mode 100644 index 0000000..dff9438 --- /dev/null +++ b/inc/theme/config.php @@ -0,0 +1,253 @@ +<?php +/** + * Theme Setup. + */ + +/** + * Registers theme support. + * + * @link https://developer.wordpress.org/reference/functions/add_theme_support + */ +if ( ! function_exists( 'odin_theme_support' ) ) { + function odin_theme_support() { + + // Add customize selective refresh widgets. + add_theme_support( 'customize-selective-refresh-widgets' ); + + // Add feed link support. + add_theme_support( 'automatic-feed-links' ); + + // Add support custom background support. + add_theme_support( 'custom-background', array( + 'default-color' => '', + 'default-image' => '', + ) ); + + // Add infinite scroll support. + // add_theme_support( 'infinite-scroll', array( + // 'type' => 'scroll', + // 'footer_widgets' => false, + // 'container' => 'content', + // 'wrapper' => false, + // 'render' => false, + // 'posts_per_page' => get_option( 'posts_per_page' ), + // ) ); + + // Add the excerpt on pages. + // add_post_type_support( 'page', 'excerpt' ); + + // Switch default core markup for search form, comment form, and comments to output valid HTML5. + add_theme_support( 'html5', array( + 'search-form', + 'comment-form', + 'comment-list', + 'gallery', + 'caption', + ) ); + + /** + * Let WordPress manage the document title. + * By adding theme support, we declare that this theme does not use a + * hard-coded <title> tag in the document head, and expect WordPress to + * provide it for us. + */ + add_theme_support( 'title-tag' ); + } +} + +add_action( 'after_setup_theme', 'odin_theme_support' ); + +/** + * Load the theme’s translated strings. + * + * @link https://developer.wordpress.org/reference/functions/load_theme_textdomain/ + */ +if ( ! function_exists( 'odin_theme_setup_language' ) ) { + function odin_theme_setup_language() { + + // Add multiple languages support. + load_theme_textdomain( 'odin', get_template_directory() . '/languages' ); + } +} + +add_action( 'after_setup_theme', 'odin_theme_setup_language' ); + +/** + * Sets the content width in pixels, based on the theme's design and stylesheet. + * + * Priority 0 to make it available to lower priority callbacks. + * + * @global int $content_width + */ +if ( ! function_exists( 'odin_content_width' ) ) { + function odin_content_width() { + $GLOBALS['content_width'] = apply_filters( 'odin_content_width', 730 ); + } +} + +add_action( 'after_setup_theme', 'odin_content_width', 0 ); + +/** + * Odin custom stylesheet URI. + * + * @param string $stylesheet Default URI. + * @param string $stylesheet_dir Stylesheet directory URI. + * @return string New URI. + */ +if ( ! function_exists( 'odin_stylesheet_uri' ) ) { + function odin_stylesheet_uri( $stylesheet, $stylesheet_dir ) { + // Use minified libraries if SCRIPT_DEBUG is turned off. + $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + + $stylesheet = $stylesheet_dir . '/dist/css/theme' . $suffix . '.css'; + return $stylesheet; + } +} + +add_filter( 'stylesheet_uri', 'odin_stylesheet_uri', 10, 2 ); + +/** + * Load scripts and styles. + */ +if ( ! function_exists( 'odin_enqueue_scripts' ) ) { + function odin_enqueue_scripts() { + $template_url = get_template_directory_uri(); + + // Use minified libraries if SCRIPT_DEBUG is turned off. + $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + + // // Deregister core jQuery and register jQuery 3.x. + wp_deregister_script( 'jquery' ); + wp_enqueue_script( 'jquery', '//code.jquery.com/jquery-3.2.1' . $suffix . '.js', array(), '3.2.1' ); + + // // Deregister core jQuery migrate and register jQuery migrate 3.x. + wp_deregister_script( 'jquery-migrate' ); + wp_enqueue_script( 'jquery-migrate', '//code.jquery.com/jquery-migrate-3.0.0' . $suffix . '.js', array( 'jquery' ), '3.0.0' ); + + // Loads main stylesheet file. + wp_enqueue_style( 'odin-theme-style', get_stylesheet_uri() ); + + // Loads main script file. + wp_enqueue_script( 'odin-theme-script', $template_url . '/dist/js/theme' . $suffix . '.js', array( 'jquery' ), null, true ); + + // Load Thread comments WordPress script. + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + } +} + +add_action( 'wp_enqueue_scripts', 'odin_enqueue_scripts', 1 ); + +/** + * Cleanup wp_head(). + */ +function odin_head_cleanup() { + // Category feeds. + // remove_action( 'wp_head', 'feed_links_extra', 3 ); + + // Post and comment feeds. + // remove_action( 'wp_head', 'feed_links', 2 ); + + // EditURI link. + remove_action( 'wp_head', 'rsd_link' ); + + // Windows live writer. + remove_action( 'wp_head', 'wlwmanifest_link' ); + + // Index link. + remove_action( 'wp_head', 'index_rel_link' ); + + // Previous link. + remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); + + // Start link. + remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); + + // Links for adjacent posts. + remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); + + // WP version. + remove_action( 'wp_head', 'wp_generator' ); + + // Emoji's + // remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); + // remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); + // remove_action( 'wp_print_styles', 'print_emoji_styles' ); + // remove_action( 'admin_print_styles', 'print_emoji_styles' ); + // remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); + // remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); + // remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); +} + +add_action( 'init', 'odin_head_cleanup' ); + +/** + * Remove WP version from RSS. + */ +add_filter( 'the_generator', '__return_false' ); + +/** + * Remove injected CSS for recent comments widget. + */ +function odin_remove_wp_widget_recent_comments_style() { + if ( has_filter( 'wp_head', 'wp_widget_recent_comments_style' ) ) { + remove_filter( 'wp_head', 'wp_widget_recent_comments_style' ); + } +} + +add_filter( 'wp_head', 'odin_remove_wp_widget_recent_comments_style', 1); + +/** + * Remove injected CSS from recent comments widget. + */ +function odin_remove_recent_comments_style() { + global $wp_widget_factory; + + if ( isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ) { + remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) ); + } +} + +add_action( 'wp_head', 'odin_remove_recent_comments_style', 1 ); + +/** + * Remove injected CSS from gallery. + */ +add_filter( 'use_default_gallery_style', '__return_false' ); + +/** + * Add rel="nofollow" and remove rel="category". + */ +function odin_modify_category_rel( $text ) { + $search = array( 'rel="category"', 'rel="category tag"' ); + $text = str_replace( $search, 'rel="nofollow"', $text ); + + return $text; +} + +add_filter( 'wp_list_categories', 'odin_modify_category_rel' ); +add_filter( 'the_category', 'odin_modify_category_rel' ); + +/** + * Add rel="nofollow" and remove rel="tag". + */ +function odin_modify_tag_rel( $taglink ) { + return str_replace( 'rel="tag">', 'rel="nofollow">', $taglink ); +} + +add_filter( 'wp_tag_cloud', 'odin_modify_tag_rel' ); +add_filter( 'the_tags', 'odin_modify_tag_rel' ); + +/** + * Filter function used to remove the tinymce emoji plugin. + * + * @param array $plugins + * + * @return array Difference betwen the two arrays + */ +function disable_emojis_tinymce( $plugins ) { + return is_array( $plugins ) ? array_diff( $plugins, array( 'wpemoji' ) ) : array(); +} + +add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); diff --git a/core/helpers.php b/inc/theme/functions.php similarity index 88% rename from core/helpers.php rename to inc/theme/functions.php index debb5ad..83a270e 100644 --- a/core/helpers.php +++ b/inc/theme/functions.php @@ -1,70 +1,33 @@ <?php /** - * Odin Helpers. + * Theme Functions. * - * @package Odin - * @category Odin/Helpers - * @author WPBrasil - * @version 2.2.5 + * @package Odin + * @subpackage Custom_Theme */ /** - * Pagination. + * Get a attachment image URL. * - * @since 2.2.0 + * This funciton required uses class Aq_Resize, to install via composer. * - * @global array $wp_query Current WP Query. - * @global array $wp_rewrite URL rewrite rules. + * @since 3.0.0 * - * @param int $mid Total of items that will show along with the current page. - * @param int $end Total of items displayed for the last few pages. - * @param bool $show Show all items. - * @param mixed $query Custom query. + * @param int|string $attachment Image ID or Url (must be uploaded using wp media uploade). + * @param int $width Image width. + * @param int $height Image height. + * @param bool $crop Image crop. + * @param bool $single Returns an array if false. + * @param bool $upscale Force the resize. * - * @return string Return the pagination. + * @return string|array */ -function odin_pagination( $mid = 2, $end = 1, $show = false, $query = null ) { - - // Prevent show pagination number if Infinite Scroll of JetPack is active. - if ( ! isset( $_GET[ 'infinity' ] ) ) { - - global $wp_query, $wp_rewrite; - - $total_pages = $wp_query->max_num_pages; - - if ( is_object( $query ) && null != $query ) { - $total_pages = $query->max_num_pages; - } - - if ( $total_pages > 1 ) { - $url_base = $wp_rewrite->pagination_base; - $big = 999999999; - - // Sets the paginate_links arguments. - $arguments = apply_filters( 'odin_pagination_args', array( - 'base' => esc_url_raw( str_replace( $big, '%#%', get_pagenum_link( $big, false ) ) ), - 'format' => '', - 'current' => max( 1, get_query_var( 'paged' ) ), - 'total' => $total_pages, - 'show_all' => $show, - 'end_size' => $end, - 'mid_size' => $mid, - 'type' => 'list', - 'prev_text' => __( '« Previous', 'odin' ), - 'next_text' => __( 'Next »', 'odin' ), - ) - ); - - $pagination = '<div class="pagination-wrap">' . paginate_links( $arguments ) . '</div>'; - - // Prevents duplicate bars in the middle of the url. - if ( $url_base ) { - $pagination = str_replace( '//' . $url_base . '/', '/' . $url_base . '/', $pagination ); - } - - return $pagination; - } +function odin_get_attachment_image_src( $attachment = null, $width = null, $height = null, $crop = null, $single = true, $upscale = false ) { + if ( ! class_exists( 'Aq_Resize' ) || ! $attachment ) { + return false; } + + return aq_resize( $attachment, $width, $height, $crop, $single, $upscale ); } /** @@ -436,7 +399,7 @@ function odin_breadcrumbs( $homepage = '' ) { // Gets pagination. if ( get_query_var( 'paged' ) ) { - echo ' (' . sprintf( __( 'Page %s', 'abelman' ), get_query_var( 'paged' ) ) . ')'; + echo ' (' . sprintf( __( 'Page %s', 'odin' ), get_query_var( 'paged' ) ) . ')'; } echo '</ol>'; diff --git a/inc/theme/theme.php b/inc/theme/theme.php new file mode 100644 index 0000000..d426d28 --- /dev/null +++ b/inc/theme/theme.php @@ -0,0 +1,28 @@ +<?php +/** + * Theme functions. + * + * @package Odin + * @subpackage Custom_Theme + */ + +/** + * Config. + */ +require_once get_template_directory() . '/inc/theme/config.php'; + +/** + * Functions. + */ +require_once get_template_directory() . '/inc/theme/functions.php'; + +/** + * Components. + */ +require_once get_template_directory() . '/components/banner/banner.functions.php'; +require_once get_template_directory() . '/components/comments/comments.functions.php'; +require_once get_template_directory() . '/components/footer/footer.functions.php'; +require_once get_template_directory() . '/components/header/header.functions.php'; +require_once get_template_directory() . '/components/post/post.functions.php'; +require_once get_template_directory() . '/components/shared/brand-logo.functions.php'; +require_once get_template_directory() . '/components/sidebar/sidebar.functions.php'; diff --git a/inc/woocommerce/woocommerce.php b/inc/woocommerce/woocommerce.php new file mode 100644 index 0000000..f7ef194 --- /dev/null +++ b/inc/woocommerce/woocommerce.php @@ -0,0 +1,29 @@ +<?php +/** + * WooCommerce Functions. + * + * @package Odin + * @subpackage Custom_Theme + */ + +/** + * Query WooCommerce activation + * + * @return boolean + */ +if ( ! function_exists( 'odin_is_woocommerce_activated' ) ) { + function odin_is_woocommerce_activated() { + return class_exists( 'woocommerce' ) ? true : false; + } +} + +// /** +// * WooCommerce compatibility files. +// */ +// if ( odin_is_woocommerce_activated() ) { +// add_theme_support( 'woocommerce' ); +// require get_template_directory() . '/inc/woocommerce/hooks.php'; +// require get_template_directory() . '/inc/woocommerce/functions.php'; +// require get_template_directory() . '/inc/woocommerce/template-tags.php'; +// } + diff --git a/index.php b/index.php index c53ebb2..058595a 100644 --- a/index.php +++ b/index.php @@ -2,47 +2,33 @@ /** * The main template file. * - * This is the most generic template file in a WordPress theme and one of the - * two required files for a theme (the other being style.css). + * This is the most generic template file in a WordPress theme + * and one of the two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. - * For example, it puts together the home page when no home.php file exists. + * E.g., it puts together the home page when no home.php file exists. * - * @link http://codex.wordpress.org/Template_Hierarchy + * @link https://codex.wordpress.org/Template_Hierarchy * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - - <?php - if ( have_posts() ) : - // Start the Loop. - while ( have_posts() ) : the_post(); - - /* - * Include the post format-specific template for the content. If you want to - * use this in a child theme, then include a file called content-___.php - * (where ___ is the post format) and that will be used instead. - */ - get_template_part( 'content', get_post_format() ); - - endwhile; - - // Post navigation. - odin_paging_nav(); - - else : - // If no content, include the "No posts found" template. - get_template_part( 'content', 'none' ); - - endif; - ?> +/** + * Header Component. + */ +get_header(); - </main><!-- #content --> +/** + * Main Component. + */ +get_template_part( 'components/main/main' ); -<?php +/** + * Sidebar Component. + */ get_sidebar(); + +/** + * Footer Component. + */ get_footer(); diff --git a/languages/odin.pot b/languages/odin.pot new file mode 100644 index 0000000..12d2391 --- /dev/null +++ b/languages/odin.pot @@ -0,0 +1,627 @@ +# <!=Copyright (C) 2018 WordPress Brasil +# This file is distributed under the MIT.=!> +msgid "" +msgstr "" +"Project-Id-Version: Odin 3.0.0\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/style\n" +"POT-Creation-Date: 2018-04-10 22:22:37+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"X-Generator: node-wp-i18n 1.1.0\n" + +#: components/banner/banner.functions.php:25 +msgid "Search Results for: %s" +msgstr "" + +#: components/comments/comments.functions.php:29 +msgid "Pingback:" +msgstr "" + +#: components/comments/comments.functions.php:31 +#: components/comments/comments.functions.php:76 +msgid "Edit" +msgstr "" + +#: components/comments/comments.functions.php:51 +msgid "in" +msgstr "" + +#: components/comments/comments.functions.php:54 +msgid "at" +msgstr "" + +#: components/comments/comments.functions.php:55 +msgid "said:" +msgstr "" + +#: components/comments/comments.functions.php:63 +msgid "Your comment is awaiting moderation." +msgstr "" + +#: components/comments/comments.functions.php:72 +msgid "Respond" +msgstr "" + +#: components/comments/comments.php:31 +msgid "0 Comments" +msgstr "" + +#: components/comments/comments.php:31 +#: components/post/parts/comments-link-post.php:17 +msgid "1 Comment" +msgstr "" + +#: components/comments/comments.php:31 +#: components/post/parts/comments-link-post.php:17 +msgid "% Comments" +msgstr "" + +#: components/comments/comments.php:32 +msgid "to" +msgstr "" + +#: components/comments/comments.php:47 +msgid "← Old Comments" +msgstr "" + +#: components/comments/comments.php:48 +msgid "New Comments →" +msgstr "" + +#: components/comments/comments.php:55 +msgid "Comments closed." +msgstr "" + +#: components/footer/footer.functions.php:22 +msgid "Footer" +msgstr "" + +#: components/footer/footer.functions.php:23 +msgid "Widgets in Footer" +msgstr "" + +#: components/footer/footer.php:26 +msgid "All rights reserved" +msgstr "" + +#: components/form/form-comment.php:19 +msgid "Name" +msgstr "" + +#: components/form/form-comment.php:24 +msgid "E-mail" +msgstr "" + +#: components/form/form-comment.php:29 +msgid "Website" +msgstr "" + +#: components/form/form-comment.php:36 +msgid "Comment" +msgstr "" + +#: components/form/form-search.php:16 components/form/form-search.php:17 +#: components/form/form-search.php:21 +msgid "Search" +msgstr "" + +#: components/main/main-404.php:16 +msgid "Not Found" +msgstr "" + +#: components/main/main-404.php:20 +msgid "It looks like nothing was found at this location. Maybe try a search?" +msgstr "" + +#: components/navigation/navigation-main.php:17 +msgid "Toggle navigation" +msgstr "" + +#: components/navigation/navigation-skiplink.php:14 +#: dist/navigation-skiplink.php:14 +msgid "Skip to content" +msgstr "" + +#: components/page/page.php:39 components/post/post-audio.php:41 +#: components/post/post-gallery.php:36 components/post/post-video.php:41 +#: components/post/post.php:36 +msgid "Continue reading" +msgstr "" + +#: components/pagination/pagination-within-post.php:12 +msgid "Pages:" +msgstr "" + +#: components/post/parts/comments-link-post.php:17 +msgid "Leave a comment" +msgstr "" + +#: components/post/parts/meta-author-post.php:20 +msgid "by" +msgstr "" + +#: components/post/parts/meta-date-post.php:16 +msgid "Posted in" +msgstr "" + +#: components/post/parts/taxonomy-tag-post.php:15 +msgid "Tagged as:" +msgstr "" + +#: components/post/post-none.php:14 +msgid "Nothing Found" +msgstr "" + +#: components/post/post-none.php:20 +msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>." +msgstr "" + +#: components/post/post-none.php:24 +msgid "" +"Sorry, but nothing matched your search terms. Please try again with some " +"different keywords." +msgstr "" + +#: components/post/post-none.php:29 +msgid "" +"It seems we can’t find what you’re looking for. Perhaps " +"searching can help." +msgstr "" + +#: components/sidebar/sidebar.functions.php:22 +msgid "Sidebar" +msgstr "" + +#: components/sidebar/sidebar.functions.php:23 +msgid "Widgets in Sidebar" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:327 +msgid "Install Required Plugins" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:328 +msgid "Install Plugins" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:330 +#. translators: %s: plugin name. +msgid "Installing Plugin: %s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:332 +#. translators: %s: plugin name. +msgid "Updating Plugin: %s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:333 +msgid "Something went wrong with the plugin API." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:370 +#. translators: 1: plugin name(s). +msgid "Begin installing plugin" +msgid_plural "Begin installing plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:375 +msgid "Begin updating plugin" +msgid_plural "Begin updating plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:380 +msgid "Begin activating plugin" +msgid_plural "Begin activating plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:385 +msgid "Return to Required Plugins Installer" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:386 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:827 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2533 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3580 +msgid "Return to the Dashboard" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:387 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3159 +msgid "Plugin activated successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:388 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2952 +msgid "The following plugin was activated successfully:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:390 +#. translators: 1: plugin name. +msgid "No action taken. Plugin %1$s was already active." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:392 +#. translators: 1: plugin name. +msgid "" +"Plugin not activated. A higher version of %s is needed for this theme. " +"Please update the plugin." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:394 +#. translators: 1: dashboard link. +msgid "All plugins installed and activated successfully. %1$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:395 +msgid "Dismiss this notice" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:396 +msgid "" +"There are one or more required or recommended plugins to install, update or " +"activate." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:397 +msgid "Please contact the administrator of this site for help." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:522 +msgid "This plugin needs to be updated to be compatible with your theme." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:523 +msgid "Update Required" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:934 +msgid "" +"The remote plugin package does not contain a folder with the desired slug " +"and renaming did not work." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:934 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:937 +msgid "" +"Please contact the plugin provider and ask them to package their plugin " +"according to the WordPress guidelines." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:937 +msgid "" +"The remote plugin package consists of more than one file, but the files are " +"not packaged in a folder." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:1982 +#. translators: %s: version number +msgid "TGMPA v%s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2273 +msgid "Required" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2276 +msgid "Recommended" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2292 +msgid "WordPress Repository" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2295 +msgid "External Source" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2298 +msgid "Pre-Packaged" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2315 +msgid "Not Installed" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2319 +msgid "Installed But Not Activated" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2321 +msgid "Active" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2327 +msgid "Required Update not Available" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2330 +msgid "Requires Update" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2333 +msgid "Update recommended" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2392 +#. translators: 1: number of plugins. +msgid "To Install <span class=\"count\">(%s)</span>" +msgid_plural "To Install <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2396 +#. translators: 1: number of plugins. +msgid "Update Available <span class=\"count\">(%s)</span>" +msgid_plural "Update Available <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2400 +#. translators: 1: number of plugins. +msgid "To Activate <span class=\"count\">(%s)</span>" +msgid_plural "To Activate <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2490 +msgid "Installed version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2498 +msgid "Minimum required version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2510 +msgid "Available version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2533 +msgid "No plugins to install, update or activate." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2547 +msgid "Plugin" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2548 +msgid "Source" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2549 +msgid "Type" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2553 +msgid "Version" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2554 +msgid "Status" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2603 +#. translators: %2$s: plugin name in screen reader markup +msgid "Install %2$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2608 +#. translators: %2$s: plugin name in screen reader markup +msgid "Update %2$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2614 +#. translators: %2$s: plugin name in screen reader markup +msgid "Activate %2$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2684 +msgid "Upgrade message from the plugin author:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2717 +msgid "Install" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2723 +msgid "Update" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2726 +msgid "Activate" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2757 +msgid "No plugins were selected to be installed. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2759 +msgid "No plugins were selected to be updated. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2800 +msgid "No plugins are available to be installed at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2802 +msgid "No plugins are available to be updated at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2908 +msgid "No plugins were selected to be activated. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2934 +msgid "No plugins are available to be activated at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3158 +msgid "Plugin activation failed." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3498 +#. translators: 1: plugin name, 2: action number 3: total number of actions. +msgid "Updating Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3501 +#. translators: 1: plugin name, 2: error message. +msgid "An error occurred while installing %1$s: <strong>%2$s</strong>." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3503 +#. translators: 1: plugin name. +msgid "The installation of %1$s failed." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3507 +msgid "" +"The installation and activation process is starting. This process may take " +"a while on some hosts, so please be patient." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +#. translators: 1: plugin name. +msgid "%1$s installed and activated successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +msgid "Show Details" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +msgid "Hide Details" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3510 +msgid "All installations and activations have been completed." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3512 +#. translators: 1: plugin name, 2: action number 3: total number of actions. +msgid "Installing and Activating Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3515 +msgid "" +"The installation process is starting. This process may take a while on some " +"hosts, so please be patient." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +#. translators: 1: plugin name. +msgid "%1$s installed successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3518 +msgid "All installations have been completed." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3520 +#. translators: 1: plugin name, 2: action number 3: total number of actions. +msgid "Installing Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#: inc/theme/functions.php:59 +msgid "Related Posts" +msgstr "" + +#: inc/theme/functions.php:195 +msgid "Home" +msgstr "" + +#: inc/theme/functions.php:322 +msgid "%sCategory: %s%s" +msgstr "" + +#: inc/theme/functions.php:326 +msgid "%sTag: %s%s" +msgstr "" + +#: inc/theme/functions.php:341 +msgid "%sSearch result for: "%s"%s" +msgstr "" + +#: inc/theme/functions.php:347 +msgid "Posted by" +msgstr "" + +#: inc/theme/functions.php:397 +msgid "404 Error" +msgstr "" + +#: inc/theme/functions.php:402 +msgid "Page %s" +msgstr "" + +#: inc/woocommerce/template-tags.php:28 +msgid "View your shopping cart" +msgstr "" + +#: inc/woocommerce/template-tags.php:29 +msgid "%d item" +msgid_plural "%d items" +msgstr[0] "" +msgstr[1] "" + +#. Theme Name of the plugin/theme +msgid "Odin" +msgstr "" + +#. Theme URI of the plugin/theme +msgid "http://wpod.in" +msgstr "" + +#. Description of the plugin/theme +msgid "Base Theme for developing WordPress." +msgstr "" + +#. Author of the plugin/theme +msgid "WordPress Brasil" +msgstr "" + +#. Author URI of the plugin/theme +msgid "https://github.com/wpbrasil" +msgstr "" + +#. Template Name of the plugin/theme +msgid "Page Sidebar" +msgstr "" + +#: components/post/parts/taxonomy-category-post.php:17 +msgctxt "Used between list items, there is a space after the comma." +msgid ", " +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:1121 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2948 +msgctxt "plugin A *and* plugin B" +msgid "and" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2342 +#. translators: 1: install status, 2: update status +msgctxt "Install/Update Status" +msgid "%1$s, %2$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2388 +#. translators: 1: number of plugins. +msgctxt "plugins" +msgid "All <span class=\"count\">(%s)</span>" +msgid_plural "All <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2482 +msgctxt "as in: \"version nr unknown\"" +msgid "unknown" +msgstr "" \ No newline at end of file diff --git a/languages/pt_BR.mo b/languages/pt_BR.mo index 0f11837..9d32c1c 100644 Binary files a/languages/pt_BR.mo and b/languages/pt_BR.mo differ diff --git a/languages/pt_BR.po b/languages/pt_BR.po index daad746..689a968 100644 --- a/languages/pt_BR.po +++ b/languages/pt_BR.po @@ -1,644 +1,646 @@ +# <!=Copyright (C) 2018 WordPress Brasil +# This file is distributed under the MIT.=!> msgid "" msgstr "" -"Project-Id-Version: Odin v2.2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-10 07:21-0300\n" -"PO-Revision-Date: 2014-02-10 07:21-0300\n" -"Last-Translator: Rafael Funchal <rafaelfunchal@gmail.com>\n" -"Language-Team: WordPress Brasil Group\n" +"Project-Id-Version: Odin 3.0.0\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/style\n" +"POT-Creation-Date: 2018-04-10 22:22:37+00:00\n" +"PO-Revision-Date: 2018-04-10 19:41-0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" -"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" -"X-Poedit-Basepath: .\n" -"X-Textdomain-Support: yes\n" -"X-Poedit-SearchPath-0: ..\n" - -# @ odin -#: ../404.php:15 -msgid "Not Found" -msgstr "Nada Encontrado" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -# @ odin -#: ../404.php:19 -msgid "It looks like nothing was found at this location. Maybe try a search?" -msgstr "" -"Parece que nada foi encontrado neste local. Talvez tentar uma pesquisa?" - -# @ odin -#: ../archive.php:30 -#, php-format -msgid "Daily Archives: %s" -msgstr "Arquivos Diários: %s" - -# @ odin -#: ../archive.php:33 -#, php-format -msgid "Monthly Archives: %s" -msgstr "Arquivos Mensais: %s" - -# @ odin -#: ../archive.php:33 -msgctxt "monthly archives date format" -msgid "F Y" -msgstr "F Y" - -# @ odin -#: ../archive.php:36 -#, php-format -msgid "Yearly Archives: %s" -msgstr "Arquivos Anuais: %s" - -# @ odin -#: ../archive.php:36 -msgctxt "yearly archives date format" -msgid "Y" -msgstr "Y" - -# @ odin -#: ../archive.php:39 -msgid "Archives" -msgstr "Arquivos" - -# @ odin -#: ../audio.php:24 ../video.php:24 -msgid "URL:" -msgstr "URL:" - -# @ odin -#: ../audio.php:30 ../image.php:40 ../video.php:30 -#, php-format -msgid "Back to %s" -msgstr "Voltar para %s" - -# @ odin -#: ../audio.php:30 ../image.php:40 ../video.php:30 -#, php-format -msgid "<span class=\"meta-nav\">←</span> %s" -msgstr "<span class=\"meta-nav\">←</span> %s" - -# @ odin -#: ../author.php:30 -#, php-format -msgid "All posts by %s" -msgstr "Todas as publicações por %s" - -# @ odin -#: ../category.php:19 -#, php-format -msgid "Category Archives: %s" -msgstr "Arquivo da Categoria: %s" - -# @ odin -#: ../comments.php:13 -msgid "" -"This post is password protected. Enter the password to view all comments." -msgstr "" -"Esse post é protegido por senha. Informe a senha para ver todos os " -"comentários." +#: components/banner/banner.functions.php:25 +msgid "Search Results for: %s" +msgstr "Resultados para: %s" -# @ odin -#: ../comments.php:22 +#: components/comments/comments.functions.php:29 +msgid "Pingback:" +msgstr "Pingback:" + +#: components/comments/comments.functions.php:31 +#: components/comments/comments.functions.php:76 +msgid "Edit" +msgstr "Editar" + +#: components/comments/comments.functions.php:51 +msgid "in" +msgstr "em" + +#: components/comments/comments.functions.php:54 +msgid "at" +msgstr "às" + +#: components/comments/comments.functions.php:55 +msgid "said:" +msgstr "disse:" + +#: components/comments/comments.functions.php:63 +msgid "Your comment is awaiting moderation." +msgstr "Seu comentário esta aguardando aprovação." + +#: components/comments/comments.functions.php:72 +msgid "Respond" +msgstr "Responder" + +#: components/comments/comments.php:31 msgid "0 Comments" msgstr "0 Comentários" -# @ odin -#: ../comments.php:22 ../content.php:53 +#: components/comments/comments.php:31 +#: components/post/parts/comments-link-post.php:17 msgid "1 Comment" msgstr "1 Comentário" -# @ odin -#: ../comments.php:22 ../content.php:53 +#: components/comments/comments.php:31 +#: components/post/parts/comments-link-post.php:17 msgid "% Comments" msgstr "% Comentários" -# @ odin -#: ../comments.php:23 +#: components/comments/comments.php:32 msgid "to" msgstr "para" -# @ odin -#: ../comments.php:28 ../comments.php:37 +#: components/comments/comments.php:47 msgid "← Old Comments" -msgstr "← Comentários Antigos" +msgstr "" -# @ odin -#: ../comments.php:29 ../comments.php:38 +#: components/comments/comments.php:48 msgid "New Comments →" -msgstr "Novos Comentários →" +msgstr "" -# @ odin -#: ../comments.php:43 +#: components/comments/comments.php:55 msgid "Comments closed." -msgstr "Comentários não são permitidos." +msgstr "" -# @ odin -#: ../comments.php:54 -msgid "Comment" -msgstr "Comentário" +#: components/footer/footer.functions.php:22 +msgid "Footer" +msgstr "Rodapé" + +#: components/footer/footer.functions.php:23 +msgid "Widgets in Footer" +msgstr "Widgets no Rodapé" + +#: components/footer/footer.php:26 +msgid "All rights reserved" +msgstr "Todos os direitos reservados" -# @ odin -#: ../comments.php:56 +#: components/form/form-comment.php:19 msgid "Name" msgstr "Nome" -# @ odin -#: ../comments.php:57 +#: components/form/form-comment.php:24 msgid "E-mail" msgstr "E-mail" -# @ odin -#: ../comments.php:58 +#: components/form/form-comment.php:29 msgid "Website" msgstr "Website" -# @ odin -#: ../content-none.php:11 +#: components/form/form-comment.php:36 +msgid "Comment" +msgstr "Comerntário" + +#: components/form/form-search.php:16 components/form/form-search.php:17 +#: components/form/form-search.php:21 +msgid "Search" +msgstr "Pesquisar" + +#: components/main/main-404.php:16 +msgid "Not Found" +msgstr "Nada foi encontrado" + +#: components/main/main-404.php:20 +msgid "It looks like nothing was found at this location. Maybe try a search?" +msgstr "Parece que nada foi encontrado. Quer tentar fazer uma pesquisa?" + +#: components/navigation/navigation-main.php:17 +msgid "Toggle navigation" +msgstr "Alternar navegação" + +#: components/navigation/navigation-skiplink.php:14 +#: dist/navigation-skiplink.php:14 +msgid "Skip to content" +msgstr "Pular para conteúdo" + +#: components/page/page.php:39 components/post/post-audio.php:41 +#: components/post/post-gallery.php:36 components/post/post-video.php:41 +#: components/post/post.php:36 +msgid "Continue reading" +msgstr "Continuar lendo" + +#: components/pagination/pagination-within-post.php:12 +msgid "Pages:" +msgstr "Páginas:" + +#: components/post/parts/comments-link-post.php:17 +msgid "Leave a comment" +msgstr "Adicionar comentário" + +#: components/post/parts/meta-author-post.php:20 +msgid "by" +msgstr "por" + +#: components/post/parts/meta-date-post.php:16 +msgid "Posted in" +msgstr "Publicado em" + +#: components/post/parts/taxonomy-tag-post.php:15 +msgid "Tagged as:" +msgstr "Marcado como:" + +#: components/post/post-none.php:14 msgid "Nothing Found" msgstr "Nada Encontrado" -# @ odin -#: ../content-none.php:17 -#, php-format +#: components/post/post-none.php:20 msgid "" "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>." msgstr "" -"Pronto para publicar o seu primeiro post? <a href=\"%1$s\">Comece agora " -"aqui</a>." +"Pronto para fazer sua primeira publicação? <a href=\"%1$s\">Comece por aqui</" +"a>." -# @ odin -#: ../content-none.php:21 +#: components/post/post-none.php:24 msgid "" "Sorry, but nothing matched your search terms. Please try again with some " "different keywords." msgstr "" -"Desculpe, mas nada foi encontrado com os termos da sua pesquisa. Por favor, " -"tente novamente com algumas palavras-chave diferentes." +"Nada foi encontrado com os termos da pesquisa. Tente novamente com algumas " +"palavras diferentes." -# @ odin -#: ../content-none.php:26 +#: components/post/post-none.php:29 msgid "" "It seems we can’t find what you’re looking for. Perhaps " "searching can help." msgstr "" -"Parece que não conseguimos encontrar o que você está procurando. Talvez a " -"pesquisa pode ajudar." +"Parece que nós não podemos encontrar o que você está procurando. " +"Provavelmente, a pesquisa pode te ajudar." -# @ odin -#: ../content-page.php:17 ../content.php:38 -msgid "Pages:" -msgstr "Páginas:" +#: components/sidebar/sidebar.functions.php:22 +msgid "Sidebar" +msgstr "Barra Lateral" -# @ odin -#: ../content.php:36 -msgid "Continue reading <span class=\"meta-nav\">→</span>" -msgstr "Continue lendo <span class=\"meta-nav\">→</span>" +#: components/sidebar/sidebar.functions.php:23 +msgid "Widgets in Sidebar" +msgstr "Widgets na Barra Lateral" -# @ odin -#: ../content.php:49 -msgid "Posted in:" -msgstr "Publicado em:" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:327 +msgid "Install Required Plugins" +msgstr "Instalar plugins solicitados" -# @ odin -#: ../content.php:49 -msgctxt "Used between list items, there is a space after the comma." -msgid ", " -msgstr ", " +#: inc/plugins/tgm/class-tgm-plugin-activation.php:328 +msgid "Install Plugins" +msgstr "Instalar Plugins" -# @ odin -#: ../content.php:51 -msgid "Tagged as:" -msgstr "Marcado como:" +#. translators: %s: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:330 +msgid "Installing Plugin: %s" +msgstr "Instalando Plugin %s" -# @ odin -#: ../content.php:53 -msgid "Leave a comment" -msgstr "Deixe um comentário" +#. translators: %s: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:332 +msgid "Updating Plugin: %s" +msgstr "Atualizando Plugin: %s" -# @ odin -#: ../footer.php:17 -msgid "All rights reserved" -msgstr "Todos os direitos reservados" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:333 +msgid "Something went wrong with the plugin API." +msgstr "" -# @ odin -#: ../footer.php:17 -#, php-format +#. translators: 1: plugin name(s). +#: inc/plugins/tgm/class-tgm-plugin-activation.php:370 +msgid "Begin installing plugin" +msgid_plural "Begin installing plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:375 +msgid "Begin updating plugin" +msgid_plural "Begin updating plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:380 +msgid "Begin activating plugin" +msgid_plural "Begin activating plugins" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:385 +msgid "Return to Required Plugins Installer" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:386 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:827 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2533 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3580 +msgid "Return to the Dashboard" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:387 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3159 +msgid "Plugin activated successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:388 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2952 +msgid "The following plugin was activated successfully:" +msgstr "O plugin a seguir foi ativado com sucesso:" + +#. translators: 1: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:390 +msgid "No action taken. Plugin %1$s was already active." +msgstr "" + +#. translators: 1: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:392 msgid "" -"Powered by the <a href=\"%s\" rel=\"nofollow\" target=\"_blank\">Odin</a> " -"forces and <a href=\"%s\" rel=\"nofollow\" target=\"_blank\">WordPress</a>." +"Plugin not activated. A higher version of %s is needed for this theme. " +"Please update the plugin." msgstr "" -"Powered by the <a href=\"%s\" rel=\"nofollow\" target=\"_blank\">Odin</a> " -"forces and <a href=\"%s\" rel=\"nofollow\" target=\"_blank\">WordPress</a>." +"Plugin não ativado. É necessária uma versão mais nova de %s para este Tema. " +"Atualize o Plugin." -# @ odin -#: ../functions.php:64 -msgid "Main Menu" -msgstr "Menu Principal" +#. translators: 1: dashboard link. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:394 +msgid "All plugins installed and activated successfully. %1$s" +msgstr "" -# @ odin -#: ../functions.php:157 -msgid "Main Sidebar" -msgstr "Sidebar Principal" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:395 +msgid "Dismiss this notice" +msgstr "" -# @ odin -#: ../functions.php:159 -msgid "Site Main Sidebar" -msgstr "Sidebar principal do site" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:396 +msgid "" +"There are one or more required or recommended plugins to install, update or " +"activate." +msgstr "" +"Há um ou mais plug-ins obrigatórios ou recomendados para instalar, atualizar " +"ou ativar." -# @ odin -#: ../header.php:53 -msgid "Skip to content" -msgstr "Pular para o conteúdo" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:397 +msgid "Please contact the administrator of this site for help." +msgstr "" -# @ odin -#: ../header.php:56 -msgid "Toggle navigation" -msgstr "Alternar navegação" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:522 +msgid "This plugin needs to be updated to be compatible with your theme." +msgstr "Este plugin precisa ser atualizado para ser compatível com seu tema." -# @ odin -#: ../header.php:83 -msgid "Search:" -msgstr "Pesquisar:" +#: inc/plugins/tgm/class-tgm-plugin-activation.php:523 +msgid "Update Required" +msgstr "" -# @ odin -#: ../header.php:87 ../searchform.php:12 -msgid "Search" -msgstr "Pesquisa" - -# @ odin -#: ../image.php:23 -#, php-format -msgid "Image total size: %s pixels" -msgstr "Tamanho total da imagem: %s pixels" - -# @ odin -#: ../image.php:23 -msgid "Full image link" -msgstr "Link da imagem completa" - -# @ odin -#: ../image.php:34 -msgid "← Previous image" -msgstr "← Imagem anterior" - -# @ odin -#: ../image.php:35 -msgid "Next image →" -msgstr "Próxima imagem →" - -# @ odin -#: ../search.php:17 -#, php-format -msgid "Search Results for: %s" -msgstr "Resultado de Busca por: %s" - -# @ odin -#: ../tag.php:21 -#, php-format -msgid "Tag Archives: %s" -msgstr "Arquivo da Tag: %s" - -# @ odin -#: ../core/helpers.php:56 -msgid "« Previous" -msgstr "« Anterior" - -# @ odin -#: ../core/helpers.php:57 -msgid "Next »" -msgstr "Próximo »" - -# @ odin -#: ../core/helpers.php:99 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:934 +msgid "" +"The remote plugin package does not contain a folder with the desired slug " +"and renaming did not work." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:934 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:937 +msgid "" +"Please contact the plugin provider and ask them to package their plugin " +"according to the WordPress guidelines." +msgstr "" +"Por favor, entre em contato com o provedor de plugins e peça que eles " +"empacotem seus plugins de acordo com as diretrizes do WordPress." + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:937 +msgid "" +"The remote plugin package consists of more than one file, but the files are " +"not packaged in a folder." +msgstr "" + +#. translators: %s: version number +#: inc/plugins/tgm/class-tgm-plugin-activation.php:1982 +msgid "TGMPA v%s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2273 +msgid "Required" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2276 +msgid "Recommended" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2292 +msgid "WordPress Repository" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2295 +msgid "External Source" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2298 +msgid "Pre-Packaged" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2315 +msgid "Not Installed" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2319 +msgid "Installed But Not Activated" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2321 +msgid "Active" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2327 +msgid "Required Update not Available" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2330 +msgid "Requires Update" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2333 +msgid "Update recommended" +msgstr "" + +#. translators: 1: number of plugins. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2392 +msgid "To Install <span class=\"count\">(%s)</span>" +msgid_plural "To Install <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#. translators: 1: number of plugins. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2396 +msgid "Update Available <span class=\"count\">(%s)</span>" +msgid_plural "Update Available <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#. translators: 1: number of plugins. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2400 +msgid "To Activate <span class=\"count\">(%s)</span>" +msgid_plural "To Activate <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2490 +msgid "Installed version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2498 +msgid "Minimum required version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2510 +msgid "Available version:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2533 +msgid "No plugins to install, update or activate." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2547 +msgid "Plugin" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2548 +msgid "Source" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2549 +msgid "Type" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2553 +msgid "Version" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2554 +msgid "Status" +msgstr "" + +#. translators: %2$s: plugin name in screen reader markup +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2603 +msgid "Install %2$s" +msgstr "" + +#. translators: %2$s: plugin name in screen reader markup +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2608 +msgid "Update %2$s" +msgstr "" + +#. translators: %2$s: plugin name in screen reader markup +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2614 +msgid "Activate %2$s" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2684 +msgid "Upgrade message from the plugin author:" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2717 +msgid "Install" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2723 +msgid "Update" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2726 +msgid "Activate" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2757 +msgid "No plugins were selected to be installed. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2759 +msgid "No plugins were selected to be updated. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2800 +msgid "No plugins are available to be installed at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2802 +msgid "No plugins are available to be updated at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2908 +msgid "No plugins were selected to be activated. No action taken." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2934 +msgid "No plugins are available to be activated at this time." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3158 +msgid "Plugin activation failed." +msgstr "" + +#. translators: 1: plugin name, 2: action number 3: total number of actions. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3498 +msgid "Updating Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#. translators: 1: plugin name, 2: error message. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3501 +msgid "An error occurred while installing %1$s: <strong>%2$s</strong>." +msgstr "" + +#. translators: 1: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3503 +msgid "The installation of %1$s failed." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3507 +msgid "" +"The installation and activation process is starting. This process may take a " +"while on some hosts, so please be patient." +msgstr "" +"O processo de Instalação e Ativação começou. Isto poderá demorar algum " +"tempo, por favor seja paciente." + +#. translators: 1: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +msgid "%1$s installed and activated successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +msgid "Show Details" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3509 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +msgid "Hide Details" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3510 +msgid "All installations and activations have been completed." +msgstr "" + +#. translators: 1: plugin name, 2: action number 3: total number of actions. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3512 +msgid "Installing and Activating Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3515 +msgid "" +"The installation process is starting. This process may take a while on some " +"hosts, so please be patient." +msgstr "" +"O processo de instalação está começando. Esse processo pode demorar um pouco " +"em alguns servidores, então pedimos que seja paciente." + +#. translators: 1: plugin name. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3517 +msgid "%1$s installed successfully." +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3518 +msgid "All installations have been completed." +msgstr "" + +#. translators: 1: plugin name, 2: action number 3: total number of actions. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:3520 +msgid "Installing Plugin %1$s (%2$d/%3$d)" +msgstr "" + +#: inc/theme/functions.php:59 msgid "Related Posts" -msgstr "Artigos Relacionados" +msgstr "Publicações relacionadas" -# @ odin -#: ../core/helpers.php:228 +#: inc/theme/functions.php:195 msgid "Home" msgstr "Início" -# @ odin -#: ../core/helpers.php:320 -#, php-format +#: inc/theme/functions.php:322 msgid "%sCategory: %s%s" -msgstr "%sCategoria: %s%s" +msgstr "" -# @ odin -#: ../core/helpers.php:324 -#, php-format +#: inc/theme/functions.php:326 msgid "%sTag: %s%s" -msgstr "%sTag: %s%s" +msgstr "" -# @ odin -#: ../core/helpers.php:332 -#, php-format +#: inc/theme/functions.php:341 msgid "%sSearch result for: "%s"%s" -msgstr "%sResultado da busca para: "%s"%s" +msgstr "" -# @ odin -#: ../core/helpers.php:339 +#: inc/theme/functions.php:347 msgid "Posted by" msgstr "Publicado por" -# @ odin -#: ../core/helpers.php:378 +#: inc/theme/functions.php:397 msgid "404 Error" msgstr "Erro 404" -# @ odin -#: ../core/helpers.php:385 ../core/helpers.php:387 ../inc/optimize.php:27 -#, php-format +#: inc/theme/functions.php:402 msgid "Page %s" -msgstr "Página %s" - -# @ odin -#: ../core/classes/class-bootstrap-nav.php:203 -msgid "Add a menu" -msgstr "Adicionar um menu" - -# @ odin -#: ../core/classes/class-contact-form.php:170 -#, php-format -msgid "Message sent by the form %s in %s at %s" -msgstr "Mensagem enviada pelo formulário %s em %s às %s" - -# @ odin -#: ../core/classes/class-metabox.php:78 ../core/classes/class-metabox.php:424 -#: ../core/classes/class-theme-options.php:89 -#: ../core/classes/class-theme-options.php:616 -msgid "Add images in gallery" -msgstr "Adicionar imagens na galeria" - -# @ odin -#: ../core/classes/class-metabox.php:79 -#: ../core/classes/class-theme-options.php:90 -msgid "Add in gallery" -msgstr "Adicionar na galeria" - -# @ odin -#: ../core/classes/class-metabox.php:80 ../core/classes/class-metabox.php:388 -#: ../core/classes/class-metabox.php:413 -#: ../core/classes/class-theme-options.php:91 -#: ../core/classes/class-theme-options.php:570 -#: ../core/classes/class-theme-options.php:605 -msgid "Remove image" -msgstr "Remover imagem" - -# @ odin -#: ../core/classes/class-metabox.php:81 -#: ../core/classes/class-theme-options.php:92 -msgid "Choose a file" -msgstr "Selecione um arquivo" - -# @ odin -#: ../core/classes/class-metabox.php:82 -#: ../core/classes/class-theme-options.php:93 -msgid "Add file" -msgstr "Adicionar arquivo" - -# @ odin -#: ../core/classes/class-metabox.php:366 -#: ../core/classes/class-theme-options.php:537 -msgid "Select file" -msgstr "Selecionar arquivo" - -# @ odin -#: ../core/classes/class-metabox.php:388 -#: ../core/classes/class-theme-options.php:570 -msgid "Select image" -msgstr "Selecionar imagem" - -# @ odin -#: ../core/classes/class-post-type.php:73 -#: ../core/classes/class-post-type.php:80 -#: ../core/classes/class-taxonomy.php:75 ../core/classes/class-taxonomy.php:84 -#, php-format -msgid "%ss" -msgstr "%ss" - -# @ odin -#: ../core/classes/class-post-type.php:74 -#: ../core/classes/class-taxonomy.php:76 -#, php-format -msgid "%s" -msgstr "%s" - -# @ odin -#: ../core/classes/class-post-type.php:75 -#: ../core/classes/class-taxonomy.php:78 -#, php-format -msgid "View %s" -msgstr "Ver %s" - -# @ odin -#: ../core/classes/class-post-type.php:76 -#: ../core/classes/class-taxonomy.php:79 -#, php-format -msgid "Edit %s" -msgstr "Editar %s" - -# @ odin -#: ../core/classes/class-post-type.php:77 -#: ../core/classes/class-taxonomy.php:80 -#, php-format -msgid "Search %s" -msgstr "Pesquisar %s" - -# @ odin -#: ../core/classes/class-post-type.php:78 -#: ../core/classes/class-taxonomy.php:81 -#, php-format -msgid "Update %s" -msgstr "Atualizar %s" - -# @ odin -#: ../core/classes/class-post-type.php:79 -#: ../core/classes/class-taxonomy.php:82 ../core/classes/class-taxonomy.php:83 -#, php-format -msgid "Parent %s:" -msgstr "Parente %s" - -# @ odin -#: ../core/classes/class-post-type.php:81 -msgid "Add New" -msgstr "Adicionar Novo" - -# @ odin -#: ../core/classes/class-post-type.php:82 -#: ../core/classes/class-taxonomy.php:85 -#, php-format -msgid "Add New %s" -msgstr "Adicionar Novo %s" - -# @ odin -#: ../core/classes/class-post-type.php:83 -#: ../core/classes/class-taxonomy.php:86 -#, php-format -msgid "New %s" -msgstr "Novo %s" - -# @ odin -#: ../core/classes/class-post-type.php:84 -#: ../core/classes/class-taxonomy.php:87 -#, php-format -msgid "All %ss" -msgstr "Todos os %ss" - -# @ odin -#: ../core/classes/class-post-type.php:85 -#, php-format -msgid "No %s found" -msgstr "Nenhum %s encontrado" - -# @ odin -#: ../core/classes/class-post-type.php:86 -#, php-format -msgid "No %s found in Trash" -msgstr "Nenhum %s encontrado na Lixeira" - -# @ odin -#: ../core/classes/class-taxonomy.php:77 -#, php-format -msgid "Add or Remove %ss" -msgstr "Adicionar ou Remover %ss" - -# @ odin -#: ../core/classes/class-taxonomy.php:88 -#, php-format -msgid "Separate %ss with comma" -msgstr "Separe %ss com vírgula" - -# @ odin -#: ../core/classes/class-taxonomy.php:89 -#, php-format -msgid "Choose from %ss most used" -msgstr "Escolher entre os %ss mais usados" - -# @ odin -#: ../core/classes/abstracts/abstract-front-end-form.php:234 -msgid "Submit" -msgstr "Enviar" - -# @ odin -#: ../core/classes/abstracts/abstract-front-end-form.php:276 -msgid "Form submitted successfully!" -msgstr "Formulário enviado com sucesso!" - -# @ odin -#: ../core/classes/abstracts/abstract-front-end-form.php:514 -#, php-format -msgid "%s is required." -msgstr "%s é um campo obrigatório." - -# @ odin -#: ../core/classes/abstracts/abstract-front-end-form.php:520 -#, php-format -msgid "%s must be an email address valid." -msgstr "%s precisa ser um endereço de email válido" - -#: ../core/classes/widgets/class-widget-like-box.php:20 -msgid "Facebook Like Box" -msgstr "Caixa de Curtir do Facebook" - -#: ../core/classes/widgets/class-widget-like-box.php:21 -msgid "This widget includes a facebook like box on your blog" -msgstr "Esse widget inclui a caixa de curtir do Facebook em seu site" - -#: ../core/classes/widgets/class-widget-like-box.php:48 -msgid "Title:" -msgstr "Título:" - -#: ../core/classes/widgets/class-widget-like-box.php:54 -msgid "Facebook Page URL:" -msgstr "URL da página do Facebook:" - -#: ../core/classes/widgets/class-widget-like-box.php:60 -msgid "Width:" -msgstr "Largura:" - -#: ../core/classes/widgets/class-widget-like-box.php:66 -msgid "Height:" -msgstr "Altura:" - -#: ../core/classes/widgets/class-widget-like-box.php:72 -msgid "Color Scheme:" -msgstr "Esquema de cores:" - -#: ../core/classes/widgets/class-widget-like-box.php:74 -msgid "Dark" -msgstr "Escuro" - -#: ../core/classes/widgets/class-widget-like-box.php:75 -msgid "Light" -msgstr "Claro" - -#: ../core/classes/widgets/class-widget-like-box.php:81 -msgid "Show Friends Faces" -msgstr "Exibir rostos dos amigos" - -#: ../core/classes/widgets/class-widget-like-box.php:86 -msgid "Show Posts" -msgstr "Exibir atualizações" - -#: ../core/classes/widgets/class-widget-like-box.php:91 -msgid "Show Header" -msgstr "Exibir cabeçalho" - -#: ../core/classes/widgets/class-widget-like-box.php:96 -msgid "Show Border" -msgstr "Exibir borda" - -# @ odin -#: ../inc/comments-loop.php:23 -msgid "Pingback:" -msgstr "Pingback:" +msgstr "" -# @ odin -#: ../inc/comments-loop.php:23 ../inc/comments-loop.php:33 -msgid "Edit" -msgstr "Editar" +#: inc/woocommerce/template-tags.php:28 +msgid "View your shopping cart" +msgstr "" -# @ odin -#: ../inc/comments-loop.php:32 -msgid "in" -msgstr "em" +#: inc/woocommerce/template-tags.php:29 +msgid "%d item" +msgid_plural "%d items" +msgstr[0] "" +msgstr[1] "" -# @ odin -#: ../inc/comments-loop.php:32 -msgid "at" -msgstr "as" +#. Theme Name of the plugin/theme +msgid "Odin" +msgstr "Odin" -# @ odin -#: ../inc/comments-loop.php:32 -msgid "said:" -msgstr "disse:" +#. Theme URI of the plugin/theme +msgid "http://wpod.in" +msgstr "http://wpod.in" -# @ odin -#: ../inc/comments-loop.php:36 -msgid "Your comment is awaiting moderation." -msgstr "Seu comentário está aguardando moderação." +#. Description of the plugin/theme +msgid "Base Theme for developing WordPress." +msgstr "" -# @ odin -#: ../inc/comments-loop.php:41 -msgid "Respond" -msgstr "Responder" +#. Author of the plugin/theme +msgid "WordPress Brasil" +msgstr "WordPress Brasil" -# @ odin -#: ../inc/template-tags.php:62 -msgid "Sticky" -msgstr "Destacado" +#. Author URI of the plugin/theme +msgid "https://github.com/wpbrasil" +msgstr "https://github.com/wpbrasil" -# @ odin -#: ../inc/template-tags.php:67 -msgid "Posted in" -msgstr "Publicado em" +#. Template Name of the plugin/theme +msgid "Page Sidebar" +msgstr "Página com Barra Lateral" -# @ odin -#: ../inc/template-tags.php:70 -msgid "by" -msgstr "por" +#: components/post/parts/taxonomy-category-post.php:17 +msgctxt "Used between list items, there is a space after the comma." +msgid ", " +msgstr "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:1121 +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2948 +msgctxt "plugin A *and* plugin B" +msgid "and" +msgstr "" + +#. translators: 1: install status, 2: update status +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2342 +msgctxt "Install/Update Status" +msgid "%1$s, %2$s" +msgstr "" + +#. translators: 1: number of plugins. +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2388 +msgctxt "plugins" +msgid "All <span class=\"count\">(%s)</span>" +msgid_plural "All <span class=\"count\">(%s)</span>" +msgstr[0] "" +msgstr[1] "" + +#: inc/plugins/tgm/class-tgm-plugin-activation.php:2482 +msgctxt "as in: \"version nr unknown\"" +msgid "unknown" +msgstr "" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6de8660 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9377 @@ +{ + "name": "odin", + "version": "3.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@fortawesome/fontawesome-free-webfonts": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free-webfonts/-/fontawesome-free-webfonts-1.0.6.tgz", + "integrity": "sha512-3eF7kD6vndZSSUN+FOqtrAaa+3t6udoUwIdD9BGERao3t9ytjtr1tQRE1voj2Zc+b9uZNAoUi6wZdxGJb7Rspw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "dev": true, + "requires": { + "file-type": "^3.1.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "optional": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "bin-build": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "dev": true, + "optional": true, + "requires": { + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" + }, + "dependencies": { + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "optional": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true, + "optional": true + } + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "dev": true, + "optional": true, + "requires": { + "executable": "^1.0.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "dev": true, + "optional": true, + "requires": { + "find-versions": "^1.0.0" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "dev": true, + "optional": true, + "requires": { + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true, + "optional": true + } + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "dev": true, + "optional": true, + "requires": { + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "bootstrap": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz", + "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browser-sync": { + "version": "2.23.6", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.23.6.tgz", + "integrity": "sha512-loCO5NQKZXfBJrEvmLwF1TPSECCsPopNd29qduoysLmpw8op2lgolGMjz3oI/MjG4duzB9TfDs7k58djRSwPwg==", + "dev": true, + "requires": { + "browser-sync-ui": "v1.0.1", + "bs-recipes": "1.3.4", + "chokidar": "1.7.0", + "connect": "3.5.0", + "connect-history-api-fallback": "^1.5.0", + "dev-ip": "^1.0.1", + "easy-extender": "2.3.2", + "eazy-logger": "3.0.2", + "emitter-steward": "^1.0.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "1.15.2", + "immutable": "3.8.2", + "localtunnel": "1.8.3", + "micromatch": "2.3.11", + "opn": "4.0.2", + "portscanner": "2.1.1", + "qs": "6.2.1", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "serve-index": "1.8.0", + "serve-static": "1.12.2", + "server-destroy": "1.0.1", + "socket.io": "2.0.4", + "ua-parser-js": "0.7.12", + "yargs": "6.4.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "qs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "integrity": "sha1-zgPF/wk1vB2daanxTL0Y5WjWdiU=", + "dev": true + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "yargs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.1.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "browser-sync-ui": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz", + "integrity": "sha512-RIxmwVVcUFhRd1zxp7m2FfLnXHf59x4Gtj8HFwTA//3VgYI3AKkaQAuDL8KDJnE59XqCshxZa13JYuIWtZlKQg==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1.1.0", + "immutable": "^3.7.6", + "server-destroy": "1.0.1", + "socket.io-client": "2.0.4", + "stream-throttle": "^0.1.3" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "dev": true, + "optional": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "dev": true, + "requires": { + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "caw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "dev": true, + "requires": { + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.1.tgz", + "integrity": "sha512-DNNEq6JdqBFPzS29TaoqZFPNLn5Xn3XyPFqLIhyBT8Xou4lHQEWzD6FinXoJUfhIfWX3aE1JkRa3cbWCHFbt1g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", + "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==", + "dev": true, + "optional": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.5.tgz", + "integrity": "sha512-YtnS0VEY+e2Khzsey/6mra9EoM6h/5gxaC0e3mcHpA5yfDxafhygytNmcJWodvUgyXzSiL5MSkPO6bQGgfliHw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "connect": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.0.tgz", + "integrity": "sha1-s1dSWgtMH1BZnNmD4dnv7qlncZg=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "finalhandler": "0.5.0", + "parseurl": "~1.3.1", + "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "console-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "dev": true, + "optional": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-env": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.4.tgz", + "integrity": "sha512-Mx8mw6JWhfpYoEk7PGvHxJMLQwQHORAs8+2bX+C1lGQ4h3GkDb1zbzC2Nw85YH9ZQMlO0BHZxMacgrfPmMFxbg==", + "dev": true, + "requires": { + "cross-spawn": "^5.1.0", + "is-windows": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "css-select": { + "version": "1.3.0-rc0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.3.0-rc0.tgz", + "integrity": "sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE=", + "dev": true, + "optional": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "^1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz", + "integrity": "sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=", + "dev": true, + "optional": true + }, + "css-tree": { + "version": "1.0.0-alpha25", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", + "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", + "dev": true, + "optional": true, + "requires": { + "mdn-data": "^1.0.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true, + "optional": true + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true, + "optional": true + }, + "csso": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.0.tgz", + "integrity": "sha512-WtJjFP3ZsSdWhiZr4/k1B9uHPgYjFYnDxfbaJxk1hz5PDLIJ5BCRWkJqaztZ0DbP8d2ZIVwUPIJb2YmCwkPaMw==", + "dev": true, + "optional": true, + "requires": { + "css-tree": "1.0.0-alpha.27" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.27", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.27.tgz", + "integrity": "sha512-BAYp9FyN4jLXjfvRpTDchBllDptqlK9I7OsagXCG9Am5C+5jc8eRZHgqb9x500W2OKS14MMlpQc/nmh/aA7TEQ==", + "dev": true, + "optional": true, + "requires": { + "mdn-data": "^1.0.0", + "source-map": "^0.5.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "dev": true, + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + } + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "dev": true, + "requires": { + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "dev": true, + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "dev": true, + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "dev": true, + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + }, + "dependencies": { + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "download": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "dev": true, + "requires": { + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + } + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + } + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "dev": true, + "requires": { + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" + } + }, + "easy-extender": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", + "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", + "dev": true, + "requires": { + "lodash": "^3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", + "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", + "dev": true, + "requires": { + "tfunk": "^3.0.1" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "emitter-steward": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emitter-steward/-/emitter-steward-1.0.0.tgz", + "integrity": "sha1-80Ea3pdYp1Zd+Eiy2gy70bRsvWQ=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "~1.3.0" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1" + } + } + } + }, + "engine.io": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", + "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "uws": "~9.14.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", + "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary2": "~1.0.2" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true, + "optional": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", + "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "dev": true, + "optional": true, + "requires": { + "execa": "^0.7.0", + "p-finally": "^1.0.0", + "pify": "^3.0.0", + "rimraf": "^2.5.4", + "tempfile": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + } + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "dev": true, + "optional": true, + "requires": { + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" + }, + "dependencies": { + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "dev": true, + "optional": true + } + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "optional": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "executable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "dev": true, + "optional": true, + "requires": { + "meow": "^3.1.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "finalhandler": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", + "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "statuses": "~1.3.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "dev": true, + "optional": true, + "requires": { + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + } + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true + }, + "flatnest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flatnest/-/flatnest-1.0.0.tgz", + "integrity": "sha1-IEIa0FtGxjytMO8UqOxiX4az8cU=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true, + "optional": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "hawk": "3.1.3", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "request": "2.81.0", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "dev": true, + "requires": { + "rc": "^1.1.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "optional": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "gettext-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", + "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "gifsicle": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", + "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "^0.5.1" + }, + "dependencies": { + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "~0.1.0" + } + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.4", + "minimatch": "~3.0.2" + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "gulp-checktextdomain": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gulp-checktextdomain/-/gulp-checktextdomain-2.1.1.tgz", + "integrity": "sha1-lFpwn38QqEksg+VoynbElf7LIDk=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "fs-extra": "^0.26.7", + "gulp-util": "^3.0.7", + "php-parser": "^2.0.6", + "ramda": "^0.20.0", + "text-table": "^0.2.0", + "through2": "^2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "dev": true, + "requires": { + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" + } + }, + "gulp-file-include": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-file-include/-/gulp-file-include-2.0.1.tgz", + "integrity": "sha512-CqwcK/X+GsHbOeJ7RUgUKGGD34UR7gVyHEmeJOwVdJKPdMMr505JtAh5cqKupcaISS4vDSMfJk+RmD1J7kxT+Q==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-stream": "^1.6.0", + "extend": "^3.0.1", + "flatnest": "^1.0.0", + "plugin-error": "^0.1.2", + "through2": "^2.0.3", + "vinyl": "^2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "gulp-flatten": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-flatten/-/gulp-flatten-0.4.0.tgz", + "integrity": "sha512-eg4spVTAiv1xXmugyaCxWne1oPtNG0UHEtABx5W8ScLiqAYceyYm6GYA36x0Qh8KOIXmAZV97L2aYGnKREG3Sg==", + "dev": true, + "requires": { + "plugin-error": "^0.1.2", + "through2": "^2.0.0" + } + }, + "gulp-header": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.5.tgz", + "integrity": "sha512-7bOIiHvM1GUHIG3LRH+UIanOxyjSys0FbzzgUBlV2cZIIZihEW+KKKKm0ejUBNGvRdhISEFFr6HlptXoa28gtQ==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.0.0" + }, + "dependencies": { + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + } + } + }, + "gulp-imagemin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gulp-imagemin/-/gulp-imagemin-4.1.0.tgz", + "integrity": "sha512-6nWkrMNY5ub+34+DwlgQdWg21Z4DWAOARLpnyuZ773pGPJrfiyQrkOzdz9DgQSGBQjU1zuw6gd+9clLi6eicuw==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "fancy-log": "^1.3.2", + "imagemin": "^5.3.1", + "imagemin-gifsicle": "^5.2.0", + "imagemin-jpegtran": "^5.0.2", + "imagemin-optipng": "^5.2.1", + "imagemin-svgo": "^6.0.0", + "plugin-error": "^0.1.2", + "plur": "^2.1.2", + "pretty-bytes": "^4.0.2", + "through2-concurrent": "^1.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gulp-jshint": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-jshint/-/gulp-jshint-2.1.0.tgz", + "integrity": "sha512-sP3NK8Y/1e58O0PH9t6s7DAr/lKDSUbIY207oWSeufM6/VclB7jJrIBcPCsyhrFTCDUl9DauePbt6VqP2vPM5w==", + "dev": true, + "requires": { + "lodash": "^4.12.0", + "minimatch": "^3.0.3", + "plugin-error": "^0.1.2", + "rcloader": "^0.2.2", + "through2": "^2.0.0" + } + }, + "gulp-plumber": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.0.tgz", + "integrity": "sha512-L/LJftsbKoHbVj6dN5pvMsyJn9jYI0wT0nMg3G6VZhDac4NesezecYTi8/48rHi+yEic3sUpw6jlSc7qNWh32A==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "fancy-log": "^1.3.2", + "plugin-error": "^0.1.2", + "through2": "^2.0.3" + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-sass": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.0.2.tgz", + "integrity": "sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "lodash.clonedeep": "^4.3.2", + "node-sass": "^4.8.3", + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "strip-ansi": "^4.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gulp-sass-glob": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/gulp-sass-glob/-/gulp-sass-glob-1.0.9.tgz", + "integrity": "sha512-5NgvOYE8OrYj3hmxL4Tf79qdxRTJXe2UdAM+L6R/qu4h9ZPvoujtPYk/CmpNReuBJdDXR2DNWeq6t58NFARYUA==", + "dev": true, + "requires": { + "glob": "^7.1.2", + "minimatch": "^3.0.4", + "safe-buffer": "^5.1.1", + "slash": "^2.0.0", + "through2": "^2.0.3" + } + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-uglify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", + "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "dev": true, + "requires": { + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash": "^4.13.1", + "make-error-cause": "^1.1.1", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", + "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true, + "optional": true + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + }, + "dependencies": { + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-errors": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", + "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "setprototypeof": "1.0.2", + "statuses": ">= 1.3.1 < 2" + } + }, + "http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "dev": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "imagemin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", + "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", + "dev": true, + "requires": { + "file-type": "^4.1.0", + "globby": "^6.1.0", + "make-dir": "^1.0.0", + "p-pipe": "^1.1.0", + "pify": "^2.3.0", + "replace-ext": "^1.0.0" + }, + "dependencies": { + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + } + } + }, + "imagemin-gifsicle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", + "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "gifsicle": "^3.0.0", + "is-gif": "^1.0.0" + } + }, + "imagemin-jpegtran": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz", + "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-jpg": "^1.0.0", + "jpegtran-bin": "^3.0.0" + } + }, + "imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", + "dev": true, + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-png": "^1.0.0", + "optipng-bin": "^3.0.0" + } + }, + "imagemin-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-6.0.0.tgz", + "integrity": "sha512-xwjBZQKpbkklHtJYnCOwRJjTRJA/nR0hQzKMh+CUZRvm/L0QwKKPJQ9tkPWQHrg+cydPu2i1vLgHuy2E0hKEkg==", + "dev": true, + "optional": true, + "requires": { + "buffer-from": "^0.1.1", + "is-svg": "^2.0.0", + "svgo": "^1.0.0" + } + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true, + "optional": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-gif": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", + "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", + "dev": true, + "optional": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-jpg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", + "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", + "dev": true, + "optional": true + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-png": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "dev": true, + "optional": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "optional": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jpegtran-bin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", + "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "optional": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jshint": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", + "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", + "dev": true, + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "3.7.x", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "dependencies": { + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", + "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", + "dev": true + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + } + } + }, + "jshint-stylish": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jshint-stylish/-/jshint-stylish-2.2.1.tgz", + "integrity": "sha1-JCCCosA1rgP9gQROBXDMQgjPbmE=", + "dev": true, + "requires": { + "beeper": "^1.1.0", + "chalk": "^1.0.0", + "log-symbols": "^1.0.0", + "plur": "^2.1.0", + "string-length": "^1.0.0", + "text-table": "^0.2.0" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true, + "optional": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "limiter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.2.tgz", + "integrity": "sha512-JIKZ0xb6fZZYa3deZ0BgXCgX6HgV8Nx3mFGeFHmFWW8Fb2c08e0CyE+G3nalpD0xGvGssjGb1UdFr+PprxZEbw==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "localtunnel": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.8.3.tgz", + "integrity": "sha1-3MWSL9hWUQN9S94k/ZMkjQsk6wU=", + "dev": true, + "requires": { + "debug": "2.6.8", + "openurl": "1.1.1", + "request": "2.81.0", + "yargs": "3.29.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + } + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "yargs": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz", + "integrity": "sha1-GquWYOrnnYuPZ1vK7qtu40ws9pw=", + "dev": true, + "requires": { + "camelcase": "^1.2.1", + "cliui": "^3.0.3", + "decamelize": "^1.0.0", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" + } + } + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "logalot": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "dev": true, + "optional": true, + "requires": { + "figures": "^1.3.5", + "squeak": "^1.0.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true, + "optional": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "dev": true, + "optional": true, + "requires": { + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.0.tgz", + "integrity": "sha1-V7713IXSOSO6I3ZzJNjo+PPZaUs=", + "dev": true, + "requires": { + "kind-of": "^3.1.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mdn-data": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.0.tgz", + "integrity": "sha512-jC6B3BFC07cCOU8xx1d+sQtDkVIpGKWv4TzK7pN7PyObdbwlIFJbHYk8ofvr0zrU8SkV1rSi87KAHhWCdLGw1Q==", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-fs": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz", + "integrity": "sha1-MjI8zLRsn78PwRgS1FAhzDHTJbs=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "2", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.8.3.tgz", + "integrity": "sha512-tfFWhUsCk/Y19zarDcPo5xpj+IW3qCfOjVdHtYeG6S1CKbQOh1zqylnQK6cV3z9k80yxAnFX9Y+a9+XysDhhfg==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.3.1", + "npmlog": "^4.0.0", + "request": "~2.79.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "node-wp-i18n": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-wp-i18n/-/node-wp-i18n-1.2.1.tgz", + "integrity": "sha512-Wvl98XA/GBnQFe20iAMwlsXvikVOFTVz//cbRsF8OPQf0NIkJdeWToNYww/dZl52lHtS1KUEIVRyWcol5ibHog==", + "dev": true, + "requires": { + "bluebird": "^3.4.1", + "gettext-parser": "^2.0.0", + "glob": "^7.0.5", + "lodash": "^4.14.2", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "tmp": "^0.0.33" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "optional": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "optional": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "dev": true, + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "dev": true, + "optional": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "optional": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "php-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-2.2.0.tgz", + "integrity": "sha1-ZzhPClkz2770C+qwqzHQuMWC/4g=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + } + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "popper.js": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz", + "integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU=" + }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "is-number-like": "^1.0.3" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "ramda": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.20.1.tgz", + "integrity": "sha1-yB6PteeLXv8iaTSe4ENBN7THRlE=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "dev": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "rcfinder": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz", + "integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=", + "dev": true, + "requires": { + "lodash.clonedeep": "^4.3.2" + } + }, + "rcloader": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.2.2.tgz", + "integrity": "sha1-WNIpi0YtC5v9ITPSoex0+9cFxxc=", + "dev": true, + "requires": { + "lodash.assign": "^4.2.0", + "lodash.isobject": "^3.0.2", + "lodash.merge": "^4.6.0", + "rcfinder": "^0.1.6" + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "~2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "dev": true, + "optional": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "dev": true, + "optional": true, + "requires": { + "semver": "^5.3.0" + } + }, + "send": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.2.tgz", + "integrity": "sha1-+R+rRAO8+H5xb3DOtdsvV4vcF9Y=", + "dev": true, + "requires": { + "debug": "2.6.4", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.0", + "fresh": "0.5.0", + "http-errors": "~1.6.1", + "mime": "1.3.4", + "ms": "1.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", + "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", + "dev": true, + "requires": { + "ms": "0.7.3" + }, + "dependencies": { + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "dev": true + } + } + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "ms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz", + "integrity": "sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "serve-index": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", + "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=", + "dev": true, + "requires": { + "accepts": "~1.3.3", + "batch": "0.5.3", + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "http-errors": "~1.5.0", + "mime-types": "~2.1.11", + "parseurl": "~1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.2.tgz", + "integrity": "sha1-5UbicmCBuBtLzsjpCAjrzdMjr7o=", + "dev": true, + "requires": { + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.15.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", + "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "socket.io": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", + "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", + "dev": true, + "requires": { + "debug": "~2.6.6", + "engine.io": "~3.1.0", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.0.4", + "socket.io-parser": "~3.1.1" + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~2.6.4", + "engine.io-client": "~3.1.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.1.1", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "has-binary2": "~1.0.2", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true, + "optional": true + }, + "squeak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "dev": true, + "optional": true, + "requires": { + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=", + "dev": true, + "optional": true + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + } + } + }, + "stream-consume": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + } + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" + }, + "dependencies": { + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "optional": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svgo": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.0.5.tgz", + "integrity": "sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg==", + "dev": true, + "optional": true, + "requires": { + "coa": "~2.0.1", + "colors": "~1.1.2", + "css-select": "~1.3.0-rc0", + "css-select-base-adapter": "~0.1.0", + "css-tree": "1.0.0-alpha25", + "css-url-regex": "^1.1.0", + "csso": "^3.5.0", + "js-yaml": "~3.10.0", + "mkdirp": "~0.5.1", + "object.values": "^1.0.4", + "sax": "~1.2.4", + "stable": "~0.1.6", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true, + "optional": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "optional": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "tfunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", + "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "object-path": "^0.9.0" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "through2-concurrent": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/through2-concurrent/-/through2-concurrent-1.1.1.tgz", + "integrity": "sha1-EctOpMnjG8puTB5tukjRxyjDUks=", + "dev": true, + "requires": { + "through2": "^2.0.0" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "^6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.12.tgz", + "integrity": "sha1-BMgamb3V3FImPqKdJMa/jUgYpLs=", + "dev": true + }, + "uglify-js": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.14.tgz", + "integrity": "sha512-OY8VPQU25q09gQRbC+Ekk3xgEVBmYFEfVcgS47ksjTiNht2LmLlUkWutyi38ZsDSToJHwbe76kDGwmD226Z2Fg==", + "dev": true, + "requires": { + "commander": "~2.14.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true, + "optional": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "optional": true, + "requires": { + "ip-regex": "^1.0.1" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "uws": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", + "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", + "dev": true, + "optional": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "^1.1.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "dev": true, + "requires": { + "wrap-fn": "^0.1.0" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "dev": true, + "requires": { + "co": "3.1.0" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..9c50020 --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ + "name": "odin", + "version": "3.0.0", + "description": "Base Theme for developing WordPress.", + "title": "Odin", + "homepage": "http://wpod.in", + "author": { + "name": "WordPress Brasil", + "url": "https://github.com/wpbrasil" + }, + "serveDev": { + "proxy": "localhost:8080", + "port": 3000, + "notify": false + }, + "license": { + "type": "MIT", + "url": "http://opensource.org/licenses/MIT" + }, + "repository": { + "type": "git", + "url": "http://github.com/wpbrasil/odin" + }, + "scripts": { + "dev": "gulp dev-server", + "build": "gulp", + "build:js": "cross-env NODE_ENV=development gulp js:compile js:dist", + "build:css": "cross-env NODE_ENV=production gulp css:compile css:dist", + "build:img": "cross-env NODE_ENV=production gulp img:dist", + "build:fonts": "cross-env NODE_ENV=production gulp fonts:dist", + "lang:checktextdomain": "gulp lang:checktextdomain", + "lang:addtextdomain": "wpi18n addtextdomain --exclude='node_modules' --main-file='style.css'", + "lang:makepot": "wpi18n makepot --domain-path='languages' --exclude='node_modules' --type='wp-theme' --main-file='style.css'" + }, + "engines": { + "node": ">= 8.9.4" + }, + "devDependencies": { + "browser-sync": "^2.23.6", + "cross-env": "^5.1.4", + "gulp": "^3.9.1", + "gulp-checktextdomain": "^2.1.1", + "gulp-file-include": "^2.0.1", + "gulp-flatten": "^0.4.0", + "gulp-header": "2.0.5", + "gulp-imagemin": "^4.1.0", + "gulp-jshint": "^2.1.0", + "gulp-plumber": "^1.2.0", + "gulp-rename": "^1.2.2", + "gulp-sass": "^4.0.1", + "gulp-sass-glob": "^1.0.9", + "gulp-uglify": "^3.0.0", + "jshint": "^2.9.5", + "jshint-stylish": "^2.2.1", + "node-fs": "^0.1.7", + "node-sass": "^4.8.3", + "node-wp-i18n": "^1.1.1" + }, + "dependencies": { + "@fortawesome/fontawesome-free-webfonts": "^1.0.6", + "bootstrap": "^4.1.3", + "jquery": "^3.3.1", + "natives": "^1.1.6", + "popper.js": "^1.14.3" + } +} diff --git a/page-sidebar.php b/page-sidebar.php index 68c7eb4..c764191 100644 --- a/page-sidebar.php +++ b/page-sidebar.php @@ -1,34 +1,31 @@ <?php /** - * Template Name: With Sidebar + * Template Name: Page Sidebar * * The template for displaying pages with sidebar. * + * @link https://codex.wordpress.org/Template_Hierarchy + * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ +/** + * Header Component. + */ get_header(); -?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - <?php - // Start the Loop. - while ( have_posts() ) : the_post(); - - // Include the page content template. - get_template_part( 'content', 'page' ); - - // If comments are open or we have at least one comment, load up the comment template. - if ( comments_open() || get_comments_number() ) : - comments_template(); - endif; - endwhile; - ?> - - </main><!-- #main --> +/** + * Content Component. + */ +get_template_part( 'components/main/main', 'page' ); -<?php +/** + * Sidebar Component. + */ get_sidebar(); + +/** + * Footer Component. + */ get_footer(); diff --git a/page.php b/page.php index 46bb219..e4fe13c 100644 --- a/page.php +++ b/page.php @@ -3,32 +3,27 @@ * The template for displaying all pages. * * This is the template that displays all pages by default. - * Please note that this is the WordPress construct of pages and that other - * 'pages' on your WordPress site will use a different template. + * Please note that this is the WordPress construct of pages + * and that other 'pages' on your WordPress site may use a + * different template. + * + * @link https://codex.wordpress.org/Template_Hierarchy * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_full(); ?>" tabindex="-1" role="main"> - - <?php - // Start the Loop. - while ( have_posts() ) : the_post(); - - // Include the page content template. - get_template_part( 'content', 'page' ); - - // If comments are open or we have at least one comment, load up the comment template. - if ( comments_open() || get_comments_number() ) : - comments_template(); - endif; - endwhile; - ?> +/** + * Header Component. + */ +get_header(); - </main><!-- #main --> +/** + * Main Page Component. + */ +get_template_part( 'components/main/main', 'page' ); -<?php +/** + * Footer Component. + */ get_footer(); diff --git a/screenshot.png b/screenshot.png index d39759c..a124849 100644 Binary files a/screenshot.png and b/screenshot.png differ diff --git a/search.php b/search.php deleted file mode 100644 index 56a1ac4..0000000 --- a/search.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * The template for displaying Search Results pages. - * - * @package Odin - * @since 2.2.0 - */ - -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - <?php if ( have_posts() ) : ?> - - <header class="page-header"> - <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'odin' ), get_search_query() ); ?></h1> - </header><!-- .page-header --> - - <?php - // Start the Loop. - while ( have_posts() ) : the_post(); - - /* - * Include the post format-specific template for the content. If you want to - * use this in a child theme, then include a file called content-___.php - * (where ___ is the post format) and that will be used instead. - */ - get_template_part( 'content', get_post_format() ); - - endwhile; - - // Post navigation. - odin_paging_nav(); - - else : - // If no content, include the "No posts found" template. - get_template_part( 'content', 'none' ); - - endif; - ?> - - </main><!-- #main --> - -<?php -get_sidebar(); -get_footer(); diff --git a/searchform.php b/searchform.php index 551e434..6dc19fb 100644 --- a/searchform.php +++ b/searchform.php @@ -1,19 +1,12 @@ <?php + /** - * The template for displaying Search Form. + * The template for displaying search form. + * + * @link https://developer.wordpress.org/reference/functions/get_search_form * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ -?> -<form method="get" id="searchform" class="form-inline" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search"> - <div class="input-group"> - <input type="search" class="form-control" name="s" id="s" value="<?php echo get_search_query(); ?>" placeholder="<?php esc_attr_e( 'Search', 'odin' ); ?>" /> - <span class="input-group-btn"> - <button type="submit" class="btn btn-default" value="<?php esc_attr_e( 'Search', 'odin' ); ?>"> - <i class="glyphicon glyphicon-search"></i> - </button> - </span><!-- /input-group-btn --> - </div><!-- /input-group --> -</form><!-- /searchform --> +get_template_part( 'components/form/form', 'search' ); diff --git a/sidebar.php b/sidebar.php index 99c8191..49a94a7 100644 --- a/sidebar.php +++ b/sidebar.php @@ -1,20 +1,14 @@ <?php /** - * The sidebar containing the secondary widget area, displays on homepage, archives and posts. + * The sidebar containing the main widget area. * - * If no active widgets in this sidebar, it will shows Recent Posts, Archives and Tag Cloud widgets. + * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ -?> -<aside id="sidebar" class="<?php echo odin_classes_page_sidebar_aside(); ?>" role="complementary"> - <?php - if ( ! dynamic_sidebar( 'main-sidebar' ) ) { - the_widget( 'WP_Widget_Recent_Posts', array( 'number' => 10 ) ); - the_widget( 'WP_Widget_Archives', array( 'count' => 0, 'dropdown' => 1 ) ); - the_widget( 'WP_Widget_Tag_Cloud' ); - } - ?> -</aside><!-- #sidebar --> +/** + * Sidebar component. + */ +get_template_part( 'components/sidebar/sidebar' ); diff --git a/single.php b/single.php index 287febe..3212df3 100644 --- a/single.php +++ b/single.php @@ -1,33 +1,29 @@ <?php /** - * The Template for displaying all single posts. + * The template for displaying all single posts. + * + * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package Odin - * @since 2.2.0 + * @subpackage Custom_Theme */ -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - <?php - // Start the Loop. - while ( have_posts() ) : the_post(); - - /* - * Include the post format-specific template for the content. If you want to - * use this in a child theme, then include a file called content-___.php - * (where ___ is the post format) and that will be used instead. - */ - get_template_part( 'content', get_post_format() ); +/** + * Header Component. + */ +get_header(); - // If comments are open or we have at least one comment, load up the comment template. - if ( comments_open() || get_comments_number() ) : - comments_template(); - endif; - endwhile; - ?> - </main><!-- #main --> +/** + * Main Component. + */ +get_template_part( 'components/main/main' ); -<?php +/** + * Sidebar Component. + */ get_sidebar(); + +/** + * Footer Component. + */ get_footer(); diff --git a/src/Gruntfile.js b/src/Gruntfile.js deleted file mode 100644 index 1aa304b..0000000 --- a/src/Gruntfile.js +++ /dev/null @@ -1,383 +0,0 @@ -/* jshint node:true */ -module.exports = function( grunt ) { - 'use strict'; - - require( 'load-grunt-tasks' )( grunt ); - - var odinConfig = { - - // gets the package vars - pkg: grunt.file.readJSON( 'package.json' ), - - // setting folder templates - dirs: { - css: '../assets/css', - js: '../assets/js', - sass: '../assets/sass', - images: '../assets/images', - fonts: '../assets/fonts', - core: '../core', - tmp: 'tmp' - }, - - // javascript linting with jshint - jshint: { - options: { - jshintrc: '<%= dirs.js %>/.jshintrc' - }, - all: [ - 'Gruntfile.js', - '<%= dirs.js %>/main.js' - ] - }, - - // uglify to concat and minify - uglify: { - dist: { - files: { - '<%= dirs.js %>/main.min.js': [ - '<%= dirs.js %>/libs/*.js', // External libs/plugins - '<%= dirs.js %>/main.js' // Custom JavaScript - ] - } - }, - bootstrap: { - files: { - '<%= dirs.js %>/libs/bootstrap.min.js': [ - '<%= dirs.js %>/bootstrap/transition.js', - '<%= dirs.js %>/bootstrap/alert.js', - '<%= dirs.js %>/bootstrap/button.js', - '<%= dirs.js %>/bootstrap/carousel.js', - '<%= dirs.js %>/bootstrap/collapse.js', - '<%= dirs.js %>/bootstrap/dropdown.js', - '<%= dirs.js %>/bootstrap/modal.js', - '<%= dirs.js %>/bootstrap/tooltip.js', - '<%= dirs.js %>/bootstrap/popover.js', - '<%= dirs.js %>/bootstrap/scrollspy.js', - '<%= dirs.js %>/bootstrap/tab.js', - '<%= dirs.js %>/bootstrap/affix.js' - ] - } - } - }, - - // compile scss/sass files to CSS - sass: { - dist: { - options: { - style: 'compressed', - sourcemap: 'none' - }, - files: [{ - expand: true, - cwd: '<%= dirs.sass %>', - src: ['*.scss'], - dest: '<%= dirs.css %>', - ext: '.css' - }] - } - }, - - // watch for changes and trigger sass, jshint, uglify and livereload browser - watch: { - sass: { - files: [ - '<%= dirs.sass %>/**' - ], - tasks: ['sass'] - }, - js: { - files: [ - '<%= jshint.all %>' - ], - tasks: ['jshint', 'uglify'] - }, - livereload: { - options: { - livereload: true - }, - files: [ - '<%= dirs.css %>/*.css', - '<%= dirs.js %>/*.js', - '../**/*.php' - ] - }, - options: { - spawn: false - } - }, - - // image optimization - imagemin: { - dist: { - options: { - optimizationLevel: 7, - progressive: true - }, - files: [{ - expand: true, - filter: 'isFile', - cwd: '<%= dirs.images %>/', - src: '**/*.{png,jpg,gif}', - dest: '<%= dirs.images %>/' - }] - } - }, - - // deploy via rsync - rsync: { - options: { - args: ['--verbose'], - exclude: [ - '**.DS_Store', - '**Thumbs.db', - '.editorconfig', - '.git/', - '.gitignore', - '.jshintrc', - 'sass/', - 'src/', - 'README.md', - '.ftppass' - ], - recursive: true, - syncDest: true - }, - staging: { - options: { - src: '../', - dest: '~/PATH/wp-content/themes/odin', - host: 'user@host.com' - } - }, - production: { - options: { - src: '../', - dest: '~/PATH/wp-content/themes/odin', - host: 'user@host.com' - } - } - }, - - // ftp deploy - // ref: https://npmjs.org/package/grunt-ftp-deploy - 'ftp-deploy': { - build: { - auth: { - host: 'ftp.SEU-SITE.com', - port: 21, - authPath: '../.ftppass', - authKey: 'key_for_deploy' - }, - src: '../', - dest: '/PATH/wp-content/themes/odin', - exclusions: [ - '../**.DS_Store', - '../**Thumbs.db', - '../.git/*', - '../*.md', - '../.gitignore', - '../assets/js/**bootstrap', - '../assets/js/**libs', - '../assets/js/plugins.js', - '../assets/js/main.js', - '../*.zip', - '../*.sublime-project', - '../*.sublime-workspace', - '../src/**', - '../.ftppass' - ] - } - }, - - // zip the theme - zip: { - dist: { - cwd: '../', - src: [ - '../**', - '!../src/**', - '!../**.md', - '!<%= dirs.sass %>/**', - '!<%= dirs.js %>/bootstrap/**', - '!<%= dirs.js %>/libs/**', - '!../**.zip', - '<%= dirs.js %>/main.min.js' - ], - dest: '../<%= pkg.name %>.zip' - } - }, - - // downloads dependencies - curl: { - bootstrap_sass: { - src: 'https://github.com/twbs/bootstrap-sass/archive/master.zip', - dest: '<%= dirs.tmp %>/bootstrap-sass.zip' - }, - woocommerce_sass: { - src: 'https://github.com/woothemes/woocommerce/archive/master.zip', - dest: '<%= dirs.tmp %>/woocommerce-sass.zip' - } - }, - - // unzip files - unzip: { - bootstrap_scss: { - src: '<%= dirs.tmp %>/bootstrap-sass.zip', - dest: '<%= dirs.tmp %>/' - }, - woocommerce_scss: { - src: '<%= dirs.tmp %>/woocommerce-sass.zip', - dest: '<%= dirs.tmp %>/' - } - }, - - // renames and moves directories and files - rename: { - bootstrap_scss: { - src: '<%= dirs.tmp %>/bootstrap-sass-master/assets/stylesheets', - dest: '<%= dirs.sass %>/bootstrap' - }, - bootstrap_js: { - src: '<%= dirs.tmp %>/bootstrap-sass-master/assets/javascripts/bootstrap', - dest: '<%= dirs.js %>/bootstrap' - }, - bootstrap_fonts: { - src: '<%= dirs.tmp %>/bootstrap-sass-master/assets/fonts/bootstrap', - dest: '<%= dirs.fonts %>/bootstrap' - }, - woocommerce_scss: { - src: '<%= dirs.tmp %>/woocommerce-master/assets/css', - dest: '<%= dirs.sass %>/woocommerce' - }, - woocommerce_scss_woocommerce: { - src: '<%= dirs.sass %>/woocommerce/woocommerce.scss', - dest: '<%= dirs.sass %>/woocommerce/_woocommerce.scss' - }, - woocommerce_scss_woocommerce_layout: { - src: '<%= dirs.sass %>/woocommerce/woocommerce-layout.scss', - dest: '<%= dirs.sass %>/woocommerce/_woocommerce-layout.scss' - }, - woocommerce_scss_woocommerce_smallscreen: { - src: '<%= dirs.sass %>/woocommerce/woocommerce-smallscreen.scss', - dest: '<%= dirs.sass %>/woocommerce/_woocommerce-smallscreen.scss' - }, - woocommerce_fonts: { - src: '<%= dirs.tmp %>/woocommerce-master/assets/fonts', - dest: '<%= dirs.fonts %>/woocommerce' - }, - woocommerce_images: { - src: '<%= dirs.tmp %>/woocommerce-master/assets/images', - dest: '<%= dirs.images %>/woocommerce' - } - }, - - // clean directories and files - clean: { - options: { - force: true - }, - bootstrap_prepare: [ - '<%= dirs.tmp %>', - '<%= dirs.sass %>/bootstrap/', - '<%= dirs.js %>/bootstrap/', - '<%= dirs.js %>/libs/bootstrap.min.js', - '<%= dirs.fonts %>/bootstrap/' - ], - bootstrap: [ - '<%= dirs.tmp %>' - ], - woocommerce_prepare: [ - '<%= dirs.tmp %>', - '<%= dirs.sass %>/woocommerce/', - '<%= dirs.fonts %>/woocommerce/', - '<%= dirs.images %>/woocommerce/' - ], - woocommerce: [ - '<%= dirs.sass %>/woocommerce/{activation,admin,chosen,dashboard,menu,prettyPhoto,reports-print,select2}**', - '<%= dirs.sass %>/woocommerce/*.css', - '<%= dirs.tmp %>' - ] - }, - - replace: { - woocommerce: { - src: ['<%= dirs.sass %>/woocommerce/*.scss'], - overwrite: true, - replacements: [{ - from: /@import ".+";\n/g, - to: '' - },{ - from: '../fonts/', - to: '../fonts/woocommerce/' - },{ - from: '../images/', - to: '../images/woocommerce/' - }] - } - } - - }; - - // Initialize Grunt Config - // -------------------------- - grunt.initConfig( odinConfig ); - - // Register Tasks - // -------------------------- - - // Default Task - grunt.registerTask( 'default', [ - 'jshint', - 'sass', - 'uglify' - ] ); - - // Optimize Images Task - grunt.registerTask( 'optimize', ['imagemin'] ); - - // Deploy Tasks - grunt.registerTask( 'ftp', ['ftp-deploy'] ); - - // Compress - grunt.registerTask( 'compress', [ - 'default', - 'zip' - ] ); - - // Bootstrap Task - grunt.registerTask( 'bootstrap', [ - 'clean:bootstrap_prepare', - 'curl:bootstrap_sass', - 'unzip:bootstrap_scss', - 'rename:bootstrap_scss', - 'rename:bootstrap_js', - 'rename:bootstrap_fonts', - 'clean:bootstrap', - 'uglify:bootstrap', - 'sass' - ] ); - - // Woocommerce Task - grunt.registerTask( 'woo', [ - 'clean:woocommerce_prepare', - 'curl:woocommerce_sass', - 'unzip:woocommerce_scss', - 'rename:woocommerce_scss', - 'rename:woocommerce_scss_woocommerce', - 'rename:woocommerce_scss_woocommerce_layout', - 'rename:woocommerce_scss_woocommerce_smallscreen', - 'rename:woocommerce_fonts', - 'rename:woocommerce_images', - 'clean:woocommerce', - 'replace:woocommerce', - 'sass' - ] ); - - // Short aliases - grunt.registerTask( 'w', ['watch'] ); - grunt.registerTask( 'o', ['optimize'] ); - grunt.registerTask( 'f', ['ftp'] ); - grunt.registerTask( 'r', ['rsync'] ); - grunt.registerTask( 'c', ['compress'] ); -}; diff --git a/src/README.md b/src/README.md deleted file mode 100644 index 7396144..0000000 --- a/src/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# Grunt.js # -> O Grunt é uma ferramenta capaz de automatizar diversas tarefas, como: concatenação, minificação e validação de arquivos, otimização de imagem, testes unitários, deploy de arquivos por ftp ou rsync, entre outras. - -O Grunt vem integrado ao **Odin**, e para utilizá-lo é necessário ter instalado o [Node.js](http://nodejs.org/). - -## Instalação Node ## - -Clique [aqui](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager) para instalar o Node na sua máquina. - -## Instalação do Grunt ## - -Com o Node instalado na sua máquina, você precisa instalar o Grunt. Execute o comando abaixo, para iniciar a instalação do Grunt. - -```bash -$ sudo npm install -g grunt-cli -``` - -## Instalação dos pacotes do Grunt no Odin ## - -Com o Grunt instalado, é hora de instalar as dependências responsáveis pela execução das tarefas do Grunt no seu projeto. - -```bash -$ cd ROOT_PATH/wp-content/themes/odin/src/ -$ sudo npm install -``` - -## Configuração no wp-config.php ## - -Para usar os arquivos de JavaScript **não minificados** pelo *Grunt* você deve declarar a constante [SCRIPT_DEBUG](https://codex.wordpress.org/Debugging_in_WordPress#SCRIPT_DEBUG), em seu arquivo `wp-config.php`. - -## Configuração no functions.php ## - -Para usar a tarefa de LiveReload, pesquise no arquivo `functions.php` por: *watch livereload*, e logo abaixo descomente o seguinte código: - -```php -wp_enqueue_script( 'odin-livereload', 'http://localhost:35729/livereload.js?snipver=1', array(), null, true ); -``` - -## Tarefas Disponíveis ## - -*ATENÇÃO: Todos os comandos a seguir devem ser executados dentro da pasta `src`*. - -### Compilar arquivos do Sass, minificar e validar scripts: ### - -```bash -$ grunt -``` - -### Observar as mudanças no seu projeto ### - -```bash -$ grunt watch -``` - -### Comprimir imagens na pasta `images/`: ### - -```bash -$ grunt optimize -``` - -### Atualizar os arquivos do Bootstrap: ### - -```bash -$ grunt bootstrap -``` - -### Fazer o deploy dos arquivos: ### - -#### 1. via FTP #### - -```bash -$ grunt ftp -``` - -#### 2. via rsync #### - -```bash -$ grunt rsync -``` diff --git a/src/package.json b/src/package.json deleted file mode 100644 index 9010eee..0000000 --- a/src/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "odin", - "description": "Tema base para desenvolvimento em WordPress", - "version": "2.3.0", - "title": "Odin Framework", - "homepage": "http://wpod.in/", - "main": "Gruntfile.js", - "devDependencies": { - "grunt": "~1.0.1", - "load-grunt-tasks": "~3.5.2", - "grunt-contrib-watch": "~1.0.0", - "grunt-contrib-clean": "~1.0.0", - "grunt-contrib-sass": "~1.0.0", - "grunt-contrib-jshint": "~1.0.0", - "grunt-contrib-uglify": "~2.0.0", - "grunt-contrib-imagemin": "~1.0.0", - "grunt-rsync": "~2.0.0", - "grunt-ftp-deploy": "~0.1.10", - "grunt-curl": "~2.2.0", - "grunt-zip": "~0.17.1", - "grunt-rename": "~0.1.4", - "grunt-text-replace": "~0.4.0", - "glob-watcher": "~3.0.0", - "minimist": "~1.2.0", - "readable-stream": "~2.1.5" - }, - "engines": { - "node": ">=0.10.1", - "npm": ">=1.1.0" - } -} diff --git a/style.css b/style.css index f54757b..b3c9577 100644 --- a/style.css +++ b/style.css @@ -1,15 +1,15 @@ /* -Theme Name: Odin -Theme URI: https://github.com/wpbrasil/odin -Description: Base theme for development with WordPress. -Author: Grupo WordPress Brasil -Author URI: http://www.facebook.com/groups/wordpress.brasil/ -Version: 2.3.0 -Tags: light, gray, white, one-column, two-columns, right-sidebar, flexible-width, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, translation-ready -License: GNU General Public License v2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html -Text Domain: odin +Theme Name: Odin +Theme URI: http://wpod.in +Description: Base Theme for developing WordPress. +Version: 3.0.0 +Author: WordPress Brasil +Author URI: https://github.com/wpbrasil +Text Domain: odin + +License: MIT +License URI: http://opensource.org/licenses/MIT Don't add css in this file! -The theme css is in assets/css/style.css +The theme css is in src/css/theme.scss */ diff --git a/tag.php b/tag.php deleted file mode 100644 index ec42772..0000000 --- a/tag.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** - * The template for displaying Tag pages. - * - * Used to display archive-type pages for posts in a tag. - * - * @link http://codex.wordpress.org/Template_Hierarchy - * - * @package Odin - * @since 2.2.0 - */ - -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - - <?php if ( have_posts() ) : ?> - - <header class="page-header"> - <?php - the_archive_title( '<h1 class="page-title">', '</h1>' ); - the_archive_description( '<div class="taxonomy-description">', '</div>' ); - ?> - </header><!-- .page-header --> - - <?php - // Start the Loop. - while ( have_posts() ) : the_post(); - - /* - * Include the post format-specific template for the content. If you want to - * use this in a child theme, then include a file called content-___.php - * (where ___ is the post format) and that will be used instead. - */ - get_template_part( 'content', get_post_format() ); - - endwhile; - - // Page navigation. - odin_paging_nav(); - - else : - // If no content, include the "No posts found" template. - get_template_part( 'content', 'none' ); - - endif; - ?> - - </main><!-- #content --> - -<?php -get_sidebar(); -get_footer(); diff --git a/video.php b/video.php deleted file mode 100644 index 8120712..0000000 --- a/video.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * The template for displaying video attachments. - * - * @link http://codex.wordpress.org/Template_Hierarchy - * - * @package Odin - * @since 2.2.0 - */ - -get_header(); ?> - - <main id="content" class="<?php echo odin_classes_page_sidebar(); ?>" tabindex="-1" role="main"> - - <?php while ( have_posts() ) : the_post(); ?> - <article <?php post_class(); ?>> - <header class="entry-header"> - <h1 class="entry-title"><?php the_title(); ?></h1> - </header><!-- .entry-header --> - <div class="entry-content entry-attachment"> - <?php echo wp_video_shortcode( array( 'src' => wp_get_attachment_url() ) ); ?> - - <p><strong><?php _e( 'URL:', 'odin' ); ?></strong> <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="attachment"><span><?php echo basename( wp_get_attachment_url() ); ?></span></a></p> - - <?php the_content(); ?> - - <?php if ( ! empty( $post->post_parent ) ) : ?> - <ul class="pager page-title"> - <li class="previous"><a href="<?php echo esc_url( get_permalink( $post->post_parent ) ); ?>" title="<?php echo esc_attr( sprintf( __( 'Back to %s', 'odin' ), strip_tags( get_the_title( $post->post_parent ) ) ) ); ?>"><?php printf( __( '<span class="meta-nav">←</span> %s', 'odin' ), get_the_title( $post->post_parent ) ); ?></a></li> - </ul><!-- .pager --> - <?php endif; ?> - </div><!-- .entry-content --> - </article> - <?php endwhile; ?> - - </main><!-- #content --> - -<?php -get_footer();