@red-code-mp/mp-builder
Version:
* [Structure](#Structure) * [Route](#Route) * [Endpoints](#Endpoints) * [Table](#Table) * [Lang](#Lang) * [Menu](#Menu) * [Toast](#Toast)
118 lines (110 loc) • 467 kB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./webpack/vendors/custom/jqvmap.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/jqvmap/dist/jquery.vmap.js":
/*!*************************************************!*\
!*** ./node_modules/jqvmap/dist/jquery.vmap.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("/*!\n * JQVMap: jQuery Vector Map Library\n * @author JQVMap <me@peterschmalfeldt.com>\n * @version 1.5.0\n * @link http://jqvmap.com\n * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE\n * @builddate 2016/03/15\n */\n\nvar VectorCanvas = function (width, height, params) {\n this.mode = window.SVGAngle ? 'svg' : 'vml';\n this.params = params;\n\n if (this.mode === 'svg') {\n this.createSvgNode = function (nodeName) {\n return document.createElementNS(this.svgns, nodeName);\n };\n } else {\n try {\n if (!document.namespaces.rvml) {\n document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml');\n }\n this.createVmlNode = function (tagName) {\n return document.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n };\n } catch (e) {\n this.createVmlNode = function (tagName) {\n return document.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n };\n }\n\n document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)');\n }\n\n if (this.mode === 'svg') {\n this.canvas = this.createSvgNode('svg');\n } else {\n this.canvas = this.createVmlNode('group');\n this.canvas.style.position = 'absolute';\n }\n\n this.setSize(width, height);\n};\n\nVectorCanvas.prototype = {\n svgns: 'http://www.w3.org/2000/svg',\n mode: 'svg',\n width: 0,\n height: 0,\n canvas: null\n};\n\nvar ColorScale = function (colors, normalizeFunction, minValue, maxValue) {\n if (colors) {\n this.setColors(colors);\n }\n if (normalizeFunction) {\n this.setNormalizeFunction(normalizeFunction);\n }\n if (minValue) {\n this.setMin(minValue);\n }\n if (minValue) {\n this.setMax(maxValue);\n }\n};\n\nColorScale.prototype = {\n colors: []\n};\n\nvar JQVMap = function (params) {\n params = params || {};\n var map = this;\n var mapData = JQVMap.maps[params.map];\n var mapPins;\n\n if( !mapData){\n throw new Error('Invalid \"' + params.map + '\" map parameter. Please make sure you have loaded this map file in your HTML.');\n }\n\n this.selectedRegions = [];\n this.multiSelectRegion = params.multiSelectRegion;\n\n this.container = params.container;\n\n this.defaultWidth = mapData.width;\n this.defaultHeight = mapData.height;\n\n this.color = params.color;\n this.selectedColor = params.selectedColor;\n this.hoverColor = params.hoverColor;\n this.hoverColors = params.hoverColors;\n this.hoverOpacity = params.hoverOpacity;\n this.setBackgroundColor(params.backgroundColor);\n\n this.width = params.container.width();\n this.height = params.container.height();\n\n this.resize();\n\n jQuery(window).resize(function () {\n var newWidth = params.container.width();\n var newHeight = params.container.height();\n\n if(newWidth && newHeight){\n map.width = newWidth;\n map.height = newHeight;\n map.resize();\n map.canvas.setSize(map.width, map.height);\n map.applyTransform();\n\n var resizeEvent = jQuery.Event('resize.jqvmap');\n jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]);\n\n if(mapPins){\n jQuery('.jqvmap-pin').remove();\n map.pinHandlers = false;\n map.placePins(mapPins.pins, mapPins.mode);\n }\n }\n });\n\n this.canvas = new VectorCanvas(this.width, this.height, params);\n params.container.append(this.canvas.canvas);\n\n this.makeDraggable();\n\n this.rootGroup = this.canvas.createGroup(true);\n\n this.index = JQVMap.mapIndex;\n this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide();\n\n if (params.enableZoom) {\n jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);\n jQuery('<div/>').addClass('jqvmap-zoomout').html('−').appendTo(params.container);\n }\n\n map.countries = [];\n\n for (var key in mapData.paths) {\n var path = this.canvas.createPath({\n path: mapData.paths[key].path\n });\n\n path.setFill(this.color);\n path.id = map.getCountryId(key);\n map.countries[key] = path;\n\n if (this.canvas.mode === 'svg') {\n path.setAttribute('class', 'jqvmap-region');\n } else {\n jQuery(path).addClass('jqvmap-region');\n }\n\n jQuery(this.rootGroup).append(path);\n }\n\n jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {\n var containerPath = e.target,\n code = e.target.id.split('_').pop(),\n labelShowEvent = jQuery.Event('labelShow.jqvmap'),\n regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap');\n\n code = code.toLowerCase();\n\n if (e.type === 'mouseover') {\n jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name]);\n if (!regionMouseOverEvent.isDefaultPrevented()) {\n map.highlight(code, containerPath);\n }\n if (params.showTooltip) {\n map.label.text(mapData.paths[code].name);\n jQuery(params.container).trigger(labelShowEvent, [map.label, code]);\n\n if (!labelShowEvent.isDefaultPrevented()) {\n map.label.show();\n map.labelWidth = map.label.width();\n map.labelHeight = map.label.height();\n }\n }\n } else {\n map.unhighlight(code, containerPath);\n\n map.label.hide();\n jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name]);\n }\n });\n\n jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) {\n\n var targetPath = regionClickEvent.target;\n var code = regionClickEvent.target.id.split('_').pop();\n var mapClickEvent = jQuery.Event('regionClick.jqvmap');\n\n code = code.toLowerCase();\n\n jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name]);\n\n if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) {\n for (var keyPath in mapData.paths) {\n map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill();\n map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill());\n }\n }\n\n if ( !mapClickEvent.isDefaultPrevented()) {\n if (map.isSelected(code)) {\n map.deselect(code, targetPath);\n } else {\n map.select(code, targetPath);\n }\n }\n });\n\n if (params.showTooltip) {\n params.container.mousemove(function (e) {\n if (map.label.is(':visible')) {\n var left = e.pageX - 15 - map.labelWidth;\n var top = e.pageY - 15 - map.labelHeight;\n\n if(left < 0) {\n left = e.pageX + 15;\n }\n if(top < 0) {\n top = e.pageY + 15;\n }\n\n map.label.css({\n left: left,\n top: top\n });\n }\n });\n }\n\n this.setColors(params.colors);\n\n this.canvas.canvas.appendChild(this.rootGroup);\n\n this.applyTransform();\n\n this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);\n\n if (params.values) {\n this.values = params.values;\n this.setValues(params.values);\n }\n\n if (params.selectedRegions) {\n if (params.selectedRegions instanceof Array) {\n for(var k in params.selectedRegions) {\n this.select(params.selectedRegions[k].toLowerCase());\n }\n } else {\n this.select(params.selectedRegions.toLowerCase());\n }\n }\n\n this.bindZoomButtons();\n\n if(params.pins) {\n mapPins = {\n pins: params.pins,\n mode: params.pinMode\n };\n\n this.pinHandlers = false;\n this.placePins(params.pins, params.pinMode);\n }\n\n if(params.showLabels){\n this.pinHandlers = false;\n\n var pins = {};\n for (key in map.countries){\n if (typeof map.countries[key] !== 'function') {\n if( !params.pins || !params.pins[key] ){\n pins[key] = key.toUpperCase();\n }\n }\n }\n\n mapPins = {\n pins: pins,\n mode: 'content'\n };\n\n this.placePins(pins, 'content');\n }\n\n JQVMap.mapIndex++;\n};\n\nJQVMap.prototype = {\n transX: 0,\n transY: 0,\n scale: 1,\n baseTransX: 0,\n baseTransY: 0,\n baseScale: 1,\n width: 0,\n height: 0,\n countries: {},\n countriesColors: {},\n countriesData: {},\n zoomStep: 1.4,\n zoomMaxStep: 4,\n zoomCurStep: 1\n};\n\nJQVMap.xlink = 'http://www.w3.org/1999/xlink';\nJQVMap.mapIndex = 1;\nJQVMap.maps = {};\n\n(function(){\n\n var apiParams = {\n colors: 1,\n values: 1,\n backgroundColor: 1,\n scaleColors: 1,\n normalizeFunction: 1,\n enableZoom: 1,\n showTooltip: 1,\n borderColor: 1,\n borderWidth: 1,\n borderOpacity: 1,\n selectedRegions: 1,\n multiSelectRegion: 1\n };\n\n var apiEvents = {\n onLabelShow: 'labelShow',\n onLoad: 'load',\n onRegionOver: 'regionMouseOver',\n onRegionOut: 'regionMouseOut',\n onRegionClick: 'regionClick',\n onRegionSelect: 'regionSelect',\n onRegionDeselect: 'regionDeselect',\n onResize: 'resize'\n };\n\n jQuery.fn.vectorMap = function (options) {\n\n var defaultParams = {\n map: 'world_en',\n backgroundColor: '#a5bfdd',\n color: '#f4f3f0',\n hoverColor: '#c9dfaf',\n hoverColors: {},\n selectedColor: '#c9dfaf',\n scaleColors: ['#b6d6ff', '#005ace'],\n normalizeFunction: 'linear',\n enableZoom: true,\n showTooltip: true,\n borderColor: '#818181',\n borderWidth: 1,\n borderOpacity: 0.25,\n selectedRegions: null,\n multiSelectRegion: false\n }, map = this.data('mapObject');\n\n if (options === 'addMap') {\n JQVMap.maps[arguments[1]] = arguments[2];\n } else if (options === 'set' && apiParams[arguments[1]]) {\n map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));\n } else if (typeof options === 'string' &&\n typeof map[options] === 'function') {\n return map[options].apply(map, Array.prototype.slice.call(arguments, 1));\n } else {\n jQuery.extend(defaultParams, options);\n defaultParams.container = this;\n this.css({ position: 'relative', overflow: 'hidden' });\n\n map = new JQVMap(defaultParams);\n\n this.data('mapObject', map);\n\n this.unbind('.jqvmap');\n\n for (var e in apiEvents) {\n if (defaultParams[e]) {\n this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);\n }\n }\n\n var loadEvent = jQuery.Event('load.jqvmap');\n jQuery(defaultParams.container).trigger(loadEvent, map);\n\n return map;\n }\n };\n\n})(jQuery);\n\nColorScale.arrayToRgb = function (ar) {\n var rgb = '#';\n var d;\n for (var i = 0; i < ar.length; i++) {\n d = ar[i].toString(16);\n rgb += d.length === 1 ? '0' + d : d;\n }\n return rgb;\n};\n\nColorScale.prototype.getColor = function (value) {\n if (typeof this.normalize === 'function') {\n value = this.normalize(value);\n }\n\n var lengthes = [];\n var fullLength = 0;\n var l;\n\n for (var i = 0; i < this.colors.length - 1; i++) {\n l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));\n lengthes.push(l);\n fullLength += l;\n }\n\n var c = (this.maxValue - this.minValue) / fullLength;\n\n for (i = 0; i < lengthes.length; i++) {\n lengthes[i] *= c;\n }\n\n i = 0;\n value -= this.minValue;\n\n while (value - lengthes[i] >= 0) {\n value -= lengthes[i];\n i++;\n }\n\n var color;\n if (i === this.colors.length - 1) {\n color = this.vectorToNum(this.colors[i]).toString(16);\n } else {\n color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);\n }\n\n while (color.length < 6) {\n color = '0' + color;\n }\n return '#' + color;\n};\n\nColorScale.rgbToArray = function (rgb) {\n rgb = rgb.substr(1);\n return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n};\n\nColorScale.prototype.setColors = function (colors) {\n for (var i = 0; i < colors.length; i++) {\n colors[i] = ColorScale.rgbToArray(colors[i]);\n }\n this.colors = colors;\n};\n\nColorScale.prototype.setMax = function (max) {\n this.clearMaxValue = max;\n if (typeof this.normalize === 'function') {\n this.maxValue = this.normalize(max);\n } else {\n this.maxValue = max;\n }\n};\n\nColorScale.prototype.setMin = function (min) {\n this.clearMinValue = min;\n\n if (typeof this.normalize === 'function') {\n this.minValue = this.normalize(min);\n } else {\n this.minValue = min;\n }\n};\n\nColorScale.prototype.setNormalizeFunction = function (f) {\n if (f === 'polynomial') {\n this.normalize = function (value) {\n return Math.pow(value, 0.2);\n };\n } else if (f === 'linear') {\n delete this.normalize;\n } else {\n this.normalize = f;\n }\n this.setMin(this.clearMinValue);\n this.setMax(this.clearMaxValue);\n};\n\nColorScale.prototype.vectorAdd = function (vector1, vector2) {\n var vector = [];\n for (var i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] + vector2[i];\n }\n return vector;\n};\n\nColorScale.prototype.vectorLength = function (vector) {\n var result = 0;\n for (var i = 0; i < vector.length; i++) {\n result += vector[i] * vector[i];\n }\n return Math.sqrt(result);\n};\n\nColorScale.prototype.vectorMult = function (vector, num) {\n var result = [];\n for (var i = 0; i < vector.length; i++) {\n result[i] = vector[i] * num;\n }\n return result;\n};\n\nColorScale.prototype.vectorSubtract = function (vector1, vector2) {\n var vector = [];\n for (var i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] - vector2[i];\n }\n return vector;\n};\n\nColorScale.prototype.vectorToNum = function (vector) {\n var num = 0;\n for (var i = 0; i < vector.length; i++) {\n num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);\n }\n return num;\n};\n\nJQVMap.prototype.applyTransform = function () {\n var maxTransX, maxTransY, minTransX, minTransY;\n if (this.defaultWidth * this.scale <= this.width) {\n maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n } else {\n maxTransX = 0;\n minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n }\n\n if (this.defaultHeight * this.scale <= this.height) {\n maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n } else {\n maxTransY = 0;\n minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n }\n\n if (this.transY > maxTransY) {\n this.transY = maxTransY;\n } else if (this.transY < minTransY) {\n this.transY = minTransY;\n }\n if (this.transX > maxTransX) {\n this.transX = maxTransX;\n } else if (this.transX < minTransX) {\n this.transX = minTransX;\n }\n\n this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n};\n\nJQVMap.prototype.bindZoomButtons = function () {\n var map = this;\n this.container.find('.jqvmap-zoomin').click(function(){\n map.zoomIn();\n });\n this.container.find('.jqvmap-zoomout').click(function(){\n map.zoomOut();\n });\n};\n\nJQVMap.prototype.deselect = function (cc, path) {\n cc = cc.toLowerCase();\n path = path || jQuery('#' + this.getCountryId(cc))[0];\n\n if (this.isSelected(cc)) {\n this.selectedRegions.splice(this.selectIndex(cc), 1);\n\n jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]);\n path.currentFillColor = path.getOriginalFill();\n path.setFill(path.getOriginalFill());\n } else {\n for (var key in this.countries) {\n this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1);\n this.countries[key].currentFillColor = this.color;\n this.countries[key].setFill(this.color);\n }\n }\n};\n\nJQVMap.prototype.getCountryId = function (cc) {\n return 'jqvmap' + this.index + '_' + cc;\n};\n\nJQVMap.prototype.getPin = function(cc){\n var pinObj = jQuery('#' + this.getPinId(cc));\n return pinObj.html();\n};\n\nJQVMap.prototype.getPinId = function (cc) {\n return this.getCountryId(cc) + '_pin';\n};\n\nJQVMap.prototype.getPins = function(){\n var pins = this.container.find('.jqvmap-pin');\n var ret = {};\n jQuery.each(pins, function(index, pinObj){\n pinObj = jQuery(pinObj);\n var cc = pinObj.attr('for').toLowerCase();\n var pinContent = pinObj.html();\n ret[cc] = pinContent;\n });\n return JSON.stringify(ret);\n};\n\nJQVMap.prototype.highlight = function (cc, path) {\n path = path || jQuery('#' + this.getCountryId(cc))[0];\n if (this.hoverOpacity) {\n path.setOpacity(this.hoverOpacity);\n } else if (this.hoverColors && (cc in this.hoverColors)) {\n path.currentFillColor = path.getFill() + '';\n path.setFill(this.hoverColors[cc]);\n } else if (this.hoverColor) {\n path.currentFillColor = path.getFill() + '';\n path.setFill(this.hoverColor);\n }\n};\n\nJQVMap.prototype.isSelected = function(cc) {\n return this.selectIndex(cc) >= 0;\n};\n\nJQVMap.prototype.makeDraggable = function () {\n var mouseDown = false;\n var oldPageX, oldPageY;\n var self = this;\n\n self.isMoving = false;\n self.isMovingTimeout = false;\n\n var lastTouchCount;\n var touchCenterX;\n var touchCenterY;\n var touchStartDistance;\n var touchStartScale;\n var touchX;\n var touchY;\n\n this.container.mousemove(function (e) {\n\n if (mouseDown) {\n self.transX -= (oldPageX - e.pageX) / self.scale;\n self.transY -= (oldPageY - e.pageY) / self.scale;\n\n self.applyTransform();\n\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n\n self.isMoving = true;\n if (self.isMovingTimeout) {\n clearTimeout(self.isMovingTimeout);\n }\n\n self.container.trigger('drag');\n }\n\n return false;\n\n }).mousedown(function (e) {\n\n mouseDown = true;\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n\n return false;\n\n }).mouseup(function () {\n\n mouseDown = false;\n\n clearTimeout(self.isMovingTimeout);\n self.isMovingTimeout = setTimeout(function () {\n self.isMoving = false;\n }, 100);\n\n return false;\n\n }).mouseout(function () {\n\n if(mouseDown && self.isMoving){\n\n clearTimeout(self.isMovingTimeout);\n self.isMovingTimeout = setTimeout(function () {\n mouseDown = false;\n self.isMoving = false;\n }, 100);\n\n return false;\n }\n });\n\n jQuery(this.container).bind('touchmove', function (e) {\n\n var offset;\n var scale;\n var touches = e.originalEvent.touches;\n var transformXOld;\n var transformYOld;\n\n if (touches.length === 1) {\n if (lastTouchCount === 1) {\n\n if(touchX === touches[0].pageX && touchY === touches[0].pageY){\n return;\n }\n\n transformXOld = self.transX;\n transformYOld = self.transY;\n\n self.transX -= (touchX - touches[0].pageX) / self.scale;\n self.transY -= (touchY - touches[0].pageY) / self.scale;\n\n self.applyTransform();\n\n if (transformXOld !== self.transX || transformYOld !== self.transY) {\n e.preventDefault();\n }\n\n self.isMoving = true;\n if (self.isMovingTimeout) {\n clearTimeout(self.isMovingTimeout);\n }\n }\n\n touchX = touches[0].pageX;\n touchY = touches[0].pageY;\n\n } else if (touches.length === 2) {\n\n if (lastTouchCount === 2) {\n scale = Math.sqrt(\n Math.pow(touches[0].pageX - touches[1].pageX, 2) +\n Math.pow(touches[0].pageY - touches[1].pageY, 2)\n ) / touchStartDistance;\n\n self.setScale(\n touchStartScale * scale,\n touchCenterX,\n touchCenterY\n );\n\n e.preventDefault();\n\n } else {\n\n offset = jQuery(self.container).offset();\n if (touches[0].pageX > touches[1].pageX) {\n touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;\n } else {\n touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;\n }\n\n if (touches[0].pageY > touches[1].pageY) {\n touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;\n } else {\n touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;\n }\n\n touchCenterX -= offset.left;\n touchCenterY -= offset.top;\n touchStartScale = self.scale;\n\n touchStartDistance = Math.sqrt(\n Math.pow(touches[0].pageX - touches[1].pageX, 2) +\n Math.pow(touches[0].pageY - touches[1].pageY, 2)\n );\n }\n }\n\n lastTouchCount = touches.length;\n });\n\n jQuery(this.container).bind('touchstart', function () {\n lastTouchCount = 0;\n });\n\n jQuery(this.container).bind('touchend', function () {\n lastTouchCount = 0;\n });\n};\n\nJQVMap.prototype.placePins = function(pins, pinMode){\n var map = this;\n\n if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) {\n pinMode = 'content';\n }\n\n if(pinMode === 'content') {//treat pin as content\n jQuery.each(pins, function(index, pin){\n if(jQuery('#' + map.getCountryId(index)).length === 0){\n return;\n }\n\n var pinIndex = map.getPinId(index);\n var $pin = jQuery('#' + pinIndex);\n if($pin.length > 0){\n $pin.remove();\n }\n map.container.append('<div id=\"' + pinIndex + '\" for=\"' + index + '\" class=\"jqvmap-pin\" style=\"position:absolute\">' + pin + '</div>');\n });\n } else { //treat pin as id of an html content\n jQuery.each(pins, function(index, pin){\n if(jQuery('#' + map.getCountryId(index)).length === 0){\n return;\n }\n var pinIndex = map.getPinId(index);\n var $pin = jQuery('#' + pinIndex);\n if($pin.length > 0){\n $pin.remove();\n }\n map.container.append('<div id=\"' + pinIndex + '\" for=\"' + index + '\" class=\"jqvmap-pin\" style=\"position:absolute\"></div>');\n $pin.append(jQuery('#' + pin));\n });\n }\n\n this.positionPins();\n if(!this.pinHandlers){\n this.pinHandlers = true;\n var positionFix = function(){\n map.positionPins();\n };\n this.container.bind('zoomIn', positionFix)\n .bind('zoomOut', positionFix)\n .bind('drag', positionFix);\n }\n};\n\nJQVMap.prototype.positionPins = function(){\n var map = this;\n var pins = this.container.find('.jqvmap-pin');\n jQuery.each(pins, function(index, pinObj){\n pinObj = jQuery(pinObj);\n var countryId = map.getCountryId(pinObj.attr('for').toLowerCase());\n var countryObj = jQuery('#' + countryId);\n\n var bbox = document.getElementById(countryId).getBBox();\n var position = countryObj.position();\n\n var scale = map.scale;\n\n var left = position.left + (bbox.width / 2) * scale - pinObj.width() / 2,\n top = position.top + (bbox.height / 2) * scale - pinObj.height() / 2;\n\n pinObj.css('left', left).css('top', top);\n });\n};\n\nJQVMap.prototype.removePin = function(cc) {\n cc = cc.toLowerCase();\n jQuery('#' + this.getPinId(cc)).remove();\n};\n\nJQVMap.prototype.removePins = function(){\n this.container.find('.jqvmap-pin').remove();\n};\n\nJQVMap.prototype.reset = function () {\n for (var key in this.countries) {\n this.countries[key].setFill(this.color);\n }\n this.scale = this.baseScale;\n this.transX = this.baseTransX;\n this.transY = this.baseTransY;\n this.applyTransform();\n};\n\nJQVMap.prototype.resize = function () {\n var curBaseScale = this.baseScale;\n if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n this.baseScale = this.height / this.defaultHeight;\n this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n } else {\n this.baseScale = this.width / this.defaultWidth;\n this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n }\n this.scale *= this.baseScale / curBaseScale;\n this.transX *= this.baseScale / curBaseScale;\n this.transY *= this.baseScale / curBaseScale;\n};\n\nJQVMap.prototype.select = function (cc, path) {\n cc = cc.toLowerCase();\n path = path || jQuery('#' + this.getCountryId(cc))[0];\n\n if (!this.isSelected(cc)) {\n if (this.multiSelectRegion) {\n this.selectedRegions.push(cc);\n } else {\n this.selectedRegions = [cc];\n }\n\n jQuery(this.container).trigger('regionSelect.jqvmap', [cc]);\n if (this.selectedColor && path) {\n path.currentFillColor = this.selectedColor;\n path.setFill(this.selectedColor);\n }\n }\n};\n\nJQVMap.prototype.selectIndex = function (cc) {\n cc = cc.toLowerCase();\n for (var i = 0; i < this.selectedRegions.length; i++) {\n if (cc === this.selectedRegions[i]) {\n return i;\n }\n }\n return -1;\n};\n\nJQVMap.prototype.setBackgroundColor = function (backgroundColor) {\n this.container.css('background-color', backgroundColor);\n};\n\nJQVMap.prototype.setColors = function (key, color) {\n if (typeof key === 'string') {\n this.countries[key].setFill(color);\n this.countries[key].setAttribute('original', color);\n } else {\n var colors = key;\n\n for (var code in colors) {\n if (this.countries[code]) {\n this.countries[code].setFill(colors[code]);\n this.countries[code].setAttribute('original', colors[code]);\n }\n }\n }\n};\n\nJQVMap.prototype.setNormalizeFunction = function (f) {\n this.colorScale.setNormalizeFunction(f);\n\n if (this.values) {\n this.setValues(this.values);\n }\n};\n\nJQVMap.prototype.setScale = function (scale) {\n this.scale = scale;\n this.applyTransform();\n};\n\nJQVMap.prototype.setScaleColors = function (colors) {\n this.colorScale.setColors(colors);\n\n if (this.values) {\n this.setValues(this.values);\n }\n};\n\nJQVMap.prototype.setValues = function (values) {\n var max = 0,\n min = Number.MAX_VALUE,\n val;\n\n for (var cc in values) {\n cc = cc.toLowerCase();\n val = parseFloat(values[cc]);\n\n if (isNaN(val)) {\n continue;\n }\n if (val > max) {\n max = values[cc];\n }\n if (val < min) {\n min = val;\n }\n }\n\n if (min === max) {\n max++;\n }\n\n this.colorScale.setMin(min);\n this.colorScale.setMax(max);\n\n var colors = {};\n for (cc in values) {\n cc = cc.toLowerCase();\n val = parseFloat(values[cc]);\n colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val);\n }\n this.setColors(colors);\n this.values = values;\n};\n\nJQVMap.prototype.unhighlight = function (cc, path) {\n cc = cc.toLowerCase();\n path = path || jQuery('#' + this.getCountryId(cc))[0];\n path.setOpacity(1);\n if (path.currentFillColor) {\n path.setFill(path.currentFillColor);\n }\n};\n\nJQVMap.prototype.zoomIn = function () {\n var map = this;\n var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);\n\n if (map.zoomCurStep < map.zoomMaxStep) {\n map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;\n map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;\n map.setScale(map.scale * map.zoomStep);\n map.zoomCurStep++;\n\n var $slider = jQuery('#zoomSlider');\n\n $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta);\n\n map.container.trigger('zoomIn');\n }\n};\n\nJQVMap.prototype.zoomOut = function () {\n var map = this;\n var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);\n\n if (map.zoomCurStep > 1) {\n map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;\n map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;\n map.setScale(map.scale / map.zoomStep);\n map.zoomCurStep--;\n\n var $slider = jQuery('#zoomSlider');\n\n $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta);\n\n map.container.trigger('zoomOut');\n }\n};\n\nVectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) {\n if (this.mode === 'svg') {\n this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');\n } else {\n this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);\n this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;\n }\n};\n\nVectorCanvas.prototype.createGroup = function (isRoot) {\n var node;\n if (this.mode === 'svg') {\n node = this.createSvgNode('g');\n } else {\n node = this.createVmlNode('group');\n node.style.width = this.width + 'px';\n node.style.height = this.height + 'px';\n node.style.left = '0px';\n node.style.top = '0px';\n node.coordorigin = '0 0';\n node.coordsize = this.width + ' ' + this.height;\n }\n\n if (isRoot) {\n this.rootGroup = node;\n }\n return node;\n};\n\nVectorCanvas.prototype.createPath = function (config) {\n var node;\n if (this.mode === 'svg') {\n node = this.createSvgNode('path');\n node.setAttribute('d', config.path);\n\n if (this.params.borderColor !== null) {\n node.setAttribute('stroke', this.params.borderColor);\n }\n if (this.params.borderWidth > 0) {\n node.setAttribute('stroke-width', this.params.borderWidth);\n node.setAttribute('stroke-linecap', 'round');\n node.setAttribute('stroke-linejoin', 'round');\n }\n if (this.params.borderOpacity > 0) {\n node.setAttribute('stroke-opacity', this.params.borderOpacity);\n }\n\n node.setFill = function (color) {\n this.setAttribute('fill', color);\n if (this.getAttribute('original') === null) {\n this.setAttribute('original', color);\n }\n };\n\n node.getFill = function () {\n return this.getAttribute('fill');\n };\n\n node.getOriginalFill = function () {\n return this.getAttribute('original');\n };\n\n node.setOpacity = function (opacity) {\n this.setAttribute('fill-opacity', opacity);\n };\n } else {\n node = this.createVmlNode('shape');\n node.coordorigin = '0 0';\n node.coordsize = this.width + ' ' + this.height;\n node.style.width = this.width + 'px';\n node.style.height = this.height + 'px';\n node.fillcolor = JQVMap.defaultFillColor;\n node.stroked = false;\n node.path = VectorCanvas.pathSvgToVml(config.path);\n\n var scale = this.createVmlNode('skew');\n scale.on = true;\n scale.matrix = '0.01,0,0,0.01,0,0';\n scale.offset = '0,0';\n\n node.appendChild(scale);\n\n var fill = this.createVmlNode('fill');\n node.appendChild(fill);\n\n node.setFill = function (color) {\n this.getElementsByTagName('fill')[0].color = color;\n if (this.getAttribute('original') === null) {\n this.setAttribute('original', color);\n }\n };\n\n node.getFill = function () {\n return this.getElementsByTagName('fill')[0].color;\n };\n node.getOriginalFill = function () {\n return this.getAttribute('original');\n };\n node.setOpacity = function (opacity) {\n this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';\n };\n }\n return node;\n};\n\nVectorCanvas.prototype.pathSvgToVml = function (path) {\n var result = '';\n var cx = 0, cy = 0, ctrlx, ctrly;\n\n return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\\d+)?(?:\\.\\d+)?,?\\s?)+)/g, function (segment, letter, coords) {\n coords = coords.replace(/(\\d)-/g, '$1,-').replace(/\\s+/g, ',').split(',');\n if (!coords[0]) {\n coords.shift();\n }\n\n for (var i = 0, l = coords.length; i < l; i++) {\n coords[i] = Math.round(100 * coords[i]);\n }\n\n switch (letter) {\n case 'm':\n cx += coords[0];\n cy += coords[1];\n result = 't' + coords.join(',');\n break;\n\n case 'M':\n cx = coords[0];\n cy = coords[1];\n result = 'm' + coords.join(',');\n break;\n\n case 'l':\n cx += coords[0];\n cy += coords[1];\n result = 'r' + coords.join(',');\n break;\n\n case 'L':\n cx = coords[0];\n cy = coords[1];\n result = 'l' + coords.join(',');\n break;\n\n case 'h':\n cx += coords[0];\n result = 'r' + coords[0] + ',0';\n break;\n\n case 'H':\n cx = coords[0];\n result = 'l' + cx + ',' + cy;\n break;\n\n case 'v':\n cy += coords[0];\n result = 'r0,' + coords[0];\n break;\n\n case 'V':\n cy = coords[0];\n result = 'l' + cx + ',' + cy;\n break;\n\n case 'c':\n ctrlx = cx + coords[coords.length - 4];\n ctrly = cy + coords[coords.length - 3];\n cx += coords[coords.length - 2];\n cy += coords[coords.length - 1];\n result = 'v' + coords.join(',');\n break;\n\n case 'C':\n ctrlx = coords[coords.length - 4];\n ctrly = coords[coords.length - 3];\n cx = coords[coords.length - 2];\n cy = coords[coords.length - 1];\n result = 'c' + coords.join(',');\n break;\n\n case 's':\n coords.unshift(cy - ctrly);\n coords.unshift(cx - ctrlx);\n ctrlx = cx + coords[coords.length - 4];\n ctrly = cy + coords[coords.length - 3];\n cx += coords[coords.length - 2];\n cy += coords[coords.length - 1];\n result = 'v' + coords.join(',');\n break;\n\n case 'S':\n coords.unshift(cy + cy - ctrly);\n coords.unshift(cx + cx - ctrlx);\n ctrlx = coords[coords.length - 4];\n ctrly = coords[coords.length - 3];\n cx = coords[coords.length - 2];\n cy = coords[coords.length - 1];\n result = 'c' + coords.join(',');\n break;\n\n default:\n break;\n }\n\n return result;\n\n }).replace(/z/g, '');\n};\n\nVectorCanvas.prototype.setSize = function (width, height) {\n if (this.mode === 'svg') {\n this.canvas.setAttribute('width', width);\n this.canvas.setAttribute('height', height);\n } else {\n this.canvas.style.width = width + 'px';\n this.canvas.style.height = height + 'px';\n this.canvas.coordsize = width + ' ' + height;\n this.canvas.coordorigin = '0 0';\n if (this.rootGroup) {\n var paths = this.rootGroup.getElementsByTagName('shape');\n for (var i = 0, l = paths.length; i < l; i++) {\n paths[i].coordsize = width + ' ' + height;\n paths[i].style.width = width + 'px';\n paths[i].style.height = height + 'px';\n }\n this.rootGroup.coordsize = width + ' ' + height;\n this.rootGroup.style.width = width + 'px';\n this.rootGroup.style.height = height + 'px';\n }\n }\n this.width = width;\n this.height = height;\n};\n\n\n//# sourceURL=webpack:///./node_modules/jqvmap/dist/jquery.vmap.js?");
/***/ }),
/***/ "./node_modules/jqvmap/dist/jqvmap.css":
/*!*********************************************!*\
!*** ./node_modules/jqvmap/dist/jqvmap.css ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./node_modules/jqvmap/dist/jqvmap.css?");
/***/ }),
/***/ "./node_modules/jqvmap/dist/maps/jquery.vmap.europe.js":
/*!*************************************************************!*\
!*** ./node_modules/jqvmap/dist/maps/jquery.vmap.europe.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("/** Add Europe Map Data Points */\njQuery.fn.vectorMap('addMap', 'europe_en', {\"width\":680,\"height\":520,\"paths\":{\"gl\":{\"path\":\"M13.47,93.57C12.35,92.52 12.34,90 10.44,89.14 10.62,88.14 13.84,87.66 11.35,86.39 10.05,87.17 9.25,86.92 8.71,87.58 6.27,88.12 8.6,85.09 6.17,85.17 5.23,84.47 10.33,84.75 9.98,83.14 11.32,83.4 14.67,82.04 12.37,81.03 11.23,81.19 6.54,82.06 10.06,81.32 13.04,80.64 9.92,76.6 8.71,79.05 9.24,77.06 11.03,78.05 12.88,77.78 14.68,74.59 9.38,77.17 8.23,75.54 7.26,73.61 12.43,77.09 11.48,74.6c2.44,-0.76 -0.97,1.23 1.21,1.43 1,0.07 3.06,0.24 1.26,-0.8C15.39,74.51 14.27,73.05 14.04,72.76 16.26,70.08 9.73,69.39 11.65,72.54 9.43,70.77 7.4,69.72 5.62,68.37 4.84,67.27 3.62,65.14 5.75,64.54 6.27,63.17 3.83,63.23 6.08,62.64 8.52,60.62 3.8,58.38 3.79,56.87 4.78,56.07 3.39,53.57 4.92,55.82c2,1.48 -1.5,0.05 -0.41,1.67 0.7,1.18 4.94,4.58 4.09,1.22C7.96,57.37 6.11,57.21 8.09,56.47 5.75,56.14 4.83,52.58 8.11,53.61c1.58,0.65 2.17,-1 2.13,-1.24 1.86,-0.56 0.99,-3.89 0.14,-5.02 -2.29,-0.92 1.59,-2.34 -1.23,-2.91 0.6,-3.73 4.98,-2.29 7.51,-3.37 2.78,-1.33 -1.33,-1.73 -1.69,-3.06 -3.07,-1.99 2.8,-0.5 3.28,-2.76 2.87,0.22 -2.67,-2.82 -1.49,-3.84 1.34,0.59 4.57,3.1 4.27,-0.2C20.58,29.48 17.09,31.14 17.33,29.6c1.78,1.02 0.79,-3.69 2.33,-1.12 1.76,1.21 4.05,-0.81 1.11,-1.21 -0.72,-0.16 1.96,-1.91 2.18,-0.31 2.04,0.89 2.39,3.26 4.86,3.29 1.12,-1.58 -2.89,-2.38 -0.16,-2.31 1.35,-1.83 -5.03,-0.94 -1.14,-2.29 1.39,-1.55 1.81,4.29 2.64,1.36 -0.57,-1.39 -0.41,-4.67 1.53,-2.59 0.16,2.02 -2.74,3.73 -1.03,6.23 2.7,1.13 0.11,-4.85 3.69,-4.25 2.74,-0.7 0.37,-3.01 -1.39,-3.16 0.93,-1.59 -0.48,-0.52 -0.91,-1.1 -1.26,0.42 -2.63,-0.27 -1.15,-1.19 -0.81,-1.9 -3.85,0.74 -5.54,0.53 -3.44,0.64 1.14,-2.76 2.36,-3.3 2.28,-0.77 4.66,2.97 6.55,0.04C34.81,17.14 33.04,17.79 32.17,17.97 30.61,18.81 30.38,17.32 30.54,16.77 29.14,17.79 26.4,16.27 29.42,16.34 29.89,14.12 31.85,14.39 33.58,13.44c0.27,-2.21 -3.96,0.03 -1.92,-1.94 2.34,1.37 5.29,0.49 7.37,1.6 0.49,1.25 2.93,3.07 2.07,0.58C40.16,10.86 37.07,10.79 34.89,10.94 32.01,10.71 38.39,8.92 36.45,6.69 35.49,6.8 33.31,6.65 34.75,5.53c1.74,0.57 3.45,1.31 2.13,3.63 0.97,-0.77 3.6,0.14 4.92,-0.01C42.62,6.51 37.36,8.29 39.31,5.97 39.94,4.69 35.39,5.71 36.07,3.41c2.18,-0.52 6.21,0.1 8.48,1.64 1.78,-0.72 2.84,-0.23 4.07,0.55 1.73,-0.23 3.46,0.06 2.78,2.25C52.75,9.86 54.51,8.35 52.72,6.73 52.71,4.07 54.56,10.07 55.78,8.98 56.01,5.87 52.57,4.02 49.87,3.57 48.45,2.66 43.96,4.29 45.02,2.48 44.96,1.07 43.75,0.16 45.71,1.28 47.56,3.52 50.55,-0.47 53.01,0.78 55.13,-0.05 52.02,4.62 54.57,4.07 55.09,3.62 56.43,7.62 57.26,5.53 57.36,3.28 54.5,4.61 54.71,2.93 54.66,0.68 56.28,0.89 57.93,0.78 59.1,1.36 57.92,5.72 60.98,5.64 61.74,4.33 57.63,0.17 61.09,2.11 61.53,3.09 65.18,3.43 63.42,2.17 61.88,1.53 60.02,-0.12 62.69,1.24c1.18,0.74 1.27,-0.27 2.37,-0.09 0.49,-0.8 2.06,-0.17 3.01,-0.37 45.89,0 91.78,0 137.67,0 0.61,1.21 1.15,3.04 -0.24,1.09 -2.48,-0.7 1.23,2.94 1.58,3.94 1.63,2.86 -1.86,0.67 -3.36,1.88 1.28,-1.72 -2.26,-4.24 -1.57,-1.36 0.03,2.25 1.64,3.73 3.68,2.39 1.03,0.77 -1.42,2.8 -1.62,3.53 -3.09,0.12 0.02,1.62 1.04,2.22 0.66,2.09 4.04,0.64 2.3,3.22 -1.05,1.95 -3.92,1.82 -3.21,-0.86 0.14,-3.28 -4.67,-1.36 -4.04,-5.02 -2.02,-0.71 -0.18,3.84 -2.96,2.48 -0.73,0.74 0.41,1.75 -1.42,1.32 -2.61,0.54 1.71,4.84 -0.38,4.25 -1.39,0.66 -1.21,4.72 0.33,2.08 -0.04,-1.13 1.18,-4.09 2.39,-2.05 0.43,1.69 3.14,3.16 0.34,3.59 0.86,3.33 -3.29,2.48 -4.22,0.42 -0.56,1.42 -4.92,2.25 -4.96,-1.01 -1.09,-1.09 -0.61,-6.28 0.38,-2.79 -0.38,2.15 4.88,3.94 3.74,1.34 -3.75,0.99 -2.13,-7.24 -6.06,-4.79 -0.93,1.3 -1.66,1.94 -1.57,-0.09 0.87,-1.48 -0.65,-6.36 -1.62,-2.76 -0.29,1.71 1.87,5.7 -1.38,4.23 -1.61,0.79 -3.43,1.95 -3.68,-0.56 -1.68,-1 0.16,-4.48 -2.68,-3.04 -0.67,1.11 2.68,6.25 0.02,3.71 -0.94,-1.89 -3.02,-1.6 -4.56,-0.77 1.83,0.09 2.37,0.85 0.57,2.18 0.59,2.05 2.81,-2.2 3.66,0.12 1.38,0.4 3.13,-0.11 3.81,2.17 2.43,3.24 -2.95,0.83 -4.01,1.04 -0.05,-1.82 -4.79,-3.3 -3.23,-1.13 1.49,0.95 1.71,0.82 0.15,1.51 -1.1,2.37 1.53,3.48 2.9,1.87 3.12,-1.53 5.02,4.79 1.15,3.53 -2.62,-0.97 -1.48,2.05 -3.89,2.7 -0.43,2.18 2.56,-0.04 2.88,-0.79 2.47,-0.74 2.4,2.46 3.26,3.28 -2.41,2.08 2.06,1.61 0.72,3.86 0.87,0.94 2.37,2.01 0.05,2.28 -2.05,0.35 -0.86,2.02 0.59,1.45 -1.67,-0.11 -1.69,1.85 -1.36,2.27 -1.73,0.52 -2.08,4.37 -0.55,3.78 -0.25,-2.23 4.33,-2.23 2.08,-0.24 -2.82,-0.46 -0.7,2.99 -3.43,2.2 2.08,0.81 0.22,1 -1.03,1.19 -1.32,0.16 3.49,1.1 1.39,1.26 -1.9,0.07 -0.29,1.99 -2.31,1.42 1.18,0.54 1.34,1.84 1.35,2.8 -2.18,2.04 -4.44,-0.74 -2.18,-2.64 1.63,-0.69 0.76,-4.19 -0.17,-2.1 -0.64,2.71 -4.66,4.66 -4.98,0.68 -0.13,-3.43 1.98,-6.57 2.12,-10.01 -0.26,-1.47 -2.38,-1.12 -1.92,-3.26 0.2,-2.67 -2.43,-4.09 -3.97,-4.66 0.54,-2.82 0.04,-5.39 -1.15,-7.72 0.49,-2.96 -3.2,-2.36 -2.3,0.29 0.39,1.99 2.16,3.98 1.82,5.79 -0.98,-1.18 -4.72,-2.37 -4.53,0.09 1.53,0.74 4.96,0.32 3.23,3.09 -0.36,0.92 2.65,-0.97 2.92,1.14 1.39,1.16 4.2,3.13 1.09,4.33 -2.3,0.81 -7.78,0.76 -7.23,-2.79 1.56,-1.72 -2.19,-2.27 -1.32,0.16 -1.72,-2.55 -3.53,-0.09 -1.9,1.66 -2.13,2.01 -4.41,0.62 -6.81,0.57 -2.19,2.71 4.76,1.16 2.08,3.05 0.58,1.9 4.08,1.91 5.81,2.83 1.96,1.43 -0.47,2.15 -1.35,0.46 -1.82,-1.08 -3.45,2.21 -4.74,-0.62 -0.64,-2.28 -4.68,1.1 -2.47,0.81 1.98,0.42 2.27,5.38 5.07,2.98 1.84,-3.35 3.57,2.14 6.26,0.44 1.29,-0.17 2.13,-0.02 0.67,0.65 1.09,1.24 2.33,0.17 2.6,1.96 1.19,2.8 4.25,5.41 6.32,6.4 -0.65,1.36 -3.26,-1.74 -3.14,1.07 -0.24,-1.71 -1.8,-0.78 -1.41,0.45 -1.2,-0.78 -1.84,-2.07 -1.82,0.08 -0.39,2.77 -2.92,-1.74 -2.76,-0.46 0.55,1.51 -0.55,2.28 -0.85,0.45 -2.38,-1.66 -2.14,3.66 -3.7,0.79 -1.88,-0.98 -0.85,3.28 -2.38,0.99 -2,-0.69 -1.48,2.95 -3.73,1.98 -1.43,0.57 -1.73,-1.87 -2.48,0.33 -1.28,0.15 -2.02,-1.77 -3.67,-0.49 -1.51,-0.59 -3.89,-0.69 -5.18,-1.79 -1.83,0.4 -3.94,-2.71 -4.99,0.05 -1.52,0.2 0.6,-5.44 -2.51,-2.84 -0.5,1.46 -2.44,2.79 -1.46,0.41 -0.04,-2.08 -3.47,-2.35 -1.81,-0.01 -0.33,2.95 -2.47,-1.46 -3.31,-2.22 2.66,-0.66 -1.9,-3.4 0.58,-4.85 0.98,-1.25 -0.43,-3.9 -1.29,-1.57 -2.2,1.2 0.59,4.8 -2.3,3.1 0.07,1.58 0.73,2.33 -0.49,2.37 -0.31,3.19 -2.4,-0.77 -3.7,1.08 -1.26,-0.57 -3.86,-0.58 -3.24,0.73 -1.86,1.54 -5.17,-0.4 -5.06,3.18 -2.02,-0.95 -3.43,1.13 -4.24,1.49 -0.67,-0.74 -1.24,2.48 -2,1.23 2.12,-2.45 -2.15,-1.8 -1.8,0.58 -2.16,1.39 -3.92,0.18 -2.08,-1.7 -1.67,0.05 -3.09,2.47 -2.5,-0.4 -0.88,-2.96 -1.92,-0.22 -2,1.13 -1.96,-0.26 -4.27,2.16 -3.76,-0.97 -0.78,-1.12 -2.93,1.49 -3.4,-0.02 1.83,-0.91 0.7,-3.4 -0.63,-1.07 -0.78,1.04 -1.78,1.59 -1.04,-0.05 -2.35,-3.54 3.85,-1.66 4.59,-3.73 -0.17,-1.96 -2.75,-5.32 -4.26,-2.64 1.79,0.66 -1.44,2.8 -2.07,2.43 -1.51,-3.02 -4.63,-0.57 -2.13,1.56 0.17,1.83 -2.38,1.81 -1.85,-0.14 -1.36,-2.38 -2.64,3.42 -2.69,-0.09 0.92,-1.47 0.05,-4.47 -1.39,-1.81 0.69,-2.4 -1.59,-1.67 -2.42,-0.69 -1.63,-2.6 -2.81,-0.08 -1.32,1.39 -0.12,2.09 -5.82,3.27 -3.43,0.33 -0.7,-1.39 -2.14,-1.09 -2.9,-2.54 -1.31,0.12 -1.87,1.12 -2.63,1.96 -0.18,2.43 -0.75,4.74 -2.05,6.98 -0.56,-1.99 -3.06,-1.81 -4.45,-3.2 -2.37,1.32 0.55,4.85 0.85,5.51 -2.93,-1.09 -0.49,5.23 -3.18,2.66C53.03,69.44 53.8,64.37 51.35,66.72c-0.01,1.25 1.67,5.14 1.03,4.67 -0.53,-2.51 -2.88,0.37 -2.61,-2.21 -1.56,-2.63 -4.32,1.46 -2.75,2.77 0.01,1.17 -1.56,2.39 -0.5,0.42 0.86,-3.51 -4.59,-2.97 -3.27,0.28 1.49,1.65 -0.07,2.95 -1.09,0.84 -1.55,-1.63 -4.28,0.31 -4.69,-2.84 -1.38,-1.87 -1.94,1.56 -0.77,2.26 -0.06,1.31 -0.47,2.49 -0.74,0.56 -1.54,-2.22 -1.58,2.78 -0.86,3.53 1.64,2.36 -5.86,1.67 -2.64,3.82 2.3,1.03 -2.22,1.12 -2.82,0.61 -1.74,0.43 1.87,2.58 -0.75,1.83C27.52,82.87 27.84,78.97 25.72,81.05c-0.33,1.79 3.97,2.08 0.81,3.67C24.18,85.6 27.77,81.48 24.7,81.96c-1.65,-0.58 -3.25,0.94 -2.07,2.52 -0.13,-1.56 -3.34,-2.97 -2.3,-0.65 0.92,1 3.65,4.19 0.68,3.11 -0.39,-1.36 -2.18,-3.54 -2.55,-1.53 -2.1,0.36 1.98,3.44 0.79,3.95 -0.52,-1.87 -2.86,-1.68 -1.64,0.35 -0.16,0.51 -2.67,-2.78 -2.9,-4.29 -1.64,-2.64 -1.84,0.81 -1.4,1.86 -0.78,1.52 2.24,0.79 1.57,2.42 -1.75,-0.73 -3.2,1.28 -0.75,1.28 -0.16,0.78 0.34,2.28 -0.65,2.59z M34.12,18.3c-1.05,0.6 -2.47,3.81 -0.57,3.47 1.95,-0.22 4.06,-4.82 0.57,-3.47z m-22.97,56.17c-2.31,-0.35 -0.79,-1.58 0,0z M2.14,66.59c-1.38,-1.11 -0.95,-1.35 0.46,-0.36 -0.18,-0.08 -0.27,0.6 -0.46,0.36z m168.23,-6.32c-0.28,-1.85 2.85,0.02 0.03,0l-0.03,0z M7.85,51.96c-0.57,-0.92 1.55,0.27 0,0z m1.18,-1.63C7.41,50.26 7.17,48.77 8.95,49.87 10,50.07 10.77,49.96 9.03,50.33z M184.09,37.53c-0.77,-1.48 -1.43,-4.23 -2.73,-6.24 -2.01,-2.67 1.21,-6.02 3.05,-2.64 0.95,1.04 0.93,3.38 1.44,4.42 -4.98,-0.16 0.39,3.51 -1.76,4.46z M23.01,25.35c-1.12,-0.81 -0.79,-3.25 0.17,-0.92 0.17,0.37 -0.49,0.58 -0.17,0.92z M209.99,8.88c0.65,-1.41 0.2,-3.29 -1.61,-3.21 -0.07,-1.5 -1.95,-5.46 0.62,-4.89 1.44,0 2.88,0 4.31,0 1.06,2.38 -1.6,4.58 -1.58,7.24 -0.32,0.7 -1.06,0.8 -1.74,0.86z M44.32,3.05c-1.74,-0.98 -6.31,0.12 -6.14,-2.09 1.47,1.81 3.05,0.95 2.25,-0.17 2.2,-0.52 2.82,0.46 3.89,2.27z\",\"name\":\"Greenland\"},\"is\":{\"path\":\"m151.61,141.44c-2.42,-0.05 -4.73,-1.12 -5.95,-3.36 -0.71,-2.06 -4.34,-1.68 -3.81,-4.38 0.8,-0.95 3.4,-0.95 1.03,-1.6 -1.69,0.92 -0.37,-1.61 -2.18,-0.86 -0.88,-0.03 -1.32,-2.12 -2.96,-2.05 -1.43,-1.13 -6,-1.27 -4.53,-3.48 1.4,1.45 5.16,1.15 5.29,-1.63 0.95,-0.08 4.39,1.14 2.46,-0.91 -1.28,-0.31 -3.16,-1.27 -0.58,-1.35 2.41,0.51 2.39,-2.69 -0.02,-1.57 -1.25,0.39 -2.36,1.06 -1.66,-0.43 -0.34,-1.62 1.57,-4.11 -1.54,-3.94 -1.49,-1.7 -3.83,-2.36 -5.98,-2.91 1.9,-1.43 2.13,2 4.45,0.36 0.58,-0.11 0.84,1.82 1.93,0.36 1.45,0.02 2.12,1.75 4.12,1.85 1.57,1.88 4.72,-0.08 2.56,-1.73 -1.13,0.23 -4.71,-0.08 -2.41,-1.51 1.13,0.1 5.66,-0.35 3.94,-1.58 -2.53,-0.05 -1.4,-0.83 -0.29,-1.63 0.84,-2.83 -2.64,-1.96 -3.34,-1.81 -1.47,-0.72 -2,-0.85 -1.64,-2.44 2.52,0.42 0.64,-2.75 -0.27,-3.56 -0.04,-0.34 1.76,2 1.91,-0.11 -0.65,-3.43 1.88,0.34 1.11,2 -0.95,4.21 5.86,2.44 3.19,-0.73 -1.94,-1.31 0.11,-2.67 -1.13,-4.2 1.13,0.42 1.67,1.6 2.04,1.18