action_ui 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +36 -0
- data/lib/cre_pro-rails.rb +8 -0
- data/lib/cre_pro/rails.rb +7 -0
- data/lib/cre_pro/rails/version.rb +5 -0
- data/vendor/assets/javascripts/gp/gp.js +292 -0
- data/vendor/assets/javascripts/ld/bootstrap-checkbox-radio-switch-tags.js +869 -0
- data/vendor/assets/javascripts/ld/bootstrap-datetimepicker.js +2573 -0
- data/vendor/assets/javascripts/ld/bootstrap-notify.js +379 -0
- data/vendor/assets/javascripts/ld/bootstrap-selectpicker.js +1711 -0
- data/vendor/assets/javascripts/ld/bootstrap-table.js +2484 -0
- data/vendor/assets/javascripts/ld/chartist.min.js +8 -0
- data/vendor/assets/javascripts/ld/demo.js +731 -0
- data/vendor/assets/javascripts/ld/fullcalendar.min.js +9 -0
- data/vendor/assets/javascripts/ld/jquery-jvectormap.js +3381 -0
- data/vendor/assets/javascripts/ld/jquery-ui.min.js +24 -0
- data/vendor/assets/javascripts/ld/jquery.bootstrap.wizard.min.js +22 -0
- data/vendor/assets/javascripts/ld/jquery.datatables.js +15498 -0
- data/vendor/assets/javascripts/ld/jquery.min.js +5 -0
- data/vendor/assets/javascripts/ld/jquery.validate.min.js +4 -0
- data/vendor/assets/javascripts/ld/ld.js +422 -0
- data/vendor/assets/javascripts/ld/moment.min.js +7 -0
- data/vendor/assets/javascripts/ld/sweetalert2.js +877 -0
- data/vendor/assets/javascripts/mk/bootstrap-datepicker.js +474 -0
- data/vendor/assets/javascripts/mk/bootstrap.min.js +7 -0
- data/vendor/assets/javascripts/mk/jasny-bootstrap.min.js +6 -0
- data/vendor/assets/javascripts/mk/jquery.dropdown.js +378 -0
- data/vendor/assets/javascripts/mk/jquery.flexisel.js +342 -0
- data/vendor/assets/javascripts/mk/jquery.min.js +3 -0
- data/vendor/assets/javascripts/mk/jquery.tagsinput.js +355 -0
- data/vendor/assets/javascripts/mk/mk.js +191 -0
- data/vendor/assets/javascripts/mk/mk.min.js +1 -0
- data/vendor/assets/javascripts/mk/nouislider.min.js +31 -0
- data/vendor/assets/javascripts/pd/bootstrap-checkbox-radio-switch-tags.js +869 -0
- data/vendor/assets/javascripts/pd/bootstrap-datetimepicker.js +2576 -0
- data/vendor/assets/javascripts/pd/bootstrap-notify.js +379 -0
- data/vendor/assets/javascripts/pd/bootstrap-selectpicker.js +1711 -0
- data/vendor/assets/javascripts/pd/bootstrap-table.js +2484 -0
- data/vendor/assets/javascripts/pd/bootstrap.min.js +12 -0
- data/vendor/assets/javascripts/pd/chartist.min.js +9 -0
- data/vendor/assets/javascripts/pd/demo.js +911 -0
- data/vendor/assets/javascripts/pd/fullcalendar.min.js +9 -0
- data/vendor/assets/javascripts/pd/jquery-1.10.2.js +9789 -0
- data/vendor/assets/javascripts/pd/jquery-1.10.2.min.js +3 -0
- data/vendor/assets/javascripts/pd/jquery-jvectormap.js +3381 -0
- data/vendor/assets/javascripts/pd/jquery-ui.min.js +24 -0
- data/vendor/assets/javascripts/pd/jquery.bootstrap.wizard.min.js +22 -0
- data/vendor/assets/javascripts/pd/jquery.datatables.js +15498 -0
- data/vendor/assets/javascripts/pd/jquery.easypiechart.min.js +9 -0
- data/vendor/assets/javascripts/pd/jquery.min.js +5 -0
- data/vendor/assets/javascripts/pd/jquery.tagsinput.js +355 -0
- data/vendor/assets/javascripts/pd/jquery.validate.min.js +4 -0
- data/vendor/assets/javascripts/pd/moment.min.js +7 -0
- data/vendor/assets/javascripts/pd/pd.js +335 -0
- data/vendor/assets/javascripts/pd/sweetalert2.js +877 -0
- data/vendor/assets/javascripts/pk/bootstrap-datepicker.js +492 -0
- data/vendor/assets/javascripts/pk/bootstrap-select.js +1711 -0
- data/vendor/assets/javascripts/pk/chartist.min.js +8 -0
- data/vendor/assets/javascripts/pk/ct-pk-bootstrapswitch.js +249 -0
- data/vendor/assets/javascripts/pk/ct-pk-checkbox.js +109 -0
- data/vendor/assets/javascripts/pk/ct-pk-radio.js +140 -0
- data/vendor/assets/javascripts/pk/ct-pk.js +305 -0
- data/vendor/assets/javascripts/pk/demo.js +289 -0
- data/vendor/assets/javascripts/pk/jasny-bootstrap.min.js +6 -0
- data/vendor/assets/javascripts/pk/jquery-1.10.2.js +9789 -0
- data/vendor/assets/javascripts/pk/jquery-ui-1.10.4.custom.min.js +6 -0
- data/vendor/assets/javascripts/pk/jquery.tagsinput.js +355 -0
- data/vendor/assets/javascripts/pk/photo_swipe/init-gallery.js +205 -0
- data/vendor/assets/javascripts/pk/photo_swipe/photoswipe-ui-default.min.js +4 -0
- data/vendor/assets/javascripts/pk/photo_swipe/photoswipe.min.js +4 -0
- data/vendor/assets/javascripts/pk/presentation-page/atv-img-min.js +233 -0
- data/vendor/assets/javascripts/pk/presentation-page/jquery.sharrre.js +585 -0
- data/vendor/assets/javascripts/sd/bootstrap-datepicker.js +492 -0
- data/vendor/assets/javascripts/sd/bootstrap-select.js +1711 -0
- data/vendor/assets/javascripts/sd/chartist.min.js +8 -0
- data/vendor/assets/javascripts/sd/demo.js +227 -0
- data/vendor/assets/javascripts/sd/jquery-ui.custom.min.js +7 -0
- data/vendor/assets/javascripts/sd/jquery.flexisel.js +342 -0
- data/vendor/assets/javascripts/sd/jquery.js +9789 -0
- data/vendor/assets/javascripts/sd/jquery.tagsinput.js +355 -0
- data/vendor/assets/javascripts/sd/retina.min.js +10 -0
- data/vendor/assets/javascripts/sd/sd-bootstrapswitch.js +249 -0
- data/vendor/assets/javascripts/sd/sd-checkbox.js +109 -0
- data/vendor/assets/javascripts/sd/sd-morphing.js +89 -0
- data/vendor/assets/javascripts/sd/sd-radio.js +140 -0
- data/vendor/assets/javascripts/sd/sd.js +398 -0
- data/vendor/assets/stylesheets/gp/components/_buttons.scss +121 -0
- data/vendor/assets/stylesheets/gp/components/_cards.scss +271 -0
- data/vendor/assets/stylesheets/gp/components/_carousel.scss +15 -0
- data/vendor/assets/stylesheets/gp/components/_clients.scss +172 -0
- data/vendor/assets/stylesheets/gp/components/_closure.scss +19 -0
- data/vendor/assets/stylesheets/gp/components/_contact.scss +93 -0
- data/vendor/assets/stylesheets/gp/components/_dropdown.scss +173 -0
- data/vendor/assets/stylesheets/gp/components/_example-pages.scss +524 -0
- data/vendor/assets/stylesheets/gp/components/_footers.scss +191 -0
- data/vendor/assets/stylesheets/gp/components/_headers.scss +72 -0
- data/vendor/assets/stylesheets/gp/components/_inputs.scss +145 -0
- data/vendor/assets/stylesheets/gp/components/_labels.scss +15 -0
- data/vendor/assets/stylesheets/gp/components/_misc.scss +332 -0
- data/vendor/assets/stylesheets/gp/components/_mixins.scss +11 -0
- data/vendor/assets/stylesheets/gp/components/_navbars.scss +252 -0
- data/vendor/assets/stylesheets/gp/components/_numbers.scss +61 -0
- data/vendor/assets/stylesheets/gp/components/_projects.scss +279 -0
- data/vendor/assets/stylesheets/gp/components/_responsive.scss +950 -0
- data/vendor/assets/stylesheets/gp/components/_sections.scss +328 -0
- data/vendor/assets/stylesheets/gp/components/_social-buttons.scss +30 -0
- data/vendor/assets/stylesheets/gp/components/_team.scss +182 -0
- data/vendor/assets/stylesheets/gp/components/_theme.scss +22 -0
- data/vendor/assets/stylesheets/gp/components/_typography.scss +252 -0
- data/vendor/assets/stylesheets/gp/components/_variables.scss +267 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_buttons.scss +61 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_cards.scss +8 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_inputs.scss +17 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_navbars.scss +11 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_transparency.scss +20 -0
- data/vendor/assets/stylesheets/gp/components/mixins/_vendor-prefixes.scss +284 -0
- data/vendor/assets/stylesheets/gp/gp.scss +30 -0
- data/vendor/assets/stylesheets/ld/ld.scss +53 -0
- data/vendor/assets/stylesheets/ld/ld/_alerts.scss +82 -0
- data/vendor/assets/stylesheets/ld/ld/_buttons.scss +123 -0
- data/vendor/assets/stylesheets/ld/ld/_cards.scss +315 -0
- data/vendor/assets/stylesheets/ld/ld/_carousel.scss +15 -0
- data/vendor/assets/stylesheets/ld/ld/_checkbox-radio-switch.scss +253 -0
- data/vendor/assets/stylesheets/ld/ld/_collapse.scss +49 -0
- data/vendor/assets/stylesheets/ld/ld/_dropdown.scss +176 -0
- data/vendor/assets/stylesheets/ld/ld/_footers.scss +155 -0
- data/vendor/assets/stylesheets/ld/ld/_forms.scss +41 -0
- data/vendor/assets/stylesheets/ld/ld/_inputs.scss +170 -0
- data/vendor/assets/stylesheets/ld/ld/_labels.scss +54 -0
- data/vendor/assets/stylesheets/ld/ld/_media.scss +80 -0
- data/vendor/assets/stylesheets/ld/ld/_misc.scss +87 -0
- data/vendor/assets/stylesheets/ld/ld/_mixins.scss +22 -0
- data/vendor/assets/stylesheets/ld/ld/_modal.scss +79 -0
- data/vendor/assets/stylesheets/ld/ld/_navbars.scss +362 -0
- data/vendor/assets/stylesheets/ld/ld/_pages.scss +215 -0
- data/vendor/assets/stylesheets/ld/ld/_progress-bars.scss +26 -0
- data/vendor/assets/stylesheets/ld/ld/_responsive.scss +647 -0
- data/vendor/assets/stylesheets/ld/ld/_sidebar-and-main-panel.scss +576 -0
- data/vendor/assets/stylesheets/ld/ld/_sliders.scss +219 -0
- data/vendor/assets/stylesheets/ld/ld/_social-buttons.scss +77 -0
- data/vendor/assets/stylesheets/ld/ld/_tables.scss +120 -0
- data/vendor/assets/stylesheets/ld/ld/_tabs-navs-pagination.scss +302 -0
- data/vendor/assets/stylesheets/ld/ld/_tags.scss +123 -0
- data/vendor/assets/stylesheets/ld/ld/_tooltips-and-popovers.scss +156 -0
- data/vendor/assets/stylesheets/ld/ld/_typography.scss +93 -0
- data/vendor/assets/stylesheets/ld/ld/_variables.scss +319 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_buttons.scss +74 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_cards.scss +8 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_chartist.scss +85 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_icons.scss +13 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_inputs.scss +17 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_labels.scss +21 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_morphing-buttons.scss +34 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_navbars.scss +11 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_social-buttons.scss +43 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_table-row.scss +22 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_tabs.scss +4 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_transparency.scss +20 -0
- data/vendor/assets/stylesheets/ld/ld/mixins/_vendor-prefixes.scss +197 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_animate.scss +188 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_bootstrap-select.scss +308 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_bootstrap-table.scss +328 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_chartist.scss +247 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_datatables.net.scss +513 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_datetime-picker.scss +440 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_fullcalendar.scss +1114 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_jquery.jvectormap.scss +135 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_perfect-scrollbar.scss +111 -0
- data/vendor/assets/stylesheets/ld/ld/plugins/_sweetalert2.scss +531 -0
- data/vendor/assets/stylesheets/mk/mk.scss +50 -0
- data/vendor/assets/stylesheets/mk/mk/_alerts.scss +41 -0
- data/vendor/assets/stylesheets/mk/mk/_buttons.scss +283 -0
- data/vendor/assets/stylesheets/mk/mk/_cards.scss +576 -0
- data/vendor/assets/stylesheets/mk/mk/_carousel.scss +86 -0
- data/vendor/assets/stylesheets/mk/mk/_checkboxes.scss +195 -0
- data/vendor/assets/stylesheets/mk/mk/_colors.scss +326 -0
- data/vendor/assets/stylesheets/mk/mk/_dialogs.scss +99 -0
- data/vendor/assets/stylesheets/mk/mk/_dividers.scss +73 -0
- data/vendor/assets/stylesheets/mk/mk/_dropdown.scss +86 -0
- data/vendor/assets/stylesheets/mk/mk/_example-pages.scss +775 -0
- data/vendor/assets/stylesheets/mk/mk/_fileupload.scss +115 -0
- data/vendor/assets/stylesheets/mk/mk/_flexisel.scss +54 -0
- data/vendor/assets/stylesheets/mk/mk/_form.scss +58 -0
- data/vendor/assets/stylesheets/mk/mk/_images.scss +6 -0
- data/vendor/assets/stylesheets/mk/mk/_import-bs-less.scss +4 -0
- data/vendor/assets/stylesheets/mk/mk/_import-bs-sass.scss +2 -0
- data/vendor/assets/stylesheets/mk/mk/_info-areas.scss +57 -0
- data/vendor/assets/stylesheets/mk/mk/_inputs-size.scss +223 -0
- data/vendor/assets/stylesheets/mk/mk/_inputs.scss +394 -0
- data/vendor/assets/stylesheets/mk/mk/_labels.scss +10 -0
- data/vendor/assets/stylesheets/mk/mk/_lists.scss +104 -0
- data/vendor/assets/stylesheets/mk/mk/_media.scss +47 -0
- data/vendor/assets/stylesheets/mk/mk/_misc.scss +94 -0
- data/vendor/assets/stylesheets/mk/mk/_mixins.scss +413 -0
- data/vendor/assets/stylesheets/mk/mk/_navbar.scss +311 -0
- data/vendor/assets/stylesheets/mk/mk/_pagination.scss +91 -0
- data/vendor/assets/stylesheets/mk/mk/_panels.scss +47 -0
- data/vendor/assets/stylesheets/mk/mk/_pills.scss +128 -0
- data/vendor/assets/stylesheets/mk/mk/_popups.scss +77 -0
- data/vendor/assets/stylesheets/mk/mk/_progress.scss +33 -0
- data/vendor/assets/stylesheets/mk/mk/_radios.scss +114 -0
- data/vendor/assets/stylesheets/mk/mk/_responsive.scss +115 -0
- data/vendor/assets/stylesheets/mk/mk/_ripples.scss +40 -0
- data/vendor/assets/stylesheets/mk/mk/_sections.scss +131 -0
- data/vendor/assets/stylesheets/mk/mk/_select.scss +108 -0
- data/vendor/assets/stylesheets/mk/mk/_shadows.scss +138 -0
- data/vendor/assets/stylesheets/mk/mk/_tables.scss +104 -0
- data/vendor/assets/stylesheets/mk/mk/_tabs.scss +53 -0
- data/vendor/assets/stylesheets/mk/mk/_tags.scss +97 -0
- data/vendor/assets/stylesheets/mk/mk/_togglebutton.scss +87 -0
- data/vendor/assets/stylesheets/mk/mk/_typography.scss +75 -0
- data/vendor/assets/stylesheets/mk/mk/_variables.scss +224 -0
- data/vendor/assets/stylesheets/mk/mk/_variables_bootstrap.scss +883 -0
- data/vendor/assets/stylesheets/mk/mk/_welljumbo.scss +28 -0
- data/vendor/assets/stylesheets/mk/mk/plugins/_plugin-datepicker.scss +204 -0
- data/vendor/assets/stylesheets/mk/mk/plugins/_plugin-nouislider.scss +161 -0
- data/vendor/assets/stylesheets/mk/mk/plugins/_plugin-selectize.scss +93 -0
- data/vendor/assets/stylesheets/mk/mk/plugins/_plugin-snackbarjs.scss +34 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_blogs.scss +17 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_contactus.scss +51 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_features.scss +92 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_footers.scss +163 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_headers.scss +125 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_pricing.scss +40 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_projects.scss +75 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_social-subscribe-lines.scss +71 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_team.scss +53 -0
- data/vendor/assets/stylesheets/mk/mk/sections/_testimonials.scss +5 -0
- data/vendor/assets/stylesheets/pd/pd.scss +51 -0
- data/vendor/assets/stylesheets/pd/pd/_alerts.scss +60 -0
- data/vendor/assets/stylesheets/pd/pd/_animated-buttons.scss +61 -0
- data/vendor/assets/stylesheets/pd/pd/_buttons.scss +173 -0
- data/vendor/assets/stylesheets/pd/pd/_cards.scss +546 -0
- data/vendor/assets/stylesheets/pd/pd/_carousel.scss +15 -0
- data/vendor/assets/stylesheets/pd/pd/_chat-message.scss +206 -0
- data/vendor/assets/stylesheets/pd/pd/_checkbox-radio.scss +126 -0
- data/vendor/assets/stylesheets/pd/pd/_circlechart.scss +18 -0
- data/vendor/assets/stylesheets/pd/pd/_collapse.scss +40 -0
- data/vendor/assets/stylesheets/pd/pd/_dropdown.scss +413 -0
- data/vendor/assets/stylesheets/pd/pd/_footers.scss +87 -0
- data/vendor/assets/stylesheets/pd/pd/_forms.scss +43 -0
- data/vendor/assets/stylesheets/pd/pd/_inputs.scss +190 -0
- data/vendor/assets/stylesheets/pd/pd/_labels.scss +29 -0
- data/vendor/assets/stylesheets/pd/pd/_media.scss +80 -0
- data/vendor/assets/stylesheets/pd/pd/_misc.scss +104 -0
- data/vendor/assets/stylesheets/pd/pd/_mixins.scss +17 -0
- data/vendor/assets/stylesheets/pd/pd/_modal.scss +79 -0
- data/vendor/assets/stylesheets/pd/pd/_navbars.scss +289 -0
- data/vendor/assets/stylesheets/pd/pd/_pages.scss +196 -0
- data/vendor/assets/stylesheets/pd/pd/_progress-bars.scss +27 -0
- data/vendor/assets/stylesheets/pd/pd/_responsive.scss +666 -0
- data/vendor/assets/stylesheets/pd/pd/_sidebar-and-main-panel.scss +514 -0
- data/vendor/assets/stylesheets/pd/pd/_sliders.scss +222 -0
- data/vendor/assets/stylesheets/pd/pd/_social.scss +130 -0
- data/vendor/assets/stylesheets/pd/pd/_switch.scss +145 -0
- data/vendor/assets/stylesheets/pd/pd/_tables.scss +194 -0
- data/vendor/assets/stylesheets/pd/pd/_tabs-navs-pagination.scss +341 -0
- data/vendor/assets/stylesheets/pd/pd/_tags.scss +104 -0
- data/vendor/assets/stylesheets/pd/pd/_timeline.scss +178 -0
- data/vendor/assets/stylesheets/pd/pd/_tooltips-and-popovers.scss +156 -0
- data/vendor/assets/stylesheets/pd/pd/_typography.scss +117 -0
- data/vendor/assets/stylesheets/pd/pd/_variables.scss +367 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_alerts.scss +13 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_buttons.scss +89 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_cards.scss +7 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_chartist.scss +104 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_icons.scss +13 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_inputs.scss +17 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_labels.scss +10 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_navbars.scss +11 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_sidebar.scss +54 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_social.scss +68 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_table-row.scss +22 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_tabs.scss +4 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_transparency.scss +20 -0
- data/vendor/assets/stylesheets/pd/pd/mixins/_vendor-prefixes.scss +254 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_animate.scss +189 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_bootstrap-select.scss +313 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_bootstrap-table.scss +375 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_chartist.scss +246 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_datatables.net.scss +504 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_datetime-picker.scss +418 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_fullcalendar.scss +1124 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_jquery.jvectormap.scss +135 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_perfect-scrollbar.scss +112 -0
- data/vendor/assets/stylesheets/pd/pd/plugins/_sweetalert2.scss +531 -0
- data/vendor/assets/stylesheets/pk/ct-pk.scss +64 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_alerts.scss +69 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_animated-buttons.scss +63 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_bootstrap-select.scss +320 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_buttons.scss +161 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_cards.scss +570 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_carousel.scss +59 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_chartist.scss +354 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_checkbox-radio.scss +129 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_collapse.scss +40 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_datepicker.scss +198 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_dropdown.scss +291 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_fileupload.scss +112 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_footers.scss +193 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_headers.scss +85 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_images.scss +28 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_info-areas.scss +62 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_inputs.scss +171 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_labels.scss +29 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_media.scss +82 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_misc.scss +124 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_mixins.scss +16 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_modal.scss +91 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_navbars.scss +285 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_preloaders.scss +282 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_progress-bars.scss +27 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_responsive.scss +411 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_sections.scss +45 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_sidebar.scss +206 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_sliders.scss +222 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_social.scss +130 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_switch.scss +145 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_tables.scss +135 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_tabs-navs-pagination.scss +311 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_tags.scss +108 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_tooltips-and-popovers.scss +188 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_typography.scss +106 -0
- data/vendor/assets/stylesheets/pk/ct-pk/_variables.scss +301 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_alerts.scss +11 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_buttons.scss +104 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_inputs.scss +17 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_labels.scss +10 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_navbars.scss +11 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_popovers.scss +21 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_social.scss +68 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_tabs.scss +4 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_transparency.scss +17 -0
- data/vendor/assets/stylesheets/pk/ct-pk/mixins/_vendor-prefixes.scss +233 -0
- data/vendor/assets/stylesheets/pk/ct-pk/plugins/photo-swipe/_default-skin.scss +592 -0
- data/vendor/assets/stylesheets/pk/ct-pk/plugins/photo-swipe/_gallery.scss +27 -0
- data/vendor/assets/stylesheets/pk/ct-pk/plugins/photo-swipe/_main-settings.scss +11 -0
- data/vendor/assets/stylesheets/pk/ct-pk/plugins/photo-swipe/_main.scss +213 -0
- data/vendor/assets/stylesheets/pk/examples.scss +1083 -0
- data/vendor/assets/stylesheets/sd/examples.scss +403 -0
- data/vendor/assets/stylesheets/sd/sd.scss +41 -0
- data/vendor/assets/stylesheets/sd/sd/_alerts.scss +37 -0
- data/vendor/assets/stylesheets/sd/sd/_bootstrap-select.scss +307 -0
- data/vendor/assets/stylesheets/sd/sd/_buttons.scss +108 -0
- data/vendor/assets/stylesheets/sd/sd/_cards.scss +462 -0
- data/vendor/assets/stylesheets/sd/sd/_carousel.scss +15 -0
- data/vendor/assets/stylesheets/sd/sd/_chartist.scss +335 -0
- data/vendor/assets/stylesheets/sd/sd/_checkbox-radio-switch.scss +246 -0
- data/vendor/assets/stylesheets/sd/sd/_collapse.scss +33 -0
- data/vendor/assets/stylesheets/sd/sd/_datepicker.scss +199 -0
- data/vendor/assets/stylesheets/sd/sd/_dropdown.scss +98 -0
- data/vendor/assets/stylesheets/sd/sd/_flexisel.scss +53 -0
- data/vendor/assets/stylesheets/sd/sd/_footers.scss +216 -0
- data/vendor/assets/stylesheets/sd/sd/_icons.scss +127 -0
- data/vendor/assets/stylesheets/sd/sd/_inputs.scss +141 -0
- data/vendor/assets/stylesheets/sd/sd/_labels.scss +54 -0
- data/vendor/assets/stylesheets/sd/sd/_media.scss +80 -0
- data/vendor/assets/stylesheets/sd/sd/_misc.scss +115 -0
- data/vendor/assets/stylesheets/sd/sd/_mixins.scss +20 -0
- data/vendor/assets/stylesheets/sd/sd/_modal.scss +79 -0
- data/vendor/assets/stylesheets/sd/sd/_morphing-buttons.scss +161 -0
- data/vendor/assets/stylesheets/sd/sd/_navbars.scss +293 -0
- data/vendor/assets/stylesheets/sd/sd/_progress-bars.scss +9 -0
- data/vendor/assets/stylesheets/sd/sd/_responsive.scss +302 -0
- data/vendor/assets/stylesheets/sd/sd/_sections.scss +12 -0
- data/vendor/assets/stylesheets/sd/sd/_sidebar-menu.scss +232 -0
- data/vendor/assets/stylesheets/sd/sd/_sliders.scss +218 -0
- data/vendor/assets/stylesheets/sd/sd/_social-buttons.scss +76 -0
- data/vendor/assets/stylesheets/sd/sd/_tables.scss +110 -0
- data/vendor/assets/stylesheets/sd/sd/_tabs-navs-pagination.scss +217 -0
- data/vendor/assets/stylesheets/sd/sd/_tags.scss +220 -0
- data/vendor/assets/stylesheets/sd/sd/_tooltips-and-popovers.scss +156 -0
- data/vendor/assets/stylesheets/sd/sd/_typography.scss +73 -0
- data/vendor/assets/stylesheets/sd/sd/_variables.scss +249 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_buttons.scss +76 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_cards.scss +8 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_icons.scss +13 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_inputs.scss +17 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_labels.scss +21 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_morphing-buttons.scss +34 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_navbars.scss +11 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_social-buttons.scss +43 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_tabs.scss +4 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_transparency.scss +20 -0
- data/vendor/assets/stylesheets/sd/sd/mixins/_vendor-prefixes.scss +177 -0
- metadata +484 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
/*!
|
2
|
+
* FullCalendar v2.4.0
|
3
|
+
* Docs & License: http://fullcalendar.io/
|
4
|
+
* (c) 2015 Adam Shaw
|
5
|
+
*/
|
6
|
+
!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){function c(a){return Q(a,Oa)}function d(b){var c,d={views:b.views||{}};return a.each(b,function(b,e){"views"!=b&&(a.isPlainObject(e)&&!/(time|duration|interval)$/i.test(b)&&-1==a.inArray(b,Oa)?(c=null,a.each(e,function(a,e){/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(a)?(d.views[a]||(d.views[a]={}),d.views[a][b]=e):(c||(c={}),c[a]=e)}),c&&(d[b]=c)):d[b]=e)}),d}function e(a,b){b.left&&a.css({"border-left-width":1,"margin-left":b.left-1}),b.right&&a.css({"border-right-width":1,"margin-right":b.right-1})}function f(a){a.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function g(){a("body").addClass("fc-not-allowed")}function h(){a("body").removeClass("fc-not-allowed")}function i(b,c,d){var e=Math.floor(c/b.length),f=Math.floor(c-e*(b.length-1)),g=[],h=[],i=[],k=0;j(b),b.each(function(c,d){var j=c===b.length-1?f:e,l=a(d).outerHeight(!0);j>l?(g.push(d),h.push(l),i.push(a(d).height())):k+=l}),d&&(c-=k,e=Math.floor(c/g.length),f=Math.floor(c-e*(g.length-1))),a(g).each(function(b,c){var d=b===g.length-1?f:e,j=h[b],k=i[b],l=d-(j-k);d>j&&a(c).height(l)})}function j(a){a.height("")}function k(b){var c=0;return b.find("> *").each(function(b,d){var e=a(d).outerWidth();e>c&&(c=e)}),c++,b.width(c),c}function l(a,b){return a.height(b).addClass("fc-scroller"),a[0].scrollHeight-1>a[0].clientHeight?!0:(m(a),!1)}function m(a){a.height("").removeClass("fc-scroller")}function n(b){var c=b.css("position"),d=b.parents().filter(function(){var b=a(this);return/(auto|scroll)/.test(b.css("overflow")+b.css("overflow-y")+b.css("overflow-x"))}).eq(0);return"fixed"!==c&&d.length?d:a(b[0].ownerDocument||document)}function o(a){var b=a.offset();return{left:b.left,right:b.left+a.outerWidth(),top:b.top,bottom:b.top+a.outerHeight()}}function p(a){var b=a.offset(),c=r(a),d=b.left+u(a,"border-left-width")+c.left,e=b.top+u(a,"border-top-width")+c.top;return{left:d,right:d+a[0].clientWidth,top:e,bottom:e+a[0].clientHeight}}function q(a){var b=a.offset(),c=b.left+u(a,"border-left-width")+u(a,"padding-left"),d=b.top+u(a,"border-top-width")+u(a,"padding-top");return{left:c,right:c+a.width(),top:d,bottom:d+a.height()}}function r(a){var b=a.innerWidth()-a[0].clientWidth,c={left:0,right:0,top:0,bottom:a.innerHeight()-a[0].clientHeight};return s()&&"rtl"==a.css("direction")?c.left=b:c.right=b,c}function s(){return null===Pa&&(Pa=t()),Pa}function t(){var b=a("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),c=b.children(),d=c.offset().left>b.offset().left;return b.remove(),d}function u(a,b){return parseFloat(a.css(b))||0}function v(a){return 1==a.which&&!a.ctrlKey}function w(a,b){var c={left:Math.max(a.left,b.left),right:Math.min(a.right,b.right),top:Math.max(a.top,b.top),bottom:Math.min(a.bottom,b.bottom)};return c.left<c.right&&c.top<c.bottom?c:!1}function x(a,b){return{left:Math.min(Math.max(a.left,b.left),b.right),top:Math.min(Math.max(a.top,b.top),b.bottom)}}function y(a){return{left:(a.left+a.right)/2,top:(a.top+a.bottom)/2}}function z(a,b){return{left:a.left-b.left,top:a.top-b.top}}function A(b){var c,d,e=[],f=[];for("string"==typeof b?f=b.split(/\s*,\s*/):"function"==typeof b?f=[b]:a.isArray(b)&&(f=b),c=0;c<f.length;c++)d=f[c],"string"==typeof d?e.push("-"==d.charAt(0)?{field:d.substring(1),order:-1}:{field:d,order:1}):"function"==typeof d&&e.push({func:d});return e}function B(a,b,c){var d,e;for(d=0;d<c.length;d++)if(e=C(a,b,c[d]))return e;return 0}function C(a,b,c){return c.func?c.func(a,b):D(a[c.field],b[c.field])*(c.order||1)}function D(b,c){return b||c?null==c?-1:null==b?1:"string"===a.type(b)||"string"===a.type(c)?String(b).localeCompare(String(c)):b-c:0}function E(a,b){var c,d,e,f,g=a.start,h=a.end,i=b.start,j=b.end;return h>i&&j>g?(g>=i?(c=g.clone(),e=!0):(c=i.clone(),e=!1),j>=h?(d=h.clone(),f=!0):(d=j.clone(),f=!1),{start:c,end:d,isStart:e,isEnd:f}):void 0}function F(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days"),ms:a.time()-c.time()})}function G(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days")})}function H(a,c,d){return b.duration(Math.round(a.diff(c,d,!0)),d)}function I(a,b){var c,d,e;for(c=0;c<Ra.length&&(d=Ra[c],e=J(d,a,b),!(e>=1&&ba(e)));c++);return d}function J(a,c,d){return null!=d?d.diff(c,a,!0):b.isDuration(c)?c.as(a):c.end.diff(c.start,a,!0)}function K(a,b,c){var d;return N(c)?(b-a)/c:(d=c.asMonths(),Math.abs(d)>=1&&ba(d)?b.diff(a,"months",!0)/d:b.diff(a,"days",!0)/c.asDays())}function L(a,b){var c,d;return N(a)||N(b)?a/b:(c=a.asMonths(),d=b.asMonths(),Math.abs(c)>=1&&ba(c)&&Math.abs(d)>=1&&ba(d)?c/d:a.asDays()/b.asDays())}function M(a,c){var d;return N(a)?b.duration(a*c):(d=a.asMonths(),Math.abs(d)>=1&&ba(d)?b.duration({months:d*c}):b.duration({days:a.asDays()*c}))}function N(a){return Boolean(a.hours()||a.minutes()||a.seconds()||a.milliseconds())}function O(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function P(a){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(a)}function Q(a,b){var c,d,e,f,g,h,i={};if(b)for(c=0;c<b.length;c++){for(d=b[c],e=[],f=a.length-1;f>=0;f--)if(g=a[f][d],"object"==typeof g)e.unshift(g);else if(void 0!==g){i[d]=g;break}e.length&&(i[d]=Q(e))}for(c=a.length-1;c>=0;c--){h=a[c];for(d in h)d in i||(i[d]=h[d])}return i}function R(a){var b=function(){};return b.prototype=a,new b}function S(a,b){for(var c in a)U(a,c)&&(b[c]=a[c])}function T(a,b){var c,d,e=["constructor","toString","valueOf"];for(c=0;c<e.length;c++)d=e[c],a[d]!==Object.prototype[d]&&(b[d]=a[d])}function U(a,b){return Va.call(a,b)}function V(b){return/undefined|null|boolean|number|string/.test(a.type(b))}function W(b,c,d){if(a.isFunction(b)&&(b=[b]),b){var e,f;for(e=0;e<b.length;e++)f=b[e].apply(c,d)||f;return f}}function X(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]}function Y(a){return(a+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function Z(a){return a.replace(/&.*?;/g,"")}function $(b){var c=[];return a.each(b,function(a,b){null!=b&&c.push(a+":"+b)}),c.join(";")}function _(a){return a.charAt(0).toUpperCase()+a.slice(1)}function aa(a,b){return a-b}function ba(a){return a%1===0}function ca(a,b){var c=a[b];return function(){return c.apply(a,arguments)}}function da(a,b){var c,d,e,f,g=function(){var h=+new Date-f;b>h&&h>0?c=setTimeout(g,b-h):(c=null,a.apply(e,d),c||(e=d=null))};return function(){e=this,d=arguments,f=+new Date,c||(c=setTimeout(g,b))}}function ea(c,d,e){var f,g,h,i,j=c[0],k=1==c.length&&"string"==typeof j;return b.isMoment(j)?(i=b.apply(null,c),ga(j,i)):O(j)||void 0===j?i=b.apply(null,c):(f=!1,g=!1,k?Wa.test(j)?(j+="-01",c=[j],f=!0,g=!0):(h=Xa.exec(j))&&(f=!h[5],g=!0):a.isArray(j)&&(g=!0),i=d||f?b.utc.apply(b,c):b.apply(null,c),f?(i._ambigTime=!0,i._ambigZone=!0):e&&(g?i._ambigZone=!0:k&&(i.utcOffset?i.utcOffset(j):i.zone(j)))),i._fullCalendar=!0,i}function fa(a,c){var d,e,f=!1,g=!1,h=a.length,i=[];for(d=0;h>d;d++)e=a[d],b.isMoment(e)||(e=Ma.moment.parseZone(e)),f=f||e._ambigTime,g=g||e._ambigZone,i.push(e);for(d=0;h>d;d++)e=i[d],c||!f||e._ambigTime?g&&!e._ambigZone&&(i[d]=e.clone().stripZone()):i[d]=e.clone().stripTime();return i}function ga(a,b){a._ambigTime?b._ambigTime=!0:b._ambigTime&&(b._ambigTime=!1),a._ambigZone?b._ambigZone=!0:b._ambigZone&&(b._ambigZone=!1)}function ha(a,b){a.year(b[0]||0).month(b[1]||0).date(b[2]||0).hours(b[3]||0).minutes(b[4]||0).seconds(b[5]||0).milliseconds(b[6]||0)}function ia(a,b){return Za.format.call(a,b)}function ja(a,b){return ka(a,pa(b))}function ka(a,b){var c,d="";for(c=0;c<b.length;c++)d+=la(a,b[c]);return d}function la(a,b){var c,d;return"string"==typeof b?b:(c=b.token)?$a[c]?$a[c](a):ia(a,c):b.maybe&&(d=ka(a,b.maybe),d.match(/[1-9]/))?d:""}function ma(a,b,c,d,e){var f;return a=Ma.moment.parseZone(a),b=Ma.moment.parseZone(b),f=(a.localeData||a.lang).call(a),c=f.longDateFormat(c)||c,d=d||" - ",na(a,b,pa(c),d,e)}function na(a,b,c,d,e){var f,g,h,i,j="",k="",l="",m="",n="";for(g=0;g<c.length&&(f=oa(a,b,c[g]),f!==!1);g++)j+=f;for(h=c.length-1;h>g&&(f=oa(a,b,c[h]),f!==!1);h--)k=f+k;for(i=g;h>=i;i++)l+=la(a,c[i]),m+=la(b,c[i]);return(l||m)&&(n=e?m+d+l:l+d+m),j+n+k}function oa(a,b,c){var d,e;return"string"==typeof c?c:(d=c.token)&&(e=_a[d.charAt(0)],e&&a.isSame(b,e))?ia(a,d):!1}function pa(a){return a in ab?ab[a]:ab[a]=qa(a)}function qa(a){for(var b,c=[],d=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;b=d.exec(a);)b[1]?c.push(b[1]):b[2]?c.push({maybe:qa(b[2])}):b[3]?c.push({token:b[3]}):b[5]&&c.push(b[5]);return c}function ra(){}function sa(a,b){return a||b?a&&b?a.grid===b.grid&&a.row===b.row&&a.col===b.col:!1:!0}function ta(a){var b=va(a);return"background"===b||"inverse-background"===b}function ua(a){return"inverse-background"===va(a)}function va(a){return X((a.source||{}).rendering,a.rendering)}function wa(a){var b,c,d={};for(b=0;b<a.length;b++)c=a[b],(d[c._id]||(d[c._id]=[])).push(c);return d}function xa(a,b){return a.eventStartMS-b.eventStartMS}function ya(c){var d,e,f,g,h=Ma.dataAttrPrefix;return h&&(h+="-"),d=c.data(h+"event")||null,d&&(d="object"==typeof d?a.extend({},d):{},e=d.start,null==e&&(e=d.time),f=d.duration,g=d.stick,delete d.start,delete d.time,delete d.duration,delete d.stick),null==e&&(e=c.data(h+"start")),null==e&&(e=c.data(h+"time")),null==f&&(f=c.data(h+"duration")),null==g&&(g=c.data(h+"stick")),e=null!=e?b.duration(e):null,f=null!=f?b.duration(f):null,g=Boolean(g),{eventProps:d,startTime:e,duration:f,stick:g}}function za(a,b){var c,d;for(c=0;c<b.length;c++)if(d=b[c],d.leftCol<=a.rightCol&&d.rightCol>=a.leftCol)return!0;return!1}function Aa(a,b){return a.leftCol-b.leftCol}function Ba(a){var b,c,d,e=[];for(b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Ea(c,e[d]).length;d++);c.level=d,(e[d]||(e[d]=[])).push(c)}return e}function Ca(a){var b,c,d,e,f;for(b=0;b<a.length;b++)for(c=a[b],d=0;d<c.length;d++)for(e=c[d],e.forwardSegs=[],f=b+1;f<a.length;f++)Ea(e,a[f],e.forwardSegs)}function Da(a){var b,c,d=a.forwardSegs,e=0;if(void 0===a.forwardPressure){for(b=0;b<d.length;b++)c=d[b],Da(c),e=Math.max(e,1+c.forwardPressure);a.forwardPressure=e}}function Ea(a,b,c){c=c||[];for(var d=0;d<b.length;d++)Fa(a,b[d])&&c.push(b[d]);return c}function Fa(a,b){return a.bottom>b.top&&a.top<b.bottom}function Ga(c,d){function e(){U?h()&&(k(),i()):f()}function f(){V=O.theme?"ui":"fc",c.addClass("fc"),O.isRTL?c.addClass("fc-rtl"):c.addClass("fc-ltr"),O.theme?c.addClass("ui-widget"):c.addClass("fc-unthemed"),U=a("<div class='fc-view-container'/>").prependTo(c),S=N.header=new Ja(N,O),T=S.render(),T&&c.prepend(T),i(O.defaultView),O.handleWindowResize&&(Y=da(m,O.windowResizeDelay),a(window).resize(Y))}function g(){W&&W.removeElement(),S.removeElement(),U.remove(),c.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),Y&&a(window).unbind("resize",Y)}function h(){return c.is(":visible")}function i(b){ca++,W&&b&&W.type!==b&&(S.deactivateButton(W.type),H(),W.removeElement(),W=N.view=null),!W&&b&&(W=N.view=ba[b]||(ba[b]=N.instantiateView(b)),W.setElement(a("<div class='fc-view fc-"+b+"-view' />").appendTo(U)),S.activateButton(b)),W&&(Z=W.massageCurrentDate(Z),W.displaying&&Z.isWithin(W.intervalStart,W.intervalEnd)||h()&&(H(),W.display(Z),I(),u(),v(),q())),I(),ca--}function j(a){return h()?(a&&l(),ca++,W.updateSize(!0),ca--,!0):void 0}function k(){h()&&l()}function l(){X="number"==typeof O.contentHeight?O.contentHeight:"number"==typeof O.height?O.height-(T?T.outerHeight(!0):0):Math.round(U.width()/Math.max(O.aspectRatio,.5))}function m(a){!ca&&a.target===window&&W.start&&j(!0)&&W.trigger("windowResize",aa)}function n(){p(),r()}function o(){h()&&(H(),W.displayEvents(ea),I())}function p(){H(),W.clearEvents(),I()}function q(){!O.lazyFetching||$(W.start,W.end)?r():o()}function r(){_(W.start,W.end)}function s(a){ea=a,o()}function t(){o()}function u(){S.updateTitle(W.title)}function v(){var a=N.getNow();a.isWithin(W.intervalStart,W.intervalEnd)?S.disableButton("today"):S.enableButton("today")}function w(a,b){W.select(N.buildSelectRange.apply(N,arguments))}function x(){W&&W.unselect()}function y(){Z=W.computePrevDate(Z),i()}function z(){Z=W.computeNextDate(Z),i()}function A(){Z.add(-1,"years"),i()}function B(){Z.add(1,"years"),i()}function C(){Z=N.getNow(),i()}function D(a){Z=N.moment(a),i()}function E(a){Z.add(b.duration(a)),i()}function F(a,b){var c;b=b||"day",c=N.getViewSpec(b)||N.getUnitViewSpec(b),Z=a,i(c?c.type:null)}function G(){return Z.clone()}function H(){U.css({width:"100%",height:U.height(),overflow:"hidden"})}function I(){U.css({width:"",height:"",overflow:""})}function J(){return N}function K(){return W}function L(a,b){return void 0===b?O[a]:void(("height"==a||"contentHeight"==a||"aspectRatio"==a)&&(O[a]=b,j(!0)))}function M(a,b){var c=Array.prototype.slice.call(arguments,2);return b=b||aa,this.triggerWith(a,b,c),O[a]?O[a].apply(b,c):void 0}var N=this;N.initOptions(d||{});var O=this.options;N.render=e,N.destroy=g,N.refetchEvents=n,N.reportEvents=s,N.reportEventChange=t,N.rerenderEvents=o,N.changeView=i,N.select=w,N.unselect=x,N.prev=y,N.next=z,N.prevYear=A,N.nextYear=B,N.today=C,N.gotoDate=D,N.incrementDate=E,N.zoomTo=F,N.getDate=G,N.getCalendar=J,N.getView=K,N.option=L,N.trigger=M;var P=R(Ia(O.lang));if(O.monthNames&&(P._months=O.monthNames),O.monthNamesShort&&(P._monthsShort=O.monthNamesShort),O.dayNames&&(P._weekdays=O.dayNames),O.dayNamesShort&&(P._weekdaysShort=O.dayNamesShort),null!=O.firstDay){var Q=R(P._week);Q.dow=O.firstDay,P._week=Q}P._fullCalendar_weekCalc=function(a){return"function"==typeof a?a:"local"===a?a:"iso"===a||"ISO"===a?"ISO":void 0}(O.weekNumberCalculation),N.defaultAllDayEventDuration=b.duration(O.defaultAllDayEventDuration),N.defaultTimedEventDuration=b.duration(O.defaultTimedEventDuration),N.moment=function(){var a;return"local"===O.timezone?(a=Ma.moment.apply(null,arguments),a.hasTime()&&a.local()):a="UTC"===O.timezone?Ma.moment.utc.apply(null,arguments):Ma.moment.parseZone.apply(null,arguments),"_locale"in a?a._locale=P:a._lang=P,a},N.getIsAmbigTimezone=function(){return"local"!==O.timezone&&"UTC"!==O.timezone},N.rezoneDate=function(a){return N.moment(a.toArray())},N.getNow=function(){var a=O.now;return"function"==typeof a&&(a=a()),N.moment(a)},N.getEventEnd=function(a){return a.end?a.end.clone():N.getDefaultEventEnd(a.allDay,a.start)},N.getDefaultEventEnd=function(a,b){var c=b.clone();return a?c.stripTime().add(N.defaultAllDayEventDuration):c.add(N.defaultTimedEventDuration),N.getIsAmbigTimezone()&&c.stripZone(),c},N.humanizeDuration=function(a){return(a.locale||a.lang).call(a,O.lang).humanize()},Ka.call(N,O);var S,T,U,V,W,X,Y,Z,$=N.isFetchNeeded,_=N.fetchEvents,aa=c[0],ba={},ca=0,ea=[];Z=null!=O.defaultDate?N.moment(O.defaultDate):N.getNow(),N.getSuggestedViewHeight=function(){return void 0===X&&k(),X},N.isHeightAuto=function(){return"auto"===O.contentHeight||"auto"===O.height},N.initialize()}function Ha(b){a.each(rb,function(a,c){null==b[a]&&(b[a]=c(b))})}function Ia(a){var c=b.localeData||b.langData;return c.call(b,a)||c.call(b,"en")}function Ja(b,c){function d(){var b=c.header;return n=c.theme?"ui":"fc",b?o=a("<div class='fc-toolbar'/>").append(f("left")).append(f("right")).append(f("center")).append('<div class="fc-clear"/>'):void 0}function e(){o.remove(),o=a()}function f(d){var e=a('<div class="fc-'+d+'"/>'),f=c.header[d];return f&&a.each(f.split(" "),function(d){var f,g=a(),h=!0;a.each(this.split(","),function(d,e){var f,i,j,k,l,m,o,q,r,s;"title"==e?(g=g.add(a("<h2> </h2>")),h=!1):((f=(b.options.customButtons||{})[e])?(j=function(a){f.click&&f.click.call(s[0],a)},k="",l=f.text):(i=b.getViewSpec(e))?(j=function(){b.changeView(e)},p.push(e),k=i.buttonTextOverride,l=i.buttonTextDefault):b[e]&&(j=function(){b[e]()},k=(b.overrides.buttonText||{})[e],l=c.buttonText[e]),j&&(m=f?f.themeIcon:c.themeButtonIcons[e],o=f?f.icon:c.buttonIcons[e],q=k?Y(k):m&&c.theme?"<span class='ui-icon ui-icon-"+m+"'></span>":o&&!c.theme?"<span class='fc-icon fc-icon-"+o+"'></span>":Y(l),r=["fc-"+e+"-button",n+"-button",n+"-state-default"],s=a('<button type="button" class="'+r.join(" ")+'">'+q+"</button>").click(function(a){s.hasClass(n+"-state-disabled")||(j(a),(s.hasClass(n+"-state-active")||s.hasClass(n+"-state-disabled"))&&s.removeClass(n+"-state-hover"))}).mousedown(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-down")}).mouseup(function(){s.removeClass(n+"-state-down")}).hover(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-hover")},function(){s.removeClass(n+"-state-hover").removeClass(n+"-state-down")}),g=g.add(s)))}),h&&g.first().addClass(n+"-corner-left").end().last().addClass(n+"-corner-right").end(),g.length>1?(f=a("<div/>"),h&&f.addClass("fc-button-group"),f.append(g),e.append(f)):e.append(g)}),e}function g(a){o.find("h2").text(a)}function h(a){o.find(".fc-"+a+"-button").addClass(n+"-state-active")}function i(a){o.find(".fc-"+a+"-button").removeClass(n+"-state-active")}function j(a){o.find(".fc-"+a+"-button").attr("disabled","disabled").addClass(n+"-state-disabled")}function k(a){o.find(".fc-"+a+"-button").removeAttr("disabled").removeClass(n+"-state-disabled")}function l(){return p}var m=this;m.render=d,m.removeElement=e,m.updateTitle=g,m.activateButton=h,m.deactivateButton=i,m.disableButton=j,m.enableButton=k,m.getViewsWithButtons=l;var n,o=a(),p=[]}function Ka(c){function d(a,b){return!M||a.clone().stripZone()<M.clone().stripZone()||b.clone().stripZone()>N.clone().stripZone()}function e(a,b){M=a,N=b,U=[];var c=++S,d=R.length;T=d;for(var e=0;d>e;e++)f(R[e],c)}function f(b,c){g(b,function(d){var e,f,g,h=a.isArray(b.events);if(c==S){if(d)for(e=0;e<d.length;e++)f=d[e],g=h?f:s(f,b),g&&U.push.apply(U,x(g));T--,T||O(U)}})}function g(b,d){var e,f,h=Ma.sourceFetchers;for(e=0;e<h.length;e++){if(f=h[e].call(L,b,M.clone(),N.clone(),c.timezone,d),f===!0)return;if("object"==typeof f)return void g(f,d)}var i=b.events;if(i)a.isFunction(i)?(L.pushLoading(),i.call(L,M.clone(),N.clone(),c.timezone,function(a){d(a),L.popLoading()})):a.isArray(i)?d(i):d();else{var j=b.url;if(j){var k,l=b.success,m=b.error,n=b.complete;k=a.isFunction(b.data)?b.data():b.data;var o=a.extend({},k||{}),p=X(b.startParam,c.startParam),q=X(b.endParam,c.endParam),r=X(b.timezoneParam,c.timezoneParam);p&&(o[p]=M.format()),q&&(o[q]=N.format()),c.timezone&&"local"!=c.timezone&&(o[r]=c.timezone),L.pushLoading(),a.ajax(a.extend({},sb,b,{data:o,success:function(b){b=b||[];var c=W(l,this,arguments);a.isArray(c)&&(b=c),d(b)},error:function(){W(m,this,arguments),d()},complete:function(){W(n,this,arguments),L.popLoading()}}))}else d()}}function h(a){var b=i(a);b&&(R.push(b),T++,f(b,S))}function i(b){var c,d,e=Ma.sourceNormalizers;if(a.isFunction(b)||a.isArray(b)?c={events:b}:"string"==typeof b?c={url:b}:"object"==typeof b&&(c=a.extend({},b)),c){for(c.className?"string"==typeof c.className&&(c.className=c.className.split(/\s+/)):c.className=[],a.isArray(c.events)&&(c.origArray=c.events,c.events=a.map(c.events,function(a){return s(a,c)})),d=0;d<e.length;d++)e[d].call(L,c);return c}}function j(b){R=a.grep(R,function(a){return!k(a,b)}),U=a.grep(U,function(a){return!k(a.source,b)}),O(U)}function k(a,b){return a&&b&&l(a)==l(b)}function l(a){return("object"==typeof a?a.origArray||a.googleCalendarId||a.url||a.events:null)||a}function m(a){a.start=L.moment(a.start),a.end?a.end=L.moment(a.end):a.end=null,y(a,n(a)),O(U)}function n(b){var c={};return a.each(b,function(a,b){o(a)&&void 0!==b&&V(b)&&(c[a]=b)}),c}function o(a){return!/^_|^(id|allDay|start|end)$/.test(a)}function p(a,b){var c,d,e,f=s(a);if(f){for(c=x(f),d=0;d<c.length;d++)e=c[d],e.source||(b&&(Q.events.push(e),e.source=Q),U.push(e));return O(U),c}return[]}function q(b){var c,d;for(null==b?b=function(){return!0}:a.isFunction(b)||(c=b+"",b=function(a){return a._id==c}),U=a.grep(U,b,!0),d=0;d<R.length;d++)a.isArray(R[d].events)&&(R[d].events=a.grep(R[d].events,b,!0));O(U)}function r(b){return a.isFunction(b)?a.grep(U,b):null!=b?(b+="",a.grep(U,function(a){return a._id==b})):U}function s(d,e){var f,g,h,i={};if(c.eventDataTransform&&(d=c.eventDataTransform(d)),e&&e.eventDataTransform&&(d=e.eventDataTransform(d)),a.extend(i,d),e&&(i.source=e),i._id=d._id||(void 0===d.id?"_fc"+tb++:d.id+""),d.className?"string"==typeof d.className?i.className=d.className.split(/\s+/):i.className=d.className:i.className=[],f=d.start||d.date,g=d.end,P(f)&&(f=b.duration(f)),P(g)&&(g=b.duration(g)),d.dow||b.isDuration(f)||b.isDuration(g))i.start=f?b.duration(f):null,i.end=g?b.duration(g):null,i._recurring=!0;else{if(f&&(f=L.moment(f),!f.isValid()))return!1;g&&(g=L.moment(g),g.isValid()||(g=null)),h=d.allDay,void 0===h&&(h=X(e?e.allDayDefault:void 0,c.allDayDefault)),t(f,g,h,i)}return i}function t(a,b,c,d){d.start=a,d.end=b,d.allDay=c,u(d),La(d)}function u(a){v(a),a.end&&!a.end.isAfter(a.start)&&(a.end=null),a.end||(c.forceEventDuration?a.end=L.getDefaultEventEnd(a.allDay,a.start):a.end=null)}function v(a){null==a.allDay&&(a.allDay=!(a.start.hasTime()||a.end&&a.end.hasTime())),a.allDay?(a.start.stripTime(),a.end&&a.end.stripTime()):(a.start.hasTime()||(a.start=L.rezoneDate(a.start)),a.end&&!a.end.hasTime()&&(a.end=L.rezoneDate(a.end)))}function w(b){var c;return b.end||(c=b.allDay,null==c&&(c=!b.start.hasTime()),b=a.extend({},b),b.end=L.getDefaultEventEnd(c,b.start)),b}function x(b,c,d){var e,f,g,h,i,j,k,l,m,n=[];if(c=c||M,d=d||N,b)if(b._recurring){if(f=b.dow)for(e={},g=0;g<f.length;g++)e[f[g]]=!0;for(h=c.clone().stripTime();h.isBefore(d);)(!e||e[h.day()])&&(i=b.start,j=b.end,k=h.clone(),l=null,i&&(k=k.time(i)),j&&(l=h.clone().time(j)),m=a.extend({},b),t(k,l,!i&&!j,m),n.push(m)),h.add(1,"days")}else n.push(b);return n}function y(b,c,d){function e(a,b){return d?H(a,b,d):c.allDay?G(a,b):F(a,b)}var f,g,h,i,j,k,l={};return c=c||{},c.start||(c.start=b.start.clone()),void 0===c.end&&(c.end=b.end?b.end.clone():null),null==c.allDay&&(c.allDay=b.allDay),u(c),f={start:b._start.clone(),end:b._end?b._end.clone():L.getDefaultEventEnd(b._allDay,b._start),allDay:c.allDay},u(f),g=null!==b._end&&null===c.end,h=e(c.start,f.start),c.end?(i=e(c.end,f.end),j=i.subtract(h)):j=null,a.each(c,function(a,b){o(a)&&void 0!==b&&(l[a]=b)}),k=z(r(b._id),g,c.allDay,h,j,l),{dateDelta:h,durationDelta:j,undo:k}}function z(b,c,d,e,f,g){var h=L.getIsAmbigTimezone(),i=[];return e&&!e.valueOf()&&(e=null),f&&!f.valueOf()&&(f=null),a.each(b,function(b,j){var k,l;k={start:j.start.clone(),end:j.end?j.end.clone():null,allDay:j.allDay},a.each(g,function(a){k[a]=j[a]}),l={start:j._start,end:j._end,allDay:d},u(l),c?l.end=null:f&&!l.end&&(l.end=L.getDefaultEventEnd(l.allDay,l.start)),e&&(l.start.add(e),l.end&&l.end.add(e)),f&&l.end.add(f),h&&!l.allDay&&(e||f)&&(l.start.stripZone(),l.end&&l.end.stripZone()),a.extend(j,g,l),La(j),i.push(function(){a.extend(j,k),La(j)})}),function(){for(var a=0;a<i.length;a++)i[a]()}}function A(b){var d,e=c.businessHours,f={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},g=L.getView();return e&&(d=a.extend({},f,"object"==typeof e?e:{})),d?(b&&(d.start=null,d.end=null),x(s(d),g.start,g.end)):[]}function B(a,b){var d=b.source||{},e=X(b.constraint,d.constraint,c.eventConstraint),f=X(b.overlap,d.overlap,c.eventOverlap);return a=w(a),E(a,e,f,b)}function C(a){return E(a,c.selectConstraint,c.selectOverlap)}function D(b,c){var d,e;return c&&(d=a.extend({},c,b),e=x(s(d))[0]),e?B(b,e):(b=w(b),C(b))}function E(b,c,d,e){var f,g,h,i,j,k;if(b=a.extend({},b),b.start=b.start.clone().stripZone(),b.end=b.end.clone().stripZone(),null!=c){for(f=I(c),g=!1,i=0;i<f.length;i++)if(J(f[i],b)){g=!0;break}if(!g)return!1}for(h=L.getPeerEvents(e,b),i=0;i<h.length;i++)if(j=h[i],K(j,b)){if(d===!1)return!1;if("function"==typeof d&&!d(j,e))return!1;if(e){if(k=X(j.overlap,(j.source||{}).overlap),k===!1)return!1;if("function"==typeof k&&!k(e,j))return!1}}return!0}function I(a){return"businessHours"===a?A():"object"==typeof a?x(s(a)):r(a)}function J(a,b){var c=a.start.clone().stripZone(),d=L.getEventEnd(a).stripZone();return b.start>=c&&b.end<=d}function K(a,b){var c=a.start.clone().stripZone(),d=L.getEventEnd(a).stripZone();return b.start<d&&b.end>c}var L=this;L.isFetchNeeded=d,L.fetchEvents=e,L.addEventSource=h,L.removeEventSource=j,L.updateEvent=m,L.renderEvent=p,L.removeEvents=q,L.clientEvents=r,L.mutateEvent=y,L.normalizeEventRange=u,L.normalizeEventRangeTimes=v,L.ensureVisibleEventRange=w;var M,N,O=L.reportEvents,Q={events:[]},R=[Q],S=0,T=0,U=[];a.each((c.events?[c.events]:[]).concat(c.eventSources||[]),function(a,b){var c=i(b);c&&R.push(c)}),L.getBusinessHoursEvents=A,L.isEventRangeAllowed=B,L.isSelectionRangeAllowed=C,L.isExternalDropRangeAllowed=D,L.getEventCache=function(){return U}}function La(a){a._allDay=a.allDay,a._start=a.start.clone(),a._end=a.end?a.end.clone():null}var Ma=a.fullCalendar={version:"2.4.0"},Na=Ma.views={};a.fn.fullCalendar=function(b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.each(function(e,f){var g,h=a(f),i=h.data("fullCalendar");"string"==typeof b?i&&a.isFunction(i[b])&&(g=i[b].apply(i,c),e||(d=g),"destroy"===b&&h.removeData("fullCalendar")):i||(i=new nb(h,b),h.data("fullCalendar",i),i.render())}),d};var Oa=["header","buttonText","buttonIcons","themeButtonIcons"];Ma.intersectionToSeg=E,Ma.applyAll=W,Ma.debounce=da,Ma.isInt=ba,Ma.htmlEscape=Y,Ma.cssToStr=$,Ma.proxy=ca,Ma.capitaliseFirstLetter=_,Ma.getClientRect=p,Ma.getContentRect=q,Ma.getScrollbarWidths=r;var Pa=null;Ma.intersectRects=w,Ma.parseFieldSpecs=A,Ma.compareByFieldSpecs=B,Ma.compareByFieldSpec=C,Ma.flexibleCompare=D,Ma.computeIntervalUnit=I,Ma.divideRangeByDuration=K,Ma.divideDurationByDuration=L,Ma.multiplyDuration=M,Ma.durationHasTime=N;var Qa=["sun","mon","tue","wed","thu","fri","sat"],Ra=["year","month","week","day","hour","minute","second","millisecond"];Ma.log=function(){var a=window.console;return a&&a.log?a.log.apply(a,arguments):void 0},Ma.warn=function(){var a=window.console;return a&&a.warn?a.warn.apply(a,arguments):Ma.log.apply(Ma,arguments)};var Sa,Ta,Ua,Va={}.hasOwnProperty,Wa=/^\s*\d{4}-\d\d$/,Xa=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,Ya=b.fn,Za=a.extend({},Ya);Ma.moment=function(){return ea(arguments)},Ma.moment.utc=function(){var a=ea(arguments,!0);return a.hasTime()&&a.utc(),a},Ma.moment.parseZone=function(){return ea(arguments,!0,!0)},Ya.clone=function(){var a=Za.clone.apply(this,arguments);return ga(this,a),this._fullCalendar&&(a._fullCalendar=!0),a},Ya.week=Ya.weeks=function(a){var b=(this._locale||this._lang)._fullCalendar_weekCalc;return null==a&&"function"==typeof b?b(this):"ISO"===b?Za.isoWeek.apply(this,arguments):Za.week.apply(this,arguments)},Ya.time=function(a){if(!this._fullCalendar)return Za.time.apply(this,arguments);if(null==a)return b.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,b.isDuration(a)||b.isMoment(a)||(a=b.duration(a));var c=0;return b.isDuration(a)&&(c=24*Math.floor(a.asDays())),this.hours(c+a.hours()).minutes(a.minutes()).seconds(a.seconds()).milliseconds(a.milliseconds())},Ya.stripTime=function(){var a;return this._ambigTime||(a=this.toArray(),this.utc(),Ta(this,a.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},Ya.hasTime=function(){return!this._ambigTime},Ya.stripZone=function(){var a,b;return this._ambigZone||(a=this.toArray(),b=this._ambigTime,this.utc(),Ta(this,a),this._ambigTime=b||!1,this._ambigZone=!0),this},Ya.hasZone=function(){return!this._ambigZone},Ya.local=function(){var a=this.toArray(),b=this._ambigZone;return Za.local.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,b&&Ua(this,a),this},Ya.utc=function(){return Za.utc.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,this},a.each(["zone","utcOffset"],function(a,b){Za[b]&&(Ya[b]=function(a){return null!=a&&(this._ambigTime=!1,this._ambigZone=!1),Za[b].apply(this,arguments)})}),Ya.format=function(){return this._fullCalendar&&arguments[0]?ja(this,arguments[0]):this._ambigTime?ia(this,"YYYY-MM-DD"):this._ambigZone?ia(this,"YYYY-MM-DD[T]HH:mm:ss"):Za.format.apply(this,arguments)},Ya.toISOString=function(){return this._ambigTime?ia(this,"YYYY-MM-DD"):this._ambigZone?ia(this,"YYYY-MM-DD[T]HH:mm:ss"):Za.toISOString.apply(this,arguments)},Ya.isWithin=function(a,b){var c=fa([this,a,b]);return c[0]>=c[1]&&c[0]<c[2]},Ya.isSame=function(a,b){var c;return this._fullCalendar?b?(c=fa([this,a],!0),Za.isSame.call(c[0],c[1],b)):(a=Ma.moment.parseZone(a),Za.isSame.call(this,a)&&Boolean(this._ambigTime)===Boolean(a._ambigTime)&&Boolean(this._ambigZone)===Boolean(a._ambigZone)):Za.isSame.apply(this,arguments)},a.each(["isBefore","isAfter"],function(a,b){Ya[b]=function(a,c){var d;return this._fullCalendar?(d=fa([this,a]),Za[b].call(d[0],d[1],c)):Za[b].apply(this,arguments)}}),Sa="_d"in b()&&"updateOffset"in b,Ta=Sa?function(a,c){a._d.setTime(Date.UTC.apply(Date,c)),b.updateOffset(a,!1)}:ha,Ua=Sa?function(a,c){a._d.setTime(+new Date(c[0]||0,c[1]||0,c[2]||0,c[3]||0,c[4]||0,c[5]||0,c[6]||0)),b.updateOffset(a,!1)}:ha;var $a={t:function(a){return ia(a,"a").charAt(0)},T:function(a){return ia(a,"A").charAt(0)}};Ma.formatRange=ma;var _a={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},ab={};Ma.Class=ra,ra.extend=function(a){var b,c=this;return a=a||{},U(a,"constructor")&&(b=a.constructor),"function"!=typeof b&&(b=a.constructor=function(){c.apply(this,arguments)}),b.prototype=R(c.prototype),S(a,b.prototype),T(a,b.prototype),S(c,b),b},ra.mixin=function(a){S(a.prototype||a,this.prototype)};var bb=Ma.Emitter=ra.extend({callbackHash:null,on:function(a,b){return this.getCallbacks(a).add(b),this},off:function(a,b){return this.getCallbacks(a).remove(b),this},trigger:function(a){var b=Array.prototype.slice.call(arguments,1);return this.triggerWith(a,this,b),this},triggerWith:function(a,b,c){var d=this.getCallbacks(a);return d.fireWith(b,c),this},getCallbacks:function(b){var c;return this.callbackHash||(this.callbackHash={}),c=this.callbackHash[b],c||(c=this.callbackHash[b]=a.Callbacks()),c}}),cb=ra.extend({isHidden:!0,options:null,el:null,documentMousedownProxy:null,margin:10,constructor:function(a){this.options=a||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var b=this,c=this.options;this.el=a('<div class="fc-popover"/>').addClass(c.className||"").css({top:0,left:0}).append(c.content).appendTo(c.parentEl),this.el.on("click",".fc-close",function(){b.hide()}),c.autoHide&&a(document).on("mousedown",this.documentMousedownProxy=ca(this,"documentMousedown"))},documentMousedown:function(b){this.el&&!a(b.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),a(document).off("mousedown",this.documentMousedownProxy)},position:function(){var b,c,d,e,f,g=this.options,h=this.el.offsetParent().offset(),i=this.el.outerWidth(),j=this.el.outerHeight(),k=a(window),l=n(this.el);e=g.top||0,f=void 0!==g.left?g.left:void 0!==g.right?g.right-i:0,l.is(window)||l.is(document)?(l=k,b=0,c=0):(d=l.offset(),b=d.top,c=d.left),b+=k.scrollTop(),c+=k.scrollLeft(),g.viewportConstrain!==!1&&(e=Math.min(e,b+l.outerHeight()-j-this.margin),e=Math.max(e,b+this.margin),f=Math.min(f,c+l.outerWidth()-i-this.margin),f=Math.max(f,c+this.margin)),this.el.css({top:e-h.top,left:f-h.left})},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1));
|
7
|
+
}}),db=ra.extend({grid:null,rowCoords:null,colCoords:null,containerEl:null,bounds:null,constructor:function(a){this.grid=a},build:function(){this.grid.build(),this.rowCoords=this.grid.computeRowCoords(),this.colCoords=this.grid.computeColCoords(),this.computeBounds()},clear:function(){this.grid.clear(),this.rowCoords=null,this.colCoords=null},getCell:function(b,c){var d,e,f,g=this.rowCoords,h=g.length,i=this.colCoords,j=i.length,k=null,l=null;if(this.inBounds(b,c)){for(d=0;h>d;d++)if(e=g[d],c>=e.top&&c<e.bottom){k=d;break}for(d=0;j>d;d++)if(e=i[d],b>=e.left&&b<e.right){l=d;break}if(null!==k&&null!==l)return f=this.grid.getCell(k,l),f.grid=this.grid,a.extend(f,g[k],i[l]),f}return null},computeBounds:function(){this.bounds=this.containerEl?p(this.containerEl):null},inBounds:function(a,b){var c=this.bounds;return c?a>=c.left&&a<c.right&&b>=c.top&&b<c.bottom:!0}}),eb=ra.extend({coordMaps:null,constructor:function(a){this.coordMaps=a},build:function(){var a,b=this.coordMaps;for(a=0;a<b.length;a++)b[a].build()},getCell:function(a,b){var c,d=this.coordMaps,e=null;for(c=0;c<d.length&&!e;c++)e=d[c].getCell(a,b);return e},clear:function(){var a,b=this.coordMaps;for(a=0;a<b.length;a++)b[a].clear()}}),fb=Ma.DragListener=ra.extend({options:null,isListening:!1,isDragging:!1,originX:null,originY:null,mousemoveProxy:null,mouseupProxy:null,subjectEl:null,subjectHref:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,constructor:function(a){a=a||{},this.options=a,this.subjectEl=a.subjectEl},mousedown:function(a){v(a)&&(a.preventDefault(),this.startListening(a),this.options.distance||this.startDrag(a))},startListening:function(b){var c;this.isListening||(b&&this.options.scroll&&(c=n(a(b.target)),c.is(window)||c.is(document)||(this.scrollEl=c,this.scrollHandlerProxy=da(ca(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),a(document).on("mousemove",this.mousemoveProxy=ca(this,"mousemove")).on("mouseup",this.mouseupProxy=ca(this,"mouseup")).on("selectstart",this.preventDefault),b?(this.originX=b.pageX,this.originY=b.pageY):(this.originX=0,this.originY=0),this.isListening=!0,this.listenStart(b))},listenStart:function(a){this.trigger("listenStart",a)},mousemove:function(a){var b,c,d=a.pageX-this.originX,e=a.pageY-this.originY;this.isDragging||(b=this.options.distance||1,c=d*d+e*e,c>=b*b&&this.startDrag(a)),this.isDragging&&this.drag(d,e,a)},startDrag:function(a){this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.dragStart(a))},dragStart:function(a){var b=this.subjectEl;this.trigger("dragStart",a),(this.subjectHref=b?b.attr("href"):null)&&b.removeAttr("href")},drag:function(a,b,c){this.trigger("drag",a,b,c),this.updateScroll(c)},mouseup:function(a){this.stopListening(a)},stopDrag:function(a){this.isDragging&&(this.stopScrolling(),this.dragStop(a),this.isDragging=!1)},dragStop:function(a){var b=this;this.trigger("dragStop",a),setTimeout(function(){b.subjectHref&&b.subjectEl.attr("href",b.subjectHref)},0)},stopListening:function(b){this.stopDrag(b),this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),a(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.listenStop(b))},listenStop:function(a){this.trigger("listenStop",a)},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(a){a.preventDefault()},computeScrollBounds:function(){var a=this.scrollEl;this.scrollBounds=a?o(a):null},updateScroll:function(a){var b,c,d,e,f=this.scrollSensitivity,g=this.scrollBounds,h=0,i=0;g&&(b=(f-(a.pageY-g.top))/f,c=(f-(g.bottom-a.pageY))/f,d=(f-(a.pageX-g.left))/f,e=(f-(g.right-a.pageX))/f,b>=0&&1>=b?h=b*this.scrollSpeed*-1:c>=0&&1>=c&&(h=c*this.scrollSpeed),d>=0&&1>=d?i=d*this.scrollSpeed*-1:e>=0&&1>=e&&(i=e*this.scrollSpeed)),this.setScrollVel(h,i)},setScrollVel:function(a,b){this.scrollTopVel=a,this.scrollLeftVel=b,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(ca(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var a=this.scrollEl;this.scrollTopVel<0?a.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&a.scrollTop()+a[0].clientHeight>=a[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?a.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&a.scrollLeft()+a[0].clientWidth>=a[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var a=this.scrollEl,b=this.scrollIntervalMs/1e3;this.scrollTopVel&&a.scrollTop(a.scrollTop()+this.scrollTopVel*b),this.scrollLeftVel&&a.scrollLeft(a.scrollLeft()+this.scrollLeftVel*b),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.scrollStop())},scrollHandler:function(){this.scrollIntervalId||this.scrollStop()},scrollStop:function(){}}),gb=fb.extend({coordMap:null,origCell:null,cell:null,coordAdjust:null,constructor:function(a,b){fb.prototype.constructor.call(this,b),this.coordMap=a},listenStart:function(a){var b,c,d,e=this.subjectEl;fb.prototype.listenStart.apply(this,arguments),this.computeCoords(),a?(c={left:a.pageX,top:a.pageY},d=c,e&&(b=o(e),d=x(d,b)),this.origCell=this.getCell(d.left,d.top),e&&this.options.subjectCenter&&(this.origCell&&(b=w(this.origCell,b)||b),d=y(b)),this.coordAdjust=z(d,c)):(this.origCell=null,this.coordAdjust=null)},computeCoords:function(){this.coordMap.build(),this.computeScrollBounds()},dragStart:function(a){var b;fb.prototype.dragStart.apply(this,arguments),b=this.getCell(a.pageX,a.pageY),b&&this.cellOver(b)},drag:function(a,b,c){var d;fb.prototype.drag.apply(this,arguments),d=this.getCell(c.pageX,c.pageY),sa(d,this.cell)||(this.cell&&this.cellOut(),d&&this.cellOver(d))},dragStop:function(){this.cellDone(),fb.prototype.dragStop.apply(this,arguments)},cellOver:function(a){this.cell=a,this.trigger("cellOver",a,sa(a,this.origCell),this.origCell)},cellOut:function(){this.cell&&(this.trigger("cellOut",this.cell),this.cellDone(),this.cell=null)},cellDone:function(){this.cell&&this.trigger("cellDone",this.cell)},listenStop:function(){fb.prototype.listenStop.apply(this,arguments),this.origCell=this.cell=null,this.coordMap.clear()},scrollStop:function(){fb.prototype.scrollStop.apply(this,arguments),this.computeCoords()},getCell:function(a,b){return this.coordAdjust&&(a+=this.coordAdjust.left,b+=this.coordAdjust.top),this.coordMap.getCell(a,b)}}),hb=ra.extend({options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(b,c){this.options=c=c||{},this.sourceEl=b,this.parentEl=c.parentEl?a(c.parentEl):b.parent()},start:function(b){this.isFollowing||(this.isFollowing=!0,this.mouseY0=b.pageY,this.mouseX0=b.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),a(document).on("mousemove",this.mousemoveProxy=ca(this,"mousemove")))},stop:function(b,c){function d(){this.isAnimating=!1,e.removeElement(),this.top0=this.left0=null,c&&c()}var e=this,f=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,a(document).off("mousemove",this.mousemoveProxy),b&&f&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:f,complete:d})):d())},getEl:function(){var a=this.el;return a||(this.sourceEl.width(),a=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),a},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var a,b;this.getEl(),null===this.top0&&(this.sourceEl.width(),a=this.sourceEl.offset(),b=this.el.offsetParent().offset(),this.top0=a.top-b.top,this.left0=a.left-b.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(a){this.topDelta=a.pageY-this.mouseY0,this.leftDelta=a.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),ib=ra.extend({view:null,isRTL:null,cellHtml:"<td/>",constructor:function(a){this.view=a,this.isRTL=a.opt("isRTL")},rowHtml:function(a,b){var c,d,e=this.getHtmlRenderer("cell",a),f="";for(b=b||0,c=0;c<this.colCnt;c++)d=this.getCell(b,c),f+=e(d);return f=this.bookendCells(f,a,b),"<tr>"+f+"</tr>"},bookendCells:function(a,b,c){var d=this.getHtmlRenderer("intro",b)(c||0),e=this.getHtmlRenderer("outro",b)(c||0),f=this.isRTL?e:d,g=this.isRTL?d:e;return"string"==typeof a?f+a+g:a.prepend(f).append(g)},getHtmlRenderer:function(a,b){var c,d,e,f,g=this.view;return c=a+"Html",b&&(d=b+_(a)+"Html"),d&&(f=g[d])?e=g:d&&(f=this[d])?e=this:(f=g[c])?e=g:(f=this[c])&&(e=this),"function"==typeof f?function(){return f.apply(e,arguments)||""}:function(){return f||""}}}),jb=Ma.Grid=ib.extend({start:null,end:null,rowCnt:0,colCnt:0,el:null,coordMap:null,elsByFill:null,externalDragStartProxy:null,colHeadFormat:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,cellDuration:null,largeUnit:null,constructor:function(){ib.apply(this,arguments),this.coordMap=new db(this),this.elsByFill={},this.externalDragStartProxy=ca(this,"externalDragStart")},computeColHeadFormat:function(){},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(a){this.start=a.start.clone(),this.end=a.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var a,b,c=this.view;this.colHeadFormat=c.opt("columnFormat")||this.computeColHeadFormat(),this.eventTimeFormat=c.opt("eventTimeFormat")||c.opt("timeFormat")||this.computeEventTimeFormat(),a=c.opt("displayEventTime"),null==a&&(a=this.computeDisplayEventTime()),b=c.opt("displayEventEnd"),null==b&&(b=this.computeDisplayEventEnd()),this.displayEventTime=a,this.displayEventEnd=b},build:function(){},clear:function(){},rangeToSegs:function(a){},diffDates:function(a,b){return this.largeUnit?H(a,b,this.largeUnit):F(a,b)},getCell:function(b,c){var d;return null==c&&("number"==typeof b?(c=b%this.colCnt,b=Math.floor(b/this.colCnt)):(c=b.col,b=b.row)),d={row:b,col:c},a.extend(d,this.getRowData(b),this.getColData(c)),a.extend(d,this.computeCellRange(d)),d},computeCellRange:function(a){var b=this.computeCellDate(a);return{start:b,end:b.clone().add(this.cellDuration)}},computeCellDate:function(a){},getRowData:function(a){return{}},getColData:function(a){return{}},getRowEl:function(a){},getColEl:function(a){},getCellDayEl:function(a){return this.getColEl(a.col)||this.getRowEl(a.row)},computeRowCoords:function(){var a,b,c,d=[];for(a=0;a<this.rowCnt;a++)b=this.getRowEl(a),c=b.offset().top,d.push({top:c,bottom:c+b.outerHeight()});return d},computeColCoords:function(){var a,b,c,d=[];for(a=0;a<this.colCnt;a++)b=this.getColEl(a),c=b.offset().left,d.push({left:c,right:c+b.outerWidth()});return d},setElement:function(b){var c=this;this.el=b,b.on("mousedown",function(b){a(b.target).is(".fc-event-container *, .fc-more")||a(b.target).closest(".fc-popover").length||c.dayMousedown(b)}),this.bindSegHandlers(),this.bindGlobalHandlers()},removeElement:function(){this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){a(document).on("dragstart sortstart",this.externalDragStartProxy)},unbindGlobalHandlers:function(){a(document).off("dragstart sortstart",this.externalDragStartProxy)},dayMousedown:function(a){var b,c,d=this,e=this.view,f=e.opt("selectable"),i=new gb(this.coordMap,{scroll:e.opt("dragScroll"),dragStart:function(){e.unselect()},cellOver:function(a,e,h){h&&(b=e?a:null,f&&(c=d.computeSelection(h,a),c?d.renderSelection(c):g()))},cellOut:function(a){b=null,c=null,d.unrenderSelection(),h()},listenStop:function(a){b&&e.triggerDayClick(b,d.getCellDayEl(b),a),c&&e.reportSelection(c,a),h()}});i.mousedown(a)},renderRangeHelper:function(a,b){var c=this.fabricateHelperEvent(a,b);this.renderHelper(c,b)},fabricateHelperEvent:function(a,b){var c=b?R(b.event):{};return c.start=a.start.clone(),c.end=a.end?a.end.clone():null,c.allDay=null,this.view.calendar.normalizeEventRange(c),c.className=(c.className||[]).concat("fc-helper"),b||(c.editable=!1),c},renderHelper:function(a,b){},unrenderHelper:function(){},renderSelection:function(a){this.renderHighlight(this.selectionRangeToSegs(a))},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(a,b){var c,d=[a.start,a.end,b.start,b.end];return d.sort(aa),c={start:d[0].clone(),end:d[3].clone()},this.view.calendar.isSelectionRangeAllowed(c)?c:null},selectionRangeToSegs:function(a){return this.rangeToSegs(a)},renderHighlight:function(a){this.renderFill("highlight",a)},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderFill:function(a,b){},unrenderFill:function(a){var b=this.elsByFill[a];b&&(b.remove(),delete this.elsByFill[a])},renderFillSegEls:function(b,c){var d,e=this,f=this[b+"SegEl"],g="",h=[];if(c.length){for(d=0;d<c.length;d++)g+=this.fillSegHtml(b,c[d]);a(g).each(function(b,d){var g=c[b],i=a(d);f&&(i=f.call(e,g,i)),i&&(i=a(i),i.is(e.fillSegTag)&&(g.el=i,h.push(g)))})}return h},fillSegTag:"div",fillSegHtml:function(a,b){var c=this[a+"SegClasses"],d=this[a+"SegCss"],e=c?c.call(this,b):[],f=$(d?d.call(this,b):{});return"<"+this.fillSegTag+(e.length?' class="'+e.join(" ")+'"':"")+(f?' style="'+f+'"':"")+" />"},headHtml:function(){return'<div class="fc-row '+this.view.widgetHeaderClass+'"><table><thead>'+this.rowHtml("head")+"</thead></table></div>"},headCellHtml:function(a){var b=this.view,c=a.start;return'<th class="fc-day-header '+b.widgetHeaderClass+" fc-"+Qa[c.day()]+'">'+Y(c.format(this.colHeadFormat))+"</th>"},bgCellHtml:function(a){var b=this.view,c=a.start,d=this.getDayClasses(c);return d.unshift("fc-day",b.widgetContentClass),'<td class="'+d.join(" ")+'" data-date="'+c.format("YYYY-MM-DD")+'"></td>'},getDayClasses:function(a){var b=this.view,c=b.calendar.getNow().stripTime(),d=["fc-"+Qa[a.day()]];return 1==b.intervalDuration.as("months")&&a.month()!=b.intervalStart.month()&&d.push("fc-other-month"),a.isSame(c,"day")?d.push("fc-today",b.highlightStateClass):c>a?d.push("fc-past"):d.push("fc-future"),d}});jb.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(a){var b,c,d=this.eventsToSegs(a),e=[],f=[];for(b=0;b<d.length;b++)c=d[b],ta(c.event)?e.push(c):f.push(c);e=this.renderBgSegs(e)||e,f=this.renderFgSegs(f)||f,this.segs=e.concat(f)},unrenderEvents:function(){this.triggerSegMouseout(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(a){},unrenderFgSegs:function(){},renderFgSegEls:function(b,c){var d,e=this.view,f="",g=[];if(b.length){for(d=0;d<b.length;d++)f+=this.fgSegHtml(b[d],c);a(f).each(function(c,d){var f=b[c],h=e.resolveEventEl(f.event,a(d));h&&(h.data("fc-seg",f),f.el=h,g.push(f))})}return g},fgSegHtml:function(a,b){},renderBgSegs:function(a){return this.renderFill("bgEvent",a)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(a,b){return this.view.resolveEventEl(a.event,b)},bgEventSegClasses:function(a){var b=a.event,c=b.source||{};return["fc-bgevent"].concat(b.className,c.className||[])},bgEventSegCss:function(a){var b=this.view,c=a.event,d=c.source||{};return{"background-color":c.backgroundColor||c.color||d.backgroundColor||d.color||b.opt("eventBackgroundColor")||b.opt("eventColor")}},businessHoursSegClasses:function(a){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var b=this,c=this.view;a.each({mouseenter:function(a,c){b.triggerSegMouseover(a,c)},mouseleave:function(a,c){b.triggerSegMouseout(a,c)},click:function(a,b){return c.trigger("eventClick",this,a.event,b)},mousedown:function(d,e){a(e.target).is(".fc-resizer")&&c.isEventResizable(d.event)?b.segResizeMousedown(d,e,a(e.target).is(".fc-start-resizer")):c.isEventDraggable(d.event)&&b.segDragMousedown(d,e)}},function(c,d){b.el.on(c,".fc-event-container > *",function(c){var e=a(this).data("fc-seg");return!e||b.isDraggingSeg||b.isResizingSeg?void 0:d.call(this,e,c)})})},triggerSegMouseover:function(a,b){this.mousedOverSeg||(this.mousedOverSeg=a,this.view.trigger("eventMouseover",a.el[0],a.event,b))},triggerSegMouseout:function(a,b){b=b||{},this.mousedOverSeg&&(a=a||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",a.el[0],a.event,b))},segDragMousedown:function(a,b){var c,d=this,e=this.view,f=e.calendar,i=a.el,j=a.event,k=new hb(a.el,{parentEl:e.el,opacity:e.opt("dragOpacity"),revertDuration:e.opt("dragRevertDuration"),zIndex:2}),l=new gb(e.coordMap,{distance:5,scroll:e.opt("dragScroll"),subjectEl:i,subjectCenter:!0,listenStart:function(a){k.hide(),k.start(a)},dragStart:function(b){d.triggerSegMouseout(a,b),d.segDragStart(a,b),e.hideEvent(j)},cellOver:function(b,h,i){a.cell&&(i=a.cell),c=d.computeEventDrop(i,b,j),c&&!f.isEventRangeAllowed(c,j)&&(g(),c=null),c&&e.renderDrag(c,a)?k.hide():k.show(),h&&(c=null)},cellOut:function(){e.unrenderDrag(),k.show(),c=null},cellDone:function(){h()},dragStop:function(b){k.stop(!c,function(){e.unrenderDrag(),e.showEvent(j),d.segDragStop(a,b),c&&e.reportEventDrop(j,c,this.largeUnit,i,b)})},listenStop:function(){k.stop()}});l.mousedown(b)},segDragStart:function(a,b){this.isDraggingSeg=!0,this.view.trigger("eventDragStart",a.el[0],a.event,b,{})},segDragStop:function(a,b){this.isDraggingSeg=!1,this.view.trigger("eventDragStop",a.el[0],a.event,b,{})},computeEventDrop:function(a,b,c){var d,e,f=this.view.calendar,g=a.start,h=b.start;return g.hasTime()===h.hasTime()?(d=this.diffDates(h,g),c.allDay&&N(d)?(e={start:c.start.clone(),end:f.getEventEnd(c),allDay:!1},f.normalizeEventRangeTimes(e)):e={start:c.start.clone(),end:c.end?c.end.clone():null,allDay:c.allDay},e.start.add(d),e.end&&e.end.add(d)):e={start:h.clone(),end:null,allDay:!h.hasTime()},e},applyDragOpacity:function(a){var b=this.view.opt("dragOpacity");null!=b&&a.each(function(a,c){c.style.opacity=b})},externalDragStart:function(b,c){var d,e,f=this.view;f.opt("droppable")&&(d=a((c?c.item:null)||b.target),e=f.opt("dropAccept"),(a.isFunction(e)?e.call(d[0],d):d.is(e))&&(this.isDraggingExternal||this.listenToExternalDrag(d,b,c)))},listenToExternalDrag:function(a,b,c){var d,e,f=this,i=ya(a);d=new gb(this.coordMap,{listenStart:function(){f.isDraggingExternal=!0},cellOver:function(a){e=f.computeExternalDrop(a,i),e?f.renderDrag(e):g()},cellOut:function(){e=null,f.unrenderDrag(),h()},dragStop:function(){f.unrenderDrag(),h(),e&&f.view.reportExternalDrop(i,e,a,b,c)},listenStop:function(){f.isDraggingExternal=!1}}),d.startDrag(b)},computeExternalDrop:function(a,b){var c={start:a.start.clone(),end:null};return b.startTime&&!c.start.hasTime()&&c.start.time(b.startTime),b.duration&&(c.end=c.start.clone().add(b.duration)),this.view.calendar.isExternalDropRangeAllowed(c,b.eventProps)?c:null},renderDrag:function(a,b){},unrenderDrag:function(){},segResizeMousedown:function(a,b,c){var d,e,f=this,i=this.view,j=i.calendar,k=a.el,l=a.event,m=j.getEventEnd(l);d=new gb(this.coordMap,{distance:5,scroll:i.opt("dragScroll"),subjectEl:k,dragStart:function(b){f.triggerSegMouseout(a,b),f.segResizeStart(a,b)},cellOver:function(b,d,h){e=c?f.computeEventStartResize(h,b,l):f.computeEventEndResize(h,b,l),e&&(j.isEventRangeAllowed(e,l)?e.start.isSame(l.start)&&e.end.isSame(m)&&(e=null):(g(),e=null)),e&&(i.hideEvent(l),f.renderEventResize(e,a))},cellOut:function(){e=null},cellDone:function(){f.unrenderEventResize(),i.showEvent(l),h()},dragStop:function(b){f.segResizeStop(a,b),e&&i.reportEventResize(l,e,this.largeUnit,k,b)}}),d.mousedown(b)},segResizeStart:function(a,b){this.isResizingSeg=!0,this.view.trigger("eventResizeStart",a.el[0],a.event,b,{})},segResizeStop:function(a,b){this.isResizingSeg=!1,this.view.trigger("eventResizeStop",a.el[0],a.event,b,{})},computeEventStartResize:function(a,b,c){return this.computeEventResize("start",a,b,c)},computeEventEndResize:function(a,b,c){return this.computeEventResize("end",a,b,c)},computeEventResize:function(a,b,c,d){var e,f,g=this.view.calendar,h=this.diffDates(c[a],b[a]);return e={start:d.start.clone(),end:g.getEventEnd(d),allDay:d.allDay},e.allDay&&N(h)&&(e.allDay=!1,g.normalizeEventRangeTimes(e)),e[a].add(h),e.start.isBefore(e.end)||(f=d.allDay?g.defaultAllDayEventDuration:g.defaultTimedEventDuration,this.cellDuration&&this.cellDuration<f&&(f=this.cellDuration),"start"==a?e.start=e.end.clone().subtract(f):e.end=e.start.clone().add(f)),e},renderEventResize:function(a,b){},unrenderEventResize:function(){},getEventTimeText:function(a,b,c){return null==b&&(b=this.eventTimeFormat),null==c&&(c=this.displayEventEnd),this.displayEventTime&&a.start.hasTime()?c&&a.end?this.view.formatRange(a,b):a.start.format(b):""},getSegClasses:function(a,b,c){var d=a.event,e=["fc-event",a.isStart?"fc-start":"fc-not-start",a.isEnd?"fc-end":"fc-not-end"].concat(d.className,d.source?d.source.className:[]);return b&&e.push("fc-draggable"),c&&e.push("fc-resizable"),e},getEventSkinCss:function(a){var b=this.view,c=a.source||{},d=a.color,e=c.color,f=b.opt("eventColor");return{"background-color":a.backgroundColor||d||c.backgroundColor||e||b.opt("eventBackgroundColor")||f,"border-color":a.borderColor||d||c.borderColor||e||b.opt("eventBorderColor")||f,color:a.textColor||c.textColor||b.opt("eventTextColor")}},eventsToSegs:function(a,b){var c,d=this.eventsToRanges(a),e=[];for(c=0;c<d.length;c++)e.push.apply(e,this.eventRangeToSegs(d[c],b));return e},eventsToRanges:function(b){var c=this,d=wa(b),e=[];return a.each(d,function(a,b){b.length&&e.push.apply(e,ua(b[0])?c.eventsToInverseRanges(b):c.eventsToNormalRanges(b))}),e},eventsToNormalRanges:function(a){var b,c,d,e,f=this.view.calendar,g=[];for(b=0;b<a.length;b++)c=a[b],d=c.start.clone().stripZone(),e=f.getEventEnd(c).stripZone(),g.push({event:c,start:d,end:e,eventStartMS:+d,eventDurationMS:e-d});return g},eventsToInverseRanges:function(a){var b,c,d=this.view,e=d.start.clone().stripZone(),f=d.end.clone().stripZone(),g=this.eventsToNormalRanges(a),h=[],i=a[0],j=e;for(g.sort(xa),b=0;b<g.length;b++)c=g[b],c.start>j&&h.push({event:i,start:j,end:c.start}),j=c.end;return f>j&&h.push({event:i,start:j,end:f}),h},eventRangeToSegs:function(a,b){var c,d,e;for(a=this.view.calendar.ensureVisibleEventRange(a),c=b?b(a):this.rangeToSegs(a),d=0;d<c.length;d++)e=c[d],e.event=a.event,e.eventStartMS=a.eventStartMS,e.eventDurationMS=a.eventDurationMS;return c},sortSegs:function(a){a.sort(ca(this,"compareSegs"))},compareSegs:function(a,b){return a.eventStartMS-b.eventStartMS||b.eventDurationMS-a.eventDurationMS||b.event.allDay-a.event.allDay||B(a.event,b.event,this.view.eventOrderSpecs)}}),Ma.dataAttrPrefix="";var kb=jb.extend({numbersVisible:!1,bottomCoordPadding:0,breakOnWeeks:null,cellDates:null,dayToCellOffsets:null,rowEls:null,dayEls:null,helperEls:null,constructor:function(){jb.apply(this,arguments),this.cellDuration=b.duration(1,"day")},renderDates:function(a){var b,c,d,e=this.view,f=this.rowCnt,g=this.colCnt,h=f*g,i="";for(b=0;f>b;b++)i+=this.dayRowHtml(b,a);for(this.el.html(i),this.rowEls=this.el.find(".fc-row"),this.dayEls=this.el.find(".fc-day"),c=0;h>c;c++)d=this.getCell(c),e.trigger("dayRender",null,d.start,this.dayEls.eq(c))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(!0),b=this.eventsToSegs(a);this.renderFill("businessHours",b,"bgevent")},dayRowHtml:function(a,b){var c=this.view,d=["fc-row","fc-week",c.widgetContentClass];return b&&d.push("fc-rigid"),'<div class="'+d.join(" ")+'"><div class="fc-bg"><table>'+this.rowHtml("day",a)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.rowHtml("number",a)+"</thead>":"")+"</table></div></div>"},dayCellHtml:function(a){return this.bgCellHtml(a)},computeColHeadFormat:function(){return this.rowCnt>1?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){var a,b,c,d;if(this.updateCellDates(),a=this.cellDates,this.breakOnWeeks){for(b=a[0].day(),d=1;d<a.length&&a[d].day()!=b;d++);c=Math.ceil(a.length/d)}else c=1,d=a.length;this.rowCnt=c,this.colCnt=d},updateCellDates:function(){for(var a=this.view,b=this.start.clone(),c=[],d=-1,e=[];b.isBefore(this.end);)a.isHiddenDay(b)?e.push(d+.5):(d++,e.push(d),c.push(b.clone())),b.add(1,"days");this.cellDates=c,this.dayToCellOffsets=e},computeCellDate:function(a){var b=this.colCnt,c=a.row*b+(this.isRTL?b-a.col-1:a.col);return this.cellDates[c].clone()},getRowEl:function(a){return this.rowEls.eq(a)},getColEl:function(a){return this.dayEls.eq(a)},getCellDayEl:function(a){return this.dayEls.eq(a.row*this.colCnt+a.col)},computeRowCoords:function(){var a=jb.prototype.computeRowCoords.call(this);return a[a.length-1].bottom+=this.bottomCoordPadding,a},rangeToSegs:function(a){var b,c,d,e,f,g,h,i,j,k,l=this.isRTL,m=this.rowCnt,n=this.colCnt,o=[];for(a=this.view.computeDayRange(a),b=this.dateToCellOffset(a.start),c=this.dateToCellOffset(a.end.subtract(1,"days")),d=0;m>d;d++)e=d*n,f=e+n-1,i=Math.max(e,b),j=Math.min(f,c),i=Math.ceil(i),j=Math.floor(j),j>=i&&(g=i===b,h=j===c,i-=e,j-=e,k={row:d,isStart:g,isEnd:h},l?(k.leftCol=n-j-1,k.rightCol=n-i-1):(k.leftCol=i,k.rightCol=j),o.push(k));return o},dateToCellOffset:function(a){var b=this.dayToCellOffsets,c=a.diff(this.start,"days");return 0>c?b[0]-1:c>=b.length?b[b.length-1]+1:b[c]},renderDrag:function(a,b){return this.renderHighlight(this.eventRangeToSegs(a)),b&&!b.el.closest(this.el).length?(this.renderRangeHelper(a,b),this.applyDragOpacity(this.helperEls),!0):void 0},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(a,b){this.renderHighlight(this.eventRangeToSegs(a)),this.renderRangeHelper(a,b)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(b,c){var d,e=[],f=this.eventsToSegs([b]);f=this.renderFgSegEls(f),d=this.renderSegRows(f),this.rowEls.each(function(b,f){var g,h=a(f),i=a('<div class="fc-helper-skeleton"><table/></div>');g=c&&c.row===b?c.el.position().top:h.find(".fc-content-skeleton tbody").position().top,i.css("top",g).find("table").append(d[b].tbodyEl),h.append(i),e.push(i[0])}),this.helperEls=a(e)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(b,c,d){var e,f,g,h=[];for(c=this.renderFillSegEls(b,c),e=0;e<c.length;e++)f=c[e],g=this.renderFillRow(b,f,d),this.rowEls.eq(f.row).append(g),h.push(g[0]);return this.elsByFill[b]=a(h),c},renderFillRow:function(b,c,d){var e,f,g=this.colCnt,h=c.leftCol,i=c.rightCol+1;return d=d||b.toLowerCase(),e=a('<div class="fc-'+d+'-skeleton"><table><tr/></table></div>'),f=e.find("tr"),h>0&&f.append('<td colspan="'+h+'"/>'),f.append(c.el.attr("colspan",i-h)),g>i&&f.append('<td colspan="'+(g-i)+'"/>'),this.bookendCells(f,b),e}});kb.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),jb.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return jb.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(b){var c=a.grep(b,function(a){return a.event.allDay});return jb.prototype.renderBgSegs.call(this,c)},renderFgSegs:function(b){var c;return b=this.renderFgSegEls(b),c=this.rowStructs=this.renderSegRows(b),this.rowEls.each(function(b,d){a(d).find(".fc-content-skeleton > table").append(c[b].tbodyEl)}),b},unrenderFgSegs:function(){for(var a,b=this.rowStructs||[];a=b.pop();)a.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(a){var b,c,d=[];for(b=this.groupSegRows(a),c=0;c<b.length;c++)d.push(this.renderSegRow(c,b[c]));return d},fgSegHtml:function(a,b){var c,d,e=this.view,f=a.event,g=e.isEventDraggable(f),h=!b&&f.allDay&&a.isStart&&e.isEventResizableFromStart(f),i=!b&&f.allDay&&a.isEnd&&e.isEventResizableFromEnd(f),j=this.getSegClasses(a,g,h||i),k=$(this.getEventSkinCss(f)),l="";return j.unshift("fc-day-grid-event","fc-h-event"),a.isStart&&(c=this.getEventTimeText(f),c&&(l='<span class="fc-time">'+Y(c)+"</span>")),d='<span class="fc-title">'+(Y(f.title||"")||" ")+"</span>",'<a class="'+j.join(" ")+'"'+(f.url?' href="'+Y(f.url)+'"':"")+(k?' style="'+k+'"':"")+'><div class="fc-content">'+(this.isRTL?d+" "+l:l+" "+d)+"</div>"+(h?'<div class="fc-resizer fc-start-resizer" />':"")+(i?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(b,c){function d(b){for(;b>g;)k=(r[e-1]||[])[g],k?k.attr("rowspan",parseInt(k.attr("rowspan")||1,10)+1):(k=a("<td/>"),h.append(k)),q[e][g]=k,r[e][g]=k,g++}var e,f,g,h,i,j,k,l=this.colCnt,m=this.buildSegLevels(c),n=Math.max(1,m.length),o=a("<tbody/>"),p=[],q=[],r=[];for(e=0;n>e;e++){if(f=m[e],g=0,h=a("<tr/>"),p.push([]),q.push([]),r.push([]),f)for(i=0;i<f.length;i++){for(j=f[i],d(j.leftCol),k=a('<td class="fc-event-container"/>').append(j.el),j.leftCol!=j.rightCol?k.attr("colspan",j.rightCol-j.leftCol+1):r[e][g]=k;g<=j.rightCol;)q[e][g]=k,p[e][g]=j,g++;h.append(k)}d(l),this.bookendCells(h,"eventSkeleton"),o.append(h)}return{row:b,tbodyEl:o,cellMatrix:q,segMatrix:p,segLevels:m,segs:c}},buildSegLevels:function(a){var b,c,d,e=[];for(this.sortSegs(a),b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&za(c,e[d]);d++);c.level=d,(e[d]||(e[d]=[])).push(c)}for(d=0;d<e.length;d++)e[d].sort(Aa);return e},groupSegRows:function(a){var b,c=[];for(b=0;b<this.rowCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].row].push(a[b]);return c}}),kb.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(a){var b,c,d=this.rowStructs||[];for(b=0;b<d.length;b++)this.unlimitRow(b),c=a?"number"==typeof a?a:this.computeRowLevelLimit(b):!1,c!==!1&&this.limitRow(b,c)},computeRowLevelLimit:function(b){function c(b,c){f=Math.max(f,a(c).outerHeight())}var d,e,f,g=this.rowEls.eq(b),h=g.height(),i=this.rowStructs[b].tbodyEl.children();for(d=0;d<i.length;d++)if(e=i.eq(d).removeClass("fc-limited"),f=0,e.find("> td > :first-child").each(c),e.position().top+f>h)return d;return!1},limitRow:function(b,c){function d(d){for(;d>x;)e=u.getCell(b,x),k=u.getCellSegs(e,c),k.length&&(n=g[c-1][x],t=u.renderMoreLink(e,k),s=a("<div/>").append(t),n.append(s),w.push(s[0])),x++}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=this,v=this.rowStructs[b],w=[],x=0;if(c&&c<v.segLevels.length){for(f=v.segLevels[c-1],g=v.cellMatrix,h=v.tbodyEl.children().slice(c).addClass("fc-limited").get(),i=0;i<f.length;i++){for(j=f[i],d(j.leftCol),m=[],l=0;x<=j.rightCol;)e=this.getCell(b,x),k=this.getCellSegs(e,c),m.push(k),l+=k.length,x++;if(l){for(n=g[c-1][j.leftCol],o=n.attr("rowspan")||1,p=[],q=0;q<m.length;q++)r=a('<td class="fc-more-cell"/>').attr("rowspan",o),k=m[q],e=this.getCell(b,j.leftCol+q),t=this.renderMoreLink(e,[j].concat(k)),s=a("<div/>").append(t),r.append(s),p.push(r[0]),w.push(r[0]);n.addClass("fc-limited").after(a(p)),h.push(n[0])}}d(this.colCnt),v.moreEls=a(w),v.limitedEls=a(h)}},
|
8
|
+
unlimitRow:function(a){var b=this.rowStructs[a];b.moreEls&&(b.moreEls.remove(),b.moreEls=null),b.limitedEls&&(b.limitedEls.removeClass("fc-limited"),b.limitedEls=null)},renderMoreLink:function(b,c){var d=this,e=this.view;return a('<a class="fc-more"/>').text(this.getMoreLinkText(c.length)).on("click",function(f){var g=e.opt("eventLimitClick"),h=b.start,i=a(this),j=d.getCellDayEl(b),k=d.getCellSegs(b),l=d.resliceDaySegs(k,h),m=d.resliceDaySegs(c,h);"function"==typeof g&&(g=e.trigger("eventLimitClick",null,{date:h,dayEl:j,moreEl:i,segs:l,hiddenSegs:m},f)),"popover"===g?d.showSegPopover(b,i,l):"string"==typeof g&&e.calendar.zoomTo(h,g)})},showSegPopover:function(a,b,c){var d,e,f=this,g=this.view,h=b.parent();d=1==this.rowCnt?g.el:this.rowEls.eq(a.row),e={className:"fc-more-popover",content:this.renderSegPopoverContent(a,c),parentEl:this.el,top:d.offset().top,autoHide:!0,viewportConstrain:g.opt("popoverViewportConstrain"),hide:function(){f.segPopover.removeElement(),f.segPopover=null,f.popoverSegs=null}},this.isRTL?e.right=h.offset().left+h.outerWidth()+1:e.left=h.offset().left-1,this.segPopover=new cb(e),this.segPopover.show()},renderSegPopoverContent:function(b,c){var d,e=this.view,f=e.opt("theme"),g=b.start.format(e.opt("dayPopoverFormat")),h=a('<div class="fc-header '+e.widgetHeaderClass+'"><span class="fc-close '+(f?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+Y(g)+'</span><div class="fc-clear"/></div><div class="fc-body '+e.widgetContentClass+'"><div class="fc-event-container"></div></div>'),i=h.find(".fc-event-container");for(c=this.renderFgSegEls(c,!0),this.popoverSegs=c,d=0;d<c.length;d++)c[d].cell=b,i.append(c[d].el);return h},resliceDaySegs:function(b,c){var d=a.map(b,function(a){return a.event}),e=c.clone().stripTime(),f=e.clone().add(1,"days"),g={start:e,end:f};return b=this.eventsToSegs(d,function(a){var b=E(a,g);return b?[b]:[]}),this.sortSegs(b),b},getMoreLinkText:function(a){var b=this.view.opt("eventLimitText");return"function"==typeof b?b(a):"+"+a+" "+b},getCellSegs:function(a,b){for(var c,d=this.rowStructs[a.row].segMatrix,e=b||0,f=[];e<d.length;)c=d[e][a.col],c&&f.push(c),e++;return f}});var lb=jb.extend({slotDuration:null,snapDuration:null,minTime:null,maxTime:null,colDates:null,labelFormat:null,labelInterval:null,dayEls:null,slatEls:null,slatTops:null,helperEl:null,businessHourSegs:null,constructor:function(){jb.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.dayEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr")},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents();this.businessHourSegs=this.renderFill("businessHours",this.eventsToSegs(a),"bgevent")},renderHtml:function(){return'<div class="fc-bg"><table>'+this.rowHtml("slotBg")+'</table></div><div class="fc-slats"><table>'+this.slatRowHtml()+"</table></div>"},slotBgCellHtml:function(a){return this.bgCellHtml(a)},slatRowHtml:function(){for(var a,c,d,e=this.view,f=this.isRTL,g="",h=b.duration(+this.minTime);h<this.maxTime;)a=this.start.clone().time(h),c=ba(L(h,this.labelInterval)),d='<td class="fc-axis fc-time '+e.widgetContentClass+'" '+e.axisStyleAttr()+">"+(c?"<span>"+Y(a.format(this.labelFormat))+"</span>":"")+"</td>",g+="<tr "+(c?"":'class="fc-minor"')+">"+(f?"":d)+'<td class="'+e.widgetContentClass+'"/>'+(f?d:"")+"</tr>",h.add(this.slotDuration);return g},processOptions:function(){var c,d=this.view,e=d.opt("slotDuration"),f=d.opt("snapDuration");e=b.duration(e),f=f?b.duration(f):e,this.slotDuration=e,this.snapDuration=f,this.cellDuration=f,this.minTime=b.duration(d.opt("minTime")),this.maxTime=b.duration(d.opt("maxTime")),c=d.opt("slotLabelFormat"),a.isArray(c)&&(c=c[c.length-1]),this.labelFormat=c||d.opt("axisFormat")||d.opt("smallTimeFormat"),c=d.opt("slotLabelInterval"),this.labelInterval=c?b.duration(c):this.computeLabelInterval(e)},computeLabelInterval:function(a){var c,d,e;for(c=yb.length-1;c>=0;c--)if(d=b.duration(yb[c]),e=L(d,a),ba(e)&&e>1)return d;return b.duration(a)},computeColHeadFormat:function(){return this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},rangeUpdated:function(){var a,b=this.view,c=[];for(a=this.start.clone();a.isBefore(this.end);)c.push(a.clone()),a.add(1,"day"),a=b.skipHiddenDays(a);this.isRTL&&c.reverse(),this.colDates=c,this.colCnt=c.length,this.rowCnt=Math.ceil((this.maxTime-this.minTime)/this.snapDuration)},computeCellDate:function(a){var b=this.colDates[a.col],c=this.computeSnapTime(a.row);return b=this.view.calendar.rezoneDate(b),b.time(c),b},getColEl:function(a){return this.dayEls.eq(a)},computeSnapTime:function(a){return b.duration(this.minTime+this.snapDuration*a)},rangeToSegs:function(a){var b,c,d,e,f=this.colCnt,g=[];for(a={start:a.start.clone().stripZone(),end:a.end.clone().stripZone()},c=0;f>c;c++)d=this.colDates[c],e={start:d.clone().time(this.minTime),end:d.clone().time(this.maxTime)},b=E(a,e),b&&(b.col=c,g.push(b));return g},updateSize:function(a){this.computeSlatTops(),a&&this.updateSegVerticals()},computeRowCoords:function(){var a,b,c=this.el.offset().top,d=[];for(a=0;a<this.rowCnt;a++)b={top:c+this.computeTimeTop(this.computeSnapTime(a))},a>0&&(d[a-1].bottom=b.top),d.push(b);return b.bottom=b.top+this.computeTimeTop(this.computeSnapTime(a)),d},computeDateTop:function(a,c){return this.computeTimeTop(b.duration(a.clone().stripZone()-c.clone().stripTime()))},computeTimeTop:function(a){var b,c,d,e,f=(a-this.minTime)/this.slotDuration;return f=Math.max(0,f),f=Math.min(this.slatEls.length,f),b=Math.floor(f),c=f-b,d=this.slatTops[b],c?(e=this.slatTops[b+1],d+(e-d)*c):d},computeSlatTops:function(){var b,c=[];this.slatEls.each(function(d,e){b=a(e).position().top,c.push(b)}),c.push(b+this.slatEls.last().outerHeight()),this.slatTops=c},renderDrag:function(a,b){return b?(this.renderRangeHelper(a,b),this.applyDragOpacity(this.helperEl),!0):void this.renderHighlight(this.eventRangeToSegs(a))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(a,b){this.renderRangeHelper(a,b)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(b,c){var d,e,f,g,h=this.eventsToSegs([b]);for(h=this.renderFgSegEls(h),d=this.renderSegTable(h),e=0;e<h.length;e++)f=h[e],c&&c.col===f.col&&(g=c.el,f.el.css({left:g.css("left"),right:g.css("right"),"margin-left":g.css("margin-left"),"margin-right":g.css("margin-right")}));this.helperEl=a('<div class="fc-helper-skeleton"/>').append(d).appendTo(this.el)},unrenderHelper:function(){this.helperEl&&(this.helperEl.remove(),this.helperEl=null)},renderSelection:function(a){this.view.opt("selectHelper")?this.renderRangeHelper(a):this.renderHighlight(this.selectionRangeToSegs(a))},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderFill:function(b,c,d){var e,f,g,h,i,j,k,l,m,n;if(c.length){for(c=this.renderFillSegEls(b,c),e=this.groupSegCols(c),d=d||b.toLowerCase(),f=a('<div class="fc-'+d+'-skeleton"><table><tr/></table></div>'),g=f.find("tr"),h=0;h<e.length;h++)if(i=e[h],j=a("<td/>").appendTo(g),i.length)for(k=a('<div class="fc-'+d+'-container"/>').appendTo(j),l=this.colDates[h],m=0;m<i.length;m++)n=i[m],k.append(n.el.css({top:this.computeDateTop(n.start,l),bottom:-this.computeDateTop(n.end,l)}));this.bookendCells(g,b),this.el.append(f),this.elsByFill[b]=f}return c}});lb.mixin({eventSkeletonEl:null,renderFgSegs:function(b){return b=this.renderFgSegEls(b),this.el.append(this.eventSkeletonEl=a('<div class="fc-content-skeleton"/>').append(this.renderSegTable(b))),b},unrenderFgSegs:function(a){this.eventSkeletonEl&&(this.eventSkeletonEl.remove(),this.eventSkeletonEl=null)},renderSegTable:function(b){var c,d,e,f,g,h,i=a("<table><tr/></table>"),j=i.find("tr");for(c=this.groupSegCols(b),this.computeSegVerticals(b),f=0;f<c.length;f++){for(g=c[f],this.placeSlotSegs(g),h=a('<div class="fc-event-container"/>'),d=0;d<g.length;d++)e=g[d],e.el.css(this.generateSegPositionCss(e)),e.bottom-e.top<30&&e.el.addClass("fc-short"),h.append(e.el);j.append(a("<td/>").append(h))}return this.bookendCells(j,"eventSkeleton"),i},placeSlotSegs:function(a){var b,c,d;if(this.sortSegs(a),b=Ba(a),Ca(b),c=b[0]){for(d=0;d<c.length;d++)Da(c[d]);for(d=0;d<c.length;d++)this.computeSlotSegCoords(c[d],0,0)}},computeSlotSegCoords:function(a,b,c){var d,e=a.forwardSegs;if(void 0===a.forwardCoord)for(e.length?(this.sortForwardSlotSegs(e),this.computeSlotSegCoords(e[0],b+1,c),a.forwardCoord=e[0].backwardCoord):a.forwardCoord=1,a.backwardCoord=a.forwardCoord-(a.forwardCoord-c)/(b+1),d=0;d<e.length;d++)this.computeSlotSegCoords(e[d],0,a.forwardCoord)},updateSegVerticals:function(){var a,b=(this.segs||[]).concat(this.businessHourSegs||[]);for(this.computeSegVerticals(b),a=0;a<b.length;a++)b[a].el.css(this.generateSegVerticalCss(b[a]))},computeSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.top=this.computeDateTop(c.start,c.start),c.bottom=this.computeDateTop(c.end,c.start)},fgSegHtml:function(a,b){var c,d,e,f=this.view,g=a.event,h=f.isEventDraggable(g),i=!b&&a.isStart&&f.isEventResizableFromStart(g),j=!b&&a.isEnd&&f.isEventResizableFromEnd(g),k=this.getSegClasses(a,h,i||j),l=$(this.getEventSkinCss(g));return k.unshift("fc-time-grid-event","fc-v-event"),f.isMultiDayEvent(g)?(a.isStart||a.isEnd)&&(c=this.getEventTimeText(a),d=this.getEventTimeText(a,"LT"),e=this.getEventTimeText(a,null,!1)):(c=this.getEventTimeText(g),d=this.getEventTimeText(g,"LT"),e=this.getEventTimeText(g,null,!1)),'<a class="'+k.join(" ")+'"'+(g.url?' href="'+Y(g.url)+'"':"")+(l?' style="'+l+'"':"")+'><div class="fc-content">'+(c?'<div class="fc-time" data-start="'+Y(e)+'" data-full="'+Y(d)+'"><span>'+Y(c)+"</span></div>":"")+(g.title?'<div class="fc-title">'+Y(g.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(j?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},generateSegPositionCss:function(a){var b,c,d=this.view.opt("slotEventOverlap"),e=a.backwardCoord,f=a.forwardCoord,g=this.generateSegVerticalCss(a);return d&&(f=Math.min(1,e+2*(f-e))),this.isRTL?(b=1-f,c=e):(b=e,c=1-f),g.zIndex=a.level+1,g.left=100*b+"%",g.right=100*c+"%",d&&a.forwardPressure&&(g[this.isRTL?"marginLeft":"marginRight"]=20),g},generateSegVerticalCss:function(a){return{top:a.top,bottom:-a.bottom}},groupSegCols:function(a){var b,c=[];for(b=0;b<this.colCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].col].push(a[b]);return c},sortForwardSlotSegs:function(a){a.sort(ca(this,"compareForwardSlotSegs"))},compareForwardSlotSegs:function(a,b){return b.forwardPressure-a.forwardPressure||(a.backwardCoord||0)-(b.backwardCoord||0)||this.compareSegs(a,b)}});var mb=Ma.View=ra.extend({type:null,name:null,title:null,calendar:null,options:null,coordMap:null,el:null,displaying:null,isSkeletonRendered:!1,isEventsRendered:!1,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,eventOrderSpecs:null,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,documentMousedownProxy:null,constructor:function(a,c,d,e){this.calendar=a,this.type=this.name=c,this.options=d,this.intervalDuration=e||b.duration(1,"day"),this.nextDayThreshold=b.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=A(this.opt("eventOrder")),this.documentMousedownProxy=ca(this,"documentMousedown"),this.initialize()},initialize:function(){},opt:function(a){return this.options[a]},trigger:function(a,b){var c=this.calendar;return c.trigger.apply(c,[a,b||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(a){this.setRange(this.computeRange(a))},setRange:function(b){a.extend(this,b),this.updateTitle()},computeRange:function(a){var b,c,d=I(this.intervalDuration),e=a.clone().startOf(d),f=e.clone().add(this.intervalDuration);return/year|month|week|day/.test(d)?(e.stripTime(),f.stripTime()):(e.hasTime()||(e=this.calendar.rezoneDate(e)),f.hasTime()||(f=this.calendar.rezoneDate(f))),b=e.clone(),b=this.skipHiddenDays(b),c=f.clone(),c=this.skipHiddenDays(c,-1,!0),{intervalUnit:d,intervalStart:e,intervalEnd:f,start:b,end:c}},computePrevDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(a,b){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(a)&&(a=this.skipHiddenDays(a,b),a.startOf("day")),a},updateTitle:function(){this.title=this.computeTitle()},computeTitle:function(){return this.formatRange({start:this.intervalStart,end:this.intervalEnd},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(a,b,c){var d=a.end;return d.hasTime()||(d=d.clone().subtract(1)),ma(a.start,d,b,c,this.opt("isRTL"))},setElement:function(a){this.el=a,this.bindGlobalHandlers()},removeElement:function(){this.clear(),this.isSkeletonRendered&&(this.unrenderSkeleton(),this.isSkeletonRendered=!1),this.unbindGlobalHandlers(),this.el.remove()},display:function(b){var c=this,d=null;return this.displaying&&(d=this.queryScroll()),this.clear().then(function(){return c.displaying=a.when(c.displayView(b)).then(function(){c.forceScroll(c.computeInitialScroll(d)),c.triggerRender()})})},clear:function(){var b=this,c=this.displaying;return c?c.then(function(){return b.displaying=null,b.clearEvents(),b.clearView()}):a.when()},displayView:function(a){this.isSkeletonRendered||(this.renderSkeleton(),this.isSkeletonRendered=!0),this.setDate(a),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours()},clearView:function(){this.unselect(),this.triggerUnrender(),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy()},renderSkeleton:function(){},unrenderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},renderBusinessHours:function(){},unrenderBusinessHours:function(){},triggerRender:function(){this.trigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.trigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){a(document).on("mousedown",this.documentMousedownProxy)},unbindGlobalHandlers:function(){a(document).off("mousedown",this.documentMousedownProxy)},initThemingProps:function(){var a=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=a+"-widget-header",this.widgetContentClass=a+"-widget-content",this.highlightStateClass=a+"-state-highlight"},updateSize:function(a){var b;a&&(b=this.queryScroll()),this.updateHeight(a),this.updateWidth(a),a&&this.setScroll(b)},updateWidth:function(a){},updateHeight:function(a){var b=this.calendar;this.setHeight(b.getSuggestedViewHeight(),b.isHeightAuto())},setHeight:function(a,b){},computeScrollerHeight:function(a){var b,c,d=this.scrollerEl;return b=this.el.add(d),b.css({position:"relative",left:-1}),c=this.el.outerHeight()-d.height(),b.css({position:"",left:""}),a-c},computeInitialScroll:function(a){return 0},queryScroll:function(){return this.scrollerEl?this.scrollerEl.scrollTop():void 0},setScroll:function(a){return this.scrollerEl?this.scrollerEl.scrollTop(a):void 0},forceScroll:function(a){var b=this;this.setScroll(a),setTimeout(function(){b.setScroll(a)},0)},displayEvents:function(a){var b=this.queryScroll();this.clearEvents(),this.renderEvents(a),this.isEventsRendered=!0,this.setScroll(b),this.triggerEventRender()},clearEvents:function(){this.isEventsRendered&&(this.triggerEventUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.isEventsRendered=!1)},renderEvents:function(a){},unrenderEvents:function(){},triggerEventRender:function(){this.renderedEventSegEach(function(a){this.trigger("eventAfterRender",a.event,a.event,a.el)}),this.trigger("eventAfterAllRender")},triggerEventUnrender:function(){this.renderedEventSegEach(function(a){this.trigger("eventDestroy",a.event,a.event,a.el)})},resolveEventEl:function(b,c){var d=this.trigger("eventRender",b,b,c);return d===!1?c=null:d&&d!==!0&&(c=a(d)),c},showEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","")},a)},hideEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","hidden")},a)},renderedEventSegEach:function(a,b){var c,d=this.getEventSegs();for(c=0;c<d.length;c++)b&&d[c].event._id!==b._id||d[c].el&&a.call(this,d[c])},getEventSegs:function(){return[]},isEventDraggable:function(a){var b=a.source||{};return X(a.startEditable,b.startEditable,this.opt("eventStartEditable"),a.editable,b.editable,this.opt("editable"))},reportEventDrop:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventDrop(a,g.dateDelta,h,d,e),f.reportEventChange()},triggerEventDrop:function(a,b,c,d,e){this.trigger("eventDrop",d[0],a,b,c,e,{})},reportExternalDrop:function(b,c,d,e,f){var g,h,i=b.eventProps;i&&(g=a.extend({},i,c),h=this.calendar.renderEvent(g,b.stick)[0]),this.triggerExternalDrop(h,c,d,e,f)},triggerExternalDrop:function(a,b,c,d,e){this.trigger("drop",c[0],b.start,d,e),a&&this.trigger("eventReceive",null,a)},renderDrag:function(a,b){},unrenderDrag:function(){},isEventResizableFromStart:function(a){return this.opt("eventResizableFromStart")&&this.isEventResizable(a)},isEventResizableFromEnd:function(a){return this.isEventResizable(a)},isEventResizable:function(a){var b=a.source||{};return X(a.durationEditable,b.durationEditable,this.opt("eventDurationEditable"),a.editable,b.editable,this.opt("editable"))},reportEventResize:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventResize(a,g.durationDelta,h,d,e),f.reportEventChange()},triggerEventResize:function(a,b,c,d,e){this.trigger("eventResize",d[0],a,b,c,e,{})},select:function(a,b){this.unselect(b),this.renderSelection(a),this.reportSelection(a,b)},renderSelection:function(a){},reportSelection:function(a,b){this.isSelected=!0,this.triggerSelect(a,b)},triggerSelect:function(a,b){this.trigger("select",null,a.start,a.end,b)},unselect:function(a){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.trigger("unselect",null,a))},unrenderSelection:function(){},documentMousedown:function(b){var c;this.isSelected&&this.opt("unselectAuto")&&v(b)&&(c=this.opt("unselectCancel"),c&&a(b.target).closest(c).length||this.unselect(b))},triggerDayClick:function(a,b,c){this.trigger("dayClick",b,a.start,c)},initHiddenDays:function(){var b,c=this.opt("hiddenDays")||[],d=[],e=0;for(this.opt("weekends")===!1&&c.push(0,6),b=0;7>b;b++)(d[b]=-1!==a.inArray(b,c))||e++;if(!e)throw"invalid hiddenDays";this.isHiddenDayHash=d},isHiddenDay:function(a){return b.isMoment(a)&&(a=a.day()),this.isHiddenDayHash[a]},skipHiddenDays:function(a,b,c){var d=a.clone();for(b=b||1;this.isHiddenDayHash[(d.day()+(c?b:0)+7)%7];)d.add(b,"days");return d},computeDayRange:function(a){var b,c=a.start.clone().stripTime(),d=a.end,e=null;return d&&(e=d.clone().stripTime(),b=+d.time(),b&&b>=this.nextDayThreshold&&e.add(1,"days")),(!d||c>=e)&&(e=c.clone().add(1,"days")),{start:c,end:e}},isMultiDayEvent:function(a){var b=this.computeDayRange(a);return b.end.diff(b.start,"days")>1}}),nb=Ma.Calendar=ra.extend({dirDefaults:null,langDefaults:null,overrides:null,options:null,viewSpecCache:null,view:null,header:null,loadingLevel:0,constructor:Ga,initialize:function(){},initOptions:function(a){var b,e,f,g;a=d(a),b=a.lang,e=ob[b],e||(b=nb.defaults.lang,e=ob[b]||{}),f=X(a.isRTL,e.isRTL,nb.defaults.isRTL),g=f?nb.rtlDefaults:{},this.dirDefaults=g,this.langDefaults=e,this.overrides=a,this.options=c([nb.defaults,g,e,a]),Ha(this.options),this.viewSpecCache={}},getViewSpec:function(a){var b=this.viewSpecCache;return b[a]||(b[a]=this.buildViewSpec(a))},getUnitViewSpec:function(b){var c,d,e;if(-1!=a.inArray(b,Ra))for(c=this.header.getViewsWithButtons(),a.each(Ma.views,function(a){c.push(a)}),d=0;d<c.length;d++)if(e=this.getViewSpec(c[d]),e&&e.singleUnit==b)return e},buildViewSpec:function(a){for(var d,e,f,g,h=this.overrides.views||{},i=[],j=[],k=[],l=a;l;)d=Na[l],e=h[l],l=null,"function"==typeof d&&(d={"class":d}),d&&(i.unshift(d),j.unshift(d.defaults||{}),f=f||d.duration,l=l||d.type),e&&(k.unshift(e),f=f||e.duration,l=l||e.type);return d=Q(i),d.type=a,d["class"]?(f&&(f=b.duration(f),f.valueOf()&&(d.duration=f,g=I(f),1===f.as(g)&&(d.singleUnit=g,k.unshift(h[g]||{})))),d.defaults=c(j),d.overrides=c(k),this.buildViewSpecOptions(d),this.buildViewSpecButtonText(d,a),d):!1},buildViewSpecOptions:function(a){a.options=c([nb.defaults,a.defaults,this.dirDefaults,this.langDefaults,this.overrides,a.overrides]),Ha(a.options)},buildViewSpecButtonText:function(a,b){function c(c){var d=c.buttonText||{};return d[b]||(a.singleUnit?d[a.singleUnit]:null)}a.buttonTextOverride=c(this.overrides)||a.overrides.buttonText,a.buttonTextDefault=c(this.langDefaults)||c(this.dirDefaults)||a.defaults.buttonText||c(nb.defaults)||(a.duration?this.humanizeDuration(a.duration):null)||b},instantiateView:function(a){var b=this.getViewSpec(a);return new b["class"](this,a,b.options,b.duration)},isValidViewType:function(a){return Boolean(this.getViewSpec(a))},pushLoading:function(){this.loadingLevel++||this.trigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.trigger("loading",null,!1,this.view)},buildSelectRange:function(a,b){return a=this.moment(a),b=b?this.moment(b):a.hasTime()?a.clone().add(this.defaultTimedEventDuration):a.clone().add(this.defaultAllDayEventDuration),{start:a,end:b}}});nb.mixin(bb),nb.defaults={titleRangeSeparator:" - ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},nb.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},nb.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var ob=Ma.langs={};Ma.datepickerLang=function(b,c,d){var e=ob[b]||(ob[b]={});e.isRTL=d.isRTL,e.weekNumberTitle=d.weekHeader,a.each(pb,function(a,b){e[a]=b(d)}),a.datepicker&&(a.datepicker.regional[c]=a.datepicker.regional[b]=d,a.datepicker.regional.en=a.datepicker.regional[""],a.datepicker.setDefaults(d))},Ma.lang=function(b,d){var e,f;e=ob[b]||(ob[b]={}),d&&(e=ob[b]=c([e,d])),f=Ia(b),a.each(qb,function(a,b){null==e[a]&&(e[a]=b(f,e))}),nb.defaults.lang=b};var pb={buttonText:function(a){return{prev:Z(a.prevText),next:Z(a.nextText),today:Z(a.currentText)}},monthYearFormat:function(a){return a.showMonthAfterYear?"YYYY["+a.yearSuffix+"] MMMM":"MMMM YYYY["+a.yearSuffix+"]"}},qb={dayOfMonthFormat:function(a,b){var c=a.longDateFormat("l");return c=c.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),b.isRTL?c+=" ddd":c="ddd "+c,c},mediumTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(a){return a.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"")}},rb={smallDayDateFormat:function(a){return a.isRTL?"D dd":"dd D"},weekFormat:function(a){return a.isRTL?"w[ "+a.weekNumberTitle+"]":"["+a.weekNumberTitle+" ]w"},smallWeekFormat:function(a){return a.isRTL?"w["+a.weekNumberTitle+"]":"["+a.weekNumberTitle+"]w"}};Ma.lang("en",nb.englishDefaults),Ma.sourceNormalizers=[],Ma.sourceFetchers=[];var sb={dataType:"json",cache:!1},tb=1;nb.prototype.getPeerEvents=function(a,b){var c,d,e=this.getEventCache(),f=[];for(c=0;c<e.length;c++)d=e[c],a&&a._id===d._id||f.push(d);return f};var ub=mb.extend({dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headRowEl:null,initialize:function(){this.dayGrid=new kb(this),this.coordMap=this.dayGrid.coordMap},setRange:function(a){mb.prototype.setRange.call(this,a),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(a)},computeRange:function(a){var b=mb.prototype.computeRange.call(this,a);return/year|month/.test(b.intervalUnit)&&(b.start.startOf("week"),b.start=this.skipHiddenDays(b.start),b.end.weekday()&&(b.end.add(1,"week").startOf("week"),b.end=this.skipHiddenDays(b.end,-1,!0))),b},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderHtml()),this.headRowEl=this.el.find("thead .fc-row"),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.coordMap.containerEl=this.scrollerEl,this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(this.hasRigidRows())},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},renderHtml:function(){return'<table><thead class="fc-head"><tr><td class="'+this.widgetHeaderClass+'">'+this.dayGrid.headHtml()+'</td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"><div class="fc-day-grid-container"><div class="fc-day-grid"/></div></td></tr></tbody></table>'},headIntroHtml:function(){return this.weekNumbersVisible?'<th class="fc-week-number '+this.widgetHeaderClass+'" '+this.weekNumberStyleAttr()+"><span>"+Y(this.opt("weekNumberTitle"))+"</span></th>":void 0},numberIntroHtml:function(a){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+"><span>"+this.dayGrid.getCell(a,0).start.format("w")+"</span></td>":void 0},dayIntroHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number '+this.widgetContentClass+'" '+this.weekNumberStyleAttr()+"></td>":void 0},introHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+"></td>":void 0},numberCellHtml:function(a){var b,c=a.start;return this.dayNumbersVisible?(b=this.dayGrid.getDayClasses(c),b.unshift("fc-day-number"),'<td class="'+b.join(" ")+'" data-date="'+c.format()+'">'+c.date()+"</td>"):"<td/>"},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var a=this.opt("eventLimit");return a&&"number"!=typeof a},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=k(this.el.find(".fc-week-number")))},setHeight:function(a,b){var c,d=this.opt("eventLimit");m(this.scrollerEl),f(this.headRowEl),this.dayGrid.removeSegPopover(),d&&"number"==typeof d&&this.dayGrid.limitRows(d),c=this.computeScrollerHeight(a),this.setGridHeight(c,b),d&&"number"!=typeof d&&this.dayGrid.limitRows(d),!b&&l(this.scrollerEl,c)&&(e(this.headRowEl,r(this.scrollerEl)),c=this.computeScrollerHeight(a),this.scrollerEl.height(c))},setGridHeight:function(a,b){b?j(this.dayGrid.rowEls):i(this.dayGrid.rowEls,a,!0)},renderEvents:function(a){this.dayGrid.renderEvents(a),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return this.dayGrid.renderDrag(a,b)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(a){this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),vb=ub.extend({computeRange:function(a){var b,c=ub.prototype.computeRange.call(this,a);return this.isFixedWeeks()&&(b=Math.ceil(c.end.diff(c.start,"weeks",!0)),c.end.add(6-b,"weeks")),c},setGridHeight:function(a,b){b=b||"variable"===this.opt("weekMode"),b&&(a*=this.rowCnt/6),i(this.dayGrid.rowEls,a,!b)},isFixedWeeks:function(){var a=this.opt("weekMode");return a?"fixed"===a:this.opt("fixedWeekCount")}});Na.basic={"class":ub},Na.basicDay={type:"basic",duration:{days:1}},Na.basicWeek={type:"basic",duration:{weeks:1}},Na.month={"class":vb,duration:{months:1},defaults:{fixedWeekCount:!0}};var wb=mb.extend({timeGrid:null,dayGrid:null,axisWidth:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,initialize:function(){this.timeGrid=new lb(this),this.opt("allDaySlot")?(this.dayGrid=new kb(this),this.coordMap=new eb([this.dayGrid.coordMap,this.timeGrid.coordMap])):this.coordMap=this.timeGrid.coordMap},setRange:function(a){mb.prototype.setRange.call(this,a),this.timeGrid.setRange(a),this.dayGrid&&this.dayGrid.setRange(a)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderHtml()),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.coordMap.containerEl=this.scrollerEl,this.timeGrid.setElement(this.el.find(".fc-time-grid")),this.timeGrid.renderDates(),this.bottomRuleEl=a('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement())},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},renderHtml:function(){return'<table><thead class="fc-head"><tr><td class="'+this.widgetHeaderClass+'">'+this.timeGrid.headHtml()+'</td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+'<div class="fc-time-grid-container"><div class="fc-time-grid"/></div></td></tr></tbody></table>'},headIntroHtml:function(){var a,b;return this.opt("weekNumbers")?(a=this.timeGrid.getCell(0).start,b=a.format(this.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+"><span>"+Y(b)+"</span></th>"):'<th class="fc-axis '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+"></th>"},dayIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+"><span>"+(this.opt("allDayHtml")||Y(this.opt("allDayText")))+"</span></td>"},slotBgIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+"></td>";
|
9
|
+
},introHtml:function(){return'<td class="fc-axis" '+this.axisStyleAttr()+"></td>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},updateSize:function(a){this.timeGrid.updateSize(a),mb.prototype.updateSize.call(this,a)},updateWidth:function(){this.axisWidth=k(this.el.find(".fc-axis"))},setHeight:function(a,b){var c,d;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),m(this.scrollerEl),f(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),c=this.opt("eventLimit"),c&&"number"!=typeof c&&(c=xb),c&&this.dayGrid.limitRows(c)),b||(d=this.computeScrollerHeight(a),l(this.scrollerEl,d)?(e(this.noScrollRowEls,r(this.scrollerEl)),d=this.computeScrollerHeight(a),this.scrollerEl.height(d)):(this.scrollerEl.height(d).css("overflow","hidden"),this.bottomRuleEl.show()))},computeInitialScroll:function(){var a=b.duration(this.opt("scrollTime")),c=this.timeGrid.computeTimeTop(a);return c=Math.ceil(c),c&&c++,c},renderEvents:function(a){var b,c,d=[],e=[],f=[];for(c=0;c<a.length;c++)a[c].allDay?d.push(a[c]):e.push(a[c]);b=this.timeGrid.renderEvents(e),this.dayGrid&&(f=this.dayGrid.renderEvents(d)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return a.start.hasTime()?this.timeGrid.renderDrag(a,b):this.dayGrid?this.dayGrid.renderDrag(a,b):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(a){a.start.hasTime()||a.end.hasTime()?this.timeGrid.renderSelection(a):this.dayGrid&&this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),xb=5,yb=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];return Na.agenda={"class":wb,defaults:{allDaySlot:!0,allDayText:"all-day",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Na.agendaDay={type:"agenda",duration:{days:1}},Na.agendaWeek={type:"agenda",duration:{weeks:1}},Ma});
|
@@ -0,0 +1,3381 @@
|
|
1
|
+
/**
|
2
|
+
* jVectorMap version 2.0.4
|
3
|
+
*
|
4
|
+
* Copyright 2011-2014, Kirill Lebedev
|
5
|
+
*
|
6
|
+
*/
|
7
|
+
|
8
|
+
(function( $ ){
|
9
|
+
var apiParams = {
|
10
|
+
set: {
|
11
|
+
colors: 1,
|
12
|
+
values: 1,
|
13
|
+
backgroundColor: 1,
|
14
|
+
scaleColors: 1,
|
15
|
+
normalizeFunction: 1,
|
16
|
+
focus: 1
|
17
|
+
},
|
18
|
+
get: {
|
19
|
+
selectedRegions: 1,
|
20
|
+
selectedMarkers: 1,
|
21
|
+
mapObject: 1,
|
22
|
+
regionName: 1
|
23
|
+
}
|
24
|
+
};
|
25
|
+
|
26
|
+
$.fn.vectorMap = function(options) {
|
27
|
+
var map,
|
28
|
+
methodName,
|
29
|
+
map = this.children('.jvectormap-container').data('mapObject');
|
30
|
+
|
31
|
+
if (options === 'addMap') {
|
32
|
+
jvm.Map.maps[arguments[1]] = arguments[2];
|
33
|
+
} else if ((options === 'set' || options === 'get') && apiParams[options][arguments[1]]) {
|
34
|
+
methodName = arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1);
|
35
|
+
return map[options+methodName].apply(map, Array.prototype.slice.call(arguments, 2));
|
36
|
+
} else {
|
37
|
+
options = options || {};
|
38
|
+
options.container = this;
|
39
|
+
map = new jvm.Map(options);
|
40
|
+
}
|
41
|
+
|
42
|
+
return this;
|
43
|
+
};
|
44
|
+
})( jQuery );
|
45
|
+
/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
|
46
|
+
* Licensed under the MIT License (LICENSE.txt).
|
47
|
+
*
|
48
|
+
* Version: 3.1.9
|
49
|
+
*
|
50
|
+
* Requires: jQuery 1.2.2+
|
51
|
+
*/
|
52
|
+
|
53
|
+
(function (factory) {
|
54
|
+
if ( typeof define === 'function' && define.amd ) {
|
55
|
+
// AMD. Register as an anonymous module.
|
56
|
+
define(['jquery'], factory);
|
57
|
+
} else if (typeof exports === 'object') {
|
58
|
+
// Node/CommonJS style for Browserify
|
59
|
+
module.exports = factory;
|
60
|
+
} else {
|
61
|
+
// Browser globals
|
62
|
+
factory(jQuery);
|
63
|
+
}
|
64
|
+
}(function ($) {
|
65
|
+
|
66
|
+
var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
|
67
|
+
toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
|
68
|
+
['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
|
69
|
+
slice = Array.prototype.slice,
|
70
|
+
nullLowestDeltaTimeout, lowestDelta;
|
71
|
+
|
72
|
+
if ( $.event.fixHooks ) {
|
73
|
+
for ( var i = toFix.length; i; ) {
|
74
|
+
$.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
var special = $.event.special.mousewheel = {
|
79
|
+
version: '3.1.9',
|
80
|
+
|
81
|
+
setup: function() {
|
82
|
+
if ( this.addEventListener ) {
|
83
|
+
for ( var i = toBind.length; i; ) {
|
84
|
+
this.addEventListener( toBind[--i], handler, false );
|
85
|
+
}
|
86
|
+
} else {
|
87
|
+
this.onmousewheel = handler;
|
88
|
+
}
|
89
|
+
// Store the line height and page height for this particular element
|
90
|
+
$.data(this, 'mousewheel-line-height', special.getLineHeight(this));
|
91
|
+
$.data(this, 'mousewheel-page-height', special.getPageHeight(this));
|
92
|
+
},
|
93
|
+
|
94
|
+
teardown: function() {
|
95
|
+
if ( this.removeEventListener ) {
|
96
|
+
for ( var i = toBind.length; i; ) {
|
97
|
+
this.removeEventListener( toBind[--i], handler, false );
|
98
|
+
}
|
99
|
+
} else {
|
100
|
+
this.onmousewheel = null;
|
101
|
+
}
|
102
|
+
},
|
103
|
+
|
104
|
+
getLineHeight: function(elem) {
|
105
|
+
return parseInt($(elem)['offsetParent' in $.fn ? 'offsetParent' : 'parent']().css('fontSize'), 10);
|
106
|
+
},
|
107
|
+
|
108
|
+
getPageHeight: function(elem) {
|
109
|
+
return $(elem).height();
|
110
|
+
},
|
111
|
+
|
112
|
+
settings: {
|
113
|
+
adjustOldDeltas: true
|
114
|
+
}
|
115
|
+
};
|
116
|
+
|
117
|
+
$.fn.extend({
|
118
|
+
mousewheel: function(fn) {
|
119
|
+
return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
|
120
|
+
},
|
121
|
+
|
122
|
+
unmousewheel: function(fn) {
|
123
|
+
return this.unbind('mousewheel', fn);
|
124
|
+
}
|
125
|
+
});
|
126
|
+
|
127
|
+
|
128
|
+
function handler(event) {
|
129
|
+
var orgEvent = event || window.event,
|
130
|
+
args = slice.call(arguments, 1),
|
131
|
+
delta = 0,
|
132
|
+
deltaX = 0,
|
133
|
+
deltaY = 0,
|
134
|
+
absDelta = 0;
|
135
|
+
event = $.event.fix(orgEvent);
|
136
|
+
event.type = 'mousewheel';
|
137
|
+
|
138
|
+
// Old school scrollwheel delta
|
139
|
+
if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
|
140
|
+
if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
|
141
|
+
if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
|
142
|
+
if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
|
143
|
+
|
144
|
+
// Firefox < 17 horizontal scrolling related to DOMMouseScroll event
|
145
|
+
if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
|
146
|
+
deltaX = deltaY * -1;
|
147
|
+
deltaY = 0;
|
148
|
+
}
|
149
|
+
|
150
|
+
// Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
|
151
|
+
delta = deltaY === 0 ? deltaX : deltaY;
|
152
|
+
|
153
|
+
// New school wheel delta (wheel event)
|
154
|
+
if ( 'deltaY' in orgEvent ) {
|
155
|
+
deltaY = orgEvent.deltaY * -1;
|
156
|
+
delta = deltaY;
|
157
|
+
}
|
158
|
+
if ( 'deltaX' in orgEvent ) {
|
159
|
+
deltaX = orgEvent.deltaX;
|
160
|
+
if ( deltaY === 0 ) { delta = deltaX * -1; }
|
161
|
+
}
|
162
|
+
|
163
|
+
// No change actually happened, no reason to go any further
|
164
|
+
if ( deltaY === 0 && deltaX === 0 ) { return; }
|
165
|
+
|
166
|
+
// Need to convert lines and pages to pixels if we aren't already in pixels
|
167
|
+
// There are three delta modes:
|
168
|
+
// * deltaMode 0 is by pixels, nothing to do
|
169
|
+
// * deltaMode 1 is by lines
|
170
|
+
// * deltaMode 2 is by pages
|
171
|
+
if ( orgEvent.deltaMode === 1 ) {
|
172
|
+
var lineHeight = $.data(this, 'mousewheel-line-height');
|
173
|
+
delta *= lineHeight;
|
174
|
+
deltaY *= lineHeight;
|
175
|
+
deltaX *= lineHeight;
|
176
|
+
} else if ( orgEvent.deltaMode === 2 ) {
|
177
|
+
var pageHeight = $.data(this, 'mousewheel-page-height');
|
178
|
+
delta *= pageHeight;
|
179
|
+
deltaY *= pageHeight;
|
180
|
+
deltaX *= pageHeight;
|
181
|
+
}
|
182
|
+
|
183
|
+
// Store lowest absolute delta to normalize the delta values
|
184
|
+
absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
|
185
|
+
|
186
|
+
if ( !lowestDelta || absDelta < lowestDelta ) {
|
187
|
+
lowestDelta = absDelta;
|
188
|
+
|
189
|
+
// Adjust older deltas if necessary
|
190
|
+
if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
|
191
|
+
lowestDelta /= 40;
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
// Adjust older deltas if necessary
|
196
|
+
if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
|
197
|
+
// Divide all the things by 40!
|
198
|
+
delta /= 40;
|
199
|
+
deltaX /= 40;
|
200
|
+
deltaY /= 40;
|
201
|
+
}
|
202
|
+
|
203
|
+
// Get a whole, normalized value for the deltas
|
204
|
+
delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
|
205
|
+
deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
|
206
|
+
deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
|
207
|
+
|
208
|
+
// Add information to the event object
|
209
|
+
event.deltaX = deltaX;
|
210
|
+
event.deltaY = deltaY;
|
211
|
+
event.deltaFactor = lowestDelta;
|
212
|
+
// Go ahead and set deltaMode to 0 since we converted to pixels
|
213
|
+
// Although this is a little odd since we overwrite the deltaX/Y
|
214
|
+
// properties with normalized deltas.
|
215
|
+
event.deltaMode = 0;
|
216
|
+
|
217
|
+
// Add event and delta to the front of the arguments
|
218
|
+
args.unshift(event, delta, deltaX, deltaY);
|
219
|
+
|
220
|
+
// Clearout lowestDelta after sometime to better
|
221
|
+
// handle multiple device types that give different
|
222
|
+
// a different lowestDelta
|
223
|
+
// Ex: trackpad = 3 and mouse wheel = 120
|
224
|
+
if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
|
225
|
+
nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
|
226
|
+
|
227
|
+
return ($.event.dispatch || $.event.handle).apply(this, args);
|
228
|
+
}
|
229
|
+
|
230
|
+
function nullLowestDelta() {
|
231
|
+
lowestDelta = null;
|
232
|
+
}
|
233
|
+
|
234
|
+
function shouldAdjustOldDeltas(orgEvent, absDelta) {
|
235
|
+
// If this is an older event and the delta is divisable by 120,
|
236
|
+
// then we are assuming that the browser is treating this as an
|
237
|
+
// older mouse wheel event and that we should divide the deltas
|
238
|
+
// by 40 to try and get a more usable deltaFactor.
|
239
|
+
// Side note, this actually impacts the reported scroll distance
|
240
|
+
// in older browsers and can cause scrolling to be slower than native.
|
241
|
+
// Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
|
242
|
+
return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
|
243
|
+
}
|
244
|
+
|
245
|
+
}));/**
|
246
|
+
* @namespace jvm Holds core methods and classes used by jVectorMap.
|
247
|
+
*/
|
248
|
+
var jvm = {
|
249
|
+
|
250
|
+
/**
|
251
|
+
* Inherits child's prototype from the parent's one.
|
252
|
+
* @param {Function} child
|
253
|
+
* @param {Function} parent
|
254
|
+
*/
|
255
|
+
inherits: function(child, parent) {
|
256
|
+
function temp() {}
|
257
|
+
temp.prototype = parent.prototype;
|
258
|
+
child.prototype = new temp();
|
259
|
+
child.prototype.constructor = child;
|
260
|
+
child.parentClass = parent;
|
261
|
+
},
|
262
|
+
|
263
|
+
/**
|
264
|
+
* Mixes in methods from the source constructor to the target one.
|
265
|
+
* @param {Function} target
|
266
|
+
* @param {Function} source
|
267
|
+
*/
|
268
|
+
mixin: function(target, source){
|
269
|
+
var prop;
|
270
|
+
|
271
|
+
for (prop in source.prototype) {
|
272
|
+
if (source.prototype.hasOwnProperty(prop)) {
|
273
|
+
target.prototype[prop] = source.prototype[prop];
|
274
|
+
}
|
275
|
+
}
|
276
|
+
},
|
277
|
+
|
278
|
+
min: function(values){
|
279
|
+
var min = Number.MAX_VALUE,
|
280
|
+
i;
|
281
|
+
|
282
|
+
if (values instanceof Array) {
|
283
|
+
for (i = 0; i < values.length; i++) {
|
284
|
+
if (values[i] < min) {
|
285
|
+
min = values[i];
|
286
|
+
}
|
287
|
+
}
|
288
|
+
} else {
|
289
|
+
for (i in values) {
|
290
|
+
if (values[i] < min) {
|
291
|
+
min = values[i];
|
292
|
+
}
|
293
|
+
}
|
294
|
+
}
|
295
|
+
return min;
|
296
|
+
},
|
297
|
+
|
298
|
+
max: function(values){
|
299
|
+
var max = Number.MIN_VALUE,
|
300
|
+
i;
|
301
|
+
|
302
|
+
if (values instanceof Array) {
|
303
|
+
for (i = 0; i < values.length; i++) {
|
304
|
+
if (values[i] > max) {
|
305
|
+
max = values[i];
|
306
|
+
}
|
307
|
+
}
|
308
|
+
} else {
|
309
|
+
for (i in values) {
|
310
|
+
if (values[i] > max) {
|
311
|
+
max = values[i];
|
312
|
+
}
|
313
|
+
}
|
314
|
+
}
|
315
|
+
return max;
|
316
|
+
},
|
317
|
+
|
318
|
+
keys: function(object){
|
319
|
+
var keys = [],
|
320
|
+
key;
|
321
|
+
|
322
|
+
for (key in object) {
|
323
|
+
keys.push(key);
|
324
|
+
}
|
325
|
+
return keys;
|
326
|
+
},
|
327
|
+
|
328
|
+
values: function(object){
|
329
|
+
var values = [],
|
330
|
+
key,
|
331
|
+
i;
|
332
|
+
|
333
|
+
for (i = 0; i < arguments.length; i++) {
|
334
|
+
object = arguments[i];
|
335
|
+
for (key in object) {
|
336
|
+
values.push(object[key]);
|
337
|
+
}
|
338
|
+
}
|
339
|
+
return values;
|
340
|
+
},
|
341
|
+
|
342
|
+
whenImageLoaded: function(url){
|
343
|
+
var deferred = new jvm.$.Deferred(),
|
344
|
+
img = jvm.$('<img/>');
|
345
|
+
|
346
|
+
img.error(function(){
|
347
|
+
deferred.reject();
|
348
|
+
}).load(function(){
|
349
|
+
deferred.resolve(img);
|
350
|
+
});
|
351
|
+
img.attr('src', url);
|
352
|
+
|
353
|
+
return deferred;
|
354
|
+
},
|
355
|
+
|
356
|
+
isImageUrl: function(s){
|
357
|
+
return /\.\w{3,4}$/.test(s);
|
358
|
+
}
|
359
|
+
};
|
360
|
+
|
361
|
+
jvm.$ = jQuery;
|
362
|
+
|
363
|
+
/**
|
364
|
+
* indexOf polyfill for IE < 9
|
365
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
|
366
|
+
*/
|
367
|
+
if (!Array.prototype.indexOf) {
|
368
|
+
Array.prototype.indexOf = function (searchElement, fromIndex) {
|
369
|
+
|
370
|
+
var k;
|
371
|
+
|
372
|
+
// 1. Let O be the result of calling ToObject passing
|
373
|
+
// the this value as the argument.
|
374
|
+
if (this == null) {
|
375
|
+
throw new TypeError('"this" is null or not defined');
|
376
|
+
}
|
377
|
+
|
378
|
+
var O = Object(this);
|
379
|
+
|
380
|
+
// 2. Let lenValue be the result of calling the Get
|
381
|
+
// internal method of O with the argument "length".
|
382
|
+
// 3. Let len be ToUint32(lenValue).
|
383
|
+
var len = O.length >>> 0;
|
384
|
+
|
385
|
+
// 4. If len is 0, return -1.
|
386
|
+
if (len === 0) {
|
387
|
+
return -1;
|
388
|
+
}
|
389
|
+
|
390
|
+
// 5. If argument fromIndex was passed let n be
|
391
|
+
// ToInteger(fromIndex); else let n be 0.
|
392
|
+
var n = +fromIndex || 0;
|
393
|
+
|
394
|
+
if (Math.abs(n) === Infinity) {
|
395
|
+
n = 0;
|
396
|
+
}
|
397
|
+
|
398
|
+
// 6. If n >= len, return -1.
|
399
|
+
if (n >= len) {
|
400
|
+
return -1;
|
401
|
+
}
|
402
|
+
|
403
|
+
// 7. If n >= 0, then Let k be n.
|
404
|
+
// 8. Else, n<0, Let k be len - abs(n).
|
405
|
+
// If k is less than 0, then let k be 0.
|
406
|
+
k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
|
407
|
+
|
408
|
+
// 9. Repeat, while k < len
|
409
|
+
while (k < len) {
|
410
|
+
// a. Let Pk be ToString(k).
|
411
|
+
// This is implicit for LHS operands of the in operator
|
412
|
+
// b. Let kPresent be the result of calling the
|
413
|
+
// HasProperty internal method of O with argument Pk.
|
414
|
+
// This step can be combined with c
|
415
|
+
// c. If kPresent is true, then
|
416
|
+
// i. Let elementK be the result of calling the Get
|
417
|
+
// internal method of O with the argument ToString(k).
|
418
|
+
// ii. Let same be the result of applying the
|
419
|
+
// Strict Equality Comparison Algorithm to
|
420
|
+
// searchElement and elementK.
|
421
|
+
// iii. If same is true, return k.
|
422
|
+
if (k in O && O[k] === searchElement) {
|
423
|
+
return k;
|
424
|
+
}
|
425
|
+
k++;
|
426
|
+
}
|
427
|
+
return -1;
|
428
|
+
};
|
429
|
+
}/**
|
430
|
+
* Basic wrapper for DOM element.
|
431
|
+
* @constructor
|
432
|
+
* @param {String} name Tag name of the element
|
433
|
+
* @param {Object} config Set of parameters to initialize element with
|
434
|
+
*/
|
435
|
+
jvm.AbstractElement = function(name, config){
|
436
|
+
/**
|
437
|
+
* Underlying DOM element
|
438
|
+
* @type {DOMElement}
|
439
|
+
* @private
|
440
|
+
*/
|
441
|
+
this.node = this.createElement(name);
|
442
|
+
|
443
|
+
/**
|
444
|
+
* Name of underlying element
|
445
|
+
* @type {String}
|
446
|
+
* @private
|
447
|
+
*/
|
448
|
+
this.name = name;
|
449
|
+
|
450
|
+
/**
|
451
|
+
* Internal store of attributes
|
452
|
+
* @type {Object}
|
453
|
+
* @private
|
454
|
+
*/
|
455
|
+
this.properties = {};
|
456
|
+
|
457
|
+
if (config) {
|
458
|
+
this.set(config);
|
459
|
+
}
|
460
|
+
};
|
461
|
+
|
462
|
+
/**
|
463
|
+
* Set attribute of the underlying DOM element.
|
464
|
+
* @param {String} name Name of attribute
|
465
|
+
* @param {Number|String} config Set of parameters to initialize element with
|
466
|
+
*/
|
467
|
+
jvm.AbstractElement.prototype.set = function(property, value){
|
468
|
+
var key;
|
469
|
+
|
470
|
+
if (typeof property === 'object') {
|
471
|
+
for (key in property) {
|
472
|
+
this.properties[key] = property[key];
|
473
|
+
this.applyAttr(key, property[key]);
|
474
|
+
}
|
475
|
+
} else {
|
476
|
+
this.properties[property] = value;
|
477
|
+
this.applyAttr(property, value);
|
478
|
+
}
|
479
|
+
};
|
480
|
+
|
481
|
+
/**
|
482
|
+
* Returns value of attribute.
|
483
|
+
* @param {String} name Name of attribute
|
484
|
+
*/
|
485
|
+
jvm.AbstractElement.prototype.get = function(property){
|
486
|
+
return this.properties[property];
|
487
|
+
};
|
488
|
+
|
489
|
+
/**
|
490
|
+
* Applies attribute value to the underlying DOM element.
|
491
|
+
* @param {String} name Name of attribute
|
492
|
+
* @param {Number|String} config Value of attribute to apply
|
493
|
+
* @private
|
494
|
+
*/
|
495
|
+
jvm.AbstractElement.prototype.applyAttr = function(property, value){
|
496
|
+
this.node.setAttribute(property, value);
|
497
|
+
};
|
498
|
+
|
499
|
+
jvm.AbstractElement.prototype.remove = function(){
|
500
|
+
jvm.$(this.node).remove();
|
501
|
+
};/**
|
502
|
+
* Implements abstract vector canvas.
|
503
|
+
* @constructor
|
504
|
+
* @param {HTMLElement} container Container to put element to.
|
505
|
+
* @param {Number} width Width of canvas.
|
506
|
+
* @param {Number} height Height of canvas.
|
507
|
+
*/
|
508
|
+
jvm.AbstractCanvasElement = function(container, width, height){
|
509
|
+
this.container = container;
|
510
|
+
this.setSize(width, height);
|
511
|
+
this.rootElement = new jvm[this.classPrefix+'GroupElement']();
|
512
|
+
this.node.appendChild( this.rootElement.node );
|
513
|
+
this.container.appendChild(this.node);
|
514
|
+
}
|
515
|
+
|
516
|
+
/**
|
517
|
+
* Add element to the certain group inside of the canvas.
|
518
|
+
* @param {HTMLElement} element Element to add to canvas.
|
519
|
+
* @param {HTMLElement} group Group to add element into or into root group if not provided.
|
520
|
+
*/
|
521
|
+
jvm.AbstractCanvasElement.prototype.add = function(element, group){
|
522
|
+
group = group || this.rootElement;
|
523
|
+
group.add(element);
|
524
|
+
element.canvas = this;
|
525
|
+
}
|
526
|
+
|
527
|
+
/**
|
528
|
+
* Create path and add it to the canvas.
|
529
|
+
* @param {Object} config Parameters of path to create.
|
530
|
+
* @param {Object} style Styles of the path to create.
|
531
|
+
* @param {HTMLElement} group Group to add path into.
|
532
|
+
*/
|
533
|
+
jvm.AbstractCanvasElement.prototype.addPath = function(config, style, group){
|
534
|
+
var el = new jvm[this.classPrefix+'PathElement'](config, style);
|
535
|
+
|
536
|
+
this.add(el, group);
|
537
|
+
return el;
|
538
|
+
};
|
539
|
+
|
540
|
+
/**
|
541
|
+
* Create circle and add it to the canvas.
|
542
|
+
* @param {Object} config Parameters of path to create.
|
543
|
+
* @param {Object} style Styles of the path to create.
|
544
|
+
* @param {HTMLElement} group Group to add circle into.
|
545
|
+
*/
|
546
|
+
jvm.AbstractCanvasElement.prototype.addCircle = function(config, style, group){
|
547
|
+
var el = new jvm[this.classPrefix+'CircleElement'](config, style);
|
548
|
+
|
549
|
+
this.add(el, group);
|
550
|
+
return el;
|
551
|
+
};
|
552
|
+
|
553
|
+
/**
|
554
|
+
* Create circle and add it to the canvas.
|
555
|
+
* @param {Object} config Parameters of path to create.
|
556
|
+
* @param {Object} style Styles of the path to create.
|
557
|
+
* @param {HTMLElement} group Group to add circle into.
|
558
|
+
*/
|
559
|
+
jvm.AbstractCanvasElement.prototype.addImage = function(config, style, group){
|
560
|
+
var el = new jvm[this.classPrefix+'ImageElement'](config, style);
|
561
|
+
|
562
|
+
this.add(el, group);
|
563
|
+
return el;
|
564
|
+
};
|
565
|
+
|
566
|
+
/**
|
567
|
+
* Create text and add it to the canvas.
|
568
|
+
* @param {Object} config Parameters of path to create.
|
569
|
+
* @param {Object} style Styles of the path to create.
|
570
|
+
* @param {HTMLElement} group Group to add circle into.
|
571
|
+
*/
|
572
|
+
jvm.AbstractCanvasElement.prototype.addText = function(config, style, group){
|
573
|
+
var el = new jvm[this.classPrefix+'TextElement'](config, style);
|
574
|
+
|
575
|
+
this.add(el, group);
|
576
|
+
return el;
|
577
|
+
};
|
578
|
+
|
579
|
+
/**
|
580
|
+
* Add group to the another group inside of the canvas.
|
581
|
+
* @param {HTMLElement} group Group to add circle into or root group if not provided.
|
582
|
+
*/
|
583
|
+
jvm.AbstractCanvasElement.prototype.addGroup = function(parentGroup){
|
584
|
+
var el = new jvm[this.classPrefix+'GroupElement']();
|
585
|
+
|
586
|
+
if (parentGroup) {
|
587
|
+
parentGroup.node.appendChild(el.node);
|
588
|
+
} else {
|
589
|
+
this.node.appendChild(el.node);
|
590
|
+
}
|
591
|
+
el.canvas = this;
|
592
|
+
return el;
|
593
|
+
};/**
|
594
|
+
* Abstract shape element. Shape element represents some visual vector or raster object.
|
595
|
+
* @constructor
|
596
|
+
* @param {String} name Tag name of the element.
|
597
|
+
* @param {Object} config Set of parameters to initialize element with.
|
598
|
+
* @param {Object} style Object with styles to set on element initialization.
|
599
|
+
*/
|
600
|
+
jvm.AbstractShapeElement = function(name, config, style){
|
601
|
+
this.style = style || {};
|
602
|
+
this.style.current = this.style.current || {};
|
603
|
+
this.isHovered = false;
|
604
|
+
this.isSelected = false;
|
605
|
+
this.updateStyle();
|
606
|
+
};
|
607
|
+
|
608
|
+
/**
|
609
|
+
* Set element's style.
|
610
|
+
* @param {Object|String} property Could be string to set only one property or object to set several style properties at once.
|
611
|
+
* @param {String} value Value to set in case only one property should be set.
|
612
|
+
*/
|
613
|
+
jvm.AbstractShapeElement.prototype.setStyle = function(property, value){
|
614
|
+
var styles = {};
|
615
|
+
|
616
|
+
if (typeof property === 'object') {
|
617
|
+
styles = property;
|
618
|
+
} else {
|
619
|
+
styles[property] = value;
|
620
|
+
}
|
621
|
+
jvm.$.extend(this.style.current, styles);
|
622
|
+
this.updateStyle();
|
623
|
+
};
|
624
|
+
|
625
|
+
|
626
|
+
jvm.AbstractShapeElement.prototype.updateStyle = function(){
|
627
|
+
var attrs = {};
|
628
|
+
|
629
|
+
jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial);
|
630
|
+
jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current);
|
631
|
+
if (this.isHovered) {
|
632
|
+
jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover);
|
633
|
+
}
|
634
|
+
if (this.isSelected) {
|
635
|
+
jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected);
|
636
|
+
if (this.isHovered) {
|
637
|
+
jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover);
|
638
|
+
}
|
639
|
+
}
|
640
|
+
this.set(attrs);
|
641
|
+
};
|
642
|
+
|
643
|
+
jvm.AbstractShapeElement.mergeStyles = function(styles, newStyles){
|
644
|
+
var key;
|
645
|
+
|
646
|
+
newStyles = newStyles || {};
|
647
|
+
for (key in newStyles) {
|
648
|
+
if (newStyles[key] === null) {
|
649
|
+
delete styles[key];
|
650
|
+
} else {
|
651
|
+
styles[key] = newStyles[key];
|
652
|
+
}
|
653
|
+
}
|
654
|
+
}/**
|
655
|
+
* Wrapper for SVG element.
|
656
|
+
* @constructor
|
657
|
+
* @extends jvm.AbstractElement
|
658
|
+
* @param {String} name Tag name of the element
|
659
|
+
* @param {Object} config Set of parameters to initialize element with
|
660
|
+
*/
|
661
|
+
|
662
|
+
jvm.SVGElement = function(name, config){
|
663
|
+
jvm.SVGElement.parentClass.apply(this, arguments);
|
664
|
+
}
|
665
|
+
|
666
|
+
jvm.inherits(jvm.SVGElement, jvm.AbstractElement);
|
667
|
+
|
668
|
+
jvm.SVGElement.svgns = "http://www.w3.org/2000/svg";
|
669
|
+
|
670
|
+
/**
|
671
|
+
* Creates DOM element.
|
672
|
+
* @param {String} tagName Name of element
|
673
|
+
* @private
|
674
|
+
* @returns DOMElement
|
675
|
+
*/
|
676
|
+
jvm.SVGElement.prototype.createElement = function( tagName ){
|
677
|
+
return document.createElementNS( jvm.SVGElement.svgns, tagName );
|
678
|
+
};
|
679
|
+
|
680
|
+
/**
|
681
|
+
* Adds CSS class for underlying DOM element.
|
682
|
+
* @param {String} className Name of CSS class name
|
683
|
+
*/
|
684
|
+
jvm.SVGElement.prototype.addClass = function( className ){
|
685
|
+
this.node.setAttribute('class', className);
|
686
|
+
};
|
687
|
+
|
688
|
+
/**
|
689
|
+
* Returns constructor for element by name prefixed with 'VML'.
|
690
|
+
* @param {String} ctr Name of basic constructor to return
|
691
|
+
* proper implementation for.
|
692
|
+
* @returns Function
|
693
|
+
* @private
|
694
|
+
*/
|
695
|
+
jvm.SVGElement.prototype.getElementCtr = function( ctr ){
|
696
|
+
return jvm['SVG'+ctr];
|
697
|
+
};
|
698
|
+
|
699
|
+
jvm.SVGElement.prototype.getBBox = function(){
|
700
|
+
return this.node.getBBox();
|
701
|
+
};jvm.SVGGroupElement = function(){
|
702
|
+
jvm.SVGGroupElement.parentClass.call(this, 'g');
|
703
|
+
}
|
704
|
+
|
705
|
+
jvm.inherits(jvm.SVGGroupElement, jvm.SVGElement);
|
706
|
+
|
707
|
+
jvm.SVGGroupElement.prototype.add = function(element){
|
708
|
+
this.node.appendChild( element.node );
|
709
|
+
};jvm.SVGCanvasElement = function(container, width, height){
|
710
|
+
this.classPrefix = 'SVG';
|
711
|
+
jvm.SVGCanvasElement.parentClass.call(this, 'svg');
|
712
|
+
|
713
|
+
this.defsElement = new jvm.SVGElement('defs');
|
714
|
+
this.node.appendChild( this.defsElement.node );
|
715
|
+
|
716
|
+
jvm.AbstractCanvasElement.apply(this, arguments);
|
717
|
+
}
|
718
|
+
|
719
|
+
jvm.inherits(jvm.SVGCanvasElement, jvm.SVGElement);
|
720
|
+
jvm.mixin(jvm.SVGCanvasElement, jvm.AbstractCanvasElement);
|
721
|
+
|
722
|
+
jvm.SVGCanvasElement.prototype.setSize = function(width, height){
|
723
|
+
this.width = width;
|
724
|
+
this.height = height;
|
725
|
+
this.node.setAttribute('width', width);
|
726
|
+
this.node.setAttribute('height', height);
|
727
|
+
};
|
728
|
+
|
729
|
+
jvm.SVGCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) {
|
730
|
+
this.scale = scale;
|
731
|
+
this.transX = transX;
|
732
|
+
this.transY = transY;
|
733
|
+
this.rootElement.node.setAttribute('transform', 'scale('+scale+') translate('+transX+', '+transY+')');
|
734
|
+
};jvm.SVGShapeElement = function(name, config, style){
|
735
|
+
jvm.SVGShapeElement.parentClass.call(this, name, config);
|
736
|
+
jvm.AbstractShapeElement.apply(this, arguments);
|
737
|
+
};
|
738
|
+
|
739
|
+
jvm.inherits(jvm.SVGShapeElement, jvm.SVGElement);
|
740
|
+
jvm.mixin(jvm.SVGShapeElement, jvm.AbstractShapeElement);
|
741
|
+
|
742
|
+
jvm.SVGShapeElement.prototype.applyAttr = function(attr, value){
|
743
|
+
var patternEl,
|
744
|
+
imageEl,
|
745
|
+
that = this;
|
746
|
+
|
747
|
+
if (attr === 'fill' && jvm.isImageUrl(value)) {
|
748
|
+
if (!jvm.SVGShapeElement.images[value]) {
|
749
|
+
jvm.whenImageLoaded(value).then(function(img){
|
750
|
+
imageEl = new jvm.SVGElement('image');
|
751
|
+
imageEl.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value);
|
752
|
+
imageEl.applyAttr('x', '0');
|
753
|
+
imageEl.applyAttr('y', '0');
|
754
|
+
imageEl.applyAttr('width', img[0].width);
|
755
|
+
imageEl.applyAttr('height', img[0].height);
|
756
|
+
|
757
|
+
patternEl = new jvm.SVGElement('pattern');
|
758
|
+
patternEl.applyAttr('id', 'image'+jvm.SVGShapeElement.imageCounter);
|
759
|
+
patternEl.applyAttr('x', 0);
|
760
|
+
patternEl.applyAttr('y', 0);
|
761
|
+
patternEl.applyAttr('width', img[0].width / 2);
|
762
|
+
patternEl.applyAttr('height', img[0].height / 2);
|
763
|
+
patternEl.applyAttr('viewBox', '0 0 '+img[0].width+' '+img[0].height);
|
764
|
+
patternEl.applyAttr('patternUnits', 'userSpaceOnUse');
|
765
|
+
patternEl.node.appendChild( imageEl.node );
|
766
|
+
|
767
|
+
that.canvas.defsElement.node.appendChild( patternEl.node );
|
768
|
+
|
769
|
+
jvm.SVGShapeElement.images[value] = jvm.SVGShapeElement.imageCounter++;
|
770
|
+
|
771
|
+
that.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')');
|
772
|
+
});
|
773
|
+
} else {
|
774
|
+
this.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')');
|
775
|
+
}
|
776
|
+
} else {
|
777
|
+
jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);
|
778
|
+
}
|
779
|
+
};
|
780
|
+
|
781
|
+
jvm.SVGShapeElement.imageCounter = 1;
|
782
|
+
jvm.SVGShapeElement.images = {};jvm.SVGPathElement = function(config, style){
|
783
|
+
jvm.SVGPathElement.parentClass.call(this, 'path', config, style);
|
784
|
+
this.node.setAttribute('fill-rule', 'evenodd');
|
785
|
+
}
|
786
|
+
|
787
|
+
jvm.inherits(jvm.SVGPathElement, jvm.SVGShapeElement);jvm.SVGCircleElement = function(config, style){
|
788
|
+
jvm.SVGCircleElement.parentClass.call(this, 'circle', config, style);
|
789
|
+
};
|
790
|
+
|
791
|
+
jvm.inherits(jvm.SVGCircleElement, jvm.SVGShapeElement);jvm.SVGImageElement = function(config, style){
|
792
|
+
jvm.SVGImageElement.parentClass.call(this, 'image', config, style);
|
793
|
+
};
|
794
|
+
|
795
|
+
jvm.inherits(jvm.SVGImageElement, jvm.SVGShapeElement);
|
796
|
+
|
797
|
+
jvm.SVGImageElement.prototype.applyAttr = function(attr, value){
|
798
|
+
var that = this;
|
799
|
+
|
800
|
+
if (attr == 'image') {
|
801
|
+
jvm.whenImageLoaded(value).then(function(img){
|
802
|
+
that.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value);
|
803
|
+
that.width = img[0].width;
|
804
|
+
that.height = img[0].height;
|
805
|
+
that.applyAttr('width', that.width);
|
806
|
+
that.applyAttr('height', that.height);
|
807
|
+
|
808
|
+
that.applyAttr('x', that.cx - that.width / 2);
|
809
|
+
that.applyAttr('y', that.cy - that.height / 2);
|
810
|
+
|
811
|
+
jvm.$(that.node).trigger('imageloaded', [img]);
|
812
|
+
});
|
813
|
+
} else if(attr == 'cx') {
|
814
|
+
this.cx = value;
|
815
|
+
if (this.width) {
|
816
|
+
this.applyAttr('x', value - this.width / 2);
|
817
|
+
}
|
818
|
+
} else if(attr == 'cy') {
|
819
|
+
this.cy = value;
|
820
|
+
if (this.height) {
|
821
|
+
this.applyAttr('y', value - this.height / 2);
|
822
|
+
}
|
823
|
+
} else {
|
824
|
+
jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this, arguments);
|
825
|
+
}
|
826
|
+
};jvm.SVGTextElement = function(config, style){
|
827
|
+
jvm.SVGTextElement.parentClass.call(this, 'text', config, style);
|
828
|
+
}
|
829
|
+
|
830
|
+
jvm.inherits(jvm.SVGTextElement, jvm.SVGShapeElement);
|
831
|
+
|
832
|
+
jvm.SVGTextElement.prototype.applyAttr = function(attr, value){
|
833
|
+
if (attr === 'text') {
|
834
|
+
this.node.textContent = value;
|
835
|
+
} else {
|
836
|
+
jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this, arguments);
|
837
|
+
}
|
838
|
+
};/**
|
839
|
+
* Wrapper for VML element.
|
840
|
+
* @constructor
|
841
|
+
* @extends jvm.AbstractElement
|
842
|
+
* @param {String} name Tag name of the element
|
843
|
+
* @param {Object} config Set of parameters to initialize element with
|
844
|
+
*/
|
845
|
+
|
846
|
+
jvm.VMLElement = function(name, config){
|
847
|
+
if (!jvm.VMLElement.VMLInitialized) {
|
848
|
+
jvm.VMLElement.initializeVML();
|
849
|
+
}
|
850
|
+
|
851
|
+
jvm.VMLElement.parentClass.apply(this, arguments);
|
852
|
+
};
|
853
|
+
|
854
|
+
jvm.inherits(jvm.VMLElement, jvm.AbstractElement);
|
855
|
+
|
856
|
+
/**
|
857
|
+
* Shows if VML was already initialized for the current document or not.
|
858
|
+
* @static
|
859
|
+
* @private
|
860
|
+
* @type {Boolean}
|
861
|
+
*/
|
862
|
+
jvm.VMLElement.VMLInitialized = false;
|
863
|
+
|
864
|
+
/**
|
865
|
+
* Initializes VML handling before creating the first element
|
866
|
+
* (adds CSS class and creates namespace). Adds one of two forms
|
867
|
+
* of createElement method depending of support by browser.
|
868
|
+
* @static
|
869
|
+
* @private
|
870
|
+
*/
|
871
|
+
|
872
|
+
// The following method of VML handling is borrowed from the
|
873
|
+
// Raphael library by Dmitry Baranovsky.
|
874
|
+
|
875
|
+
jvm.VMLElement.initializeVML = function(){
|
876
|
+
try {
|
877
|
+
if (!document.namespaces.rvml) {
|
878
|
+
document.namespaces.add("rvml","urn:schemas-microsoft-com:vml");
|
879
|
+
}
|
880
|
+
/**
|
881
|
+
* Creates DOM element.
|
882
|
+
* @param {String} tagName Name of element
|
883
|
+
* @private
|
884
|
+
* @returns DOMElement
|
885
|
+
*/
|
886
|
+
jvm.VMLElement.prototype.createElement = function (tagName) {
|
887
|
+
return document.createElement('<rvml:' + tagName + ' class="rvml">');
|
888
|
+
};
|
889
|
+
} catch (e) {
|
890
|
+
/**
|
891
|
+
* @private
|
892
|
+
*/
|
893
|
+
jvm.VMLElement.prototype.createElement = function (tagName) {
|
894
|
+
return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
|
895
|
+
};
|
896
|
+
}
|
897
|
+
document.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
|
898
|
+
jvm.VMLElement.VMLInitialized = true;
|
899
|
+
};
|
900
|
+
|
901
|
+
/**
|
902
|
+
* Returns constructor for element by name prefixed with 'VML'.
|
903
|
+
* @param {String} ctr Name of basic constructor to return
|
904
|
+
* proper implementation for.
|
905
|
+
* @returns Function
|
906
|
+
* @private
|
907
|
+
*/
|
908
|
+
jvm.VMLElement.prototype.getElementCtr = function( ctr ){
|
909
|
+
return jvm['VML'+ctr];
|
910
|
+
};
|
911
|
+
|
912
|
+
/**
|
913
|
+
* Adds CSS class for underlying DOM element.
|
914
|
+
* @param {String} className Name of CSS class name
|
915
|
+
*/
|
916
|
+
jvm.VMLElement.prototype.addClass = function( className ){
|
917
|
+
jvm.$(this.node).addClass(className);
|
918
|
+
};
|
919
|
+
|
920
|
+
/**
|
921
|
+
* Applies attribute value to the underlying DOM element.
|
922
|
+
* @param {String} name Name of attribute
|
923
|
+
* @param {Number|String} config Value of attribute to apply
|
924
|
+
* @private
|
925
|
+
*/
|
926
|
+
jvm.VMLElement.prototype.applyAttr = function( attr, value ){
|
927
|
+
this.node[attr] = value;
|
928
|
+
};
|
929
|
+
|
930
|
+
/**
|
931
|
+
* Returns boundary box for the element.
|
932
|
+
* @returns {Object} Boundary box with numeric fields: x, y, width, height
|
933
|
+
* @override
|
934
|
+
*/
|
935
|
+
jvm.VMLElement.prototype.getBBox = function(){
|
936
|
+
var node = jvm.$(this.node);
|
937
|
+
|
938
|
+
return {
|
939
|
+
x: node.position().left / this.canvas.scale,
|
940
|
+
y: node.position().top / this.canvas.scale,
|
941
|
+
width: node.width() / this.canvas.scale,
|
942
|
+
height: node.height() / this.canvas.scale
|
943
|
+
};
|
944
|
+
};jvm.VMLGroupElement = function(){
|
945
|
+
jvm.VMLGroupElement.parentClass.call(this, 'group');
|
946
|
+
|
947
|
+
this.node.style.left = '0px';
|
948
|
+
this.node.style.top = '0px';
|
949
|
+
this.node.coordorigin = "0 0";
|
950
|
+
};
|
951
|
+
|
952
|
+
jvm.inherits(jvm.VMLGroupElement, jvm.VMLElement);
|
953
|
+
|
954
|
+
jvm.VMLGroupElement.prototype.add = function(element){
|
955
|
+
this.node.appendChild( element.node );
|
956
|
+
};jvm.VMLCanvasElement = function(container, width, height){
|
957
|
+
this.classPrefix = 'VML';
|
958
|
+
jvm.VMLCanvasElement.parentClass.call(this, 'group');
|
959
|
+
jvm.AbstractCanvasElement.apply(this, arguments);
|
960
|
+
this.node.style.position = 'absolute';
|
961
|
+
};
|
962
|
+
|
963
|
+
jvm.inherits(jvm.VMLCanvasElement, jvm.VMLElement);
|
964
|
+
jvm.mixin(jvm.VMLCanvasElement, jvm.AbstractCanvasElement);
|
965
|
+
|
966
|
+
jvm.VMLCanvasElement.prototype.setSize = function(width, height){
|
967
|
+
var paths,
|
968
|
+
groups,
|
969
|
+
i,
|
970
|
+
l;
|
971
|
+
|
972
|
+
this.width = width;
|
973
|
+
this.height = height;
|
974
|
+
this.node.style.width = width + "px";
|
975
|
+
this.node.style.height = height + "px";
|
976
|
+
this.node.coordsize = width+' '+height;
|
977
|
+
this.node.coordorigin = "0 0";
|
978
|
+
if (this.rootElement) {
|
979
|
+
paths = this.rootElement.node.getElementsByTagName('shape');
|
980
|
+
for(i = 0, l = paths.length; i < l; i++) {
|
981
|
+
paths[i].coordsize = width+' '+height;
|
982
|
+
paths[i].style.width = width+'px';
|
983
|
+
paths[i].style.height = height+'px';
|
984
|
+
}
|
985
|
+
groups = this.node.getElementsByTagName('group');
|
986
|
+
for(i = 0, l = groups.length; i < l; i++) {
|
987
|
+
groups[i].coordsize = width+' '+height;
|
988
|
+
groups[i].style.width = width+'px';
|
989
|
+
groups[i].style.height = height+'px';
|
990
|
+
}
|
991
|
+
}
|
992
|
+
};
|
993
|
+
|
994
|
+
jvm.VMLCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) {
|
995
|
+
this.scale = scale;
|
996
|
+
this.transX = transX;
|
997
|
+
this.transY = transY;
|
998
|
+
this.rootElement.node.coordorigin = (this.width-transX-this.width/100)+','+(this.height-transY-this.height/100);
|
999
|
+
this.rootElement.node.coordsize = this.width/scale+','+this.height/scale;
|
1000
|
+
};jvm.VMLShapeElement = function(name, config){
|
1001
|
+
jvm.VMLShapeElement.parentClass.call(this, name, config);
|
1002
|
+
|
1003
|
+
this.fillElement = new jvm.VMLElement('fill');
|
1004
|
+
this.strokeElement = new jvm.VMLElement('stroke');
|
1005
|
+
this.node.appendChild(this.fillElement.node);
|
1006
|
+
this.node.appendChild(this.strokeElement.node);
|
1007
|
+
this.node.stroked = false;
|
1008
|
+
|
1009
|
+
jvm.AbstractShapeElement.apply(this, arguments);
|
1010
|
+
};
|
1011
|
+
|
1012
|
+
jvm.inherits(jvm.VMLShapeElement, jvm.VMLElement);
|
1013
|
+
jvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement);
|
1014
|
+
|
1015
|
+
jvm.VMLShapeElement.prototype.applyAttr = function(attr, value){
|
1016
|
+
switch (attr) {
|
1017
|
+
case 'fill':
|
1018
|
+
this.node.fillcolor = value;
|
1019
|
+
break;
|
1020
|
+
case 'fill-opacity':
|
1021
|
+
this.fillElement.node.opacity = Math.round(value*100)+'%';
|
1022
|
+
break;
|
1023
|
+
case 'stroke':
|
1024
|
+
if (value === 'none') {
|
1025
|
+
this.node.stroked = false;
|
1026
|
+
} else {
|
1027
|
+
this.node.stroked = true;
|
1028
|
+
}
|
1029
|
+
this.node.strokecolor = value;
|
1030
|
+
break;
|
1031
|
+
case 'stroke-opacity':
|
1032
|
+
this.strokeElement.node.opacity = Math.round(value*100)+'%';
|
1033
|
+
break;
|
1034
|
+
case 'stroke-width':
|
1035
|
+
if (parseInt(value, 10) === 0) {
|
1036
|
+
this.node.stroked = false;
|
1037
|
+
} else {
|
1038
|
+
this.node.stroked = true;
|
1039
|
+
}
|
1040
|
+
this.node.strokeweight = value;
|
1041
|
+
break;
|
1042
|
+
case 'd':
|
1043
|
+
this.node.path = jvm.VMLPathElement.pathSvgToVml(value);
|
1044
|
+
break;
|
1045
|
+
default:
|
1046
|
+
jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);
|
1047
|
+
}
|
1048
|
+
};jvm.VMLPathElement = function(config, style){
|
1049
|
+
var scale = new jvm.VMLElement('skew');
|
1050
|
+
|
1051
|
+
jvm.VMLPathElement.parentClass.call(this, 'shape', config, style);
|
1052
|
+
|
1053
|
+
this.node.coordorigin = "0 0";
|
1054
|
+
|
1055
|
+
scale.node.on = true;
|
1056
|
+
scale.node.matrix = '0.01,0,0,0.01,0,0';
|
1057
|
+
scale.node.offset = '0,0';
|
1058
|
+
|
1059
|
+
this.node.appendChild(scale.node);
|
1060
|
+
};
|
1061
|
+
|
1062
|
+
jvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement);
|
1063
|
+
|
1064
|
+
jvm.VMLPathElement.prototype.applyAttr = function(attr, value){
|
1065
|
+
if (attr === 'd') {
|
1066
|
+
this.node.path = jvm.VMLPathElement.pathSvgToVml(value);
|
1067
|
+
} else {
|
1068
|
+
jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value);
|
1069
|
+
}
|
1070
|
+
};
|
1071
|
+
|
1072
|
+
jvm.VMLPathElement.pathSvgToVml = function(path) {
|
1073
|
+
var cx = 0, cy = 0, ctrlx, ctrly;
|
1074
|
+
|
1075
|
+
path = path.replace(/(-?\d+)e(-?\d+)/g, '0');
|
1076
|
+
return path.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g, function(segment, letter, coords, index){
|
1077
|
+
coords = coords.replace(/(\d)-/g, '$1,-')
|
1078
|
+
.replace(/^\s+/g, '')
|
1079
|
+
.replace(/\s+$/g, '')
|
1080
|
+
.replace(/\s+/g, ',').split(',');
|
1081
|
+
if (!coords[0]) coords.shift();
|
1082
|
+
for (var i=0, l=coords.length; i<l; i++) {
|
1083
|
+
coords[i] = Math.round(100*coords[i]);
|
1084
|
+
}
|
1085
|
+
switch (letter) {
|
1086
|
+
case 'm':
|
1087
|
+
cx += coords[0];
|
1088
|
+
cy += coords[1];
|
1089
|
+
return 't'+coords.join(',');
|
1090
|
+
case 'M':
|
1091
|
+
cx = coords[0];
|
1092
|
+
cy = coords[1];
|
1093
|
+
return 'm'+coords.join(',');
|
1094
|
+
case 'l':
|
1095
|
+
cx += coords[0];
|
1096
|
+
cy += coords[1];
|
1097
|
+
return 'r'+coords.join(',');
|
1098
|
+
case 'L':
|
1099
|
+
cx = coords[0];
|
1100
|
+
cy = coords[1];
|
1101
|
+
return 'l'+coords.join(',');
|
1102
|
+
case 'h':
|
1103
|
+
cx += coords[0];
|
1104
|
+
return 'r'+coords[0]+',0';
|
1105
|
+
case 'H':
|
1106
|
+
cx = coords[0];
|
1107
|
+
return 'l'+cx+','+cy;
|
1108
|
+
case 'v':
|
1109
|
+
cy += coords[0];
|
1110
|
+
return 'r0,'+coords[0];
|
1111
|
+
case 'V':
|
1112
|
+
cy = coords[0];
|
1113
|
+
return 'l'+cx+','+cy;
|
1114
|
+
case 'c':
|
1115
|
+
ctrlx = cx + coords[coords.length-4];
|
1116
|
+
ctrly = cy + coords[coords.length-3];
|
1117
|
+
cx += coords[coords.length-2];
|
1118
|
+
cy += coords[coords.length-1];
|
1119
|
+
return 'v'+coords.join(',');
|
1120
|
+
case 'C':
|
1121
|
+
ctrlx = coords[coords.length-4];
|
1122
|
+
ctrly = coords[coords.length-3];
|
1123
|
+
cx = coords[coords.length-2];
|
1124
|
+
cy = coords[coords.length-1];
|
1125
|
+
return 'c'+coords.join(',');
|
1126
|
+
case 's':
|
1127
|
+
coords.unshift(cy-ctrly);
|
1128
|
+
coords.unshift(cx-ctrlx);
|
1129
|
+
ctrlx = cx + coords[coords.length-4];
|
1130
|
+
ctrly = cy + coords[coords.length-3];
|
1131
|
+
cx += coords[coords.length-2];
|
1132
|
+
cy += coords[coords.length-1];
|
1133
|
+
return 'v'+coords.join(',');
|
1134
|
+
case 'S':
|
1135
|
+
coords.unshift(cy+cy-ctrly);
|
1136
|
+
coords.unshift(cx+cx-ctrlx);
|
1137
|
+
ctrlx = coords[coords.length-4];
|
1138
|
+
ctrly = coords[coords.length-3];
|
1139
|
+
cx = coords[coords.length-2];
|
1140
|
+
cy = coords[coords.length-1];
|
1141
|
+
return 'c'+coords.join(',');
|
1142
|
+
}
|
1143
|
+
return '';
|
1144
|
+
}).replace(/z/g, 'e');
|
1145
|
+
};jvm.VMLCircleElement = function(config, style){
|
1146
|
+
jvm.VMLCircleElement.parentClass.call(this, 'oval', config, style);
|
1147
|
+
};
|
1148
|
+
|
1149
|
+
jvm.inherits(jvm.VMLCircleElement, jvm.VMLShapeElement);
|
1150
|
+
|
1151
|
+
jvm.VMLCircleElement.prototype.applyAttr = function(attr, value){
|
1152
|
+
switch (attr) {
|
1153
|
+
case 'r':
|
1154
|
+
this.node.style.width = value*2+'px';
|
1155
|
+
this.node.style.height = value*2+'px';
|
1156
|
+
this.applyAttr('cx', this.get('cx') || 0);
|
1157
|
+
this.applyAttr('cy', this.get('cy') || 0);
|
1158
|
+
break;
|
1159
|
+
case 'cx':
|
1160
|
+
if (!value) return;
|
1161
|
+
this.node.style.left = value - (this.get('r') || 0) + 'px';
|
1162
|
+
break;
|
1163
|
+
case 'cy':
|
1164
|
+
if (!value) return;
|
1165
|
+
this.node.style.top = value - (this.get('r') || 0) + 'px';
|
1166
|
+
break;
|
1167
|
+
default:
|
1168
|
+
jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this, attr, value);
|
1169
|
+
}
|
1170
|
+
};/**
|
1171
|
+
* Class for vector images manipulations.
|
1172
|
+
* @constructor
|
1173
|
+
* @param {DOMElement} container to place canvas to
|
1174
|
+
* @param {Number} width
|
1175
|
+
* @param {Number} height
|
1176
|
+
*/
|
1177
|
+
jvm.VectorCanvas = function(container, width, height) {
|
1178
|
+
this.mode = window.SVGAngle ? 'svg' : 'vml';
|
1179
|
+
|
1180
|
+
if (this.mode == 'svg') {
|
1181
|
+
this.impl = new jvm.SVGCanvasElement(container, width, height);
|
1182
|
+
} else {
|
1183
|
+
this.impl = new jvm.VMLCanvasElement(container, width, height);
|
1184
|
+
}
|
1185
|
+
this.impl.mode = this.mode;
|
1186
|
+
return this.impl;
|
1187
|
+
};jvm.SimpleScale = function(scale){
|
1188
|
+
this.scale = scale;
|
1189
|
+
};
|
1190
|
+
|
1191
|
+
jvm.SimpleScale.prototype.getValue = function(value){
|
1192
|
+
return value;
|
1193
|
+
};jvm.OrdinalScale = function(scale){
|
1194
|
+
this.scale = scale;
|
1195
|
+
};
|
1196
|
+
|
1197
|
+
jvm.OrdinalScale.prototype.getValue = function(value){
|
1198
|
+
return this.scale[value];
|
1199
|
+
};
|
1200
|
+
|
1201
|
+
jvm.OrdinalScale.prototype.getTicks = function(){
|
1202
|
+
var ticks = [],
|
1203
|
+
key;
|
1204
|
+
|
1205
|
+
for (key in this.scale) {
|
1206
|
+
ticks.push({
|
1207
|
+
label: key,
|
1208
|
+
value: this.scale[key]
|
1209
|
+
});
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
return ticks;
|
1213
|
+
};jvm.NumericScale = function(scale, normalizeFunction, minValue, maxValue) {
|
1214
|
+
this.scale = [];
|
1215
|
+
|
1216
|
+
normalizeFunction = normalizeFunction || 'linear';
|
1217
|
+
|
1218
|
+
if (scale) this.setScale(scale);
|
1219
|
+
if (normalizeFunction) this.setNormalizeFunction(normalizeFunction);
|
1220
|
+
if (typeof minValue !== 'undefined' ) this.setMin(minValue);
|
1221
|
+
if (typeof maxValue !== 'undefined' ) this.setMax(maxValue);
|
1222
|
+
};
|
1223
|
+
|
1224
|
+
jvm.NumericScale.prototype = {
|
1225
|
+
setMin: function(min) {
|
1226
|
+
this.clearMinValue = min;
|
1227
|
+
if (typeof this.normalize === 'function') {
|
1228
|
+
this.minValue = this.normalize(min);
|
1229
|
+
} else {
|
1230
|
+
this.minValue = min;
|
1231
|
+
}
|
1232
|
+
},
|
1233
|
+
|
1234
|
+
setMax: function(max) {
|
1235
|
+
this.clearMaxValue = max;
|
1236
|
+
if (typeof this.normalize === 'function') {
|
1237
|
+
this.maxValue = this.normalize(max);
|
1238
|
+
} else {
|
1239
|
+
this.maxValue = max;
|
1240
|
+
}
|
1241
|
+
},
|
1242
|
+
|
1243
|
+
setScale: function(scale) {
|
1244
|
+
var i;
|
1245
|
+
|
1246
|
+
this.scale = [];
|
1247
|
+
for (i = 0; i < scale.length; i++) {
|
1248
|
+
this.scale[i] = [scale[i]];
|
1249
|
+
}
|
1250
|
+
},
|
1251
|
+
|
1252
|
+
setNormalizeFunction: function(f) {
|
1253
|
+
if (f === 'polynomial') {
|
1254
|
+
this.normalize = function(value) {
|
1255
|
+
return Math.pow(value, 0.2);
|
1256
|
+
}
|
1257
|
+
} else if (f === 'linear') {
|
1258
|
+
delete this.normalize;
|
1259
|
+
} else {
|
1260
|
+
this.normalize = f;
|
1261
|
+
}
|
1262
|
+
this.setMin(this.clearMinValue);
|
1263
|
+
this.setMax(this.clearMaxValue);
|
1264
|
+
},
|
1265
|
+
|
1266
|
+
getValue: function(value) {
|
1267
|
+
var lengthes = [],
|
1268
|
+
fullLength = 0,
|
1269
|
+
l,
|
1270
|
+
i = 0,
|
1271
|
+
c;
|
1272
|
+
|
1273
|
+
if (typeof this.normalize === 'function') {
|
1274
|
+
value = this.normalize(value);
|
1275
|
+
}
|
1276
|
+
for (i = 0; i < this.scale.length-1; i++) {
|
1277
|
+
l = this.vectorLength(this.vectorSubtract(this.scale[i+1], this.scale[i]));
|
1278
|
+
lengthes.push(l);
|
1279
|
+
fullLength += l;
|
1280
|
+
}
|
1281
|
+
|
1282
|
+
c = (this.maxValue - this.minValue) / fullLength;
|
1283
|
+
for (i=0; i<lengthes.length; i++) {
|
1284
|
+
lengthes[i] *= c;
|
1285
|
+
}
|
1286
|
+
|
1287
|
+
i = 0;
|
1288
|
+
value -= this.minValue;
|
1289
|
+
while (value - lengthes[i] >= 0) {
|
1290
|
+
value -= lengthes[i];
|
1291
|
+
i++;
|
1292
|
+
}
|
1293
|
+
|
1294
|
+
if (i == this.scale.length - 1) {
|
1295
|
+
value = this.vectorToNum(this.scale[i])
|
1296
|
+
} else {
|
1297
|
+
value = (
|
1298
|
+
this.vectorToNum(
|
1299
|
+
this.vectorAdd(this.scale[i],
|
1300
|
+
this.vectorMult(
|
1301
|
+
this.vectorSubtract(this.scale[i+1], this.scale[i]),
|
1302
|
+
(value) / (lengthes[i])
|
1303
|
+
)
|
1304
|
+
)
|
1305
|
+
)
|
1306
|
+
);
|
1307
|
+
}
|
1308
|
+
|
1309
|
+
return value;
|
1310
|
+
},
|
1311
|
+
|
1312
|
+
vectorToNum: function(vector) {
|
1313
|
+
var num = 0,
|
1314
|
+
i;
|
1315
|
+
|
1316
|
+
for (i = 0; i < vector.length; i++) {
|
1317
|
+
num += Math.round(vector[i])*Math.pow(256, vector.length-i-1);
|
1318
|
+
}
|
1319
|
+
return num;
|
1320
|
+
},
|
1321
|
+
|
1322
|
+
vectorSubtract: function(vector1, vector2) {
|
1323
|
+
var vector = [],
|
1324
|
+
i;
|
1325
|
+
|
1326
|
+
for (i = 0; i < vector1.length; i++) {
|
1327
|
+
vector[i] = vector1[i] - vector2[i];
|
1328
|
+
}
|
1329
|
+
return vector;
|
1330
|
+
},
|
1331
|
+
|
1332
|
+
vectorAdd: function(vector1, vector2) {
|
1333
|
+
var vector = [],
|
1334
|
+
i;
|
1335
|
+
|
1336
|
+
for (i = 0; i < vector1.length; i++) {
|
1337
|
+
vector[i] = vector1[i] + vector2[i];
|
1338
|
+
}
|
1339
|
+
return vector;
|
1340
|
+
},
|
1341
|
+
|
1342
|
+
vectorMult: function(vector, num) {
|
1343
|
+
var result = [],
|
1344
|
+
i;
|
1345
|
+
|
1346
|
+
for (i = 0; i < vector.length; i++) {
|
1347
|
+
result[i] = vector[i] * num;
|
1348
|
+
}
|
1349
|
+
return result;
|
1350
|
+
},
|
1351
|
+
|
1352
|
+
vectorLength: function(vector) {
|
1353
|
+
var result = 0,
|
1354
|
+
i;
|
1355
|
+
for (i = 0; i < vector.length; i++) {
|
1356
|
+
result += vector[i] * vector[i];
|
1357
|
+
}
|
1358
|
+
return Math.sqrt(result);
|
1359
|
+
},
|
1360
|
+
|
1361
|
+
/* Derived from d3 implementation https://github.com/mbostock/d3/blob/master/src/scale/linear.js#L94 */
|
1362
|
+
getTicks: function(){
|
1363
|
+
var m = 5,
|
1364
|
+
extent = [this.clearMinValue, this.clearMaxValue],
|
1365
|
+
span = extent[1] - extent[0],
|
1366
|
+
step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),
|
1367
|
+
err = m / span * step,
|
1368
|
+
ticks = [],
|
1369
|
+
tick,
|
1370
|
+
v;
|
1371
|
+
|
1372
|
+
if (err <= .15) step *= 10;
|
1373
|
+
else if (err <= .35) step *= 5;
|
1374
|
+
else if (err <= .75) step *= 2;
|
1375
|
+
|
1376
|
+
extent[0] = Math.floor(extent[0] / step) * step;
|
1377
|
+
extent[1] = Math.ceil(extent[1] / step) * step;
|
1378
|
+
|
1379
|
+
tick = extent[0];
|
1380
|
+
while (tick <= extent[1]) {
|
1381
|
+
if (tick == extent[0]) {
|
1382
|
+
v = this.clearMinValue;
|
1383
|
+
} else if (tick == extent[1]) {
|
1384
|
+
v = this.clearMaxValue;
|
1385
|
+
} else {
|
1386
|
+
v = tick;
|
1387
|
+
}
|
1388
|
+
ticks.push({
|
1389
|
+
label: tick,
|
1390
|
+
value: this.getValue(v)
|
1391
|
+
});
|
1392
|
+
tick += step;
|
1393
|
+
}
|
1394
|
+
|
1395
|
+
return ticks;
|
1396
|
+
}
|
1397
|
+
};
|
1398
|
+
jvm.ColorScale = function(colors, normalizeFunction, minValue, maxValue) {
|
1399
|
+
jvm.ColorScale.parentClass.apply(this, arguments);
|
1400
|
+
}
|
1401
|
+
|
1402
|
+
jvm.inherits(jvm.ColorScale, jvm.NumericScale);
|
1403
|
+
|
1404
|
+
jvm.ColorScale.prototype.setScale = function(scale) {
|
1405
|
+
var i;
|
1406
|
+
|
1407
|
+
for (i = 0; i < scale.length; i++) {
|
1408
|
+
this.scale[i] = jvm.ColorScale.rgbToArray(scale[i]);
|
1409
|
+
}
|
1410
|
+
};
|
1411
|
+
|
1412
|
+
jvm.ColorScale.prototype.getValue = function(value) {
|
1413
|
+
return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this, value));
|
1414
|
+
};
|
1415
|
+
|
1416
|
+
jvm.ColorScale.arrayToRgb = function(ar) {
|
1417
|
+
var rgb = '#',
|
1418
|
+
d,
|
1419
|
+
i;
|
1420
|
+
|
1421
|
+
for (i = 0; i < ar.length; i++) {
|
1422
|
+
d = ar[i].toString(16);
|
1423
|
+
rgb += d.length == 1 ? '0'+d : d;
|
1424
|
+
}
|
1425
|
+
return rgb;
|
1426
|
+
};
|
1427
|
+
|
1428
|
+
jvm.ColorScale.numToRgb = function(num) {
|
1429
|
+
num = num.toString(16);
|
1430
|
+
|
1431
|
+
while (num.length < 6) {
|
1432
|
+
num = '0' + num;
|
1433
|
+
}
|
1434
|
+
|
1435
|
+
return '#'+num;
|
1436
|
+
};
|
1437
|
+
|
1438
|
+
jvm.ColorScale.rgbToArray = function(rgb) {
|
1439
|
+
rgb = rgb.substr(1);
|
1440
|
+
return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];
|
1441
|
+
};/**
|
1442
|
+
* Represents map legend.
|
1443
|
+
* @constructor
|
1444
|
+
* @param {Object} params Configuration parameters.
|
1445
|
+
* @param {String} params.cssClass Additional CSS class to apply to legend element.
|
1446
|
+
* @param {Boolean} params.vertical If <code>true</code> legend will be rendered as vertical.
|
1447
|
+
* @param {String} params.title Legend title.
|
1448
|
+
* @param {Function} params.labelRender Method to convert series values to legend labels.
|
1449
|
+
*/
|
1450
|
+
jvm.Legend = function(params) {
|
1451
|
+
this.params = params || {};
|
1452
|
+
this.map = this.params.map;
|
1453
|
+
this.series = this.params.series;
|
1454
|
+
this.body = jvm.$('<div/>');
|
1455
|
+
this.body.addClass('jvectormap-legend');
|
1456
|
+
if (this.params.cssClass) {
|
1457
|
+
this.body.addClass(this.params.cssClass);
|
1458
|
+
}
|
1459
|
+
|
1460
|
+
if (params.vertical) {
|
1461
|
+
this.map.legendCntVertical.append( this.body );
|
1462
|
+
} else {
|
1463
|
+
this.map.legendCntHorizontal.append( this.body );
|
1464
|
+
}
|
1465
|
+
|
1466
|
+
this.render();
|
1467
|
+
}
|
1468
|
+
|
1469
|
+
jvm.Legend.prototype.render = function(){
|
1470
|
+
var ticks = this.series.scale.getTicks(),
|
1471
|
+
i,
|
1472
|
+
inner = jvm.$('<div/>').addClass('jvectormap-legend-inner'),
|
1473
|
+
tick,
|
1474
|
+
sample,
|
1475
|
+
label;
|
1476
|
+
|
1477
|
+
this.body.html('');
|
1478
|
+
if (this.params.title) {
|
1479
|
+
this.body.append(
|
1480
|
+
jvm.$('<div/>').addClass('jvectormap-legend-title').html(this.params.title)
|
1481
|
+
);
|
1482
|
+
}
|
1483
|
+
this.body.append(inner);
|
1484
|
+
|
1485
|
+
for (i = 0; i < ticks.length; i++) {
|
1486
|
+
tick = jvm.$('<div/>').addClass('jvectormap-legend-tick');
|
1487
|
+
sample = jvm.$('<div/>').addClass('jvectormap-legend-tick-sample');
|
1488
|
+
|
1489
|
+
switch (this.series.params.attribute) {
|
1490
|
+
case 'fill':
|
1491
|
+
if (jvm.isImageUrl(ticks[i].value)) {
|
1492
|
+
sample.css('background', 'url('+ticks[i].value+')');
|
1493
|
+
} else {
|
1494
|
+
sample.css('background', ticks[i].value);
|
1495
|
+
}
|
1496
|
+
break;
|
1497
|
+
case 'stroke':
|
1498
|
+
sample.css('background', ticks[i].value);
|
1499
|
+
break;
|
1500
|
+
case 'image':
|
1501
|
+
sample.css('background', 'url('+ticks[i].value+') no-repeat center center');
|
1502
|
+
break;
|
1503
|
+
case 'r':
|
1504
|
+
jvm.$('<div/>').css({
|
1505
|
+
'border-radius': ticks[i].value,
|
1506
|
+
border: this.map.params.markerStyle.initial['stroke-width']+'px '+
|
1507
|
+
this.map.params.markerStyle.initial['stroke']+' solid',
|
1508
|
+
width: ticks[i].value * 2 + 'px',
|
1509
|
+
height: ticks[i].value * 2 + 'px',
|
1510
|
+
background: this.map.params.markerStyle.initial['fill']
|
1511
|
+
}).appendTo(sample);
|
1512
|
+
break;
|
1513
|
+
}
|
1514
|
+
tick.append( sample );
|
1515
|
+
label = ticks[i].label;
|
1516
|
+
if (this.params.labelRender) {
|
1517
|
+
label = this.params.labelRender(label);
|
1518
|
+
}
|
1519
|
+
tick.append( jvm.$('<div>'+label+' </div>').addClass('jvectormap-legend-tick-text') );
|
1520
|
+
inner.append(tick);
|
1521
|
+
}
|
1522
|
+
inner.append( jvm.$('<div/>').css('clear', 'both') );
|
1523
|
+
}/**
|
1524
|
+
* Creates data series.
|
1525
|
+
* @constructor
|
1526
|
+
* @param {Object} params Parameters to initialize series with.
|
1527
|
+
* @param {Array} params.values The data set to visualize.
|
1528
|
+
* @param {String} params.attribute Numberic or color attribute to use for data visualization. This could be: <code>fill</code>, <code>stroke</code>, <code>fill-opacity</code>, <code>stroke-opacity</code> for markers and regions and <code>r</code> (radius) for markers only.
|
1529
|
+
* @param {Array} params.scale Values used to map a dimension of data to a visual representation. The first value sets visualization for minimum value from the data set and the last value sets visualization for the maximum value. There also could be intermidiate values. Default value is <code>['#C8EEFF', '#0071A4']</code>
|
1530
|
+
* @param {Function|String} params.normalizeFunction The function used to map input values to the provided scale. This parameter could be provided as function or one of the strings: <code>'linear'</code> or <code>'polynomial'</code>, while <code>'linear'</code> is used by default. The function provided takes value from the data set as an input and returns corresponding value from the scale.
|
1531
|
+
* @param {Number} params.min Minimum value of the data set. Could be calculated automatically if not provided.
|
1532
|
+
* @param {Number} params.min Maximum value of the data set. Could be calculated automatically if not provided.
|
1533
|
+
*/
|
1534
|
+
jvm.DataSeries = function(params, elements, map) {
|
1535
|
+
var scaleConstructor;
|
1536
|
+
|
1537
|
+
params = params || {};
|
1538
|
+
params.attribute = params.attribute || 'fill';
|
1539
|
+
|
1540
|
+
this.elements = elements;
|
1541
|
+
this.params = params;
|
1542
|
+
this.map = map;
|
1543
|
+
|
1544
|
+
if (params.attributes) {
|
1545
|
+
this.setAttributes(params.attributes);
|
1546
|
+
}
|
1547
|
+
|
1548
|
+
if (jvm.$.isArray(params.scale)) {
|
1549
|
+
scaleConstructor = (params.attribute === 'fill' || params.attribute === 'stroke') ? jvm.ColorScale : jvm.NumericScale;
|
1550
|
+
this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max);
|
1551
|
+
} else if (params.scale) {
|
1552
|
+
this.scale = new jvm.OrdinalScale(params.scale);
|
1553
|
+
} else {
|
1554
|
+
this.scale = new jvm.SimpleScale(params.scale);
|
1555
|
+
}
|
1556
|
+
|
1557
|
+
this.values = params.values || {};
|
1558
|
+
this.setValues(this.values);
|
1559
|
+
|
1560
|
+
if (this.params.legend) {
|
1561
|
+
this.legend = new jvm.Legend($.extend({
|
1562
|
+
map: this.map,
|
1563
|
+
series: this
|
1564
|
+
}, this.params.legend))
|
1565
|
+
}
|
1566
|
+
};
|
1567
|
+
|
1568
|
+
jvm.DataSeries.prototype = {
|
1569
|
+
setAttributes: function(key, attr){
|
1570
|
+
var attrs = key,
|
1571
|
+
code;
|
1572
|
+
|
1573
|
+
if (typeof key == 'string') {
|
1574
|
+
if (this.elements[key]) {
|
1575
|
+
this.elements[key].setStyle(this.params.attribute, attr);
|
1576
|
+
}
|
1577
|
+
} else {
|
1578
|
+
for (code in attrs) {
|
1579
|
+
if (this.elements[code]) {
|
1580
|
+
this.elements[code].element.setStyle(this.params.attribute, attrs[code]);
|
1581
|
+
}
|
1582
|
+
}
|
1583
|
+
}
|
1584
|
+
},
|
1585
|
+
|
1586
|
+
/**
|
1587
|
+
* Set values for the data set.
|
1588
|
+
* @param {Object} values Object which maps codes of regions or markers to values.
|
1589
|
+
*/
|
1590
|
+
setValues: function(values) {
|
1591
|
+
var max = -Number.MAX_VALUE,
|
1592
|
+
min = Number.MAX_VALUE,
|
1593
|
+
val,
|
1594
|
+
cc,
|
1595
|
+
attrs = {};
|
1596
|
+
|
1597
|
+
if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) {
|
1598
|
+
// we have a color scale as an array
|
1599
|
+
if (typeof this.params.min === 'undefined' || typeof this.params.max === 'undefined') {
|
1600
|
+
// min and/or max are not defined, so calculate them
|
1601
|
+
for (cc in values) {
|
1602
|
+
val = parseFloat(values[cc]);
|
1603
|
+
if (val > max) max = val;
|
1604
|
+
if (val < min) min = val;
|
1605
|
+
}
|
1606
|
+
}
|
1607
|
+
|
1608
|
+
if (typeof this.params.min === 'undefined') {
|
1609
|
+
this.scale.setMin(min);
|
1610
|
+
this.params.min = min;
|
1611
|
+
} else {
|
1612
|
+
this.scale.setMin(this.params.min);
|
1613
|
+
}
|
1614
|
+
|
1615
|
+
if (typeof this.params.max === 'undefined') {
|
1616
|
+
this.scale.setMax(max);
|
1617
|
+
this.params.max = max;
|
1618
|
+
} else {
|
1619
|
+
this.scale.setMax(this.params.max);
|
1620
|
+
}
|
1621
|
+
|
1622
|
+
for (cc in values) {
|
1623
|
+
if (cc != 'indexOf') {
|
1624
|
+
val = parseFloat(values[cc]);
|
1625
|
+
if (!isNaN(val)) {
|
1626
|
+
attrs[cc] = this.scale.getValue(val);
|
1627
|
+
} else {
|
1628
|
+
attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];
|
1629
|
+
}
|
1630
|
+
}
|
1631
|
+
}
|
1632
|
+
} else {
|
1633
|
+
for (cc in values) {
|
1634
|
+
if (values[cc]) {
|
1635
|
+
attrs[cc] = this.scale.getValue(values[cc]);
|
1636
|
+
} else {
|
1637
|
+
attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];
|
1638
|
+
}
|
1639
|
+
}
|
1640
|
+
}
|
1641
|
+
|
1642
|
+
this.setAttributes(attrs);
|
1643
|
+
jvm.$.extend(this.values, values);
|
1644
|
+
},
|
1645
|
+
|
1646
|
+
clear: function(){
|
1647
|
+
var key,
|
1648
|
+
attrs = {};
|
1649
|
+
|
1650
|
+
for (key in this.values) {
|
1651
|
+
if (this.elements[key]) {
|
1652
|
+
attrs[key] = this.elements[key].element.shape.style.initial[this.params.attribute];
|
1653
|
+
}
|
1654
|
+
}
|
1655
|
+
this.setAttributes(attrs);
|
1656
|
+
this.values = {};
|
1657
|
+
},
|
1658
|
+
|
1659
|
+
/**
|
1660
|
+
* Set scale of the data series.
|
1661
|
+
* @param {Array} scale Values representing scale.
|
1662
|
+
*/
|
1663
|
+
setScale: function(scale) {
|
1664
|
+
this.scale.setScale(scale);
|
1665
|
+
if (this.values) {
|
1666
|
+
this.setValues(this.values);
|
1667
|
+
}
|
1668
|
+
},
|
1669
|
+
|
1670
|
+
/**
|
1671
|
+
* Set normalize function of the data series.
|
1672
|
+
* @param {Function|String} normilizeFunction.
|
1673
|
+
*/
|
1674
|
+
setNormalizeFunction: function(f) {
|
1675
|
+
this.scale.setNormalizeFunction(f);
|
1676
|
+
if (this.values) {
|
1677
|
+
this.setValues(this.values);
|
1678
|
+
}
|
1679
|
+
}
|
1680
|
+
};
|
1681
|
+
/**
|
1682
|
+
* Contains methods for transforming point on sphere to
|
1683
|
+
* Cartesian coordinates using various projections.
|
1684
|
+
* @class
|
1685
|
+
*/
|
1686
|
+
jvm.Proj = {
|
1687
|
+
degRad: 180 / Math.PI,
|
1688
|
+
radDeg: Math.PI / 180,
|
1689
|
+
radius: 6381372,
|
1690
|
+
|
1691
|
+
sgn: function(n){
|
1692
|
+
if (n > 0) {
|
1693
|
+
return 1;
|
1694
|
+
} else if (n < 0) {
|
1695
|
+
return -1;
|
1696
|
+
} else {
|
1697
|
+
return n;
|
1698
|
+
}
|
1699
|
+
},
|
1700
|
+
|
1701
|
+
/**
|
1702
|
+
* Converts point on sphere to the Cartesian coordinates using Miller projection
|
1703
|
+
* @param {Number} lat Latitude in degrees
|
1704
|
+
* @param {Number} lng Longitude in degrees
|
1705
|
+
* @param {Number} c Central meridian in degrees
|
1706
|
+
*/
|
1707
|
+
mill: function(lat, lng, c){
|
1708
|
+
return {
|
1709
|
+
x: this.radius * (lng - c) * this.radDeg,
|
1710
|
+
y: - this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8
|
1711
|
+
};
|
1712
|
+
},
|
1713
|
+
|
1714
|
+
/**
|
1715
|
+
* Inverse function of mill()
|
1716
|
+
* Converts Cartesian coordinates to point on sphere using Miller projection
|
1717
|
+
* @param {Number} x X of point in Cartesian system as integer
|
1718
|
+
* @param {Number} y Y of point in Cartesian system as integer
|
1719
|
+
* @param {Number} c Central meridian in degrees
|
1720
|
+
*/
|
1721
|
+
mill_inv: function(x, y, c){
|
1722
|
+
return {
|
1723
|
+
lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad,
|
1724
|
+
lng: (c * this.radDeg + x / this.radius) * this.degRad
|
1725
|
+
};
|
1726
|
+
},
|
1727
|
+
|
1728
|
+
/**
|
1729
|
+
* Converts point on sphere to the Cartesian coordinates using Mercator projection
|
1730
|
+
* @param {Number} lat Latitude in degrees
|
1731
|
+
* @param {Number} lng Longitude in degrees
|
1732
|
+
* @param {Number} c Central meridian in degrees
|
1733
|
+
*/
|
1734
|
+
merc: function(lat, lng, c){
|
1735
|
+
return {
|
1736
|
+
x: this.radius * (lng - c) * this.radDeg,
|
1737
|
+
y: - this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))
|
1738
|
+
};
|
1739
|
+
},
|
1740
|
+
|
1741
|
+
/**
|
1742
|
+
* Inverse function of merc()
|
1743
|
+
* Converts Cartesian coordinates to point on sphere using Mercator projection
|
1744
|
+
* @param {Number} x X of point in Cartesian system as integer
|
1745
|
+
* @param {Number} y Y of point in Cartesian system as integer
|
1746
|
+
* @param {Number} c Central meridian in degrees
|
1747
|
+
*/
|
1748
|
+
merc_inv: function(x, y, c){
|
1749
|
+
return {
|
1750
|
+
lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad,
|
1751
|
+
lng: (c * this.radDeg + x / this.radius) * this.degRad
|
1752
|
+
};
|
1753
|
+
},
|
1754
|
+
|
1755
|
+
/**
|
1756
|
+
* Converts point on sphere to the Cartesian coordinates using Albers Equal-Area Conic
|
1757
|
+
* projection
|
1758
|
+
* @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a>
|
1759
|
+
* @param {Number} lat Latitude in degrees
|
1760
|
+
* @param {Number} lng Longitude in degrees
|
1761
|
+
* @param {Number} c Central meridian in degrees
|
1762
|
+
*/
|
1763
|
+
aea: function(lat, lng, c){
|
1764
|
+
var fi0 = 0,
|
1765
|
+
lambda0 = c * this.radDeg,
|
1766
|
+
fi1 = 29.5 * this.radDeg,
|
1767
|
+
fi2 = 45.5 * this.radDeg,
|
1768
|
+
fi = lat * this.radDeg,
|
1769
|
+
lambda = lng * this.radDeg,
|
1770
|
+
n = (Math.sin(fi1)+Math.sin(fi2)) / 2,
|
1771
|
+
C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),
|
1772
|
+
theta = n*(lambda-lambda0),
|
1773
|
+
ro = Math.sqrt(C-2*n*Math.sin(fi))/n,
|
1774
|
+
ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n;
|
1775
|
+
|
1776
|
+
return {
|
1777
|
+
x: ro * Math.sin(theta) * this.radius,
|
1778
|
+
y: - (ro0 - ro * Math.cos(theta)) * this.radius
|
1779
|
+
};
|
1780
|
+
},
|
1781
|
+
|
1782
|
+
/**
|
1783
|
+
* Converts Cartesian coordinates to the point on sphere using Albers Equal-Area Conic
|
1784
|
+
* projection
|
1785
|
+
* @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a>
|
1786
|
+
* @param {Number} x X of point in Cartesian system as integer
|
1787
|
+
* @param {Number} y Y of point in Cartesian system as integer
|
1788
|
+
* @param {Number} c Central meridian in degrees
|
1789
|
+
*/
|
1790
|
+
aea_inv: function(xCoord, yCoord, c){
|
1791
|
+
var x = xCoord / this.radius,
|
1792
|
+
y = yCoord / this.radius,
|
1793
|
+
fi0 = 0,
|
1794
|
+
lambda0 = c * this.radDeg,
|
1795
|
+
fi1 = 29.5 * this.radDeg,
|
1796
|
+
fi2 = 45.5 * this.radDeg,
|
1797
|
+
n = (Math.sin(fi1)+Math.sin(fi2)) / 2,
|
1798
|
+
C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),
|
1799
|
+
ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n,
|
1800
|
+
ro = Math.sqrt(x*x+(ro0-y)*(ro0-y)),
|
1801
|
+
theta = Math.atan( x / (ro0 - y) );
|
1802
|
+
|
1803
|
+
return {
|
1804
|
+
lat: (Math.asin((C - ro * ro * n * n) / (2 * n))) * this.degRad,
|
1805
|
+
lng: (lambda0 + theta / n) * this.degRad
|
1806
|
+
};
|
1807
|
+
},
|
1808
|
+
|
1809
|
+
/**
|
1810
|
+
* Converts point on sphere to the Cartesian coordinates using Lambert conformal
|
1811
|
+
* conic projection
|
1812
|
+
* @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a>
|
1813
|
+
* @param {Number} lat Latitude in degrees
|
1814
|
+
* @param {Number} lng Longitude in degrees
|
1815
|
+
* @param {Number} c Central meridian in degrees
|
1816
|
+
*/
|
1817
|
+
lcc: function(lat, lng, c){
|
1818
|
+
var fi0 = 0,
|
1819
|
+
lambda0 = c * this.radDeg,
|
1820
|
+
lambda = lng * this.radDeg,
|
1821
|
+
fi1 = 33 * this.radDeg,
|
1822
|
+
fi2 = 45 * this.radDeg,
|
1823
|
+
fi = lat * this.radDeg,
|
1824
|
+
n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ),
|
1825
|
+
F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n,
|
1826
|
+
ro = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi / 2 ), n ),
|
1827
|
+
ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n );
|
1828
|
+
|
1829
|
+
return {
|
1830
|
+
x: ro * Math.sin( n * (lambda - lambda0) ) * this.radius,
|
1831
|
+
y: - (ro0 - ro * Math.cos( n * (lambda - lambda0) ) ) * this.radius
|
1832
|
+
};
|
1833
|
+
},
|
1834
|
+
|
1835
|
+
/**
|
1836
|
+
* Converts Cartesian coordinates to the point on sphere using Lambert conformal conic
|
1837
|
+
* projection
|
1838
|
+
* @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a>
|
1839
|
+
* @param {Number} x X of point in Cartesian system as integer
|
1840
|
+
* @param {Number} y Y of point in Cartesian system as integer
|
1841
|
+
* @param {Number} c Central meridian in degrees
|
1842
|
+
*/
|
1843
|
+
lcc_inv: function(xCoord, yCoord, c){
|
1844
|
+
var x = xCoord / this.radius,
|
1845
|
+
y = yCoord / this.radius,
|
1846
|
+
fi0 = 0,
|
1847
|
+
lambda0 = c * this.radDeg,
|
1848
|
+
fi1 = 33 * this.radDeg,
|
1849
|
+
fi2 = 45 * this.radDeg,
|
1850
|
+
n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ),
|
1851
|
+
F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n,
|
1852
|
+
ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n ),
|
1853
|
+
ro = this.sgn(n) * Math.sqrt(x*x+(ro0-y)*(ro0-y)),
|
1854
|
+
theta = Math.atan( x / (ro0 - y) );
|
1855
|
+
|
1856
|
+
return {
|
1857
|
+
lat: (2 * Math.atan(Math.pow(F/ro, 1/n)) - Math.PI / 2) * this.degRad,
|
1858
|
+
lng: (lambda0 + theta / n) * this.degRad
|
1859
|
+
};
|
1860
|
+
}
|
1861
|
+
};jvm.MapObject = function(config){};
|
1862
|
+
|
1863
|
+
jvm.MapObject.prototype.getLabelText = function(key){
|
1864
|
+
var text;
|
1865
|
+
|
1866
|
+
if (this.config.label) {
|
1867
|
+
if (typeof this.config.label.render === 'function') {
|
1868
|
+
text = this.config.label.render(key);
|
1869
|
+
} else {
|
1870
|
+
text = key;
|
1871
|
+
}
|
1872
|
+
} else {
|
1873
|
+
text = null;
|
1874
|
+
}
|
1875
|
+
return text;
|
1876
|
+
}
|
1877
|
+
|
1878
|
+
jvm.MapObject.prototype.getLabelOffsets = function(key){
|
1879
|
+
var offsets;
|
1880
|
+
|
1881
|
+
if (this.config.label) {
|
1882
|
+
if (typeof this.config.label.offsets === 'function') {
|
1883
|
+
offsets = this.config.label.offsets(key);
|
1884
|
+
} else if (typeof this.config.label.offsets === 'object') {
|
1885
|
+
offsets = this.config.label.offsets[key];
|
1886
|
+
}
|
1887
|
+
}
|
1888
|
+
return offsets || [0, 0];
|
1889
|
+
}
|
1890
|
+
|
1891
|
+
/**
|
1892
|
+
* Set hovered state to the element. Hovered state means mouse cursor is over element. Styles will be updates respectively.
|
1893
|
+
* @param {Boolean} isHovered <code>true</code> to make element hovered, <code>false</code> otherwise.
|
1894
|
+
*/
|
1895
|
+
jvm.MapObject.prototype.setHovered = function(isHovered){
|
1896
|
+
if (this.isHovered !== isHovered) {
|
1897
|
+
this.isHovered = isHovered;
|
1898
|
+
this.shape.isHovered = isHovered;
|
1899
|
+
this.shape.updateStyle();
|
1900
|
+
if (this.label) {
|
1901
|
+
this.label.isHovered = isHovered;
|
1902
|
+
this.label.updateStyle();
|
1903
|
+
}
|
1904
|
+
}
|
1905
|
+
};
|
1906
|
+
|
1907
|
+
/**
|
1908
|
+
* Set selected state to the element. Styles will be updates respectively.
|
1909
|
+
* @param {Boolean} isSelected <code>true</code> to make element selected, <code>false</code> otherwise.
|
1910
|
+
*/
|
1911
|
+
jvm.MapObject.prototype.setSelected = function(isSelected){
|
1912
|
+
if (this.isSelected !== isSelected) {
|
1913
|
+
this.isSelected = isSelected;
|
1914
|
+
this.shape.isSelected = isSelected;
|
1915
|
+
this.shape.updateStyle();
|
1916
|
+
if (this.label) {
|
1917
|
+
this.label.isSelected = isSelected;
|
1918
|
+
this.label.updateStyle();
|
1919
|
+
}
|
1920
|
+
jvm.$(this.shape).trigger('selected', [isSelected]);
|
1921
|
+
}
|
1922
|
+
};
|
1923
|
+
|
1924
|
+
jvm.MapObject.prototype.setStyle = function(){
|
1925
|
+
this.shape.setStyle.apply(this.shape, arguments);
|
1926
|
+
};
|
1927
|
+
|
1928
|
+
jvm.MapObject.prototype.remove = function(){
|
1929
|
+
this.shape.remove();
|
1930
|
+
if (this.label) {
|
1931
|
+
this.label.remove();
|
1932
|
+
}
|
1933
|
+
};jvm.Region = function(config){
|
1934
|
+
var bbox,
|
1935
|
+
text,
|
1936
|
+
offsets,
|
1937
|
+
labelDx,
|
1938
|
+
labelDy;
|
1939
|
+
|
1940
|
+
this.config = config;
|
1941
|
+
this.map = this.config.map;
|
1942
|
+
|
1943
|
+
this.shape = config.canvas.addPath({
|
1944
|
+
d: config.path,
|
1945
|
+
'data-code': config.code
|
1946
|
+
}, config.style, config.canvas.rootElement);
|
1947
|
+
this.shape.addClass('jvectormap-region jvectormap-element');
|
1948
|
+
|
1949
|
+
bbox = this.shape.getBBox();
|
1950
|
+
|
1951
|
+
text = this.getLabelText(config.code);
|
1952
|
+
if (this.config.label && text) {
|
1953
|
+
offsets = this.getLabelOffsets(config.code);
|
1954
|
+
this.labelX = bbox.x + bbox.width / 2 + offsets[0];
|
1955
|
+
this.labelY = bbox.y + bbox.height / 2 + offsets[1];
|
1956
|
+
this.label = config.canvas.addText({
|
1957
|
+
text: text,
|
1958
|
+
'text-anchor': 'middle',
|
1959
|
+
'alignment-baseline': 'central',
|
1960
|
+
x: this.labelX,
|
1961
|
+
y: this.labelY,
|
1962
|
+
'data-code': config.code
|
1963
|
+
}, config.labelStyle, config.labelsGroup);
|
1964
|
+
this.label.addClass('jvectormap-region jvectormap-element');
|
1965
|
+
}
|
1966
|
+
};
|
1967
|
+
|
1968
|
+
jvm.inherits(jvm.Region, jvm.MapObject);
|
1969
|
+
|
1970
|
+
jvm.Region.prototype.updateLabelPosition = function(){
|
1971
|
+
if (this.label) {
|
1972
|
+
this.label.set({
|
1973
|
+
x: this.labelX * this.map.scale + this.map.transX * this.map.scale,
|
1974
|
+
y: this.labelY * this.map.scale + this.map.transY * this.map.scale
|
1975
|
+
});
|
1976
|
+
}
|
1977
|
+
};jvm.Marker = function(config){
|
1978
|
+
var text,
|
1979
|
+
offsets;
|
1980
|
+
|
1981
|
+
this.config = config;
|
1982
|
+
this.map = this.config.map;
|
1983
|
+
|
1984
|
+
this.isImage = !!this.config.style.initial.image;
|
1985
|
+
this.createShape();
|
1986
|
+
|
1987
|
+
text = this.getLabelText(config.index);
|
1988
|
+
if (this.config.label && text) {
|
1989
|
+
this.offsets = this.getLabelOffsets(config.index);
|
1990
|
+
this.labelX = config.cx / this.map.scale - this.map.transX;
|
1991
|
+
this.labelY = config.cy / this.map.scale - this.map.transY;
|
1992
|
+
this.label = config.canvas.addText({
|
1993
|
+
text: text,
|
1994
|
+
'data-index': config.index,
|
1995
|
+
dy: "0.6ex",
|
1996
|
+
x: this.labelX,
|
1997
|
+
y: this.labelY
|
1998
|
+
}, config.labelStyle, config.labelsGroup);
|
1999
|
+
|
2000
|
+
this.label.addClass('jvectormap-marker jvectormap-element');
|
2001
|
+
}
|
2002
|
+
};
|
2003
|
+
|
2004
|
+
jvm.inherits(jvm.Marker, jvm.MapObject);
|
2005
|
+
|
2006
|
+
jvm.Marker.prototype.createShape = function(){
|
2007
|
+
var that = this;
|
2008
|
+
|
2009
|
+
if (this.shape) {
|
2010
|
+
this.shape.remove();
|
2011
|
+
}
|
2012
|
+
this.shape = this.config.canvas[this.isImage ? 'addImage' : 'addCircle']({
|
2013
|
+
"data-index": this.config.index,
|
2014
|
+
cx: this.config.cx,
|
2015
|
+
cy: this.config.cy
|
2016
|
+
}, this.config.style, this.config.group);
|
2017
|
+
|
2018
|
+
this.shape.addClass('jvectormap-marker jvectormap-element');
|
2019
|
+
|
2020
|
+
if (this.isImage) {
|
2021
|
+
jvm.$(this.shape.node).on('imageloaded', function(){
|
2022
|
+
that.updateLabelPosition();
|
2023
|
+
});
|
2024
|
+
}
|
2025
|
+
};
|
2026
|
+
|
2027
|
+
jvm.Marker.prototype.updateLabelPosition = function(){
|
2028
|
+
if (this.label) {
|
2029
|
+
this.label.set({
|
2030
|
+
x: this.labelX * this.map.scale + this.offsets[0] +
|
2031
|
+
this.map.transX * this.map.scale + 5 + (this.isImage ? (this.shape.width || 0) / 2 : this.shape.properties.r),
|
2032
|
+
y: this.labelY * this.map.scale + this.map.transY * this.map.scale + this.offsets[1]
|
2033
|
+
});
|
2034
|
+
}
|
2035
|
+
};
|
2036
|
+
|
2037
|
+
jvm.Marker.prototype.setStyle = function(property, value){
|
2038
|
+
var isImage;
|
2039
|
+
|
2040
|
+
jvm.Marker.parentClass.prototype.setStyle.apply(this, arguments);
|
2041
|
+
|
2042
|
+
if (property === 'r') {
|
2043
|
+
this.updateLabelPosition();
|
2044
|
+
}
|
2045
|
+
|
2046
|
+
isImage = !!this.shape.get('image');
|
2047
|
+
if (isImage != this.isImage) {
|
2048
|
+
this.isImage = isImage;
|
2049
|
+
this.config.style = jvm.$.extend(true, {}, this.shape.style);
|
2050
|
+
this.createShape();
|
2051
|
+
}
|
2052
|
+
};/**
|
2053
|
+
* Creates map, draws paths, binds events.
|
2054
|
+
* @constructor
|
2055
|
+
* @param {Object} params Parameters to initialize map with.
|
2056
|
+
* @param {String} params.map Name of the map in the format <code>territory_proj_lang</code> where <code>territory</code> is a unique code or name of the territory which the map represents (ISO 3166 standard is used where possible), <code>proj</code> is a name of projection used to generate representation of the map on the plane (projections are named according to the conventions of proj4 utility) and <code>lang</code> is a code of the language, used for the names of regions.
|
2057
|
+
* @param {String} params.backgroundColor Background color of the map in CSS format.
|
2058
|
+
* @param {Boolean} params.zoomOnScroll When set to true map could be zoomed using mouse scroll. Default value is <code>true</code>.
|
2059
|
+
* @param {Boolean} params.zoomOnScrollSpeed Mouse scroll speed. Number from 1 to 10. Default value is <code>3</code>.
|
2060
|
+
* @param {Boolean} params.panOnDrag When set to true, the map pans when being dragged. Default value is <code>true</code>.
|
2061
|
+
* @param {Number} params.zoomMax Indicates the maximum zoom ratio which could be reached zooming the map. Default value is <code>8</code>.
|
2062
|
+
* @param {Number} params.zoomMin Indicates the minimum zoom ratio which could be reached zooming the map. Default value is <code>1</code>.
|
2063
|
+
* @param {Number} params.zoomStep Indicates the multiplier used to zoom map with +/- buttons. Default value is <code>1.6</code>.
|
2064
|
+
* @param {Boolean} params.zoomAnimate Indicates whether or not to animate changing of map zoom with zoom buttons.
|
2065
|
+
* @param {Boolean} params.regionsSelectable When set to true regions of the map could be selected. Default value is <code>false</code>.
|
2066
|
+
* @param {Boolean} params.regionsSelectableOne Allow only one region to be selected at the moment. Default value is <code>false</code>.
|
2067
|
+
* @param {Boolean} params.markersSelectable When set to true markers on the map could be selected. Default value is <code>false</code>.
|
2068
|
+
* @param {Boolean} params.markersSelectableOne Allow only one marker to be selected at the moment. Default value is <code>false</code>.
|
2069
|
+
* @param {Object} params.regionStyle Set the styles for the map's regions. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:
|
2070
|
+
<pre>{
|
2071
|
+
initial: {
|
2072
|
+
fill: 'white',
|
2073
|
+
"fill-opacity": 1,
|
2074
|
+
stroke: 'none',
|
2075
|
+
"stroke-width": 0,
|
2076
|
+
"stroke-opacity": 1
|
2077
|
+
},
|
2078
|
+
hover: {
|
2079
|
+
"fill-opacity": 0.8,
|
2080
|
+
cursor: 'pointer'
|
2081
|
+
},
|
2082
|
+
selected: {
|
2083
|
+
fill: 'yellow'
|
2084
|
+
},
|
2085
|
+
selectedHover: {
|
2086
|
+
}
|
2087
|
+
}</pre>
|
2088
|
+
* @param {Object} params.regionLabelStyle Set the styles for the regions' labels. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:
|
2089
|
+
<pre>{
|
2090
|
+
initial: {
|
2091
|
+
'font-family': 'Verdana',
|
2092
|
+
'font-size': '12',
|
2093
|
+
'font-weight': 'bold',
|
2094
|
+
cursor: 'default',
|
2095
|
+
fill: 'black'
|
2096
|
+
},
|
2097
|
+
hover: {
|
2098
|
+
cursor: 'pointer'
|
2099
|
+
}
|
2100
|
+
}</pre>
|
2101
|
+
* @param {Object} params.markerStyle Set the styles for the map's markers. Any parameter suitable for <code>regionStyle</code> could be used as well as numeric parameter <code>r</code> to set the marker's radius. Default value for that parameter is:
|
2102
|
+
<pre>{
|
2103
|
+
initial: {
|
2104
|
+
fill: 'grey',
|
2105
|
+
stroke: '#505050',
|
2106
|
+
"fill-opacity": 1,
|
2107
|
+
"stroke-width": 1,
|
2108
|
+
"stroke-opacity": 1,
|
2109
|
+
r: 5
|
2110
|
+
},
|
2111
|
+
hover: {
|
2112
|
+
stroke: 'black',
|
2113
|
+
"stroke-width": 2,
|
2114
|
+
cursor: 'pointer'
|
2115
|
+
},
|
2116
|
+
selected: {
|
2117
|
+
fill: 'blue'
|
2118
|
+
},
|
2119
|
+
selectedHover: {
|
2120
|
+
}
|
2121
|
+
}</pre>
|
2122
|
+
* @param {Object} params.markerLabelStyle Set the styles for the markers' labels. Default value for that parameter is:
|
2123
|
+
<pre>{
|
2124
|
+
initial: {
|
2125
|
+
'font-family': 'Verdana',
|
2126
|
+
'font-size': '12',
|
2127
|
+
'font-weight': 'bold',
|
2128
|
+
cursor: 'default',
|
2129
|
+
fill: 'black'
|
2130
|
+
},
|
2131
|
+
hover: {
|
2132
|
+
cursor: 'pointer'
|
2133
|
+
}
|
2134
|
+
}</pre>
|
2135
|
+
* @param {Object|Array} params.markers Set of markers to add to the map during initialization. In case of array is provided, codes of markers will be set as string representations of array indexes. Each marker is represented by <code>latLng</code> (array of two numeric values), <code>name</code> (string which will be show on marker's tip) and any marker styles.
|
2136
|
+
* @param {Object} params.series Object with two keys: <code>markers</code> and <code>regions</code>. Each of which is an array of series configs to be applied to the respective map elements. See <a href="jvm.DataSeries.html">DataSeries</a> description for a list of parameters available.
|
2137
|
+
* @param {Object|String} params.focusOn This parameter sets the initial position and scale of the map viewport. See <code>setFocus</code> docuemntation for possible parameters.
|
2138
|
+
* @param {Object} params.labels Defines parameters for rendering static labels. Object could contain two keys: <code>regions</code> and <code>markers</code>. Each key value defines configuration object with the following possible options:
|
2139
|
+
<ul>
|
2140
|
+
<li><code>render {Function}</code> - defines method for converting region code or marker index to actual label value.</li>
|
2141
|
+
<li><code>offsets {Object|Function}</code> - provides method or object which could be used to define label offset by region code or marker index.</li>
|
2142
|
+
</ul>
|
2143
|
+
<b>Plase note: static labels feature is not supported in Internet Explorer 8 and below.</b>
|
2144
|
+
* @param {Array|Object|String} params.selectedRegions Set initially selected regions.
|
2145
|
+
* @param {Array|Object|String} params.selectedMarkers Set initially selected markers.
|
2146
|
+
* @param {Function} params.onRegionTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the region tip is going to be shown.
|
2147
|
+
* @param {Function} params.onRegionOver <code>(Event e, String code)</code> Will be called on region mouse over event.
|
2148
|
+
* @param {Function} params.onRegionOut <code>(Event e, String code)</code> Will be called on region mouse out event.
|
2149
|
+
* @param {Function} params.onRegionClick <code>(Event e, String code)</code> Will be called on region click event.
|
2150
|
+
* @param {Function} params.onRegionSelected <code>(Event e, String code, Boolean isSelected, Array selectedRegions)</code> Will be called when region is (de)selected. <code>isSelected</code> parameter of the callback indicates whether region is selected or not. <code>selectedRegions</code> contains codes of all currently selected regions.
|
2151
|
+
* @param {Function} params.onMarkerTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the marker tip is going to be shown.
|
2152
|
+
* @param {Function} params.onMarkerOver <code>(Event e, String code)</code> Will be called on marker mouse over event.
|
2153
|
+
* @param {Function} params.onMarkerOut <code>(Event e, String code)</code> Will be called on marker mouse out event.
|
2154
|
+
* @param {Function} params.onMarkerClick <code>(Event e, String code)</code> Will be called on marker click event.
|
2155
|
+
* @param {Function} params.onMarkerSelected <code>(Event e, String code, Boolean isSelected, Array selectedMarkers)</code> Will be called when marker is (de)selected. <code>isSelected</code> parameter of the callback indicates whether marker is selected or not. <code>selectedMarkers</code> contains codes of all currently selected markers.
|
2156
|
+
* @param {Function} params.onViewportChange <code>(Event e, Number scale)</code> Triggered when the map's viewport is changed (map was panned or zoomed).
|
2157
|
+
*/
|
2158
|
+
jvm.Map = function(params) {
|
2159
|
+
var map = this,
|
2160
|
+
e;
|
2161
|
+
|
2162
|
+
this.params = jvm.$.extend(true, {}, jvm.Map.defaultParams, params);
|
2163
|
+
|
2164
|
+
if (!jvm.Map.maps[this.params.map]) {
|
2165
|
+
throw new Error('Attempt to use map which was not loaded: '+this.params.map);
|
2166
|
+
}
|
2167
|
+
|
2168
|
+
this.mapData = jvm.Map.maps[this.params.map];
|
2169
|
+
this.markers = {};
|
2170
|
+
this.regions = {};
|
2171
|
+
this.regionsColors = {};
|
2172
|
+
this.regionsData = {};
|
2173
|
+
|
2174
|
+
this.container = jvm.$('<div>').addClass('jvectormap-container');
|
2175
|
+
if (this.params.container) {
|
2176
|
+
this.params.container.append( this.container );
|
2177
|
+
}
|
2178
|
+
this.container.data('mapObject', this);
|
2179
|
+
|
2180
|
+
this.defaultWidth = this.mapData.width;
|
2181
|
+
this.defaultHeight = this.mapData.height;
|
2182
|
+
|
2183
|
+
this.setBackgroundColor(this.params.backgroundColor);
|
2184
|
+
|
2185
|
+
this.onResize = function(){
|
2186
|
+
map.updateSize();
|
2187
|
+
}
|
2188
|
+
jvm.$(window).resize(this.onResize);
|
2189
|
+
|
2190
|
+
for (e in jvm.Map.apiEvents) {
|
2191
|
+
if (this.params[e]) {
|
2192
|
+
this.container.bind(jvm.Map.apiEvents[e]+'.jvectormap', this.params[e]);
|
2193
|
+
}
|
2194
|
+
}
|
2195
|
+
|
2196
|
+
this.canvas = new jvm.VectorCanvas(this.container[0], this.width, this.height);
|
2197
|
+
|
2198
|
+
if (this.params.bindTouchEvents) {
|
2199
|
+
if (('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) {
|
2200
|
+
this.bindContainerTouchEvents();
|
2201
|
+
} else if (window.MSGesture) {
|
2202
|
+
this.bindContainerPointerEvents();
|
2203
|
+
}
|
2204
|
+
}
|
2205
|
+
this.bindContainerEvents();
|
2206
|
+
this.bindElementEvents();
|
2207
|
+
this.createTip();
|
2208
|
+
if (this.params.zoomButtons) {
|
2209
|
+
this.bindZoomButtons();
|
2210
|
+
}
|
2211
|
+
|
2212
|
+
this.createRegions();
|
2213
|
+
this.createMarkers(this.params.markers || {});
|
2214
|
+
|
2215
|
+
this.updateSize();
|
2216
|
+
|
2217
|
+
if (this.params.focusOn) {
|
2218
|
+
if (typeof this.params.focusOn === 'string') {
|
2219
|
+
this.params.focusOn = {region: this.params.focusOn};
|
2220
|
+
} else if (jvm.$.isArray(this.params.focusOn)) {
|
2221
|
+
this.params.focusOn = {regions: this.params.focusOn};
|
2222
|
+
}
|
2223
|
+
this.setFocus(this.params.focusOn);
|
2224
|
+
}
|
2225
|
+
|
2226
|
+
if (this.params.selectedRegions) {
|
2227
|
+
this.setSelectedRegions(this.params.selectedRegions);
|
2228
|
+
}
|
2229
|
+
if (this.params.selectedMarkers) {
|
2230
|
+
this.setSelectedMarkers(this.params.selectedMarkers);
|
2231
|
+
}
|
2232
|
+
|
2233
|
+
this.legendCntHorizontal = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-h');
|
2234
|
+
this.legendCntVertical = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-v');
|
2235
|
+
this.container.append(this.legendCntHorizontal);
|
2236
|
+
this.container.append(this.legendCntVertical);
|
2237
|
+
|
2238
|
+
if (this.params.series) {
|
2239
|
+
this.createSeries();
|
2240
|
+
}
|
2241
|
+
};
|
2242
|
+
|
2243
|
+
jvm.Map.prototype = {
|
2244
|
+
transX: 0,
|
2245
|
+
transY: 0,
|
2246
|
+
scale: 1,
|
2247
|
+
baseTransX: 0,
|
2248
|
+
baseTransY: 0,
|
2249
|
+
baseScale: 1,
|
2250
|
+
|
2251
|
+
width: 0,
|
2252
|
+
height: 0,
|
2253
|
+
|
2254
|
+
/**
|
2255
|
+
* Set background color of the map.
|
2256
|
+
* @param {String} backgroundColor Background color in CSS format.
|
2257
|
+
*/
|
2258
|
+
setBackgroundColor: function(backgroundColor) {
|
2259
|
+
this.container.css('background-color', backgroundColor);
|
2260
|
+
},
|
2261
|
+
|
2262
|
+
resize: function() {
|
2263
|
+
var curBaseScale = this.baseScale;
|
2264
|
+
if (this.width / this.height > this.defaultWidth / this.defaultHeight) {
|
2265
|
+
this.baseScale = this.height / this.defaultHeight;
|
2266
|
+
this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);
|
2267
|
+
} else {
|
2268
|
+
this.baseScale = this.width / this.defaultWidth;
|
2269
|
+
this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);
|
2270
|
+
}
|
2271
|
+
this.scale *= this.baseScale / curBaseScale;
|
2272
|
+
this.transX *= this.baseScale / curBaseScale;
|
2273
|
+
this.transY *= this.baseScale / curBaseScale;
|
2274
|
+
},
|
2275
|
+
|
2276
|
+
/**
|
2277
|
+
* Synchronize the size of the map with the size of the container. Suitable in situations where the size of the container is changed programmatically or container is shown after it became visible.
|
2278
|
+
*/
|
2279
|
+
updateSize: function(){
|
2280
|
+
this.width = this.container.width();
|
2281
|
+
this.height = this.container.height();
|
2282
|
+
this.resize();
|
2283
|
+
this.canvas.setSize(this.width, this.height);
|
2284
|
+
this.applyTransform();
|
2285
|
+
},
|
2286
|
+
|
2287
|
+
/**
|
2288
|
+
* Reset all the series and show the map with the initial zoom.
|
2289
|
+
*/
|
2290
|
+
reset: function() {
|
2291
|
+
var key,
|
2292
|
+
i;
|
2293
|
+
|
2294
|
+
for (key in this.series) {
|
2295
|
+
for (i = 0; i < this.series[key].length; i++) {
|
2296
|
+
this.series[key][i].clear();
|
2297
|
+
}
|
2298
|
+
}
|
2299
|
+
this.scale = this.baseScale;
|
2300
|
+
this.transX = this.baseTransX;
|
2301
|
+
this.transY = this.baseTransY;
|
2302
|
+
this.applyTransform();
|
2303
|
+
},
|
2304
|
+
|
2305
|
+
applyTransform: function() {
|
2306
|
+
var maxTransX,
|
2307
|
+
maxTransY,
|
2308
|
+
minTransX,
|
2309
|
+
minTransY;
|
2310
|
+
|
2311
|
+
if (this.defaultWidth * this.scale <= this.width) {
|
2312
|
+
maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
|
2313
|
+
minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
|
2314
|
+
} else {
|
2315
|
+
maxTransX = 0;
|
2316
|
+
minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;
|
2317
|
+
}
|
2318
|
+
|
2319
|
+
if (this.defaultHeight * this.scale <= this.height) {
|
2320
|
+
maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
|
2321
|
+
minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
|
2322
|
+
} else {
|
2323
|
+
maxTransY = 0;
|
2324
|
+
minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;
|
2325
|
+
}
|
2326
|
+
|
2327
|
+
if (this.transY > maxTransY) {
|
2328
|
+
this.transY = maxTransY;
|
2329
|
+
} else if (this.transY < minTransY) {
|
2330
|
+
this.transY = minTransY;
|
2331
|
+
}
|
2332
|
+
if (this.transX > maxTransX) {
|
2333
|
+
this.transX = maxTransX;
|
2334
|
+
} else if (this.transX < minTransX) {
|
2335
|
+
this.transX = minTransX;
|
2336
|
+
}
|
2337
|
+
|
2338
|
+
this.canvas.applyTransformParams(this.scale, this.transX, this.transY);
|
2339
|
+
|
2340
|
+
if (this.markers) {
|
2341
|
+
this.repositionMarkers();
|
2342
|
+
}
|
2343
|
+
|
2344
|
+
this.repositionLabels();
|
2345
|
+
|
2346
|
+
this.container.trigger('viewportChange', [this.scale/this.baseScale, this.transX, this.transY]);
|
2347
|
+
},
|
2348
|
+
|
2349
|
+
bindContainerEvents: function(){
|
2350
|
+
var mouseDown = false,
|
2351
|
+
oldPageX,
|
2352
|
+
oldPageY,
|
2353
|
+
map = this;
|
2354
|
+
|
2355
|
+
if (this.params.panOnDrag) {
|
2356
|
+
this.container.mousemove(function(e){
|
2357
|
+
if (mouseDown) {
|
2358
|
+
map.transX -= (oldPageX - e.pageX) / map.scale;
|
2359
|
+
map.transY -= (oldPageY - e.pageY) / map.scale;
|
2360
|
+
|
2361
|
+
map.applyTransform();
|
2362
|
+
|
2363
|
+
oldPageX = e.pageX;
|
2364
|
+
oldPageY = e.pageY;
|
2365
|
+
}
|
2366
|
+
return false;
|
2367
|
+
}).mousedown(function(e){
|
2368
|
+
mouseDown = true;
|
2369
|
+
oldPageX = e.pageX;
|
2370
|
+
oldPageY = e.pageY;
|
2371
|
+
return false;
|
2372
|
+
});
|
2373
|
+
|
2374
|
+
this.onContainerMouseUp = function(){
|
2375
|
+
mouseDown = false;
|
2376
|
+
};
|
2377
|
+
jvm.$('body').mouseup(this.onContainerMouseUp);
|
2378
|
+
}
|
2379
|
+
|
2380
|
+
if (this.params.zoomOnScroll) {
|
2381
|
+
this.container.mousewheel(function(event, delta, deltaX, deltaY) {
|
2382
|
+
var offset = jvm.$(map.container).offset(),
|
2383
|
+
centerX = event.pageX - offset.left,
|
2384
|
+
centerY = event.pageY - offset.top,
|
2385
|
+
zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, event.deltaFactor * event.deltaY);
|
2386
|
+
|
2387
|
+
map.tip.hide();
|
2388
|
+
|
2389
|
+
map.setScale(map.scale * zoomStep, centerX, centerY);
|
2390
|
+
event.preventDefault();
|
2391
|
+
});
|
2392
|
+
}
|
2393
|
+
},
|
2394
|
+
|
2395
|
+
bindContainerTouchEvents: function(){
|
2396
|
+
var touchStartScale,
|
2397
|
+
touchStartDistance,
|
2398
|
+
map = this,
|
2399
|
+
touchX,
|
2400
|
+
touchY,
|
2401
|
+
centerTouchX,
|
2402
|
+
centerTouchY,
|
2403
|
+
lastTouchesLength,
|
2404
|
+
handleTouchEvent = function(e){
|
2405
|
+
var touches = e.originalEvent.touches,
|
2406
|
+
offset,
|
2407
|
+
scale,
|
2408
|
+
transXOld,
|
2409
|
+
transYOld;
|
2410
|
+
|
2411
|
+
if (e.type == 'touchstart') {
|
2412
|
+
lastTouchesLength = 0;
|
2413
|
+
}
|
2414
|
+
|
2415
|
+
if (touches.length == 1) {
|
2416
|
+
if (lastTouchesLength == 1) {
|
2417
|
+
transXOld = map.transX;
|
2418
|
+
transYOld = map.transY;
|
2419
|
+
map.transX -= (touchX - touches[0].pageX) / map.scale;
|
2420
|
+
map.transY -= (touchY - touches[0].pageY) / map.scale;
|
2421
|
+
map.applyTransform();
|
2422
|
+
map.tip.hide();
|
2423
|
+
if (transXOld != map.transX || transYOld != map.transY) {
|
2424
|
+
e.preventDefault();
|
2425
|
+
}
|
2426
|
+
}
|
2427
|
+
touchX = touches[0].pageX;
|
2428
|
+
touchY = touches[0].pageY;
|
2429
|
+
} else if (touches.length == 2) {
|
2430
|
+
if (lastTouchesLength == 2) {
|
2431
|
+
scale = Math.sqrt(
|
2432
|
+
Math.pow(touches[0].pageX - touches[1].pageX, 2) +
|
2433
|
+
Math.pow(touches[0].pageY - touches[1].pageY, 2)
|
2434
|
+
) / touchStartDistance;
|
2435
|
+
map.setScale(
|
2436
|
+
touchStartScale * scale,
|
2437
|
+
centerTouchX,
|
2438
|
+
centerTouchY
|
2439
|
+
)
|
2440
|
+
map.tip.hide();
|
2441
|
+
e.preventDefault();
|
2442
|
+
} else {
|
2443
|
+
offset = jvm.$(map.container).offset();
|
2444
|
+
if (touches[0].pageX > touches[1].pageX) {
|
2445
|
+
centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;
|
2446
|
+
} else {
|
2447
|
+
centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;
|
2448
|
+
}
|
2449
|
+
if (touches[0].pageY > touches[1].pageY) {
|
2450
|
+
centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;
|
2451
|
+
} else {
|
2452
|
+
centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;
|
2453
|
+
}
|
2454
|
+
centerTouchX -= offset.left;
|
2455
|
+
centerTouchY -= offset.top;
|
2456
|
+
touchStartScale = map.scale;
|
2457
|
+
touchStartDistance = Math.sqrt(
|
2458
|
+
Math.pow(touches[0].pageX - touches[1].pageX, 2) +
|
2459
|
+
Math.pow(touches[0].pageY - touches[1].pageY, 2)
|
2460
|
+
);
|
2461
|
+
}
|
2462
|
+
}
|
2463
|
+
|
2464
|
+
lastTouchesLength = touches.length;
|
2465
|
+
};
|
2466
|
+
|
2467
|
+
jvm.$(this.container).bind('touchstart', handleTouchEvent);
|
2468
|
+
jvm.$(this.container).bind('touchmove', handleTouchEvent);
|
2469
|
+
},
|
2470
|
+
|
2471
|
+
bindContainerPointerEvents: function(){
|
2472
|
+
var map = this,
|
2473
|
+
gesture = new MSGesture(),
|
2474
|
+
element = this.container[0],
|
2475
|
+
handlePointerDownEvent = function(e){
|
2476
|
+
gesture.addPointer(e.pointerId);
|
2477
|
+
},
|
2478
|
+
handleGestureEvent = function(e){
|
2479
|
+
var offset,
|
2480
|
+
scale,
|
2481
|
+
transXOld,
|
2482
|
+
transYOld;
|
2483
|
+
|
2484
|
+
if (e.translationX != 0 || e.translationY != 0) {
|
2485
|
+
transXOld = map.transX;
|
2486
|
+
transYOld = map.transY;
|
2487
|
+
map.transX += e.translationX / map.scale;
|
2488
|
+
map.transY += e.translationY / map.scale;
|
2489
|
+
map.applyTransform();
|
2490
|
+
map.tip.hide();
|
2491
|
+
if (transXOld != map.transX || transYOld != map.transY) {
|
2492
|
+
e.preventDefault();
|
2493
|
+
}
|
2494
|
+
}
|
2495
|
+
if (e.scale != 1) {
|
2496
|
+
map.setScale(
|
2497
|
+
map.scale * e.scale,
|
2498
|
+
e.offsetX,
|
2499
|
+
e.offsetY
|
2500
|
+
)
|
2501
|
+
map.tip.hide();
|
2502
|
+
e.preventDefault();
|
2503
|
+
}
|
2504
|
+
};
|
2505
|
+
|
2506
|
+
gesture.target = element;
|
2507
|
+
element.addEventListener("MSGestureChange", handleGestureEvent, false);
|
2508
|
+
element.addEventListener("pointerdown", handlePointerDownEvent, false);
|
2509
|
+
},
|
2510
|
+
|
2511
|
+
bindElementEvents: function(){
|
2512
|
+
var map = this,
|
2513
|
+
pageX,
|
2514
|
+
pageY,
|
2515
|
+
mouseMoved;
|
2516
|
+
|
2517
|
+
this.container.mousemove(function(e){
|
2518
|
+
if (Math.abs(pageX - e.pageX) + Math.abs(pageY - e.pageY) > 2) {
|
2519
|
+
mouseMoved = true;
|
2520
|
+
}
|
2521
|
+
});
|
2522
|
+
|
2523
|
+
/* Can not use common class selectors here because of the bug in jQuery
|
2524
|
+
SVG handling, use with caution. */
|
2525
|
+
this.container.delegate("[class~='jvectormap-element']", 'mouseover mouseout', function(e){
|
2526
|
+
var baseVal = jvm.$(this).attr('class').baseVal || jvm.$(this).attr('class'),
|
2527
|
+
type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',
|
2528
|
+
code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),
|
2529
|
+
element = type == 'region' ? map.regions[code].element : map.markers[code].element,
|
2530
|
+
tipText = type == 'region' ? map.mapData.paths[code].name : (map.markers[code].config.name || ''),
|
2531
|
+
tipShowEvent = jvm.$.Event(type+'TipShow.jvectormap'),
|
2532
|
+
overEvent = jvm.$.Event(type+'Over.jvectormap');
|
2533
|
+
|
2534
|
+
if (e.type == 'mouseover') {
|
2535
|
+
map.container.trigger(overEvent, [code]);
|
2536
|
+
if (!overEvent.isDefaultPrevented()) {
|
2537
|
+
element.setHovered(true);
|
2538
|
+
}
|
2539
|
+
|
2540
|
+
map.tip.text(tipText);
|
2541
|
+
map.container.trigger(tipShowEvent, [map.tip, code]);
|
2542
|
+
if (!tipShowEvent.isDefaultPrevented()) {
|
2543
|
+
map.tip.show();
|
2544
|
+
map.tipWidth = map.tip.width();
|
2545
|
+
map.tipHeight = map.tip.height();
|
2546
|
+
}
|
2547
|
+
} else {
|
2548
|
+
element.setHovered(false);
|
2549
|
+
map.tip.hide();
|
2550
|
+
map.container.trigger(type+'Out.jvectormap', [code]);
|
2551
|
+
}
|
2552
|
+
});
|
2553
|
+
|
2554
|
+
/* Can not use common class selectors here because of the bug in jQuery
|
2555
|
+
SVG handling, use with caution. */
|
2556
|
+
this.container.delegate("[class~='jvectormap-element']", 'mousedown', function(e){
|
2557
|
+
pageX = e.pageX;
|
2558
|
+
pageY = e.pageY;
|
2559
|
+
mouseMoved = false;
|
2560
|
+
});
|
2561
|
+
|
2562
|
+
/* Can not use common class selectors here because of the bug in jQuery
|
2563
|
+
SVG handling, use with caution. */
|
2564
|
+
this.container.delegate("[class~='jvectormap-element']", 'mouseup', function(){
|
2565
|
+
var baseVal = jvm.$(this).attr('class').baseVal ? jvm.$(this).attr('class').baseVal : jvm.$(this).attr('class'),
|
2566
|
+
type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',
|
2567
|
+
code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),
|
2568
|
+
clickEvent = jvm.$.Event(type+'Click.jvectormap'),
|
2569
|
+
element = type == 'region' ? map.regions[code].element : map.markers[code].element;
|
2570
|
+
|
2571
|
+
if (!mouseMoved) {
|
2572
|
+
map.container.trigger(clickEvent, [code]);
|
2573
|
+
if ((type === 'region' && map.params.regionsSelectable) || (type === 'marker' && map.params.markersSelectable)) {
|
2574
|
+
if (!clickEvent.isDefaultPrevented()) {
|
2575
|
+
if (map.params[type+'sSelectableOne']) {
|
2576
|
+
map.clearSelected(type+'s');
|
2577
|
+
}
|
2578
|
+
element.setSelected(!element.isSelected);
|
2579
|
+
}
|
2580
|
+
}
|
2581
|
+
}
|
2582
|
+
});
|
2583
|
+
},
|
2584
|
+
|
2585
|
+
bindZoomButtons: function() {
|
2586
|
+
var map = this;
|
2587
|
+
|
2588
|
+
jvm.$('<div/>').addClass('jvectormap-zoomin').text('+').appendTo(this.container);
|
2589
|
+
jvm.$('<div/>').addClass('jvectormap-zoomout').html('−').appendTo(this.container);
|
2590
|
+
|
2591
|
+
this.container.find('.jvectormap-zoomin').click(function(){
|
2592
|
+
map.setScale(map.scale * map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);
|
2593
|
+
});
|
2594
|
+
this.container.find('.jvectormap-zoomout').click(function(){
|
2595
|
+
map.setScale(map.scale / map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);
|
2596
|
+
});
|
2597
|
+
},
|
2598
|
+
|
2599
|
+
createTip: function(){
|
2600
|
+
var map = this;
|
2601
|
+
|
2602
|
+
this.tip = jvm.$('<div/>').addClass('jvectormap-tip').appendTo(jvm.$('body'));
|
2603
|
+
|
2604
|
+
this.container.mousemove(function(e){
|
2605
|
+
var left = e.pageX-15-map.tipWidth,
|
2606
|
+
top = e.pageY-15-map.tipHeight;
|
2607
|
+
|
2608
|
+
if (left < 5) {
|
2609
|
+
left = e.pageX + 15;
|
2610
|
+
}
|
2611
|
+
if (top < 5) {
|
2612
|
+
top = e.pageY + 15;
|
2613
|
+
}
|
2614
|
+
|
2615
|
+
map.tip.css({
|
2616
|
+
left: left,
|
2617
|
+
top: top
|
2618
|
+
});
|
2619
|
+
});
|
2620
|
+
},
|
2621
|
+
|
2622
|
+
setScale: function(scale, anchorX, anchorY, isCentered, animate) {
|
2623
|
+
var viewportChangeEvent = jvm.$.Event('zoom.jvectormap'),
|
2624
|
+
interval,
|
2625
|
+
that = this,
|
2626
|
+
i = 0,
|
2627
|
+
count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))),
|
2628
|
+
scaleStart,
|
2629
|
+
scaleDiff,
|
2630
|
+
transXStart,
|
2631
|
+
transXDiff,
|
2632
|
+
transYStart,
|
2633
|
+
transYDiff,
|
2634
|
+
transX,
|
2635
|
+
transY,
|
2636
|
+
deferred = new jvm.$.Deferred();
|
2637
|
+
|
2638
|
+
if (scale > this.params.zoomMax * this.baseScale) {
|
2639
|
+
scale = this.params.zoomMax * this.baseScale;
|
2640
|
+
} else if (scale < this.params.zoomMin * this.baseScale) {
|
2641
|
+
scale = this.params.zoomMin * this.baseScale;
|
2642
|
+
}
|
2643
|
+
|
2644
|
+
if (typeof anchorX != 'undefined' && typeof anchorY != 'undefined') {
|
2645
|
+
zoomStep = scale / this.scale;
|
2646
|
+
if (isCentered) {
|
2647
|
+
transX = anchorX + this.defaultWidth * (this.width / (this.defaultWidth * scale)) / 2;
|
2648
|
+
transY = anchorY + this.defaultHeight * (this.height / (this.defaultHeight * scale)) / 2;
|
2649
|
+
} else {
|
2650
|
+
transX = this.transX - (zoomStep - 1) / scale * anchorX;
|
2651
|
+
transY = this.transY - (zoomStep - 1) / scale * anchorY;
|
2652
|
+
}
|
2653
|
+
}
|
2654
|
+
|
2655
|
+
if (animate && count > 0) {
|
2656
|
+
scaleStart = this.scale;
|
2657
|
+
scaleDiff = (scale - scaleStart) / count;
|
2658
|
+
transXStart = this.transX * this.scale;
|
2659
|
+
transYStart = this.transY * this.scale;
|
2660
|
+
transXDiff = (transX * scale - transXStart) / count;
|
2661
|
+
transYDiff = (transY * scale - transYStart) / count;
|
2662
|
+
interval = setInterval(function(){
|
2663
|
+
i += 1;
|
2664
|
+
that.scale = scaleStart + scaleDiff * i;
|
2665
|
+
that.transX = (transXStart + transXDiff * i) / that.scale;
|
2666
|
+
that.transY = (transYStart + transYDiff * i) / that.scale;
|
2667
|
+
that.applyTransform();
|
2668
|
+
if (i == count) {
|
2669
|
+
clearInterval(interval);
|
2670
|
+
that.container.trigger(viewportChangeEvent, [scale/that.baseScale]);
|
2671
|
+
deferred.resolve();
|
2672
|
+
}
|
2673
|
+
}, 10);
|
2674
|
+
} else {
|
2675
|
+
this.transX = transX;
|
2676
|
+
this.transY = transY;
|
2677
|
+
this.scale = scale;
|
2678
|
+
this.applyTransform();
|
2679
|
+
this.container.trigger(viewportChangeEvent, [scale/this.baseScale]);
|
2680
|
+
deferred.resolve();
|
2681
|
+
}
|
2682
|
+
|
2683
|
+
return deferred;
|
2684
|
+
},
|
2685
|
+
|
2686
|
+
/**
|
2687
|
+
* Set the map's viewport to the specific point and set zoom of the map to the specific level. Point and zoom level could be defined in two ways: using the code of some region to focus on or a central point and zoom level as numbers.
|
2688
|
+
* @param This method takes a configuration object as the single argument. The options passed to it are the following:
|
2689
|
+
* @param {Array} params.regions Array of region codes to zoom to.
|
2690
|
+
* @param {String} params.region Region code to zoom to.
|
2691
|
+
* @param {Number} params.scale Map scale to set.
|
2692
|
+
* @param {Number} params.lat Latitude to set viewport to.
|
2693
|
+
* @param {Number} params.lng Longitude to set viewport to.
|
2694
|
+
* @param {Number} params.x Number from 0 to 1 specifying the horizontal coordinate of the central point of the viewport.
|
2695
|
+
* @param {Number} params.y Number from 0 to 1 specifying the vertical coordinate of the central point of the viewport.
|
2696
|
+
* @param {Boolean} params.animate Indicates whether or not to animate the scale change and transition.
|
2697
|
+
*/
|
2698
|
+
setFocus: function(config){
|
2699
|
+
var bbox,
|
2700
|
+
itemBbox,
|
2701
|
+
newBbox,
|
2702
|
+
codes,
|
2703
|
+
i,
|
2704
|
+
point;
|
2705
|
+
|
2706
|
+
config = config || {};
|
2707
|
+
|
2708
|
+
if (config.region) {
|
2709
|
+
codes = [config.region];
|
2710
|
+
} else if (config.regions) {
|
2711
|
+
codes = config.regions;
|
2712
|
+
}
|
2713
|
+
|
2714
|
+
if (codes) {
|
2715
|
+
for (i = 0; i < codes.length; i++) {
|
2716
|
+
if (this.regions[codes[i]]) {
|
2717
|
+
itemBbox = this.regions[codes[i]].element.shape.getBBox();
|
2718
|
+
if (itemBbox) {
|
2719
|
+
if (typeof bbox == 'undefined') {
|
2720
|
+
bbox = itemBbox;
|
2721
|
+
} else {
|
2722
|
+
newBbox = {
|
2723
|
+
x: Math.min(bbox.x, itemBbox.x),
|
2724
|
+
y: Math.min(bbox.y, itemBbox.y),
|
2725
|
+
width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x),
|
2726
|
+
height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y)
|
2727
|
+
}
|
2728
|
+
bbox = newBbox;
|
2729
|
+
}
|
2730
|
+
}
|
2731
|
+
}
|
2732
|
+
}
|
2733
|
+
return this.setScale(
|
2734
|
+
Math.min(this.width / bbox.width, this.height / bbox.height),
|
2735
|
+
- (bbox.x + bbox.width / 2),
|
2736
|
+
- (bbox.y + bbox.height / 2),
|
2737
|
+
true,
|
2738
|
+
config.animate
|
2739
|
+
);
|
2740
|
+
} else {
|
2741
|
+
if (config.lat && config.lng) {
|
2742
|
+
point = this.latLngToPoint(config.lat, config.lng);
|
2743
|
+
config.x = this.transX - point.x / this.scale;
|
2744
|
+
config.y = this.transY - point.y / this.scale;
|
2745
|
+
} else if (config.x && config.y) {
|
2746
|
+
config.x *= -this.defaultWidth;
|
2747
|
+
config.y *= -this.defaultHeight;
|
2748
|
+
}
|
2749
|
+
return this.setScale(config.scale * this.baseScale, config.x, config.y, true, config.animate);
|
2750
|
+
}
|
2751
|
+
},
|
2752
|
+
|
2753
|
+
getSelected: function(type){
|
2754
|
+
var key,
|
2755
|
+
selected = [];
|
2756
|
+
|
2757
|
+
for (key in this[type]) {
|
2758
|
+
if (this[type][key].element.isSelected) {
|
2759
|
+
selected.push(key);
|
2760
|
+
}
|
2761
|
+
}
|
2762
|
+
return selected;
|
2763
|
+
},
|
2764
|
+
|
2765
|
+
/**
|
2766
|
+
* Return the codes of currently selected regions.
|
2767
|
+
* @returns {Array}
|
2768
|
+
*/
|
2769
|
+
getSelectedRegions: function(){
|
2770
|
+
return this.getSelected('regions');
|
2771
|
+
},
|
2772
|
+
|
2773
|
+
/**
|
2774
|
+
* Return the codes of currently selected markers.
|
2775
|
+
* @returns {Array}
|
2776
|
+
*/
|
2777
|
+
getSelectedMarkers: function(){
|
2778
|
+
return this.getSelected('markers');
|
2779
|
+
},
|
2780
|
+
|
2781
|
+
setSelected: function(type, keys){
|
2782
|
+
var i;
|
2783
|
+
|
2784
|
+
if (typeof keys != 'object') {
|
2785
|
+
keys = [keys];
|
2786
|
+
}
|
2787
|
+
|
2788
|
+
if (jvm.$.isArray(keys)) {
|
2789
|
+
for (i = 0; i < keys.length; i++) {
|
2790
|
+
this[type][keys[i]].element.setSelected(true);
|
2791
|
+
}
|
2792
|
+
} else {
|
2793
|
+
for (i in keys) {
|
2794
|
+
this[type][i].element.setSelected(!!keys[i]);
|
2795
|
+
}
|
2796
|
+
}
|
2797
|
+
},
|
2798
|
+
|
2799
|
+
/**
|
2800
|
+
* Set or remove selected state for the regions.
|
2801
|
+
* @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the region(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of regions, state of which should be changed. Selected state will be set if value is true, removed otherwise.
|
2802
|
+
*/
|
2803
|
+
setSelectedRegions: function(keys){
|
2804
|
+
this.setSelected('regions', keys);
|
2805
|
+
},
|
2806
|
+
|
2807
|
+
/**
|
2808
|
+
* Set or remove selected state for the markers.
|
2809
|
+
* @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the marker(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of markers, state of which should be changed. Selected state will be set if value is true, removed otherwise.
|
2810
|
+
*/
|
2811
|
+
setSelectedMarkers: function(keys){
|
2812
|
+
this.setSelected('markers', keys);
|
2813
|
+
},
|
2814
|
+
|
2815
|
+
clearSelected: function(type){
|
2816
|
+
var select = {},
|
2817
|
+
selected = this.getSelected(type),
|
2818
|
+
i;
|
2819
|
+
|
2820
|
+
for (i = 0; i < selected.length; i++) {
|
2821
|
+
select[selected[i]] = false;
|
2822
|
+
};
|
2823
|
+
|
2824
|
+
this.setSelected(type, select);
|
2825
|
+
},
|
2826
|
+
|
2827
|
+
/**
|
2828
|
+
* Remove the selected state from all the currently selected regions.
|
2829
|
+
*/
|
2830
|
+
clearSelectedRegions: function(){
|
2831
|
+
this.clearSelected('regions');
|
2832
|
+
},
|
2833
|
+
|
2834
|
+
/**
|
2835
|
+
* Remove the selected state from all the currently selected markers.
|
2836
|
+
*/
|
2837
|
+
clearSelectedMarkers: function(){
|
2838
|
+
this.clearSelected('markers');
|
2839
|
+
},
|
2840
|
+
|
2841
|
+
/**
|
2842
|
+
* Return the instance of Map. Useful when instantiated as a jQuery plug-in.
|
2843
|
+
* @returns {Map}
|
2844
|
+
*/
|
2845
|
+
getMapObject: function(){
|
2846
|
+
return this;
|
2847
|
+
},
|
2848
|
+
|
2849
|
+
/**
|
2850
|
+
* Return the name of the region by region code.
|
2851
|
+
* @returns {String}
|
2852
|
+
*/
|
2853
|
+
getRegionName: function(code){
|
2854
|
+
return this.mapData.paths[code].name;
|
2855
|
+
},
|
2856
|
+
|
2857
|
+
createRegions: function(){
|
2858
|
+
var key,
|
2859
|
+
region,
|
2860
|
+
map = this;
|
2861
|
+
|
2862
|
+
this.regionLabelsGroup = this.regionLabelsGroup || this.canvas.addGroup();
|
2863
|
+
|
2864
|
+
for (key in this.mapData.paths) {
|
2865
|
+
region = new jvm.Region({
|
2866
|
+
map: this,
|
2867
|
+
path: this.mapData.paths[key].path,
|
2868
|
+
code: key,
|
2869
|
+
style: jvm.$.extend(true, {}, this.params.regionStyle),
|
2870
|
+
labelStyle: jvm.$.extend(true, {}, this.params.regionLabelStyle),
|
2871
|
+
canvas: this.canvas,
|
2872
|
+
labelsGroup: this.regionLabelsGroup,
|
2873
|
+
label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.regions) : null
|
2874
|
+
});
|
2875
|
+
|
2876
|
+
jvm.$(region.shape).bind('selected', function(e, isSelected){
|
2877
|
+
map.container.trigger('regionSelected.jvectormap', [jvm.$(this.node).attr('data-code'), isSelected, map.getSelectedRegions()]);
|
2878
|
+
});
|
2879
|
+
this.regions[key] = {
|
2880
|
+
element: region,
|
2881
|
+
config: this.mapData.paths[key]
|
2882
|
+
};
|
2883
|
+
}
|
2884
|
+
},
|
2885
|
+
|
2886
|
+
createMarkers: function(markers) {
|
2887
|
+
var i,
|
2888
|
+
marker,
|
2889
|
+
point,
|
2890
|
+
markerConfig,
|
2891
|
+
markersArray,
|
2892
|
+
map = this;
|
2893
|
+
|
2894
|
+
this.markersGroup = this.markersGroup || this.canvas.addGroup();
|
2895
|
+
this.markerLabelsGroup = this.markerLabelsGroup || this.canvas.addGroup();
|
2896
|
+
|
2897
|
+
if (jvm.$.isArray(markers)) {
|
2898
|
+
markersArray = markers.slice();
|
2899
|
+
markers = {};
|
2900
|
+
for (i = 0; i < markersArray.length; i++) {
|
2901
|
+
markers[i] = markersArray[i];
|
2902
|
+
}
|
2903
|
+
}
|
2904
|
+
|
2905
|
+
for (i in markers) {
|
2906
|
+
markerConfig = markers[i] instanceof Array ? {latLng: markers[i]} : markers[i];
|
2907
|
+
point = this.getMarkerPosition( markerConfig );
|
2908
|
+
|
2909
|
+
if (point !== false) {
|
2910
|
+
marker = new jvm.Marker({
|
2911
|
+
map: this,
|
2912
|
+
style: jvm.$.extend(true, {}, this.params.markerStyle, {initial: markerConfig.style || {}}),
|
2913
|
+
labelStyle: jvm.$.extend(true, {}, this.params.markerLabelStyle),
|
2914
|
+
index: i,
|
2915
|
+
cx: point.x,
|
2916
|
+
cy: point.y,
|
2917
|
+
group: this.markersGroup,
|
2918
|
+
canvas: this.canvas,
|
2919
|
+
labelsGroup: this.markerLabelsGroup,
|
2920
|
+
label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.markers) : null
|
2921
|
+
});
|
2922
|
+
|
2923
|
+
jvm.$(marker.shape).bind('selected', function(e, isSelected){
|
2924
|
+
map.container.trigger('markerSelected.jvectormap', [jvm.$(this.node).attr('data-index'), isSelected, map.getSelectedMarkers()]);
|
2925
|
+
});
|
2926
|
+
if (this.markers[i]) {
|
2927
|
+
this.removeMarkers([i]);
|
2928
|
+
}
|
2929
|
+
this.markers[i] = {element: marker, config: markerConfig};
|
2930
|
+
}
|
2931
|
+
}
|
2932
|
+
},
|
2933
|
+
|
2934
|
+
repositionMarkers: function() {
|
2935
|
+
var i,
|
2936
|
+
point;
|
2937
|
+
|
2938
|
+
for (i in this.markers) {
|
2939
|
+
point = this.getMarkerPosition( this.markers[i].config );
|
2940
|
+
if (point !== false) {
|
2941
|
+
this.markers[i].element.setStyle({cx: point.x, cy: point.y});
|
2942
|
+
}
|
2943
|
+
}
|
2944
|
+
},
|
2945
|
+
|
2946
|
+
repositionLabels: function() {
|
2947
|
+
var key;
|
2948
|
+
|
2949
|
+
for (key in this.regions) {
|
2950
|
+
this.regions[key].element.updateLabelPosition();
|
2951
|
+
}
|
2952
|
+
|
2953
|
+
for (key in this.markers) {
|
2954
|
+
this.markers[key].element.updateLabelPosition();
|
2955
|
+
}
|
2956
|
+
},
|
2957
|
+
|
2958
|
+
getMarkerPosition: function(markerConfig) {
|
2959
|
+
if (jvm.Map.maps[this.params.map].projection) {
|
2960
|
+
return this.latLngToPoint.apply(this, markerConfig.latLng || [0, 0]);
|
2961
|
+
} else {
|
2962
|
+
return {
|
2963
|
+
x: markerConfig.coords[0]*this.scale + this.transX*this.scale,
|
2964
|
+
y: markerConfig.coords[1]*this.scale + this.transY*this.scale
|
2965
|
+
};
|
2966
|
+
}
|
2967
|
+
},
|
2968
|
+
|
2969
|
+
/**
|
2970
|
+
* Add one marker to the map.
|
2971
|
+
* @param {String} key Marker unique code.
|
2972
|
+
* @param {Object} marker Marker configuration parameters.
|
2973
|
+
* @param {Array} seriesData Values to add to the data series.
|
2974
|
+
*/
|
2975
|
+
addMarker: function(key, marker, seriesData){
|
2976
|
+
var markers = {},
|
2977
|
+
data = [],
|
2978
|
+
values,
|
2979
|
+
i,
|
2980
|
+
seriesData = seriesData || [];
|
2981
|
+
|
2982
|
+
markers[key] = marker;
|
2983
|
+
|
2984
|
+
for (i = 0; i < seriesData.length; i++) {
|
2985
|
+
values = {};
|
2986
|
+
if (typeof seriesData[i] !== 'undefined') {
|
2987
|
+
values[key] = seriesData[i];
|
2988
|
+
}
|
2989
|
+
data.push(values);
|
2990
|
+
}
|
2991
|
+
this.addMarkers(markers, data);
|
2992
|
+
},
|
2993
|
+
|
2994
|
+
/**
|
2995
|
+
* Add set of marker to the map.
|
2996
|
+
* @param {Object|Array} markers Markers to add to the map. In case of array is provided, codes of markers will be set as string representations of array indexes.
|
2997
|
+
* @param {Array} seriesData Values to add to the data series.
|
2998
|
+
*/
|
2999
|
+
addMarkers: function(markers, seriesData){
|
3000
|
+
var i;
|
3001
|
+
|
3002
|
+
seriesData = seriesData || [];
|
3003
|
+
|
3004
|
+
this.createMarkers(markers);
|
3005
|
+
for (i = 0; i < seriesData.length; i++) {
|
3006
|
+
this.series.markers[i].setValues(seriesData[i] || {});
|
3007
|
+
};
|
3008
|
+
},
|
3009
|
+
|
3010
|
+
/**
|
3011
|
+
* Remove some markers from the map.
|
3012
|
+
* @param {Array} markers Array of marker codes to be removed.
|
3013
|
+
*/
|
3014
|
+
removeMarkers: function(markers){
|
3015
|
+
var i;
|
3016
|
+
|
3017
|
+
for (i = 0; i < markers.length; i++) {
|
3018
|
+
this.markers[ markers[i] ].element.remove();
|
3019
|
+
delete this.markers[ markers[i] ];
|
3020
|
+
};
|
3021
|
+
},
|
3022
|
+
|
3023
|
+
/**
|
3024
|
+
* Remove all markers from the map.
|
3025
|
+
*/
|
3026
|
+
removeAllMarkers: function(){
|
3027
|
+
var i,
|
3028
|
+
markers = [];
|
3029
|
+
|
3030
|
+
for (i in this.markers) {
|
3031
|
+
markers.push(i);
|
3032
|
+
}
|
3033
|
+
this.removeMarkers(markers)
|
3034
|
+
},
|
3035
|
+
|
3036
|
+
/**
|
3037
|
+
* Converts coordinates expressed as latitude and longitude to the coordinates in pixels on the map.
|
3038
|
+
* @param {Number} lat Latitide of point in degrees.
|
3039
|
+
* @param {Number} lng Longitude of point in degrees.
|
3040
|
+
*/
|
3041
|
+
latLngToPoint: function(lat, lng) {
|
3042
|
+
var point,
|
3043
|
+
proj = jvm.Map.maps[this.params.map].projection,
|
3044
|
+
centralMeridian = proj.centralMeridian,
|
3045
|
+
inset,
|
3046
|
+
bbox;
|
3047
|
+
|
3048
|
+
if (lng < (-180 + centralMeridian)) {
|
3049
|
+
lng += 360;
|
3050
|
+
}
|
3051
|
+
|
3052
|
+
point = jvm.Proj[proj.type](lat, lng, centralMeridian);
|
3053
|
+
|
3054
|
+
inset = this.getInsetForPoint(point.x, point.y);
|
3055
|
+
if (inset) {
|
3056
|
+
bbox = inset.bbox;
|
3057
|
+
|
3058
|
+
point.x = (point.x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale;
|
3059
|
+
point.y = (point.y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale;
|
3060
|
+
|
3061
|
+
return {
|
3062
|
+
x: point.x + this.transX*this.scale + inset.left*this.scale,
|
3063
|
+
y: point.y + this.transY*this.scale + inset.top*this.scale
|
3064
|
+
};
|
3065
|
+
} else {
|
3066
|
+
return false;
|
3067
|
+
}
|
3068
|
+
},
|
3069
|
+
|
3070
|
+
/**
|
3071
|
+
* Converts cartesian coordinates into coordinates expressed as latitude and longitude.
|
3072
|
+
* @param {Number} x X-axis of point on map in pixels.
|
3073
|
+
* @param {Number} y Y-axis of point on map in pixels.
|
3074
|
+
*/
|
3075
|
+
pointToLatLng: function(x, y) {
|
3076
|
+
var proj = jvm.Map.maps[this.params.map].projection,
|
3077
|
+
centralMeridian = proj.centralMeridian,
|
3078
|
+
insets = jvm.Map.maps[this.params.map].insets,
|
3079
|
+
i,
|
3080
|
+
inset,
|
3081
|
+
bbox,
|
3082
|
+
nx,
|
3083
|
+
ny;
|
3084
|
+
|
3085
|
+
for (i = 0; i < insets.length; i++) {
|
3086
|
+
inset = insets[i];
|
3087
|
+
bbox = inset.bbox;
|
3088
|
+
|
3089
|
+
nx = x - (this.transX*this.scale + inset.left*this.scale);
|
3090
|
+
ny = y - (this.transY*this.scale + inset.top*this.scale);
|
3091
|
+
|
3092
|
+
nx = (nx / (inset.width * this.scale)) * (bbox[1].x - bbox[0].x) + bbox[0].x;
|
3093
|
+
ny = (ny / (inset.height * this.scale)) * (bbox[1].y - bbox[0].y) + bbox[0].y;
|
3094
|
+
|
3095
|
+
if (nx > bbox[0].x && nx < bbox[1].x && ny > bbox[0].y && ny < bbox[1].y) {
|
3096
|
+
return jvm.Proj[proj.type + '_inv'](nx, -ny, centralMeridian);
|
3097
|
+
}
|
3098
|
+
}
|
3099
|
+
|
3100
|
+
return false;
|
3101
|
+
},
|
3102
|
+
|
3103
|
+
getInsetForPoint: function(x, y){
|
3104
|
+
var insets = jvm.Map.maps[this.params.map].insets,
|
3105
|
+
i,
|
3106
|
+
bbox;
|
3107
|
+
|
3108
|
+
for (i = 0; i < insets.length; i++) {
|
3109
|
+
bbox = insets[i].bbox;
|
3110
|
+
if (x > bbox[0].x && x < bbox[1].x && y > bbox[0].y && y < bbox[1].y) {
|
3111
|
+
return insets[i];
|
3112
|
+
}
|
3113
|
+
}
|
3114
|
+
},
|
3115
|
+
|
3116
|
+
createSeries: function(){
|
3117
|
+
var i,
|
3118
|
+
key;
|
3119
|
+
|
3120
|
+
this.series = {
|
3121
|
+
markers: [],
|
3122
|
+
regions: []
|
3123
|
+
};
|
3124
|
+
|
3125
|
+
for (key in this.params.series) {
|
3126
|
+
for (i = 0; i < this.params.series[key].length; i++) {
|
3127
|
+
this.series[key][i] = new jvm.DataSeries(
|
3128
|
+
this.params.series[key][i],
|
3129
|
+
this[key],
|
3130
|
+
this
|
3131
|
+
);
|
3132
|
+
}
|
3133
|
+
}
|
3134
|
+
},
|
3135
|
+
|
3136
|
+
/**
|
3137
|
+
* Gracefully remove the map and and all its accessories, unbind event handlers.
|
3138
|
+
*/
|
3139
|
+
remove: function(){
|
3140
|
+
this.tip.remove();
|
3141
|
+
this.container.remove();
|
3142
|
+
jvm.$(window).unbind('resize', this.onResize);
|
3143
|
+
jvm.$('body').unbind('mouseup', this.onContainerMouseUp);
|
3144
|
+
}
|
3145
|
+
};
|
3146
|
+
|
3147
|
+
jvm.Map.maps = {};
|
3148
|
+
jvm.Map.defaultParams = {
|
3149
|
+
map: 'world_mill_en',
|
3150
|
+
backgroundColor: '#505050',
|
3151
|
+
zoomButtons: true,
|
3152
|
+
zoomOnScroll: true,
|
3153
|
+
zoomOnScrollSpeed: 3,
|
3154
|
+
panOnDrag: true,
|
3155
|
+
zoomMax: 8,
|
3156
|
+
zoomMin: 1,
|
3157
|
+
zoomStep: 1.6,
|
3158
|
+
zoomAnimate: true,
|
3159
|
+
regionsSelectable: false,
|
3160
|
+
markersSelectable: false,
|
3161
|
+
bindTouchEvents: true,
|
3162
|
+
regionStyle: {
|
3163
|
+
initial: {
|
3164
|
+
fill: 'white',
|
3165
|
+
"fill-opacity": 1,
|
3166
|
+
stroke: 'none',
|
3167
|
+
"stroke-width": 0,
|
3168
|
+
"stroke-opacity": 1
|
3169
|
+
},
|
3170
|
+
hover: {
|
3171
|
+
"fill-opacity": 0.8,
|
3172
|
+
cursor: 'pointer'
|
3173
|
+
},
|
3174
|
+
selected: {
|
3175
|
+
fill: 'yellow'
|
3176
|
+
},
|
3177
|
+
selectedHover: {
|
3178
|
+
}
|
3179
|
+
},
|
3180
|
+
regionLabelStyle: {
|
3181
|
+
initial: {
|
3182
|
+
'font-family': 'Verdana',
|
3183
|
+
'font-size': '12',
|
3184
|
+
'font-weight': 'bold',
|
3185
|
+
cursor: 'default',
|
3186
|
+
fill: 'black'
|
3187
|
+
},
|
3188
|
+
hover: {
|
3189
|
+
cursor: 'pointer'
|
3190
|
+
}
|
3191
|
+
},
|
3192
|
+
markerStyle: {
|
3193
|
+
initial: {
|
3194
|
+
fill: 'grey',
|
3195
|
+
stroke: '#505050',
|
3196
|
+
"fill-opacity": 1,
|
3197
|
+
"stroke-width": 1,
|
3198
|
+
"stroke-opacity": 1,
|
3199
|
+
r: 5
|
3200
|
+
},
|
3201
|
+
hover: {
|
3202
|
+
stroke: 'black',
|
3203
|
+
"stroke-width": 2,
|
3204
|
+
cursor: 'pointer'
|
3205
|
+
},
|
3206
|
+
selected: {
|
3207
|
+
fill: 'blue'
|
3208
|
+
},
|
3209
|
+
selectedHover: {
|
3210
|
+
}
|
3211
|
+
},
|
3212
|
+
markerLabelStyle: {
|
3213
|
+
initial: {
|
3214
|
+
'font-family': 'Verdana',
|
3215
|
+
'font-size': '12',
|
3216
|
+
'font-weight': 'bold',
|
3217
|
+
cursor: 'default',
|
3218
|
+
fill: 'black'
|
3219
|
+
},
|
3220
|
+
hover: {
|
3221
|
+
cursor: 'pointer'
|
3222
|
+
}
|
3223
|
+
}
|
3224
|
+
};
|
3225
|
+
jvm.Map.apiEvents = {
|
3226
|
+
onRegionTipShow: 'regionTipShow',
|
3227
|
+
onRegionOver: 'regionOver',
|
3228
|
+
onRegionOut: 'regionOut',
|
3229
|
+
onRegionClick: 'regionClick',
|
3230
|
+
onRegionSelected: 'regionSelected',
|
3231
|
+
onMarkerTipShow: 'markerTipShow',
|
3232
|
+
onMarkerOver: 'markerOver',
|
3233
|
+
onMarkerOut: 'markerOut',
|
3234
|
+
onMarkerClick: 'markerClick',
|
3235
|
+
onMarkerSelected: 'markerSelected',
|
3236
|
+
onViewportChange: 'viewportChange'
|
3237
|
+
};/**
|
3238
|
+
* Creates map with drill-down functionality.
|
3239
|
+
* @constructor
|
3240
|
+
* @param {Object} params Parameters to initialize map with.
|
3241
|
+
* @param {Number} params.maxLevel Maximum number of levels user can go through
|
3242
|
+
* @param {Object} params.main Config of the main map. See <a href="./jvm-map/">jvm.Map</a> for more information.
|
3243
|
+
* @param {Function} params.mapNameByCode Function go generate map name by region code. Default value is:
|
3244
|
+
<pre>
|
3245
|
+
function(code, multiMap) {
|
3246
|
+
return code.toLowerCase()+'_'+
|
3247
|
+
multiMap.defaultProjection+'_en';
|
3248
|
+
}
|
3249
|
+
</pre>
|
3250
|
+
* @param {Function} params.mapUrlByCode Function to generate map url by region code. Default value is:
|
3251
|
+
<pre>
|
3252
|
+
function(code, multiMap){
|
3253
|
+
return 'jquery-jvectormap-data-'+
|
3254
|
+
code.toLowerCase()+'-'+
|
3255
|
+
multiMap.defaultProjection+'-en.js';
|
3256
|
+
}
|
3257
|
+
</pre>
|
3258
|
+
*/
|
3259
|
+
jvm.MultiMap = function(params) {
|
3260
|
+
var that = this;
|
3261
|
+
|
3262
|
+
this.maps = {};
|
3263
|
+
this.params = jvm.$.extend(true, {}, jvm.MultiMap.defaultParams, params);
|
3264
|
+
this.params.maxLevel = this.params.maxLevel || Number.MAX_VALUE;
|
3265
|
+
this.params.main = this.params.main || {};
|
3266
|
+
this.params.main.multiMapLevel = 0;
|
3267
|
+
this.history = [ this.addMap(this.params.main.map, this.params.main) ];
|
3268
|
+
this.defaultProjection = this.history[0].mapData.projection.type;
|
3269
|
+
this.mapsLoaded = {};
|
3270
|
+
|
3271
|
+
this.params.container.css({position: 'relative'});
|
3272
|
+
this.backButton = jvm.$('<div/>').addClass('jvectormap-goback').text('Back').appendTo(this.params.container);
|
3273
|
+
this.backButton.hide();
|
3274
|
+
this.backButton.click(function(){
|
3275
|
+
that.goBack();
|
3276
|
+
});
|
3277
|
+
|
3278
|
+
this.spinner = jvm.$('<div/>').addClass('jvectormap-spinner').appendTo(this.params.container);
|
3279
|
+
this.spinner.hide();
|
3280
|
+
};
|
3281
|
+
|
3282
|
+
jvm.MultiMap.prototype = {
|
3283
|
+
addMap: function(name, config){
|
3284
|
+
var cnt = jvm.$('<div/>').css({
|
3285
|
+
width: '100%',
|
3286
|
+
height: '100%'
|
3287
|
+
});
|
3288
|
+
|
3289
|
+
this.params.container.append(cnt);
|
3290
|
+
|
3291
|
+
this.maps[name] = new jvm.Map(jvm.$.extend(config, {container: cnt}));
|
3292
|
+
if (this.params.maxLevel > config.multiMapLevel) {
|
3293
|
+
this.maps[name].container.on('regionClick.jvectormap', {scope: this}, function(e, code){
|
3294
|
+
var multimap = e.data.scope,
|
3295
|
+
mapName = multimap.params.mapNameByCode(code, multimap);
|
3296
|
+
|
3297
|
+
if (!multimap.drillDownPromise || multimap.drillDownPromise.state() !== 'pending') {
|
3298
|
+
multimap.drillDown(mapName, code);
|
3299
|
+
}
|
3300
|
+
});
|
3301
|
+
}
|
3302
|
+
|
3303
|
+
|
3304
|
+
return this.maps[name];
|
3305
|
+
},
|
3306
|
+
|
3307
|
+
downloadMap: function(code){
|
3308
|
+
var that = this,
|
3309
|
+
deferred = jvm.$.Deferred();
|
3310
|
+
|
3311
|
+
if (!this.mapsLoaded[code]) {
|
3312
|
+
jvm.$.get(this.params.mapUrlByCode(code, this)).then(function(){
|
3313
|
+
that.mapsLoaded[code] = true;
|
3314
|
+
deferred.resolve();
|
3315
|
+
}, function(){
|
3316
|
+
deferred.reject();
|
3317
|
+
});
|
3318
|
+
} else {
|
3319
|
+
deferred.resolve();
|
3320
|
+
}
|
3321
|
+
return deferred;
|
3322
|
+
},
|
3323
|
+
|
3324
|
+
drillDown: function(name, code){
|
3325
|
+
var currentMap = this.history[this.history.length - 1],
|
3326
|
+
that = this,
|
3327
|
+
focusPromise = currentMap.setFocus({region: code, animate: true}),
|
3328
|
+
downloadPromise = this.downloadMap(code);
|
3329
|
+
|
3330
|
+
focusPromise.then(function(){
|
3331
|
+
if (downloadPromise.state() === 'pending') {
|
3332
|
+
that.spinner.show();
|
3333
|
+
}
|
3334
|
+
});
|
3335
|
+
downloadPromise.always(function(){
|
3336
|
+
that.spinner.hide();
|
3337
|
+
});
|
3338
|
+
this.drillDownPromise = jvm.$.when(downloadPromise, focusPromise);
|
3339
|
+
this.drillDownPromise.then(function(){
|
3340
|
+
currentMap.params.container.hide();
|
3341
|
+
if (!that.maps[name]) {
|
3342
|
+
that.addMap(name, {map: name, multiMapLevel: currentMap.params.multiMapLevel + 1});
|
3343
|
+
} else {
|
3344
|
+
that.maps[name].params.container.show();
|
3345
|
+
}
|
3346
|
+
that.history.push( that.maps[name] );
|
3347
|
+
that.backButton.show();
|
3348
|
+
});
|
3349
|
+
},
|
3350
|
+
|
3351
|
+
goBack: function(){
|
3352
|
+
var currentMap = this.history.pop(),
|
3353
|
+
prevMap = this.history[this.history.length - 1],
|
3354
|
+
that = this;
|
3355
|
+
|
3356
|
+
currentMap.setFocus({scale: 1, x: 0.5, y: 0.5, animate: true}).then(function(){
|
3357
|
+
currentMap.params.container.hide();
|
3358
|
+
prevMap.params.container.show();
|
3359
|
+
prevMap.updateSize();
|
3360
|
+
if (that.history.length === 1) {
|
3361
|
+
that.backButton.hide();
|
3362
|
+
}
|
3363
|
+
prevMap.setFocus({scale: 1, x: 0.5, y: 0.5, animate: true});
|
3364
|
+
});
|
3365
|
+
}
|
3366
|
+
};
|
3367
|
+
|
3368
|
+
jvm.MultiMap.defaultParams = {
|
3369
|
+
mapNameByCode: function(code, multiMap){
|
3370
|
+
return code.toLowerCase()+'_'+multiMap.defaultProjection+'_en';
|
3371
|
+
},
|
3372
|
+
mapUrlByCode: function(code, multiMap){
|
3373
|
+
return 'jquery-jvectormap-data-'+code.toLowerCase()+'-'+multiMap.defaultProjection+'-en.js';
|
3374
|
+
}
|
3375
|
+
}
|
3376
|
+
|
3377
|
+
|
3378
|
+
|
3379
|
+
// World_mill_en code
|
3380
|
+
|
3381
|
+
$.fn.vectorMap('addMap', 'world_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.02513512, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z", "name": "Bangladesh"}, "BE": {"path": "M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z", "name": "Belgium"}, "BF": {"path": "M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z", "name": "Burkina Faso"}, "BG": {"path": "M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z", "name": "Bulgaria"}, "BA": {"path": "M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z", "name": "Bosnia and Herzegovina"}, "BN": {"path": "M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z", "name": "Bolivia"}, "JP": {"path": "M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z", "name": "Japan"}, "BI": {"path": "M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z", "name": "Burundi"}, "BJ": {"path": "M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z", "name": "Benin"}, "BT": {"path": "M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z", "name": "Bhutan"}, "JM": {"path": "M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z", "name": "Jamaica"}, "BW": {"path": "M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z", "name": "Botswana"}, "BR": {"path": "M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z", "name": "Brazil"}, "BS": {"path": "M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z", "name": "The Bahamas"}, "BY": {"path": "M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z", "name": "Belarus"}, "BZ": {"path": "M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z", "name": "Belize"}, "RU": {"path": "M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z", "name": "Russia"}, "RW": {"path": "M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z", "name": "Rwanda"}, "RS": {"path": "M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z", "name": "Republic of Serbia"}, "LT": {"path": "M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z", "name": "Lithuania"}, "LU": {"path": "M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z", "name": "Luxembourg"}, "LR": {"path": "M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z", "name": "Liberia"}, "RO": {"path": "M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z", "name": "Romania"}, "GW": {"path": "M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z", "name": "Guinea Bissau"}, "GT": {"path": "M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z", "name": "Guatemala"}, "GR": {"path": "M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z", "name": "Greece"}, "GQ": {"path": "M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z", "name": "Equatorial Guinea"}, "GY": {"path": "M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z", "name": "Guyana"}, "GE": {"path": "M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z", "name": "Georgia"}, "GB": {"path": "M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z", "name": "United Kingdom"}, "GA": {"path": "M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z", "name": "Gabon"}, "GN": {"path": "M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z", "name": "Guinea"}, "GM": {"path": "M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z", "name": "Gambia"}, "GL": {"path": "M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z", "name": "Greenland"}, "KW": {"path": "M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z", "name": "Kuwait"}, "GH": {"path": "M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z", "name": "Ghana"}, "OM": {"path": "M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z", "name": "Oman"}, "_3": {"path": "M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z", "name": "Somaliland"}, "_2": {"path": "M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z", "name": "Western Sahara"}, "_1": {"path": "M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z", "name": "Kosovo"}, "_0": {"path": "M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z", "name": "Northern Cyprus"}, "JO": {"path": "M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z", "name": "Jordan"}, "HR": {"path": "M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z", "name": "Croatia"}, "HT": {"path": "M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z", "name": "Haiti"}, "HU": {"path": "M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z", "name": "Hungary"}, "HN": {"path": "M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z", "name": "Honduras"}, "PR": {"path": "M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z", "name": "Puerto Rico"}, "PS": {"path": "M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z", "name": "West Bank"}, "PT": {"path": "M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z", "name": "Portugal"}, "PY": {"path": "M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z", "name": "Paraguay"}, "PA": {"path": "M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z", "name": "Panama"}, "PG": {"path": "M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z", "name": "Peru"}, "PK": {"path": "M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z", "name": "Pakistan"}, "PH": {"path": "M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z", "name": "Philippines"}, "PL": {"path": "M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z", "name": "Poland"}, "ZM": {"path": "M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z", "name": "Zambia"}, "EE": {"path": "M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z", "name": "Estonia"}, "EG": {"path": "M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z", "name": "Egypt"}, "ZA": {"path": "M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z", "name": "South Africa"}, "EC": {"path": "M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z", "name": "Ecuador"}, "AL": {"path": "M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z", "name": "Albania"}, "AO": {"path": "M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z", "name": "Angola"}, "KZ": {"path": "M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z", "name": "Kazakhstan"}, "ET": {"path": "M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z", "name": "Ethiopia"}, "ZW": {"path": "M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z", "name": "Zimbabwe"}, "ES": {"path": "M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z", "name": "Spain"}, "ER": {"path": "M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z", "name": "Eritrea"}, "ME": {"path": "M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z", "name": "Montenegro"}, "MD": {"path": "M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z", "name": "Moldova"}, "MG": {"path": "M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z", "name": "Madagascar"}, "MA": {"path": "M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z", "name": "Morocco"}, "UZ": {"path": "M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z", "name": "Uzbekistan"}, "MM": {"path": "M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z", "name": "Myanmar"}, "ML": {"path": "M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z", "name": "Mali"}, "MN": {"path": "M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z", "name": "Mongolia"}, "MK": {"path": "M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z", "name": "Macedonia"}, "MW": {"path": "M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z", "name": "Malawi"}, "MR": {"path": "M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z", "name": "Mauritania"}, "UG": {"path": "M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z", "name": "Uganda"}, "MY": {"path": "M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z", "name": "Malaysia"}, "MX": {"path": "M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z", "name": "Mexico"}, "VU": {"path": "M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z", "name": "Vanuatu"}, "FR": {"path": "M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z", "name": "France"}, "FI": {"path": "M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z", "name": "Finland"}, "FJ": {"path": "M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z", "name": "Fiji"}, "FK": {"path": "M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z", "name": "Falkland Islands"}, "NI": {"path": "M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z", "name": "Nicaragua"}, "NL": {"path": "M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z", "name": "Netherlands"}, "NO": {"path": "M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z", "name": "Norway"}, "NA": {"path": "M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z", "name": "Namibia"}, "NC": {"path": "M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z", "name": "New Caledonia"}, "NE": {"path": "M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z", "name": "Niger"}, "NG": {"path": "M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z", "name": "Nigeria"}, "NZ": {"path": "M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z", "name": "New Zealand"}, "NP": {"path": "M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z", "name": "Nepal"}, "CI": {"path": "M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z", "name": "Ivory Coast"}, "CH": {"path": "M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z", "name": "Switzerland"}, "CO": {"path": "M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z", "name": "Colombia"}, "CN": {"path": "M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z", "name": "China"}, "CM": {"path": "M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z", "name": "Cameroon"}, "CL": {"path": "M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z", "name": "Chile"}, "CA": {"path": "M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z", "name": "Canada"}, "CG": {"path": "M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z", "name": "Republic of the Congo"}, "CF": {"path": "M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z", "name": "Central African Republic"}, "CD": {"path": "M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z", "name": "Democratic Republic of the Congo"}, "CZ": {"path": "M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z", "name": "Czech Republic"}, "CY": {"path": "M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z", "name": "Cyprus"}, "CR": {"path": "M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z", "name": "Costa Rica"}, "CU": {"path": "M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z", "name": "Cuba"}, "SZ": {"path": "M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z", "name": "Swaziland"}, "SY": {"path": "M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z", "name": "Syria"}, "KG": {"path": "M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z", "name": "Kyrgyzstan"}, "KE": {"path": "M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z", "name": "Kenya"}, "SS": {"path": "M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z", "name": "South Sudan"}, "SR": {"path": "M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z", "name": "Suriname"}, "KH": {"path": "M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z", "name": "Cambodia"}, "SV": {"path": "M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z", "name": "El Salvador"}, "SK": {"path": "M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z", "name": "Slovakia"}, "KR": {"path": "M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z", "name": "South Korea"}, "SI": {"path": "M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z", "name": "Slovenia"}, "KP": {"path": "M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z", "name": "North Korea"}, "SO": {"path": "M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z", "name": "Somalia"}, "SN": {"path": "M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z", "name": "Senegal"}, "SL": {"path": "M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z", "name": "Sierra Leone"}, "SB": {"path": "M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z", "name": "Solomon Islands"}, "SA": {"path": "M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z", "name": "Saudi Arabia"}, "SE": {"path": "M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z", "name": "Sudan"}, "DO": {"path": "M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z", "name": "Dominican Republic"}, "DJ": {"path": "M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z", "name": "Djibouti"}, "DK": {"path": "M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z", "name": "Denmark"}, "DE": {"path": "M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z", "name": "Germany"}, "YE": {"path": "M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z", "name": "Yemen"}, "AT": {"path": "M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z", "name": "Austria"}, "DZ": {"path": "M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z", "name": "Algeria"}, "US": {"path": "M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z", "name": "United States of America"}, "LV": {"path": "M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z", "name": "Latvia"}, "UY": {"path": "M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z", "name": "Uruguay"}, "LB": {"path": "M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z", "name": "Lebanon"}, "LA": {"path": "M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z", "name": "Laos"}, "TW": {"path": "M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z", "name": "Taiwan"}, "TT": {"path": "M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z", "name": "Turkey"}, "LK": {"path": "M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z", "name": "Sri Lanka"}, "TN": {"path": "M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z", "name": "Tunisia"}, "TL": {"path": "M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z", "name": "East Timor"}, "TM": {"path": "M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z", "name": "Tajikistan"}, "LS": {"path": "M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z", "name": "Lesotho"}, "TH": {"path": "M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z", "name": "Thailand"}, "TF": {"path": "M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z", "name": "French Southern and Antarctic Lands"}, "TG": {"path": "M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z", "name": "Togo"}, "TD": {"path": "M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z", "name": "Chad"}, "LY": {"path": "M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z", "name": "Libya"}, "AE": {"path": "M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z", "name": "Venezuela"}, "AF": {"path": "M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z", "name": "Afghanistan"}, "IQ": {"path": "M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z", "name": "Iraq"}, "IS": {"path": "M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z", "name": "Iceland"}, "IR": {"path": "M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z", "name": "Iran"}, "AM": {"path": "M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z", "name": "Armenia"}, "IT": {"path": "M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z", "name": "Italy"}, "VN": {"path": "M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z", "name": "Vietnam"}, "AR": {"path": "M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z", "name": "Argentina"}, "AU": {"path": "M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z", "name": "Australia"}, "IL": {"path": "M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z", "name": "Israel"}, "IN": {"path": "M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z", "name": "India"}, "TZ": {"path": "M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z", "name": "Tanzania"}, "AZ": {"path": "M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z", "name": "Azerbaijan"}, "IE": {"path": "M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z", "name": "Ireland"}, "ID": {"path": "M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z", "name": "Indonesia"}, "UA": {"path": "M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z", "name": "Ukraine"}, "QA": {"path": "M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z", "name": "Qatar"}, "MZ": {"path": "M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0});
|