Commit 3a51ff91 authored by Rodrigo Tapia-McClung's avatar Rodrigo Tapia-McClung

Startup screen + nice layout

parent 47bb6609
/*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="casetapeaje" d="M510.375 768.625v-28.375c-14.514-1.181-25.875-5.292-34-12.375-8.056-7.083-12-15.722-12-26 0-8.403 2.444-15.486 7.375-21.25 4.931-5.694 13.056-10.028 24.375-12.875 2.014-0.556 4.139-1.069 6.5-1.625 2.361-0.486 4.972-1.069 7.75-1.625v-45c-5.486 0.208-10.639 0.764-15.5 1.875-4.792 1.181-9.014 2.431-12.625 3.75-3.194 1.181-6.472 2.694-9.875 4.5-3.403 1.875-5.806 3.278-7.125 4.25h-1.625v-20.625c5.903-2.708 12.819-4.889 20.875-6.625 8.056-1.667 16.708-2.556 25.875-2.625v-37.125h12.25v37.625c13.611 1.319 24.722 5.542 33.125 12.625 8.403 7.153 12.5 16.111 12.5 26.875 0 9.375-2.806 16.833-8.5 22.25-5.625 5.417-13.653 9.153-24 11.375-1.806 0.347-3.819 0.819-6.25 1.375-2.431 0.625-4.792 1.153-6.875 1.5v44.875c9.236-0.625 16.75-2.125 22.375-4.625 5.694-2.431 11.167-5.306 16.375-8.5h1.375v20.375c-5 2.014-11.139 3.847-18.5 5.375s-14.611 2.361-21.625 2.5v28.125zM510.375 725.25v-43c-10.069 2.153-17 4.806-20.75 8s-5.625 7.931-5.625 14.25c0 6.25 2.556 11.153 7.625 14.625 5.069 3.542 11.319 5.569 18.75 6.125zM522.625 662.75c9.167-1.736 15.847-4.069 19.875-7.125 4.097-2.986 6.125-7.722 6.125-14.25 0-6.806-2.236-11.972-6.75-15.375-4.444-3.403-10.917-5.542-19.25-6.375zM128 544v-64h32v-160h59.25v160h71.125v-160h59.25v160h60v-96h204.75v96h60v-160h59.25v160h68.75v-160h59.25v160h34.375v64z" />
<glyph unicode="&#xe901;" glyph-name="desechos" d="M511.937 960c-282.061 0-511.937-229.88-511.937-511.937s229.875-512.063 511.937-512.063c282.061 0 512.063 230.007 512.063 512.063s-230.002 511.937-512.063 511.937z" />
<glyph unicode="&#xe902;" glyph-name="escuela" d="M497.375 800v-266.625l334.625 106.625zM487.875 765.875l-1.75-567.75h3.5zM384.25 186v-185.75h197.5v185.75z" />
<glyph unicode="&#xe905;" glyph-name="presa" d="M419.875 922.875l-355.875-465.375 355.875-465.25zM559.5 882.5v-882.5h16.5v882.5z" />
<glyph unicode="&#xe906;" glyph-name="puente" d="M93.75 843.875l-59.5-23.75 136.125-340.125h683.25l136.125 340.125-59.5 23.75-119.875-299.875h-596.75zM170.375 416l-136.125-340.125 59.5-23.75 119.875 299.875h596.75l119.875-299.875 59.5 23.75-136.125 340.125z" />
<glyph unicode="&#xe907;" glyph-name="puertoindustrial" d="M111.625 859.375v-896h896v896zM175.625 795.375h352v-352h-352zM591.625 795.375h352v-352h-352zM353.75 757.25c-18.222 0-34.875-2.833-49.875-8.5-14.889-5.667-27.569-13.972-38.125-24.75-10.889-11.111-19.222-24.639-25-40.75s-8.625-34.431-8.625-54.875c0-21.556 3-40.542 9-56.875 6-16.222 14.333-29.569 25-40.125 10.889-10.778 23.583-18.764 38.25-23.875 14.778-5 31.25-7.5 49.25-7.5 9.556 0 18.236 0.819 26.125 2.375 8 1.444 15.347 3.264 22.125 5.375 8 2.556 14.486 4.917 19.375 7.25 5 2.333 10.514 4.833 16.625 7.5v38.75h-2.25c-12.111-10.889-25.111-19.056-39-24.5s-28.861-8.25-44.75-8.25c-11.556 0-22.556 1.986-33 5.875-10.333 4-19.347 10.153-27.125 18.375-7.444 7.889-13.597 18.069-18.375 30.625-4.667 12.556-7 27.556-7 45 0 16.667 2.153 31.333 6.375 44 4.333 12.778 10.333 23.292 18 31.625 7.889 8.556 16.875 14.875 26.875 18.875 10.111 4.111 21.444 6.125 34 6.125 15.333 0 29.681-2.528 43.125-7.75s26.958-13.556 40.625-25h2.5v39.125c-16.222 8.111-30.917 13.778-44.25 17-13.222 3.222-26.542 4.875-39.875 4.875zM704.625 757.25v-248.25h33v92.5h33c17.778 0 32.583 2.153 44.25 6.375 11.667 4.333 21.694 10.819 30.25 19.375 6.889 6.889 12.222 14.917 16 24.25 3.889 9.444 5.875 19.75 5.875 30.75 0 14.444-2.653 26.306-7.875 35.75-5.111 9.444-12.306 17.417-21.75 23.75-8 5.333-17.167 9.181-27.5 11.625-10.333 2.556-22.986 3.875-37.875 3.875zM737.625 728.875h32.75c10.444 0 18.972-0.819 25.75-2.375 6.889-1.444 13.042-3.806 18.375-7.25 6.111-4 10.625-9.167 13.625-15.5s4.5-13.819 4.5-22.375c0-7.333-1.028-13.986-3.25-19.875-2.111-5.889-5.778-11.417-11-16.75-5.222-5.222-12.042-9.056-20.375-11.5-8.333-2.333-19.167-3.5-32.5-3.5h-27.875zM128 416h448v-416h-448zM175.625 379.375v-352h352v352zM591.625 379.375h352v-352h-352zM286 320h98v-25.375h-32.5v-197.5h32.5v-25.25h-98v25.25h32.5v197.5h-32.5zM680.625 320v-29.375h88.75v-218.75h33v218.75h88.625v29.375z" />
<glyph unicode="&#xe908;" glyph-name="puntofronterizo" d="M640 640v-192h-256v-320h576v512zM128 320v-30.875h30.875v30.875z" />
<glyph unicode="&#xe97a;" glyph-name="spinner" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM655.53 719.53c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM832 448c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM719.53 176.47c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM448.002 64c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM176.472 176.47c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM144.472 719.53c0 0 0 0 0 0 0 53.019 42.981 96 96 96s96-42.981 96-96c0 0 0 0 0 0 0-53.019-42.981-96-96-96s-96 42.981-96 96zM56 448c0 39.765 32.235 72 72 72s72-32.235 72-72c0-39.765-32.235-72-72-72s-72 32.235-72 72z" />
<glyph unicode="&#xe97b;" glyph-name="spinner2" d="M1024 448c-1.278 66.862-15.784 133.516-42.576 194.462-26.704 61-65.462 116.258-113.042 161.92-47.552 45.696-103.944 81.82-164.984 105.652-61.004 23.924-126.596 35.352-191.398 33.966-64.81-1.282-129.332-15.374-188.334-41.356-59.048-25.896-112.542-63.47-156.734-109.576-44.224-46.082-79.16-100.708-102.186-159.798-23.114-59.062-34.128-122.52-32.746-185.27 1.286-62.76 14.964-125.148 40.134-182.206 25.088-57.1 61.476-108.828 106.11-151.548 44.61-42.754 97.472-76.504 154.614-98.72 57.118-22.304 118.446-32.902 179.142-31.526 60.708 1.29 120.962 14.554 176.076 38.914 55.15 24.282 105.116 59.48 146.366 102.644 41.282 43.14 73.844 94.236 95.254 149.43 13.034 33.458 21.88 68.4 26.542 103.798 1.246-0.072 2.498-0.12 3.762-0.12 35.346 0 64 28.652 64 64 0 1.796-0.094 3.572-0.238 5.332h0.238zM922.306 278.052c-23.472-53.202-57.484-101.4-99.178-141.18-41.67-39.81-91-71.186-144.244-91.79-53.228-20.678-110.29-30.452-166.884-29.082-56.604 1.298-112.596 13.736-163.82 36.474-51.25 22.666-97.684 55.49-135.994 95.712-38.338 40.198-68.528 87.764-88.322 139.058-19.87 51.284-29.228 106.214-27.864 160.756 1.302 54.552 13.328 108.412 35.254 157.69 21.858 49.3 53.498 93.97 92.246 130.81 38.73 36.868 84.53 65.87 133.874 84.856 49.338 19.060 102.136 28.006 154.626 26.644 52.5-1.306 104.228-12.918 151.562-34.034 47.352-21.050 90.256-51.502 125.624-88.782 35.396-37.258 63.21-81.294 81.39-128.688 18.248-47.392 26.782-98.058 25.424-148.496h0.238c-0.144-1.76-0.238-3.536-0.238-5.332 0-33.012 24.992-60.174 57.086-63.624-6.224-34.822-16.53-68.818-30.78-100.992z" />
<glyph unicode="&#xe97c;" glyph-name="spinner3" d="M512 656.904c-32.964 0-59.686 26.724-59.686 59.686v179.060c0 32.964 26.722 59.686 59.686 59.686 32.962 0 59.688-26.722 59.688-59.686v-179.060c0-32.964-26.726-59.686-59.688-59.686zM512-36.956c-20.602 0-37.304 16.702-37.304 37.304v179.060c0 20.602 16.702 37.304 37.304 37.304 20.604 0 37.304-16.704 37.304-37.304v-179.060c0-20.602-16.7-37.304-37.304-37.304zM377.756 624.64c-19.34 0-38.146 10.034-48.512 27.988l-89.53 155.070c-15.452 26.764-6.282 60.986 20.482 76.438 26.762 15.45 60.986 6.284 76.438-20.482l89.53-155.072c15.452-26.764 6.282-60.986-20.482-76.438-8.81-5.084-18.432-7.504-27.926-7.504zM735.856 26.744c-11.602 0-22.886 6.022-29.108 16.792l-89.53 155.070c-9.27 16.056-3.77 36.592 12.29 45.864 16.056 9.264 36.59 3.77 45.864-12.292l89.532-155.068c9.27-16.058 3.768-36.592-12.292-45.864-5.286-3.048-11.060-4.502-16.756-4.502zM279.344 530.060c-8.86 0-17.838 2.256-26.064 7.006l-155.072 89.53c-24.978 14.422-33.538 46.362-19.116 71.342 14.42 24.978 46.364 33.538 71.342 19.116l155.070-89.53c24.98-14.422 33.538-46.362 19.116-71.34-9.668-16.756-27.226-26.124-45.276-26.124zM899.648 194.326c-5.064 0-10.196 1.29-14.894 4.004l-155.068 89.53c-14.274 8.24-19.164 26.494-10.924 40.768 8.242 14.276 26.496 19.166 40.766 10.924l155.070-89.532c14.274-8.24 19.164-26.492 10.924-40.766-5.53-9.574-15.562-14.928-25.874-14.928zM243.41 399.504h-179.060c-26.784 0-48.496 21.712-48.496 48.496s21.712 48.496 48.496 48.496h179.060c26.784 0 48.496-21.712 48.496-48.496s-21.712-48.496-48.496-48.496zM959.65 418.156c-0.002 0 0 0 0 0h-179.060c-16.482 0.002-29.844 13.364-29.844 29.844s13.364 29.844 29.844 29.844c0.002 0 0 0 0 0h179.060c16.482 0 29.844-13.362 29.844-29.844 0-16.48-13.364-29.844-29.844-29.844zM124.366 179.402c-15.472 0-30.518 8.028-38.81 22.39-12.362 21.41-5.026 48.79 16.384 61.148l155.072 89.532c21.41 12.368 48.79 5.028 61.15-16.384 12.362-21.412 5.026-48.79-16.384-61.15l-155.072-89.53c-7.050-4.070-14.748-6.006-22.34-6.006zM744.632 552.448c-10.314 0-20.346 5.352-25.874 14.926-8.24 14.274-3.35 32.526 10.924 40.768l155.070 89.528c14.272 8.236 32.526 3.352 40.768-10.922 8.24-14.274 3.35-32.526-10.924-40.768l-155.070-89.528c-4.7-2.714-9.83-4.004-14.894-4.004zM288.136 19.284c-6.962 0-14.016 1.774-20.48 5.504-19.626 11.332-26.35 36.428-15.020 56.054l89.53 155.070c11.33 19.628 36.426 26.352 56.054 15.022 19.626-11.332 26.35-36.43 15.020-56.054l-89.53-155.072c-7.598-13.166-21.392-20.524-35.574-20.524zM646.266 650.758c-5.062 0-10.196 1.29-14.894 4.002-14.274 8.242-19.164 26.494-10.924 40.766l89.534 155.070c8.24 14.274 26.492 19.166 40.766 10.922 14.274-8.242 19.164-26.494 10.924-40.766l-89.532-155.070c-5.53-9.57-15.56-14.924-25.874-14.924z" />
<glyph unicode="&#xe97d;" glyph-name="spinner4" d="M192 448c0 12.18 0.704 24.196 2.030 36.022l-184.98 60.104c-5.916-31.14-9.050-63.264-9.050-96.126 0-147.23 62.166-279.922 161.654-373.324l114.284 157.296c-52.124 56.926-83.938 132.758-83.938 216.028zM832 448c0-83.268-31.812-159.102-83.938-216.028l114.284-157.296c99.488 93.402 161.654 226.094 161.654 373.324 0 32.862-3.132 64.986-9.048 96.126l-184.98-60.104c1.324-11.828 2.028-23.842 2.028-36.022zM576 761.592c91.934-18.662 169.544-76.742 214.45-155.826l184.978 60.102c-73.196 155.42-222.24 268.060-399.428 290.156v-194.432zM233.55 605.768c44.906 79.084 122.516 137.164 214.45 155.826v194.43c-177.188-22.096-326.23-134.736-399.426-290.154l184.976-60.102zM644.556 156.672c-40.39-18.408-85.272-28.672-132.556-28.672s-92.166 10.264-132.554 28.67l-114.292-157.31c73.206-40.366 157.336-63.36 246.846-63.36s173.64 22.994 246.848 63.36l-114.292 157.312z" />
<glyph unicode="&#xe97e;" glyph-name="spinner5" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 704c141.384 0 256-114.616 256-256s-114.616-256-256-256-256 114.616-256 256 114.616 256 256 256zM817.47 142.53c-81.594-81.594-190.080-126.53-305.47-126.53-115.392 0-223.876 44.936-305.47 126.53s-126.53 190.078-126.53 305.47c0 115.39 44.936 223.876 126.53 305.47l67.882-67.882c0 0 0 0 0 0-131.006-131.006-131.006-344.17 0-475.176 63.462-63.462 147.838-98.412 237.588-98.412 89.748 0 174.124 34.95 237.588 98.412 131.006 131.006 131.006 344.168 0 475.176l67.882 67.882c81.594-81.594 126.53-190.080 126.53-305.47 0-115.392-44.936-223.876-126.53-305.47z" />
<glyph unicode="&#xe97f;" glyph-name="spinner6" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM790.994 448c0 0 0 0 0 0 0 57.993 47.013 105.006 105.006 105.006s105.006-47.013 105.006-105.006c0 0 0 0 0 0 0-57.993-47.013-105.006-105.006-105.006s-105.006 47.013-105.006 105.006zM688.424 176.47c0 52.526 42.58 95.106 95.106 95.106s95.106-42.58 95.106-95.106c0-52.526-42.58-95.106-95.106-95.106s-95.106 42.58-95.106 95.106zM425.862 64c0 47.573 38.565 86.138 86.138 86.138s86.138-38.565 86.138-86.138c0-47.573-38.565-86.138-86.138-86.138s-86.138 38.565-86.138 86.138zM162.454 176.47c0 43.088 34.93 78.018 78.018 78.018s78.018-34.93 78.018-78.018c0-43.088-34.93-78.018-78.018-78.018s-78.018 34.93-78.018 78.018zM57.338 448c0 39.026 31.636 70.662 70.662 70.662s70.662-31.636 70.662-70.662c0-39.026-31.636-70.662-70.662-70.662s-70.662 31.636-70.662 70.662zM176.472 719.528c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM899.464 719.528c0-64.024-51.906-115.934-115.936-115.934-64.024 0-115.936 51.91-115.936 115.934 0 64.032 51.912 115.934 115.936 115.934 64.030 0 115.936-51.902 115.936-115.934z" />
<glyph unicode="&#xe980;" glyph-name="spinner7" d="M416 32c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM0 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM832 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96z" />
<glyph unicode="&#xe981;" glyph-name="spinner8" d="M512-64c-136.76 0-265.334 53.258-362.040 149.96-96.702 96.706-149.96 225.28-149.96 362.040 0 96.838 27.182 191.134 78.606 272.692 50 79.296 120.664 143.372 204.356 185.3l43-85.832c-68.038-34.084-125.492-86.186-166.15-150.67-41.746-66.208-63.812-142.798-63.812-221.49 0-229.382 186.618-416 416-416s416 186.618 416 416c0 78.692-22.066 155.282-63.81 221.49-40.66 64.484-98.114 116.584-166.15 150.67l43 85.832c83.692-41.928 154.358-106.004 204.356-185.3 51.422-81.558 78.604-175.854 78.604-272.692 0-136.76-53.258-265.334-149.96-362.040-96.706-96.702-225.28-149.96-362.040-149.96z" />
<glyph unicode="&#xe982;" glyph-name="spinner9" d="M512 960c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-64c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" />
<glyph unicode="&#xe983;" glyph-name="spinner10" d="M0.042 446.382l-0.022-0.004c0 0 0.012-0.090 0.028-0.222 0.11-3.878 0.55-7.676 1.322-11.352 0.204-1.746 0.428-3.66 0.674-5.774 0.222-1.886 0.46-3.914 0.718-6.078 0.374-2.566 0.77-5.292 1.19-8.176 0.856-5.746 1.8-12.124 2.908-18.958 1.348-6.446 2.804-13.414 4.364-20.864 0.71-3.718 1.776-7.504 2.786-11.406 1.024-3.89 2.078-7.894 3.16-12.004 0.566-2.042 1.040-4.132 1.708-6.208 0.656-2.074 1.32-4.176 1.988-6.3 1.348-4.234 2.726-8.566 4.136-12.988 0.352-1.106 0.708-2.21 1.064-3.324 0.408-1.102 0.814-2.208 1.226-3.316 0.826-2.218 1.658-4.458 2.502-6.714 1.696-4.496 3.422-9.078 5.18-13.742 1.968-4.566 3.97-9.214 6.004-13.934 1.018-2.348 2.044-4.714 3.078-7.098 1.048-2.376 2.27-4.704 3.408-7.074 2.322-4.714 4.678-9.496 7.062-14.332 2.47-4.786 5.208-9.512 7.846-14.328 1.336-2.398 2.68-4.808 4.028-7.23 1.368-2.41 2.902-4.75 4.356-7.14 2.95-4.738 5.93-9.524 8.934-14.348 12.64-18.894 26.676-37.566 42.21-55.278 15.712-17.578 32.726-34.25 50.692-49.602 18.18-15.136 37.264-28.902 56.726-41.114 19.604-12.036 39.644-22.312 59.376-31.144 5.004-2.040 9.964-4.062 14.878-6.066 2.462-0.972 4.868-2.032 7.336-2.918 2.47-0.868 4.93-1.734 7.376-2.594 4.898-1.684 9.678-3.468 14.484-4.992 4.832-1.43 9.604-2.844 14.312-4.242 2.356-0.672 4.66-1.426 7.004-2.012 2.346-0.574 4.676-1.14 6.986-1.704 4.606-1.118 9.142-2.214 13.604-3.296 4.5-0.868 8.926-1.722 13.27-2.558 2.166-0.41 4.31-0.82 6.434-1.222 1.062-0.2 2.118-0.398 3.166-0.598 1.060-0.148 2.118-0.292 3.166-0.442 4.192-0.582 8.292-1.152 12.3-1.71 1.998-0.274 3.972-0.546 5.922-0.816 1.946-0.286 3.904-0.378 5.814-0.57 3.822-0.336 7.544-0.664 11.164-0.98 3.616-0.304 7.104-0.688 10.526-0.738 0.23-0.008 0.452-0.016 0.682-0.026 0.614-34.812 29.008-62.846 63.968-62.846 0.542 0 1.080 0.028 1.62 0.042v-0.022c0 0 0.090 0.012 0.224 0.028 3.878 0.11 7.674 0.55 11.35 1.322 1.748 0.204 3.662 0.426 5.776 0.672 1.884 0.222 3.912 0.462 6.076 0.718 2.566 0.376 5.292 0.772 8.176 1.192 5.746 0.856 12.124 1.8 18.958 2.908 6.446 1.348 13.414 2.804 20.864 4.362 3.718 0.712 7.504 1.778 11.406 2.786 3.892 1.026 7.894 2.080 12.004 3.162 2.044 0.566 4.132 1.040 6.208 1.708 2.074 0.656 4.174 1.318 6.3 1.988 4.232 1.348 8.564 2.726 12.988 4.134 1.104 0.354 2.21 0.708 3.324 1.066 1.1 0.406 2.206 0.814 3.316 1.226 2.216 0.824 4.456 1.658 6.714 2.5 4.496 1.698 9.078 3.424 13.74 5.182 4.568 1.968 9.216 3.97 13.936 6.004 2.348 1.018 4.714 2.044 7.098 3.078 2.376 1.048 4.702 2.27 7.074 3.408 4.714 2.322 9.494 4.678 14.33 7.062 4.786 2.47 9.512 5.208 14.328 7.846 2.398 1.336 4.808 2.678 7.23 4.028 2.41 1.366 4.75 2.9 7.14 4.354 4.738 2.952 9.524 5.93 14.35 8.936 18.89 12.64 37.564 26.674 55.278 42.21 17.574 15.712 34.248 32.726 49.602 50.69 15.136 18.182 28.902 37.264 41.112 56.728 12.036 19.602 22.314 39.644 31.142 59.376 2.042 5.002 4.062 9.964 6.068 14.878 0.974 2.462 2.032 4.868 2.918 7.334 0.87 2.472 1.732 4.932 2.592 7.376 1.686 4.898 3.468 9.678 4.994 14.484 1.432 4.832 2.846 9.604 4.24 14.31 0.674 2.358 1.43 4.66 2.016 7.004 0.57 2.348 1.138 4.676 1.702 6.988 1.118 4.606 2.216 9.14 3.296 13.602 0.868 4.502 1.72 8.928 2.558 13.272 0.41 2.164 0.818 4.308 1.222 6.434 0.2 1.060 0.398 2.116 0.596 3.164 0.148 1.062 0.296 2.118 0.444 3.168 0.582 4.19 1.152 8.292 1.708 12.3 0.278 1.996 0.55 3.97 0.82 5.922 0.284 1.946 0.376 3.902 0.568 5.812 0.336 3.822 0.664 7.546 0.98 11.164 0.304 3.616 0.686 7.106 0.738 10.528 0.020 0.534 0.040 1.044 0.058 1.574 35.224 0.146 63.732 28.738 63.732 63.992 0 0.542-0.028 1.080-0.042 1.62h0.022c0 0-0.012 0.090-0.028 0.224-0.11 3.878-0.55 7.674-1.322 11.35-0.204 1.748-0.428 3.662-0.674 5.776-0.222 1.886-0.46 3.914-0.718 6.076-0.374 2.566-0.77 5.294-1.19 8.176-0.856 5.746-1.8 12.124-2.908 18.958-1.348 6.444-2.804 13.414-4.364 20.862-0.71 3.72-1.776 7.506-2.786 11.408-1.024 3.892-2.078 7.894-3.16 12.002-0.566 2.044-1.040 4.134-1.708 6.208-0.656 2.076-1.32 4.174-1.988 6.3-1.348 4.234-2.726 8.566-4.136 12.99-0.352 1.102-0.708 2.21-1.064 3.324-0.408 1.1-0.814 2.206-1.226 3.316-0.826 2.216-1.658 4.454-2.502 6.714-1.696 4.498-3.422 9.080-5.18 13.74-1.968 4.57-3.97 9.216-6.004 13.936-1.020 2.348-2.044 4.714-3.078 7.098-1.048 2.376-2.27 4.702-3.408 7.076-2.322 4.714-4.678 9.494-7.062 14.33-2.47 4.786-5.208 9.512-7.846 14.328-1.336 2.398-2.68 4.808-4.028 7.23-1.368 2.41-2.902 4.75-4.356 7.14-2.95 4.74-5.93 9.524-8.934 14.35-12.64 18.892-26.676 37.564-42.21 55.278-15.712 17.576-32.726 34.25-50.692 49.602-18.18 15.136-37.264 28.902-56.726 41.112-19.604 12.036-39.644 22.314-59.376 31.142-5.004 2.040-9.964 4.062-14.878 6.068-2.462 0.974-4.868 2.032-7.336 2.918-2.47 0.87-4.93 1.734-7.376 2.592-4.898 1.684-9.678 3.468-14.484 4.994-4.832 1.432-9.604 2.846-14.312 4.242-2.356 0.672-4.66 1.428-7.004 2.014-2.346 0.572-4.676 1.138-6.986 1.702-4.606 1.118-9.142 2.216-13.604 3.298-4.5 0.868-8.926 1.72-13.27 2.558-2.166 0.412-4.31 0.82-6.434 1.222-1.062 0.2-2.118 0.398-3.166 0.596-1.060 0.148-2.118 0.296-3.166 0.442-4.192 0.584-8.292 1.154-12.3 1.71-1.998 0.276-3.972 0.55-5.922 0.82-1.946 0.284-3.904 0.376-5.814 0.57-3.822 0.336-7.544 0.664-11.164 0.98-3.616 0.304-7.104 0.686-10.526 0.738-0.852 0.032-1.674 0.062-2.512 0.092-0.65 34.78-29.028 62.778-63.966 62.778-0.542 0-1.080-0.028-1.62-0.042l-0.002 0.022c0 0-0.090-0.012-0.222-0.028-3.878-0.11-7.676-0.55-11.352-1.322-1.748-0.204-3.662-0.426-5.776-0.672-1.884-0.222-3.912-0.462-6.076-0.718-2.566-0.376-5.292-0.772-8.176-1.192-5.746-0.856-12.124-1.8-18.958-2.908-6.446-1.348-13.414-2.804-20.864-4.362-3.718-0.712-7.504-1.778-11.406-2.786-3.892-1.026-7.894-2.080-12.004-3.162-2.044-0.566-4.132-1.040-6.208-1.708-2.074-0.656-4.174-1.318-6.3-1.988-4.232-1.348-8.564-2.726-12.988-4.134-1.104-0.354-2.21-0.708-3.324-1.066-1.1-0.406-2.206-0.814-3.316-1.226-2.216-0.824-4.456-1.658-6.714-2.5-4.496-1.698-9.078-3.424-13.74-5.182-4.568-1.968-9.216-3.97-13.936-6.004-2.348-1.018-4.714-2.044-7.098-3.078-2.376-1.048-4.702-2.27-7.074-3.408-4.714-2.322-9.494-4.678-14.33-7.062-4.786-2.47-9.512-5.208-14.328-7.846-2.398-1.336-4.808-2.678-7.23-4.028-2.41-1.366-4.75-2.9-7.14-4.354-4.738-2.952-9.524-5.93-14.35-8.936-18.89-12.64-37.564-26.674-55.278-42.21-17.574-15.712-34.248-32.726-49.602-50.69-15.136-18.182-28.902-37.264-41.112-56.728-12.036-19.602-22.314-39.644-31.142-59.376-2.042-5.002-4.062-9.964-6.068-14.878-0.974-2.462-2.032-4.868-2.918-7.334-0.87-2.472-1.732-4.932-2.592-7.376-1.686-4.898-3.468-9.678-4.994-14.484-1.432-4.832-2.846-9.604-4.24-14.31-0.674-2.358-1.43-4.66-2.016-7.004-0.57-2.348-1.138-4.676-1.702-6.988-1.118-4.606-2.216-9.14-3.296-13.602-0.868-4.502-1.72-8.928-2.558-13.272-0.41-2.164-0.818-4.308-1.222-6.434-0.2-1.060-0.398-2.116-0.596-3.164-0.148-1.062-0.296-2.118-0.444-3.168-0.582-4.19-1.152-8.292-1.708-12.3-0.278-1.996-0.55-3.97-0.82-5.922-0.284-1.946-0.376-3.902-0.568-5.812-0.336-3.822-0.664-7.546-0.98-11.164-0.304-3.616-0.686-7.106-0.738-10.528-0.020-0.548-0.040-1.076-0.058-1.62-34.376-1.112-61.902-29.304-61.902-63.946 0-0.542 0.028-1.078 0.042-1.618zM73.518 511.294c0.042 0.196 0.086 0.384 0.128 0.58 0.644 3.248 1.632 6.542 2.556 9.942 0.934 3.388 1.894 6.876 2.88 10.454 0.516 1.78 0.934 3.602 1.546 5.406 0.596 1.802 1.202 3.628 1.81 5.476 1.218 3.682 2.464 7.45 3.736 11.294 0.316 0.958 0.634 1.924 0.956 2.892 0.37 0.954 0.74 1.914 1.114 2.876 0.746 1.924 1.5 3.868 2.26 5.83 1.52 3.904 3.070 7.882 4.646 11.93 1.768 3.96 3.566 7.99 5.392 12.080 0.908 2.038 1.824 4.090 2.746 6.156 0.932 2.060 2.036 4.072 3.052 6.126 2.070 4.084 4.17 8.222 6.294 12.412 2.202 4.142 4.654 8.224 6.998 12.392 1.184 2.074 2.374 4.16 3.57 6.256 1.21 2.086 2.586 4.102 3.876 6.166 2.616 4.098 5.256 8.232 7.918 12.402 11.234 16.298 23.632 32.398 37.33 47.638 13.874 15.104 28.842 29.404 44.598 42.548 15.974 12.928 32.686 24.65 49.676 35.022 17.13 10.194 34.6 18.838 51.734 26.258 4.35 1.7 8.662 3.382 12.934 5.050 2.136 0.812 4.216 1.71 6.36 2.444 2.146 0.714 4.28 1.428 6.404 2.136 4.25 1.386 8.382 2.888 12.548 4.142 4.184 1.174 8.314 2.332 12.392 3.474 2.038 0.55 4.026 1.19 6.054 1.662 2.030 0.458 4.044 0.914 6.044 1.368 3.978 0.91 7.896 1.806 11.748 2.688 3.888 0.686 7.71 1.36 11.462 2.022 1.868 0.33 3.716 0.658 5.546 0.98 0.914 0.162 1.824 0.324 2.728 0.484 0.916 0.112 1.828 0.222 2.734 0.332 3.612 0.448 7.148 0.882 10.604 1.31 1.72 0.216 3.422 0.432 5.102 0.644 1.674 0.226 3.364 0.266 5.010 0.408 3.292 0.238 6.498 0.472 9.616 0.7 3.11 0.218 6.11 0.524 9.058 0.508 5.848 0.132 11.32 0.256 16.38 0.372 4.664-0.168 8.948-0.324 12.818-0.462 1.914-0.054 3.726-0.108 5.432-0.156 2.122-0.134 4.108-0.26 5.958-0.378 2.13-0.138 4.060-0.266 5.82-0.38 3.256-0.51 6.592-0.782 9.99-0.782 0.466 0 0.93 0.026 1.396 0.036 0.132-0.008 0.224-0.014 0.224-0.014v0.020c31.14 0.778 56.75 23.784 61.556 53.754 0.542-0.12 1.064-0.236 1.612-0.356 3.246-0.644 6.542-1.632 9.942-2.556 3.386-0.934 6.876-1.894 10.454-2.88 1.778-0.516 3.602-0.934 5.404-1.546 1.802-0.596 3.63-1.202 5.478-1.812 3.68-1.218 7.448-2.464 11.292-3.736 0.96-0.316 1.924-0.634 2.892-0.956 0.956-0.37 1.914-0.74 2.876-1.112 1.926-0.746 3.868-1.5 5.83-2.26 3.904-1.52 7.884-3.070 11.932-4.646 3.96-1.768 7.988-3.566 12.080-5.392 2.038-0.908 4.088-1.824 6.156-2.746 2.060-0.932 4.072-2.036 6.126-3.054 4.082-2.070 8.222-4.17 12.41-6.294 4.144-2.202 8.226-4.654 12.394-6.998 2.074-1.184 4.16-2.374 6.256-3.572 2.086-1.21 4.102-2.586 6.166-3.876 4.098-2.616 8.23-5.256 12.402-7.918 16.296-11.234 32.398-23.632 47.636-37.33 15.104-13.874 29.406-28.842 42.55-44.598 12.928-15.974 24.648-32.686 35.020-49.676 10.196-17.13 18.84-34.6 26.26-51.736 1.698-4.348 3.382-8.662 5.050-12.932 0.812-2.136 1.71-4.216 2.444-6.36 0.714-2.146 1.428-4.28 2.136-6.404 1.386-4.25 2.888-8.384 4.142-12.548 1.174-4.184 2.33-8.316 3.474-12.392 0.55-2.038 1.19-4.026 1.66-6.054 0.46-2.030 0.916-4.046 1.368-6.046 0.91-3.978 1.808-7.896 2.688-11.748 0.688-3.888 1.362-7.71 2.024-11.462 0.33-1.868 0.656-3.716 0.98-5.548 0.162-0.914 0.324-1.824 0.484-2.728 0.11-0.916 0.222-1.828 0.332-2.734 0.446-3.612 0.882-7.148 1.31-10.604 0.216-1.72 0.432-3.42 0.642-5.1 0.226-1.674 0.268-3.364 0.41-5.010 0.238-3.292 0.472-6.498 0.7-9.616 0.218-3.11 0.524-6.11 0.508-9.058 0.132-5.848 0.256-11.32 0.372-16.38-0.168-4.664-0.324-8.948-0.462-12.818-0.054-1.914-0.108-3.726-0.156-5.432-0.134-2.122-0.26-4.108-0.378-5.958-0.138-2.13-0.266-4.060-0.38-5.82-0.498-3.256-0.768-6.592-0.768-9.99 0-0.468 0.026-0.93 0.036-1.396-0.008-0.132-0.016-0.224-0.016-0.224h0.022c0.768-30.766 23.236-56.128 52.682-61.37-0.066-0.296-0.13-0.584-0.198-0.884-0.644-3.248-1.632-6.542-2.556-9.942-0.934-3.388-1.894-6.876-2.88-10.454-0.516-1.78-0.934-3.602-1.546-5.406-0.596-1.802-1.202-3.628-1.81-5.476-1.218-3.682-2.464-7.45-3.736-11.294-0.316-0.958-0.634-1.924-0.956-2.892-0.37-0.954-0.74-1.914-1.114-2.876-0.746-1.924-1.5-3.868-2.26-5.83-1.52-3.904-3.070-7.882-4.646-11.93-1.768-3.96-3.566-7.99-5.392-12.080-0.908-2.038-1.824-4.090-2.746-6.156-0.932-2.060-2.036-4.072-3.052-6.126-2.070-4.084-4.17-8.222-6.294-12.412-2.202-4.142-4.654-8.224-6.998-12.392-1.184-2.074-2.374-4.16-3.57-6.256-1.21-2.086-2.586-4.102-3.876-6.166-2.616-4.098-5.256-8.232-7.918-12.402-11.234-16.298-23.632-32.398-37.33-47.638-13.874-15.104-28.842-29.404-44.598-42.548-15.974-12.928-32.686-24.65-49.676-35.022-17.13-10.194-34.6-18.838-51.734-26.258-4.35-1.7-8.662-3.382-12.934-5.050-2.136-0.812-4.216-1.71-6.36-2.444-2.146-0.714-4.28-1.428-6.404-2.136-4.25-1.386-8.382-2.888-12.548-4.142-4.184-1.174-8.314-2.332-12.392-3.474-2.038-0.55-4.026-1.19-6.054-1.662-2.030-0.458-4.044-0.914-6.044-1.368-3.978-0.91-7.896-1.806-11.748-2.688-3.888-0.686-7.71-1.36-11.462-2.022-1.868-0.33-3.716-0.658-5.546-0.98-0.914-0.162-1.824-0.324-2.728-0.484-0.916-0.112-1.828-0.222-2.734-0.332-3.612-0.448-7.148-0.882-10.604-1.31-1.72-0.216-3.422-0.432-5.102-0.644-1.674-0.226-3.364-0.266-5.010-0.408-3.292-0.238-6.498-0.472-9.616-0.7-3.11-0.218-6.11-0.524-9.058-0.508-5.848-0.132-11.32-0.256-16.38-0.372-4.664 0.168-8.948 0.324-12.818 0.462-1.914 0.054-3.726 0.108-5.432 0.156-2.122 0.134-4.108 0.26-5.958 0.378-2.13 0.138-4.060 0.266-5.82 0.38-3.256 0.51-6.592 0.782-9.99 0.782-0.466 0-0.93-0.026-1.396-0.036-0.132 0.008-0.224 0.014-0.224 0.014v-0.020c-31.004-0.774-56.524-23.586-61.488-53.364-3.2 0.64-6.446 1.61-9.792 2.522-3.386 0.934-6.876 1.894-10.454 2.878-1.778 0.516-3.602 0.938-5.404 1.546-1.802 0.598-3.63 1.204-5.478 1.812-3.68 1.218-7.448 2.464-11.292 3.738-0.96 0.316-1.924 0.632-2.892 0.954-0.956 0.372-1.914 0.742-2.876 1.114-1.926 0.746-3.868 1.5-5.83 2.258-3.904 1.524-7.884 3.070-11.932 4.648-3.96 1.77-7.988 3.566-12.080 5.39-2.038 0.91-4.088 1.824-6.156 2.746-2.060 0.934-4.072 2.036-6.126 3.054-4.082 2.070-8.222 4.172-12.41 6.296-4.144 2.2-8.226 4.652-12.394 6.996-2.074 1.184-4.16 2.376-6.256 3.57-2.086 1.21-4.102 2.586-6.166 3.878-4.098 2.614-8.23 5.254-12.402 7.918-16.296 11.23-32.398 23.632-47.636 37.328-15.104 13.876-29.406 28.84-42.55 44.598-12.928 15.972-24.648 32.684-35.020 49.676-10.196 17.128-18.84 34.602-26.26 51.734-1.698 4.352-3.382 8.664-5.050 12.934-0.812 2.136-1.71 4.218-2.444 6.36-0.714 2.148-1.428 4.282-2.136 6.406-1.386 4.25-2.888 8.382-4.142 12.546-1.174 4.184-2.33 8.316-3.474 12.394-0.55 2.036-1.19 4.024-1.66 6.054-0.46 2.028-0.916 4.042-1.368 6.042-0.91 3.98-1.808 7.898-2.688 11.75-0.688 3.886-1.362 7.71-2.024 11.46-0.33 1.868-0.656 3.718-0.98 5.546-0.162 0.914-0.324 1.824-0.484 2.73-0.11 0.914-0.222 1.828-0.332 2.734-0.446 3.61-0.882 7.148-1.31 10.602-0.216 1.722-0.432 3.422-0.642 5.102-0.226 1.676-0.268 3.364-0.41 5.012-0.238 3.29-0.472 6.496-0.7 9.614-0.218 3.11-0.524 6.11-0.508 9.058-0.132 5.848-0.256 11.32-0.372 16.382 0.168 4.664 0.324 8.946 0.462 12.816 0.054 1.914 0.108 3.726 0.156 5.434 0.134 2.122 0.26 4.106 0.378 5.958 0.138 2.128 0.266 4.058 0.38 5.82 0.496 3.26 0.766 6.596 0.766 9.994 0 0.466-0.026 0.93-0.036 1.396 0.008 0.132 0.016 0.224 0.016 0.224h-0.022c-0.78 31.38-24.134 57.154-54.44 61.674z" />
<glyph unicode="&#xf055;" glyph-name="plus-circle" horiz-adv-x="878" d="M694.857 402.286v73.143c0 20-16.571 36.571-36.571 36.571h-146.286v146.286c0 20-16.571 36.571-36.571 36.571h-73.143c-20 0-36.571-16.571-36.571-36.571v-146.286h-146.286c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h146.286v-146.286c0-20 16.571-36.571 36.571-36.571h73.143c20 0 36.571 16.571 36.571 36.571v146.286h146.286c20 0 36.571 16.571 36.571 36.571zM877.714 438.857c0-242.286-196.571-438.857-438.857-438.857s-438.857 196.571-438.857 438.857 196.571 438.857 438.857 438.857 438.857-196.571 438.857-438.857z" />
<glyph unicode="&#xf236;" glyph-name="bed, hotel" horiz-adv-x="1170" d="M146.286 365.714h987.429c20 0 36.571-16.571 36.571-36.571v-256h-146.286v146.286h-877.714v-146.286h-146.286v694.857c0 20 16.571 36.571 36.571 36.571h73.143c20 0 36.571-16.571 36.571-36.571v-402.286zM475.429 548.571c0 80.571-65.714 146.286-146.286 146.286s-146.286-65.714-146.286-146.286 65.714-146.286 146.286-146.286 146.286 65.714 146.286 146.286zM1170.286 402.286v36.571c0 121.143-98.286 219.429-219.429 219.429h-402.286c-20 0-36.571-16.571-36.571-36.571v-219.429h658.286z" />
</font></defs></svg>
\ No newline at end of file
:root {
--main-bg-color: #262626;
--main-text-color: #b2b2b2;
}
*{
margin:0;
padding:0;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
body {
color:#333;
font-family:sans-serif;
background-color: var(--main-bg-color);
}
.img_bg{
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
.photo-credit {
position: absolute;
bottom: 0px;
right: 0px;
font-size: 10px;
color: #b2b2b2;
background-color: rgba(0,0,0,0.7);
padding: 2px;
border-radius: .25rem;
}
/* Dates */
#date-initial, #date-final {
text-align: center;
}
#datePickers{
display: none;
position: absolute;
/* width: 285px; */
z-index: 401;
background: #cbddf3;
border: 1px solid #999;
padding: 4px;
border-radius: 5px;
/*box-shadow: 0px 0px 15px #999;*/
top: 13px;
left: 50px;
}
.picker {
position: absolute;
left: 50px;
top: 45px;
z-index: 401;
background: #cbddf3;
border: 1px solid #999;
padding: 4px;
border-radius: 5px;
/*box-shadow: 0px 0px 15px #999;*/
}
.ui-datepicker-calendar {
display: none;
}
/* Main */
#mainContainer {
display: none !important;
min-height: 100vh;
}
#title {
font-size: 2em;
color: var(--main-text-color);
display: block;
}
#middle {
/*height: 854px;*/
/*color: var(--main-text-color);*/
color: #333;
}
#story {
/*height: 100%;*/
opacity: 0.75;
margin-left: -50%;
/*position: absolute;*/
background-color: var(--main-bg-color);
z-index: 1001 !important;
-webkit-box-shadow: -15px 0px 5px -5px rgba(128,121,128,1);
-moz-box-shadow: -15px 0px 5px -5px rgba(128,121,128,1);
box-shadow: -15px 0px 5px -5px rgba(128,121,128,1);
/*left: 50%;
width: 50%*/
}
/* have the loader div fill the map screen while disabling interaction */
.loader {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0px;
width: 100%;
background-color: rgba(245, 245, 245, 0.7);
z-index: 1002;
cursor: wait;
}
/* since we know the height/width of the loader gif,
position absolutely and use top/left, subtracting half of
width and height using margin */
.loadSpinner {
/*width: 66px;
height: 66px;*/
position: absolute;
top: 50%;
left: 50%;
margin: -33px 0 0 -33px;
}
.loadText {
/*width: 66px;
height: 66px;*/
position: absolute;
top: 50%;
left: 50%;
margin: 33px 0 0 -50px;
}
/* Map */
.leaflet-top {
z-index: 1001 !important;
}
.draw-control-disabled {
filter: contrast(22%) brightness(157%);
pointer-events:none;
}
#camap {
background:white;
height:100%;
}
.legend {
color: #555;
}
.legend ul {
padding: 0px;
margin: 0px;
}
.legend i {
width: 18px;
height: 18px;
float: left;
margin-right: 8px;
opacity: 0.75;
}
.legend li {
height: 18px;
list-style: none;
}
.info {
padding: 6px 8px;
/*font: 11px/16px Arial, Helvetica, sans-serif;*/
/*background: white;
background: rgba(255, 255, 255, 1);*/
background: #F5F5F3;
/*box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
border-radius: 5px;*/
}
.info h6 {
margin: 0 0 5px;
color: #777;
/*text-transform: capitalize;*/
}
/* Footer */
img.grayscale {
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
/* Modal windows */
.equation {
text-align: center;
}
span.frac {
display: inline-block;
text-align: center;
vertical-align: middle;
}
span.frac > sup, span.frac > sub {
display: block;
font: inherit;
padding: 0 0.3em;
top:0;
}
span.frac > sup {
border-bottom: 0.08em solid;
}
span.frac > span {
display: none;
}
/******
Icons
******/
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?woqphe');
src: url('fonts/icomoon.eot?woqphe#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?woqphe') format('truetype'),
url('fonts/icomoon.woff?woqphe') format('woff'),
url('fonts/icomoon.svg?woqphe#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="fa-"], [class*=" fa-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-casetapeaje:before {
content: "\e900";
}
.fa-desechos:before {
content: "\e901";
}
.fa-escuela:before {
content: "\e902";
}
.fa-presa:before {
content: "\e905";
}
.fa-puente:before {
content: "\e906";
}
.fa-puertoindustrial:before {
content: "\e907";
/* color: #fff; */
color: #000;
background-color: #F5F5F3;
}
.fa-puntofronterizo:before {
content: "\e908";
}
.fa-spinner:before {
content: "\e97a";
}
.fa-spinner2:before {
content: "\e97b";
}
.fa-spinner3:before {
content: "\e97c";
}
.fa-spinner4:before {
content: "\e97d";
}
.fa-spinner5:before {
content: "\e97e";
}
.fa-spinner6:before {
content: "\e97f";
}
.fa-spinner7:before {
content: "\e980";
}
.fa-spinner8:before {
content: "\e981";
}
.fa-spinner9:before {
content: "\e982";
}
.fa-spinner10:before {
content: "\e983";
}
.fa-plus-circle:before {
content: "\f055";
}
.fa-bed:before {
content: "\f236";
}
.fa-hotel:before {
content: "\f236";
}
/* Graphs */
.active {
text-decoration: underline;
font-weight: 600;
display: inline-block;
stroke: var(--main-text-color);
stroke-width: 0.5px;
fill: var(--main-text-color);
}
.label{
font-size: 16px;
font-family: sans-serif;
}
.bar text {
font: 10px sans-serif;
text-anchor: end;
}
.bar:hover {
stroke-opacity:0.5;
opacity: 1;
}
/*.axis--x path {
display: none;
}*/
.yearTick {
opacity: 0.3;
stroke-width:3;
stroke-dasharray: 6,6;
}
/* no stroke for all x axis-ticks, x axis-month-labels,
and x axis-year-labels paths and lines */
[class^="x axis-"] path, [class^="x axis-"] line {
stroke: none;
}
.axis path, .axis line, .axis-ticks line {
fill: none;
stroke: grey;
stroke-width: 1;
shape-rendering: crispEdges;
}
.x.axis, .y.axis {
font: 12px sans-serif;
font-family:verdana,sans-serif;
color: var(--main-text-color);
}
.tooltip {
position: absolute;
bottom: 50%; /* so it is not added below the map and scroll bars appear */
/*width: 120px;
height: 20px;*/
z-index: 1001;
pointer-events: none;
color: var(--main-text-color);
/*background: #F5F5F3;
border-radius: 5px;*/
}
\ No newline at end of file
{"type":"Topology","arcs":[[[44920,79579],[76,-47],[75,-48],[74,-50],[72,-52],[71,-53],[35,-26],[35,-28],[69,-56],[67,-57],[66,-58],[64,-60],[63,-61],[62,-62],[29,-32],[31,-32],[29,-32],[30,-33],[28,-32],[29,-34],[55,-67],[54,-68],[53,-69],[50,-70],[49,-72],[47,-72],[23,-35],[23,-38],[44,-74],[42,-75],[40,-76],[39,-76],[36,-78],[35,-78],[33,-79],[16,-38],[15,-41],[29,-80],[28,-81],[25,-81],[24,-81],[21,-82],[20,-83],[18,-83],[8,-40],[8,-43],[13,-83],[12,-84],[10,-84],[8,-84],[6,-84],[4,-85],[1,-84],[1,-41],[-1,-44],[-2,-84],[-4,-84],[-6,-85],[-8,-84],[-10,-84],[-12,-84],[-14,-83],[-7,-41],[-9,-42],[-18,-83],[-20,-82],[-21,-82],[-24,-82],[-26,-81],[-27,-81],[-30,-79],[-14,-39],[-2,-4],[-2,-6],[-64,-161],[-16,-39],[-33,-78],[-35,-76],[-36,-77],[-38,-75],[-40,-74],[-31,-55],[-33,-55],[-91,-146],[-35,-54],[-37,-53],[-50,-70],[-53,-69],[-54,-68],[-55,-67],[-57,-66],[-29,-32],[-30,-33],[-60,-63],[-62,-62],[-63,-61],[-64,-60],[-66,-58],[-68,-57],[-68,-56],[-34,-27],[-36,-27],[-71,-53],[-72,-51],[-74,-50],[-60,-39],[-6,-33],[-8,-43],[-18,-82],[-20,-83],[-22,-82],[-23,-81],[-26,-82],[-28,-80],[-29,-80],[-15,-39],[-22,-54],[-2,-5],[24,0],[45,0],[91,-2],[91,-4],[91,-5],[91,-8],[91,-9],[90,-11],[90,-13],[45,-7],[49,-8],[97,-18],[97,-21],[96,-22],[48,-12],[239,-61],[40,-11],[80,-22],[79,-23],[78,-25],[39,-13],[43,-15],[85,-30],[84,-33],[83,-34],[83,-36],[82,-37],[80,-39],[16,-8],[27,-5],[89,-18],[89,-20],[88,-22],[87,-24],[87,-25],[86,-27],[43,-14],[43,-15],[85,-31],[84,-32],[83,-34],[83,-36],[82,-38],[80,-39],[80,-40],[40,-21],[30,-17],[61,-33],[60,-35],[60,-36],[29,-18],[131,-81],[45,-30],[91,-59],[89,-63],[87,-64],[43,-32],[35,-28],[68,-56],[67,-57],[66,-58],[65,-60],[46,-45],[37,-19],[39,-21],[46,-25],[89,-51],[88,-52],[87,-55],[43,-28],[152,-102],[31,-21],[62,-43],[61,-44],[60,-45],[29,-23],[35,-27],[69,-56],[67,-57],[65,-59],[65,-60],[63,-61],[61,-62],[60,-63],[29,-32],[28,-31],[53,-62],[35,-42],[38,-38],[57,-60],[27,-30],[30,-34],[57,-66],[55,-67],[54,-68],[52,-69],[50,-70],[6,-9],[27,-17],[88,-62],[86,-63],[42,-32],[35,-28],[68,-56],[67,-57],[66,-59],[64,-59],[63,-61],[62,-63],[60,-63],[29,-32],[29,-33],[40,-46],[50,-25],[50,-26],[31,-17],[62,-35],[61,-35],[60,-37],[30,-18],[130,-81],[46,-30],[89,-59],[88,-61],[86,-64],[42,-32],[35,-28],[68,-55],[68,-57],[65,-59],[65,-60],[62,-61],[62,-62],[60,-64],[29,-31],[29,-33],[57,-66],[55,-67],[54,-68],[52,-70],[51,-70],[49,-71],[47,-72],[22,-36],[23,-38],[44,-74],[42,-75],[40,-75],[38,-77],[37,-77],[35,-78],[32,-79],[16,-39],[15,-41],[30,-80],[27,-80],[25,-81],[24,-82],[21,-82],[20,-82],[18,-83],[8,-41],[4,-26],[9,-51],[5,-26],[41,-263],[6,-35],[10,-71],[8,-71],[7,-71],[6,-72],[4,-71],[3,-72],[1,-71],[0,-35],[-1,-60],[-4,-117],[-8,-118],[-1,-14],[1,-6],[5,-78],[3,-77],[1,-78],[1,-38],[-1,-43],[-2,-84],[-4,-85],[-6,-84],[-8,-84],[-10,-84],[-12,-84],[-14,-83],[-7,-41],[-10,-47],[-20,-91],[-22,-91],[-24,-91],[-13,-45],[-22,-70],[-35,-169],[-8,-38],[-17,-75],[-19,-75],[-21,-75],[-22,-74],[-24,-74],[-38,-109],[-2,-4],[-60,-152],[-8,-20],[20,-26],[2,-3],[4,-4],[8,-9],[3,-4],[30,-33],[57,-66],[55,-67],[53,-68],[53,-69],[50,-71],[49,-71],[47,-72],[22,-36],[23,-37],[44,-74],[42,-75],[40,-76],[38,-77],[37,-77],[34,-78],[33,-79],[16,-39],[15,-40],[29,-80],[27,-81],[26,-81],[23,-82],[7,-27],[10,-22],[14,-33],[28,-67],[13,-33],[17,-45],[32,-88],[15,-44],[128,-385],[18,-58],[35,-118],[31,-119],[27,-120],[12,-59],[8,-43],[13,-83],[12,-84],[10,-84],[8,-84],[5,-84],[4,-85],[2,-84],[1,-42],[0,-5],[0,-8],[0,-4],[-2,-222],[0,-41],[-3,-83],[-4,-82],[-6,-82],[-8,-82],[-10,-82],[-18,-118],[-29,-154],[-1,-3],[-24,-110],[-18,-71],[-20,-72],[-21,-71],[-23,-70],[-20,-59],[36,-23],[73,-50],[72,-52],[71,-53],[34,-26],[35,-28],[69,-56],[66,-57],[66,-58],[64,-60],[63,-61],[61,-62],[60,-64],[29,-31],[29,-34],[57,-66],[55,-67],[28,-35],[34,-24],[60,-43],[58,-44],[29,-22],[35,-28],[68,-56],[67,-57],[65,-58],[64,-60],[63,-61],[61,-63],[60,-63],[29,-32],[27,-31],[53,-61],[52,-63],[50,-63],[49,-64],[48,-66],[46,-66],[45,-67],[21,-34],[66,-103],[13,-21],[7,-10],[13,-21],[6,-9],[23,-38],[43,-74],[42,-75],[40,-76],[38,-76],[37,-78],[34,-78],[33,-78],[16,-39],[15,-41],[29,-80],[27,-80],[26,-82],[23,-81],[21,-82],[20,-83],[18,-83],[8,-40],[7,-43],[14,-83],[12,-84],[9,-84],[8,-84],[6,-84],[1,-26],[22,-17],[35,-28],[33,-27],[14,-4],[97,-30],[48,-16],[42,-15],[85,-30],[84,-33],[83,-34],[82,-36],[81,-37],[80,-39],[80,-41],[39,-20],[39,-22],[78,-44],[76,-45],[75,-47],[75,-49],[73,-50],[72,-51],[70,-53],[13,-10],[31,-15],[79,-40],[39,-21],[40,-22],[77,-43],[76,-46],[76,-47],[74,-48],[34,-24],[11,-5],[39,-21],[39,-21],[78,-44],[76,-46],[75,-47],[75,-48],[73,-50],[72,-51],[70,-53],[35,-27],[35,-28],[68,-55],[66,-58],[66,-58],[64,-60],[63,-61],[61,-62],[59,-64],[29,-31],[8,-8],[13,-15],[6,-8],[52,-58],[27,-31],[53,-63],[51,-64],[50,-64],[49,-66],[47,-66],[46,-67],[44,-68],[21,-34],[23,-38],[43,-74],[42,-75],[40,-75],[38,-77],[37,-77],[34,-78],[33,-79],[15,-39],[16,-41],[30,-82],[27,-83],[26,-83],[8,-27],[3,-6],[30,-72],[14,-36],[15,-40],[29,-80],[27,-81],[26,-81],[23,-82],[21,-82],[20,-82],[17,-83],[9,-41],[7,-42],[6,-35],[4,-3],[58,-44],[28,-21],[35,-28],[68,-56],[66,-57],[66,-59],[64,-59],[62,-61],[61,-63],[60,-63],[29,-32],[29,-33],[57,-66],[55,-67],[53,-68],[52,-69],[51,-71],[48,-71],[47,-72],[23,-36],[22,-37],[44,-74],[41,-75],[40,-76],[39,-77],[36,-77],[35,-78],[32,-79],[16,-39],[15,-40],[29,-80],[27,-81],[26,-81],[23,-82],[21,-82],[20,-82],[17,-83],[8,-41],[8,-44],[15,-87],[6,-44],[15,-109],[8,-43],[13,-84],[12,-84],[10,-84],[8,-84],[6,-84],[3,-84],[2,-85],[1,-41],[-1,-43],[-2,-85],[-4,-84],[-6,-84],[-8,-85],[-10,-84],[-12,-83],[-14,-84],[-7,-40],[-8,-43],[-18,-83],[-20,-82],[-21,-82],[-24,-82],[-25,-81],[-27,-80],[-30,-80],[-14,-39],[-17,-41],[-32,-78],[-35,-78],[-37,-78],[-38,-76],[-40,-76],[-42,-75],[-43,-74],[-22,-36],[-24,-37],[-47,-72],[-48,-71],[-51,-71],[-52,-69],[-53,-68],[-55,-67],[-57,-66],[-28,-32],[-30,-32],[-60,-64],[-61,-62],[-62,-61],[-64,-60],[-66,-58],[-66,-57],[-68,-56],[-34,-27],[-36,-27],[-70,-53],[-72,-51],[-73,-50],[-74,-48],[-75,-47],[-48,-29],[6,-47],[10,-84],[8,-84],[6,-84],[3,-85],[2,-84],[1,-42],[-1,-43],[-2,-84],[-4,-85],[-6,-84],[-8,-84],[-10,-84],[-12,-84],[-13,-83],[-8,-41],[-11,-53],[-23,-105],[-26,-104],[-29,-104],[-16,-51],[-22,-71],[-9,-30],[-20,-59],[-21,-59],[-22,-58],[-10,-29],[-17,-40],[-32,-79],[-35,-78],[-37,-77],[-38,-76],[-40,-76],[-42,-75],[-43,-74],[-22,-36],[-23,-37],[-47,-72],[-49,-72],[-50,-70],[-52,-69],[-54,-68],[-55,-67],[-56,-66],[-28,-32],[-30,-33],[-60,-63],[-61,-62],[-63,-61],[-63,-60],[-66,-58],[-66,-57],[-68,-56],[-34,-27],[-36,-27],[-70,-53],[-72,-51],[-73,-50],[-74,-49],[-75,-47],[-76,-45],[-77,-44],[-39,-21],[-50,-27],[-102,-51],[-103,-48],[-104,-46],[-53,-23],[-195,-79],[-60,-24],[-122,-45],[-61,-22],[-42,-14],[-86,-27],[-86,-26],[-87,-23],[-87,-22],[-88,-20],[-88,-18],[-89,-17],[-44,-8],[-16,-2],[-31,-5],[-16,-3],[-130,-19],[-41,-6],[-81,-11],[-82,-9],[-82,-7],[-82,-6],[-82,-5],[-82,-3],[-8,0],[-80,-8],[-90,-8],[-90,-5],[-90,-4],[-90,-2],[-45,0],[-7,0],[-12,0],[-6,0],[-232,1],[-257,1],[-54,1],[-109,4],[-44,2],[-17,-3],[-45,-7],[-89,-13],[-90,-11],[-89,-9],[-90,-7],[-90,-6],[-91,-3],[-90,-2],[-45,-1],[-45,1],[-91,2],[-58,2],[-7,-4],[-39,-21],[-39,-21],[-80,-41],[-80,-39],[-81,-37],[-82,-36],[-82,-34],[-84,-32],[-84,-31],[-42,-14],[-43,-15],[-85,-27],[-86,-25],[-87,-24],[-87,-21],[-88,-21],[-88,-18],[-89,-16],[-44,-8],[-45,-7],[-89,-13],[-89,-11],[-90,-9],[-15,-1],[-67,-28],[-83,-32],[-85,-31],[-42,-14],[-60,-20],[-121,-37],[-121,-34],[-123,-30],[-62,-14],[-259,-56],[-49,-10],[-79,-168],[-23,-47],[-48,-93],[-50,-92],[-53,-91],[-26,-45],[-24,-37],[-47,-72],[-48,-71],[-51,-70],[-51,-69],[-54,-69],[-55,-67],[-56,-65],[-29,-32],[-32,-36],[-57,-60],[-34,-44],[-66,-82],[-68,-80],[-34,-39],[-30,-33],[-59,-63],[-61,-63],[-63,-61],[-64,-59],[-65,-59],[-66,-57],[-68,-55],[-34,-28],[-35,-27],[-71,-53],[-71,-51],[-73,-50],[-74,-48],[-75,-47],[-76,-45],[-78,-44],[-38,-22],[-10,-5],[13,-10],[65,-58],[64,-60],[62,-61],[61,-63],[59,-63],[29,-32],[27,-30],[53,-62],[51,-62],[50,-63],[24,-32],[4,-4],[7,-8],[29,-31],[29,-33],[56,-66],[55,-67],[53,-69],[52,-69],[20,-27],[68,-41],[75,-47],[56,-37],[77,-32],[82,-36],[81,-37],[80,-39],[79,-41],[39,-20],[39,-22],[77,-44],[76,-45],[75,-47],[74,-49],[73,-50],[72,-51],[70,-53],[34,-26],[35,-28],[68,-56],[66,-57],[65,-59],[64,-59],[62,-61],[61,-63],[60,-63],[28,-32],[30,-33],[56,-66],[55,-67],[53,-68],[52,-69],[50,-71],[48,-71],[47,-72],[23,-37],[2,-4],[68,-110],[23,-37],[43,-75],[42,-75],[39,-75],[38,-77],[37,-77],[34,-78],[33,-79],[15,-39],[15,-40],[29,-80],[27,-81],[26,-81],[23,-82],[21,-82],[20,-82],[8,-39],[4,-8],[38,-77],[36,-77],[35,-78],[32,-79],[16,-39],[15,-40],[29,-80],[27,-81],[25,-81],[14,-47],[14,-34],[33,-78],[15,-39],[16,-41],[29,-80],[27,-80],[25,-82],[23,-81],[21,-82],[20,-83],[17,-83],[8,-40],[9,-50],[16,-98],[12,-98],[11,-98],[4,-49],[19,-246],[2,-35],[4,-70],[3,-70],[1,-70],[0,-35],[0,-43],[-2,-84],[-4,-85],[-6,-84],[-8,-84],[-10,-84],[-12,-84],[-14,-83],[-7,-41],[-8,-42],[-18,-83],[-6,-25],[41,-39],[29,-29],[59,-58],[58,-59],[56,-61],[28,-30],[29,-33],[54,-64],[69,-43],[74,-48],[72,-50],[72,-52],[31,4],[89,13],[89,11],[90,9],[89,7],[90,6],[90,4],[90,1],[45,1],[63,-1],[127,-4],[126,-7],[126,-11],[63,-6],[175,-20],[53,-7],[107,-15],[52,-8],[45,-8],[88,-17],[88,-18],[88,-20],[87,-22],[86,-24],[86,-25],[85,-27],[42,-14],[43,-15],[84,-31],[83,-32],[82,-34],[82,-36],[81,-37],[80,-39],[73,-38],[33,-10],[88,-28],[43,-14],[43,-15],[84,-31],[83,-32],[82,-34],[82,-36],[81,-37],[79,-39],[79,-41],[39,-20],[21,-12],[33,-18],[13,-4],[43,-14],[5,-2],[10,-4],[6,-2],[226,-78],[56,-20],[110,-42],[108,-45],[108,-47],[53,-25],[247,-117],[49,-25],[33,-16],[26,-1],[90,-6],[90,-7],[89,-10],[90,-11],[89,-12],[44,-7],[39,-7],[77,-14],[77,-16],[77,-17],[77,-18],[76,-20],[75,-21],[75,-23],[38,-11],[57,-19],[91,-29],[10,-3],[20,-7],[40,-13],[20,-6],[42,-15],[84,-31],[83,-32],[83,-34],[81,-36],[81,-38],[80,-39],[79,-40],[39,-21],[39,-22],[77,-43],[76,-46],[74,-47],[74,-48],[73,-50],[71,-52],[70,-53],[35,-26],[13,-11],[26,-20],[13,-11],[51,-42],[31,-25],[60,-52],[60,-52],[58,-54],[57,-54],[56,-56],[55,-56],[54,-58],[26,-29],[29,-33],[56,-66],[55,-67],[53,-68],[51,-69],[50,-71],[49,-71],[46,-72],[23,-36],[22,-37],[43,-74],[42,-75],[40,-76],[38,-77],[36,-77],[34,-78],[33,-79],[15,-39],[15,-40],[29,-80],[27,-81],[25,-81],[24,-82],[21,-82],[19,-82],[18,-83],[8,-41],[7,-42],[14,-84],[12,-84],[9,-84],[8,-84],[6,-84],[4,-84],[2,-85],[0,-41],[-1,-43],[-2,-85],[-4,-84],[-6,-84],[-7,-85],[-10,-84],[-12,-83],[-14,-84],[-7,-41],[-9,-42],[-17,-83],[-20,-82],[-21,-82],[-24,-82],[-25,-81],[-27,-81],[-29,-79],[-15,-40],[-16,-40],[-32,-79],[-35,-78],[-36,-77],[-38,-76],[-40,-76],[-42,-75],[-43,-74],[-22,-36],[-23,-37],[-47,-72],[-48,-72],[-50,-70],[-52,-69],[-53,-68],[-55,-67],[-56,-66],[-28,-32],[-30,-33],[-59,-63],[-61,-62],[-62,-61],[-64,-60],[-65,-58],[-66,-57],[-68,-56],[-33,-27],[-36,-27],[-70,-53],[-71,-52],[-73,-49],[-73,-49],[-45,-28],[-166,-270],[-3,-6],[-2,-2],[-339,-551],[-747,-1212],[-1494,-2429],[-95,-154],[-584,-950],[-771,-1255],[-929,-1542],[-61,-106],[-6,-10],[-12,-20],[-6,-10],[-70,-118],[-3,-5],[-16,-27],[-209,-354],[-98,-165],[-6,-10],[-12,-21],[-7,-11],[-110,-181],[-123,-201],[-521,-856],[-63,-104],[-389,-640],[-403,-663],[-313,-517],[-3,-5],[-14,-23],[-490,-809],[-1613,-2663],[-120,-199],[-3,-5],[-6,-9],[-2,-4],[-24,-37],[-46,-72],[-48,-72],[-50,-70],[-52,-69],[-53,-68],[-54,-67],[-56,-66],[-28,-32],[-30,-33],[-59,-63],[-61,-62],[-62,-61],[-63,-60],[-65,-58],[-66,-57],[-67,-56],[-34,-27],[-35,-27],[-69,-53],[-72,-52],[-72,-50],[-73,-48],[-75,-47],[-75,-45],[-77,-44],[-38,-21],[-39,-21],[-79,-41],[-79,-39],[-81,-37],[-81,-36],[-82,-34],[-82,-32],[-84,-31],[-41,-15],[-43,-14],[-85,-27],[-85,-25],[-86,-24],[-87,-22],[-87,-20],[-87,-18],[-88,-16],[-44,-8],[-44,-7],[-88,-13],[-89,-11],[-89,-9],[-89,-7],[-90,-6],[-89,-4],[-90,-2],[-44,0],[-45,0],[-90,2],[-89,4],[-89,6],[-90,7],[-89,9],[-88,11],[-89,13],[-44,7],[-44,8],[-88,16],[-87,18],[-87,20],[-87,22],[-86,24],[-85,25],[-85,27],[-42,14],[-42,15],[-83,31],[-83,32],[-82,34],[-81,36],[-81,37],[-79,39],[-79,41],[-39,21],[-24,13],[-49,27],[-24,14],[-57,33],[-193,112],[-28,17],[-57,34],[-56,35],[-55,35],[-55,37],[-55,38],[-53,38],[-53,39],[-26,20],[-151,115],[-13,10],[-25,20],[-13,10],[-34,27],[-67,56],[-66,57],[-65,58],[-63,60],[-62,61],[-61,62],[-59,64],[-30,32],[-29,34],[-60,70],[-29,36],[-118,145],[-19,25],[-40,50],[-38,50],[-37,51],[-37,52],[-36,52],[-34,53],[-27,41],[-28,25],[-65,58],[-63,60],[-62,61],[-61,62],[-59,64],[-29,32],[-35,40],[-6,7],[-55,27],[-78,41],[-40,21],[-38,21],[-76,44],[-76,45],[-75,47],[-73,48],[-72,50],[-71,52],[-70,53],[-35,27],[-10,7],[-20,16],[-10,9],[-147,119],[-31,26],[-62,52],[-61,53],[-59,55],[-59,55],[-57,57],[-84,89],[-65,74],[-48,12],[-67,18],[-67,20],[-66,20],[-67,21],[-33,12],[-41,14],[-84,31],[-83,32],[-82,34],[-81,36],[-31,14],[-67,17],[-86,24],[-85,25],[-85,27],[-43,14],[-41,15],[-84,31],[-83,32],[-82,34],[-81,36],[-80,37],[-80,39],[-79,41],[-39,21],[-38,21],[-77,44],[-75,45],[-75,47],[-73,48],[-73,50],[-71,52],[-70,52],[-51,-1],[-79,-2],[-39,0],[-45,0],[-89,2],[-90,4],[-89,5],[-90,8],[-89,9],[-88,11],[-89,13],[-44,7],[-44,7],[-88,17],[-88,18],[-87,20],[-86,22],[-86,24],[-86,25],[-85,27],[-42,14],[-42,15],[-83,31],[-83,32],[-82,34],[-82,36],[-80,37],[-80,39],[-78,40],[-40,21],[-35,20],[-36,11],[-34,10],[-89,27],[-38,6],[-44,7],[-44,7],[-88,17],[-46,10],[-42,-2],[-89,-2],[-45,0],[-65,1],[-128,3],[-129,8],[-129,11],[-64,7],[-41,5],[-49,6],[-100,15],[-50,7],[-44,8],[-88,17],[-87,18],[-87,20],[-87,22],[-86,23],[-85,26],[-85,27],[-43,14],[-44,16],[-88,32],[-44,17],[-123,48],[-31,12],[-60,25],[-60,26],[-60,27],[-24,11],[-52,21],[-81,36],[-81,37],[-79,39],[-79,41],[-39,21],[-38,21],[-77,44],[-76,45],[-74,47],[-74,49],[-72,50],[-71,51],[-70,53],[-35,27],[-34,27],[-67,56],[-66,57],[-65,58],[-64,60],[-62,61],[-60,62],[-60,64],[-29,32],[-28,32],[-56,66],[-55,67],[-53,68],[-52,69],[-49,71],[-49,71],[-46,72],[-23,37],[-7,10],[-13,22],[-6,11],[-13,22],[-20,34],[-40,69],[-37,70],[-36,70],[-35,71],[-33,72],[-32,72],[-30,73],[-15,37],[-12,32],[-23,65],[-23,65],[-21,66],[-11,33],[-10,34],[-14,48],[-27,97],[-24,98],[-16,74],[-3,1],[-101,21],[-57,14],[-8,1],[-56,8],[-44,8],[-88,17],[-87,18],[-88,20],[-86,22],[-86,23],[-86,26],[-17,5],[-16,2],[-91,11],[-91,13],[-45,7],[-44,8],[-88,16],[-88,19],[-87,20],[-87,22],[-23,6],[-62,9],[-139,23],[-104,20],[-69,15],[-69,16],[-68,17],[-68,18],[-31,9],[-12,2],[-87,18],[-88,20],[-86,22],[-86,24],[-86,25],[-85,27],[-43,15],[-41,14],[-84,31],[-83,32],[-82,34],[-81,36],[-81,37],[-79,39],[-79,41],[-39,21],[-39,21],[-76,44],[-76,45],[-31,19],[-30,14],[-45,19],[-86,40],[-86,42],[-84,43],[-42,22],[-39,22],[-76,43],[-76,46],[-75,47],[-73,48],[-73,50],[-71,51],[-70,53],[-35,27],[-34,28],[-67,55],[-66,57],[-65,59],[-64,59],[-52,52],[-43,12],[-86,25],[-85,27],[-42,14],[-42,15],[-84,31],[-83,32],[-82,34],[-81,36],[-81,37],[-79,39],[-79,41],[-39,21],[-23,12],[-45,25],[-22,13],[-72,41],[-46,27],[-33,19],[-64,39],[-64,39],[-63,41],[-63,43],[-61,43],[-60,44],[-60,45],[-30,24],[-34,27],[-67,55],[-66,57],[-65,59],[-64,59],[-62,61],[-61,63],[-59,63],[-30,33],[-28,32],[-56,66],[-55,67],[-53,68],[-51,69],[-50,70],[-48,71],[-47,73],[-23,37],[-25,40],[-48,84],[-47,85],[-7,15],[-5,0],[-90,5],[-89,8],[-90,9],[-89,11],[-88,13],[-45,7],[-29,5],[-58,10],[-29,5],[-89,18],[-37,7],[-73,16],[-73,16],[-72,18],[-72,20],[-72,20],[-72,22],[-71,23],[-35,12],[-42,14],[-84,31],[-83,32],[-82,34],[-81,36],[-67,31],[-12,0],[-45,-1],[-45,1],[-89,2],[-90,3],[-90,6],[-89,7],[-89,9],[-89,11],[-89,13],[-45,7],[-43,8],[-89,16],[-87,19],[-87,20],[-87,22],[-86,23],[-86,26],[-85,27],[-43,14],[-44,16],[-89,32],[-88,35],[-87,36],[-30,13],[-198,86],[-41,19],[-82,38],[-81,39],[-80,42],[-41,21],[-38,21],[-77,44],[-75,45],[-75,47],[-74,49],[-72,50],[-71,51],[-70,53],[-36,27],[-33,27],[-68,56],[-66,57],[-65,58],[-64,60],[-62,61],[-60,62],[-60,64],[-69,41],[-74,47],[-74,48],[-72,50],[-72,51],[-70,53],[-35,27],[-34,28],[-67,55],[-67,57],[-64,59],[-64,59],[-62,61],[-41,42],[-28,6],[-87,22],[-86,24],[-85,25],[-86,27],[-42,14],[-42,15],[-84,31],[-83,32],[-82,34],[-81,36],[-81,37],[-80,39],[-78,41],[-40,21],[-38,21],[-77,44],[-76,45],[-75,47],[-73,48],[-73,50],[-71,52],[-70,52],[-35,28],[-34,27],[-68,55],[-66,57],[-65,59],[-63,60],[-63,60],[-60,63],[-60,63],[-27,31],[-31,13],[-81,37],[-79,39],[-79,41],[-40,21],[-28,15],[-57,33],[-57,33],[-56,34],[-28,17],[-94,59],[-47,30],[-92,61],[-91,64],[-88,66],[-44,34],[-34,27],[-68,56],[-66,57],[-65,58],[-64,60],[-62,61],[-61,62],[-59,64],[-30,32],[-28,32],[-56,66],[-55,67],[-53,68],[-52,69],[-50,71],[-48,71],[-47,72],[-23,37],[-22,36],[-43,74],[-41,75],[-5,8],[-41,42],[-59,64],[-30,32],[-28,32],[-29,34],[-27,32],[-15,17],[-34,42],[-6,8],[-40,52],[-13,16],[-52,69],[-50,71],[-48,71],[-47,72],[-23,37],[-22,36],[-43,74],[-42,75],[-40,76],[-38,76],[-16,35],[-38,65],[-42,75],[-39,75],[-5,10],[-48,65],[-23,31],[-52,72],[-49,73],[-48,73],[-23,38],[-22,36],[-43,74],[-42,75],[-40,75],[-38,77],[-31,66],[-44,14],[-42,15],[-83,30],[-84,33],[-82,34],[-81,35],[-81,38],[-80,39],[-79,40],[-39,21],[-39,21],[-77,44],[-75,46],[-75,47],[-74,48],[-73,50],[-71,51],[-70,53],[-35,27],[-34,27],[-68,56],[-66,57],[-65,58],[-64,60],[-62,61],[-61,62],[-59,64],[-30,32],[-28,32],[-56,66],[-55,67],[-53,68],[-52,70],[-50,70],[-49,71],[-46,72],[-24,37],[-21,36],[-44,74],[-25,45],[-55,68],[-53,68],[-52,69],[-50,70],[-48,71],[-47,73],[-24,37],[-27,46],[-55,95],[-52,97],[-50,98],[-23,49],[-63,134],[-3,0],[-193,14],[-51,4],[-102,9],[-101,12],[-101,15],[-51,7],[-44,8],[-88,17],[-88,18],[-87,20],[-87,22],[-87,23],[-85,26],[-86,27],[-42,14],[-29,10],[-57,20],[-29,11],[-182,68],[-35,13],[-69,27],[-68,29],[-68,29],[-67,31],[-67,31],[-66,33],[-66,34],[-32,18],[-31,16],[-62,35],[-61,36],[-15,9],[-4,1],[-51,13],[-103,27],[-102,29],[-101,32],[-51,16],[-42,15],[-84,31],[-83,32],[-82,34],[-82,35],[-81,38],[-79,39],[-79,40],[-40,21],[-52,29],[-103,60],[-51,31],[-161,99],[-49,31],[-98,65],[-96,66],[-93,70],[-47,36],[-13,10],[-34,15],[-112,52],[-111,56],[-55,29],[-38,21],[-77,44],[-76,45],[-75,47],[-74,48],[-72,50],[-72,52],[-70,53],[-35,27],[-48,38],[-95,80],[-92,82],[-89,84],[-44,43],[-77,77],[-77,72],[-15,13],[-29,28],[-14,13],[-3,3],[-13,3],[-52,14],[-184,49],[-33,10],[-68,19],[-67,21],[-66,21],[-34,11],[-42,15],[-84,31],[-83,32],[-82,34],[-82,36],[-81,37],[-80,39],[-79,41],[-39,21],[-39,21],[-77,44],[-76,45],[-75,47],[-73,48],[-17,12],[-146,79],[-38,21],[-75,43],[-74,45],[-74,46],[-72,48],[-71,49],[-70,50],[-69,52],[-35,27],[-30,24],[-61,49],[-59,51],[-59,52],[-29,26],[-140,129],[-35,33],[-69,67],[-68,68],[-66,71],[-33,36],[-30,34],[-60,70],[-59,72],[-56,73],[-28,37],[-111,150],[-24,33],[-46,65],[-45,67],[-44,67],[-22,35],[-19,32],[-38,65],[-43,31],[-71,53],[-35,27],[-34,27],[-67,55],[-67,57],[-65,59],[-64,60],[-62,61],[-61,62],[-60,63],[-29,33],[-24,27],[-48,56],[-47,56],[-46,57],[-45,58],[-43,59],[-43,60],[-41,60],[-20,30],[-103,157],[-8,13],[-17,27],[-9,13],[-100,158],[-5,9],[-11,17],[-6,10],[-22,36],[-43,74],[-42,75],[-40,76],[-38,76],[-36,77],[-35,78],[-33,79],[-16,40],[-13,35],[-26,70],[-24,70],[-23,71],[-21,72],[-20,71],[-18,72],[-17,73],[-3,11],[-14,31],[-33,79],[-16,40],[-14,39],[-29,80],[-28,81],[-25,81],[-23,81],[-22,83],[-20,82],[-17,83],[-9,42],[-1,9],[-19,55],[-25,81],[-24,81],[-21,82],[-20,83],[-17,83],[-9,42],[-6,35],[-12,72],[-11,73],[-9,72],[-8,73],[-3,33],[-28,98],[-14,52],[-77,310],[-13,53],[-23,104],[-11,54],[-7,41],[-14,83],[-12,84],[-9,84],[-8,84],[-6,84],[-4,85],[-2,84],[-1,43],[0,42],[2,84],[4,84],[6,85],[8,84],[2,20],[0,36],[0,41],[2,84],[4,85],[6,84],[7,84],[10,84],[12,84],[14,83],[7,43],[12,58],[26,118],[30,118],[34,116],[18,58],[15,44],[15,46],[33,92],[18,46],[15,39],[33,79],[24,55],[-9,33],[-19,83],[-18,82],[-8,43],[-11,59],[-18,121],[-9,60],[-4,34],[-4,36],[-7,73],[-6,73],[-4,73],[-2,36],[-3,62],[-1,35],[-1,70],[0,36],[0,41],[1,49],[-5,29],[-12,84],[-9,84],[-8,84],[-6,84],[-4,85],[-2,84],[-1,43],[1,52],[3,105],[2,52],[2,34],[4,58],[1,12],[-4,20],[-13,83],[-12,84],[-10,84],[-8,84],[-6,85],[-4,84],[-1,19],[-4,59],[-4,85],[-2,84],[0,43],[0,42],[2,84],[4,84],[6,85],[7,84],[10,84],[12,84],[13,83],[8,43],[10,48],[17,82],[18,82],[18,75],[21,82],[24,82],[25,81],[27,80],[29,80],[15,41],[20,49],[20,48],[13,35],[16,39],[33,78],[34,78],[36,78],[38,76],[40,76],[42,75],[43,74],[23,38],[23,35],[46,73],[49,71],[50,70],[52,69],[53,69],[55,67],[57,66],[29,33],[23,25],[48,52],[49,50],[49,50],[20,19],[24,83],[12,44],[14,45],[10,32],[21,63],[22,63],[23,62],[12,32],[16,39],[32,78],[35,79],[36,77],[38,76],[40,76],[42,75],[43,74],[23,38],[22,36],[47,72],[49,71],[50,70],[52,70],[53,68],[55,67],[57,66],[29,33],[29,31],[59,64],[61,62],[63,61],[64,60],[65,59],[67,57],[68,55],[35,28],[26,21],[54,41],[28,20],[31,23],[29,21],[58,41],[59,40],[60,40],[61,38],[61,37],[93,54],[8,3],[141,76],[112,56],[82,37],[81,36],[83,34],[84,32],[84,31],[43,15],[42,14],[86,27],[96,28],[34,9],[19,7],[64,19],[71,20],[71,19],[72,18],[72,16],[72,16],[36,7],[58,11],[32,6],[64,12],[32,5],[45,7],[89,13],[90,11],[90,9],[90,8],[89,5],[57,9],[5,16],[16,39],[33,78],[34,78],[37,78],[38,76],[40,76],[41,75],[44,74],[22,38],[19,29],[39,61],[40,59],[41,59],[21,30],[41,56],[30,41],[61,80],[64,78],[43,51],[11,34],[27,80],[29,80],[15,41],[16,39],[33,78],[34,78],[37,78],[38,76],[40,76],[41,75],[44,74],[22,38],[23,35],[47,73],[49,71],[50,70],[52,69],[53,69],[55,67],[57,66],[29,33],[29,31],[60,64],[61,62],[62,61],[64,60],[66,58],[66,58],[68,55],[35,28],[35,27],[70,53],[72,51],[73,50],[74,48],[75,47],[77,46],[77,44],[39,21],[39,21],[80,41],[80,39],[81,37],[82,36],[83,34],[84,32],[84,31],[43,15],[45,15],[91,28],[46,14],[103,30],[31,9],[29,8],[51,21],[83,32],[85,31],[42,15],[43,14],[85,27],[87,25],[87,24],[87,22],[88,20],[89,18],[88,17],[45,8],[34,5],[68,10],[35,5],[190,25],[36,5],[73,8],[73,7],[73,6],[73,5],[73,4],[73,2],[73,1],[37,1],[58,-1],[13,1],[90,10],[90,7],[90,5],[91,4],[90,2],[46,0],[58,0],[83,-3],[47,31],[75,47],[77,46],[77,43],[40,22],[52,28],[107,53],[109,51],[110,48],[56,23],[71,29],[55,21],[111,41],[56,20],[42,14],[86,27],[86,26],[87,23],[88,22],[88,20],[88,19],[49,9],[12,19],[49,71],[50,70],[52,70],[53,68],[56,67],[17,20],[4,11],[27,81],[29,80],[15,40],[16,39],[32,79],[35,78],[36,77],[39,77],[40,76],[41,75],[44,74],[23,37],[22,36],[47,72],[49,71],[50,71],[52,69],[53,68],[56,67],[56,66],[29,33],[29,32],[60,63],[61,63],[63,61],[64,59],[58,52],[4,61],[8,84],[10,84],[12,83],[13,84],[8,43],[8,40],[18,83],[19,82],[22,82],[23,82],[25,81],[27,81],[29,80],[16,41],[11,27],[23,58],[25,57],[25,56],[13,28],[135,290],[94,217],[14,32],[29,63],[29,63],[31,63],[33,62],[32,59],[3,68],[6,84],[8,84],[9,84],[12,84],[14,83],[7,43],[8,40],[18,83],[20,83],[21,82],[24,81],[25,82],[27,80],[29,80],[15,41],[16,40],[34,80],[18,41],[104,235],[13,28],[27,58],[28,57],[29,57],[30,56],[30,56],[49,84],[69,110],[53,82],[38,55],[39,54],[40,53],[40,52],[42,52],[21,26],[9,11],[0,12],[4,85],[6,84],[8,84],[10,84],[11,84],[14,83],[8,43],[8,41],[17,83],[20,82],[21,82],[24,82],[25,81],[27,80],[29,80],[16,41],[15,39],[33,79],[35,78],[36,77],[39,77],[40,75],[42,75],[43,74],[23,38],[5,7],[32,78],[35,79],[36,77],[39,76],[40,76],[42,75],[43,74],[23,38],[23,35],[47,73],[48,71],[51,70],[52,69],[53,69],[56,67],[56,66],[30,33],[22,24],[46,49],[46,49],[48,48],[49,47],[49,46],[50,45],[51,45],[27,23],[54,45],[22,34],[51,70],[52,69],[34,43],[24,58],[34,78],[37,77],[38,77],[40,76],[20,35],[25,78],[35,98],[19,49],[2,6],[6,14],[2,7],[42,103],[67,189],[10,27],[2,5],[-5,17],[-22,82],[-20,82],[-18,83],[-8,43],[-8,45],[-15,92],[-7,46],[-24,171],[-7,60],[-12,120],[-9,121],[-4,120],[-2,61],[0,88],[-3,31],[-8,84],[-6,84],[-4,85],[-3,84],[0,43],[0,42],[2,84],[4,84],[6,85],[8,84],[10,84],[11,84],[14,83],[8,43],[8,40],[17,83],[10,40],[-3,47],[-2,32],[-25,493],[-2,43],[-2,88],[0,45],[0,41],[2,85],[4,84],[6,85],[8,84],[9,84],[12,83],[14,84],[7,42],[9,41],[17,83],[20,82],[21,82],[24,82],[25,81],[27,81],[30,80],[15,40],[16,39],[32,79],[35,78],[37,77],[38,77],[40,76],[42,75],[44,74],[23,37],[22,36],[47,72],[49,71],[51,71],[52,69],[54,68],[55,67],[57,66],[29,33],[25,28],[52,55],[53,54],[54,54],[56,53],[56,51],[57,51],[30,25],[8,11],[36,46],[19,23],[16,24],[45,64],[47,64],[48,63],[49,62],[51,61],[52,60],[27,30],[29,32],[60,63],[61,62],[63,62],[65,59],[65,59],[67,57],[69,56],[35,27],[34,27],[71,53],[73,51],[73,50],[74,49],[76,47],[77,45],[78,44],[39,22],[32,16],[64,33],[16,8],[23,21],[42,38],[-14,59],[-18,83],[-9,42],[-3,15],[-5,32],[-3,15],[-70,407],[-6,31],[-9,63],[-9,63],[-7,63],[-4,31],[-14,138],[-8,54],[-5,34],[-10,69],[-8,68],[-6,69],[-6,69],[-4,69],[-3,69],[-1,70],[0,35],[0,41],[2,85],[4,84],[6,85],[8,84],[9,84],[12,83],[14,84],[8,43],[8,40],[17,83],[20,82],[22,82],[23,82],[25,81],[28,81],[29,80],[15,40],[6,15],[12,30],[6,15],[115,279],[15,35],[31,71],[32,70],[34,70],[36,69],[37,68],[59,102],[1,2],[87,140],[34,52],[36,52],[51,70],[52,69],[54,68],[55,67],[57,66],[29,34],[30,31],[48,52],[5,15],[25,81],[27,80],[24,66],[15,42],[29,80],[15,41],[16,38],[33,79],[35,78],[36,77],[39,77],[40,76],[42,75],[44,74],[23,37],[4,7],[9,14],[4,8],[21,32],[22,35],[46,68],[47,68],[48,66],[50,66],[52,64],[81,96],[115,127],[44,47],[45,45],[63,61],[65,60],[66,59],[67,57],[68,55],[35,28],[35,27],[71,53],[73,51],[73,50],[75,49],[76,47],[76,45],[78,44],[40,22],[39,20],[80,41],[81,39],[82,37],[83,36],[83,34],[84,32],[85,31],[43,15],[15,5],[30,13],[84,34],[84,32],[85,31],[43,15],[43,14],[86,27],[87,25],[87,24],[89,22],[88,20],[89,18],[90,17],[45,7],[44,7],[91,13],[90,11],[91,9],[91,8],[91,5],[91,4],[91,2],[45,0],[46,0],[91,-2],[91,-4],[91,-5],[91,-8],[91,-9],[90,-11],[91,-13],[44,-7],[37,-6],[72,-13],[72,-14],[72,-16],[72,-16],[71,-18],[71,-19],[71,-20],[35,-10],[7,-3],[33,-10],[46,-14],[12,-1],[7,0],[21,0],[59,0],[20,-1],[3,0],[8,0],[31,-1],[16,0],[6,0],[7,0],[28,-1],[3,0],[349,0],[13,0],[13,0],[14,0],[41,-1],[11,1],[32,1],[14,1],[44,1],[89,2],[44,0],[13,0],[27,0],[13,0],[14,0],[49,-1],[99,-4],[99,-5],[98,-8],[50,-4],[13,-2],[35,-3],[70,-8],[70,-10],[69,-10],[34,-5],[68,-12],[11,-2],[16,-3],[50,-7],[54,-10],[106,-20],[106,-22],[105,-25],[52,-14],[13,-3],[29,-8],[58,-16],[28,-8],[14,-4],[17,-5],[35,-11],[17,-5],[13,-4],[23,-7],[31,-10],[126,-2],[246,7],[145,6],[320,22],[235,18],[5,0],[9,1],[4,0],[279,20],[128,14],[146,17],[34,5],[14,3],[31,8],[98,30],[8,2],[16,5],[9,2],[40,12],[54,19],[6,2],[10,4],[5,2],[157,54],[8,3],[17,6],[10,3],[7,2],[24,8],[165,69],[151,71],[58,31],[127,85],[40,30],[125,107],[105,96],[15,14],[19,36],[20,37],[6,11],[5,9],[11,19],[5,9],[6,11],[13,21],[25,42],[12,21],[7,10],[4,7],[7,12],[5,8],[14,22],[30,46],[15,23],[7,11],[11,16],[12,19],[11,23],[37,78],[38,76],[40,76],[42,75],[44,74],[23,38],[23,35],[8,13],[19,30],[16,24],[23,36],[57,83],[25,36],[18,30],[19,34],[8,12],[8,14],[17,27],[9,14],[22,35],[46,71],[47,69],[50,69],[25,34],[9,12],[28,36],[57,72],[28,36],[10,11],[28,33],[57,66],[29,33],[27,29],[57,60],[28,30],[10,10],[24,24],[48,47],[48,46],[50,46],[50,44],[51,44],[62,52],[73,58],[18,13],[19,15],[12,9],[50,37],[101,72],[104,69],[106,66],[54,33],[12,7],[36,20],[70,40],[36,20],[21,11],[43,22],[21,11],[14,7],[56,27],[114,54],[57,26],[14,6],[5,2],[11,4],[5,2],[26,12],[38,16],[77,31],[38,15],[13,5],[43,16],[87,31],[44,16],[61,19],[122,37],[61,18],[13,4],[57,15],[115,28],[115,25],[116,22],[58,10],[38,6],[76,11],[38,5],[13,2],[36,4],[72,8],[71,7],[72,6],[72,5],[72,3],[72,2],[72,2],[36,0],[59,-1],[117,-3],[118,-6],[117,-9],[58,-6],[14,-1],[64,-8],[129,-17],[64,-9],[45,-8],[89,-17],[90,-17],[6,2],[39,6],[56,9],[112,15],[56,7],[243,27],[253,56],[142,37],[11,3],[21,6],[10,2],[436,111],[59,15],[20,5],[9,2],[7,2],[7,2],[8,2],[14,3],[19,4],[4,1],[5,1],[10,3],[16,5],[39,12],[4,1],[7,2],[4,1],[81,23],[7,2],[21,6],[185,54],[40,11],[28,8],[48,14],[13,5],[66,18],[87,24],[88,22],[89,20],[66,14],[67,12],[180,29],[68,10],[67,8],[91,9],[91,7],[91,6],[91,4],[92,2],[45,0],[46,0],[91,-2],[92,-4],[91,-6],[91,-7],[90,-9],[91,-11],[90,-13],[45,-7],[45,-8],[90,-16],[89,-18],[89,-21],[88,-21],[87,-24],[87,-26],[87,-27],[43,-14],[43,-15],[85,-30],[84,-33],[84,-34],[82,-35],[82,-38],[81,-39],[80,-40],[40,-21],[39,-22],[78,-44],[77,-45]]],"transform":{"scale":[0.000045330551514864405,0.000046672275404801527],"translate":[-94.42312748996653,15.081341048246031]},"objects":{"CONAGUA_GRIJALVA19ABR2010_BUFF20KM_GW":{"type":"GeometryCollection","geometries":[{"arcs":[[0]],"type":"Polygon","properties":{"nom_rha":"Frontera Sur","BUFF_DIST":20,"ORIG_FID":0}}]}}}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>Contenido de agua en la cuenca Grijalva</title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css" />
<link rel="stylesheet" href="https://cdn.rawgit.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.control.min.css" />
<link href='https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.0/mapbox-gl.css' rel='stylesheet' />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../js//Leaflet.BeautifyIcon/leaflet-beautify-marker-icon.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="../js/L.VisualClick/L.VisualClick.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css" />
<link rel="stylesheet" type="text/css" href="../css/style.css">
<link rel="icon" href="../img/grijalva.png" sizes="16x16">
<!--<link rel="stylesheet" href="./css/map.css" type="text/css">-->
</head>
<body>
<img class="img_bg" src="../img/sumidero2.jpg" alt="Ca&ntilde;&oacute;n del Sumidero">
<span class="photo-credit">Foto: Gabriela L&oacute;pez</span>
<div class="container" id="startHeader">
<div class="jumbotron mt-5" style="background-color: rgba(233,236,239,0.75); opacity: 0.99;">
<h1 class="display-4">Contenido de agua en la cuenca del r&iacute;o Grijalva</h1>
<p class="lead">Explora la apariencia de la cuenca del r&iacute;o Grijalva a trav&eacute;s del tiempo
por medio de la visualizaci&oacute;n de cuerpos de agua y
algunos indicadores obtenidos del an&aacute;lisis de im&aacute;genes de radar de Sentinel-1.</p>
<hr class="my-4">
<p>Escoge las fechas para las que quieres explorar el contenido de agua y sus indicadores.</p>
<div class="container">
<div class="row justify-content-center">
<div class="col-4 text-center">
<input type="text" name="date-initial" id="date-initial" readonly="readonly" size="12"
placeholder="Fecha inicial" data-calendar="false" />
</div>
<div class="col-4 text-center">
<input type="text" name="date-final" id="date-final" readonly="readonly" size="12"
placeholder="Fecha final" data-calendar="true" />
</div>
</div>
</div>
</div>
</div>
<div class="d-flex flex-column" id="mainContainer">
<header class="page-header py-2">
<div class="container text-center">
<div class="row align-items-center text-center" id="title">
<h2>Contenido de agua en la cuenca del r&iacute;o Grijalva</h2>
</div>
</div>
</header>
<!-- middle container -->
<div class="container-fluid d-flex flex-fill">
<div class="row d-flex flex-fill">
<div class="col-md-6" id="mexmap">
<div id="datePickers"></div>
<div class="picker">
<select id="indicatorSelect"></select>
</div>
<div class="text-center loader">
<i class="fa fa-spinner2 fa-spin fa-5x loadSpinner"></i><br>
<span class="loadText">Cargando datos...<br>
<span id="wb-fileLoad"></span>
<span id="basemap-fileLoad"></span>
</span>
</div>
</div>
<div class="col-md-6" id="overlaydiv"></div>
<div class="col-md-6" id="story">
<div class="loader"></div>
<div class="row h-50 border-bottom">
<div class="col-6 border-right">
<div id="area-graph"></div>
</div>
<div class="col-6">
<div id="perimeter-graph"></div>
</div>
</div>
<div class="row h-50">
<div class="col-6 border-right">
<div id="costa-graph"></div>
</div>
<div class="col-6">
<div id="df-graph"></div>
</div>
</div>
</div>
</div>
</div>
<footer class="page-footer py-2">
<div class="container-fluid text-center">
<div class="row align-items-center">
<div class="col">
<span id="logo-conacyt"><a href="http://www.concayt.gob.mx" target="_blank"><img
src="../img/conacyt3.png" height="70" class="grayscale"></a></span>
</div>
<div class="col">
<span id="logo-cg"><a href="http://www.centrogeo.org.mx" target="_blank"><img
src="../img/centrogeo.png" height="70" class="grayscale"></a></span>
</div>
<div class="col">
<span id="logo-geoint"><a href="http://geoint.mx/" target="_blank"><img
src="../img/geoint.png" height="70" class="grayscale"></a></span>
</div>
</div>
</div>
</footer>
</div>
<!-- Modal -->
<div class="modal fade" id="explainIndicatorModal" tabindex="-1" role="dialog"
aria-labelledby="explainIndicatorModal" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="explainIndicatorModalTitle">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<!--
<div id='mapmex'></div>
<div class="picker">
<select id="indicatorSelect"></select>
</div>
<div id="datePickers">
<input type="text" name="date-initial" id="date-initial" readonly="readonly" size="12"
placeholder="Fecha inicial" data-calendar="false" />
<input type="text" name="date-final" id="date-final" readonly="readonly" size="12"
placeholder="Fecha final" data-calendar="true" />
</div>-->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
</script>
<script src="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"></script>
<script src="../js/Leaflet.BeautifyIcon/leaflet-beautify-marker-icon.js"></script>
<script src="../js/L.VisualClick/L.VisualClick.js"></script>
<script src="https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.3.1/leaflet-omnivore.min.js"></script>
<script src="https://unpkg.com/leaflet.vectorgrid@latest/dist/Leaflet.VectorGrid.bundled.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/nezasa/iso8601-js-period/master/iso8601.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.0.3/chroma.min.js"></script>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.0/mapbox-gl.js'></script>
<script src="https://unpkg.com/mapbox-gl-leaflet/leaflet-mapbox-gl.js"></script>
<script type="text/javascript" src="../js/Leaflet.Sync.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js"></script>
<script src="https://npmcdn.com/@turf/turf/turf.min.js"></script>
<script src="../js/grijalva_functions.js"></script>
<!--<script>
var map = new mapboxgl.Map({
'container': 'mapmex',
'zoom': 7,
'center': [-92.28, 17.22], // cuenca Grijalva
'style': {
'version': 8,
'sources': {
'carto-dark': {
'type': 'raster',
'tiles': [
"http://a.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
"http://b.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
"http://c.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
"http://d.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png"
]
}
},
'layers': [{
'id': 'carto-dark-layer',
'type': 'raster',
'source': 'carto-dark',
'minzoom': 0,
'maxzoom': 22
}]
}
});
map.addControl(new mapboxgl.NavigationControl());
map.on('load', function() {
map.addLayer({
id: 'abril_2018-tiles',
source: {
type: 'vector',
// "http://localhost:8090/data/" + monthYear + "/mvt/{z}/{x}/{y}?geom_column=geom&columns=" + indicators.join();
tiles: ['http://localhost:8090/data/abril_2018/mvt/{z}/{x}/{y}?geom_column=geom&columns=df'],
maxzoom: 14,
minzoom: 5
},
'source-layer': 'abril_2018',
type: 'fill',
minzoom: 5,
'paint': {
'fill-opacity': 0.7,
'fill-color': [
'interpolate',
['linear'],
['get', 'df'],
1, 'rgba(255, 0, 0, 0.5)', // red
1.3, 'rgba(0, 255, 0, 0.5)', // green
],
'fill-outline-color': [
'interpolate',
['linear'],
['get', 'df'],
1, 'rgba(255, 0, 0, 0.6)', // red
1.3, 'rgba(0, 255, 0, 0.6)', // green
]
}
})
})
</script>-->
</body>
</html>
\ No newline at end of file
/*
* Heavily based on the CSS for https://github.com/mapshakers/leaflet-icon-pulse
*
* Modified to get rid of the opaque circle, and tweaked the pulse to be subtler.
*/
.leaflet-visualclick-icon {
border-radius: 100%;
pointer-events: none;
}
.leaflet-visualclick-icon:after {
content: "";
border-radius: 100%;
height: 60px;
width: 60px;
position: absolute;
margin-left: -30px;
margin-top: -30px;
pointer-events: none;
box-shadow: inset 0 0 25px -1px #E1E3E4, 0 0 10px -1px #C5C5C5;
animation: visualclick-pulsate 0.7s ease-out;
animation-iteration-count: 1;
animation-delay: 0s;
opacity: 0;
}
.leaflet-visualclick-icon-touch:after {
content: "";
border-radius: 100%;
height: 140px;
width: 140px;
position: absolute;
margin-left: -70px;
margin-top: -70px;
pointer-events: none;
box-shadow: inset 0 0 25px -1px #E1E3E4, 0 0 10px -1px #C5C5C5;
animation: visualclick-pulsate-touch 0.7s ease-out;
animation-iteration-count: 1;
animation-delay: 0s;
opacity: 0;
}
@keyframes visualclick-pulsate {
0% {
transform: scale(0.5);
opacity: 1;
}
100% {
transform: scale(1.3);
opacity: 0;
}
}
@keyframes visualclick-pulsate-touch {
from {
transform: scale(1);
opacity: 0.8;
}
to {
transform: scale(0.2);
opacity: 0.0;
}
}
.leaflet-pane.leaflet-ie10-visual-click-pane-pane { z-index: 300; }
\ No newline at end of file
/*
* L.VisualClick
* Description: A plugin that adds visual feedback when user clicks/taps the map. Useful for when you have a delay on the clickEvents for async fetching of data, or implmentation of Leaflet.singleclick
* Example: L.visualClick({map: leafletMap}); //Just works
* Author: Dag Jomar Mersland (twitter: @dagjomar)
*/
L.Map.VisualClick = L.Handler.extend({
_makeVisualIcon: function() {
var touchMode = this._map.options.visualClickMode === 'touch' ? true : false;
return L.divIcon({
className: "leaflet-visualclick-icon" + (touchMode ? '-touch' : ''), // See L.VisualClick.css
iconSize: [0, 0],
clickable: false
});
},
_visualIcon: null,
_onClick: function(e) {
var map = this._map;
var latlng = e.latlng;
var marker = L.marker(latlng, {
pane: this._map.options.visualClickPane,
icon: this._visualIcon,
interactive: false
}).addTo(map);
window.setTimeout(function() {
if (map) {
map.removeLayer(marker);
}
}.bind(this), map.options.visualClick.removeTimeout || 450); // Should somewhat match the css animation to prevent loops
return true;
},
addHooks: function () {
if (this._visualIcon === null) {
this._visualIcon = this._makeVisualIcon();
}
if (this._map.options.visualClickPane === 'ie10-visual-click-pane') {
this._map.createPane('ie10-visual-click-pane');
}
this._map.on(this._map.options.visualClickEvents, this._onClick, this);
},
removeHooks: function () {
this._map.off(this._map.options.visualClickEvents, this._onClick, this);
},
});
L.Map.mergeOptions({
visualClick: L.Browser.any3d ? true : false, //Can be true, desktop, touch, false. Not straight forward to use L.Browser.touch flag because true on IE10
visualClickMode: L.Browser.touch && L.Browser.mobile ? 'touch' : 'desktop', //Not straight forward to use only L.Browser.touch flag because true on IE10 - so this is slightly better
visualClickEvents: 'click contextmenu', //Standard leaflety way of defining which events to hook on to
visualClickPane: (L.Browser.ie && document.documentMode === 10) ?
'ie10-visual-click-pane' :
'shadowPane' // Map pane where the pulse markers will be showh
});
L.Map.addInitHook('addHandler', 'visualClick', L.Map.VisualClick);
\ No newline at end of file
/*
Leaflet.BeautifyIcon, a plugin that adds colorful iconic markers for Leaflet by giving full control of style to end user, It has also ability to adjust font awesome
and glyphicon icons
(c) 2016-2017, Muhammad Arslan Sajid
http://leafletjs.com
*/
.beautify-marker {
text-align: center;
font-weight: 700;
font-family: monospace;
position:absolute;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.beautify-marker.circle {
border-radius: 100%;
}
.beautify-marker.circle-dot, .beautify-marker.doughnut {
border-radius: 100%;
}
.beautify-marker.marker {
border-top-left-radius: 50%;
border-top-right-radius: 50% 100%;
border-bottom-left-radius: 100% 50%;
border-bottom-right-radius: 0%;
/* rotating 45deg clockwise to get the corner bottom center */
transform: rotate(45deg);
}
.beautify-marker.marker > * {
/* rotating 45deg counterclock to adjust marker content back to normal */
transform: rotate(-45deg);
}
\ No newline at end of file
/*
Leaflet.BeautifyIcon, a plugin that adds colorful iconic markers for Leaflet by giving full control of style to end user, It has also ability to adjust font awesome
and glyphicon icons
(c) 2016-2017, Muhammad Arslan Sajid
http://leafletjs.com
*/
/*global L of leaflet*/
(function (window, document, undefined) {
'use strict';
/*
* Leaflet.BeautifyIcon assumes that you have already included the Leaflet library.
*/
/*
* Default settings for various style markers
*/
var defaults = {
iconColor: '#1EB300',
iconAnchor: {
'marker': [14, 36]
, 'circle': [11, 10]
, 'circle-dot': [5, 5]
, 'rectangle-dot': [5, 6]
, 'doughnut': [8, 8]
},
popupAnchor: {
'marker': [0, -25]
, 'circle': [-3, -76]
, 'circle-dot': [0, -2]
, 'rectangle-dot': [0, -2]
, 'doughnut': [0, -2]
},
innerIconAnchor: {
'marker': [-2, 5]
, 'circle': [0, 2]
},
iconSize: {
'marker': [28, 28]
, 'circle': [22, 22]
, 'circle-dot': [2, 2]
, 'rectangle-dot': [2, 2]
, 'doughnut': [15, 15]
}
};
L.BeautifyIcon = {
Icon: L.Icon.extend({
options: {
icon: 'leaf'
, iconSize: defaults.iconSize.circle
, iconAnchor: defaults.iconAnchor.circle
, iconShape: 'circle'
, iconStyle: ''
, innerIconAnchor: [0, 3] // circle with fa or glyphicon or marker with text
, innerIconStyle: ''
, isAlphaNumericIcon: false
, text: 1
, borderColor: defaults.iconColor
, borderWidth: 2
, borderStyle: 'solid'
, backgroundColor: 'white'
, textColor: defaults.iconColor
, customClasses: ''
, spin: false
, prefix: 'fa'
, html: ''
},
initialize: function (options) {
this.applyDefaults(options);
this.options = (!options || !options.html) ? L.Util.setOptions(this, options) : options;
},
applyDefaults: function (options) {
if (options) {
if (!options.iconSize && options.iconShape) {
options.iconSize = defaults.iconSize[options.iconShape];
}
if (!options.iconAnchor && options.iconShape) {
options.iconAnchor = defaults.iconAnchor[options.iconShape];
}
if (!options.popupAnchor && options.iconShape) {
options.popupAnchor = defaults.popupAnchor[options.iconShape];
}
if (!options.innerIconAnchor) {
// if icon is type of circle or marker
if (options.iconShape === 'circle' || options.iconShape === 'marker') {
if (options.iconShape === 'circle' && options.isAlphaNumericIcon) { // if circle with text
options.innerIconAnchor = [0, -1];
}
else if (options.iconShape === 'marker' && !options.isAlphaNumericIcon) {// marker with icon
options.innerIconAnchor = defaults.innerIconAnchor[options.iconShape];
}
}
}
}
},
createIcon: function () {
var iconDiv = document.createElement('div')
, options = this.options;
iconDiv.innerHTML = !options.html ? this.createIconInnerHtml() : options.html;
this._setIconStyles(iconDiv);
// having a marker requires an extra parent div for rotation correction
if (this.options.iconShape === 'marker') {
var wrapperDiv = document.createElement('div');
wrapperDiv.className = 'beautify-marker';
wrapperDiv.appendChild(iconDiv);
return wrapperDiv;
}
return iconDiv;
},
createIconInnerHtml: function () {
var options = this.options;
if (options.iconShape === 'circle-dot' || options.iconShape === 'rectangle-dot' || options.iconShape === 'doughnut') {
return '';
}
var innerIconStyle = this.getInnerIconStyle(options);
if (options.isAlphaNumericIcon) {
return '<div style="' + innerIconStyle + '">' + options.text + '</div>';
}
var spinClass = '';
if (options.spin) {
spinClass = ' fa-spin';
}
return '<i class="' + options.prefix + ' ' + options.prefix + '-' + options.icon + spinClass + '" style="' + innerIconStyle + '"></i>';
},
getInnerIconStyle: function (options) {
var innerAnchor = L.point(options.innerIconAnchor)
return 'color:' + options.textColor + ';margin-top:' + innerAnchor.y + 'px; margin-left:' + innerAnchor.x + 'px;' + options.innerIconStyle;
},
_setIconStyles: function (iconDiv) {
var options = this.options
, size = L.point(options.iconSize)
, anchor = L.point(options.iconAnchor);
iconDiv.className = 'beautify-marker ';
if (options.iconShape) {
iconDiv.className += options.iconShape;
}
if (options.customClasses) {
iconDiv.className += ' ' + options.customClasses;
}
iconDiv.style.backgroundColor = options.backgroundColor;
iconDiv.style.color = options.textColor;
iconDiv.style.borderColor = options.borderColor;
iconDiv.style.borderWidth = options.borderWidth + 'px';
iconDiv.style.borderStyle = options.borderStyle;
if (size) {
iconDiv.style.width = size.x + 'px';
iconDiv.style.height = size.y + 'px';
}
if (anchor) {
iconDiv.style.marginLeft = (-anchor.x) + 'px';
iconDiv.style.marginTop = (-anchor.y) + 'px';
}
if (options.iconStyle) {
var cStyle = iconDiv.getAttribute('style');
cStyle += options.iconStyle;
iconDiv.setAttribute('style', cStyle);
}
}
})
};
L.BeautifyIcon.icon = function (options) {
return new L.BeautifyIcon.Icon(options);
}
}(this, document));
\ No newline at end of file
/*
* Extends L.Map to synchronize the interaction on one map to one or more other maps.
*/
(function () {
var NO_ANIMATION = {
animate: false,
reset: true,
disableViewprereset: true
};
L.Sync = function () {};
/*
* Helper function to compute the offset easily.
*
* The arguments are relative positions with respect to reference and target maps of
* the point to sync. If you provide ratioRef=[0, 1], ratioTarget=[1, 0] will sync the
* bottom left corner of the reference map with the top right corner of the target map.
* The values can be less than 0 or greater than 1. It will sync points out of the map.
*/
L.Sync.offsetHelper = function (ratioRef, ratioTarget) {
var or = L.Util.isArray(ratioRef) ? ratioRef : [0.5, 0.5];
var ot = L.Util.isArray(ratioTarget) ? ratioTarget : [0.5, 0.5];
return function (center, zoom, refMap, targetMap) {
var rs = refMap.getSize();
var ts = targetMap.getSize();
var pt = refMap.project(center, zoom)
.subtract([(0.5 - or[0]) * rs.x, (0.5 - or[1]) * rs.y])
.add([(0.5 - ot[0]) * ts.x, (0.5 - ot[1]) * ts.y]);
return refMap.unproject(pt, zoom);
};
};
L.Map.include({
sync: function (map, options) {
this._initSync();
options = L.extend({
noInitialSync: false,
syncCursor: false,
syncCursorMarkerOptions: {
radius: 10,
fillOpacity: 0.3,
color: '#da291c',
fillColor: '#fff'
},
offsetFn: function (center, zoom, refMap, targetMap) {
// no transformation at all
return center;
}
}, options);
// prevent double-syncing the map:
if (this._syncMaps.indexOf(map) === -1) {
this._syncMaps.push(map);
this._syncOffsetFns[L.Util.stamp(map)] = options.offsetFn;
}
if (!options.noInitialSync) {
map.setView(
options.offsetFn(this.getCenter(), this.getZoom(), this, map),
this.getZoom(), NO_ANIMATION);
}
if (options.syncCursor) {
if (typeof map.cursor === 'undefined') {
map.cursor = L.circleMarker([0, 0], options.syncCursorMarkerOptions).addTo(map);
}
this._cursors.push(map.cursor);
this.on('mousemove', this._cursorSyncMove, this);
this.on('mouseout', this._cursorSyncOut, this);
}
// on these events, we should reset the view on every synced map
// dragstart is due to inertia
this.on('resize zoomend', this._selfSetView);
this.on('moveend', this._syncOnMoveend);
this.on('dragend', this._syncOnDragend);
return this;
},
// unsync maps from each other
unsync: function (map) {
var self = this;
if (this._cursors) {
this._cursors.forEach(function (cursor, indx, _cursors) {
if (cursor === map.cursor) {
_cursors.splice(indx, 1);
}
});
}
// TODO: hide cursor in stead of moving to 0, 0
if (map.cursor) {
map.cursor.setLatLng([0, 0]);
}
if (this._syncMaps) {
this._syncMaps.forEach(function (synced, id) {
if (map === synced) {
delete self._syncOffsetFns[L.Util.stamp(map)];
self._syncMaps.splice(id, 1);
}
});
}
if (!this._syncMaps || this._syncMaps.length == 0) {
// no more synced maps, so these events are not needed.
this.off('resize zoomend', this._selfSetView);
this.off('moveend', this._syncOnMoveend);
this.off('dragend', this._syncOnDragend);
}
return this;
},
// Checks if the map is synced with anything or a specifyc map
isSynced: function (otherMap) {
var has = (this.hasOwnProperty('_syncMaps') && Object.keys(this._syncMaps).length > 0);
if (has && otherMap) {
// Look for this specific map
has = false;
this._syncMaps.forEach(function (synced) {
if (otherMap == synced) { has = true; }
});
}
return has;
},
// Callbacks for events...
_cursorSyncMove: function (e) {
this._cursors.forEach(function (cursor) {
cursor.setLatLng(e.latlng);
});
},
_cursorSyncOut: function (e) {
this._cursors.forEach(function (cursor) {
// TODO: hide cursor in stead of moving to 0, 0
cursor.setLatLng([0, 0]);
});
},
_selfSetView: function (e) {
// reset the map, and let setView synchronize the others.
this.setView(this.getCenter(), this.getZoom(), NO_ANIMATION);
},
_syncOnMoveend: function (e) {
if (this._syncDragend) {
// This is 'the moveend' after the dragend.
// Without inertia, it will be right after,
// but when inertia is on, we need this to detect that.
this._syncDragend = false; // before calling setView!
this._selfSetView(e);
this._syncMaps.forEach(function (toSync) {
toSync.fire('moveend');
});
}
},
_syncOnDragend: function (e) {
// It is ugly to have state, but we need it in case of inertia.
this._syncDragend = true;
},
// overload methods on originalMap to replay interactions on _syncMaps;
_initSync: function () {
if (this._syncMaps) {
return;
}
var originalMap = this;
this._syncMaps = [];
this._cursors = [];
this._syncOffsetFns = {};
L.extend(originalMap, {
setView: function (center, zoom, options, sync) {
// Use this sandwich to disable and enable viewprereset
// around setView call
function sandwich (obj, fn) {
var viewpreresets = [];
var doit = options && options.disableViewprereset && obj && obj._events;
if (doit) {
// The event viewpreresets does an invalidateAll,
// that reloads all the tiles.
// That causes an annoying flicker.
viewpreresets = obj._events.viewprereset;
obj._events.viewprereset = [];
}
var ret = fn(obj);
if (doit) {
// restore viewpreresets event to its previous values
obj._events.viewprereset = viewpreresets;
}
return ret;
}
// Looks better if the other maps 'follow' the active one,
// so call this before _syncMaps
var ret = sandwich(this, function (obj) {
return L.Map.prototype.setView.call(obj, center, zoom, options);
});
if (!sync) {
originalMap._syncMaps.forEach(function (toSync) {
sandwich(toSync, function (obj) {
return toSync.setView(
originalMap._syncOffsetFns[L.Util.stamp(toSync)](center, zoom, originalMap, toSync),
zoom, options, true);
});
});
}
return ret;
},
panBy: function (offset, options, sync) {
if (!sync) {
originalMap._syncMaps.forEach(function (toSync) {
toSync.panBy(offset, options, true);
});
}
return L.Map.prototype.panBy.call(this, offset, options);
},
_onResize: function (event, sync) {
if (!sync) {
originalMap._syncMaps.forEach(function (toSync) {
toSync._onResize(event, true);
});
}
return L.Map.prototype._onResize.call(this, event);
},
_stop: function (sync) {
L.Map.prototype._stop.call(this);
if (!sync) {
originalMap._syncMaps.forEach(function (toSync) {
toSync._stop(true);
});
}
}
});
originalMap.dragging._draggable._updatePosition = function () {
L.Draggable.prototype._updatePosition.call(this);
var self = this;
originalMap._syncMaps.forEach(function (toSync) {
L.DomUtil.setPosition(toSync.dragging._draggable._element, self._newPos);
toSync.eachLayer(function (layer) {
if (layer._google !== undefined) {
var offsetFn = originalMap._syncOffsetFns[L.Util.stamp(toSync)];
var center = offsetFn(originalMap.getCenter(), originalMap.getZoom(), originalMap, toSync);
layer._google.setCenter(center);
}
});
toSync.fire('move');
});
};
}
});
})();
/*
* Copyright 2019 - All rights reserved.
* Rodrigo Tapia-McClung
*
* August 2019
*/
/* globals omnivore, Promise, chroma */
/* exported layerControl */
let timeParse,
timeFormat,
timeDimensionControl,
userFiles = [],
monthArray = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
dateArray = [],
dateMin,
dateMax,
minUserDate,
maxUserDate,
userDates,
map,
overlay,
glmap,
osmLayer, cartoLightLayer, cartoDarkLayer,
timeLayer,
layerControl;
// define empty objects and indicators
let maxIndicators = {},
minIndicators = {},
indicators = ["area", "perimeter", "costa", "df"],
indicatorsNames = ["Área", "Perímetro", "Desarrollo de la línea de costa", "Dimensión fractal"];
let cols = [];
indicators.forEach( (indicator) => {
cols.push("min(" + indicator + ") as min" + indicator);
cols.push("max(" + indicator + ") as max" + indicator);
});
let currentTiles = {},
allTiles = {};
d3.json("https://unpkg.com/d3-time-format@2.1.1/locale/es-MX.json").then(locale => {
d3.timeFormatDefaultLocale(locale);
timeParse = d3.timeParse("%B_%Y");
timeFormat = d3.timeFormat("%B_%Y");
setupTimeDimensionControl();
setupDates()
.then(dates => populateDates(dates))
.then(userData => setupMap(userData))
.then(map => populateMap(map));
});
const sortInitialDateAscending = (a, b) => {
// Dates will be cast to numbers automagically:
return a - b;
}
// query available dates on DB
const setupDates = () => {
return new Promise( resolve => {
let layersQuery = "http://localhost:8090/data/list_layers";
d3.json(layersQuery).then(layers => {
layers.forEach(layer => {
dateArray.push(timeParse(layer.f_table_name)); // convert filenames to dates
})
dateArray = dateArray.sort(sortInitialDateAscending); // order dates
dateMin = d3.min(dateArray);
dateMax = d3.max(dateArray);
//userFiles = dateArray.map( month => timeFormat(month)); // order table names by date
const dates = {min:dateMin, max:dateMax, dates:dateArray};
resolve(dates);
});
});
}
const populateDates = (dates) => { // fill out date pickers with available dates
return new Promise( resolve => {
$.datepicker.regional["es"] = {
closeText: "Cerrar",
prevText: "&#x3c;Ant",
nextText: "Sig&#x3e;",
currentText: "Hoy",
monthNames: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
],
monthNamesShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun",
"Jul", "Ago", "Sep", "Oct", "Nov", "Dic"
],
dayNames: ["Domingo", "Lunes", "Martes", "Mi&eacute;rcoles", "Jueves", "Viernes", "S&aacute;bado"],
dayNamesShort: ["Dom", "Lun", "Mar", "Mi&eacute;", "Juv", "Vie", "S&aacute;b"],
dayNamesMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S&aacute;"],
weekHeader: "Sm",
dateFormat: "yy/mm/dd",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ""
}
$.datepicker.setDefaults($.datepicker.regional["es"]);
// month pickers
$("#date-initial").datepicker({
minDate: dates.min,
maxDate: dates.max,
defaultDate: dates.min,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: "M yy",
onClose: function() {
let month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
let year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
minUserDate = new Date(year, month, 1); // initial date
$(this).datepicker("setDate", minUserDate);
$("#date-final").datepicker("option", {
"minDate": minUserDate,
disabled: false
});
// hack to avoid needing to change date twice in second datepicker
setTimeout(() => { $("#date-final").datepicker("show") }, 10);
},
beforeShow: el => {
$("#ui-datepicker-div").toggleClass("hide-calendar", $(el).is("[data-calendar=\"false\"]"));
}
});
$("#date-final").datepicker({
maxDate: dates.max,
defaultDate: dates.max,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
disabled: true,
dateFormat: "M yy",
onClose: function() {
let month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
let year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
maxUserDate = new Date(year, month, 1); // final date
$(this).datepicker("setDate", maxUserDate);
// use .setUTCHours(6,0,0) to adjust DST offset fror some months
let startUserDate = new Date(minUserDate.setUTCHours(6,0,0));
let endUserDate = new Date(maxUserDate.setUTCHours(6,0,0));
// pass new timeinterval to timeDimension player
userDates = L.TimeDimension.Util.explodeTimeRange(startUserDate, endUserDate, "P1M");
userFiles = userDates.map( month => timeFormat(month)); // order table names by date
// change date selectors from main screen to map
$("#date-initial").detach().appendTo("#datePickers");
$("#date-final").detach().appendTo("#datePickers");
$("#datePickers").css("display", "block");
// hide initial screen and show map
$("#startHeader").remove();
$(".img_bg").remove();
$("#mainContainer")[0].style.setProperty("display", "flex", "important")
$("#mexmap").show();
// TODO: on close trigger update map
if (!map) {
resolve({min: startUserDate, max: endUserDate});
} else {
// FIXME: no need to pass data here?
updateMap({map: map, min: startUserDate, max: endUserDate});
}
},
beforeShow: (el, inst) => {
inst.input.datepicker("refresh");
$("#ui-datepicker-div").toggleClass("hide-calendar", $(el).is("[data-calendar=\"false\"]"));
}
});
})
}
const setupMap = (dates) => {
return new Promise( resolve => {
// make body tag to have style height: 100%
$("body").css("height", "100%");
osmLayer = L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "&copy; <a href=\"http://osm.org/copyright\" target=\"_blank\">OpenStreetMap</a> contributors"
});
cartoLightLayer = L.tileLayer("https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "Map tiles by Carto, under CC BY 3.0. Data by OpenStreetMap, under ODbL."
});
cartoDarkLayer = L.tileLayer("https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "Map tiles by Carto, under CC BY 3.0. Data by OpenStreetMap, under ODbL."
});
//let bounds = cuencaBufferMask.getBounds();
let southWest = L.latLng(15.08, -94.42),
northEast = L.latLng(18.82, -91.52),
bounds = L.latLngBounds(southWest, northEast);
map = L.map("mexmap", {
//center: [17.22, -92.28],
minZoom: 7, //8
zoom: 7, //6
attributionControl: false,
timeDimension: true,
timeDimensionOptions: {
times: userDates,
currentTime: dates.min
},
maxBounds: bounds
}).setView([16.96, -92.97], 8);
cartoDarkLayer.addTo(map);
// set sync map on right
let osmLayerOverlay = L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "&copy; <a href=\"http://osm.org/copyright\" target=\"_blank\">OpenStreetMap</a> contributors"
}),
cartoLightLayerOverlay = L.tileLayer("https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "Map tiles by Carto, under CC BY 3.0. Data by OpenStreetMap, under ODbL."
}),
cartoDarkLayerOverlay = L.tileLayer("https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: "Map tiles by Carto, under CC BY 3.0. Data by OpenStreetMap, under ODbL."
});
overlay = L.map("overlaydiv", {
zoomControl: false,
inertia: false,
keyboard: false,
//dragging: false,
scrollWheelZoom: true,
attributionControl: false,
zoomAnimation: true
}).setView([16.96, -92.97], 8);
cartoDarkLayerOverlay.addTo(overlay);
L.control.attribution({position: "bottomright"}).addTo(overlay);
// on base layer on main map, change base layer on overlay map
map.on("baselayerchange", function(event) {
overlay.eachLayer(l => overlay.removeLayer(l));
if (event.name == "Carto Dark") {
cartoDarkLayerOverlay.addTo(overlay);
} else if (event.name == "Carto Light") {
cartoLightLayerOverlay.addTo(overlay);
} else if (event.name == "OpenStreetMap") {
osmLayerOverlay.addTo(overlay);
}
});
map.sync(overlay, {offsetFn: offsetGlobal});
function offsetGlobal (center, zoom, refMap, tgtMap) {
var refC = refMap.getContainer();
var tgtC = tgtMap.getContainer();
var pt = refMap.project(center, zoom)
.subtract([refC.offsetLeft, refC.offsetTop])
.subtract(refMap.getSize().divideBy(2))
.add([tgtC.offsetLeft, tgtC.offsetTop])
.add(tgtMap.getSize().divideBy(2));
return refMap.unproject(pt, zoom);
}
// initialize min and max objects to hold values for each indicator
// and add select options
indicators.forEach( (indicator, index) => {
maxIndicators[indicator] = 0;
minIndicators[indicator] = 1e30;
$("#indicatorSelect").append("<option value=\""+ indicator + "\">" + indicatorsNames[index] + "</option>");
});
console.log(userFiles);
// query db to get min/max values per month and indicator and store them in an object
queryFiles().then( minmax => {
minmax.map( minmaxMonth => {
indicators.forEach( (indicator) => {
minIndicators[indicator] = Math.min(minIndicators[indicator], minmaxMonth["min" + indicator]);
maxIndicators[indicator] = Math.max(maxIndicators[indicator], minmaxMonth["max" + indicator]);
});
});
timeDimensionControl.addTo(map);
resolve({"map": map, "minIndicators": minIndicators, "maxIndicators": maxIndicators});
});
});
}
const flatten = arrays => {
return [].concat(arrays);
}
const queryFiles = () => {
return Promise.all(userFiles.map(getMinMax))
// the result is an array of arrays, so we'll flatten them here
.then(flatten);
}
const getMinMax = table => {
return new Promise( resolve => {
let minmaxQuery = "http://localhost:8090/data/query/" + table + "?columns=" + cols.join(", ");
d3.json(minmaxQuery).then( minmax => {
resolve(minmax[0]);
});
});
}
const updateMap = (mapData) => {
//console.log(mapData);
console.log(userFiles);
// ckear tiles
currentTiles = {};
//retrieve or create tiles for current dates
userFiles.forEach( monthYear => {
if (Object.keys(allTiles).includes(monthYear)) {
currentTiles[monthYear] = allTiles[monthYear]; // recover tile if it has already been created
//currentJSONs[monthYear] = allJSONs[monthYear]; // recover json if it has already been created
return; // if file has already been processed, exit
} else { // if file cannot be found in allTiles, then add 1 to the number of files to process
let newTile = mapboxLayer(monthYear);
glmap._glMap.addLayer(newTile);
if (monthYear == userFiles[0]) {
glmap._glMap.setPaintProperty(monthYear, 'fill-opacity', 0.7)
}
}
});
// update timeDimension times
timeLayer._timeDimension.setAvailableTimes(userDates, "replace");
//timeLayer._timeDimension.setCurrentTime(mapData.min);
// clear minmax indicators objects
maxIndicators = {},
minIndicators = {};
indicators.forEach( (indicator) => {
maxIndicators[indicator] = 0;
minIndicators[indicator] = 1e30;
});
// query db for new minmax values then style tiles
new Promise( resolve => {
queryFiles().then( minmax => {
minmax.map( minmaxMonth => {
indicators.forEach( (indicator) => {
minIndicators[indicator] = Math.min(minIndicators[indicator], minmaxMonth["min" + indicator]);
maxIndicators[indicator] = Math.max(maxIndicators[indicator], minmaxMonth["max" + indicator]);
});
});
resolve({"map": map, "minIndicators": minIndicators, "maxIndicators": maxIndicators});
})
}).then( values => { // once we have new minmax values, style all tiles
let option = $("#indicatorSelect").val(), // option selected from dropdrown
min = values.minIndicators,
max = values.maxIndicators;
styleTiles(option, min, max);
//TODO: update charts
});
}
const populateMap = (mapData) => {
let map = mapData.map,
minIndicators = mapData.minIndicators,
maxIndicators = mapData.maxIndicators;
let cuencaLayer = L.geoJson(null, {
style: {
stroke: true,
weight: 5,
color: "grey",
opacity: .35,
fillOpacity: 0.05
},
interactive: false
});
let cuencaBufferMask = omnivore.topojson("data/buffer_cuenca.topojson", null, cuencaLayer);
cuencaBufferMask.addTo(map);
//TODO: makeBaseMap()
// create mvt layers
userFiles.forEach( f => {
f = mapboxLayer(f);
});
glmap = L.mapboxGL({
accessToken: 'no-token',
style: {
'version': 8,
'sources': {},
'layers': []
}
}).addTo(map);
// after mapboxGL map is ready with styles do this:
glmap._glMap.on("style.load", () => {
userFiles.forEach(monthYear => {
glmap._glMap.addLayer(currentTiles[monthYear]);
});
Object.keys(allTiles).forEach(layer => {
if (layer == userFiles[0]) {
glmap._glMap.setPaintProperty(layer, 'fill-opacity', 0.7)
}
});
// Pass dummy geojson layer to timeDimension in order to register and sync
timeLayer = L.timeDimension.layer.Tile(L.geoJSON(), {
updateTimeDimension: true,
updateTimeDimensionMode: "replace",
waitForReady: true,
duration: "P1M"
});
timeLayer.addTo(map);
// style currentTiles
let option = $("#indicatorSelect").val(); // option selected from dropdrown
styleTiles(option, minIndicators, maxIndicators);
let baseLayers = {
"Carto Dark": cartoDarkLayer,
"Carto Light": cartoLightLayer,
"OpenStreetMap": osmLayer
};
var overlays = {
"<span id=\"cuencaOverlay\">Agua en la cuenca del Grijalva</span>": timeLayer
};
layerControl = L.control.layers(baseLayers, overlays).addTo(map);
});
//TODO: instantiate charts
}
// define MVT layer for given month table and all indicators
const mapboxLayer = (monthYear) => {
let pbfLayer = {
id: monthYear,
source: {
type: 'vector',
tiles: ["http://localhost:8090/data/" + monthYear + "/mvt/{z}/{x}/{y}?geom_column=geom&columns=" + indicators.join()],
maxzoom: 14,
minzoom: 5
},
'source-layer': monthYear,
type: 'fill',
minzoom: 5,
'paint': {
'fill-opacity': 0,
/*'fill-color': [
'interpolate',
['linear'],
['get', 'df'],
1, 'rgba(255, 0, 0, 0.5)', // red
1.3, 'rgba(0, 255, 0, 0.5)', // green
]/*,
'fill-outline-color': [
'interpolate',
['linear'],
['get', 'df'],
1, 'rgba(255, 0, 0, 0.6)', // red
1.3, 'rgba(0, 255, 0, 0.6)', // green
]*/
}
}
currentTiles[monthYear] = pbfLayer;
allTiles[monthYear] = pbfLayer;
return pbfLayer;
}
const setupTimeDimensionControl = () => {
L.Control.TimeDimensionCustom = L.Control.TimeDimension.extend({
_getDisplayDateFormat: date => {
let d = new Date(date);
let year = d.getFullYear().toString();
let month = d.getUTCMonth();
return monthArray[month] + " " + year;
}
});
timeDimensionControl = new L.Control.TimeDimensionCustom({
loopButton: true,
/*minSpeed: 1,
maxSpeed: 5,*/
timeSteps: 1,
playReverseButton: true,
//limitSliders: true,
playerOptions: {
//buffer: 5,
//minBufferReady: 5,
transitionTime: 125,
loop: true
},
timeZones: ["Local"]
});
}
L.TimeDimension.Layer.Tile = L.TimeDimension.Layer.extend({
_setAvailableTimes: function () {
if (this.options.times) {
return L.TimeDimension.Util.parseTimesExpression(this.options.times);
} else if (this.options.timeInterval) {
let tiArray = L.TimeDimension.Util.parseTimeInterval(this.options.timeInterval);
let period = this.options.period || "P1D";
let validTimeRange = this.options.validTimeRange || undefined;
//alert("times");
return L.TimeDimension.Util.explodeTimeRange(tiArray[0], tiArray[1], period, validTimeRange);
} else {
return [];
}
},
onAdd: function (map) {
// Don't call prototype so this_update() does not get called twice
//L.TimeDimension.Layer.prototype.onAdd.call(this, map);
this._map = map;
if (!this._timeDimension && map.timeDimension) {
this._timeDimension = map.timeDimension;
}
this._timeDimension.on("timeloading", this._onNewTimeLoading, this);
this._timeDimension.on("timeload", this._update, this);
this._timeDimension.registerSyncedLayer(this);
map.addLayer(this._baseLayer);
this._update();
},
onRemove: function (map) {
this._timeDimension.unregisterSyncedLayer(this);
this._timeDimension.off("timeloading", this._onNewTimeLoading, this);
this._timeDimension.off("timeload", this._update, this);
//this._baseLayer.getContainer().style.display = "none";
Object.keys(allTiles).forEach(layer => { // hide all tiles
glmap._glMap.setPaintProperty(layer, 'fill-opacity', 0);
});
//this.eachLayer(map.removeLayer, map);
//this._map = null;
},
isReady: function (time) {
// to be implemented for each type of layer
return true;
},
_update: function () {
if (!this._baseLayer || !this._map) {
return;
}
var time = this._timeDimension.getCurrentTime();
// get data for time
let d = new Date(time),
year = d.getFullYear().toString(),
m = d.getUTCMonth(),
month = monthArray[m].toLowerCase(),
monthYear = month + "_" + year;
// Update title
let title = $("#title");
title.html("<h2>Cobertura de agua en la cuenca del r&iacute;o Grijalva en " + month + " de " + year + "</h2>");
// Update graphs only on timeload event
//indicators.forEach( indicator => {
// indicatorVars[indicator].chartData = indicatorVars[indicator].chart.data(); // get chart data
// indicatorVars[indicator].chart.data(indicatorVars[indicator].chartData); // set chart data
//});
//console.time("process");
console.log("data for", monthYear);
//console.log(currentTiles)
Object.keys(allTiles).forEach(layer => {
if (layer !== monthYear) { // hide all other months
glmap._glMap.setPaintProperty(layer, 'fill-opacity', 0);
} else { // except current one
glmap._glMap.setPaintProperty(layer, 'fill-opacity', 0.7);
}
});
//console.timeEnd("process");
}
});
L.timeDimension.layer.Tile = (layer, options) => {
return new L.TimeDimension.Layer.Tile(layer, options);
};
// When selecting indicator from dropdown, style tiles.
$("#indicatorSelect").on("change", function() {
// style currentTiles
let option = this.value; // option selected from dropdrown
styleTiles(option, minIndicators, maxIndicators);
// .then(legend.addTo(map)); // add legend control -> it updates
// FIXME: re-adding control updates its contents... why?
// Highlight plot title according to selected option
//indicators.forEach( indicator => {
// d3.select(indicatorVars[indicator].container).select("svg text.title").classed("active", indicator === option ? true : false);
//});
});
const styleTiles = (option, minIndicators, maxIndicators) => {
// define color scale domain based on min-max values for selected indicator
let domain = [minIndicators[option], maxIndicators[option]];
//console.log(domain)
let scale = chroma.scale("PuBu").padding([0.5, 0]).domain(domain).classes(5);
Object.keys(currentTiles).forEach(layer => {
let color = [
'interpolate',
['linear'],
['get', option],
minIndicators[option], scale(minIndicators[option]).hex(),
maxIndicators[option], scale(maxIndicators[option]).hex()
];
glmap._glMap.setPaintProperty(layer, 'fill-color', color);
});
return Promise.resolve(scale);
}
// TODO: add layer control
// TODO: add charts
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment