summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
Diffstat (limited to 'static')
-rw-r--r--static/js/build.js181
-rw-r--r--static/js/build.js.map1
2 files changed, 8 insertions, 174 deletions
diff --git a/static/js/build.js b/static/js/build.js
index ca144dc..1a58eec 100644
--- a/static/js/build.js
+++ b/static/js/build.js
@@ -1,174 +1,7 @@
-/******/ (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, {
-/******/ configurable: false,
-/******/ enumerable: true,
-/******/ get: getter
-/******/ });
-/******/ }
-/******/ };
-/******/
-/******/ // 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 = "/static/js/";
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 2);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports) {
-
-eval("var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzPzM2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUMiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZih0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vICh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n");
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports) {
-
-eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzPzViNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsVUFBVSIsImZpbGUiOiIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");
-
-/***/ }),
-/* 2 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_mapbox_gl__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_mapbox_gl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_mapbox_gl__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Geshem_vue__ = __webpack_require__(8);\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_mapbox_gl___default.a.accessToken = 'pk.eyJ1IjoieXV2YWRtIiwiYSI6ImNpcnMxbzBuaTAwZWdoa25oczlzZmkwbHcifQ.UHtLngbKm9O8945pJm23Nw';\n\nvar vm = new __WEBPACK_IMPORTED_MODULE_1_vue__[\"a\" /* default */]({\n el: '#app',\n render: function render(h) {\n return h(__WEBPACK_IMPORTED_MODULE_2__Geshem_vue__[\"a\" /* default */]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9nZXNoZW0uanM/MWNhZSJdLCJuYW1lcyI6WyJtYXBib3hnbCIsImFjY2Vzc1Rva2VuIiwidm0iLCJlbCIsInJlbmRlciIsImgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBOztBQUVBLGlEQUFBQSxDQUFTQyxXQUFULEdBQXVCLDBGQUF2Qjs7QUFFQSxJQUFJQyxLQUFLLElBQUksb0RBQUosQ0FBUTtBQUNmQyxNQUFJLE1BRFc7QUFFZkMsVUFBUTtBQUFBLFdBQUtDLEVBQUUsNERBQUYsQ0FBTDtBQUFBO0FBRk8sQ0FBUixDQUFUIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwYm94Z2wgZnJvbSAnbWFwYm94LWdsJztcbmltcG9ydCBWdWUgZnJvbSAndnVlJztcbmltcG9ydCBHZXNoZW0gZnJvbSAnLi9HZXNoZW0udnVlJztcblxubWFwYm94Z2wuYWNjZXNzVG9rZW4gPSAncGsuZXlKMUlqb2llWFYyWVdSdElpd2lZU0k2SW1OcGNuTXhiekJ1YVRBd1pXZG9hMjVvY3pselpta3diSGNpZlEuVUh0TG5nYkttOU84OTQ1cEptMjNOdyc7XG5cbnZhciB2bSA9IG5ldyBWdWUoe1xuICBlbDogJyNhcHAnLFxuICByZW5kZXI6IGggPT4gaChHZXNoZW0pXG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2dlc2hlbS5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n");
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/* WEBPACK VAR INJECTION */(function(global) {var require;var require;(function(f){if(true){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.mapboxgl = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.glMatrix=n()}(this,function(){\"use strict\";function t(t,n,r){var e=n[0],a=n[1],o=n[2];return t[0]=e*r[0]+a*r[3]+o*r[6],t[1]=e*r[1]+a*r[4]+o*r[7],t[2]=e*r[2]+a*r[5]+o*r[8],t}function n(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3];return t[0]=r[0]*e+r[4]*a+r[8]*o+r[12]*u,t[1]=r[1]*e+r[5]*a+r[9]*o+r[13]*u,t[2]=r[2]*e+r[6]*a+r[10]*o+r[14]*u,t[3]=r[3]*e+r[7]*a+r[11]*o+r[15]*u,t}function r(){var t=new Float32Array(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function e(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=e*c+o*i,t[1]=a*c+u*i,t[2]=e*-i+o*c,t[3]=a*-i+u*c,t}function a(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=r[0],c=r[1];return t[0]=e*i,t[1]=a*i,t[2]=o*c,t[3]=u*c,t}function o(){var t=new Float32Array(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function u(t,n){var r=Math.sin(n),e=Math.cos(n);return t[0]=e,t[1]=r,t[2]=0,t[3]=-r,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function i(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function f(t,n){var r=n[0],e=n[1],a=n[2],o=n[3],u=n[4],i=n[5],c=n[6],f=n[7],v=n[8],s=n[9],l=n[10],M=n[11],h=n[12],m=n[13],y=n[14],d=n[15],p=r*i-e*u,w=r*c-a*u,A=r*f-o*u,F=e*c-a*i,x=e*f-o*i,b=a*f-o*c,g=v*m-s*h,j=v*y-l*h,R=v*d-M*h,X=s*y-l*m,Z=s*d-M*m,k=l*d-M*y,q=p*k-w*Z+A*X+F*R-x*j+b*g;return q?(q=1/q,t[0]=(i*k-c*Z+f*X)*q,t[1]=(a*Z-e*k-o*X)*q,t[2]=(m*b-y*x+d*F)*q,t[3]=(l*x-s*b-M*F)*q,t[4]=(c*R-u*k-f*j)*q,t[5]=(r*k-a*R+o*j)*q,t[6]=(y*A-h*b-d*w)*q,t[7]=(v*b-l*A+M*w)*q,t[8]=(u*Z-i*R+f*g)*q,t[9]=(e*R-r*Z-o*g)*q,t[10]=(h*x-m*A+d*p)*q,t[11]=(s*A-v*x-M*p)*q,t[12]=(i*j-u*X-c*g)*q,t[13]=(r*X-e*j+a*g)*q,t[14]=(m*w-h*F-y*p)*q,t[15]=(v*F-s*w+l*p)*q,t):null}function v(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],m=n[12],y=n[13],d=n[14],p=n[15],w=r[0],A=r[1],F=r[2],x=r[3];return t[0]=w*e+A*i+F*s+x*m,t[1]=w*a+A*c+F*l+x*y,t[2]=w*o+A*f+F*M+x*d,t[3]=w*u+A*v+F*h+x*p,w=r[4],A=r[5],F=r[6],x=r[7],t[4]=w*e+A*i+F*s+x*m,t[5]=w*a+A*c+F*l+x*y,t[6]=w*o+A*f+F*M+x*d,t[7]=w*u+A*v+F*h+x*p,w=r[8],A=r[9],F=r[10],x=r[11],t[8]=w*e+A*i+F*s+x*m,t[9]=w*a+A*c+F*l+x*y,t[10]=w*o+A*f+F*M+x*d,t[11]=w*u+A*v+F*h+x*p,w=r[12],A=r[13],F=r[14],x=r[15],t[12]=w*e+A*i+F*s+x*m,t[13]=w*a+A*c+F*l+x*y,t[14]=w*o+A*f+F*M+x*d,t[15]=w*u+A*v+F*h+x*p,t}function s(t,n,r){var e,a,o,u,i,c,f,v,s,l,M,h,m=r[0],y=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*y+n[8]*d+n[12],t[13]=n[1]*m+n[5]*y+n[9]*d+n[13],t[14]=n[2]*m+n[6]*y+n[10]*d+n[14],t[15]=n[3]*m+n[7]*y+n[11]*d+n[15]):(e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],t[0]=e,t[1]=a,t[2]=o,t[3]=u,t[4]=i,t[5]=c,t[6]=f,t[7]=v,t[8]=s,t[9]=l,t[10]=M,t[11]=h,t[12]=e*m+i*y+s*d+n[12],t[13]=a*m+c*y+l*d+n[13],t[14]=o*m+f*y+M*d+n[14],t[15]=u*m+v*y+h*d+n[15]),t}function l(t,n,r){var e=r[0],a=r[1],o=r[2];return t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t[3]=n[3]*e,t[4]=n[4]*a,t[5]=n[5]*a,t[6]=n[6]*a,t[7]=n[7]*a,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=n[11]*o,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function M(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[4],u=n[5],i=n[6],c=n[7],f=n[8],v=n[9],s=n[10],l=n[11];return n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=o*a+f*e,t[5]=u*a+v*e,t[6]=i*a+s*e,t[7]=c*a+l*e,t[8]=f*a-o*e,t[9]=v*a-u*e,t[10]=s*a-i*e,t[11]=l*a-c*e,t}function h(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[0],u=n[1],i=n[2],c=n[3],f=n[4],v=n[5],s=n[6],l=n[7];return n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=o*a+f*e,t[1]=u*a+v*e,t[2]=i*a+s*e,t[3]=c*a+l*e,t[4]=f*a-o*e,t[5]=v*a-u*e,t[6]=s*a-i*e,t[7]=l*a-c*e,t}function m(t,n,r,e,a){var o=1/Math.tan(n/2),u=1/(e-a);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(a+e)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*a*e*u,t[15]=0,t}function y(t,n,r,e,a,o,u){var i=1/(n-r),c=1/(e-a),f=1/(o-u);return t[0]=-2*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(n+r)*i,t[13]=(a+e)*c,t[14]=(u+o)*f,t[15]=1,t}(function(){var t=new Float32Array(3);t[0]=0,t[1]=0,t[2]=0})(),function(){var t=new Float32Array(4);t[0]=0,t[1]=0,t[2]=0,t[3]=0}();return{vec3:{transformMat3:t},vec4:{transformMat4:n},mat2:{create:r,rotate:e,scale:a},mat3:{create:o,fromRotation:u},mat4:{create:i,identity:c,translate:s,scale:l,multiply:v,perspective:m,rotateX:M,rotateZ:h,invert:f,ortho:y}}});\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";function Point(t,n){this.x=t,this.y=n}module.exports=Point,Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,n){return this.clone()._rotateAround(t,n)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var n=t.x-this.x,i=t.y-this.y;return n*n+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,n){return Math.atan2(this.x*n-this.y*t,this.x*t+this.y*n)},_matMult:function(t){var n=t[0]*this.x+t[1]*this.y,i=t[2]*this.x+t[3]*this.y;return this.x=n,this.y=i,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var n=Math.cos(t),i=Math.sin(t),s=n*this.x-i*this.y,r=i*this.x+n*this.y;return this.x=s,this.y=r,this},_rotateAround:function(t,n){var i=Math.cos(t),s=Math.sin(t),r=n.x+i*(this.x-n.x)-s*(this.y-n.y),h=n.y+s*(this.x-n.x)+i*(this.y-n.y);return this.x=r,this.y=h,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Point.convert=function(t){return t instanceof Point?t:Array.isArray(t)?new Point(t[0],t[1]):t};\n},{}],3:[function(_dereq_,module,exports){\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.ShelfPack=e()}(this,function(){function t(t,e,i){i=i||{},this.w=t||64,this.h=e||64,this.autoResize=!!i.autoResize,this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0}function e(t,e,i){this.x=0,this.y=t,this.w=this.free=e,this.h=i}function i(t,e,i,s,h,n,r){this.id=t,this.x=e,this.y=i,this.w=s,this.h=h,this.maxw=n||s,this.maxh=r||h,this.refcount=0}return t.prototype.pack=function(t,e){t=[].concat(t),e=e||{};for(var i,s,h,n,r=[],f=0;f<t.length;f++)if(i=t[f].w||t[f].width,s=t[f].h||t[f].height,h=t[f].id,i&&s){if(!(n=this.packOne(i,s,h)))continue;e.inPlace&&(t[f].x=n.x,t[f].y=n.y,t[f].id=n.id),r.push(n)}return this.shrink(),r},t.prototype.packOne=function(t,i,s){var h,n,r,f,o={freebin:-1,shelf:-1,waste:1/0},a=0;if(\"string\"==typeof s||\"number\"==typeof s){if(h=this.getBin(s))return this.ref(h),h;\"number\"==typeof s&&(this.maxId=Math.max(s,this.maxId))}else s=++this.maxId;for(f=0;f<this.freebins.length;f++){if(h=this.freebins[f],i===h.maxh&&t===h.maxw)return this.allocFreebin(f,t,i,s);i>h.maxh||t>h.maxw||i<=h.maxh&&t<=h.maxw&&(r=h.maxw*h.maxh-t*i)<o.waste&&(o.waste=r,o.freebin=f)}for(f=0;f<this.shelves.length;f++)if(n=this.shelves[f],a+=n.h,!(t>n.free)){if(i===n.h)return this.allocShelf(f,t,i,s);i>n.h||i<n.h&&(r=(n.h-i)*t)<o.waste&&(o.freebin=-1,o.waste=r,o.shelf=f)}if(-1!==o.freebin)return this.allocFreebin(o.freebin,t,i,s);if(-1!==o.shelf)return this.allocShelf(o.shelf,t,i,s);if(i<=this.h-a&&t<=this.w)return n=new e(a,this.w,i),this.allocShelf(this.shelves.push(n)-1,t,i,s);if(this.autoResize){var u,l,c,p;return u=l=this.h,c=p=this.w,(c<=u||t>c)&&(p=2*Math.max(t,c)),(u<c||i>u)&&(l=2*Math.max(i,u)),this.resize(p,l),this.packOne(t,i,s)}return null},t.prototype.allocFreebin=function(t,e,i,s){var h=this.freebins.splice(t,1)[0];return h.id=s,h.w=e,h.h=i,h.refcount=0,this.bins[s]=h,this.ref(h),h},t.prototype.allocShelf=function(t,e,i,s){var h=this.shelves[t],n=h.alloc(e,i,s);return this.bins[s]=n,this.ref(n),n},t.prototype.shrink=function(){if(this.shelves.length>0){for(var t=0,e=0,i=0;i<this.shelves.length;i++){var s=this.shelves[i];e+=s.h,t=Math.max(s.w-s.free,t)}this.resize(t,e)}},t.prototype.getBin=function(t){return this.bins[t]},t.prototype.ref=function(t){if(1==++t.refcount){var e=t.h;this.stats[e]=1+(0|this.stats[e])}return t.refcount},t.prototype.unref=function(t){return 0===t.refcount?0:(0==--t.refcount&&(this.stats[t.h]--,delete this.bins[t.id],this.freebins.push(t)),t.refcount)},t.prototype.clear=function(){this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var i=0;i<this.shelves.length;i++)this.shelves[i].resize(t);return!0},e.prototype.alloc=function(t,e,s){if(t>this.free||e>this.h)return null;var h=this.x;return this.x+=t,this.free-=t,new i(s,h,this.y,t,e,t,this.h)},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t});\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";function TinySDF(t,i,s,e,h,r){this.fontSize=t||24,this.buffer=void 0===i?3:i,this.cutoff=e||.25,this.fontFamily=h||\"sans-serif\",this.fontWeight=r||\"normal\",this.radius=s||8;var a=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=a,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.d=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Int16Array(a),this.middle=Math.round(a/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1))}function edt(t,i,s,e,h,r,a){for(var n=0;n<i;n++){for(var o=0;o<s;o++)e[o]=t[o*i+n];for(edt1d(e,h,r,a,s),o=0;o<s;o++)t[o*i+n]=h[o]}for(o=0;o<s;o++){for(n=0;n<i;n++)e[n]=t[o*i+n];for(edt1d(e,h,r,a,i),n=0;n<i;n++)t[o*i+n]=Math.sqrt(h[n])}}function edt1d(t,i,s,e,h){s[0]=0,e[0]=-INF,e[1]=+INF;for(var r=1,a=0;r<h;r++){for(var n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);n<=e[a];)a--,n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);a++,s[a]=r,e[a]=n,e[a+1]=+INF}for(r=0,a=0;r<h;r++){for(;e[a+1]<r;)a++;i[r]=(r-s[a])*(r-s[a])+t[s[a]]}}module.exports=TinySDF;var INF=1e20;TinySDF.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var i=this.ctx.getImageData(0,0,this.size,this.size),s=new Uint8ClampedArray(this.size*this.size),e=0;e<this.size*this.size;e++){var h=i.data[4*e+3]/255;this.gridOuter[e]=1===h?0:0===h?INF:Math.pow(Math.max(0,.5-h),2),this.gridInner[e]=1===h?INF:0===h?0:Math.pow(Math.max(0,h-.5),2)}for(edt(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),edt(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),e=0;e<this.size*this.size;e++){var r=this.gridOuter[e]-this.gridInner[e];s[e]=Math.max(0,Math.min(255,Math.round(255-255*(r/this.radius+this.cutoff))))}return s};\n},{}],5:[function(_dereq_,module,exports){\nfunction UnitBezier(t,i,e,r){this.cx=3*t,this.bx=3*(e-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(r-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=e,this.p2y=r}module.exports=UnitBezier,UnitBezier.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},UnitBezier.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},UnitBezier.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},UnitBezier.prototype.solveCurveX=function(t,i){void 0===i&&(i=1e-6);var e,r,s,h,n;for(s=t,n=0;n<8;n++){if(h=this.sampleCurveX(s)-t,Math.abs(h)<i)return s;var u=this.sampleCurveDerivativeX(s);if(Math.abs(u)<1e-6)break;s-=h/u}if(e=0,r=1,(s=t)<e)return e;if(s>r)return r;for(;e<r;){if(h=this.sampleCurveX(s),Math.abs(h-t)<i)return s;t>h?e=s:r=s,s=.5*(r-e)+e}return s},UnitBezier.prototype.solve=function(t,i){return this.sampleCurveY(this.solveCurveX(t,i))};\n},{}],6:[function(_dereq_,module,exports){\nmodule.exports.VectorTile=_dereq_(\"./lib/vectortile.js\"),module.exports.VectorTileFeature=_dereq_(\"./lib/vectortilefeature.js\"),module.exports.VectorTileLayer=_dereq_(\"./lib/vectortilelayer.js\");\n},{\"./lib/vectortile.js\":7,\"./lib/vectortilefeature.js\":8,\"./lib/vectortilelayer.js\":9}],7:[function(_dereq_,module,exports){\n\"use strict\";function VectorTile(e,r){this.layers=e.readFields(readTile,{},r)}function readTile(e,r,i){if(3===e){var t=new VectorTileLayer(i,i.readVarint()+i.pos);t.length&&(r[t.name]=t)}}var VectorTileLayer=_dereq_(\"./vectortilelayer\");module.exports=VectorTile;\n},{\"./vectortilelayer\":9}],8:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileFeature(e,t,r,a,i){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=a,this._values=i,e.readFields(readFeature,this,t)}function readFeature(e,t,r){1==e?t.id=r.readVarint():2==e?readTag(r,t):3==e?t.type=r.readVarint():4==e&&(t._geometry=r.pos)}function readTag(e,t){for(var r=e.readVarint()+e.pos;e.pos<r;){var a=t._keys[e.readVarint()],i=t._values[e.readVarint()];t.properties[a]=i}}function classifyRings(e){var t=e.length;if(t<=1)return[e];for(var r,a,i=[],o=0;o<t;o++){var n=signedArea(e[o]);0!==n&&(void 0===a&&(a=n<0),a===n<0?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function signedArea(e){for(var t,r,a=0,i=0,o=e.length,n=o-1;i<o;n=i++)t=e[i],r=e[n],a+=(r.x-t.x)*(t.y+r.y);return a}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=VectorTileFeature,VectorTileFeature.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],VectorTileFeature.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,a=1,i=0,o=0,n=0,s=[];e.pos<r;){if(!i){var p=e.readVarint();a=7&p,i=p>>3}if(i--,1===a||2===a)o+=e.readSVarint(),n+=e.readSVarint(),1===a&&(t&&s.push(t),t=[]),t.push(new Point(o,n));else{if(7!==a)throw new Error(\"unknown command \"+a);t&&t.push(t[0].clone())}}return t&&s.push(t),s},VectorTileFeature.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,a=0,i=0,o=0,n=1/0,s=-1/0,p=1/0,h=-1/0;e.pos<t;){if(!a){var u=e.readVarint();r=7&u,a=u>>3}if(a--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),i<n&&(n=i),i>s&&(s=i),o<p&&(p=o),o>h&&(h=o);else if(7!==r)throw new Error(\"unknown command \"+r)}return[n,p,s,h]},VectorTileFeature.prototype.toGeoJSON=function(e,t,r){function a(e){for(var t=0;t<e.length;t++){var r=e[t],a=180-360*(r.y+p)/n;e[t]=[360*(r.x+s)/n-180,360/Math.PI*Math.atan(Math.exp(a*Math.PI/180))-90]}}var i,o,n=this.extent*Math.pow(2,r),s=this.extent*e,p=this.extent*t,h=this.loadGeometry(),u=VectorTileFeature.types[this.type];switch(this.type){case 1:var d=[];for(i=0;i<h.length;i++)d[i]=h[i][0];h=d,a(h);break;case 2:for(i=0;i<h.length;i++)a(h[i]);break;case 3:for(h=classifyRings(h),i=0;i<h.length;i++)for(o=0;o<h[i].length;o++)a(h[i][o])}1===h.length?h=h[0]:u=\"Multi\"+u;var f={type:\"Feature\",geometry:{type:u,coordinates:h},properties:this.properties};return\"id\"in this&&(f.id=this.id),f};\n},{\"@mapbox/point-geometry\":2}],9:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileLayer(e,t){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(readLayer,this,t),this.length=this._features.length}function readLayer(e,t,r){15===e?t.version=r.readVarint():1===e?t.name=r.readString():5===e?t.extent=r.readVarint():2===e?t._features.push(r.pos):3===e?t._keys.push(r.readString()):4===e&&t._values.push(readValueMessage(r))}function readValueMessage(e){for(var t=null,r=e.readVarint()+e.pos;e.pos<r;){var a=e.readVarint()>>3;t=1===a?e.readString():2===a?e.readFloat():3===a?e.readDouble():4===a?e.readVarint64():5===a?e.readVarint():6===a?e.readSVarint():7===a?e.readBoolean():null}return t}var VectorTileFeature=_dereq_(\"./vectortilefeature.js\");module.exports=VectorTileLayer,VectorTileLayer.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new VectorTileFeature(this._pbf,t,this.extent,this._keys,this._values)};\n},{\"./vectortilefeature.js\":8}],10:[function(_dereq_,module,exports){\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.WhooTS=e.WhooTS||{})}(this,function(e){function t(e,t,r,n,i,s){return s=s||{},e+\"?\"+[\"bbox=\"+o(r,n,i),\"format=\"+(s.format||\"image/png\"),\"service=\"+(s.service||\"WMS\"),\"version=\"+(s.version||\"1.1.1\"),\"request=\"+(s.request||\"GetMap\"),\"srs=\"+(s.srs||\"EPSG:3857\"),\"width=\"+(s.width||256),\"height=\"+(s.height||256),\"layers=\"+t].join(\"&\")}function o(e,t,o){t=Math.pow(2,o)-t-1;var n=r(256*e,256*t,o),i=r(256*(e+1),256*(t+1),o);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}function r(e,t,o){var r=2*Math.PI*6378137/256/Math.pow(2,o);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}e.getURL=t,e.getTileBBox=o,e.getMercCoords=r,Object.defineProperty(e,\"__esModule\",{value:!0})});\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";function earcut(e,n,r){r=r||2;var t=n&&n.length,i=t?n[0]*r:e.length,x=linkedList(e,0,i,r,!0),a=[];if(!x)return a;var o,l,u,s,v,f,y;if(t&&(x=eliminateHoles(e,n,x,r)),e.length>80*r){o=u=e[0],l=s=e[1];for(var d=r;d<i;d+=r)v=e[d],f=e[d+1],v<o&&(o=v),f<l&&(l=f),v>u&&(u=v),f>s&&(s=f);y=Math.max(u-o,s-l)}return earcutLinked(x,a,r,o,l,y),a}function linkedList(e,n,r,t,i){var x,a;if(i===signedArea(e,n,r,t)>0)for(x=n;x<r;x+=t)a=insertNode(x,e[x],e[x+1],a);else for(x=r-t;x>=n;x-=t)a=insertNode(x,e[x],e[x+1],a);return a&&equals(a,a.next)&&(removeNode(a),a=a.next),a}function filterPoints(e,n){if(!e)return e;n||(n=e);var r,t=e;do{if(r=!1,t.steiner||!equals(t,t.next)&&0!==area(t.prev,t,t.next))t=t.next;else{if(removeNode(t),(t=n=t.prev)===t.next)return null;r=!0}}while(r||t!==n);return n}function earcutLinked(e,n,r,t,i,x,a){if(e){!a&&x&&indexCurve(e,t,i,x);for(var o,l,u=e;e.prev!==e.next;)if(o=e.prev,l=e.next,x?isEarHashed(e,t,i,x):isEar(e))n.push(o.i/r),n.push(e.i/r),n.push(l.i/r),removeNode(e),e=l.next,u=l.next;else if((e=l)===u){a?1===a?(e=cureLocalIntersections(e,n,r),earcutLinked(e,n,r,t,i,x,2)):2===a&&splitEarcut(e,n,r,t,i,x):earcutLinked(filterPoints(e),n,r,t,i,x,1);break}}}function isEar(e){var n=e.prev,r=e,t=e.next;if(area(n,r,t)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(pointInTriangle(n.x,n.y,r.x,r.y,t.x,t.y,i.x,i.y)&&area(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function isEarHashed(e,n,r,t){var i=e.prev,x=e,a=e.next;if(area(i,x,a)>=0)return!1;for(var o=i.x<x.x?i.x<a.x?i.x:a.x:x.x<a.x?x.x:a.x,l=i.y<x.y?i.y<a.y?i.y:a.y:x.y<a.y?x.y:a.y,u=i.x>x.x?i.x>a.x?i.x:a.x:x.x>a.x?x.x:a.x,s=i.y>x.y?i.y>a.y?i.y:a.y:x.y>a.y?x.y:a.y,v=zOrder(o,l,n,r,t),f=zOrder(u,s,n,r,t),y=e.nextZ;y&&y.z<=f;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.nextZ}for(y=e.prevZ;y&&y.z>=v;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.prevZ}return!0}function cureLocalIntersections(e,n,r){var t=e;do{var i=t.prev,x=t.next.next;!equals(i,x)&&intersects(i,t,t.next,x)&&locallyInside(i,x)&&locallyInside(x,i)&&(n.push(i.i/r),n.push(t.i/r),n.push(x.i/r),removeNode(t),removeNode(t.next),t=e=x),t=t.next}while(t!==e);return t}function splitEarcut(e,n,r,t,i,x){var a=e;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&isValidDiagonal(a,o)){var l=splitPolygon(a,o);return a=filterPoints(a,a.next),l=filterPoints(l,l.next),earcutLinked(a,n,r,t,i,x),void earcutLinked(l,n,r,t,i,x)}o=o.next}a=a.next}while(a!==e)}function eliminateHoles(e,n,r,t){var i,x,a,o,l,u=[];for(i=0,x=n.length;i<x;i++)a=n[i]*t,o=i<x-1?n[i+1]*t:e.length,l=linkedList(e,a,o,t,!1),l===l.next&&(l.steiner=!0),u.push(getLeftmost(l));for(u.sort(compareX),i=0;i<u.length;i++)eliminateHole(u[i],r),r=filterPoints(r,r.next);return r}function compareX(e,n){return e.x-n.x}function eliminateHole(e,n){if(n=findHoleBridge(e,n)){var r=splitPolygon(n,e);filterPoints(r,r.next)}}function findHoleBridge(e,n){var r,t=n,i=e.x,x=e.y,a=-1/0;do{if(x<=t.y&&x>=t.next.y){var o=t.x+(x-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(o<=i&&o>a){if(a=o,o===i){if(x===t.y)return t;if(x===t.next.y)return t.next}r=t.x<t.next.x?t:t.next}}t=t.next}while(t!==n);if(!r)return null;if(i===a)return r.prev;var l,u=r,s=r.x,v=r.y,f=1/0;for(t=r.next;t!==u;)i>=t.x&&t.x>=s&&pointInTriangle(x<v?i:a,x,s,v,x<v?a:i,x,t.x,t.y)&&((l=Math.abs(x-t.y)/(i-t.x))<f||l===f&&t.x>r.x)&&locallyInside(t,e)&&(r=t,f=l),t=t.next;return r}function indexCurve(e,n,r,t){var i=e;do{null===i.z&&(i.z=zOrder(i.x,i.y,n,r,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,sortLinked(i)}function sortLinked(e){var n,r,t,i,x,a,o,l,u=1;do{for(r=e,e=null,x=null,a=0;r;){for(a++,t=r,o=0,n=0;n<u&&(o++,t=t.nextZ);n++);for(l=u;o>0||l>0&&t;)0===o?(i=t,t=t.nextZ,l--):0!==l&&t?r.z<=t.z?(i=r,r=r.nextZ,o--):(i=t,t=t.nextZ,l--):(i=r,r=r.nextZ,o--),x?x.nextZ=i:e=i,i.prevZ=x,x=i;r=t}x.nextZ=null,u*=2}while(a>1);return e}function zOrder(e,n,r,t,i){return e=32767*(e-r)/i,n=32767*(n-t)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),n=16711935&(n|n<<8),n=252645135&(n|n<<4),n=858993459&(n|n<<2),n=1431655765&(n|n<<1),e|n<<1}function getLeftmost(e){var n=e,r=e;do{n.x<r.x&&(r=n),n=n.next}while(n!==e);return r}function pointInTriangle(e,n,r,t,i,x,a,o){return(i-a)*(n-o)-(e-a)*(x-o)>=0&&(e-a)*(t-o)-(r-a)*(n-o)>=0&&(r-a)*(x-o)-(i-a)*(t-o)>=0}function isValidDiagonal(e,n){return e.next.i!==n.i&&e.prev.i!==n.i&&!intersectsPolygon(e,n)&&locallyInside(e,n)&&locallyInside(n,e)&&middleInside(e,n)}function area(e,n,r){return(n.y-e.y)*(r.x-n.x)-(n.x-e.x)*(r.y-n.y)}function equals(e,n){return e.x===n.x&&e.y===n.y}function intersects(e,n,r,t){return!!(equals(e,n)&&equals(r,t)||equals(e,t)&&equals(r,n))||area(e,n,r)>0!=area(e,n,t)>0&&area(r,t,e)>0!=area(r,t,n)>0}function intersectsPolygon(e,n){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==n.i&&r.next.i!==n.i&&intersects(r,r.next,e,n))return!0;r=r.next}while(r!==e);return!1}function locallyInside(e,n){return area(e.prev,e,e.next)<0?area(e,n,e.next)>=0&&area(e,e.prev,n)>=0:area(e,n,e.prev)<0||area(e,e.next,n)<0}function middleInside(e,n){var r=e,t=!1,i=(e.x+n.x)/2,x=(e.y+n.y)/2;do{r.y>x!=r.next.y>x&&i<(r.next.x-r.x)*(x-r.y)/(r.next.y-r.y)+r.x&&(t=!t),r=r.next}while(r!==e);return t}function splitPolygon(e,n){var r=new Node(e.i,e.x,e.y),t=new Node(n.i,n.x,n.y),i=e.next,x=n.prev;return e.next=n,n.prev=e,r.next=i,i.prev=r,t.next=r,r.prev=t,x.next=t,t.prev=x,t}function insertNode(e,n,r,t){var i=new Node(e,n,r);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function removeNode(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Node(e,n,r){this.i=e,this.x=n,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(e,n,r,t){for(var i=0,x=n,a=r-t;x<r;x+=t)i+=(e[a]-e[x])*(e[x+1]+e[a+1]),a=x;return i}module.exports=earcut,earcut.deviation=function(e,n,r,t){var i=n&&n.length,x=i?n[0]*r:e.length,a=Math.abs(signedArea(e,0,x,r));if(i)for(var o=0,l=n.length;o<l;o++){var u=n[o]*r,s=o<l-1?n[o+1]*r:e.length;a-=Math.abs(signedArea(e,u,s,r))}var v=0;for(o=0;o<t.length;o+=3){var f=t[o]*r,y=t[o+1]*r,d=t[o+2]*r;v+=Math.abs((e[f]-e[d])*(e[y+1]-e[f+1])-(e[f]-e[y])*(e[d+1]-e[f+1]))}return 0===a&&0===v?0:Math.abs((v-a)/a)},earcut.flatten=function(e){for(var n=e[0][0].length,r={vertices:[],holes:[],dimensions:n},t=0,i=0;i<e.length;i++){for(var x=0;x<e[i].length;x++)for(var a=0;a<n;a++)r.vertices.push(e[i][x][a]);i>0&&(t+=e[i-1].length,r.holes.push(t))}return r};\n},{}],12:[function(_dereq_,module,exports){\nfunction geometry(r){if(\"Polygon\"===r.type)return polygonArea(r.coordinates);if(\"MultiPolygon\"===r.type){for(var e=0,n=0;n<r.coordinates.length;n++)e+=polygonArea(r.coordinates[n]);return e}return null}function polygonArea(r){var e=0;if(r&&r.length>0){e+=Math.abs(ringArea(r[0]));for(var n=1;n<r.length;n++)e-=Math.abs(ringArea(r[n]))}return e}function ringArea(r){var e=0;if(r.length>2){for(var n,t,o=0;o<r.length-1;o++)n=r[o],t=r[o+1],e+=rad(t[0]-n[0])*(2+Math.sin(rad(n[1]))+Math.sin(rad(t[1])));e=e*wgs84.RADIUS*wgs84.RADIUS/2}return e}function rad(r){return r*Math.PI/180}var wgs84=_dereq_(\"wgs84\");module.exports.geometry=geometry,module.exports.ring=ringArea;\n},{\"wgs84\":40}],13:[function(_dereq_,module,exports){\nfunction rewind(r,e){switch(r&&r.type||null){case\"FeatureCollection\":return r.features=r.features.map(curryOuter(rewind,e)),r;case\"Feature\":return r.geometry=rewind(r.geometry,e),r;case\"Polygon\":case\"MultiPolygon\":return correct(r,e);default:return r}}function curryOuter(r,e){return function(n){return r(n,e)}}function correct(r,e){return\"Polygon\"===r.type?r.coordinates=correctRings(r.coordinates,e):\"MultiPolygon\"===r.type&&(r.coordinates=r.coordinates.map(curryOuter(correctRings,e))),r}function correctRings(r,e){e=!!e,r[0]=wind(r[0],e);for(var n=1;n<r.length;n++)r[n]=wind(r[n],!e);return r}function wind(r,e){return cw(r)===e?r:r.reverse()}function cw(r){return geojsonArea.ring(r)>=0}var geojsonArea=_dereq_(\"geojson-area\");module.exports=rewind;\n},{\"geojson-area\":12}],14:[function(_dereq_,module,exports){\n\"use strict\";function clip(e,r,t,n,u,i,l,s){if(t/=r,n/=r,l>=t&&s<=n)return e;if(l>n||s<t)return null;for(var h=[],p=0;p<e.length;p++){var a,c,o=e[p],f=o.geometry,g=o.type;if(a=o.min[u],c=o.max[u],a>=t&&c<=n)h.push(o);else if(!(a>n||c<t)){var v=1===g?clipPoints(f,t,n,u):clipGeometry(f,t,n,u,i,3===g);v.length&&h.push(createFeature(o.tags,g,v,o.id))}}return h.length?h:null}function clipPoints(e,r,t,n){for(var u=[],i=0;i<e.length;i++){var l=e[i],s=l[n];s>=r&&s<=t&&u.push(l)}return u}function clipGeometry(e,r,t,n,u,i){for(var l=[],s=0;s<e.length;s++){var h,p,a,c=0,o=0,f=null,g=e[s],v=g.area,m=g.dist,w=g.outer,S=g.length,d=[];for(p=0;p<S-1;p++)h=f||g[p],f=g[p+1],c=o||h[n],o=f[n],c<r?o>t?(d.push(u(h,f,r),u(h,f,t)),i||(d=newSlice(l,d,v,m,w))):o>=r&&d.push(u(h,f,r)):c>t?o<r?(d.push(u(h,f,t),u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o<=t&&d.push(u(h,f,t)):(d.push(h),o<r?(d.push(u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o>t&&(d.push(u(h,f,t)),i||(d=newSlice(l,d,v,m,w))));h=g[S-1],c=h[n],c>=r&&c<=t&&d.push(h),a=d[d.length-1],i&&a&&(d[0][0]!==a[0]||d[0][1]!==a[1])&&d.push(d[0]),newSlice(l,d,v,m,w)}return l}function newSlice(e,r,t,n,u){return r.length&&(r.area=t,r.dist=n,void 0!==u&&(r.outer=u),e.push(r)),[]}module.exports=clip;var createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16}],15:[function(_dereq_,module,exports){\n\"use strict\";function convert(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)convertFeature(r,e.features[o],t);else\"Feature\"===e.type?convertFeature(r,e,t):convertFeature(r,{geometry:e},t);return r}function convertFeature(e,t,r){if(null!==t.geometry){var o,a,i,n,u=t.geometry,c=u.type,l=u.coordinates,s=t.properties,p=t.id;if(\"Point\"===c)e.push(createFeature(s,1,[projectPoint(l)],p));else if(\"MultiPoint\"===c)e.push(createFeature(s,1,project(l),p));else if(\"LineString\"===c)e.push(createFeature(s,2,[project(l,r)],p));else if(\"MultiLineString\"===c||\"Polygon\"===c){for(i=[],o=0;o<l.length;o++)n=project(l[o],r),\"Polygon\"===c&&(n.outer=0===o),i.push(n);e.push(createFeature(s,\"Polygon\"===c?3:2,i,p))}else if(\"MultiPolygon\"===c){for(i=[],o=0;o<l.length;o++)for(a=0;a<l[o].length;a++)n=project(l[o][a],r),n.outer=0===a,i.push(n);e.push(createFeature(s,3,i,p))}else{if(\"GeometryCollection\"!==c)throw new Error(\"Input data is not a valid GeoJSON object.\");for(o=0;o<u.geometries.length;o++)convertFeature(e,{geometry:u.geometries[o],properties:s},r)}}}function project(e,t){for(var r=[],o=0;o<e.length;o++)r.push(projectPoint(e[o]));return t&&(simplify(r,t),calcSize(r)),r}function projectPoint(e){var t=Math.sin(e[1]*Math.PI/180),r=e[0]/360+.5,o=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return o=o<0?0:o>1?1:o,[r,o,0]}function calcSize(e){for(var t,r,o=0,a=0,i=0;i<e.length-1;i++)t=r||e[i],r=e[i+1],o+=t[0]*r[1]-r[0]*t[1],a+=Math.abs(r[0]-t[0])+Math.abs(r[1]-t[1]);e.area=Math.abs(o/2),e.dist=a}module.exports=convert;var simplify=_dereq_(\"./simplify\"),createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16,\"./simplify\":18}],16:[function(_dereq_,module,exports){\n\"use strict\";function createFeature(e,t,a,n){var r={id:n||null,type:t,geometry:a,tags:e||null,min:[1/0,1/0],max:[-1/0,-1/0]};return calcBBox(r),r}function calcBBox(e){var t=e.geometry,a=e.min,n=e.max;if(1===e.type)calcRingBBox(a,n,t);else for(var r=0;r<t.length;r++)calcRingBBox(a,n,t[r]);return e}function calcRingBBox(e,t,a){for(var n,r=0;r<a.length;r++)n=a[r],e[0]=Math.min(n[0],e[0]),t[0]=Math.max(n[0],t[0]),e[1]=Math.min(n[1],e[1]),t[1]=Math.max(n[1],t[1])}module.exports=createFeature;\n},{}],17:[function(_dereq_,module,exports){\n\"use strict\";function geojsonvt(e,t){return new GeoJSONVT(e,t)}function GeoJSONVT(e,t){t=this.options=extend(Object.create(this.options),t);var i=t.debug;i&&console.time(\"preprocess data\");var o=1<<t.maxZoom,n=convert(e,t.tolerance/(o*t.extent));this.tiles={},this.tileCoords=[],i&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),n=wrap(n,t.buffer/t.extent,intersectX),n.length&&this.splitTile(n,0,0,0),i&&(n.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)))}function toID(e,t,i){return 32*((1<<e)*i+t)+e}function intersectX(e,t,i){return[i,(i-e[0])*(t[1]-e[1])/(t[0]-e[0])+e[1],1]}function intersectY(e,t,i){return[(i-e[1])*(t[0]-e[0])/(t[1]-e[1])+e[0],i,1]}function extend(e,t){for(var i in t)e[i]=t[i];return e}function isClippedSquare(e,t,i){var o=e.source;if(1!==o.length)return!1;var n=o[0];if(3!==n.type||n.geometry.length>1)return!1;var r=n.geometry[0].length;if(5!==r)return!1;for(var s=0;s<r;s++){var l=transform.point(n.geometry[0][s],t,e.z2,e.x,e.y);if(l[0]!==-i&&l[0]!==t+i||l[1]!==-i&&l[1]!==t+i)return!1}return!0}module.exports=geojsonvt;var convert=_dereq_(\"./convert\"),transform=_dereq_(\"./transform\"),clip=_dereq_(\"./clip\"),wrap=_dereq_(\"./wrap\"),createTile=_dereq_(\"./tile\");GeoJSONVT.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},GeoJSONVT.prototype.splitTile=function(e,t,i,o,n,r,s){for(var l=[e,t,i,o],a=this.options,u=a.debug,c=null;l.length;){o=l.pop(),i=l.pop(),t=l.pop(),e=l.pop();var p=1<<t,d=toID(t,i,o),m=this.tiles[d],f=t===a.maxZoom?0:a.tolerance/(p*a.extent);if(!m&&(u>1&&console.time(\"creation\"),m=this.tiles[d]=createTile(e,p,i,o,f,t===a.maxZoom),this.tileCoords.push({z:t,x:i,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,i,o,m.numFeatures,m.numPoints,m.numSimplified),console.timeEnd(\"creation\"));var h=\"z\"+t;this.stats[h]=(this.stats[h]||0)+1,this.total++}if(m.source=e,n){if(t===a.maxZoom||t===n)continue;var x=1<<n-t;if(i!==Math.floor(r/x)||o!==Math.floor(s/x))continue}else if(t===a.indexMaxZoom||m.numPoints<=a.indexMaxPoints)continue;if(a.solidChildren||!isClippedSquare(m,a.extent,a.buffer)){m.source=null,u>1&&console.time(\"clipping\");var g,v,M,T,b,y,S=.5*a.buffer/a.extent,Z=.5-S,q=.5+S,w=1+S;g=v=M=T=null,b=clip(e,p,i-S,i+q,0,intersectX,m.min[0],m.max[0]),y=clip(e,p,i+Z,i+w,0,intersectX,m.min[0],m.max[0]),b&&(g=clip(b,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),v=clip(b,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),y&&(M=clip(y,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),T=clip(y,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),u>1&&console.timeEnd(\"clipping\"),e.length&&(l.push(g||[],t+1,2*i,2*o),l.push(v||[],t+1,2*i,2*o+1),l.push(M||[],t+1,2*i+1,2*o),l.push(T||[],t+1,2*i+1,2*o+1))}else n&&(c=t)}return c},GeoJSONVT.prototype.getTile=function(e,t,i){var o=this.options,n=o.extent,r=o.debug,s=1<<e;t=(t%s+s)%s;var l=toID(e,t,i);if(this.tiles[l])return transform.tile(this.tiles[l],n);r>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,i);for(var a,u=e,c=t,p=i;!a&&u>0;)u--,c=Math.floor(c/2),p=Math.floor(p/2),a=this.tiles[toID(u,c,p)];if(!a||!a.source)return null;if(r>1&&console.log(\"found parent tile z%d-%d-%d\",u,c,p),isClippedSquare(a,n,o.buffer))return transform.tile(a,n);r>1&&console.time(\"drilling down\");var d=this.splitTile(a.source,u,c,p,e,t,i);if(r>1&&console.timeEnd(\"drilling down\"),null!==d){var m=1<<e-d;l=toID(d,Math.floor(t/m),Math.floor(i/m))}return this.tiles[l]?transform.tile(this.tiles[l],n):null};\n},{\"./clip\":14,\"./convert\":15,\"./tile\":19,\"./transform\":20,\"./wrap\":21}],18:[function(_dereq_,module,exports){\n\"use strict\";function simplify(t,i){var e,p,r,s,o=i*i,f=t.length,u=0,n=f-1,g=[];for(t[u][2]=1,t[n][2]=1;n;){for(p=0,e=u+1;e<n;e++)(r=getSqSegDist(t[e],t[u],t[n]))>p&&(s=e,p=r);p>o?(t[s][2]=p,g.push(u),g.push(s),u=s):(n=g.pop(),u=g.pop())}}function getSqSegDist(t,i,e){var p=i[0],r=i[1],s=e[0],o=e[1],f=t[0],u=t[1],n=s-p,g=o-r;if(0!==n||0!==g){var l=((f-p)*n+(u-r)*g)/(n*n+g*g);l>1?(p=s,r=o):l>0&&(p+=n*l,r+=g*l)}return n=f-p,g=u-r,n*n+g*g}module.exports=simplify;\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";function createTile(e,n,r,i,t,u){for(var a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:n,transformed:!1,min:[2,1],max:[-1,0]},m=0;m<e.length;m++){a.numFeatures++,addFeature(a,e[m],t,u);var s=e[m].min,l=e[m].max;s[0]<a.min[0]&&(a.min[0]=s[0]),s[1]<a.min[1]&&(a.min[1]=s[1]),l[0]>a.max[0]&&(a.max[0]=l[0]),l[1]>a.max[1]&&(a.max[1]=l[1])}return a}function addFeature(e,n,r,i){var t,u,a,m,s=n.geometry,l=n.type,o=[],f=r*r;if(1===l)for(t=0;t<s.length;t++)o.push(s[t]),e.numPoints++,e.numSimplified++;else for(t=0;t<s.length;t++)if(a=s[t],i||!(2===l&&a.dist<r||3===l&&a.area<f)){var d=[];for(u=0;u<a.length;u++)m=a[u],(i||m[2]>f)&&(d.push(m),e.numSimplified++),e.numPoints++;3===l&&rewind(d,a.outer),o.push(d)}else e.numPoints+=a.length;if(o.length){var g={geometry:o,type:l,tags:n.tags||null};null!==n.id&&(g.id=n.id),e.features.push(g)}}function rewind(e,n){signedArea(e)<0===n&&e.reverse()}function signedArea(e){for(var n,r,i=0,t=0,u=e.length,a=u-1;t<u;a=t++)n=e[t],r=e[a],i+=(r[0]-n[0])*(n[1]+r[1]);return i}module.exports=createTile;\n},{}],20:[function(_dereq_,module,exports){\n\"use strict\";function transformTile(r,t){if(r.transformed)return r;var n,e,o,f=r.z2,a=r.x,s=r.y;for(n=0;n<r.features.length;n++){var i=r.features[n],u=i.geometry;if(1===i.type)for(e=0;e<u.length;e++)u[e]=transformPoint(u[e],t,f,a,s);else for(e=0;e<u.length;e++){var m=u[e];for(o=0;o<m.length;o++)m[o]=transformPoint(m[o],t,f,a,s)}}return r.transformed=!0,r}function transformPoint(r,t,n,e,o){return[Math.round(t*(r[0]*n-e)),Math.round(t*(r[1]*n-o))]}exports.tile=transformTile,exports.point=transformPoint;\n},{}],21:[function(_dereq_,module,exports){\n\"use strict\";function wrap(r,e,t){var o=r,a=clip(r,1,-1-e,e,0,t,-1,2),s=clip(r,1,1-e,2+e,0,t,-1,2);return(a||s)&&(o=clip(r,1,-e,1+e,0,t,-1,2)||[],a&&(o=shiftFeatureCoords(a,1).concat(o)),s&&(o=o.concat(shiftFeatureCoords(s,-1)))),o}function shiftFeatureCoords(r,e){for(var t=[],o=0;o<r.length;o++){var a,s=r[o],i=s.type;if(1===i)a=shiftCoords(s.geometry,e);else{a=[];for(var u=0;u<s.geometry.length;u++)a.push(shiftCoords(s.geometry[u],e))}t.push(createFeature(s.tags,i,a,s.id))}return t}function shiftCoords(r,e){var t=[];t.area=r.area,t.dist=r.dist;for(var o=0;o<r.length;o++)t.push([r[o][0]+e,r[o][1],r[o][2]]);return t}var clip=_dereq_(\"./clip\"),createFeature=_dereq_(\"./feature\");module.exports=wrap;\n},{\"./clip\":14,\"./feature\":16}],22:[function(_dereq_,module,exports){\n\"use strict\";function GridIndex(t,r,e){var s=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],r=i[1],e=i[2],this.d=r+2*e;for(var h=0;h<this.d*this.d;h++){var n=i[NUM_PARAMS+h],o=i[NUM_PARAMS+h+1];s.push(n===o?null:i.subarray(n,o))}var l=i[NUM_PARAMS+s.length],a=i[NUM_PARAMS+s.length+1];this.keys=i.subarray(l,a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly}else{this.d=r+2*e;for(var d=0;d<this.d*this.d;d++)s.push([]);this.keys=[],this.bboxes=[]}this.n=r,this.extent=t,this.padding=e,this.scale=r/t,this.uid=0;var f=e/r*t;this.min=-f,this.max=t+f}module.exports=GridIndex;var NUM_PARAMS=3;GridIndex.prototype.insert=function(t,r,e,s,i){this._forEachCell(r,e,s,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(r),this.bboxes.push(e),this.bboxes.push(s),this.bboxes.push(i)},GridIndex.prototype._insertReadonly=function(){throw\"Cannot insert into a GridIndex created from an ArrayBuffer.\"},GridIndex.prototype._insertCell=function(t,r,e,s,i,h){this.cells[i].push(h)},GridIndex.prototype.query=function(t,r,e,s){var i=this.min,h=this.max;if(t<=i&&r<=i&&h<=e&&h<=s)return Array.prototype.slice.call(this.keys);var n=[],o={};return this._forEachCell(t,r,e,s,this._queryCell,n,o),n},GridIndex.prototype._queryCell=function(t,r,e,s,i,h,n){var o=this.cells[i];if(null!==o)for(var l=this.keys,a=this.bboxes,d=0;d<o.length;d++){var f=o[d];if(void 0===n[f]){var u=4*f;t<=a[u+2]&&r<=a[u+3]&&e>=a[u+0]&&s>=a[u+1]?(n[f]=!0,h.push(l[f])):n[f]=!1}}},GridIndex.prototype._forEachCell=function(t,r,e,s,i,h,n){for(var o=this._convertToCellCoord(t),l=this._convertToCellCoord(r),a=this._convertToCellCoord(e),d=this._convertToCellCoord(s),f=o;f<=a;f++)for(var u=l;u<=d;u++){var y=this.d*u+f;if(i.call(this,t,r,e,s,y,h,n))return}},GridIndex.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},GridIndex.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,r=NUM_PARAMS+this.cells.length+1+1,e=0,s=0;s<this.cells.length;s++)e+=this.cells[s].length;var i=new Int32Array(r+e+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var h=r,n=0;n<t.length;n++){var o=t[n];i[NUM_PARAMS+n]=h,i.set(o,h),h+=o.length}return i[NUM_PARAMS+t.length]=h,i.set(this.keys,h),h+=this.keys.length,i[NUM_PARAMS+t.length+1]=h,i.set(this.bboxes,h),h+=this.bboxes.length,i.buffer};\n},{}],23:[function(_dereq_,module,exports){\nexports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),o+=p+N>=1?n/f:n*Math.pow(2,1-N),o*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};\n},{}],24:[function(_dereq_,module,exports){\n\"use strict\";function kdbush(t,i,e,s,n){return new KDBush(t,i,e,s,n)}function KDBush(t,i,e,s,n){i=i||defaultGetX,e=e||defaultGetY,n=n||Array,this.nodeSize=s||64,this.points=t,this.ids=new n(t.length),this.coords=new n(2*t.length);for(var r=0;r<t.length;r++)this.ids[r]=r,this.coords[2*r]=i(t[r]),this.coords[2*r+1]=e(t[r]);sort(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function defaultGetX(t){return t[0]}function defaultGetY(t){return t[1]}var sort=_dereq_(\"./sort\"),range=_dereq_(\"./range\"),within=_dereq_(\"./within\");module.exports=kdbush,KDBush.prototype={range:function(t,i,e,s){return range(this.ids,this.coords,t,i,e,s,this.nodeSize)},within:function(t,i,e){return within(this.ids,this.coords,t,i,e,this.nodeSize)}};\n},{\"./range\":25,\"./sort\":26,\"./within\":27}],25:[function(_dereq_,module,exports){\n\"use strict\";function range(p,r,s,u,h,e,o){for(var a,t,n=[0,p.length-1,0],f=[];n.length;){var l=n.pop(),v=n.pop(),g=n.pop();if(v-g<=o)for(var i=g;i<=v;i++)a=r[2*i],t=r[2*i+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[i]);else{var c=Math.floor((g+v)/2);a=r[2*c],t=r[2*c+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[c]);var d=(l+1)%2;(0===l?s<=a:u<=t)&&(n.push(g),n.push(c-1),n.push(d)),(0===l?h>=a:e>=t)&&(n.push(c+1),n.push(v),n.push(d))}}return f}module.exports=range;\n},{}],26:[function(_dereq_,module,exports){\n\"use strict\";function sortKD(t,a,o,s,r,e){if(!(r-s<=o)){var f=Math.floor((s+r)/2);select(t,a,f,s,r,e%2),sortKD(t,a,o,s,f-1,e+1),sortKD(t,a,o,f+1,r,e+1)}}function select(t,a,o,s,r,e){for(;r>s;){if(r-s>600){var f=r-s+1,p=o-s+1,w=Math.log(f),m=.5*Math.exp(2*w/3),n=.5*Math.sqrt(w*m*(f-m)/f)*(p-f/2<0?-1:1);select(t,a,o,Math.max(s,Math.floor(o-p*m/f+n)),Math.min(r,Math.floor(o+(f-p)*m/f+n)),e)}var c=a[2*o+e],h=s,i=r;for(swapItem(t,a,s,o),a[2*r+e]>c&&swapItem(t,a,s,r);h<i;){for(swapItem(t,a,h,i),h++,i--;a[2*h+e]<c;)h++;for(;a[2*i+e]>c;)i--}a[2*s+e]===c?swapItem(t,a,s,i):(i++,swapItem(t,a,i,r)),i<=o&&(s=i+1),o<=i&&(r=i-1)}}function swapItem(t,a,o,s){swap(t,o,s),swap(a,2*o,2*s),swap(a,2*o+1,2*s+1)}function swap(t,a,o){var s=t[a];t[a]=t[o],t[o]=s}module.exports=sortKD;\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";function within(s,p,r,t,u,h){for(var i=[0,s.length-1,0],o=[],n=u*u;i.length;){var e=i.pop(),a=i.pop(),f=i.pop();if(a-f<=h)for(var v=f;v<=a;v++)sqDist(p[2*v],p[2*v+1],r,t)<=n&&o.push(s[v]);else{var l=Math.floor((f+a)/2),c=p[2*l],q=p[2*l+1];sqDist(c,q,r,t)<=n&&o.push(s[l]);var D=(e+1)%2;(0===e?r-u<=c:t-u<=q)&&(i.push(f),i.push(l-1),i.push(D)),(0===e?r+u>=c:t+u>=q)&&(i.push(l+1),i.push(a),i.push(D))}}return o}function sqDist(s,p,r,t){var u=s-r,h=p-t;return u*u+h*h}module.exports=within;\n},{}],28:[function(_dereq_,module,exports){\n\"use strict\";function isSupported(e){return!!(isBrowser()&&isArraySupported()&&isFunctionSupported()&&isObjectSupported()&&isJSONSupported()&&isWorkerSupported()&&isUint8ClampedArraySupported()&&isWebGLSupportedCached(e&&e.failIfMajorPerformanceCaveat))}function isBrowser(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}function isArraySupported(){return Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray}function isFunctionSupported(){return Function.prototype&&Function.prototype.bind}function isObjectSupported(){return Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions}function isJSONSupported(){return\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON}function isWorkerSupported(){return\"Worker\"in window}function isUint8ClampedArraySupported(){return\"Uint8ClampedArray\"in window}function isWebGLSupportedCached(e){return void 0===isWebGLSupportedCache[e]&&(isWebGLSupportedCache[e]=isWebGLSupported(e)),isWebGLSupportedCache[e]}function isWebGLSupported(e){var t=document.createElement(\"canvas\"),r=Object.create(isSupported.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=e,t.probablySupportsContext?t.probablySupportsContext(\"webgl\",r)||t.probablySupportsContext(\"experimental-webgl\",r):t.supportsContext?t.supportsContext(\"webgl\",r)||t.supportsContext(\"experimental-webgl\",r):t.getContext(\"webgl\",r)||t.getContext(\"experimental-webgl\",r)}\"undefined\"!=typeof module&&module.exports?module.exports=isSupported:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=isSupported);var isWebGLSupportedCache={};isSupported.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};\n},{}],29:[function(_dereq_,module,exports){\n\"use strict\";function Pbf(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}function readVarintRemainder(t,i,e){var r,s,n=e.buf;if(s=n[e.pos++],r=(112&s)>>4,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<3,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<10,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<17,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<24,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(1&s)<<31,s<128)return toNum(t,r,i);throw new Error(\"Expected varint not more than 10 bytes\")}function readPackedEnd(t){return t.type===Pbf.Bytes?t.readVarint()+t.pos:t.pos+1}function toNum(t,i,e){return e?4294967296*i+(t>>>0):4294967296*(i>>>0)+(t>>>0)}function writeBigVarint(t,i){var e,r;if(t>=0?(e=t%4294967296|0,r=t/4294967296|0):(e=~(-t%4294967296),r=~(-t/4294967296),4294967295^e?e=e+1|0:(e=0,r=r+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");i.realloc(10),writeBigVarintLow(e,r,i),writeBigVarintHigh(r,i)}function writeBigVarintLow(t,i,e){e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos]=127&t}function writeBigVarintHigh(t,i){var e=(7&t)<<4;i.buf[i.pos++]|=e|((t>>>=3)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t)))))}function makeRoomForExtraLength(t,i,e){var r=i<=16383?1:i<=2097151?2:i<=268435455?3:Math.ceil(Math.log(i)/(7*Math.LN2));e.realloc(r);for(var s=e.pos-1;s>=t;s--)e.buf[s+r]=e.buf[s]}function writePackedVarint(t,i){for(var e=0;e<t.length;e++)i.writeVarint(t[e])}function writePackedSVarint(t,i){for(var e=0;e<t.length;e++)i.writeSVarint(t[e])}function writePackedFloat(t,i){for(var e=0;e<t.length;e++)i.writeFloat(t[e])}function writePackedDouble(t,i){for(var e=0;e<t.length;e++)i.writeDouble(t[e])}function writePackedBoolean(t,i){for(var e=0;e<t.length;e++)i.writeBoolean(t[e])}function writePackedFixed32(t,i){for(var e=0;e<t.length;e++)i.writeFixed32(t[e])}function writePackedSFixed32(t,i){for(var e=0;e<t.length;e++)i.writeSFixed32(t[e])}function writePackedFixed64(t,i){for(var e=0;e<t.length;e++)i.writeFixed64(t[e])}function writePackedSFixed64(t,i){for(var e=0;e<t.length;e++)i.writeSFixed64(t[e])}function readUInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+16777216*t[i+3]}function writeInt32(t,i,e){t[e]=i,t[e+1]=i>>>8,t[e+2]=i>>>16,t[e+3]=i>>>24}function readInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+(t[i+3]<<24)}function readUtf8(t,i,e){for(var r=\"\",s=i;s<e;){var n=t[s],o=null,a=n>239?4:n>223?3:n>191?2:1;if(s+a>e)break;var h,u,f;1===a?n<128&&(o=n):2===a?128==(192&(h=t[s+1]))&&(o=(31&n)<<6|63&h)<=127&&(o=null):3===a?(h=t[s+1],u=t[s+2],128==(192&h)&&128==(192&u)&&((o=(15&n)<<12|(63&h)<<6|63&u)<=2047||o>=55296&&o<=57343)&&(o=null)):4===a&&(h=t[s+1],u=t[s+2],f=t[s+3],128==(192&h)&&128==(192&u)&&128==(192&f)&&((o=(15&n)<<18|(63&h)<<12|(63&u)<<6|63&f)<=65535||o>=1114112)&&(o=null)),null===o?(o=65533,a=1):o>65535&&(o-=65536,r+=String.fromCharCode(o>>>10&1023|55296),o=56320|1023&o),r+=String.fromCharCode(o),s+=a}return r}function writeUtf8(t,i,e){for(var r,s,n=0;n<i.length;n++){if((r=i.charCodeAt(n))>55295&&r<57344){if(!s){r>56319||n+1===i.length?(t[e++]=239,t[e++]=191,t[e++]=189):s=r;continue}if(r<56320){t[e++]=239,t[e++]=191,t[e++]=189,s=r;continue}r=s-55296<<10|r-56320|65536,s=null}else s&&(t[e++]=239,t[e++]=191,t[e++]=189,s=null);r<128?t[e++]=r:(r<2048?t[e++]=r>>6|192:(r<65536?t[e++]=r>>12|224:(t[e++]=r>>18|240,t[e++]=r>>12&63|128),t[e++]=r>>6&63|128),t[e++]=63&r|128)}return e}module.exports=Pbf;var ieee754=_dereq_(\"ieee754\");Pbf.Varint=0,Pbf.Fixed64=1,Pbf.Bytes=2,Pbf.Fixed32=5;var SHIFT_LEFT_32=4294967296,SHIFT_RIGHT_32=1/SHIFT_LEFT_32;Pbf.prototype={destroy:function(){this.buf=null},readFields:function(t,i,e){for(e=e||this.length;this.pos<e;){var r=this.readVarint(),s=r>>3,n=this.pos;this.type=7&r,t(s,i,this),this.pos===n&&this.skip(r)}return i},readMessage:function(t,i){return this.readFields(t,i,this.readVarint()+this.pos)},readFixed32:function(){var t=readUInt32(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=readInt32(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=readUInt32(this.buf,this.pos)+readUInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readSFixed64:function(){var t=readUInt32(this.buf,this.pos)+readInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readFloat:function(){var t=ieee754.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=ieee754.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var i,e,r=this.buf;return e=r[this.pos++],i=127&e,e<128?i:(e=r[this.pos++],i|=(127&e)<<7,e<128?i:(e=r[this.pos++],i|=(127&e)<<14,e<128?i:(e=r[this.pos++],i|=(127&e)<<21,e<128?i:(e=r[this.pos],i|=(15&e)<<28,readVarintRemainder(i,t,this)))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,i=readUtf8(this.buf,this.pos,t);return this.pos=t,i},readBytes:function(){var t=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,t);return this.pos=t,i},readPackedVarint:function(t,i){var e=readPackedEnd(this);for(t=t||[];this.pos<e;)t.push(this.readVarint(i));return t},readPackedSVarint:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readBoolean());return t},readPackedFloat:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFloat());return t},readPackedDouble:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readDouble());return t},readPackedFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed64());return t},skip:function(t){var i=7&t;if(i===Pbf.Varint)for(;this.buf[this.pos++]>127;);else if(i===Pbf.Bytes)this.pos=this.readVarint()+this.pos;else if(i===Pbf.Fixed32)this.pos+=4;else{if(i!==Pbf.Fixed64)throw new Error(\"Unimplemented type: \"+i);this.pos+=8}},writeTag:function(t,i){this.writeVarint(t<<3|i)},realloc:function(t){for(var i=this.length||16;i<this.pos+t;)i*=2;if(i!==this.length){var e=new Uint8Array(i);e.set(this.buf),this.buf=e,this.length=i}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeVarint:function(t){if((t=+t||0)>268435455||t<0)return void writeBigVarint(t,this);this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127)))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var i=this.pos;this.pos=writeUtf8(this.buf,t,this.pos);var e=this.pos-i;e>=128&&makeRoomForExtraLength(i,e,this),this.pos=i-1,this.writeVarint(e),this.pos+=e},writeFloat:function(t){this.realloc(4),ieee754.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),ieee754.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var i=t.length;this.writeVarint(i),this.realloc(i);for(var e=0;e<i;e++)this.buf[this.pos++]=t[e]},writeRawMessage:function(t,i){this.pos++;var e=this.pos;t(i,this);var r=this.pos-e;r>=128&&makeRoomForExtraLength(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,i,e){this.writeTag(t,Pbf.Bytes),this.writeRawMessage(i,e)},writePackedVarint:function(t,i){this.writeMessage(t,writePackedVarint,i)},writePackedSVarint:function(t,i){this.writeMessage(t,writePackedSVarint,i)},writePackedBoolean:function(t,i){this.writeMessage(t,writePackedBoolean,i)},writePackedFloat:function(t,i){this.writeMessage(t,writePackedFloat,i)},writePackedDouble:function(t,i){this.writeMessage(t,writePackedDouble,i)},writePackedFixed32:function(t,i){this.writeMessage(t,writePackedFixed32,i)},writePackedSFixed32:function(t,i){this.writeMessage(t,writePackedSFixed32,i)},writePackedFixed64:function(t,i){this.writeMessage(t,writePackedFixed64,i)},writePackedSFixed64:function(t,i){this.writeMessage(t,writePackedSFixed64,i)},writeBytesField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeBytes(i)},writeFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFixed32(i)},writeSFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeSFixed32(i)},writeFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeFixed64(i)},writeSFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeSFixed64(i)},writeVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeVarint(i)},writeSVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeSVarint(i)},writeStringField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeString(i)},writeFloatField:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFloat(i)},writeDoubleField:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeDouble(i)},writeBooleanField:function(t,i){this.writeVarintField(t,Boolean(i))}};\n},{\"ieee754\":23}],30:[function(_dereq_,module,exports){\nfunction defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex<t;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,t=queue.length}currentQueue=null,draining=!1,runClearTimeout(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}var process=module.exports={},cachedSetTimeout,cachedClearTimeout;!function(){try{cachedSetTimeout=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var queue=[],draining=!1,currentQueue,queueIndex=-1;process.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];queue.push(new Item(e,t)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.version=\"\",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(e){return[]},process.binding=function(e){throw new Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(e){throw new Error(\"process.chdir is not supported\")},process.umask=function(){return 0};\n},{}],31:[function(_dereq_,module,exports){\n\"use strict\";function partialSort(a,t,r,o,p){for(r=r||0,o=o||a.length-1,p=p||defaultCompare;o>r;){if(o-r>600){var f=o-r+1,e=t-r+1,l=Math.log(f),s=.5*Math.exp(2*l/3),i=.5*Math.sqrt(l*s*(f-s)/f)*(e-f/2<0?-1:1);partialSort(a,t,Math.max(r,Math.floor(t-e*s/f+i)),Math.min(o,Math.floor(t+(f-e)*s/f+i)),p)}var n=a[t],h=r,u=o;for(swap(a,r,t),p(a[o],n)>0&&swap(a,r,o);h<u;){for(swap(a,h,u),h++,u--;p(a[h],n)<0;)h++;for(;p(a[u],n)>0;)u--}0===p(a[r],n)?swap(a,r,u):(u++,swap(a,u,o)),u<=t&&(r=u+1),t<=u&&(o=u-1)}}function swap(a,t,r){var o=a[t];a[t]=a[r],a[r]=o}function defaultCompare(a,t){return a<t?-1:a>t?1:0}module.exports=partialSort;\n},{}],32:[function(_dereq_,module,exports){\n\"use strict\";function supercluster(t){return new SuperCluster(t)}function SuperCluster(t){this.options=extend(Object.create(this.options),t),this.trees=new Array(this.options.maxZoom+1)}function createCluster(t,e,n,o,i){return{x:t,y:e,zoom:1/0,id:o,properties:i,parentId:-1,numPoints:n}}function createPointCluster(t,e){var n=t.geometry.coordinates;return{x:lngX(n[0]),y:latY(n[1]),zoom:1/0,id:e,parentId:-1}}function getClusterJSON(t){return{type:\"Feature\",properties:getClusterProperties(t),geometry:{type:\"Point\",coordinates:[xLng(t.x),yLat(t.y)]}}}function getClusterProperties(t){var e=t.numPoints,n=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return extend(extend({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:n})}function lngX(t){return t/360+.5}function latY(t){var e=Math.sin(t*Math.PI/180),n=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return n<0?0:n>1?1:n}function xLng(t){return 360*(t-.5)}function yLat(t){var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function extend(t,e){for(var n in e)t[n]=e[n];return t}function getX(t){return t.x}function getY(t){return t.y}var kdbush=_dereq_(\"kdbush\");module.exports=supercluster,SuperCluster.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time(\"total time\");var n=\"prepare \"+t.length+\" points\";e&&console.time(n),this.points=t;var o=t.map(createPointCluster);e&&console.timeEnd(n);for(var i=this.options.maxZoom;i>=this.options.minZoom;i--){var r=+Date.now();this.trees[i+1]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),o=this._cluster(o,i),e&&console.log(\"z%d: %d clusters in %dms\",i,o.length,+Date.now()-r)}return this.trees[this.options.minZoom]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),e&&console.timeEnd(\"total time\"),this},getClusters:function(t,e){for(var n=this.trees[this._limitZoom(e)],o=n.range(lngX(t[0]),latY(t[3]),lngX(t[2]),latY(t[1])),i=[],r=0;r<o.length;r++){var s=n.points[o[r]];i.push(s.numPoints?getClusterJSON(s):this.points[s.id])}return i},getChildren:function(t,e){for(var n=this.trees[e+1].points[t],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=this.trees[e+1].within(n.x,n.y,o),r=[],s=0;s<i.length;s++){var u=this.trees[e+1].points[i[s]];u.parentId===t&&r.push(u.numPoints?getClusterJSON(u):this.points[u.id])}return r},getLeaves:function(t,e,n,o){n=n||10,o=o||0;var i=[];return this._appendLeaves(i,t,e,n,o,0),i},getTile:function(t,e,n){var o=this.trees[this._limitZoom(t)],i=Math.pow(2,t),r=this.options.extent,s=this.options.radius,u=s/r,a=(n-u)/i,p=(n+1+u)/i,h={features:[]};return this._addTileFeatures(o.range((e-u)/i,a,(e+1+u)/i,p),o.points,e,n,i,h),0===e&&this._addTileFeatures(o.range(1-u/i,a,1,p),o.points,i,n,i,h),e===i-1&&this._addTileFeatures(o.range(0,a,u/i,p),o.points,-1,n,i,h),h.features.length?h:null},getClusterExpansionZoom:function(t,e){for(;e<this.options.maxZoom;){var n=this.getChildren(t,e);if(e++,1!==n.length)break;t=n[0].properties.cluster_id}return e},_appendLeaves:function(t,e,n,o,i,r){for(var s=this.getChildren(e,n),u=0;u<s.length;u++){var a=s[u].properties;if(a.cluster?r+a.point_count<=i?r+=a.point_count:r=this._appendLeaves(t,a.cluster_id,n+1,o,i,r):r<i?r++:t.push(s[u]),t.length===o)break}return r},_addTileFeatures:function(t,e,n,o,i,r){for(var s=0;s<t.length;s++){var u=e[t[s]];r.features.push({type:1,geometry:[[Math.round(this.options.extent*(u.x*i-n)),Math.round(this.options.extent*(u.y*i-o))]],tags:u.numPoints?getClusterProperties(u):this.points[u.id].properties})}},_limitZoom:function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},_cluster:function(t,e){for(var n=[],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=0;i<t.length;i++){var r=t[i];if(!(r.zoom<=e)){r.zoom=e;var s=this.trees[e+1],u=s.within(r.x,r.y,o),a=r.numPoints||1,p=r.x*a,h=r.y*a,l=null;this.options.reduce&&(l=this.options.initial(),this._accumulate(l,r));for(var c=0;c<u.length;c++){var d=s.points[u[c]];if(e<d.zoom){var m=d.numPoints||1;d.zoom=e,p+=d.x*m,h+=d.y*m,a+=m,d.parentId=i,this.options.reduce&&this._accumulate(l,d)}}1===a?n.push(r):(r.parentId=i,n.push(createCluster(p/a,h/a,a,i,l)))}}return n},_accumulate:function(t,e){var n=e.numPoints?e.properties:this.options.map(this.points[e.id].properties);this.options.reduce(t,n)}};\n},{\"kdbush\":24}],33:[function(_dereq_,module,exports){\n\"use strict\";function TinyQueue(t,i){if(!(this instanceof TinyQueue))return new TinyQueue(t,i);if(this.data=t||[],this.length=this.data.length,this.compare=i||defaultCompare,this.length>0)for(var e=this.length>>1;e>=0;e--)this._down(e)}function defaultCompare(t,i){return t<i?-1:t>i?1:0}module.exports=TinyQueue,TinyQueue.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var i=this.data,e=this.compare,h=i[t];t>0;){var n=t-1>>1,a=i[n];if(e(h,a)>=0)break;i[t]=a,t=n}i[t]=h},_down:function(t){for(var i=this.data,e=this.compare,h=this.length,n=h>>1,a=i[t];t<n;){var s=1+(t<<1),u=s+1,r=i[s];if(u<h&&e(i[u],r)<0&&(s=u,r=i[u]),e(r,a)>=0)break;i[t]=r,t=s}i[t]=a}};\n},{}],34:[function(_dereq_,module,exports){\n\"function\"==typeof Object.create?module.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:module.exports=function(t,e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t};\n},{}],35:[function(_dereq_,module,exports){\nmodule.exports=function(o){return o&&\"object\"==typeof o&&\"function\"==typeof o.copy&&\"function\"==typeof o.fill&&\"function\"==typeof o.readUInt8};\n},{}],36:[function(_dereq_,module,exports){\n(function (process,global){\nfunction inspect(e,r){var t={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),isBoolean(r)?t.showHidden=r:r&&exports._extend(t,r),isUndefined(t.showHidden)&&(t.showHidden=!1),isUndefined(t.depth)&&(t.depth=2),isUndefined(t.colors)&&(t.colors=!1),isUndefined(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=stylizeWithColor),formatValue(t,e,t.depth)}function stylizeWithColor(e,r){var t=inspect.styles[r];return t?\"\u001b[\"+inspect.colors[t][0]+\"m\"+e+\"\u001b[\"+inspect.colors[t][1]+\"m\":e}function stylizeNoColor(e,r){return e}function arrayToHash(e){var r={};return e.forEach(function(e,t){r[e]=!0}),r}function formatValue(e,r,t){if(e.customInspect&&r&&isFunction(r.inspect)&&r.inspect!==exports.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(t,e);return isString(n)||(n=formatValue(e,n,t)),n}var i=formatPrimitive(e,r);if(i)return i;var o=Object.keys(r),s=arrayToHash(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),isError(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return formatError(r);if(0===o.length){if(isFunction(r)){var u=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+u+\"]\",\"special\")}if(isRegExp(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(isDate(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(isError(r))return formatError(r)}var c=\"\",a=!1,l=[\"{\",\"}\"];if(isArray(r)&&(a=!0,l=[\"[\",\"]\"]),isFunction(r)){c=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\"}if(isRegExp(r)&&(c=\" \"+RegExp.prototype.toString.call(r)),isDate(r)&&(c=\" \"+Date.prototype.toUTCString.call(r)),isError(r)&&(c=\" \"+formatError(r)),0===o.length&&(!a||0==r.length))return l[0]+c+l[1];if(t<0)return isRegExp(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\");e.seen.push(r);var p;return p=a?formatArray(e,r,t,s,o):o.map(function(n){return formatProperty(e,r,t,s,n,a)}),e.seen.pop(),reduceToSingleString(p,c,l)}function formatPrimitive(e,r){if(isUndefined(r))return e.stylize(\"undefined\",\"undefined\");if(isString(r)){var t=\"'\"+JSON.stringify(r).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(t,\"string\")}return isNumber(r)?e.stylize(\"\"+r,\"number\"):isBoolean(r)?e.stylize(\"\"+r,\"boolean\"):isNull(r)?e.stylize(\"null\",\"null\"):void 0}function formatError(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function formatArray(e,r,t,n,i){for(var o=[],s=0,u=r.length;s<u;++s)hasOwnProperty(r,String(s))?o.push(formatProperty(e,r,t,n,String(s),!0)):o.push(\"\");return i.forEach(function(i){i.match(/^\\d+$/)||o.push(formatProperty(e,r,t,n,i,!0))}),o}function formatProperty(e,r,t,n,i,o){var s,u,c;if(c=Object.getOwnPropertyDescriptor(r,i)||{value:r[i]},c.get?u=c.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):c.set&&(u=e.stylize(\"[Setter]\",\"special\")),hasOwnProperty(n,i)||(s=\"[\"+i+\"]\"),u||(e.seen.indexOf(c.value)<0?(u=isNull(t)?formatValue(e,c.value,null):formatValue(e,c.value,t-1),u.indexOf(\"\\n\")>-1&&(u=o?u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\"))):u=e.stylize(\"[Circular]\",\"special\")),isUndefined(s)){if(o&&i.match(/^\\d+$/))return u;s=JSON.stringify(\"\"+i),s.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,\"name\")):(s=s.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),s=e.stylize(s,\"string\"))}return s+\": \"+u}function reduceToSingleString(e,r,t){var n=0;return e.reduce(function(e,r){return n++,r.indexOf(\"\\n\")>=0&&n++,e+r.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60?t[0]+(\"\"===r?\"\":r+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+t[1]:t[0]+r+\" \"+e.join(\", \")+\" \"+t[1]}function isArray(e){return Array.isArray(e)}function isBoolean(e){return\"boolean\"==typeof e}function isNull(e){return null===e}function isNullOrUndefined(e){return null==e}function isNumber(e){return\"number\"==typeof e}function isString(e){return\"string\"==typeof e}function isSymbol(e){return\"symbol\"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&\"[object RegExp]\"===objectToString(e)}function isObject(e){return\"object\"==typeof e&&null!==e}function isDate(e){return isObject(e)&&\"[object Date]\"===objectToString(e)}function isError(e){return isObject(e)&&(\"[object Error]\"===objectToString(e)||e instanceof Error)}function isFunction(e){return\"function\"==typeof e}function isPrimitive(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?\"0\"+e.toString(10):e.toString(10)}function timestamp(){var e=new Date,r=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(\":\");return[e.getDate(),months[e.getMonth()],r].join(\" \")}function hasOwnProperty(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var formatRegExp=/%[sdj%]/g;exports.format=function(e){if(!isString(e)){for(var r=[],t=0;t<arguments.length;t++)r.push(inspect(arguments[t]));return r.join(\" \")}for(var t=1,n=arguments,i=n.length,o=String(e).replace(formatRegExp,function(e){if(\"%%\"===e)return\"%\";if(t>=i)return e;switch(e){case\"%s\":return String(n[t++]);case\"%d\":return Number(n[t++]);case\"%j\":try{return JSON.stringify(n[t++])}catch(e){return\"[Circular]\"}default:return e}}),s=n[t];t<i;s=n[++t])isNull(s)||!isObject(s)?o+=\" \"+s:o+=\" \"+inspect(s);return o},exports.deprecate=function(e,r){function t(){if(!n){if(process.throwDeprecation)throw new Error(r);process.traceDeprecation?console.trace(r):console.error(r),n=!0}return e.apply(this,arguments)}if(isUndefined(global.process))return function(){return exports.deprecate(e,r).apply(this,arguments)};if(!0===process.noDeprecation)return e;var n=!1;return t};var debugs={},debugEnviron;exports.debuglog=function(e){if(isUndefined(debugEnviron)&&(debugEnviron=process.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!debugs[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(debugEnviron)){var r=process.pid;debugs[e]=function(){var t=exports.format.apply(exports,arguments);console.error(\"%s %d: %s\",e,r,t)}}else debugs[e]=function(){};return debugs[e]},exports.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},exports.isArray=isArray,exports.isBoolean=isBoolean,exports.isNull=isNull,exports.isNullOrUndefined=isNullOrUndefined,exports.isNumber=isNumber,exports.isString=isString,exports.isSymbol=isSymbol,exports.isUndefined=isUndefined,exports.isRegExp=isRegExp,exports.isObject=isObject,exports.isDate=isDate,exports.isError=isError,exports.isFunction=isFunction,exports.isPrimitive=isPrimitive,exports.isBuffer=_dereq_(\"./support/isBuffer\");var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];exports.log=function(){console.log(\"%s - %s\",timestamp(),exports.format.apply(exports,arguments))},exports.inherits=_dereq_(\"inherits\"),exports._extend=function(e,r){if(!r||!isObject(r))return e;for(var t=Object.keys(r),n=t.length;n--;)e[t[n]]=r[t[n]];return e};\n}).call(this,_dereq_('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./support/isBuffer\":35,\"_process\":30,\"inherits\":34}],37:[function(_dereq_,module,exports){\nfunction fromVectorTileJs(e){var r=new Pbf;return writeTile(e,r),r.finish()}function fromGeojsonVt(e){var r={};for(var t in e)r[t]=new GeoJSONWrapper(e[t].features),r[t].name=t;return fromVectorTileJs({layers:r})}function writeTile(e,r){for(var t in e.layers)r.writeMessage(3,writeLayer,e.layers[t])}function writeLayer(e,r){r.writeVarintField(15,e.version||1),r.writeStringField(1,e.name||\"\"),r.writeVarintField(5,e.extent||4096);var t,i={keys:[],values:[],keycache:{},valuecache:{}};for(t=0;t<e.length;t++)i.feature=e.feature(t),r.writeMessage(2,writeFeature,i);var a=i.keys;for(t=0;t<a.length;t++)r.writeStringField(3,a[t]);var o=i.values;for(t=0;t<o.length;t++)r.writeMessage(4,writeValue,o[t])}function writeFeature(e,r){var t=e.feature;void 0!==t.id&&r.writeVarintField(1,t.id),r.writeMessage(2,writeProperties,e),r.writeVarintField(3,t.type),r.writeMessage(4,writeGeometry,t)}function writeProperties(e,r){var t=e.feature,i=e.keys,a=e.values,o=e.keycache,n=e.valuecache;for(var l in t.properties){var s=o[l];void 0===s&&(i.push(l),s=i.length-1,o[l]=s),r.writeVarint(s);var u=t.properties[l],f=typeof u;\"string\"!==f&&\"boolean\"!==f&&\"number\"!==f&&(u=JSON.stringify(u));var w=f+\":\"+u,v=n[w];void 0===v&&(a.push(u),v=a.length-1,n[w]=v),r.writeVarint(v)}}function command(e,r){return(r<<3)+(7&e)}function zigzag(e){return e<<1^e>>31}function writeGeometry(e,r){for(var t=e.loadGeometry(),i=e.type,a=0,o=0,n=t.length,l=0;l<n;l++){var s=t[l],u=1;1===i&&(u=s.length),r.writeVarint(command(1,u));for(var f=0;f<s.length;f++){1===f&&1!==i&&r.writeVarint(command(2,s.length-1));var w=s[f].x-a,v=s[f].y-o;r.writeVarint(zigzag(w)),r.writeVarint(zigzag(v)),a+=w,o+=v}}}function writeValue(e,r){var t=typeof e;\"string\"===t?r.writeStringField(1,e):\"boolean\"===t?r.writeBooleanField(7,e):\"number\"===t&&(e%1!=0?r.writeDoubleField(3,e):e<0?r.writeSVarintField(6,e):r.writeVarintField(5,e))}var Pbf=_dereq_(\"pbf\"),GeoJSONWrapper=_dereq_(\"./lib/geojson_wrapper\");module.exports=fromVectorTileJs,module.exports.fromVectorTileJs=fromVectorTileJs,module.exports.fromGeojsonVt=fromGeojsonVt,module.exports.GeoJSONWrapper=GeoJSONWrapper;\n},{\"./lib/geojson_wrapper\":38,\"pbf\":29}],38:[function(_dereq_,module,exports){\n\"use strict\";function GeoJSONWrapper(e){this.features=e,this.length=e.length}function FeatureWrapper(e){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=4096}var Point=_dereq_(\"@mapbox/point-geometry\"),VectorTileFeature=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature;module.exports=GeoJSONWrapper,GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this.features[e])},FeatureWrapper.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var r=e[t],o=[],a=0;a<r.length;a++)o.push(new Point(r[a][0],r[a][1]));this.geometry.push(o)}return this.geometry},FeatureWrapper.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,a=-1/0,p=0;p<e.length;p++)for(var i=e[p],n=0;n<i.length;n++){var h=i[n];t=Math.min(t,h.x),r=Math.max(r,h.x),o=Math.min(o,h.y),a=Math.max(a,h.y)}return[t,o,r,a]},FeatureWrapper.prototype.toGeoJSON=VectorTileFeature.prototype.toGeoJSON;\n},{\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],39:[function(_dereq_,module,exports){\nvar bundleFn=arguments[3],sources=arguments[4],cache=arguments[5],stringify=JSON.stringify;module.exports=function(r,e){function t(r){d[r]=!0;for(var e in sources[r][1]){var n=sources[r][1][e];d[n]||t(n)}}for(var n,o=Object.keys(cache),a=0,i=o.length;a<i;a++){var s=o[a],u=cache[s].exports;if(u===r||u&&u.default===r){n=s;break}}if(!n){n=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},a=0,i=o.length;a<i;a++){var s=o[a];f[s]=s}sources[n]=[Function([\"require\",\"module\",\"exports\"],\"(\"+r+\")(self)\"),f]}var c=Math.floor(Math.pow(16,8)*Math.random()).toString(16),l={};l[n]=n,sources[c]=[Function([\"require\"],\"var f = require(\"+stringify(n)+\");(f.default ? f.default : f)(self);\"),l];var d={};t(c);var g=\"(\"+bundleFn+\")({\"+Object.keys(d).map(function(r){return stringify(r)+\":[\"+sources[r][0]+\",\"+stringify(sources[r][1])+\"]\"}).join(\",\")+\"},{},[\"+stringify(c)+\"])\",v=window.URL||window.webkitURL||window.mozURL||window.msURL,w=new Blob([g],{type:\"text/javascript\"});if(e&&e.bare)return w;var h=v.createObjectURL(w),b=new Worker(h);return b.objectURL=h,b};\n},{}],40:[function(_dereq_,module,exports){\nmodule.exports.RADIUS=6378137,module.exports.FLATTENING=1/298.257223563,module.exports.POLAR_RADIUS=6356752.3142;\n},{}],41:[function(_dereq_,module,exports){\nmodule.exports={\"version\":\"0.40.1\"}\n},{}],42:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");module.exports={deserialize:function(e,r){var t={};if(!r)return t;for(var i=0,a=e;i<a.length;i+=1){var l=a[i],u=l.layerIds.map(function(e){return r.getLayer(e)}).filter(Boolean);if(0!==u.length)for(var n=u[0].createBucket(util.extend({layers:u},l)),o=0,f=u;o<f.length;o+=1){var s=f[o];t[s.id]=n}}return t}};\n},{\"../util/util\":223}],43:[function(_dereq_,module,exports){\n\"use strict\";function addCircleVertex(e,r,t,i,a){e.emplaceBack(2*r+(i+1)/2,2*t+(a+1)/2)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),circleInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"circle-color\"},{property:\"circle-radius\"},{property:\"circle-blur\"},{property:\"circle-opacity\"},{property:\"circle-stroke-color\"},{property:\"circle-stroke-width\"},{property:\"circle-stroke-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(circleInterface.layoutAttributes),CircleBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(circleInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};CircleBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var o=a[i],n=o.feature,y=o.index,u=o.sourceLayerIndex;if(t.layers[0].filter(n)){var s=loadGeometry(n);t.addFeature(n,s),r.featureIndex.insert(n,s,y,u,t.index)}}},CircleBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},CircleBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},CircleBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},CircleBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},CircleBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=r;i<a.length;i+=1)for(var o=a[i],n=0,y=o;n<y.length;n+=1){var u=y[n],s=u.x,c=u.y;if(!(s<0||s>=EXTENT||c<0||c>=EXTENT)){var l=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),p=l.vertexLength;addCircleVertex(t.layoutVertexArray,s,c,-1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,1),addCircleVertex(t.layoutVertexArray,s,c,-1,1),t.indexArray.emplaceBack(p,p+1,p+2),t.indexArray.emplaceBack(p,p+3,p+2),l.vertexLength+=4,l.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},CircleBucket.programInterface=circleInterface,module.exports=CircleBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56}],44:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),LineIndexArray=ref$2.LineIndexArray,TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,indexArrayType2:LineIndexArray,paintAttributes:[{property:\"fill-color\"},{property:\"fill-outline-color\"},{property:\"fill-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(fillInterface.layoutAttributes),FillBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.indexArray2=new LineIndexArray(e.indexArray2),this.programConfigurations=new ProgramConfigurationSet(fillInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments),this.segments2=new SegmentVector(e.segments2)};FillBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var n=a[i],o=n.feature,s=n.index,y=n.sourceLayerIndex;if(t.layers[0].filter(o)){var l=loadGeometry(o);t.addFeature(o,l),r.featureIndex.insert(o,l,s,y,t.index)}}},FillBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),indexArray2:this.indexArray2.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),segments2:this.segments2.get()}},FillBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.indexBuffer2=new IndexBuffer(e,this.indexArray2),this.programConfigurations.upload(e)},FillBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},FillBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=classifyRings(r,EARCUT_MAX_RINGS);i<a.length;i+=1){for(var n=a[i],o=0,s=0,y=n;s<y.length;s+=1){o+=y[s].length}for(var l=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray),u=l.vertexLength,f=[],g=[],x=0,p=n;x<p.length;x+=1){var h=p[x];if(0!==h.length){h!==n[0]&&g.push(f.length/2);var d=t.segments2.prepareSegment(h.length,t.layoutVertexArray,t.indexArray2),c=d.vertexLength;t.layoutVertexArray.emplaceBack(h[0].x,h[0].y),t.indexArray2.emplaceBack(c+h.length-1,c),f.push(h[0].x),f.push(h[0].y);for(var m=1;m<h.length;m++)t.layoutVertexArray.emplaceBack(h[m].x,h[m].y),t.indexArray2.emplaceBack(c+m-1,c+m),f.push(h[m].x),f.push(h[m].y);d.vertexLength+=h.length,d.primitiveLength+=h.length}}for(var A=earcut(f,g),B=0;B<A.length;B+=3)t.indexArray.emplaceBack(u+A[B],u+A[B+1],u+A[B+2]);l.vertexLength+=o,l.primitiveLength+=A.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillBucket.programInterface=fillInterface,module.exports=FillBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],45:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,r,t,a,i,n,o,s){e.emplaceBack(r,t,2*Math.floor(a*FACTOR)+o,i*FACTOR*2,n*FACTOR*2,Math.round(s))}function isBoundaryEdge(e,r){return e.x===r.x&&(e.x<0||e.x>EXTENT)||e.y===r.y&&(e.y<0||e.y>EXTENT)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,MAX_VERTEX_ARRAY_LENGTH=ref.MAX_VERTEX_ARRAY_LENGTH,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillExtrusionInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal\",components:3,type:\"Int16\"},{name:\"a_edgedistance\",components:1,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"fill-extrusion-base\"},{property:\"fill-extrusion-height\"},{property:\"fill-extrusion-color\"}]},FACTOR=Math.pow(2,13),LayoutVertexArrayType=createVertexArrayType(fillExtrusionInterface.layoutAttributes),FillExtrusionBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(fillExtrusionInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};FillExtrusionBucket.prototype.populate=function(e,r){for(var t=this,a=0,i=e;a<i.length;a+=1){var n=i[a],o=n.feature,s=n.index,u=n.sourceLayerIndex;if(t.layers[0].filter(o)){var y=loadGeometry(o);t.addFeature(o,y),r.featureIndex.insert(o,y,s,u,t.index)}}},FillExtrusionBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillExtrusionBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},FillExtrusionBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},FillExtrusionBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},FillExtrusionBucket.prototype.addFeature=function(e,r){for(var t=this,a=0,i=classifyRings(r,EARCUT_MAX_RINGS);a<i.length;a+=1){for(var n=i[a],o=0,s=0,u=n;s<u.length;s+=1){o+=u[s].length}for(var y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),l=0,x=n;l<x.length;l+=1){var f=x[l];if(0!==f.length)for(var g=0,p=0;p<f.length;p++){var d=f[p];if(p>=1){var h=f[p-1];if(!isBoundaryEdge(d,h)){y.vertexLength+4>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray));var A=d.sub(h)._perp()._unit();addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,1,g),g+=h.dist(d),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,1,g);var c=y.vertexLength;t.indexArray.emplaceBack(c,c+1,c+2),t.indexArray.emplaceBack(c+1,c+2,c+3),y.vertexLength+=4,y.primitiveLength+=2}}}}y.vertexLength+o>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray));for(var m=[],V=[],E=y.vertexLength,v=0,_=n;v<_.length;v+=1){var T=_[v];if(0!==T.length){T!==n[0]&&V.push(m.length/2);for(var B=0;B<T.length;B++){var R=T[B];addVertex(t.layoutVertexArray,R.x,R.y,0,0,1,1,0),m.push(R.x),m.push(R.y)}}}for(var I=earcut(m,V),C=0;C<I.length;C+=3)t.indexArray.emplaceBack(E+I[C],E+I[C+1],E+I[C+2]);y.primitiveLength+=I.length/3,y.vertexLength+=o}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillExtrusionBucket.programInterface=fillExtrusionInterface,module.exports=FillExtrusionBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],46:[function(_dereq_,module,exports){\n\"use strict\";function addLineVertex(e,t,r,i,a,n,s){e.emplaceBack(t.x,t.y,i?1:0,a?1:-1,Math.round(EXTRUDE_SCALE*r.x)+128,Math.round(EXTRUDE_SCALE*r.y)+128,1+(0===n?0:n<0?-1:1)|(s*LINE_DISTANCE_SCALE&63)<<2,s*LINE_DISTANCE_SCALE>>6)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,EXTRUDE_SCALE=63,COS_HALF_SHARP_CORNER=Math.cos(Math.PI/180*37.5),SHARP_CORNER_OFFSET=15,LINE_DISTANCE_BUFFER_BITS=15,LINE_DISTANCE_SCALE=.5,MAX_LINE_DISTANCE=Math.pow(2,LINE_DISTANCE_BUFFER_BITS-1)/LINE_DISTANCE_SCALE,lineInterface={layoutAttributes:[{name:\"a_pos_normal\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],paintAttributes:[{property:\"line-color\"},{property:\"line-blur\"},{property:\"line-opacity\"},{property:\"line-gap-width\",name:\"gapwidth\"},{property:\"line-offset\"},{property:\"line-width\"},{property:\"line-width\",name:\"floorwidth\",useIntegerZoom:!0}],indexArrayType:TriangleIndexArray},LayoutVertexArrayType=createVertexArrayType(lineInterface.layoutAttributes),LineBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(lineInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};LineBucket.prototype.populate=function(e,t){for(var r=this,i=0,a=e;i<a.length;i+=1){var n=a[i],s=n.feature,o=n.index,u=n.sourceLayerIndex;if(r.layers[0].filter(s)){var d=loadGeometry(s);r.addFeature(s,d),t.featureIndex.insert(s,d,o,u,r.index)}}},LineBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},LineBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},LineBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},LineBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},LineBucket.prototype.addFeature=function(e,t){for(var r=this,i=this.layers[0].layout,a=this.layers[0].getLayoutValue(\"line-join\",{zoom:this.zoom},e.properties),n=i[\"line-cap\"],s=i[\"line-miter-limit\"],o=i[\"line-round-limit\"],u=0,d=t;u<d.length;u+=1){var l=d[u];r.addLine(l,e,a,n,s,o)}},LineBucket.prototype.addLine=function(e,t,r,i,a,n){for(var s=this,o=t.properties,u=\"Polygon\"===vectorTileFeatureTypes[t.type],d=e.length;d>=2&&e[d-1].equals(e[d-2]);)d--;for(var l=0;l<d-1&&e[l].equals(e[l+1]);)l++;if(!(d<(u?3:2))){\"bevel\"===r&&(a=1.05);var y=SHARP_CORNER_OFFSET*(EXTENT/(512*this.overscaling)),h=e[l],p=this.segments.prepareSegment(10*d,this.layoutVertexArray,this.indexArray);this.distance=0;var c,f,x,m=i,g=u?\"butt\":i,_=!0,A=void 0,v=void 0,V=void 0,C=void 0;this.e1=this.e2=this.e3=-1,u&&(c=e[d-2],C=h.sub(c)._unit()._perp());for(var L=l;L<d;L++)if(!(v=u&&L===d-1?e[l+1]:e[L+1])||!e[L].equals(v)){C&&(V=C),c&&(A=c),c=e[L],C=v?v.sub(c)._unit()._perp():V,V=V||C;var E=V.add(C);0===E.x&&0===E.y||E._unit();var S=E.x*C.x+E.y*C.y,I=0!==S?1/S:1/0,T=S<COS_HALF_SHARP_CORNER&&A&&v;if(T&&L>l){var B=c.dist(A);if(B>2*y){var b=c.sub(c.sub(A)._mult(y/B)._round());s.distance+=b.dist(A),s.addCurrentVertex(b,s.distance,V.mult(1),0,0,!1,p),A=b}}var N=A&&v,k=N?r:v?m:g;if(N&&\"round\"===k&&(I<n?k=\"miter\":I<=2&&(k=\"fakeround\")),\"miter\"===k&&I>a&&(k=\"bevel\"),\"bevel\"===k&&(I>2&&(k=\"flipbevel\"),I<a&&(k=\"miter\")),A&&(s.distance+=c.dist(A)),\"miter\"===k)E._mult(I),s.addCurrentVertex(c,s.distance,E,0,0,!1,p);else if(\"flipbevel\"===k){if(I>100)E=C.clone().mult(-1);else{var R=V.x*C.y-V.y*C.x>0?-1:1,F=I*V.add(C).mag()/V.sub(C).mag();E._perp()._mult(F*R)}s.addCurrentVertex(c,s.distance,E,0,0,!1,p),s.addCurrentVertex(c,s.distance,E.mult(-1),0,0,!1,p)}else if(\"bevel\"===k||\"fakeround\"===k){var q=V.x*C.y-V.y*C.x>0,P=-Math.sqrt(I*I-1);if(q?(x=0,f=P):(f=0,x=P),_||s.addCurrentVertex(c,s.distance,V,f,x,!1,p),\"fakeround\"===k){for(var w=Math.floor(8*(.5-(S-.5))),z=void 0,D=0;D<w;D++)z=C.mult((D+1)/(w+1))._add(V)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p);s.addPieSliceVertex(c,s.distance,E,q,p);for(var M=w-1;M>=0;M--)z=V.mult((M+1)/(w+1))._add(C)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p)}v&&s.addCurrentVertex(c,s.distance,C,-f,-x,!1,p)}else\"butt\"===k?(_||s.addCurrentVertex(c,s.distance,V,0,0,!1,p),v&&s.addCurrentVertex(c,s.distance,C,0,0,!1,p)):\"square\"===k?(_||(s.addCurrentVertex(c,s.distance,V,1,1,!1,p),s.e1=s.e2=-1),v&&s.addCurrentVertex(c,s.distance,C,-1,-1,!1,p)):\"round\"===k&&(_||(s.addCurrentVertex(c,s.distance,V,0,0,!1,p),s.addCurrentVertex(c,s.distance,V,1,1,!0,p),s.e1=s.e2=-1),v&&(s.addCurrentVertex(c,s.distance,C,-1,-1,!0,p),s.addCurrentVertex(c,s.distance,C,0,0,!1,p)));if(T&&L<d-1){var O=c.dist(v);if(O>2*y){var X=c.add(v.sub(c)._mult(y/O)._round());s.distance+=X.dist(c),s.addCurrentVertex(X,s.distance,C.mult(1),0,0,!1,p),c=X}}_=!1}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,o)}},LineBucket.prototype.addCurrentVertex=function(e,t,r,i,a,n,s){var o,u=this.layoutVertexArray,d=this.indexArray;o=r.clone(),i&&o._sub(r.perp()._mult(i)),addLineVertex(u,e,o,n,!1,i,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,o=r.mult(-1),a&&o._sub(r.perp()._mult(a)),addLineVertex(u,e,o,n,!0,-a,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,t>MAX_LINE_DISTANCE/2&&(this.distance=0,this.addCurrentVertex(e,this.distance,r,i,a,n,s))},LineBucket.prototype.addPieSliceVertex=function(e,t,r,i,a){r=r.mult(i?-1:1);var n=this.layoutVertexArray,s=this.indexArray;addLineVertex(n,e,r,!1,i,0,t),this.e3=a.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),a.primitiveLength++),i?this.e2=this.e3:this.e1=this.e3},LineBucket.programInterface=lineInterface,module.exports=LineBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/vector-tile\":6}],47:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,t,o,r,a,i,n,s){e.emplaceBack(t,o,Math.round(64*r),Math.round(64*a),i,n,s?s[0]:void 0,s?s[1]:void 0)}function addDynamicAttributes(e,t,o,r){var a=2*Math.PI,i=packUint8ToFloat((o+a)%a/a*255,10*r);e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i)}function addCollisionBoxVertex(e,t,o,r,a,i){return e.emplaceBack(t.x,t.y,o.x,o.y,Math.round(r.x),Math.round(r.y),10*a,10*i)}function getSizeData(e,t,o){var r={};if(r.isFeatureConstant=t.isLayoutValueFeatureConstant(o),r.isZoomConstant=t.isLayoutValueZoomConstant(o),r.isFeatureConstant&&(r.layoutSize=t.getLayoutValue(o,{zoom:e+1})),!r.isZoomConstant){for(var a=t.getLayoutValueStopZoomLevels(o),i=0;i<a.length&&a[i]<=e;)i++;i=Math.max(0,i-1);for(var n=i;n<a.length&&a[n]<e+1;)n++;n=Math.min(a.length-1,n),r.coveringZoomRange=[a[i],a[n]],t.isLayoutValueFeatureConstant(o)&&(r.coveringStopValues=[t.getLayoutValue(o,{zoom:a[i]}),t.getLayoutValue(o,{zoom:a[n]})]),r.functionBase=t.getLayoutProperty(o).base,void 0===r.functionBase&&(r.functionBase=1),r.functionType=t.getLayoutProperty(o).type||\"exponential\"}return r}function getSizeVertexData(e,t,o,r,a){return e.isLayoutValueZoomConstant(r)&&!e.isLayoutValueFeatureConstant(r)?[10*e.getLayoutValue(r,{},a)]:e.isLayoutValueZoomConstant(r)||e.isLayoutValueFeatureConstant(r)?null:[10*e.getLayoutValue(r,{zoom:o[0]},a),10*e.getLayoutValue(r,{zoom:o[1]},a)]}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,LineIndexArray=ref$2.LineIndexArray,EXTENT=_dereq_(\"../extent\"),ref$3=_dereq_(\"../../shaders/encode_attribute\"),packUint8ToFloat=ref$3.packUint8ToFloat,Anchor=_dereq_(\"../../symbol/anchor\"),getAnchors=_dereq_(\"../../symbol/get_anchors\"),resolveTokens=_dereq_(\"../../util/token\"),ref$4=_dereq_(\"../../symbol/quads\"),getGlyphQuads=ref$4.getGlyphQuads,getIconQuads=ref$4.getIconQuads,ref$5=_dereq_(\"../../symbol/shaping\"),shapeText=ref$5.shapeText,shapeIcon=ref$5.shapeIcon,WritingMode=ref$5.WritingMode,transformText=_dereq_(\"../../symbol/transform_text\"),mergeLines=_dereq_(\"../../symbol/mergelines\"),clipLine=_dereq_(\"../../symbol/clip_line\"),util=_dereq_(\"../../util/util\"),scriptDetection=_dereq_(\"../../util/script_detection\"),loadGeometry=_dereq_(\"../load_geometry\"),CollisionFeature=_dereq_(\"../../symbol/collision_feature\"),findPoleOfInaccessibility=_dereq_(\"../../util/find_pole_of_inaccessibility\"),classifyRings=_dereq_(\"../../util/classify_rings\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,createStructArrayType=_dereq_(\"../../util/struct_array\"),verticalizePunctuation=_dereq_(\"../../util/verticalize_punctuation\"),PlacedSymbolArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Float32\",name:\"placementZoom\"},{type:\"Uint8\",name:\"vertical\"}]}),GlyphOffsetArray=createStructArrayType({members:[{type:\"Float32\",name:\"offsetX\"}]}),LineVertexArray=createStructArrayType({members:[{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"}]}),layoutAttributes=[{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}],dynamicLayoutAttributes=[{name:\"a_projected_pos\",components:3,type:\"Float32\"}],symbolInterfaces={text:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"text-color\",name:\"fill_color\"},{property:\"text-halo-color\",name:\"halo_color\"},{property:\"text-halo-width\",name:\"halo_width\"},{property:\"text-halo-blur\",name:\"halo_blur\"},{property:\"text-opacity\",name:\"opacity\"}]},icon:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"icon-color\",name:\"fill_color\"},{property:\"icon-halo-color\",name:\"halo_color\"},{property:\"icon-halo-width\",name:\"halo_width\"},{property:\"icon-halo-blur\",name:\"halo_blur\"},{property:\"icon-opacity\",name:\"opacity\"}]},collisionBox:{layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"},{name:\"a_data\",components:2,type:\"Uint8\"}],indexArrayType:LineIndexArray}},SymbolBuffers=function(e,t,o,r){this.programInterface=e;var a=createVertexArrayType(e.layoutAttributes),i=e.indexArrayType;if(this.layoutVertexArray=new a(r&&r.layoutVertexArray),this.indexArray=new i(r&&r.indexArray),this.programConfigurations=new ProgramConfigurationSet(e,t,o,r&&r.programConfigurations),this.segments=new SegmentVector(r&&r.segments),e.dynamicLayoutAttributes){var n=createVertexArrayType(e.dynamicLayoutAttributes);this.dynamicLayoutVertexArray=new n(r&&r.dynamicLayoutVertexArray)}};SymbolBuffers.prototype.serialize=function(e){return{layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),dynamicLayoutVertexArray:this.dynamicLayoutVertexArray&&this.dynamicLayoutVertexArray.serialize(e)}},SymbolBuffers.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e),this.programInterface.dynamicLayoutAttributes&&(this.dynamicLayoutVertexBuffer=new VertexBuffer(e,this.dynamicLayoutVertexArray,!0))},SymbolBuffers.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer&&this.dynamicLayoutVertexBuffer.destroy())};var SymbolBucket=function(e){if(this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.sdfIcons=e.sdfIcons,this.iconsNeedLinear=e.iconsNeedLinear,this.pixelRatio=e.pixelRatio,e.text)this.text=new SymbolBuffers(symbolInterfaces.text,e.layers,e.zoom,e.text),this.icon=new SymbolBuffers(symbolInterfaces.icon,e.layers,e.zoom,e.icon),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,e.layers,e.zoom,e.collisionBox),this.textSizeData=e.textSizeData,this.iconSizeData=e.iconSizeData,this.placedGlyphArray=new PlacedSymbolArray(e.placedGlyphArray),this.placedIconArray=new PlacedSymbolArray(e.placedIconArray),this.glyphOffsetArray=new GlyphOffsetArray(e.glyphOffsetArray),this.lineVertexArray=new LineVertexArray(e.lineVertexArray);else{var t=this.layers[0];this.textSizeData=getSizeData(this.zoom,t,\"text-size\"),this.iconSizeData=getSizeData(this.zoom,t,\"icon-size\")}};SymbolBucket.prototype.populate=function(e,t){var o=this,r=this.layers[0],a=r.layout,i=a[\"text-font\"],n=(!r.isLayoutValueFeatureConstant(\"text-field\")||a[\"text-field\"])&&i,s=!r.isLayoutValueFeatureConstant(\"icon-image\")||a[\"icon-image\"];if(this.features=[],n||s){for(var l=t.iconDependencies,y=t.glyphDependencies,c=y[i]=y[i]||{},u={zoom:this.zoom},p=0,x=e;p<x.length;p+=1){var m=x[p],h=m.feature,d=m.index,f=m.sourceLayerIndex;if(r.filter(h)){var g=void 0;n&&(g=r.getLayoutValue(\"text-field\",u,h.properties),r.isLayoutValueFeatureConstant(\"text-field\")&&(g=resolveTokens(h.properties,g)),g=transformText(g,r,u,h.properties));var b=void 0;if(s&&(b=r.getLayoutValue(\"icon-image\",u,h.properties),r.isLayoutValueFeatureConstant(\"icon-image\")&&(b=resolveTokens(h.properties,b))),(g||b)&&(o.features.push({text:g,icon:b,index:d,sourceLayerIndex:f,geometry:loadGeometry(h),properties:h.properties,type:vectorTileFeatureTypes[h.type]}),b&&(l[b]=!0),g))for(var A=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],v=scriptDetection.allowsVerticalWritingMode(g),S=0;S<g.length;S++)if(c[g.charCodeAt(S)]=!0,A&&v){var I=verticalizePunctuation.lookup[g.charAt(S)];I&&(c[I.charCodeAt(0)]=!0)}}}\"line\"===a[\"symbol-placement\"]&&(this.features=mergeLines(this.features))}},SymbolBucket.prototype.isEmpty=function(){return 0===this.icon.layoutVertexArray.length&&0===this.text.layoutVertexArray.length&&0===this.collisionBox.layoutVertexArray.length},SymbolBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),sdfIcons:this.sdfIcons,iconsNeedLinear:this.iconsNeedLinear,textSizeData:this.textSizeData,iconSizeData:this.iconSizeData,placedGlyphArray:this.placedGlyphArray.serialize(e),placedIconArray:this.placedIconArray.serialize(e),glyphOffsetArray:this.glyphOffsetArray.serialize(e),lineVertexArray:this.lineVertexArray.serialize(e),text:this.text.serialize(e),icon:this.icon.serialize(e),collisionBox:this.collisionBox.serialize(e)}},SymbolBucket.prototype.upload=function(e){this.text.upload(e),this.icon.upload(e),this.collisionBox.upload(e)},SymbolBucket.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.collisionBox.destroy()},SymbolBucket.prototype.prepare=function(e,t,o,r){var a=this;this.symbolInstances=[];var i=512*this.overscaling;this.tilePixelRatio=EXTENT/i,this.compareText={},this.iconsNeedLinear=!1;for(var n=this.layers[0].layout,s=24*n[\"text-line-height\"],l=n[\"text-font\"].join(\",\"),y=\"map\"===n[\"text-rotation-alignment\"]&&\"line\"===n[\"symbol-placement\"],c=e[l]||{},u=t[l]||{},p=0,x=a.features;p<x.length;p+=1){var m=x[p],h={},d=m.text;if(d){var f=a.layers[0].getLayoutValue(\"text-offset\",{zoom:a.zoom},m.properties).map(function(e){return 24*e}),g=24*a.layers[0].getLayoutValue(\"text-letter-spacing\",{zoom:a.zoom},m.properties),b=scriptDetection.allowsLetterSpacing(d)?g:0,A=a.layers[0].getLayoutValue(\"text-anchor\",{zoom:a.zoom},m.properties),v=a.layers[0].getLayoutValue(\"text-justify\",{zoom:a.zoom},m.properties),S=\"line\"!==n[\"symbol-placement\"]?24*a.layers[0].getLayoutValue(\"text-max-width\",{zoom:a.zoom},m.properties):0,I=function(e,t){return shapeText(e,c,S,s,A,v,b,f,24,t)};h[WritingMode.horizontal]=I(d,WritingMode.horizontal),scriptDetection.allowsVerticalWritingMode(d)&&y&&(h[WritingMode.vertical]=I(d,WritingMode.vertical))}var B=void 0;if(m.icon){var z=o[m.icon];z&&(B=shapeIcon(r[m.icon],a.layers[0].getLayoutValue(\"icon-offset\",{zoom:a.zoom},m.properties),a.layers[0].getLayoutValue(\"icon-anchor\",{zoom:a.zoom},m.properties)),void 0===a.sdfIcons?a.sdfIcons=z.sdf:a.sdfIcons!==z.sdf&&util.warnOnce(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),z.pixelRatio!==a.pixelRatio?a.iconsNeedLinear=!0:0===n[\"icon-rotate\"]&&a.layers[0].isLayoutValueFeatureConstant(\"icon-rotate\")||(a.iconsNeedLinear=!0))}(h[WritingMode.horizontal]||B)&&a.addFeature(m,h,B,u)}},SymbolBucket.prototype.addFeature=function(e,t,o,r){var a=this,i=this.layers[0].getLayoutValue(\"text-size\",{zoom:this.zoom+1},e.properties),n=this.layers[0].getLayoutValue(\"icon-size\",{zoom:this.zoom+1},e.properties),s=this.layers[0].getLayoutValue(\"text-offset\",{zoom:this.zoom},e.properties),l=this.layers[0].getLayoutValue(\"icon-offset\",{zoom:this.zoom},e.properties),y=this.layers[0].getLayoutValue(\"text-size\",{zoom:18},e.properties);void 0===y&&(y=i);var c=this.layers[0].layout,u=i/24,p=this.tilePixelRatio*u,x=this.tilePixelRatio*y/24,m=this.tilePixelRatio*n,h=this.tilePixelRatio*c[\"symbol-spacing\"],d=c[\"symbol-avoid-edges\"],f=c[\"text-padding\"]*this.tilePixelRatio,g=c[\"icon-padding\"]*this.tilePixelRatio,b=c[\"text-max-angle\"]/180*Math.PI,A=\"map\"===c[\"text-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],v=\"map\"===c[\"icon-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],S=c[\"text-allow-overlap\"]||c[\"icon-allow-overlap\"]||c[\"text-ignore-placement\"]||c[\"icon-ignore-placement\"],I=c[\"symbol-placement\"],B=h/2,z=function(i,n){var y=!(n.x<0||n.x>EXTENT||n.y<0||n.y>EXTENT);if(!d||y){var c=y||S;a.addSymbolInstance(n,i,t,o,a.layers[0],c,a.collisionBoxArray,e.index,e.sourceLayerIndex,a.index,p,f,A,s,m,g,v,l,{zoom:a.zoom},e.properties,r)}};if(\"line\"===I)for(var V=0,L=clipLine(e.geometry,0,0,EXTENT,EXTENT);V<L.length;V+=1)for(var T=L[V],w=getAnchors(T,h,b,t[WritingMode.vertical]||t[WritingMode.horizontal],o,24,x,a.overscaling,EXTENT),M=0,C=w;M<C.length;M+=1){var _=C[M],k=t[WritingMode.horizontal];k&&a.anchorIsTooClose(k.text,B,_)||z(T,_)}else if(\"Polygon\"===e.type)for(var P=0,F=classifyRings(e.geometry,0);P<F.length;P+=1){var E=F[P],D=findPoleOfInaccessibility(E,16);z(E[0],new Anchor(D.x,D.y,0))}else if(\"LineString\"===e.type)for(var q=0,O=e.geometry;q<O.length;q+=1){var N=O[q];z(N,new Anchor(N[0].x,N[0].y,0))}else if(\"Point\"===e.type)for(var W=0,R=e.geometry;W<R.length;W+=1)for(var G=R[W],$=0,U=G;$<U.length;$+=1){var X=U[$];z([X],new Anchor(X.x,X.y,0))}},SymbolBucket.prototype.anchorIsTooClose=function(e,t,o){var r=this.compareText;if(e in r){for(var a=r[e],i=a.length-1;i>=0;i--)if(o.dist(a[i])<t)return!0}else r[e]=[];return r[e].push(o),!1},SymbolBucket.prototype.place=function(e,t){var o=this;this.text=new SymbolBuffers(symbolInterfaces.text,this.layers,this.zoom),this.icon=new SymbolBuffers(symbolInterfaces.icon,this.layers,this.zoom),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,this.layers,this.zoom),this.placedGlyphArray=new PlacedSymbolArray,this.placedIconArray=new PlacedSymbolArray,this.glyphOffsetArray=new GlyphOffsetArray,this.lineVertexArray=new LineVertexArray;var r=this.layers[0],a=r.layout,i=e.maxScale,n=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],s=\"map\"===a[\"icon-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"];if(a[\"text-allow-overlap\"]||a[\"icon-allow-overlap\"]||a[\"text-ignore-placement\"]||a[\"icon-ignore-placement\"]){var l=e.angle,y=Math.sin(l),c=Math.cos(l);this.symbolInstances.sort(function(e,t){return(y*e.anchor.x+c*e.anchor.y|0)-(y*t.anchor.x+c*t.anchor.y|0)||t.featureIndex-e.featureIndex})}for(var u=0,p=o.symbolInstances;u<p.length;u+=1){var x=p[u],m={boxStartIndex:x.textBoxStartIndex,boxEndIndex:x.textBoxEndIndex},h={boxStartIndex:x.iconBoxStartIndex,boxEndIndex:x.iconBoxEndIndex},d=!(x.textBoxStartIndex===x.textBoxEndIndex),f=!(x.iconBoxStartIndex===x.iconBoxEndIndex),g=a[\"text-optional\"]||!d,b=a[\"icon-optional\"]||!f,A=d?e.placeCollisionFeature(m,a[\"text-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale,v=f?e.placeCollisionFeature(h,a[\"icon-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale;if(g||b?!b&&A?A=Math.max(v,A):!g&&v&&(v=Math.max(v,A)):v=A=Math.max(v,A),d||f){for(var S=x.line,I=o.lineVertexArray.length,B=0;B<S.length;B++)o.lineVertexArray.emplaceBack(S[B].x,S[B].y);var z=o.lineVertexArray.length-I;if(d&&(e.insertCollisionFeature(m,A,a[\"text-ignore-placement\"]),A<=i)){var V=getSizeVertexData(r,o.zoom,o.textSizeData.coveringZoomRange,\"text-size\",x.featureProperties);o.addSymbols(o.text,x.glyphQuads,A,V,a[\"text-keep-upright\"],x.textOffset,n,e.angle,x.featureProperties,x.writingModes,x.anchor,I,z,o.placedGlyphArray)}if(f&&(e.insertCollisionFeature(h,v,a[\"icon-ignore-placement\"]),v<=i)){var L=getSizeVertexData(r,o.zoom,o.iconSizeData.coveringZoomRange,\"icon-size\",x.featureProperties);o.addSymbols(o.icon,x.iconQuads,v,L,a[\"icon-keep-upright\"],x.iconOffset,s,e.angle,x.featureProperties,0,x.anchor,I,z,o.placedIconArray)}}}t&&this.addToDebugBuffers(e)},SymbolBucket.prototype.addSymbols=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x){for(var m=this,h=e.indexArray,d=e.layoutVertexArray,f=e.dynamicLayoutVertexArray,g=this.zoom,b=Math.max(Math.log(o)/Math.LN2+g,0),A=this.glyphOffsetArray.length,v=(c.angle+s+2*Math.PI)%(2*Math.PI),S=v>1*Math.PI/4&&v<=3*Math.PI/4||v>5*Math.PI/4&&v<=7*Math.PI/4,I=Boolean(y&WritingMode.vertical)&&S,B=0,z=t;B<z.length;B+=1){var V=z[B];if(!n||!a||V.writingMode===WritingMode.vertical===I){var L=V.tl,T=V.tr,w=V.bl,M=V.br,C=V.tex,_=e.segments.prepareSegment(4,e.layoutVertexArray,e.indexArray),k=_.vertexLength,P=V.glyphOffset[1];addVertex(d,c.x,c.y,L.x,P+L.y,C.x,C.y,r),addVertex(d,c.x,c.y,T.x,P+T.y,C.x+C.w,C.y,r),addVertex(d,c.x,c.y,w.x,P+w.y,C.x,C.y+C.h,r),addVertex(d,c.x,c.y,M.x,P+M.y,C.x+C.w,C.y+C.h,r),addDynamicAttributes(f,c,0,b),h.emplaceBack(k,k+1,k+2),h.emplaceBack(k+1,k+2,k+3),_.vertexLength+=4,_.primitiveLength+=2,m.glyphOffsetArray.emplaceBack(V.glyphOffset[0])}}x.emplaceBack(c.x,c.y,A,this.glyphOffsetArray.length-A,u,p,c.segment,r?r[0]:0,r?r[1]:0,i[0],i[1],b,I),e.programConfigurations.populatePaintArrays(e.layoutVertexArray.length,l)},SymbolBucket.prototype.addToDebugBuffers=function(e){for(var t=this,o=this.collisionBox,r=o.layoutVertexArray,a=o.indexArray,i=-e.angle,n=e.yStretch,s=0,l=t.symbolInstances;s<l.length;s+=1){var y=l[s];y.textCollisionFeature={boxStartIndex:y.textBoxStartIndex,boxEndIndex:y.textBoxEndIndex},y.iconCollisionFeature={boxStartIndex:y.iconBoxStartIndex,boxEndIndex:y.iconBoxEndIndex};for(var c=0;c<2;c++){var u=y[0===c?\"textCollisionFeature\":\"iconCollisionFeature\"];if(u)for(var p=u.boxStartIndex;p<u.boxEndIndex;p++){var x=t.collisionBoxArray.get(p);if(!(1===e.perspectiveRatio&&x.maxScale<1)){var m=x.anchorPoint,h=new Point(x.x1,x.y1*n)._rotate(i),d=new Point(x.x2,x.y1*n)._rotate(i),f=new Point(x.x1,x.y2*n)._rotate(i),g=new Point(x.x2,x.y2*n)._rotate(i),b=Math.max(0,Math.min(25,t.zoom+Math.log(x.maxScale)/Math.LN2)),A=Math.max(0,Math.min(25,t.zoom+Math.log(x.placementScale)/Math.LN2)),v=o.segments.prepareSegment(4,o.layoutVertexArray,o.indexArray),S=v.vertexLength;addCollisionBoxVertex(r,m,y.anchor,h,b,A),addCollisionBoxVertex(r,m,y.anchor,d,b,A),addCollisionBoxVertex(r,m,y.anchor,g,b,A),addCollisionBoxVertex(r,m,y.anchor,f,b,A),a.emplaceBack(S,S+1),a.emplaceBack(S+1,S+2),a.emplaceBack(S+2,S+3),a.emplaceBack(S+3,S),v.vertexLength+=4,v.primitiveLength+=4}}}}},SymbolBucket.prototype.addSymbolInstance=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x,m,h,d,f,g,b,A){var v,S,I=[],B=[];for(var z in o){var V=parseInt(z,10);o[V]&&(B=B.concat(i?getGlyphQuads(e,o[V],a,p,g,b,A):[]),v=new CollisionFeature(n,t,e,s,l,y,o[V],c,u,p,!1))}var L=v?v.boxStartIndex:this.collisionBoxArray.length,T=v?v.boxEndIndex:this.collisionBoxArray.length;r&&(I=i?getIconQuads(e,r,a,d,o[WritingMode.horizontal],g,b):[],S=new CollisionFeature(n,t,e,s,l,y,r,m,h,d,!0));var w=S?S.boxStartIndex:this.collisionBoxArray.length,M=S?S.boxEndIndex:this.collisionBoxArray.length;T>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),M>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");var C=(o[WritingMode.vertical]?WritingMode.vertical:0)|(o[WritingMode.horizontal]?WritingMode.horizontal:0);this.symbolInstances.push({textBoxStartIndex:L,textBoxEndIndex:T,iconBoxStartIndex:w,iconBoxEndIndex:M,glyphQuads:B,iconQuads:I,textOffset:x,iconOffset:f,anchor:e,line:t,featureIndex:s,featureProperties:b,writingModes:C})},SymbolBucket.programInterfaces=symbolInterfaces,SymbolBucket.MAX_INSTANCES=65535,SymbolBucket.addDynamicAttributes=addDynamicAttributes,module.exports=SymbolBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../shaders/encode_attribute\":85,\"../../symbol/anchor\":167,\"../../symbol/clip_line\":169,\"../../symbol/collision_feature\":171,\"../../symbol/get_anchors\":173,\"../../symbol/mergelines\":174,\"../../symbol/quads\":176,\"../../symbol/shaping\":177,\"../../symbol/transform_text\":179,\"../../util/classify_rings\":205,\"../../util/find_pole_of_inaccessibility\":211,\"../../util/script_detection\":218,\"../../util/struct_array\":220,\"../../util/token\":222,\"../../util/util\":223,\"../../util/verticalize_punctuation\":225,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],48:[function(_dereq_,module,exports){\n\"use strict\";module.exports=8192;\n},{}],49:[function(_dereq_,module,exports){\n\"use strict\";function topDownFeatureComparator(e,r){return r-e}var Point=_dereq_(\"@mapbox/point-geometry\"),loadGeometry=_dereq_(\"./load_geometry\"),EXTENT=_dereq_(\"./extent\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),createStructArrayType=_dereq_(\"../util/struct_array\"),Grid=_dereq_(\"grid-index\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),arraysIntersect=_dereq_(\"../util/util\").arraysIntersect,FeatureIndexArray=createStructArrayType({members:[{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]}),FeatureIndex=function(e,r,t,a){this.coord=e,this.overscaling=r,this.x=e.x,this.y=e.y,this.z=e.z-Math.log(r)/Math.LN2,this.grid=t||new Grid(EXTENT,16,0),this.featureIndexArray=a||new FeatureIndexArray};FeatureIndex.deserialize=function(e,r,t){var a=new FeatureIndex(e.coord,e.overscaling,new Grid(e.grid),new FeatureIndexArray(e.featureIndexArray));return a.rawTileData=r,a.bucketLayerIDs=e.bucketLayerIDs,a.setCollisionTile(t),a},FeatureIndex.prototype.insert=function(e,r,t,a,i){var n=this,o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(t,a,i);for(var s=0;s<r.length;s++){for(var u=r[s],y=[1/0,1/0,-1/0,-1/0],l=0;l<u.length;l++){var d=u[l];y[0]=Math.min(y[0],d.x),y[1]=Math.min(y[1],d.y),y[2]=Math.max(y[2],d.x),y[3]=Math.max(y[3],d.y)}n.grid.insert(o,y[0],y[1],y[2],y[3])}},FeatureIndex.prototype.setCollisionTile=function(e){this.collisionTile=e},FeatureIndex.prototype.serialize=function(e){var r=this.grid.toArrayBuffer();return e&&e.push(r),{coord:this.coord,overscaling:this.overscaling,grid:r,featureIndexArray:this.featureIndexArray.serialize(e),bucketLayerIDs:this.bucketLayerIDs}},FeatureIndex.prototype.query=function(e,r){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers,this.sourceLayerCoder=new DictionaryCoder(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]));for(var t={},a=e.params||{},i=EXTENT/e.tileSize/e.scale,n=featureFilter(a.filter),o=e.queryGeometry,s=e.additionalRadius*i,u=1/0,y=1/0,l=-1/0,d=-1/0,c=0;c<o.length;c++)for(var h=o[c],f=0;f<h.length;f++){var x=h[f];u=Math.min(u,x.x),y=Math.min(y,x.y),l=Math.max(l,x.x),d=Math.max(d,x.y)}var v=this.grid.query(u-s,y-s,l+s,d+s);v.sort(topDownFeatureComparator),this.filterMatching(t,v,this.featureIndexArray,o,n,a.layers,r,e.bearing,i);var I=this.collisionTile.queryRenderedSymbols(o,e.scale);return I.sort(),this.filterMatching(t,I,this.collisionTile.collisionBoxArray,o,n,a.layers,r,e.bearing,i),t},FeatureIndex.prototype.filterMatching=function(e,r,t,a,i,n,o,s,u){for(var y,l=this,d=0;d<r.length;d++){var c=r[d];if(c!==y){y=c;var h=t.get(c),f=l.bucketLayerIDs[h.bucketIndex];if(!n||arraysIntersect(n,f)){var x=l.sourceLayerCoder.decode(h.sourceLayerIndex),v=l.vtLayers[x],I=v.feature(h.featureIndex);if(i(I))for(var p=null,g=0;g<f.length;g++){var m=f[g];if(!(n&&n.indexOf(m)<0)){var F=o[m];if(F&&(\"symbol\"===F.type||(p||(p=loadGeometry(I)),F.queryIntersectsFeature(a,I,p,l.z,s,u)))){var b=new GeoJSONFeature(I,l.z,l.x,l.y);b.layer=F.serialize();var L=e[m];void 0===L&&(L=e[m]=[]),L.push({featureIndex:c,feature:b})}}}}}}},FeatureIndex.prototype.hasLayer=function(e){for(var r=this,t=0,a=r.bucketLayerIDs;t<a.length;t+=1)for(var i=a[t],n=0,o=i;n<o.length;n+=1){var s=o[n];if(e===s)return!0}return!1},module.exports=FeatureIndex;\n},{\"../style-spec/feature_filter\":110,\"../util/dictionary_coder\":207,\"../util/struct_array\":220,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"./extent\":48,\"./load_geometry\":51,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6,\"grid-index\":22,\"pbf\":29}],50:[function(_dereq_,module,exports){\n\"use strict\";function createIndexArrayType(e){return createStructArrayType({members:[{type:\"Uint16\",name:\"vertices\",components:e}]})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports={LineIndexArray:createIndexArrayType(2),TriangleIndexArray:createIndexArrayType(3)};\n},{\"../util/struct_array\":220}],51:[function(_dereq_,module,exports){\n\"use strict\";function createBounds(e){return{min:-1*Math.pow(2,e-1),max:Math.pow(2,e-1)-1}}var util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"./extent\"),bounds=createBounds(16);module.exports=function(e){for(var t=EXTENT/e.extent,r=e.loadGeometry(),n=0;n<r.length;n++)for(var u=r[n],o=0;o<u.length;o++){var a=u[o];a.x=Math.round(a.x*t),a.y=Math.round(a.y*t),(a.x<bounds.min||a.x>bounds.max||a.y<bounds.min||a.y>bounds.max)&&util.warnOnce(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}return r};\n},{\"../util/util\":223,\"./extent\":48}],52:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),PosArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2}]});module.exports=PosArray;\n},{\"../util/struct_array\":220}],53:[function(_dereq_,module,exports){\n\"use strict\";function packColor(r){return[packUint8ToFloat(255*r[0],255*r[1]),packUint8ToFloat(255*r[2],255*r[3])]}var createVertexArrayType=_dereq_(\"./vertex_array_type\"),interpolationFactor=_dereq_(\"../style-spec/function\").interpolationFactor,packUint8ToFloat=_dereq_(\"../shaders/encode_attribute\").packUint8ToFloat,VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),ConstantBinder=function(r,t,o,e){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e};ConstantBinder.prototype.defines=function(){return[\"#define HAS_UNIFORM_u_\"+this.name]},ConstantBinder.prototype.populatePaintArray=function(){},ConstantBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=o.getPaintValue(this.property,{zoom:this.useIntegerZoom?Math.floor(i):i});\"color\"===this.type?r.uniform4fv(t.uniforms[\"u_\"+this.name],n):r.uniform1f(t.uniforms[\"u_\"+this.name],n)};var SourceFunctionBinder=function(r,t,o){this.name=r,this.type=t,this.property=o};SourceFunctionBinder.prototype.defines=function(){return[]},SourceFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,void 0,n);if(\"color\"===this.type)for(var p=packColor(s),u=e;u<i;u++){var f=t.get(u);f[\"a_\"+a.name+\"0\"]=p[0],f[\"a_\"+a.name+\"1\"]=p[1]}else{for(var c=e;c<i;c++){t.get(c)[\"a_\"+a.name]=s}var m=o[this.property];m.max=Math.max(m.max,s)}},SourceFunctionBinder.prototype.setUniforms=function(r,t){r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],0)};var CompositeFunctionBinder=function(r,t,o,e,i){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e,this.zoom=i};CompositeFunctionBinder.prototype.defines=function(){return[]},CompositeFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,{zoom:this.zoom},n),p=r.getPaintValue(this.property,{zoom:this.zoom+1},n);if(\"color\"===this.type)for(var u=packColor(s),f=packColor(p),c=e;c<i;c++){var m=t.get(c);m[\"a_\"+a.name+\"0\"]=u[0],m[\"a_\"+a.name+\"1\"]=u[1],m[\"a_\"+a.name+\"2\"]=f[0],m[\"a_\"+a.name+\"3\"]=f[1]}else{for(var y=e;y<i;y++){var g=t.get(y);g[\"a_\"+a.name+\"0\"]=s,g[\"a_\"+a.name+\"1\"]=p}var h=o[this.property];h.max=Math.max(h.max,s,p)}},CompositeFunctionBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=interpolationFactor(this.useIntegerZoom?Math.floor(i):i,1,this.zoom,this.zoom+1);r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],n)};var ProgramConfiguration=function(){this.binders={},this.cacheKey=\"\"};ProgramConfiguration.createDynamic=function(r,t,o){for(var e=new ProgramConfiguration,i=[],n=0,a=r.paintAttributes||[];n<a.length;n+=1){var s=a[n],p=s.property,u=s.useIntegerZoom||!1,f=s.name||p.replace(t.type+\"-\",\"\").replace(/-/g,\"_\"),c=t._paintSpecifications[p].type;t.isPaintValueFeatureConstant(p)?(e.binders[f]=new ConstantBinder(f,c,p,u),e.cacheKey+=\"/u_\"+f):t.isPaintValueZoomConstant(p)?(e.binders[f]=new SourceFunctionBinder(f,c,p),e.cacheKey+=\"/a_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?2:1})):(e.binders[f]=new CompositeFunctionBinder(f,c,p,u,o),e.cacheKey+=\"/z_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?4:2}))}return e.PaintVertexArray=createVertexArrayType(i),e.interface=r,e.layer=t,e},ProgramConfiguration.createBasicFill=function(){var r=new ProgramConfiguration;return r.binders.color=new ConstantBinder(\"color\",\"color\",\"fill-color\",!1),r.cacheKey+=\"/u_color\",r.binders.opacity=new ConstantBinder(\"opacity\",\"number\",\"fill-opacity\",!1),r.cacheKey+=\"/u_opacity\",r},ProgramConfiguration.prototype.createPaintPropertyStatistics=function(){var r=this,t={};for(var o in r.binders)t[r.binders[o].property]={max:-1/0};return t},ProgramConfiguration.prototype.populatePaintArray=function(r,t){var o=this,e=this.paintVertexArray;if(0!==e.bytesPerElement){var i=e.length;e.resize(r);for(var n in o.binders)o.binders[n].populatePaintArray(o.layer,e,o.paintPropertyStatistics,i,r,t)}},ProgramConfiguration.prototype.defines=function(){var r=this,t=[];for(var o in r.binders)t.push.apply(t,r.binders[o].defines());return t},ProgramConfiguration.prototype.setUniforms=function(r,t,o,e){var i=this;for(var n in i.binders)i.binders[n].setUniforms(r,t,o,e)},ProgramConfiguration.prototype.serialize=function(r){return 0===this.paintVertexArray.length?null:{array:this.paintVertexArray.serialize(r),type:this.paintVertexArray.constructor.serialize(),statistics:this.paintPropertyStatistics}},ProgramConfiguration.deserialize=function(r,t,o,e){var i=ProgramConfiguration.createDynamic(r,t,o);return e&&(i.PaintVertexArray=createVertexArrayType(e.type.members),i.paintVertexArray=new i.PaintVertexArray(e.array),i.paintPropertyStatistics=e.statistics),i},ProgramConfiguration.prototype.upload=function(r){this.paintVertexArray&&(this.paintVertexBuffer=new VertexBuffer(r,this.paintVertexArray))},ProgramConfiguration.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()};var ProgramConfigurationSet=function(r,t,o,e){var i=this;if(this.programConfigurations={},e)for(var n=0,a=t;n<a.length;n+=1){var s=a[n];i.programConfigurations[s.id]=ProgramConfiguration.deserialize(r,s,o,e[s.id])}else for(var p=0,u=t;p<u.length;p+=1){var f=u[p],c=ProgramConfiguration.createDynamic(r,f,o);c.paintVertexArray=new c.PaintVertexArray,c.paintPropertyStatistics=c.createPaintPropertyStatistics(),i.programConfigurations[f.id]=c}};ProgramConfigurationSet.prototype.populatePaintArrays=function(r,t){var o=this;for(var e in o.programConfigurations)o.programConfigurations[e].populatePaintArray(r,t)},ProgramConfigurationSet.prototype.serialize=function(r){var t=this,o={};for(var e in t.programConfigurations){var i=t.programConfigurations[e].serialize(r);i&&(o[e]=i)}return o},ProgramConfigurationSet.prototype.get=function(r){return this.programConfigurations[r]},ProgramConfigurationSet.prototype.upload=function(r){var t=this;for(var o in t.programConfigurations)t.programConfigurations[o].upload(r)},ProgramConfigurationSet.prototype.destroy=function(){var r=this;for(var t in r.programConfigurations)r.programConfigurations[t].destroy()},module.exports={ProgramConfiguration:ProgramConfiguration,ProgramConfigurationSet:ProgramConfigurationSet};\n},{\"../gl/vertex_buffer\":62,\"../shaders/encode_attribute\":85,\"../style-spec/function\":112,\"./vertex_array_type\":56}],54:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),RasterBoundsArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]});module.exports=RasterBoundsArray;\n},{\"../util/struct_array\":220}],55:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/util\"),warnOnce=ref.warnOnce,MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,SegmentVector=function(e){void 0===e&&(e=[]),this.segments=e};SegmentVector.prototype.prepareSegment=function(e,t,r){var n=this.segments[this.segments.length-1];return e>MAX_VERTEX_ARRAY_LENGTH&&warnOnce(\"Max vertices per segment is \"+MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+e),(!n||n.vertexLength+e>module.exports.MAX_VERTEX_ARRAY_LENGTH)&&(n={vertexOffset:t.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},this.segments.push(n)),n},SegmentVector.prototype.get=function(){return this.segments},SegmentVector.prototype.destroy=function(){for(var e=this,t=0,r=e.segments;t<r.length;t+=1){var n=r[t];for(var s in n.vaos)n.vaos[s].destroy()}},module.exports={SegmentVector:SegmentVector,MAX_VERTEX_ARRAY_LENGTH:MAX_VERTEX_ARRAY_LENGTH};\n},{\"../util/util\":223}],56:[function(_dereq_,module,exports){\n\"use strict\";function createVertexArrayType(r){return createStructArrayType({members:r,alignment:4})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports=createVertexArrayType;\n},{\"../util/struct_array\":220}],57:[function(_dereq_,module,exports){\n\"use strict\";var Coordinate=function(o,t,n){this.column=o,this.row=t,this.zoom=n};Coordinate.prototype.clone=function(){return new Coordinate(this.column,this.row,this.zoom)},Coordinate.prototype.zoomTo=function(o){return this.clone()._zoomTo(o)},Coordinate.prototype.sub=function(o){return this.clone()._sub(o)},Coordinate.prototype._zoomTo=function(o){var t=Math.pow(2,o-this.zoom);return this.column*=t,this.row*=t,this.zoom=o,this},Coordinate.prototype._sub=function(o){return o=o.zoomTo(this.zoom),this.column-=o.column,this.row-=o.row,this},module.exports=Coordinate;\n},{}],58:[function(_dereq_,module,exports){\n\"use strict\";var wrap=_dereq_(\"../util/util\").wrap,LngLat=function(t,n){if(isNaN(t)||isNaN(n))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+n+\")\");if(this.lng=+t,this.lat=+n,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};LngLat.prototype.wrap=function(){return new LngLat(wrap(this.lng,-180,180),this.lat)},LngLat.prototype.toArray=function(){return[this.lng,this.lat]},LngLat.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},LngLat.prototype.toBounds=function(t){var n=360*t/40075017,r=n/Math.cos(Math.PI/180*this.lat);return new(_dereq_(\"./lng_lat_bounds\"))(new LngLat(this.lng-r,this.lat-n),new LngLat(this.lng+r,this.lat+n))},LngLat.convert=function(t){if(t instanceof LngLat)return t;if(Array.isArray(t)&&2===t.length)return new LngLat(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new LngLat(Number(t.lng),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")},module.exports=LngLat;\n},{\"../util/util\":223,\"./lng_lat_bounds\":59}],59:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),LngLatBounds=function(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};LngLatBounds.prototype.setNorthEast=function(t){return this._ne=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.setSouthWest=function(t){return this._sw=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.extend=function(t){var n,e,s=this._sw,o=this._ne;if(t instanceof LngLat)n=t,e=t;else{if(!(t instanceof LngLatBounds))return Array.isArray(t)?t.every(Array.isArray)?this.extend(LngLatBounds.convert(t)):this.extend(LngLat.convert(t)):this;if(n=t._sw,e=t._ne,!n||!e)return this}return s||o?(s.lng=Math.min(n.lng,s.lng),s.lat=Math.min(n.lat,s.lat),o.lng=Math.max(e.lng,o.lng),o.lat=Math.max(e.lat,o.lat)):(this._sw=new LngLat(n.lng,n.lat),this._ne=new LngLat(e.lng,e.lat)),this},LngLatBounds.prototype.getCenter=function(){return new LngLat((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},LngLatBounds.prototype.getSouthWest=function(){return this._sw},LngLatBounds.prototype.getNorthEast=function(){return this._ne},LngLatBounds.prototype.getNorthWest=function(){return new LngLat(this.getWest(),this.getNorth())},LngLatBounds.prototype.getSouthEast=function(){return new LngLat(this.getEast(),this.getSouth())},LngLatBounds.prototype.getWest=function(){return this._sw.lng},LngLatBounds.prototype.getSouth=function(){return this._sw.lat},LngLatBounds.prototype.getEast=function(){return this._ne.lng},LngLatBounds.prototype.getNorth=function(){return this._ne.lat},LngLatBounds.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},LngLatBounds.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},LngLatBounds.convert=function(t){return!t||t instanceof LngLatBounds?t:new LngLatBounds(t)},module.exports=LngLatBounds;\n},{\"./lng_lat\":58}],60:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Coordinate=_dereq_(\"./coordinate\"),util=_dereq_(\"../util/util\"),interp=_dereq_(\"../style-spec/util/interpolate\"),TileCoord=_dereq_(\"../source/tile_coord\"),EXTENT=_dereq_(\"../data/extent\"),glmatrix=_dereq_(\"@mapbox/gl-matrix\"),vec4=glmatrix.vec4,mat4=glmatrix.mat4,mat2=glmatrix.mat2,Transform=function(t,o,i){this.tileSize=512,this._renderWorldCopies=void 0===i||i,this._minZoom=t||0,this._maxZoom=o||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0},prototypeAccessors={minZoom:{},maxZoom:{},renderWorldCopies:{},worldSize:{},centerPoint:{},size:{},bearing:{},pitch:{},fov:{},zoom:{},center:{},unmodified:{},x:{},y:{},point:{}};prototypeAccessors.minZoom.get=function(){return this._minZoom},prototypeAccessors.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},prototypeAccessors.maxZoom.get=function(){return this._maxZoom},prototypeAccessors.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},prototypeAccessors.renderWorldCopies.get=function(){return this._renderWorldCopies},prototypeAccessors.worldSize.get=function(){return this.tileSize*this.scale},prototypeAccessors.centerPoint.get=function(){return this.size._div(2)},prototypeAccessors.size.get=function(){return new Point(this.width,this.height)},prototypeAccessors.bearing.get=function(){return-this.angle/Math.PI*180},prototypeAccessors.bearing.set=function(t){var o=-util.wrap(t,-180,180)*Math.PI/180;this.angle!==o&&(this._unmodified=!1,this.angle=o,this._calcMatrices(),this.rotationMatrix=mat2.create(),mat2.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},prototypeAccessors.pitch.get=function(){return this._pitch/Math.PI*180},prototypeAccessors.pitch.set=function(t){var o=util.clamp(t,0,60)/180*Math.PI;this._pitch!==o&&(this._unmodified=!1,this._pitch=o,this._calcMatrices())},prototypeAccessors.fov.get=function(){return this._fov/Math.PI*180},prototypeAccessors.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},prototypeAccessors.zoom.get=function(){return this._zoom},prototypeAccessors.zoom.set=function(t){var o=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==o&&(this._unmodified=!1,this._zoom=o,this.scale=this.zoomScale(o),this.tileZoom=Math.floor(o),this.zoomFraction=o-this.tileZoom,this._constrain(),this._calcMatrices())},prototypeAccessors.center.get=function(){return this._center},prototypeAccessors.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Transform.prototype.coveringZoomLevel=function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},Transform.prototype.getVisibleWrappedCoordinates=function(t){for(var o=this.pointCoordinate(new Point(0,0),0),i=this.pointCoordinate(new Point(this.width,0),0),e=Math.floor(o.column),r=Math.floor(i.column),n=[t],s=e;s<=r;s++)0!==s&&n.push(new TileCoord(t.z,t.x,t.y,s));return n},Transform.prototype.coveringTiles=function(t){var o=this.coveringZoomLevel(t),i=o;if(void 0!==t.minzoom&&o<t.minzoom)return[];void 0!==t.maxzoom&&o>t.maxzoom&&(o=t.maxzoom);var e=this.pointCoordinate(this.centerPoint,o),r=new Point(e.column-.5,e.row-.5),n=[this.pointCoordinate(new Point(0,0),o),this.pointCoordinate(new Point(this.width,0),o),this.pointCoordinate(new Point(this.width,this.height),o),this.pointCoordinate(new Point(0,this.height),o)];return TileCoord.cover(o,n,t.reparseOverscaled?i:o,this._renderWorldCopies).sort(function(t,o){return r.dist(t)-r.dist(o)})},Transform.prototype.resize=function(t,o){this.width=t,this.height=o,this.pixelsToGLUnits=[2/t,-2/o],this._constrain(),this._calcMatrices()},prototypeAccessors.unmodified.get=function(){return this._unmodified},Transform.prototype.zoomScale=function(t){return Math.pow(2,t)},Transform.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},Transform.prototype.project=function(t){return new Point(this.lngX(t.lng),this.latY(t.lat))},Transform.prototype.unproject=function(t){return new LngLat(this.xLng(t.x),this.yLat(t.y))},prototypeAccessors.x.get=function(){return this.lngX(this.center.lng)},prototypeAccessors.y.get=function(){return this.latY(this.center.lat)},prototypeAccessors.point.get=function(){return new Point(this.x,this.y)},Transform.prototype.lngX=function(t){return(180+t)*this.worldSize/360},Transform.prototype.latY=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*this.worldSize/360},Transform.prototype.xLng=function(t){return 360*t/this.worldSize-180},Transform.prototype.yLat=function(t){var o=180-360*t/this.worldSize;return 360/Math.PI*Math.atan(Math.exp(o*Math.PI/180))-90},Transform.prototype.setLocationAtPoint=function(t,o){var i=this.pointCoordinate(o)._sub(this.pointCoordinate(this.centerPoint));this.center=this.coordinateLocation(this.locationCoordinate(t)._sub(i)),this._renderWorldCopies&&(this.center=this.center.wrap())},Transform.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},Transform.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},Transform.prototype.locationCoordinate=function(t){return new Coordinate(this.lngX(t.lng)/this.tileSize,this.latY(t.lat)/this.tileSize,this.zoom).zoomTo(this.tileZoom)},Transform.prototype.coordinateLocation=function(t){var o=t.zoomTo(this.zoom);return new LngLat(this.xLng(o.column*this.tileSize),this.yLat(o.row*this.tileSize))},Transform.prototype.pointCoordinate=function(t,o){void 0===o&&(o=this.tileZoom);var i=[t.x,t.y,0,1],e=[t.x,t.y,1,1];vec4.transformMat4(i,i,this.pixelMatrixInverse),vec4.transformMat4(e,e,this.pixelMatrixInverse);var r=i[3],n=e[3],s=i[0]/r,a=e[0]/n,h=i[1]/r,c=e[1]/n,m=i[2]/r,p=e[2]/n,l=m===p?0:(0-m)/(p-m);return new Coordinate(interp(s,a,l)/this.tileSize,interp(h,c,l)/this.tileSize,this.zoom)._zoomTo(o)},Transform.prototype.coordinatePoint=function(t){var o=t.zoomTo(this.zoom),i=[o.column*this.tileSize,o.row*this.tileSize,0,1];return vec4.transformMat4(i,i,this.pixelMatrix),new Point(i[0]/i[3],i[1]/i[3])},Transform.prototype.calculatePosMatrix=function(t,o){var i=t.toCoordinate(o),e=this.worldSize/this.zoomScale(i.zoom),r=mat4.identity(new Float64Array(16));return mat4.translate(r,r,[i.column*e,i.row*e,0]),mat4.scale(r,r,[e/EXTENT,e/EXTENT,1]),mat4.multiply(r,this.projMatrix,r),new Float32Array(r)},Transform.prototype.cameraToTileDistance=function(t){var o=this.calculatePosMatrix(t.coord,t.sourceMaxZoom),i=[t.tileSize/2,t.tileSize/2,0,1];return vec4.transformMat4(i,i,o),i[3]},Transform.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var t,o,i,e,r=-90,n=90,s=-180,a=180,h=this.size,c=this._unmodified;if(this.latRange){var m=this.latRange;r=this.latY(m[1]),n=this.latY(m[0]),t=n-r<h.y?h.y/(n-r):0}if(this.lngRange){var p=this.lngRange;s=this.lngX(p[0]),a=this.lngX(p[1]),o=a-s<h.x?h.x/(a-s):0}var l=Math.max(o||0,t||0);if(l)return this.center=this.unproject(new Point(o?(a+s)/2:this.x,t?(n+r)/2:this.y)),this.zoom+=this.scaleZoom(l),this._unmodified=c,void(this._constraining=!1);if(this.latRange){var u=this.y,f=h.y/2;u-f<r&&(e=r+f),u+f>n&&(e=n-f)}if(this.lngRange){var d=this.x,g=h.x/2;d-g<s&&(i=s+g),d+g>a&&(i=a-g)}void 0===i&&void 0===e||(this.center=this.unproject(new Point(void 0!==i?i:this.x,void 0!==e?e:this.y))),this._unmodified=c,this._constraining=!1}},Transform.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var t=this._fov/2,o=Math.PI/2+this._pitch,i=Math.sin(t)*this.cameraToCenterDistance/Math.sin(Math.PI-o-t),e=Math.cos(Math.PI/2-this._pitch)*i+this.cameraToCenterDistance,r=1.01*e,n=new Float64Array(16);mat4.perspective(n,this._fov,this.width/this.height,1,r),mat4.scale(n,n,[1,-1,1]),mat4.translate(n,n,[0,0,-this.cameraToCenterDistance]),mat4.rotateX(n,n,this._pitch),mat4.rotateZ(n,n,this.angle),mat4.translate(n,n,[-this.x,-this.y,0]);var s=this.worldSize/(2*Math.PI*6378137*Math.abs(Math.cos(this.center.lat*(Math.PI/180))));if(mat4.scale(n,n,[1,1,s,1]),this.projMatrix=n,n=mat4.create(),mat4.scale(n,n,[this.width/2,-this.height/2,1]),mat4.translate(n,n,[1,-1,0]),this.pixelMatrix=mat4.multiply(new Float64Array(16),n,this.projMatrix),!(n=mat4.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=n}},Object.defineProperties(Transform.prototype,prototypeAccessors),module.exports=Transform;\n},{\"../data/extent\":48,\"../source/tile_coord\":101,\"../style-spec/util/interpolate\":127,\"../util/util\":223,\"./coordinate\":57,\"./lng_lat\":58,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],61:[function(_dereq_,module,exports){\n\"use strict\";var IndexBuffer=function(e,r){this.gl=e,this.buffer=e.createBuffer(),void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\")),e.extVertexArrayObject&&e.extVertexArrayObject.bindVertexArrayOES(null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.buffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,r.arrayBuffer,e.STATIC_DRAW),delete r.arrayBuffer};IndexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.buffer)},IndexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=IndexBuffer;\n},{}],62:[function(_dereq_,module,exports){\n\"use strict\";var AttributeType={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},VertexBuffer=function(t,e,r){this.length=e.length,this.attributes=e.members,this.itemSize=e.bytesPerElement,this.dynamicDraw=r,this.gl=t,this.buffer=t.createBuffer(),this.gl.bindBuffer(t.ARRAY_BUFFER,this.buffer),this.gl.bufferData(t.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?t.DYNAMIC_DRAW:t.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};VertexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer)},VertexBuffer.prototype.updateData=function(t){this.bind(),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,t.arrayBuffer)},VertexBuffer.prototype.enableAttributes=function(t,e){for(var r=this,i=0;i<this.attributes.length;i++){var f=r.attributes[i],s=e.attributes[f.name];void 0!==s&&t.enableVertexAttribArray(s)}},VertexBuffer.prototype.setVertexAttribPointers=function(t,e,r){for(var i=this,f=0;f<this.attributes.length;f++){var s=i.attributes[f],u=e.attributes[s.name];void 0!==u&&t.vertexAttribPointer(u,s.components,t[AttributeType[s.type]],!1,i.itemSize,s.offset+i.itemSize*(r||0))}},VertexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=VertexBuffer;\n},{}],63:[function(_dereq_,module,exports){\n\"use strict\";var supported=_dereq_(\"mapbox-gl-supported\"),browser=_dereq_(\"./util/browser\"),version=_dereq_(\"../package.json\").version,Map=_dereq_(\"./ui/map\"),NavigationControl=_dereq_(\"./ui/control/navigation_control\"),GeolocateControl=_dereq_(\"./ui/control/geolocate_control\"),AttributionControl=_dereq_(\"./ui/control/attribution_control\"),ScaleControl=_dereq_(\"./ui/control/scale_control\"),FullscreenControl=_dereq_(\"./ui/control/fullscreen_control\"),Popup=_dereq_(\"./ui/popup\"),Marker=_dereq_(\"./ui/marker\"),Style=_dereq_(\"./style/style\"),LngLat=_dereq_(\"./geo/lng_lat\"),LngLatBounds=_dereq_(\"./geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"./util/evented\"),config=_dereq_(\"./util/config\"),rtlTextPlugin=_dereq_(\"./source/rtl_text_plugin\");module.exports={version:version,supported:supported,workerCount:Math.max(Math.floor(browser.hardwareConcurrency/2),1),setRTLTextPlugin:rtlTextPlugin.setRTLTextPlugin,Map:Map,NavigationControl:NavigationControl,GeolocateControl:GeolocateControl,AttributionControl:AttributionControl,ScaleControl:ScaleControl,FullscreenControl:FullscreenControl,Popup:Popup,Marker:Marker,Style:Style,LngLat:LngLat,LngLatBounds:LngLatBounds,Point:Point,Evented:Evented,config:config,get accessToken(){return config.ACCESS_TOKEN},set accessToken(o){config.ACCESS_TOKEN=o}};\n},{\"../package.json\":41,\"./geo/lng_lat\":58,\"./geo/lng_lat_bounds\":59,\"./source/rtl_text_plugin\":96,\"./style/style\":156,\"./ui/control/attribution_control\":182,\"./ui/control/fullscreen_control\":183,\"./ui/control/geolocate_control\":184,\"./ui/control/navigation_control\":186,\"./ui/control/scale_control\":187,\"./ui/map\":197,\"./ui/marker\":198,\"./ui/popup\":199,\"./util/browser\":202,\"./util/config\":206,\"./util/evented\":210,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],64:[function(_dereq_,module,exports){\n\"use strict\";function drawBackground(r,t,e){var i=r.gl,a=r.transform,n=a.tileSize,o=e.paint[\"background-color\"],l=e.paint[\"background-pattern\"],u=e.paint[\"background-opacity\"],f=l||1!==o[3]||1!==u?\"translucent\":\"opaque\";if(r.renderPass===f){i.disable(i.STENCIL_TEST),r.setDepthSublayer(0);var s;if(l){if(pattern.isPatternMissing(l,r))return;s=r.useProgram(\"fillPattern\",r.basicFillProgramConfiguration),pattern.prepare(l,r,s),r.tileExtentPatternVAO.bind(i,s,r.tileExtentBuffer)}else s=r.useProgram(\"fill\",r.basicFillProgramConfiguration),i.uniform4fv(s.uniforms.u_color,o),r.tileExtentVAO.bind(i,s,r.tileExtentBuffer);i.uniform1f(s.uniforms.u_opacity,u);for(var c=a.coveringTiles({tileSize:n}),g=0,p=c;g<p.length;g+=1){var d=p[g];l&&pattern.setTile({coord:d,tileSize:n},r,s),i.uniformMatrix4fv(s.uniforms.u_matrix,!1,r.transform.calculatePosMatrix(d)),i.drawArrays(i.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}}}var pattern=_dereq_(\"./pattern\");module.exports=drawBackground;\n},{\"./pattern\":80}],65:[function(_dereq_,module,exports){\n\"use strict\";function drawCircles(r,i,e,t){if(\"translucent\"===r.renderPass){var a=r.gl;r.setDepthSublayer(0),r.depthMask(!1),a.disable(a.STENCIL_TEST);for(var s=0;s<t.length;s++){var o=t[s],n=i.getTile(o),u=n.getBucket(e);if(u){var m=u.programConfigurations.get(e.id),f=r.useProgram(\"circle\",m);if(m.setUniforms(a,f,e,{zoom:r.transform.zoom}),a.uniform1f(f.uniforms.u_camera_to_center_distance,r.transform.cameraToCenterDistance),a.uniform1i(f.uniforms.u_scale_with_map,\"map\"===e.paint[\"circle-pitch-scale\"]?1:0),\"map\"===e.paint[\"circle-pitch-alignment\"]){a.uniform1i(f.uniforms.u_pitch_with_map,1);var l=pixelsToTileUnits(n,1,r.transform.zoom);a.uniform2f(f.uniforms.u_extrude_scale,l,l)}else a.uniform1i(f.uniforms.u_pitch_with_map,0),a.uniform2fv(f.uniforms.u_extrude_scale,r.transform.pixelsToGLUnits);a.uniform1f(f.uniforms.u_devicepixelratio,browser.devicePixelRatio),a.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(o.posMatrix,n,e.paint[\"circle-translate\"],e.paint[\"circle-translate-anchor\"])),f.draw(a,a.TRIANGLES,e.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,m)}}}}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=drawCircles;\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],66:[function(_dereq_,module,exports){\n\"use strict\";function drawCollisionDebug(o,i,r,e){var n=o.gl;n.enable(n.STENCIL_TEST);var t=o.useProgram(\"collisionBox\");n.activeTexture(n.TEXTURE1),o.frameHistory.bind(n),n.uniform1i(t.uniforms.u_fadetexture,1);for(var a=0;a<e.length;a++){var f=e[a],u=i.getTile(f),m=u.getBucket(r);if(m){n.uniformMatrix4fv(t.uniforms.u_matrix,!1,f.posMatrix),o.enableTileClippingMask(f),o.lineWidth(1),n.uniform1f(t.uniforms.u_scale,Math.pow(2,o.transform.zoom-u.coord.z)),n.uniform1f(t.uniforms.u_zoom,10*o.transform.zoom);var s=Math.max(0,Math.min(25,u.coord.z+Math.log(u.collisionTile.maxScale)/Math.LN2));n.uniform1f(t.uniforms.u_maxzoom,10*s),n.uniform1f(t.uniforms.u_collision_y_stretch,u.collisionTile.yStretch),n.uniform1f(t.uniforms.u_pitch,o.transform.pitch/360*2*Math.PI),n.uniform1f(t.uniforms.u_camera_to_center_distance,o.transform.cameraToCenterDistance),t.draw(n,n.LINES,r.id,m.collisionBox.layoutVertexBuffer,m.collisionBox.indexBuffer,m.collisionBox.segments)}}}module.exports=drawCollisionDebug;\n},{}],67:[function(_dereq_,module,exports){\n\"use strict\";function drawDebug(r,e,t){for(var a=0;a<t.length;a++)drawDebugTile(r,e,t[a])}function drawDebugTile(r,e,t){var a=r.gl;a.disable(a.STENCIL_TEST),r.lineWidth(1*browser.devicePixelRatio);var i=t.posMatrix,u=r.useProgram(\"debug\");a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.uniform4f(u.uniforms.u_color,1,0,0,1),r.debugVAO.bind(a,u,r.debugBuffer),a.drawArrays(a.LINE_STRIP,0,r.debugBuffer.length);for(var o=createTextVerticies(t.toString(),50,200,5),n=new PosArray,f=0;f<o.length;f+=2)n.emplaceBack(o[f],o[f+1]);var l=new VertexBuffer(a,n);(new VertexArrayObject).bind(a,u,l),a.uniform4f(u.uniforms.u_color,1,1,1,1);for(var s=e.getTile(t).tileSize,m=EXTENT/(Math.pow(2,r.transform.zoom-t.z)*s),x=[[-1,-1],[-1,1],[1,-1],[1,1]],g=0;g<x.length;g++){var b=x[g];a.uniformMatrix4fv(u.uniforms.u_matrix,!1,mat4.translate([],i,[m*b[0],m*b[1],0])),a.drawArrays(a.LINES,0,l.length)}a.uniform4f(u.uniforms.u_color,0,0,0,1),a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.drawArrays(a.LINES,0,l.length)}function createTextVerticies(r,e,t,a){a=a||1;var i,u,o,n,f,l,s,m,x=[];for(i=0,u=r.length;i<u;i++)if(f=simplexFont[r[i]]){for(m=null,o=0,n=f[1].length;o<n;o+=2)-1===f[1][o]&&-1===f[1][o+1]?m=null:(l=e+f[1][o]*a,s=t-f[1][o+1]*a,m&&x.push(m.x,m.y,l,s),m={x:l,y:s});e+=f[0]*a}return x}var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,EXTENT=_dereq_(\"../data/extent\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\");module.exports=drawDebug;var simplexFont={\" \":[16,[]],\"!\":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'\"':[16,[4,21,4,14,-1,-1,12,21,12,14]],\"#\":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],\"%\":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],\"&\":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],\"'\":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],\"(\":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],\")\":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],\"*\":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],\"+\":[26,[13,18,13,0,-1,-1,4,9,22,9]],\",\":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"-\":[26,[4,9,22,9]],\".\":[10,[5,2,4,1,5,0,6,1,5,2]],\"/\":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],\":\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],\";\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"<\":[24,[20,18,4,9,20,0]],\"=\":[26,[4,12,22,12,-1,-1,4,6,22,6]],\">\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"../util/browser\":202,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],68:[function(_dereq_,module,exports){\n\"use strict\";function drawFill(r,t,e,a){var i=r.gl;i.enable(i.STENCIL_TEST);var l=!e.paint[\"fill-pattern\"]&&e.isPaintValueFeatureConstant(\"fill-color\")&&e.isPaintValueFeatureConstant(\"fill-opacity\")&&1===e.paint[\"fill-color\"][3]&&1===e.paint[\"fill-opacity\"]?\"opaque\":\"translucent\";r.renderPass===l&&(r.setDepthSublayer(1),r.depthMask(\"opaque\"===r.renderPass),drawFillTiles(r,t,e,a,drawFillTile)),\"translucent\"===r.renderPass&&e.paint[\"fill-antialias\"]&&(r.lineWidth(2),r.depthMask(!1),r.setDepthSublayer(e.getPaintProperty(\"fill-outline-color\")?2:0),drawFillTiles(r,t,e,a,drawStrokeTile))}function drawFillTiles(r,t,e,a,i){if(!pattern.isPatternMissing(e.paint[\"fill-pattern\"],r))for(var l=!0,n=0,o=a;n<o.length;n+=1){var s=o[n],f=t.getTile(s),u=f.getBucket(e);u&&(r.enableTileClippingMask(s),i(r,t,e,f,s,u,l),l=!1)}}function drawFillTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id);setFillProgram(\"fill\",e.paint[\"fill-pattern\"],r,s,e,a,i,n).draw(o,o.TRIANGLES,e.id,l.layoutVertexBuffer,l.indexBuffer,l.segments,s)}function drawStrokeTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id),f=e.paint[\"fill-pattern\"]&&!e.getPaintProperty(\"fill-outline-color\"),u=setFillProgram(\"fillOutline\",f,r,s,e,a,i,n);o.uniform2f(u.uniforms.u_world,o.drawingBufferWidth,o.drawingBufferHeight),u.draw(o,o.LINES,e.id,l.layoutVertexBuffer,l.indexBuffer2,l.segments2,s)}function setFillProgram(r,t,e,a,i,l,n,o){var s,f=e.currentProgram;return t?(s=e.useProgram(r+\"Pattern\",a),(o||s!==f)&&(a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom}),pattern.prepare(i.paint[\"fill-pattern\"],e,s)),pattern.setTile(l,e,s)):(s=e.useProgram(r,a),(o||s!==f)&&a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom})),e.gl.uniformMatrix4fv(s.uniforms.u_matrix,!1,e.translatePosMatrix(n.posMatrix,l,i.paint[\"fill-translate\"],i.paint[\"fill-translate-anchor\"])),s}var pattern=_dereq_(\"./pattern\");module.exports=drawFill;\n},{\"./pattern\":80}],69:[function(_dereq_,module,exports){\n\"use strict\";function draw(r,t,e,i){if(\"3d\"===r.renderPass){var a=r.gl;a.disable(a.STENCIL_TEST),a.enable(a.DEPTH_TEST),r.clearColor(),r.depthMask(!0);for(var n=0;n<i.length;n++)drawExtrusion(r,t,e,i[n])}else\"translucent\"===r.renderPass&&drawExtrusionTexture(r,e)}function drawExtrusionTexture(r,t){var e=r.prerenderedFrames[t.id];if(e){var i=r.gl,a=r.useProgram(\"extrusionTexture\");i.disable(i.STENCIL_TEST),i.disable(i.DEPTH_TEST),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,e.texture),i.uniform1f(a.uniforms.u_opacity,t.paint[\"fill-extrusion-opacity\"]),i.uniform1i(a.uniforms.u_image,0);var n=mat4.create();mat4.ortho(n,0,r.width,r.height,0,0,1),i.uniformMatrix4fv(a.uniforms.u_matrix,!1,n),i.uniform2f(a.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),e.vao.bind(i,a,e.buffer),i.drawArrays(i.TRIANGLE_STRIP,0,4),r.viewportFrames.push(e),delete r.prerenderedFrames[t.id]}}function drawExtrusion(r,t,e,i){var a=t.getTile(i),n=a.getBucket(e);if(n){var o=r.gl,u=e.paint[\"fill-extrusion-pattern\"],s=n.programConfigurations.get(e.id),f=r.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",s);if(s.setUniforms(o,f,e,{zoom:r.transform.zoom}),u){if(pattern.isPatternMissing(u,r))return;pattern.prepare(u,r,f),pattern.setTile(a,r,f),o.uniform1f(f.uniforms.u_height_factor,-Math.pow(2,i.z)/a.tileSize/8)}r.gl.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(i.posMatrix,a,e.paint[\"fill-extrusion-translate\"],e.paint[\"fill-extrusion-translate-anchor\"])),setLight(f,r),f.draw(o,o.TRIANGLES,e.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,s)}}function setLight(r,t){var e=t.gl,i=t.style.light,a=i.calculated.position,n=[a.x,a.y,a.z],o=mat3.create();\"viewport\"===i.calculated.anchor&&mat3.fromRotation(o,-t.transform.angle),vec3.transformMat3(n,n,o),e.uniform3fv(r.uniforms.u_lightpos,n),e.uniform1f(r.uniforms.u_lightintensity,i.calculated.intensity),e.uniform3fv(r.uniforms.u_lightcolor,i.calculated.color.slice(0,3))}var glMatrix=_dereq_(\"@mapbox/gl-matrix\"),pattern=_dereq_(\"./pattern\"),mat3=glMatrix.mat3,mat4=glMatrix.mat4,vec3=glMatrix.vec3;module.exports=draw;\n},{\"./pattern\":80,\"@mapbox/gl-matrix\":1}],70:[function(_dereq_,module,exports){\n\"use strict\";function drawLineTile(i,r,e,t,n,a,o,u,f){var s,l,m,_,p=r.gl,g=n.paint[\"line-dasharray\"],d=n.paint[\"line-pattern\"];if(u||f){var x=1/pixelsToTileUnits(e,1,r.transform.tileZoom);if(g){s=r.lineAtlas.getDash(g.from,\"round\"===n.layout[\"line-cap\"]),l=r.lineAtlas.getDash(g.to,\"round\"===n.layout[\"line-cap\"]);var T=s.width*g.fromScale,c=l.width*g.toScale;p.uniform2f(i.uniforms.u_patternscale_a,x/T,-s.height/2),p.uniform2f(i.uniforms.u_patternscale_b,x/c,-l.height/2),p.uniform1f(i.uniforms.u_sdfgamma,r.lineAtlas.width/(256*Math.min(T,c)*browser.devicePixelRatio)/2)}else if(d){if(m=r.imageManager.getPattern(d.from),_=r.imageManager.getPattern(d.to),!m||!_)return;p.uniform2f(i.uniforms.u_pattern_size_a,m.displaySize[0]*d.fromScale/x,_.displaySize[1]),p.uniform2f(i.uniforms.u_pattern_size_b,_.displaySize[0]*d.toScale/x,_.displaySize[1]);var h=r.imageManager.getPixelSize(),v=h.width,b=h.height;p.uniform2fv(i.uniforms.u_texsize,[v,b])}p.uniform2f(i.uniforms.u_gl_units_to_pixels,1/r.transform.pixelsToGLUnits[0],1/r.transform.pixelsToGLUnits[1])}u&&(g?(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.lineAtlas.bind(p),p.uniform1f(i.uniforms.u_tex_y_a,s.y),p.uniform1f(i.uniforms.u_tex_y_b,l.y),p.uniform1f(i.uniforms.u_mix,g.t)):d&&(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.imageManager.bind(p),p.uniform2fv(i.uniforms.u_pattern_tl_a,m.tl),p.uniform2fv(i.uniforms.u_pattern_br_a,m.br),p.uniform2fv(i.uniforms.u_pattern_tl_b,_.tl),p.uniform2fv(i.uniforms.u_pattern_br_b,_.br),p.uniform1f(i.uniforms.u_fade,d.t))),r.enableTileClippingMask(a);var y=r.translatePosMatrix(a.posMatrix,e,n.paint[\"line-translate\"],n.paint[\"line-translate-anchor\"]);p.uniformMatrix4fv(i.uniforms.u_matrix,!1,y),p.uniform1f(i.uniforms.u_ratio,1/pixelsToTileUnits(e,1,r.transform.zoom)),i.draw(p,p.TRIANGLES,n.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,o)}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=function(i,r,e,t){if(\"translucent\"===i.renderPass){i.setDepthSublayer(0),i.depthMask(!1);var n=i.gl;if(n.enable(n.STENCIL_TEST),!(e.paint[\"line-width\"]<=0))for(var a,o=e.paint[\"line-dasharray\"]?\"lineSDF\":e.paint[\"line-pattern\"]?\"linePattern\":\"line\",u=!0,f=0,s=t;f<s.length;f+=1){var l=s[f],m=r.getTile(l),_=m.getBucket(e);if(_){var p=_.programConfigurations.get(e.id),g=i.currentProgram,d=i.useProgram(o,p),x=u||d!==g,T=a!==m.coord.z;x&&p.setUniforms(i.gl,d,e,{zoom:i.transform.zoom}),drawLineTile(d,i,m,_,e,l,p,x,T),a=m.coord.z,u=!1}}}};\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],71:[function(_dereq_,module,exports){\n\"use strict\";function drawRaster(r,t,e,a){if(\"translucent\"===r.renderPass){var i=r.gl,o=t.getSource(),n=r.useProgram(\"raster\");i.enable(i.DEPTH_TEST),r.depthMask(!0),i.depthFunc(i.LESS),i.disable(i.STENCIL_TEST),i.uniform1f(n.uniforms.u_brightness_low,e.paint[\"raster-brightness-min\"]),i.uniform1f(n.uniforms.u_brightness_high,e.paint[\"raster-brightness-max\"]),i.uniform1f(n.uniforms.u_saturation_factor,saturationFactor(e.paint[\"raster-saturation\"])),i.uniform1f(n.uniforms.u_contrast_factor,contrastFactor(e.paint[\"raster-contrast\"])),i.uniform3fv(n.uniforms.u_spin_weights,spinWeights(e.paint[\"raster-hue-rotate\"])),i.uniform1f(n.uniforms.u_buffer_scale,1),i.uniform1i(n.uniforms.u_image0,0),i.uniform1i(n.uniforms.u_image1,1);for(var u=a.length&&a[0].z,s=0,f=a;s<f.length;s+=1){var m=f[s];r.setDepthSublayer(m.z-u);var d=t.getTile(m),c=r.transform.calculatePosMatrix(m,t.getSource().maxzoom);d.registerFadeDuration(r.style.animationLoop,e.paint[\"raster-fade-duration\"]),i.uniformMatrix4fv(n.uniforms.u_matrix,!1,c);var p=t.findLoadedParent(m,0,{}),_=getFadeValues(d,p,t,e,r.transform),h=void 0,l=void 0;if(i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,d.texture),i.activeTexture(i.TEXTURE1),p?(i.bindTexture(i.TEXTURE_2D,p.texture),h=Math.pow(2,p.coord.z-d.coord.z),l=[d.coord.x*h%1,d.coord.y*h%1]):i.bindTexture(i.TEXTURE_2D,d.texture),i.uniform2fv(n.uniforms.u_tl_parent,l||[0,0]),i.uniform1f(n.uniforms.u_scale_parent,h||1),i.uniform1f(n.uniforms.u_fade_t,_.mix),i.uniform1f(n.uniforms.u_opacity,_.opacity*e.paint[\"raster-opacity\"]),o instanceof ImageSource){var g=o.boundsBuffer;o.boundsVAO.bind(i,n,g),i.drawArrays(i.TRIANGLE_STRIP,0,g.length)}else{var T=r.rasterBoundsBuffer;r.rasterBoundsVAO.bind(i,n,T),i.drawArrays(i.TRIANGLE_STRIP,0,T.length)}}i.depthFunc(i.LEQUAL)}}function spinWeights(r){r*=Math.PI/180;var t=Math.sin(r),e=Math.cos(r);return[(2*e+1)/3,(-Math.sqrt(3)*t-e+1)/3,(Math.sqrt(3)*t-e+1)/3]}function contrastFactor(r){return r>0?1/(1-r):1+r}function saturationFactor(r){return r>0?1-1/(1.001-r):-r}function getFadeValues(r,t,e,a,i){var o=a.paint[\"raster-fade-duration\"];if(o>0){var n=Date.now(),u=(n-r.timeAdded)/o,s=t?(n-t.timeAdded)/o:-1,f=e.getSource(),m=i.coveringZoomLevel({tileSize:f.tileSize,roundZoom:f.roundZoom}),d=!t||Math.abs(t.coord.z-m)>Math.abs(r.coord.z-m),c=d&&r.refreshedUponExpiration?1:util.clamp(d?u:1-s,0,1);return r.refreshedUponExpiration&&u>=1&&(r.refreshedUponExpiration=!1),t?{opacity:1,mix:1-c}:{opacity:c,mix:0}}return{opacity:1,mix:0}}var util=_dereq_(\"../util/util\"),ImageSource=_dereq_(\"../source/image_source\");module.exports=drawRaster;\n},{\"../source/image_source\":91,\"../util/util\":223}],72:[function(_dereq_,module,exports){\n\"use strict\";function drawSymbols(t,i,o,e){if(\"translucent\"===t.renderPass){var a=!(o.layout[\"text-allow-overlap\"]||o.layout[\"icon-allow-overlap\"]||o.layout[\"text-ignore-placement\"]||o.layout[\"icon-ignore-placement\"]),r=t.gl;a?r.disable(r.STENCIL_TEST):r.enable(r.STENCIL_TEST),t.setDepthSublayer(0),t.depthMask(!1),drawLayerSymbols(t,i,o,e,!1,o.paint[\"icon-translate\"],o.paint[\"icon-translate-anchor\"],o.layout[\"icon-rotation-alignment\"],o.layout[\"icon-pitch-alignment\"],o.layout[\"icon-keep-upright\"]),drawLayerSymbols(t,i,o,e,!0,o.paint[\"text-translate\"],o.paint[\"text-translate-anchor\"],o.layout[\"text-rotation-alignment\"],o.layout[\"text-pitch-alignment\"],o.layout[\"text-keep-upright\"]),i.map.showCollisionBoxes&&drawCollisionDebug(t,i,o,e)}}function drawLayerSymbols(t,i,o,e,a,r,n,s,u,l){var m=t.gl,f=t.transform,c=\"map\"===s,_=\"map\"===u,y=c&&\"line\"===o.layout[\"symbol-placement\"],p=c&&!_&&!y,x=_;x?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST);for(var b,d=0,T=e;d<T.length;d+=1){var g=T[d],S=i.getTile(g),h=S.getBucket(o);if(h){var z=a?h.text:h.icon;if(z&&z.segments.get().length){var v=z.programConfigurations.get(o.id),E=a||h.sdfIcons,w=a?h.textSizeData:h.iconSizeData;if(b||(b=t.useProgram(E?\"symbolSDF\":\"symbolIcon\",v),v.setUniforms(m,b,o,{zoom:t.transform.zoom}),setSymbolDrawState(b,t,o,a,p,_,w)),m.activeTexture(m.TEXTURE0),m.uniform1i(b.uniforms.u_texture,0),a)S.glyphAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.glyphAtlasTexture.size);else{var M=!o.isLayoutValueFeatureConstant(\"icon-size\")||!o.isLayoutValueZoomConstant(\"icon-size\")||1!==o.getLayoutValue(\"icon-size\",{zoom:f.zoom})||h.iconsNeedLinear,C=_||0!==f.pitch;S.iconAtlasTexture.bind(E||t.options.rotating||t.options.zooming||M||C?m.LINEAR:m.NEAREST,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.iconAtlasTexture.size)}t.enableTileClippingMask(g),m.uniformMatrix4fv(b.uniforms.u_matrix,!1,t.translatePosMatrix(g.posMatrix,S,r,n));var L=pixelsToTileUnits(S,1,t.transform.zoom),P=symbolProjection.getLabelPlaneMatrix(g.posMatrix,_,c,t.transform,L),D=symbolProjection.getGlCoordMatrix(g.posMatrix,_,c,t.transform,L);m.uniformMatrix4fv(b.uniforms.u_gl_coord_matrix,!1,t.translatePosMatrix(D,S,r,n,!0)),y?(m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,identityMat4),symbolProjection.updateLineLabels(h,g.posMatrix,t,a,P,D,_,l,L,o)):m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,P),m.uniform1f(b.uniforms.u_collision_y_stretch,S.collisionTile.yStretch),drawTileSymbols(b,v,t,o,S,z,a,E,_)}}}x||m.enable(m.DEPTH_TEST)}function setSymbolDrawState(t,i,o,e,a,r,n){var s=i.gl,u=i.transform;s.uniform1i(t.uniforms.u_pitch_with_map,r?1:0),s.uniform1f(t.uniforms.u_is_text,e?1:0),s.activeTexture(s.TEXTURE1),i.frameHistory.bind(s),s.uniform1i(t.uniforms.u_fadetexture,1),s.uniform1f(t.uniforms.u_pitch,u.pitch/360*2*Math.PI),s.uniform1i(t.uniforms.u_is_size_zoom_constant,n.isZoomConstant?1:0),s.uniform1i(t.uniforms.u_is_size_feature_constant,n.isFeatureConstant?1:0),s.uniform1f(t.uniforms.u_camera_to_center_distance,u.cameraToCenterDistance);var l=symbolSize.evaluateSizeForZoom(n,u,o,e);void 0!==l.uSizeT&&s.uniform1f(t.uniforms.u_size_t,l.uSizeT),void 0!==l.uSize&&s.uniform1f(t.uniforms.u_size,l.uSize),s.uniform1f(t.uniforms.u_aspect_ratio,u.width/u.height),s.uniform1i(t.uniforms.u_rotate_symbol,a?1:0)}function drawTileSymbols(t,i,o,e,a,r,n,s,u){var l=o.gl,m=o.transform;if(s){var f=(n?\"text\":\"icon\")+\"-halo-width\",c=!e.isPaintValueFeatureConstant(f)||e.paint[f],_=u?Math.cos(m._pitch)*m.cameraToCenterDistance:1;l.uniform1f(t.uniforms.u_gamma_scale,_),c&&(l.uniform1f(t.uniforms.u_is_halo,1),drawSymbolElements(r,e,l,t)),l.uniform1f(t.uniforms.u_is_halo,0)}drawSymbolElements(r,e,l,t)}function drawSymbolElements(t,i,o,e){e.draw(o,o.TRIANGLES,i.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer)}var drawCollisionDebug=_dereq_(\"./draw_collision_debug\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),symbolProjection=_dereq_(\"../symbol/projection\"),symbolSize=_dereq_(\"../symbol/symbol_size\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,identityMat4=mat4.identity(new Float32Array(16));module.exports=drawSymbols;\n},{\"../source/pixels_to_tile_units\":93,\"../symbol/projection\":175,\"../symbol/symbol_size\":178,\"./draw_collision_debug\":66,\"@mapbox/gl-matrix\":1}],73:[function(_dereq_,module,exports){\n\"use strict\";var FrameHistory=function(){this.changeTimes=new Float64Array(256),this.changeOpacities=new Uint8Array(256),this.opacities=new Uint8ClampedArray(256),this.array=new Uint8Array(this.opacities.buffer),this.previousZoom=0,this.firstFrame=!0};FrameHistory.prototype.record=function(e,t,i){var r=this;this.firstFrame&&(e=0,this.firstFrame=!1),t=Math.floor(10*t);var a;if(t<this.previousZoom)for(a=t+1;a<=this.previousZoom;a++)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];else for(a=t;a>this.previousZoom;a--)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];for(a=0;a<256;a++){var s=e-r.changeTimes[a],o=255*(i?s/i:1);r.opacities[a]=a<=t?r.changeOpacities[a]+o:r.changeOpacities[a]-o}this.changed=!0,this.previousZoom=t},FrameHistory.prototype.isVisible=function(e){return 0!==this.opacities[Math.floor(10*e)]},FrameHistory.prototype.bind=function(e){this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.changed&&(e.texSubImage2D(e.TEXTURE_2D,0,0,0,256,1,e.ALPHA,e.UNSIGNED_BYTE,this.array),this.changed=!1)):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,256,1,0,e.ALPHA,e.UNSIGNED_BYTE,this.array))},module.exports=FrameHistory;\n},{}],74:[function(_dereq_,module,exports){\n\"use strict\";function makeGlyphAtlas(a){var e=AlphaImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var h in a){var p=a[h],r=i[h]={};for(var m in p){var g=p[+m];if(g&&0!==g.bitmap.width&&0!==g.bitmap.height){var l=t.packOne(g.bitmap.width+2*padding,g.bitmap.height+2*padding);AlphaImage.resize(e,{width:t.w,height:t.h}),AlphaImage.copy(g.bitmap,e,{x:0,y:0},{x:l.x+padding,y:l.y+padding},g.bitmap),r[m]={rect:l,metrics:g.metrics}}}}return t.shrink(),AlphaImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,padding=1;module.exports={makeGlyphAtlas:makeGlyphAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],75:[function(_dereq_,module,exports){\n\"use strict\";var loadGlyphRange=_dereq_(\"../style/load_glyph_range\"),TinySDF=_dereq_(\"@mapbox/tiny-sdf\"),isChar=_dereq_(\"../util/is_char_in_unicode_block\"),ref=_dereq_(\"../util/util\"),asyncAll=ref.asyncAll,ref$1=_dereq_(\"../util/image\"),AlphaImage=ref$1.AlphaImage,GlyphManager=function(r,e){this.requestTransform=r,this.localIdeographFontFamily=e,this.entries={}};GlyphManager.prototype.setURL=function(r){this.url=r},GlyphManager.prototype.getGlyphs=function(r,e){var t=this,i=[];for(var a in r)for(var l=0,n=r[a];l<n.length;l+=1){var s=n[l];i.push({stack:a,id:s})}asyncAll(i,function(r,e){var i=r.stack,a=r.id,l=t.entries[i];l||(l=t.entries[i]={glyphs:{},requests:{}});var n=l.glyphs[a];if(void 0!==n)return void e(null,{stack:i,id:a,glyph:n});if(n=t._tinySDF(l,i,a))return void e(null,{stack:i,id:a,glyph:n});var s=Math.floor(a/256);if(256*s>65535)return void e(new Error(\"glyphs > 65535 not supported\"));var o=l.requests[s];o||(o=l.requests[s]=[],loadGlyphRange(i,s,t.url,t.requestTransform,function(r,e){if(e)for(var t in e)l.glyphs[+t]=e[+t];for(var i=0,a=o;i<a.length;i+=1){(0,a[i])(r,e)}delete l.requests[s]})),o.push(function(r,t){r?e(r):t&&e(null,{stack:i,id:a,glyph:t[a]||null})})},function(r,t){if(r)e(r);else if(t){for(var i={},a=0,l=t;a<l.length;a+=1){var n=l[a],s=n.stack,o=n.id,h=n.glyph;(i[s]||(i[s]={}))[o]=h}e(null,i)}})},GlyphManager.prototype._tinySDF=function(r,e,t){var i=this.localIdeographFontFamily;if(i&&(isChar[\"CJK Unified Ideographs\"](t)||isChar[\"Hangul Syllables\"](t))){var a=r.tinySDF;if(!a){var l=\"400\";/bold/i.test(e)?l=\"900\":/medium/i.test(e)?l=\"500\":/light/i.test(e)&&(l=\"200\"),a=r.tinySDF=new TinySDF(24,3,8,.25,i,l)}return{id:t,bitmap:AlphaImage.create({width:30,height:30},a.draw(String.fromCharCode(t))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},module.exports=GlyphManager;\n},{\"../style/load_glyph_range\":152,\"../util/image\":213,\"../util/is_char_in_unicode_block\":215,\"../util/util\":223,\"@mapbox/tiny-sdf\":4}],76:[function(_dereq_,module,exports){\n\"use strict\";function imagePosition(a,e){var i=e.pixelRatio,t={x:a.x+padding,y:a.y+padding,w:a.w-2*padding,h:a.h-2*padding};return{pixelRatio:i,textureRect:t,tl:[t.x,t.y],br:[t.x+t.w,t.y+t.h],displaySize:[t.w/i,t.h/i]}}function makeImageAtlas(a){var e=RGBAImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var d in a){var g=a[d],n=t.packOne(g.data.width+2*padding,g.data.height+2*padding);RGBAImage.resize(e,{width:t.w,height:t.h}),RGBAImage.copy(g.data,e,{x:0,y:0},{x:n.x+padding,y:n.y+padding},g.data),i[d]=imagePosition(n,g)}return t.shrink(),RGBAImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,padding=1;module.exports={imagePosition:imagePosition,makeImageAtlas:makeImageAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],77:[function(_dereq_,module,exports){\n\"use strict\";var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,ref$1=_dereq_(\"./image_atlas\"),imagePosition=ref$1.imagePosition,Texture=_dereq_(\"./texture\"),padding=1,ImageManager=function(){this.images={},this.loaded=!1,this.requestors=[],this.shelfPack=new ShelfPack(64,64,{autoResize:!0}),this.patterns={},this.atlasImage=RGBAImage.create({width:64,height:64}),this.dirty=!0};ImageManager.prototype.isLoaded=function(){return this.loaded},ImageManager.prototype.setLoaded=function(e){var t=this;if(this.loaded!==e&&(this.loaded=e,e)){for(var a=0,i=t.requestors;a<i.length;a+=1){var r=i[a],s=r.ids,h=r.callback;t._notify(s,h)}this.requestors=[]}},ImageManager.prototype.getImage=function(e){return this.images[e]},ImageManager.prototype.addImage=function(e,t){this.images[e]=t},ImageManager.prototype.removeImage=function(e){delete this.images[e];var t=this.patterns[e];t&&(this.shelfPack.unref(t.bin),delete this.patterns[e])},ImageManager.prototype.getImages=function(e,t){var a=this,i=!0;if(!this.isLoaded())for(var r=0,s=e;r<s.length;r+=1){var h=s[r];a.images[h]||(i=!1)}this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t})},ImageManager.prototype._notify=function(e,t){for(var a=this,i={},r=0,s=e;r<s.length;r+=1){var h=s[r],g=a.images[h];g&&(i[h]=g)}t(null,i)},ImageManager.prototype.getPixelSize=function(){return{width:this.shelfPack.w,height:this.shelfPack.h}},ImageManager.prototype.getPattern=function(e){var t=this.patterns[e];if(t)return t.position;var a=this.getImage(e);if(!a)return null;var i=a.data.width+2*padding,r=a.data.height+2*padding,s=this.shelfPack.packOne(i,r);if(!s)return null;RGBAImage.resize(this.atlasImage,this.getPixelSize());var h=a.data,g=this.atlasImage,n=s.x+padding,o=s.y+padding,d=h.width,m=h.height;RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o},{width:d,height:m}),RGBAImage.copy(h,g,{x:0,y:m-1},{x:n,y:o-1},{width:d,height:1}),RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o+m},{width:d,height:1}),RGBAImage.copy(h,g,{x:d-1,y:0},{x:n-1,y:o},{width:1,height:m}),RGBAImage.copy(h,g,{x:0,y:0},{x:n+d,y:o},{width:1,height:m}),this.dirty=!0;var p=imagePosition(s,a);return this.patterns[e]={bin:s,position:p},p},ImageManager.prototype.bind=function(e){this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Texture(e,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE)},module.exports=ImageManager;\n},{\"../util/image\":213,\"./image_atlas\":76,\"./texture\":83,\"@mapbox/shelf-pack\":3}],78:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),LineAtlas=function(t,i){this.width=t,this.height=i,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}};LineAtlas.prototype.getDash=function(t,i){var e=t.join(\",\")+String(i);return this.positions[e]||(this.positions[e]=this.addDash(t,i)),this.positions[e]},LineAtlas.prototype.addDash=function(t,i){var e=this,h=i?7:0,s=2*h+1;if(this.nextRow+s>this.height)return util.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,r=0;r<t.length;r++)a+=t[r];for(var n=this.width/a,E=n/2,T=t.length%2==1,o=-h;o<=h;o++)for(var R=e.nextRow+h+o,d=e.width*R,u=T?-t[t.length-1]:0,x=t[0],l=1,_=0;_<this.width;_++){for(;x<_/n;)u=x,x+=t[l],T&&l===t.length-1&&(x+=t[0]),l++;var A=Math.abs(_-u*n),g=Math.abs(_-x*n),w=Math.min(A,g),D=l%2==1,U=void 0;if(i){var f=h?o/h*(E+1):0;if(D){var p=E-Math.abs(f);U=Math.sqrt(w*w+p*p)}else U=E-Math.sqrt(w*w+f*f)}else U=(D?1:-1)*w;e.data[3+4*(d+_)]=Math.max(0,Math.min(255,U+128))}var X={y:(this.nextRow+h+.5)/this.height,height:2*h/this.height,width:a};return this.nextRow+=s,this.dirty=!0,X},LineAtlas.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.RGBA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,this.data))},module.exports=LineAtlas;\n},{\"../util/util\":223}],79:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,FrameHistory=_dereq_(\"./frame_history\"),SourceCache=_dereq_(\"../source/source_cache\"),EXTENT=_dereq_(\"../data/extent\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),util=_dereq_(\"../util/util\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),PosArray=_dereq_(\"../data/pos_array\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,shaders=_dereq_(\"../shaders\"),Program=_dereq_(\"./program\"),RenderTexture=_dereq_(\"./render_texture\"),draw={symbol:_dereq_(\"./draw_symbol\"),circle:_dereq_(\"./draw_circle\"),line:_dereq_(\"./draw_line\"),fill:_dereq_(\"./draw_fill\"),\"fill-extrusion\":_dereq_(\"./draw_fill_extrusion\"),raster:_dereq_(\"./draw_raster\"),background:_dereq_(\"./draw_background\"),debug:_dereq_(\"./draw_debug\")},Painter=function(e,r){this.gl=e,this.transform=r,this._tileTextures={},this.prerenderedFrames={},this.viewportFrames=[],this.frameHistory=new FrameHistory,this.setup(),this.numSublayers=SourceCache.maxUnderzooming+SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.lineWidthRange=e.getParameter(e.ALIASED_LINE_WIDTH_RANGE),this.basicFillProgramConfiguration=ProgramConfiguration.createBasicFill(),this.emptyProgramConfiguration=new ProgramConfiguration};Painter.prototype.resize=function(e,r){var t=this,i=this.gl;this.width=e*browser.devicePixelRatio,this.height=r*browser.devicePixelRatio,i.viewport(0,0,this.width,this.height);for(var a=0,s=t.viewportFrames;a<s.length;a+=1){var n=s[a];t.gl.deleteTexture(n.texture),t.gl.deleteFramebuffer(n.fbo)}this.viewportFrames=[],this.depthRbo&&(this.gl.deleteRenderbuffer(this.depthRbo),this.depthRbo=null)},Painter.prototype.setup=function(){var e=this.gl;e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.enable(e.STENCIL_TEST),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),this._depthMask=!1,e.depthMask(!1);var r=new PosArray;r.emplaceBack(0,0),r.emplaceBack(EXTENT,0),r.emplaceBack(0,EXTENT),r.emplaceBack(EXTENT,EXTENT),this.tileExtentBuffer=new VertexBuffer(e,r),this.tileExtentVAO=new VertexArrayObject,this.tileExtentPatternVAO=new VertexArrayObject;var t=new PosArray;t.emplaceBack(0,0),t.emplaceBack(EXTENT,0),t.emplaceBack(EXTENT,EXTENT),t.emplaceBack(0,EXTENT),t.emplaceBack(0,0),this.debugBuffer=new VertexBuffer(e,t),this.debugVAO=new VertexArrayObject;var i=new RasterBoundsArray;i.emplaceBack(0,0,0,0),i.emplaceBack(EXTENT,0,EXTENT,0),i.emplaceBack(0,EXTENT,0,EXTENT),i.emplaceBack(EXTENT,EXTENT,EXTENT,EXTENT),this.rasterBoundsBuffer=new VertexBuffer(e,i),this.rasterBoundsVAO=new VertexArrayObject,this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT))},Painter.prototype.clearColor=function(){var e=this.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},Painter.prototype.clearStencil=function(){var e=this.gl;e.clearStencil(0),e.stencilMask(255),e.clear(e.STENCIL_BUFFER_BIT)},Painter.prototype.clearDepth=function(){var e=this.gl;e.clearDepth(1),this.depthMask(!0),e.clear(e.DEPTH_BUFFER_BIT)},Painter.prototype._renderTileClippingMasks=function(e){var r=this,t=this.gl;t.colorMask(!1,!1,!1,!1),this.depthMask(!1),t.disable(t.DEPTH_TEST),t.enable(t.STENCIL_TEST),t.stencilMask(255),t.stencilOp(t.KEEP,t.KEEP,t.REPLACE);var i=1;this._tileClippingMaskIDs={};for(var a=0,s=e;a<s.length;a+=1){var n=s[a],o=r._tileClippingMaskIDs[n.id]=i++;t.stencilFunc(t.ALWAYS,o,255);var l=r.useProgram(\"fill\",r.basicFillProgramConfiguration);t.uniformMatrix4fv(l.uniforms.u_matrix,!1,n.posMatrix),r.tileExtentVAO.bind(t,l,r.tileExtentBuffer),t.drawArrays(t.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}t.stencilMask(0),t.colorMask(!0,!0,!0,!0),this.depthMask(!0),t.enable(t.DEPTH_TEST)},Painter.prototype.enableTileClippingMask=function(e){var r=this.gl;r.stencilFunc(r.EQUAL,this._tileClippingMaskIDs[e.id],255)},Painter.prototype.render=function(e,r){var t=this;this.style=e,this.options=r,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.frameHistory.record(Date.now(),this.transform.zoom,e.getTransition().duration);for(var i in t.style.sourceCaches){var a=t.style.sourceCaches[i];a.used&&a.prepare(t.gl)}var s=this.style._order;this.renderPass=\"3d\";for(var n,o=!0,l=[],h=0;h<s.length;h++){var c=t.style._layers[s[h]];if(c.has3DPass()&&!c.isHidden(t.transform.zoom)&&(c.source!==(n&&n.id)&&(n=t.style.sourceCaches[c.source],l=[],n&&(t.clearStencil(),l=n.getVisibleCoordinates()),l.reverse()),l.length)){t._setup3DRenderbuffer();var u=t.viewportFrames.pop()||new RenderTexture(t);u.bindWithDepth(t.depthRbo),o&&(t.clearDepth(),o=!1),t.renderLayer(t,n,c,l),u.unbind(),t.prerenderedFrames[c.id]=u}}this.clearColor(),this.clearDepth(),this.showOverdrawInspector(r.showOverdrawInspector),this.depthRange=(e._order.length+2)*this.numSublayers*this.depthEpsilon,this.renderPass=\"opaque\";var p,d=[];for(this.currentLayer=s.length-1,this._showOverdrawInspector||this.gl.disable(this.gl.BLEND),this.currentLayer;this.currentLayer>=0;this.currentLayer--){var g=t.style._layers[s[t.currentLayer]];g.source!==(p&&p.id)&&(p=t.style.sourceCaches[g.source],d=[],p&&(t.clearStencil(),d=p.getVisibleCoordinates(),p.getSource().isTileClipped&&t._renderTileClippingMasks(d))),t.renderLayer(t,p,g,d)}this.renderPass=\"translucent\";var f,E=[];for(this.gl.enable(this.gl.BLEND),this.currentLayer=0,this.currentLayer;this.currentLayer<s.length;this.currentLayer++){var T=t.style._layers[s[t.currentLayer]];T.source!==(f&&f.id)&&(f=t.style.sourceCaches[T.source],E=[],f&&(t.clearStencil(),E=f.getVisibleCoordinates(),f.getSource().isTileClipped&&t._renderTileClippingMasks(E)),E.reverse()),t.renderLayer(t,f,T,E)}if(this.options.showTileBoundaries){var _=this.style.sourceCaches[Object.keys(this.style.sourceCaches)[0]];_&&draw.debug(this,_,_.getVisibleCoordinates())}},Painter.prototype._setup3DRenderbuffer=function(){if(!this.depthRbo){var e=this.gl;this.depthRbo=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,this.depthRbo),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,this.width,this.height),e.bindRenderbuffer(e.RENDERBUFFER,null)}this.depthRboAttached=!0},Painter.prototype.depthMask=function(e){e!==this._depthMask&&(this._depthMask=e,this.gl.depthMask(e))},Painter.prototype.renderLayer=function(e,r,t,i){t.isHidden(this.transform.zoom)||(\"background\"===t.type||i.length)&&(this.id=t.id,draw[t.type](e,r,t,i))},Painter.prototype.setDepthSublayer=function(e){var r=1-((1+this.currentLayer)*this.numSublayers+e)*this.depthEpsilon,t=r-1+this.depthRange;this.gl.depthRange(t,r)},Painter.prototype.translatePosMatrix=function(e,r,t,i,a){if(!t[0]&&!t[1])return e;var s=a?\"map\"===i?this.transform.angle:0:\"viewport\"===i?-this.transform.angle:0;if(s){var n=Math.sin(s),o=Math.cos(s);t=[t[0]*o-t[1]*n,t[0]*n+t[1]*o]}var l=[a?t[0]:pixelsToTileUnits(r,t[0],this.transform.zoom),a?t[1]:pixelsToTileUnits(r,t[1],this.transform.zoom),0],h=new Float32Array(16);return mat4.translate(h,e,l),h},Painter.prototype.saveTileTexture=function(e){var r=this._tileTextures[e.size];r?r.push(e):this._tileTextures[e.size]=[e]},Painter.prototype.getTileTexture=function(e){var r=this._tileTextures[e];return r&&r.length>0?r.pop():null},Painter.prototype.lineWidth=function(e){this.gl.lineWidth(util.clamp(e,this.lineWidthRange[0],this.lineWidthRange[1]))},Painter.prototype.showOverdrawInspector=function(e){if(e||this._showOverdrawInspector){this._showOverdrawInspector=e;var r=this.gl;if(e){r.blendFunc(r.CONSTANT_COLOR,r.ONE);r.blendColor(1/8,1/8,1/8,0),r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}else r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA)}},Painter.prototype._createProgramCached=function(e,r){this.cache=this.cache||{};var t=\"\"+e+(r.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[t]||(this.cache[t]=new Program(this.gl,shaders[e],r,this._showOverdrawInspector)),this.cache[t]},Painter.prototype.useProgram=function(e,r){var t=this.gl,i=this._createProgramCached(e,r||this.emptyProgramConfiguration);return this.currentProgram!==i&&(t.useProgram(i.program),this.currentProgram=i),i},module.exports=Painter;\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../data/program_configuration\":53,\"../data/raster_bounds_array\":54,\"../gl/vertex_buffer\":62,\"../shaders\":86,\"../source/pixels_to_tile_units\":93,\"../source/source_cache\":98,\"../util/browser\":202,\"../util/util\":223,\"./draw_background\":64,\"./draw_circle\":65,\"./draw_debug\":67,\"./draw_fill\":68,\"./draw_fill_extrusion\":69,\"./draw_line\":70,\"./draw_raster\":71,\"./draw_symbol\":72,\"./frame_history\":73,\"./program\":81,\"./render_texture\":82,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],80:[function(_dereq_,module,exports){\n\"use strict\";var pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");exports.isPatternMissing=function(r,i){if(!r)return!1;var e=i.imageManager.getPattern(r.from),o=i.imageManager.getPattern(r.to);return!e||!o},exports.prepare=function(r,i,e){var o=i.gl,t=i.imageManager.getPattern(r.from),n=i.imageManager.getPattern(r.to);o.uniform1i(e.uniforms.u_image,0),o.uniform2fv(e.uniforms.u_pattern_tl_a,t.tl),o.uniform2fv(e.uniforms.u_pattern_br_a,t.br),o.uniform2fv(e.uniforms.u_pattern_tl_b,n.tl),o.uniform2fv(e.uniforms.u_pattern_br_b,n.br);var u=i.imageManager.getPixelSize(),a=u.width,f=u.height;o.uniform2fv(e.uniforms.u_texsize,[a,f]),o.uniform1f(e.uniforms.u_mix,r.t),o.uniform2fv(e.uniforms.u_pattern_size_a,t.displaySize),o.uniform2fv(e.uniforms.u_pattern_size_b,n.displaySize),o.uniform1f(e.uniforms.u_scale_a,r.fromScale),o.uniform1f(e.uniforms.u_scale_b,r.toScale),o.activeTexture(o.TEXTURE0),i.imageManager.bind(o)},exports.setTile=function(r,i,e){var o=i.gl;o.uniform1f(e.uniforms.u_tile_units_to_pixels,1/pixelsToTileUnits(r,1,i.transform.tileZoom));var t=Math.pow(2,r.coord.z),n=r.tileSize*Math.pow(2,i.transform.tileZoom)/t,u=n*(r.coord.x+r.coord.w*t),a=n*r.coord.y;o.uniform2f(e.uniforms.u_pixel_coord_upper,u>>16,a>>16),o.uniform2f(e.uniforms.u_pixel_coord_lower,65535&u,65535&a)};\n},{\"../source/pixels_to_tile_units\":93}],81:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),shaders=_dereq_(\"../shaders\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,VertexArrayObject=_dereq_(\"./vertex_array_object\"),Program=function(r,e,t,a){var o=this;this.gl=r,this.program=r.createProgram();var i=t.defines().concat(\"#define DEVICE_PIXEL_RATIO \"+browser.devicePixelRatio.toFixed(1));a&&i.push(\"#define OVERDRAW_INSPECTOR;\");var n=i.concat(shaders.prelude.fragmentSource,e.fragmentSource).join(\"\\n\"),s=i.concat(shaders.prelude.vertexSource,e.vertexSource).join(\"\\n\"),m=r.createShader(r.FRAGMENT_SHADER);r.shaderSource(m,n),r.compileShader(m),r.attachShader(this.program,m);var g=r.createShader(r.VERTEX_SHADER);r.shaderSource(g,s),r.compileShader(g),r.attachShader(this.program,g);for(var c=t.interface?t.interface.layoutAttributes:[],u=0;u<c.length;u++)r.bindAttribLocation(o.program,u,c[u].name);r.linkProgram(this.program),this.numAttributes=r.getProgramParameter(this.program,r.ACTIVE_ATTRIBUTES),this.attributes={},this.uniforms={};for(var h=0;h<this.numAttributes;h++){var f=r.getActiveAttrib(o.program,h);f&&(o.attributes[f.name]=r.getAttribLocation(o.program,f.name))}for(var d=r.getProgramParameter(this.program,r.ACTIVE_UNIFORMS),p=0;p<d;p++){var v=r.getActiveUniform(o.program,p);v&&(o.uniforms[v.name]=r.getUniformLocation(o.program,v.name))}};Program.prototype.draw=function(r,e,t,a,o,i,n,s){for(var m,g=this,c=(m={},m[r.LINES]=2,m[r.TRIANGLES]=3,m)[e],u=0,h=i.get();u<h.length;u+=1){var f=h[u],d=f.vaos||(f.vaos={});(d[t]||(d[t]=new VertexArrayObject)).bind(r,g,a,o,n&&n.paintVertexBuffer,f.vertexOffset,s),r.drawElements(e,f.primitiveLength*c,r.UNSIGNED_SHORT,f.primitiveOffset*c*2)}},module.exports=Program;\n},{\"../data/program_configuration\":53,\"../shaders\":86,\"../util/browser\":202,\"./vertex_array_object\":84}],82:[function(_dereq_,module,exports){\n\"use strict\";var VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\"),RenderTexture=function(e){var r=this.gl=e.gl,t=this.texture=r.createTexture();r.bindTexture(r.TEXTURE_2D,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e.width,e.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.bindTexture(r.TEXTURE_2D,null);var E=this.fbo=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,E),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0);var a=new PosArray;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.buffer=new VertexBuffer(r,a),this.vao=new VertexArrayObject};RenderTexture.prototype.bindWithDepth=function(e){var r=this.gl;r.bindFramebuffer(r.FRAMEBUFFER,this.fbo),this.attachedRbo!==e&&(r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,e),this.attachedRbo=e)},RenderTexture.prototype.unbind=function(){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,null)},module.exports=RenderTexture;\n},{\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"./vertex_array_object\":84}],83:[function(_dereq_,module,exports){\n\"use strict\";var Texture=function(t,e,i){this.gl=t;var r=e.width,T=e.height;this.size=[r,T],this.format=i,this.texture=t.createTexture(),this.update(e)};Texture.prototype.update=function(t){var e=t.width,i=t.height,r=t.data;this.size=[e,i];var T=this,E=T.gl;E.bindTexture(E.TEXTURE_2D,this.texture),E.pixelStorei(E.UNPACK_ALIGNMENT,1),this.format===E.RGBA&&E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),E.texImage2D(E.TEXTURE_2D,0,this.format,e,i,0,this.format,E.UNSIGNED_BYTE,r)},Texture.prototype.bind=function(t,e){var i=this,r=i.gl;r.bindTexture(r.TEXTURE_2D,this.texture),t!==this.filter&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,t),this.filter=t),e!==this.wrap&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,e),this.wrap=e)},Texture.prototype.destroy=function(){this.gl.deleteTexture(this.texture),this.texture=null},module.exports=Texture;\n},{}],84:[function(_dereq_,module,exports){\n\"use strict\";var VertexArrayObject=function(){this.boundProgram=null,this.boundVertexBuffer=null,this.boundVertexBuffer2=null,this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};VertexArrayObject.prototype.bind=function(e,t,r,i,n,s,u){void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\"));var b=!this.vao||this.boundProgram!==t||this.boundVertexBuffer!==r||this.boundVertexBuffer2!==n||this.boundIndexBuffer!==i||this.boundVertexOffset!==s||this.boundDynamicVertexBuffer!==u;!e.extVertexArrayObject||b?(this.freshBind(e,t,r,i,n,s,u),this.gl=e):(e.extVertexArrayObject.bindVertexArrayOES(this.vao),u&&u.bind())},VertexArrayObject.prototype.freshBind=function(e,t,r,i,n,s,u){var b,o=t.numAttributes;if(e.extVertexArrayObject)this.vao&&this.destroy(),this.vao=e.extVertexArrayObject.createVertexArrayOES(),e.extVertexArrayObject.bindVertexArrayOES(this.vao),b=0,this.boundProgram=t,this.boundVertexBuffer=r,this.boundVertexBuffer2=n,this.boundIndexBuffer=i,this.boundVertexOffset=s,this.boundDynamicVertexBuffer=u;else{b=e.currentNumAttributes||0;for(var x=o;x<b;x++)e.disableVertexAttribArray(x)}r.enableAttributes(e,t),n&&n.enableAttributes(e,t),u&&u.enableAttributes(e,t),r.bind(),r.setVertexAttribPointers(e,t,s),n&&(n.bind(),n.setVertexAttribPointers(e,t,s)),u&&(u.bind(),u.setVertexAttribPointers(e,t,s)),i&&i.bind(),e.currentNumAttributes=o},VertexArrayObject.prototype.destroy=function(){this.vao&&(this.gl.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)},module.exports=VertexArrayObject;\n},{}],85:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");exports.packUint8ToFloat=function(t,l){return t=util.clamp(Math.floor(t),0,255),l=util.clamp(Math.floor(l),0,255),256*t+l};\n},{\"../util/util\":223}],86:[function(_dereq_,module,exports){\n\"use strict\";var shaders={prelude:{fragmentSource:\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\",vertexSource:\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\\n// Unpack a pair of values that have been packed into a single float.\\n// The packed values are assumed to be 8-bit unsigned integers, and are\\n// packed like so:\\n// packedValue = floor(input[0]) * 256 + input[1],\\nvec2 unpack_float(const float packedValue) {\\n int packedIntValue = int(packedValue);\\n int v0 = packedIntValue / 256;\\n return vec2(v0, packedIntValue - v0 * 256);\\n}\\n\\n\\n// To minimize the number of attributes needed, we encode a 4-component\\n// color into a pair of floats (i.e. a vec2) as follows:\\n// [ floor(color.r * 255) * 256 + color.g * 255,\\n// floor(color.b * 255) * 256 + color.g * 255 ]\\nvec4 decode_color(const vec2 encodedColor) {\\n return vec4(\\n unpack_float(encodedColor[0]) / 255.0,\\n unpack_float(encodedColor[1]) / 255.0\\n );\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nfloat unpack_mix_vec2(const vec2 packedValue, const float t) {\\n return mix(packedValue[0], packedValue[1], t);\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nvec4 unpack_mix_vec4(const vec4 packedColors, const float t) {\\n vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));\\n vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));\\n return mix(minColor, maxColor, t);\\n}\\n\\n// The offset depends on how many pixels are between the world origin and the edge of the tile:\\n// vec2 offset = mod(pixel_coord, size)\\n//\\n// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.\\n// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.\\n//\\n// The pixel_coord is passed in as two 16 bit values:\\n// pixel_coord_upper = floor(pixel_coord / 2^16)\\n// pixel_coord_lower = mod(pixel_coord, 2^16)\\n//\\n// The offset is calculated in a series of steps that should preserve this precision:\\nvec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,\\n const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {\\n\\n vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);\\n return (tile_units_to_pixels * pos + offset) / pattern_size;\\n}\\n\"},circle:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n vec2 extrude = v_data.xy;\\n float extrude_length = length(extrude);\\n\\n lowp float antialiasblur = v_data.z;\\n float antialiased_blur = -max(blur, antialiasblur);\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);\\n\\n float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n extrude_length - radius / (radius + stroke_width)\\n );\\n\\n gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform bool u_scale_with_map;\\nuniform bool u_pitch_with_map;\\nuniform vec2 u_extrude_scale;\\nuniform highp float u_camera_to_center_distance;\\n\\nattribute vec2 a_pos;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main(void) {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n // unencode the extrusion vector that we snuck into the a_pos vector\\n vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\\n\\n // multiply a_pos by 0.5, since we had it * 2 in order to sneak\\n // in extrusion data\\n vec2 circle_center = floor(a_pos * 0.5);\\n if (u_pitch_with_map) {\\n vec2 corner_position = circle_center;\\n if (u_scale_with_map) {\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale;\\n } else {\\n // Pitching the circle with the map effectively scales it with the map\\n // To counteract the effect for pitch-scale: viewport, we rescale the\\n // whole circle based on the pitch scaling effect at its central point\\n vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);\\n }\\n\\n gl_Position = u_matrix * vec4(corner_position, 0, 1);\\n } else {\\n gl_Position = u_matrix * vec4(circle_center, 0, 1);\\n\\n if (u_scale_with_map) {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;\\n } else {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;\\n }\\n }\\n\\n // This is a minimum blur distance that serves as a faux-antialiasing for\\n // the circle. since blur is a ratio of the circle's size and the intent is\\n // to keep the blur at roughly 1px, the two are inversely related.\\n lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);\\n\\n v_data = vec3(extrude.x, extrude.y, antialiasblur);\\n}\\n\"},collisionBox:{fragmentSource:\"uniform float u_zoom;\\n// u_maxzoom is derived from the maximum scale considered by the CollisionTile\\n// Labels with placement zoom greater than this value will not be placed,\\n// regardless of perspective effects.\\nuniform float u_maxzoom;\\nuniform sampler2D u_fadetexture;\\n\\n// v_max_zoom is a collision-box-specific value that controls when line-following\\n// collision boxes are used.\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n\\n float alpha = 0.5;\\n\\n // Green = no collisions, label is showing\\n gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0) * alpha;\\n\\n // Red = collision, label hidden\\n if (texture2D(u_fadetexture, v_fade_tex).a < 1.0) {\\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\\n }\\n\\n // Faded black = this collision box is not used at this zoom (for curved labels)\\n if (u_zoom >= v_max_zoom + v_perspective_zoom_adjust) {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\\n }\\n\\n // Faded blue = the placement scale for this label is beyond the CollisionTile\\n // max scale, so it's impossible for this label to show without collision detection\\n // being run again (the label's glyphs haven't even been added to the symbol bucket)\\n if (v_placement_zoom >= u_maxzoom) {\\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\\n }\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\nattribute vec2 a_anchor_pos;\\nattribute vec2 a_extrude;\\nattribute vec2 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform float u_scale;\\nuniform float u_pitch;\\nuniform float u_collision_y_stretch;\\nuniform float u_camera_to_center_distance;\\n\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n highp float collision_perspective_ratio = 1.0 + 0.5 * ((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n gl_Position = u_matrix * vec4(a_pos + a_extrude * collision_perspective_ratio * collision_adjustment / u_scale, 0.0, 1.0);\\n\\n v_max_zoom = a_data.x;\\n v_placement_zoom = a_data.y;\\n\\n v_perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((v_placement_zoom + v_perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},debug:{fragmentSource:\"uniform highp vec4 u_color;\\n\\nvoid main() {\\n gl_FragColor = u_color;\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n gl_Position = u_matrix * vec4(a_pos, step(8192.0, a_pos.x), 1);\\n}\\n\"},fill:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_FragColor = color * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},fillOutline:{fragmentSource:\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n gl_FragColor = outline_color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_world;\\n\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillOutlinePattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n // find distance to outline for alpha interpolation\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n\\n\\n gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n gl_FragColor = mix(color1, color2, u_mix) * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n}\\n\"},fillExtrusion:{fragmentSource:\"varying vec4 v_color;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n gl_FragColor = v_color;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec4 v_color;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float ed = a_edgedistance; // use each attrib in order to not trip a VAO assert\\n float t = mod(a_normal.x, 2.0);\\n\\n gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);\\n\\n // Relative luminance (how dark/bright is the surface color?)\\n float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\\n\\n v_color = vec4(0.0, 0.0, 0.0, 1.0);\\n\\n // Add slight ambient lighting so no extrusions are totally black\\n vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\\n color += ambientlight;\\n\\n // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\\n float directional = clamp(dot(a_normal / 16384.0, u_lightpos), 0.0, 1.0);\\n\\n // Adjust directional so that\\n // the range of values for highlight/shading is narrower\\n // with lower light intensity\\n // and with lighter/brighter surface colors\\n directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\\n\\n // Add gradient along z axis of side surfaces\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n // Assign final color based on surface + ambient light color, diffuse light directional, and light color\\n // with lower bounds adjusted to hue of light\\n // so that shading is tinted with the complementary (opposite) color to the light color\\n v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\\n v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\\n v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\\n}\\n\"},fillExtrusionPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n vec4 mixedColor = mix(color1, color2, u_mix);\\n\\n gl_FragColor = mixedColor * v_lighting;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\nuniform float u_height_factor;\\n\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\nvarying float v_directional;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float t = mod(a_normal.x, 2.0);\\n float z = t > 0.0 ? height : base;\\n\\n gl_Position = u_matrix * vec4(a_pos, z, 1);\\n\\n vec2 pos = a_normal.x == 1.0 && a_normal.y == 0.0 && a_normal.z == 16384.0\\n ? a_pos // extrusion top\\n : vec2(a_edgedistance, z * u_height_factor); // extrusion side\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, pos);\\n\\n v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\\n float directional = clamp(dot(a_normal / 16383.0, u_lightpos), 0.0, 1.0);\\n directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\\n\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\\n}\\n\"},extrusionTexture:{fragmentSource:\"uniform sampler2D u_image;\\nuniform float u_opacity;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(0.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nattribute vec2 a_pos;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\\n\\n v_pos.x = a_pos.x;\\n v_pos.y = 1.0 - a_pos.y;\\n}\\n\"},line:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_width2;\\nvarying vec2 v_normal;\\nvarying float v_gamma_scale;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\n// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},linePattern:{fragmentSource:\"uniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_fade;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\\n float y_a = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_a.y);\\n float y_b = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_b.y);\\n vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a));\\n vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b));\\n\\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\\n\\n gl_FragColor = color * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_linesofar = a_linesofar;\\n v_width2 = vec2(outset, inset);\\n}\\n\"},lineSDF:{\nfragmentSource:\"\\nuniform sampler2D u_image;\\nuniform float u_sdfgamma;\\nuniform float u_mix;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\\n alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_patternscale_a;\\nuniform float u_tex_y_a;\\nuniform vec2 u_patternscale_b;\\nuniform float u_tex_y_b;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist =outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);\\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},raster:{fragmentSource:\"uniform float u_fade_t;\\nuniform float u_opacity;\\nuniform sampler2D u_image0;\\nuniform sampler2D u_image1;\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nuniform float u_brightness_low;\\nuniform float u_brightness_high;\\n\\nuniform float u_saturation_factor;\\nuniform float u_contrast_factor;\\nuniform vec3 u_spin_weights;\\n\\nvoid main() {\\n\\n // read and cross-fade colors from the main and parent tiles\\n vec4 color0 = texture2D(u_image0, v_pos0);\\n vec4 color1 = texture2D(u_image1, v_pos1);\\n if (color0.a > 0.0) {\\n color0.rgb = color0.rgb / color0.a;\\n }\\n if (color1.a > 0.0) {\\n color1.rgb = color1.rgb / color1.a;\\n }\\n vec4 color = mix(color0, color1, u_fade_t);\\n color.a *= u_opacity;\\n vec3 rgb = color.rgb;\\n\\n // spin\\n rgb = vec3(\\n dot(rgb, u_spin_weights.xyz),\\n dot(rgb, u_spin_weights.zxy),\\n dot(rgb, u_spin_weights.yzx));\\n\\n // saturation\\n float average = (color.r + color.g + color.b) / 3.0;\\n rgb += (average - rgb) * u_saturation_factor;\\n\\n // contrast\\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\\n\\n // brightness\\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\\n\\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_tl_parent;\\nuniform float u_scale_parent;\\nuniform float u_buffer_scale;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;\\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\\n}\\n\"},symbolIcon:{fragmentSource:\"uniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * opacity;\\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_collision_y_stretch;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n\\n float size;\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // See comments in symbol_sdf.vertex\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // See comments in symbol_sdf.vertex\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n\\n v_tex = a_tex / u_texsize;\\n // See comments in symbol_sdf.vertex\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},symbolSDF:{fragmentSource:\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\n\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\nuniform highp float u_gamma_scale;\\nuniform bool u_is_text;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 tex = v_data0.xy;\\n vec2 fade_tex = v_data0.zw;\\n float gamma_scale = v_data1.x;\\n float size = v_data1.y;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n lowp vec4 color = fill_color;\\n highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);\\n lowp float buff = (256.0 - 64.0) / 256.0;\\n if (u_is_halo) {\\n color = halo_color;\\n gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);\\n buff = (6.0 - halo_width / fontScale) / SDF_PX;\\n }\\n\\n lowp float dist = texture2D(u_texture, tex).a;\\n lowp float fade_alpha = texture2D(u_fadetexture, fade_tex).a;\\n highp float gamma_scaled = gamma * gamma_scale;\\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist) * fade_alpha;\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\n// contents of a_size vary based on the type of property value\\n// used for {text,icon}-size.\\n// For constants, a_size is disabled.\\n// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.\\n// For composite functions:\\n// [ text-size(lowerZoomStop, feature),\\n// text-size(upperZoomStop, feature) ]\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\n\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_collision_y_stretch;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n float size;\\n\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // If the label is pitched with the map, layout is done in pitched space,\\n // which makes labels in the distance smaller relative to viewport space.\\n // We counteract part of that effect by multiplying by the perspective ratio.\\n // If the label isn't pitched with the map, we do layout in viewport space,\\n // which makes labels in the distance larger relative to the features around\\n // them. We counteract part of that effect by dividing by the perspective ratio.\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units\\n // To figure out that angle in projected space, we draw a short horizontal line in tile\\n // space, project it, and measure its angle in projected space.\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n float gamma_scale = gl_Position.w;\\n\\n vec2 tex = a_tex / u_texsize;\\n // incidence_stretch is the ratio of how much y space a label takes up on a tile while drawn perpendicular to the viewport vs\\n // how much space it would take up if it were drawn flat on the tile\\n // Using law of sines, camera_to_anchor/sin(ground_angle) = camera_to_center/sin(incidence_angle)\\n // sin(incidence_angle) = 1/incidence_stretch\\n // Incidence angle 90 -> head on, sin(incidence_angle) = 1, no incidence stretch\\n // Incidence angle 1 -> very oblique, sin(incidence_angle) =~ 0, lots of incidence stretch\\n // ground_angle = u_pitch + PI/2 -> sin(ground_angle) = cos(u_pitch)\\n // This 2D calculation is only exactly correct when gl_Position.x is in the center of the viewport,\\n // but it's a close enough approximation for our purposes\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n // incidence_stretch only applies to the y-axis, but without re-calculating the collision tile, we can't\\n // adjust the size of only one axis. So, we do a crude approximation at placement time to get the aspect ratio\\n // about right, and then do the rest of the adjustment here: there will be some extra padding on the x-axis,\\n // but hopefully not too much.\\n // Never make the adjustment less than 1.0: instead of allowing collisions on the x-axis, be conservative on\\n // the y-axis.\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n // Floor to 1/10th zoom to dodge precision issues that can cause partially hidden labels\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n vec2 fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n\\n v_data0 = vec4(tex.x, tex.y, fade_tex.x, fade_tex.y);\\n v_data1 = vec2(gamma_scale, size);\\n}\\n\"}},re=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,loop=function(e){var n=shaders[e],a={};n.fragmentSource=n.fragmentSource.replace(re,function(e,n,o,t,i){return a[i]=!0,\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"}),n.vertexSource=n.vertexSource.replace(re,function(e,n,o,t,i){var r=\"float\"===t?\"vec2\":\"vec4\";return a[i]?\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\":\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"})};for(var programName in shaders)loop(programName);module.exports=shaders;\n},{}],87:[function(_dereq_,module,exports){\n\"use strict\";var ImageSource=_dereq_(\"./image_source\"),window=_dereq_(\"../util/window\"),CanvasSource=function(t){function i(i,a,e,s){t.call(this,i,a,e,s),this.options=a,this.animate=void 0===a.animate||a.animate}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.load=function(){this.canvas=this.canvas||window.document.getElementById(this.options.canvas);var t=this.canvas.getContext(this.options.contextType);if(!t)return this.fire(\"error\",new Error(\"Canvas context not found.\"));if(this.context=t,this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions())return this.fire(\"error\",new Error(\"Canvas dimensions cannot be less than or equal to zero.\"));var i;this.play=function(){void 0===i&&(i=this.map.style.animationLoop.set(1/0),this.map._rerender())},this.pause=function(){void 0!==i&&(i=this.map.style.animationLoop.cancel(i))},this._finishLoading()},i.prototype.getCanvas=function(){return this.canvas},i.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},i.prototype.onRemove=function(){this.pause()},i.prototype.readCanvas=function(t){var i=this;if(this.context instanceof CanvasRenderingContext2D)this.canvasData=this.context.getImageData(0,0,this.width,this.height);else if(this.context instanceof WebGLRenderingContext){var a=this.context,e=new Uint8Array(this.width*this.height*4);a.readPixels(0,0,this.width,this.height,a.RGBA,a.UNSIGNED_BYTE,e),this.secondaryContext||(this.secondaryContext=window.document.createElement(\"canvas\").getContext(\"2d\")),this.canvasData&&!t||(this.canvasData=this.secondaryContext.createImageData(this.width,this.height));for(var s=this.height-1,n=0;s>=0;s--,n++)i.canvasData.data.set(e.subarray(s*i.width*4,(s+1)*i.width*4),n*i.width*4)}},i.prototype.prepare=function(){var t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){if((this.animate||!this.canvasData||t)&&this.readCanvas(t),!this.canvasData)return void this.fire(\"error\",new Error(\"Could not read canvas data.\"));this._prepareImage(this.map.painter.gl,this.canvasData,t)}},i.prototype.serialize=function(){return{type:\"canvas\",canvas:this.canvas,coordinates:this.coordinates}},i.prototype._hasInvalidDimensions=function(){for(var t=this,i=0,a=[t.canvas.width,t.canvas.height];i<a.length;i+=1){var e=a[i];if(isNaN(e)||e<=0)return!0}return!1},i}(ImageSource);module.exports=CanvasSource;\n},{\"../util/window\":204,\"./image_source\":91}],88:[function(_dereq_,module,exports){\n\"use strict\";function resolveURL(t){var e=window.document.createElement(\"a\");return e.href=t,e.href}var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),EXTENT=_dereq_(\"../data/extent\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),GeoJSONSource=function(t){function e(e,o,r,i){t.call(this),this.id=e,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this.dispatcher=r,this.setEventedParent(i),this._data=o.data,this._options=util.extend({},o),void 0!==o.maxzoom&&(this.maxzoom=o.maxzoom),o.type&&(this.type=o.type);var a=EXTENT/this.tileSize;this.workerOptions=util.extend({source:this.id,cluster:o.cluster||!1,geojsonVtOptions:{buffer:(void 0!==o.buffer?o.buffer:128)*a,tolerance:(void 0!==o.tolerance?o.tolerance:.375)*a,extent:EXTENT,maxZoom:this.maxzoom},superclusterOptions:{maxZoom:void 0!==o.clusterMaxZoom?Math.min(o.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:EXTENT,radius:(o.clusterRadius||50)*a,log:!1}},o.workerOptions)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(e){if(e)return void t.fire(\"error\",{error:e});t.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})})},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.setData=function(t){var e=this;return this._data=t,this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(t){if(t)return e.fire(\"error\",{error:t});e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"})}),this},e.prototype._updateWorkerData=function(t){var e=this,o=util.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?o.request=this.map._transformRequest(resolveURL(r),ResourceType.Source):o.data=JSON.stringify(r),this.workerID=this.dispatcher.send(this.type+\".loadData\",o,function(o){e._loaded=!0,t(o)},this.workerID)},e.prototype.loadTile=function(t,e){var o=this,r=t.workerID&&\"expired\"!==t.state?\"reloadTile\":\"loadTile\",i={type:this.type,uid:t.uid,coord:t.coord,zoom:t.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:t.coord.z>this.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(t),showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send(r,i,function(r,i){if(t.unloadVectorData(),!t.aborted)return r?e(r):(t.loadVectorData(i,o.map.painter),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(o)),e(null))},this.workerID)},e.prototype.abortTile=function(t){t.aborted=!0},e.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},function(){},t.workerID)},e.prototype.onRemove=function(){this.dispatcher.broadcast(\"removeSource\",{type:this.type,source:this.id},function(){})},e.prototype.serialize=function(){return util.extend({},this._options,{type:this.type,data:this._data})},e}(Evented);module.exports=GeoJSONSource;\n},{\"../data/extent\":48,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204}],89:[function(_dereq_,module,exports){\n\"use strict\";function loadGeoJSONTile(e,r){var t=e.source,o=e.coord;if(!this._geoJSONIndexes[t])return r(null,null);var n=this._geoJSONIndexes[t].getTile(Math.min(o.z,e.maxZoom),o.x,o.y);if(!n)return r(null,null);var u=new GeoJSONWrapper(n.features),i=vtpbf(u);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),r(null,{vectorTile:u,rawData:i.buffer})}var ajax=_dereq_(\"../util/ajax\"),rewind=_dereq_(\"geojson-rewind\"),GeoJSONWrapper=_dereq_(\"./geojson_wrapper\"),vtpbf=_dereq_(\"vt-pbf\"),supercluster=_dereq_(\"supercluster\"),geojsonvt=_dereq_(\"geojson-vt\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=function(e){function r(r,t,o){e.call(this,r,t,loadGeoJSONTile),o&&(this.loadGeoJSON=o),this._geoJSONIndexes={}}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,r){var t=this;this.loadGeoJSON(e,function(o,n){if(o||!n)return r(o);if(\"object\"!=typeof n)return r(new Error(\"Input data is not a valid GeoJSON object.\"));rewind(n,!0);try{t._geoJSONIndexes[e.source]=e.cluster?supercluster(e.superclusterOptions).load(n.features):geojsonvt(n,e.geojsonVtOptions)}catch(o){return r(o)}t.loaded[e.source]={},r(null)})},r.prototype.reloadTile=function(r,t){var o=this.loaded[r.source],n=r.uid;return o&&o[n]?e.prototype.reloadTile.call(this,r,t):this.loadTile(r,t)},r.prototype.loadGeoJSON=function(e,r){if(e.request)ajax.getJSON(e.request,r);else{if(\"string\"!=typeof e.data)return r(new Error(\"Input data is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(e.data))}catch(e){return r(new Error(\"Input data is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(e){this._geoJSONIndexes[e.source]&&delete this._geoJSONIndexes[e.source]},r}(VectorTileWorkerSource);module.exports=GeoJSONWorkerSource;\n},{\"../util/ajax\":201,\"./geojson_wrapper\":90,\"./vector_tile_worker_source\":103,\"geojson-rewind\":13,\"geojson-vt\":17,\"supercluster\":32,\"vt-pbf\":37}],90:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),toGeoJSON=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.prototype.toGeoJSON,EXTENT=_dereq_(\"../data/extent\"),FeatureWrapper=function(e){this._feature=e,this.extent=EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};FeatureWrapper.prototype.loadGeometry=function(){var e=this;if(1===this._feature.type){for(var t=[],r=0,o=e._feature.geometry;r<o.length;r+=1){var a=o[r];t.push([new Point(a[0],a[1])])}return t}for(var i=[],p=0,n=e._feature.geometry;p<n.length;p+=1){for(var s=n[p],u=[],h=0,f=s;h<f.length;h+=1){var l=f[h];u.push(new Point(l[0],l[1]))}i.push(u)}return i},FeatureWrapper.prototype.toGeoJSON=function(e,t,r){return toGeoJSON.call(this,e,t,r)};var GeoJSONWrapper=function(e){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=EXTENT,this.length=e.length,this._features=e};GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this._features[e])},module.exports=GeoJSONWrapper;\n},{\"../data/extent\":48,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],91:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),TileCoord=_dereq_(\"./tile_coord\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),EXTENT=_dereq_(\"../data/extent\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"../render/vertex_array_object\"),ImageSource=function(e){function t(t,r,o,i){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(i),this.options=r,this.textureLoaded=!1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),this.url=this.options.url,ajax.getImage(this.map._transformRequest(this.url,ajax.ResourceType.Image),function(t,r){t?e.fire(\"error\",{error:t}):r&&(e.image=browser.getImageData(r),e._finishLoading())})},t.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}))},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.setCoordinates=function(e){this.coordinates=e;var t=this.map,r=e.map(function(e){return t.transform.locationCoordinate(LngLat.convert(e)).zoomTo(0)}),o=this.centerCoord=util.getCoordinatesCenter(r);o.column=Math.floor(o.column),o.row=Math.floor(o.row),this.coord=new TileCoord(o.zoom,o.column,o.row),this.minzoom=this.maxzoom=o.zoom;var i=r.map(function(e){var t=e.zoomTo(o.zoom);return new Point(Math.round((t.column-o.column)*EXTENT),Math.round((t.row-o.row)*EXTENT))});return this._boundsArray=new RasterBoundsArray,this._boundsArray.emplaceBack(i[0].x,i[0].y,0,0),this._boundsArray.emplaceBack(i[1].x,i[1].y,EXTENT,0),this._boundsArray.emplaceBack(i[3].x,i[3].y,0,EXTENT),this._boundsArray.emplaceBack(i[2].x,i[2].y,EXTENT,EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}),this},t.prototype.prepare=function(){0!==Object.keys(this.tiles).length&&this.image&&this._prepareImage(this.map.painter.gl,this.image)},t.prototype._prepareImage=function(e,t,r){var o=this;this.boundsBuffer||(this.boundsBuffer=new VertexBuffer(e,this._boundsArray)),this.boundsVAO||(this.boundsVAO=new VertexArrayObject),this.textureLoaded?r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t):(t instanceof window.HTMLVideoElement||t instanceof window.ImageData)&&(e.bindTexture(e.TEXTURE_2D,this.texture),e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,t)):(this.textureLoaded=!0,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t));for(var i in o.tiles){var a=o.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=o.texture)}},t.prototype.loadTile=function(e,t){this.coord&&this.coord.toString()===e.coord.toString()?(this.tiles[String(e.coord.w)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null))},t.prototype.serialize=function(){return{type:\"image\",url:this.options.url,coordinates:this.coordinates}},t}(Evented);module.exports=ImageSource;\n},{\"../data/extent\":48,\"../data/raster_bounds_array\":54,\"../geo/lng_lat\":58,\"../gl/vertex_buffer\":62,\"../render/vertex_array_object\":84,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],92:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeSourceURL;module.exports=function(r,e,o){var u=function(r,e){if(r)return o(r);if(e){var u=util.pick(e,[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\"]);e.vector_layers&&(u.vectorLayers=e.vector_layers,u.vectorLayerIds=u.vectorLayers.map(function(r){return r.id})),o(null,u)}};r.url?ajax.getJSON(e(normalizeURL(r.url),ajax.ResourceType.Source),u):browser.frame(function(){return u(null,r)})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/mapbox\":217,\"../util/util\":223}],93:[function(_dereq_,module,exports){\n\"use strict\";var EXTENT=_dereq_(\"../data/extent\");module.exports=function(e,t,r){return t*(EXTENT/(e.tileSize*Math.pow(2,r-e.coord.z)))};\n},{\"../data/extent\":48}],94:[function(_dereq_,module,exports){\n\"use strict\";function sortTilesIn(e,r){var o=e.coord,t=r.coord;return o.z-t.z||o.y-t.y||o.w-t.w||o.x-t.x}function mergeRenderedFeatureLayers(e){for(var r={},o={},t=0,n=e;t<n.length;t+=1){var u=n[t],a=u.queryResults,d=u.wrappedTileID,s=o[d]=o[d]||{};for(var i in a)for(var l=a[i],c=s[i]=s[i]||{},f=r[i]=r[i]||[],v=0,y=l;v<y.length;v+=1){var p=y[v];c[p.featureIndex]||(c[p.featureIndex]=!0,f.push(p.feature))}}return r}var TileCoord=_dereq_(\"./tile_coord\");exports.rendered=function(e,r,o,t,n,u){var a=e.tilesIn(o);a.sort(sortTilesIn);for(var d=[],s=0,i=a;s<i.length;s+=1){var l=i[s];d.push({wrappedTileID:l.coord.wrapped().id,queryResults:l.tile.queryRenderedFeatures(r,l.queryGeometry,l.scale,t,u)})}return mergeRenderedFeatureLayers(d)},exports.source=function(e,r){for(var o=e.getRenderableIds().map(function(r){return e.getTileByID(r)}),t=[],n={},u=0;u<o.length;u++){var a=o[u],d=new TileCoord(Math.min(a.sourceMaxZoom,a.coord.z),a.coord.x,a.coord.y,0).id;n[d]||(n[d]=!0,a.querySourceFeatures(t,r))}return t};\n},{\"./tile_coord\":101}],95:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),RasterTileSource=function(e){function t(t,i,r,o){e.call(this),this.id=t,this.dispatcher=r,this.setEventedParent(o),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=util.extend({},i),util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"]))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.loadTile=function(e,t){var i=this,r=normalizeURL(e.coord.url(this.tiles,null,this.scheme),this.url,this.tileSize);e.request=ajax.getImage(this.map._transformRequest(r,ajax.ResourceType.Tile),function(r,o){if(delete e.request,e.aborted)i.state=\"unloaded\",t(null);else if(r)i.state=\"errored\",t(r);else if(o){i.map._refreshExpiredTiles&&e.setExpiryData(o),delete o.cacheControl,delete o.expires;var a=i.map.painter.gl;e.texture=i.map.painter.getTileTexture(o.width),e.texture?(a.bindTexture(a.TEXTURE_2D,e.texture),a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,o)):(e.texture=a.createTexture(),a.bindTexture(a.TEXTURE_2D,e.texture),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),i.map.painter.extTextureFilterAnisotropic&&a.texParameterf(a.TEXTURE_2D,i.map.painter.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.map.painter.extTextureFilterAnisotropicMax),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,o),e.texture.size=o.width),a.generateMipmap(a.TEXTURE_2D),e.state=\"loaded\",t(null)}})},t.prototype.abortTile=function(e){e.request&&(e.request.abort(),delete e.request)},t.prototype.unloadTile=function(e){e.texture&&this.map.painter.saveTileTexture(e.texture)},t}(Evented);module.exports=RasterTileSource;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],96:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),window=_dereq_(\"../util/window\"),pluginRequested=!1,pluginBlobURL=null;module.exports.evented=new Evented,module.exports.registerForPluginAvailability=function(e){return pluginBlobURL?e({pluginBlobURL:pluginBlobURL,errorCallback:module.exports.errorCallback}):module.exports.evented.once(\"pluginAvailable\",e),e},module.exports.createBlobURL=function(e){return window.URL.createObjectURL(new window.Blob([e.data],{type:\"text/javascript\"}))},module.exports.clearRTLTextPlugin=function(){pluginRequested=!1,pluginBlobURL=null},module.exports.setRTLTextPlugin=function(e,l){if(pluginRequested)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");pluginRequested=!0,module.exports.errorCallback=l,ajax.getArrayBuffer({url:e},function(e,t){e?l(e):t&&(pluginBlobURL=module.exports.createBlobURL(t),module.exports.evented.fire(\"pluginAvailable\",{pluginBlobURL:pluginBlobURL,errorCallback:l}))})},module.exports.applyArabicShaping=null,module.exports.processBidirectionalText=null;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/window\":204}],97:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),sourceTypes={vector:_dereq_(\"../source/vector_tile_source\"),raster:_dereq_(\"../source/raster_tile_source\"),geojson:_dereq_(\"../source/geojson_source\"),video:_dereq_(\"../source/video_source\"),image:_dereq_(\"../source/image_source\"),canvas:_dereq_(\"../source/canvas_source\")};exports.create=function(e,r,o,u){var s=new sourceTypes[r.type](e,r,o,u);if(s.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+s.id);return util.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],s),s},exports.getType=function(e){return sourceTypes[e]},exports.setType=function(e,r){sourceTypes[e]=r};\n},{\"../source/canvas_source\":87,\"../source/geojson_source\":88,\"../source/image_source\":91,\"../source/raster_tile_source\":95,\"../source/vector_tile_source\":102,\"../source/video_source\":104,\"../util/util\":223}],98:[function(_dereq_,module,exports){\n\"use strict\";function coordinateToTilePoint(e,t,o){var i=o.zoomTo(Math.min(e.z,t));return new Point((i.column-(e.x+e.w*Math.pow(2,e.z)))*EXTENT,(i.row-e.y)*EXTENT)}function compareKeyZoom(e,t){return e%32-t%32}function isRasterType(e){return\"raster\"===e||\"image\"===e||\"video\"===e}var createSource=_dereq_(\"./source\").create,Tile=_dereq_(\"./tile\"),Evented=_dereq_(\"../util/evented\"),TileCoord=_dereq_(\"./tile_coord\"),Cache=_dereq_(\"../util/lru_cache\"),Coordinate=_dereq_(\"../geo/coordinate\"),util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"../data/extent\"),Point=_dereq_(\"@mapbox/point-geometry\"),SourceCache=function(e){function t(t,o,i){var r=this;e.call(this),this.id=t,this.dispatcher=i,this.on(\"data\",function(e){\"source\"===e.dataType&&\"metadata\"===e.sourceDataType&&(r._sourceLoaded=!0),r._sourceLoaded&&!r._paused&&\"source\"===e.dataType&&\"content\"===e.sourceDataType&&(r.reload(),r.transform&&r.update(r.transform))}),this.on(\"error\",function(){r._sourceErrored=!0}),this._source=createSource(t,o,i,this),this._tiles={},this._cache=new Cache(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._isIdRenderable=this._isIdRenderable.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.onAdd=function(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(e)},t.prototype.onRemove=function(e){this._source&&this._source.onRemove&&this._source.onRemove(e)},t.prototype.loaded=function(){var e=this;if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;for(var t in e._tiles){var o=e._tiles[t];if(\"loaded\"!==o.state&&\"errored\"!==o.state)return!1}return!0},t.prototype.getSource=function(){return this._source},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){if(this._paused){var e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}},t.prototype._loadTile=function(e,t){return this._source.loadTile(e,t)},t.prototype._unloadTile=function(e){if(this._source.unloadTile)return this._source.unloadTile(e)},t.prototype._abortTile=function(e){if(this._source.abortTile)return this._source.abortTile(e)},t.prototype.serialize=function(){return this._source.serialize()},t.prototype.prepare=function(e){var t=this;this._source.prepare&&this._source.prepare();for(var o in t._tiles)t._tiles[o].upload(e)},t.prototype.getIds=function(){return Object.keys(this._tiles).map(Number).sort(compareKeyZoom)},t.prototype.getRenderableIds=function(){return this.getIds().filter(this._isIdRenderable)},t.prototype._isIdRenderable=function(e){return this._tiles[e].hasData()&&!this._coveredTiles[e]},t.prototype.reload=function(){var e=this;if(this._paused)return void(this._shouldReloadOnResume=!0);this._cache.reset();for(var t in e._tiles)e._reloadTile(t,\"reloading\")},t.prototype._reloadTile=function(e,t){var o=this._tiles[e];o&&(\"loading\"!==o.state&&(o.state=t),this._loadTile(o,this._tileLoaded.bind(this,o,e,t)))},t.prototype._tileLoaded=function(e,t,o,i){if(i)return e.state=\"errored\",void(404!==i.status?this._source.fire(\"error\",{tile:e,error:i}):this.update(this.transform));e.timeAdded=(new Date).getTime(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),this._source.fire(\"data\",{dataType:\"source\",tile:e,coord:e.coord}),this.map&&(this.map.painter.tileExtentVAO.vao=null)},t.prototype.getTile=function(e){return this.getTileByID(e.id)},t.prototype.getTileByID=function(e){return this._tiles[e]},t.prototype.getZoom=function(e){return e.zoom+e.scaleZoom(e.tileSize/this._source.tileSize)},t.prototype._findLoadedChildren=function(e,t,o){var i=this,r=!1;for(var s in i._tiles){var a=i._tiles[s];if(!(o[s]||!a.hasData()||a.coord.z<=e.z||a.coord.z>t)){var n=Math.pow(2,Math.min(a.coord.z,i._source.maxzoom)-Math.min(e.z,i._source.maxzoom));if(Math.floor(a.coord.x/n)===e.x&&Math.floor(a.coord.y/n)===e.y)for(o[s]=!0,r=!0;a&&a.coord.z-1>e.z;){var d=a.coord.parent(i._source.maxzoom);if(!d)break;a=i._tiles[d.id],a&&a.hasData()&&(delete o[s],o[d.id]=!0)}}}return r},t.prototype.findLoadedParent=function(e,t,o){for(var i=this,r=e.z-1;r>=t;r--){var s=e.parent(i._source.maxzoom);if(!s)return;e=s;var a=String(e.id),n=i._tiles[a];if(n&&n.hasData())return o[a]=!0,n;if(i._cache.has(a))return o[a]=!0,i._cache.getWithoutRemoving(a)}},t.prototype.updateCacheSize=function(e){var t=Math.ceil(e.width/e.tileSize)+1,o=Math.ceil(e.height/e.tileSize)+1,i=t*o,r=Math.floor(5*i),s=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(s)},t.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){this.updateCacheSize(e),this._coveredTiles={};var i;this.used?this._source.coord?i=e.getVisibleWrappedCoordinates(this._source.coord):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(e){return o._source.hasTile(e)}))):i=[];var r=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),s=Math.max(r-t.maxOverzooming,this._source.minzoom),a=Math.max(r+t.maxUnderzooming,this._source.minzoom),n=this._updateRetainedTiles(i,r),d={};if(isRasterType(this._source.type))for(var h=Object.keys(n),u=0;u<h.length;u++){var c=h[u],l=TileCoord.fromID(+c),_=o._tiles[c];if(_&&(void 0===_.fadeEndTime||_.fadeEndTime>=Date.now())){o._findLoadedChildren(l,a,n)&&(n[c]=!0);var m=o.findLoadedParent(l,s,d);m&&o._addTile(m.coord)}}var p;for(p in d)n[p]||(o._coveredTiles[p]=!0);for(p in d)n[p]=!0;for(var f=util.keysDifference(this._tiles,n),T=0;T<f.length;T++)o._removeTile(f[T])}},t.prototype._updateRetainedTiles=function(e,o){var i,r,s,a,n=this,d={},h={},u=Math.max(o-t.maxOverzooming,this._source.minzoom);for(i=0;i<e.length;i++){r=e[i],s=n._addTile(r);var c=!1;if(s.hasData())d[r.id]=!0;else{c=s.wasRequested(),d[r.id]=!0,a=!0;if(o+1>n._source.maxzoom){var l=r.children(n._source.maxzoom)[0],_=n.getTile(l);_&&_.hasData()?d[l.id]=!0:a=!1}else for(var m=r.children(n._source.maxzoom),p=0;p<m.length;p++){var f=m[p],T=f?n.getTile(f):null;T&&T.hasData()?d[f.id]=!0:a=!1}if(!a)for(var v=o-1;v>=u;--v){var y=r.scaledTo(v,n._source.maxzoom);if(h[y.id])break;if(h[y.id]=!0,s=n.getTile(y),!s&&c&&(s=n._addTile(y)),s&&(d[y.id]=!0,c=s.wasRequested(),s.hasData()))break}}}return d},t.prototype._addTile=function(e){var t=this._tiles[e.id];if(t)return t;(t=this._cache.get(e.id))&&(t.redoPlacement(this._source),this._cacheTimers[e.id]&&(clearTimeout(this._cacheTimers[e.id]),delete this._cacheTimers[e.id],this._setTileReloadTimer(e.id,t)));var o=Boolean(t);if(!o){var i=e.z,r=i>this._source.maxzoom?Math.pow(2,i-this._source.maxzoom):1;t=new Tile(e,this._source.tileSize*r,this._source.maxzoom),this._loadTile(t,this._tileLoaded.bind(this,t,e.id,t.state))}return t?(t.uses++,this._tiles[e.id]=t,o||this._source.fire(\"dataloading\",{tile:t,coord:t.coord,dataType:\"source\"}),t):null},t.prototype._setTileReloadTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout(function(){o._reloadTile(e,\"expired\"),delete o._timers[e]},i))},t.prototype._setCacheInvalidationTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._cacheTimers[e]=setTimeout(function(){o._cache.remove(e),delete o._cacheTimers[e]},i))},t.prototype._removeTile=function(e){var t=this._tiles[e];if(t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),!(t.uses>0)))if(t.stopPlacementThrottler(),t.hasData()){var o=t.coord.wrapped().id;this._cache.add(o,t),this._setCacheInvalidationTimer(o,t)}else t.aborted=!0,this._abortTile(t),this._unloadTile(t)},t.prototype.clearTiles=function(){var e=this;this._shouldReloadOnResume=!1,this._paused=!1;for(var t in e._tiles)e._removeTile(t);this._cache.reset()},t.prototype.tilesIn=function(e){for(var t=this,o=[],i=this.getIds(),r=1/0,s=1/0,a=-1/0,n=-1/0,d=e[0].zoom,h=0;h<e.length;h++){var u=e[h];r=Math.min(r,u.column),s=Math.min(s,u.row),a=Math.max(a,u.column),n=Math.max(n,u.row)}for(var c=0;c<i.length;c++){var l=t._tiles[i[c]],_=TileCoord.fromID(i[c]),m=[coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(r,s,d)),coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(a,n,d))];if(m[0].x<EXTENT&&m[0].y<EXTENT&&m[1].x>=0&&m[1].y>=0){for(var p=[],f=0;f<e.length;f++)p.push(coordinateToTilePoint(_,l.sourceMaxZoom,e[f]));o.push({tile:l,coord:_,queryGeometry:[p],scale:Math.pow(2,t.transform.zoom-l.coord.z)})}}return o},t.prototype.redoPlacement=function(){for(var e=this,t=this.getIds(),o=0;o<t.length;o++){e.getTileByID(t[o]).redoPlacement(e._source)}},t.prototype.getVisibleCoordinates=function(){for(var e=this,t=this.getRenderableIds().map(TileCoord.fromID),o=0,i=t;o<i.length;o+=1){var r=i[o];r.posMatrix=e.transform.calculatePosMatrix(r,e._source.maxzoom)}return t},t}(Evented);SourceCache.maxOverzooming=10,SourceCache.maxUnderzooming=3,module.exports=SourceCache;\n},{\"../data/extent\":48,\"../geo/coordinate\":57,\"../util/evented\":210,\"../util/lru_cache\":216,\"../util/util\":223,\"./source\":97,\"./tile\":99,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],99:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),deserializeBucket=_dereq_(\"../data/bucket\").deserialize,SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),FeatureIndex=_dereq_(\"../data/feature_index\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),Throttler=_dereq_(\"../util/throttler\"),Texture=_dereq_(\"../render/texture\"),CLOCK_SKEW_RETRY_TIMEOUT=3e4,Tile=function(e,t,i){this.coord=e,this.uid=util.uniqueId(),this.uses=0,this.tileSize=t,this.sourceMaxZoom=i,this.buckets={},this.expirationTime=null,this.expiredRequestCount=0,this.state=\"loading\",this.placementThrottler=new Throttler(300,this._immediateRedoPlacement.bind(this))};Tile.prototype.registerFadeDuration=function(e,t){var i=t+this.timeAdded;i<Date.now()||this.fadeEndTime&&i<this.fadeEndTime||(this.fadeEndTime=i,e.set(this.fadeEndTime-Date.now()))},Tile.prototype.wasRequested=function(){return\"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},Tile.prototype.loadVectorData=function(e,t){this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e&&(e.rawTileData&&(this.rawTileData=e.rawTileData),this.collisionBoxArray=new CollisionBoxArray(e.collisionBoxArray),this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex=FeatureIndex.deserialize(e.featureIndex,this.rawTileData,this.collisionTile),this.buckets=deserializeBucket(e.buckets,t.style),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage))},Tile.prototype.reloadSymbolData=function(e,t){var i=this;if(\"unloaded\"!==this.state){this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex&&this.featureIndex.setCollisionTile(this.collisionTile);for(var a in i.buckets){var s=i.buckets[a];s instanceof SymbolBucket&&(s.destroy(),delete i.buckets[a])}util.extend(this.buckets,deserializeBucket(e.buckets,t)),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage)}},Tile.prototype.unloadVectorData=function(){var e=this;for(var t in e.buckets)e.buckets[t].destroy();this.buckets={},this.iconAtlasTexture&&this.iconAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.collisionBoxArray=null,this.collisionTile=null,this.featureIndex=null,this.state=\"unloaded\"},Tile.prototype.redoPlacement=function(e){if(\"vector\"===e.type||\"geojson\"===e.type){if(\"loaded\"!==this.state)return void(this.redoWhenDone=!0);if(this.collisionTile){var t=e.map.transform.cameraToTileDistance(this);if(this.angle===e.map.transform.angle&&this.pitch===e.map.transform.pitch&&this.showCollisionBoxes===e.map.showCollisionBoxes){if(this.cameraToTileDistance===t&&this.cameraToCenterDistance===e.map.transform.cameraToCenterDistance)return;if(this.pitch<25)return this.cameraToTileDistance=t,void(this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance)}this.angle=e.map.transform.angle,this.pitch=e.map.transform.pitch,this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance,this.cameraToTileDistance=t,this.showCollisionBoxes=e.map.showCollisionBoxes,this.placementSource=e,this.state=\"reloading\",this.placementThrottler.invoke()}}},Tile.prototype._immediateRedoPlacement=function(){var e=this;this.placementSource.dispatcher.send(\"redoPlacement\",{type:this.placementSource.type,uid:this.uid,source:this.placementSource.id,angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,showCollisionBoxes:this.showCollisionBoxes},function(t,i){\"reloading\"===e.state&&(e.state=\"loaded\",e.reloadSymbolData(i,e.placementSource.map.style),e.placementSource.fire(\"data\",{tile:e,coord:e.coord,dataType:\"source\"}),e.placementSource.map&&(e.placementSource.map.painter.tileExtentVAO.vao=null),e.redoWhenDone&&(e.state=\"reloading\",e.redoWhenDone=!1,e._immediateRedoPlacement()))},this.workerID)},Tile.prototype.getBucket=function(e){return this.buckets[e.id]},Tile.prototype.upload=function(e){var t=this;for(var i in t.buckets){var a=t.buckets[i];a.uploaded||(a.upload(e),a.uploaded=!0)}this.iconAtlasImage&&(this.iconAtlasTexture=new Texture(e,this.iconAtlasImage,e.RGBA),this.iconAtlasImage=null),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Texture(e,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null)},Tile.prototype.queryRenderedFeatures=function(e,t,i,a,s){var o=this;if(!this.featureIndex)return{};var r=0;for(var l in e){var n=o.getBucket(e[l]);n&&(r=Math.max(r,e[l].queryRadius(n)))}return this.featureIndex.query({queryGeometry:t,bearing:s,params:a,scale:i,additionalRadius:r,tileSize:this.tileSize},e)},Tile.prototype.querySourceFeatures=function(e,t){var i=this;if(this.rawTileData){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers);var a=t?t.sourceLayer:\"\",s=this.vtLayers._geojsonTileLayer||this.vtLayers[a];if(s)for(var o=featureFilter(t&&t.filter),r={z:this.coord.z,x:this.coord.x,y:this.coord.y},l=0;l<s.length;l++){var n=s.feature(l);if(o(n)){var h=new GeoJSONFeature(n,i.coord.z,i.coord.x,i.coord.y);h.tile=r,e.push(h)}}}},Tile.prototype.hasData=function(){return\"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},Tile.prototype.setExpiryData=function(e){var t=this.expirationTime;if(e.cacheControl){var i=util.parseCacheControl(e.cacheControl);i[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*i[\"max-age\"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){var a=Date.now(),s=!1;if(this.expirationTime>a)s=!1;else if(t)if(this.expirationTime<t)s=!0;else{var o=this.expirationTime-t;o?this.expirationTime=a+Math.max(o,CLOCK_SKEW_RETRY_TIMEOUT):s=!0}else s=!0;s?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0}},Tile.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},Tile.prototype.stopPlacementThrottler=function(){this.placementThrottler.stop(),\"reloading\"===this.state&&(this.state=\"loaded\")},module.exports=Tile;\n},{\"../data/bucket\":42,\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/texture\":83,\"../style-spec/feature_filter\":110,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/throttler\":221,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"@mapbox/vector-tile\":6,\"pbf\":29}],100:[function(_dereq_,module,exports){\n\"use strict\";var LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),clamp=_dereq_(\"../util/util\").clamp,TileBounds=function(t,n,o){this.bounds=LngLatBounds.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=o||24};TileBounds.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},TileBounds.prototype.contains=function(t,n){var o=n?Math.min(t.z,n):t.z,a={minX:Math.floor(this.lngX(this.bounds.getWest(),o)),minY:Math.floor(this.latY(this.bounds.getNorth(),o)),maxX:Math.ceil(this.lngX(this.bounds.getEast(),o)),maxY:Math.ceil(this.latY(this.bounds.getSouth(),o))};return t.x>=a.minX&&t.x<a.maxX&&t.y>=a.minY&&t.y<a.maxY},TileBounds.prototype.lngX=function(t,n){return(t+180)*(Math.pow(2,n)/360)},TileBounds.prototype.latY=function(t,n){var o=clamp(Math.sin(Math.PI/180*t),-.9999,.9999),a=Math.pow(2,n)/(2*Math.PI);return Math.pow(2,n-1)+.5*Math.log((1+o)/(1-o))*-a},module.exports=TileBounds;\n},{\"../geo/lng_lat_bounds\":59,\"../util/util\":223}],101:[function(_dereq_,module,exports){\n\"use strict\";function edge(t,i){if(t.row>i.row){var o=t;t=i,i=o}return{x0:t.column,y0:t.row,x1:i.column,y1:i.row,dx:i.column-t.column,dy:i.row-t.row}}function scanSpans(t,i,o,r,e){var h=Math.max(o,Math.floor(i.y0)),n=Math.min(r,Math.ceil(i.y1));if(t.x0===i.x0&&t.y0===i.y0?t.x0+i.dy/t.dy*t.dx<i.x1:t.x1-i.dy/t.dy*t.dx<i.x0){var s=t;t=i,i=s}for(var a=t.dx/t.dy,d=i.dx/i.dy,l=t.dx>0,y=i.dx<0,x=h;x<n;x++){var u=a*Math.max(0,Math.min(t.dy,x+l-t.y0))+t.x0,c=d*Math.max(0,Math.min(i.dy,x+y-i.y0))+i.x0;e(Math.floor(c),Math.ceil(u),x)}}function scanTriangle(t,i,o,r,e,h){var n,s=edge(t,i),a=edge(i,o),d=edge(o,t);s.dy>a.dy&&(n=s,s=a,a=n),s.dy>d.dy&&(n=s,s=d,d=n),a.dy>d.dy&&(n=a,a=d,d=n),s.dy&&scanSpans(d,s,r,e,h),a.dy&&scanSpans(d,a,r,e,h)}function getQuadkey(t,i,o){for(var r,e=\"\",h=t;h>0;h--)r=1<<h-1,e+=(i&r?1:0)+(o&r?2:0);return e}var WhooTS=_dereq_(\"@mapbox/whoots-js\"),Coordinate=_dereq_(\"../geo/coordinate\"),TileCoord=function(t,i,o,r){(void 0===r||isNaN(r))&&(r=0),this.z=+t,this.x=+i,this.y=+o,this.w=+r,(r*=2)<0&&(r=-1*r-1);var e=1<<this.z;this.id=32*(e*e*r+e*this.y+this.x)+this.z,this.posMatrix=null};TileCoord.prototype.toString=function(){return this.z+\"/\"+this.x+\"/\"+this.y},TileCoord.prototype.toCoordinate=function(t){var i=Math.min(this.z,void 0===t?this.z:t),o=Math.pow(2,i),r=this.y,e=this.x+o*this.w;return new Coordinate(e,r,i)},TileCoord.prototype.url=function(t,i,o){var r=WhooTS.getTileBBox(this.x,this.y,this.z),e=getQuadkey(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(Math.min(this.z,i||this.z))).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===o?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",e).replace(\"{bbox-epsg-3857}\",r)},TileCoord.prototype.parent=function(t){return 0===this.z?null:this.z>t?new TileCoord(this.z-1,this.x,this.y,this.w):new TileCoord(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)},TileCoord.prototype.wrapped=function(){return new TileCoord(this.z,this.x,this.y,0)},TileCoord.prototype.children=function(t){if(this.z>=t)return[new TileCoord(this.z+1,this.x,this.y,this.w)];var i=this.z+1,o=2*this.x,r=2*this.y;return[new TileCoord(i,o,r,this.w),new TileCoord(i,o+1,r,this.w),new TileCoord(i,o,r+1,this.w),new TileCoord(i,o+1,r+1,this.w)]},TileCoord.prototype.scaledTo=function(t,i){return this.z>i?new TileCoord(t,this.x,this.y,this.w):t<=this.z?new TileCoord(t,this.x>>this.z-t,this.y>>this.z-t,this.w):new TileCoord(t,this.x<<t-this.z,this.y<<t-this.z,this.w)},TileCoord.cover=function(t,i,o,r){function e(t,i,e){var s,a,d,l;if(e>=0&&e<=h)for(s=t;s<i;s++)a=Math.floor(s/h),d=(s%h+h)%h,0!==a&&!0!==r||(l=new TileCoord(o,d,e,a),n[l.id]=l)}void 0===r&&(r=!0);var h=1<<t,n={};return scanTriangle(i[0],i[1],i[2],0,h,e),scanTriangle(i[2],i[3],i[0],0,h,e),Object.keys(n).map(function(t){return n[t]})},TileCoord.fromID=function(t){var i=t%32,o=1<<i,r=(t-i)/32,e=r%o,h=(r-e)/o%o,n=Math.floor(r/(o*o));return n%2!=0&&(n=-1*n-1),n/=2,new TileCoord(i,e,h,n)},module.exports=TileCoord;\n},{\"../geo/coordinate\":57,\"@mapbox/whoots-js\":10}],102:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),VectorTileSource=function(e){function t(t,i,o,r){if(e.call(this),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"])),this._options=util.extend({type:\"vector\"},i),512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.loadTile=function(e,t){function i(i,o){if(!e.aborted){if(i)return t(i);this.map._refreshExpiredTiles&&e.setExpiryData(o),e.loadVectorData(o,this.map.painter),e.redoWhenDone&&(e.redoWhenDone=!1,e.redoPlacement(this)),t(null),e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)}}var o=e.coord.z>this.maxzoom?Math.pow(2,e.coord.z-this.maxzoom):1,r=normalizeURL(e.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),s={request:this.map._transformRequest(r,ResourceType.Tile),uid:e.uid,coord:e.coord,zoom:e.coord.z,tileSize:this.tileSize*o,type:this.type,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:o,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(e),showCollisionBoxes:this.map.showCollisionBoxes};e.workerID&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=t:this.dispatcher.send(\"reloadTile\",s,i.bind(this),e.workerID):e.workerID=this.dispatcher.send(\"loadTile\",s,i.bind(this))},t.prototype.abortTile=function(e){this.dispatcher.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t.prototype.unloadTile=function(e){e.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t}(Evented);module.exports=VectorTileSource;\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],103:[function(_dereq_,module,exports){\n\"use strict\";function loadVectorTile(e,r){var o=ajax.getArrayBuffer(e.request,function(e,o){e?r(e):o&&r(null,{vectorTile:new vt.VectorTile(new Protobuf(o.data)),rawData:o.data,cacheControl:o.cacheControl,expires:o.expires})});return function(){o.abort()}}var ajax=_dereq_(\"../util/ajax\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),WorkerTile=_dereq_(\"./worker_tile\"),util=_dereq_(\"../util/util\"),VectorTileWorkerSource=function(e,r,o){this.actor=e,this.layerIndex=r,this.loadVectorData=o||loadVectorTile,this.loading={},this.loaded={}};VectorTileWorkerSource.prototype.loadTile=function(e,r){var o=this,t=e.source,a=e.uid;this.loading[t]||(this.loading[t]={});var i=this.loading[t][a]=new WorkerTile(e);i.abort=this.loadVectorData(e,function(e,l){if(delete o.loading[t][a],e||!l)return r(e);var c=l.rawData,n={};l.expires&&(n.expires=l.expires),l.cacheControl&&(n.cacheControl=l.cacheControl),i.vectorTile=l.vectorTile,i.parse(l.vectorTile,o.layerIndex,o.actor,function(e,o,t){if(e||!o)return r(e);r(null,util.extend({rawTileData:c},o,n),t)}),o.loaded[t]=o.loaded[t]||{},o.loaded[t][a]=i})},VectorTileWorkerSource.prototype.reloadTile=function(e,r){function o(e,o){if(this.reloadCallback){var t=this.reloadCallback;delete this.reloadCallback,this.parse(this.vectorTile,i.layerIndex,i.actor,t)}r(e,o)}var t=this.loaded[e.source],a=e.uid,i=this;if(t&&t[a]){var l=t[a];\"parsing\"===l.status?l.reloadCallback=r:\"done\"===l.status&&l.parse(l.vectorTile,this.layerIndex,this.actor,o.bind(l))}},VectorTileWorkerSource.prototype.abortTile=function(e){var r=this.loading[e.source],o=e.uid;r&&r[o]&&r[o].abort&&(r[o].abort(),delete r[o])},VectorTileWorkerSource.prototype.removeTile=function(e){var r=this.loaded[e.source],o=e.uid;r&&r[o]&&delete r[o]},VectorTileWorkerSource.prototype.redoPlacement=function(e,r){var o=this.loaded[e.source],t=this.loading[e.source],a=e.uid;if(o&&o[a]){var i=o[a],l=i.redoPlacement(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,e.showCollisionBoxes);l.result&&r(null,l.result,l.transferables)}else t&&t[a]&&(t[a].angle=e.angle)},module.exports=VectorTileWorkerSource;\n},{\"../util/ajax\":201,\"../util/util\":223,\"./worker_tile\":106,\"@mapbox/vector-tile\":6,\"pbf\":29}],104:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),ImageSource=_dereq_(\"./image_source\"),VideoSource=function(e){function t(t,o,i,r){e.call(this,t,o,i,r),this.roundZoom=!0,this.type=\"video\",this.options=o}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this,t=this.options;this.urls=t.urls,ajax.getVideo(t.urls,function(t,o){if(t)e.fire(\"error\",{error:t});else if(o){e.video=o,e.video.loop=!0;var i;e.video.addEventListener(\"playing\",function(){i=e.map.style.animationLoop.set(1/0),e.map._rerender()}),e.video.addEventListener(\"pause\",function(){e.map.style.animationLoop.cancel(i)}),e.map&&e.video.play(),e._finishLoading()}})},t.prototype.getVideo=function(){return this.video},t.prototype.onAdd=function(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},t.prototype.prepare=function(){0===Object.keys(this.tiles).length||this.video.readyState<2||this._prepareImage(this.map.painter.gl,this.video)},t.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},t}(ImageSource);module.exports=VideoSource;\n},{\"../util/ajax\":201,\"./image_source\":91}],105:[function(_dereq_,module,exports){\n\"use strict\";var Actor=_dereq_(\"../util/actor\"),StyleLayerIndex=_dereq_(\"../style/style_layer_index\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=_dereq_(\"./geojson_worker_source\"),globalRTLTextPlugin=_dereq_(\"./rtl_text_plugin\"),Worker=function(e){var r=this;this.self=e,this.actor=new Actor(e,this),this.layerIndexes={},this.workerSourceTypes={vector:VectorTileWorkerSource,geojson:GeoJSONWorkerSource},this.workerSources={},this.self.registerWorkerSource=function(e,o){if(r.workerSourceTypes[e])throw new Error('Worker source with name \"'+e+'\" already registered.');r.workerSourceTypes[e]=o},this.self.registerRTLTextPlugin=function(e){if(globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText)throw new Error(\"RTL text plugin already registered.\");globalRTLTextPlugin.applyArabicShaping=e.applyArabicShaping,globalRTLTextPlugin.processBidirectionalText=e.processBidirectionalText}};Worker.prototype.setLayers=function(e,r){this.getLayerIndex(e).replace(r)},Worker.prototype.updateLayers=function(e,r){this.getLayerIndex(e).update(r.layers,r.removedIds,r.symbolOrder)},Worker.prototype.loadTile=function(e,r,o){this.getWorkerSource(e,r.type).loadTile(r,o)},Worker.prototype.reloadTile=function(e,r,o){this.getWorkerSource(e,r.type).reloadTile(r,o)},Worker.prototype.abortTile=function(e,r){this.getWorkerSource(e,r.type).abortTile(r)},Worker.prototype.removeTile=function(e,r){this.getWorkerSource(e,r.type).removeTile(r)},Worker.prototype.removeSource=function(e,r){var o=this.getWorkerSource(e,r.type);void 0!==o.removeSource&&o.removeSource(r)},Worker.prototype.redoPlacement=function(e,r,o){this.getWorkerSource(e,r.type).redoPlacement(r,o)},Worker.prototype.loadWorkerSource=function(e,r,o){try{this.self.importScripts(r.url),o()}catch(e){o(e)}},Worker.prototype.loadRTLTextPlugin=function(e,r,o){try{globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText||(this.self.importScripts(r),globalRTLTextPlugin.applyArabicShaping&&globalRTLTextPlugin.processBidirectionalText||o(new Error(\"RTL Text Plugin failed to import scripts from \"+r)))}catch(e){o(e)}},Worker.prototype.getLayerIndex=function(e){var r=this.layerIndexes[e];return r||(r=this.layerIndexes[e]=new StyleLayerIndex),r},Worker.prototype.getWorkerSource=function(e,r){var o=this;if(this.workerSources[e]||(this.workerSources[e]={}),!this.workerSources[e][r]){var t={send:function(r,t,i,n){o.actor.send(r,t,i,n,e)}};this.workerSources[e][r]=new this.workerSourceTypes[r](t,this.getLayerIndex(e))}return this.workerSources[e][r]},module.exports=function(e){return new Worker(e)};\n},{\"../style/style_layer_index\":164,\"../util/actor\":200,\"./geojson_worker_source\":89,\"./rtl_text_plugin\":96,\"./vector_tile_worker_source\":103}],106:[function(_dereq_,module,exports){\n\"use strict\";function recalculateLayers(e,i){for(var r=0,t=e.layers;r<t.length;r+=1){t[r].recalculate(i)}}function serializeBuckets(e,i){return e.filter(function(e){return!e.isEmpty()}).map(function(e){return e.serialize(i)})}var FeatureIndex=_dereq_(\"../data/feature_index\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),util=_dereq_(\"../util/util\"),ref=_dereq_(\"../render/image_atlas\"),makeImageAtlas=ref.makeImageAtlas,ref$1=_dereq_(\"../render/glyph_atlas\"),makeGlyphAtlas=ref$1.makeGlyphAtlas,WorkerTile=function(e){this.coord=e.coord,this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=e.overscaling,this.angle=e.angle,this.pitch=e.pitch,this.cameraToCenterDistance=e.cameraToCenterDistance,this.cameraToTileDistance=e.cameraToTileDistance,this.showCollisionBoxes=e.showCollisionBoxes};WorkerTile.prototype.parse=function(e,i,r,t){function a(){var e=this;if(D)return t(D);if(A&&C){for(var i=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),r=makeGlyphAtlas(A),a=makeImageAtlas(C),o=0,s=e.symbolBuckets;o<s.length;o+=1){var c=s[o];recalculateLayers(c,e.zoom),c.prepare(A,r.positions,C,a.positions),c.place(i,e.showCollisionBoxes)}this.status=\"done\";var u=[r.image.data.buffer,a.image.data.buffer];t(null,{buckets:serializeBuckets(util.values(n),u),featureIndex:l.serialize(u),collisionTile:i.serialize(u),collisionBoxArray:this.collisionBoxArray.serialize(),glyphAtlasImage:r.image,iconAtlasImage:a.image},u)}}var o=this;this.status=\"parsing\",this.data=e,this.collisionBoxArray=new CollisionBoxArray;var s=new DictionaryCoder(Object.keys(e.layers).sort()),l=new FeatureIndex(this.coord,this.overscaling);l.bucketLayerIDs=[];var n={},c={featureIndex:l,iconDependencies:{},glyphDependencies:{}},u=i.familiesBySource[this.source];for(var h in u){var m=e.layers[h];if(m){1===m.version&&util.warnOnce('Vector tile source \"'+o.source+'\" layer \"'+h+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var y=s.encode(h),p=[],d=0;d<m.length;d++){var f=m.feature(d);p.push({feature:f,index:d,sourceLayerIndex:y})}for(var g=0,v=u[h];g<v.length;g+=1){var k=v[g],b=k[0];if(!(b.minzoom&&o.zoom<Math.floor(b.minzoom))&&!(b.maxzoom&&o.zoom>=b.maxzoom||b.layout&&\"none\"===b.layout.visibility)){for(var x=0,T=k;x<T.length;x+=1){T[x].recalculate(o.zoom)}(n[b.id]=b.createBucket({index:l.bucketLayerIDs.length,layers:k,zoom:o.zoom,pixelRatio:o.pixelRatio,overscaling:o.overscaling,collisionBoxArray:o.collisionBoxArray})).populate(p,c),l.bucketLayerIDs.push(k.map(function(e){return e.id}))}}}}this.symbolBuckets=[];for(var z=i.symbolOrder.length-1;z>=0;z--){var B=n[i.symbolOrder[z]];B&&o.symbolBuckets.push(B)}var D,A,C,I=util.mapObject(c.glyphDependencies,function(e){return Object.keys(e).map(Number)});Object.keys(I).length?r.send(\"getGlyphs\",{uid:this.uid,stacks:I},function(e,i){D||(D=e,A=i,a.call(o))}):A={};var w=Object.keys(c.iconDependencies);w.length?r.send(\"getImages\",{icons:w},function(e,i){D||(D=e,C=i,a.call(o))}):C={},a.call(this)},WorkerTile.prototype.redoPlacement=function(e,i,r,t,a){var o=this;if(this.angle=e,this.pitch=i,this.cameraToCenterDistance=r,this.cameraToTileDistance=t,\"done\"!==this.status)return{};for(var s=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),l=0,n=o.symbolBuckets;l<n.length;l+=1){var c=n[l];recalculateLayers(c,o.zoom),c.place(s,a)}var u=[];return{result:{buckets:serializeBuckets(this.symbolBuckets,u),collisionTile:s.serialize(u)},transferables:u}},module.exports=WorkerTile;\n},{\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/glyph_atlas\":74,\"../render/image_atlas\":76,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/dictionary_coder\":207,\"../util/util\":223}],107:[function(_dereq_,module,exports){\n\"use strict\";function deref(r,e){var f={};for(var t in r)\"ref\"!==t&&(f[t]=r[t]);return refProperties.forEach(function(r){r in e&&(f[r]=e[r])}),f}function derefLayers(r){r=r.slice();for(var e=Object.create(null),f=0;f<r.length;f++)e[r[f].id]=r[f];for(var t=0;t<r.length;t++)\"ref\"in r[t]&&(r[t]=deref(r[t],e[r[t].ref]));return r}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=derefLayers;\n},{\"./util/ref_properties\":129}],108:[function(_dereq_,module,exports){\n\"use strict\";function diffSources(e,r,o,a){e=e||{},r=r||{};var s;for(s in e)e.hasOwnProperty(s)&&(r.hasOwnProperty(s)||(o.push({command:operations.removeSource,args:[s]}),a[s]=!0));for(s in r)r.hasOwnProperty(s)&&(e.hasOwnProperty(s)?isEqual(e[s],r[s])||(o.push({command:operations.removeSource,args:[s]}),o.push({command:operations.addSource,args:[s,r[s]]}),a[s]=!0):o.push({command:operations.addSource,args:[s,r[s]]}))}function diffLayerPropertyChanges(e,r,o,a,s,t){e=e||{},r=r||{};var n;for(n in e)e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}));for(n in r)r.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}))}function pluckId(e){return e.id}function indexById(e,r){return e[r.id]=r,e}function diffLayers(e,r,o){e=e||[],r=r||[];var a,s,t,n,i,p,m,u=e.map(pluckId),l=r.map(pluckId),y=e.reduce(indexById,{}),c=r.reduce(indexById,{}),d=u.slice(),h=Object.create(null);for(a=0,s=0;a<u.length;a++)t=u[a],c.hasOwnProperty(t)?s++:(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.indexOf(t,s),1));for(a=0,s=0;a<l.length;a++)t=l[l.length-1-a],d[d.length-1-a]!==t&&(y.hasOwnProperty(t)?(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.lastIndexOf(t,d.length-s),1)):s++,p=d[d.length-a],o.push({command:operations.addLayer,args:[c[t],p]}),d.splice(d.length-a,0,t),h[t]=!0);for(a=0;a<l.length;a++)if(t=l[a],n=y[t],i=c[t],!h[t]&&!isEqual(n,i))if(isEqual(n.source,i.source)&&isEqual(n[\"source-layer\"],i[\"source-layer\"])&&isEqual(n.type,i.type)){diffLayerPropertyChanges(n.layout,i.layout,o,t,null,operations.setLayoutProperty),diffLayerPropertyChanges(n.paint,i.paint,o,t,null,operations.setPaintProperty),isEqual(n.filter,i.filter)||o.push({command:operations.setFilter,args:[t,i.filter]}),isEqual(n.minzoom,i.minzoom)&&isEqual(n.maxzoom,i.maxzoom)||o.push({command:operations.setLayerZoomRange,args:[t,i.minzoom,i.maxzoom]});for(m in n)n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}));for(m in i)i.hasOwnProperty(m)&&!n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}))}else o.push({command:operations.removeLayer,args:[t]}),p=d[d.lastIndexOf(t)+1],o.push({command:operations.addLayer,args:[i,p]})}function diffStyles(e,r){if(!e)return[{command:operations.setStyle,args:[r]}];var o=[];try{if(!isEqual(e.version,r.version))return[{command:operations.setStyle,args:[r]}];isEqual(e.center,r.center)||o.push({command:operations.setCenter,args:[r.center]}),isEqual(e.zoom,r.zoom)||o.push({command:operations.setZoom,args:[r.zoom]}),isEqual(e.bearing,r.bearing)||o.push({command:operations.setBearing,args:[r.bearing]}),isEqual(e.pitch,r.pitch)||o.push({command:operations.setPitch,args:[r.pitch]}),isEqual(e.sprite,r.sprite)||o.push({command:operations.setSprite,args:[r.sprite]}),isEqual(e.glyphs,r.glyphs)||o.push({command:operations.setGlyphs,args:[r.glyphs]}),isEqual(e.transition,r.transition)||o.push({command:operations.setTransition,args:[r.transition]}),isEqual(e.light,r.light)||o.push({command:operations.setLight,args:[r.light]});var a={},s=[];diffSources(e.sources,r.sources,s,a);var t=[];e.layers&&e.layers.forEach(function(e){a[e.source]?o.push({command:operations.removeLayer,args:[e.id]}):t.push(e)}),o=o.concat(s),diffLayers(t,r.layers,o)}catch(e){console.warn(\"Unable to compute style diff:\",e),o=[{command:operations.setStyle,args:[r]}]}return o}var isEqual=_dereq_(\"lodash.isequal\"),operations={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};module.exports=diffStyles,module.exports.operations=operations;\n},{\"lodash.isequal\":120}],109:[function(_dereq_,module,exports){\n\"use strict\";function ValidationError(r,i){for(var t=[],o=arguments.length-2;o-- >0;)t[o]=arguments[o+2];this.message=(r?r+\": \":\"\")+format.apply(format,t),null!==i&&void 0!==i&&i.__line__&&(this.line=i.__line__)}var format=_dereq_(\"util\").format;module.exports=ValidationError;\n},{\"util\":36}],110:[function(_dereq_,module,exports){\n\"use strict\";function createFilter(e){return new Function(\"f\",\"var p = (f && f.properties || {}); return \"+compile(e))}function compile(e){if(!e)return\"true\";var i=e[0];return e.length<=1?\"any\"===i?\"false\":\"true\":\"(\"+(\"==\"===i?compileComparisonOp(e[1],e[2],\"===\",!1):\"!=\"===i?compileComparisonOp(e[1],e[2],\"!==\",!1):\"<\"===i||\">\"===i||\"<=\"===i||\">=\"===i?compileComparisonOp(e[1],e[2],i,!0):\"any\"===i?compileLogicalOp(e.slice(1),\"||\"):\"all\"===i?compileLogicalOp(e.slice(1),\"&&\"):\"none\"===i?compileNegation(compileLogicalOp(e.slice(1),\"||\")):\"in\"===i?compileInOp(e[1],e.slice(2)):\"!in\"===i?compileNegation(compileInOp(e[1],e.slice(2))):\"has\"===i?compileHasOp(e[1]):\"!has\"===i?compileNegation(compileHasOp(e[1])):\"true\")+\")\"}function compilePropertyReference(e){return\"$type\"===e?\"f.type\":\"$id\"===e?\"f.id\":\"p[\"+JSON.stringify(e)+\"]\"}function compileComparisonOp(e,i,n,o){var r=compilePropertyReference(e),p=\"$type\"===e?types.indexOf(i):JSON.stringify(i);return(o?\"typeof \"+r+\"=== typeof \"+p+\"&&\":\"\")+r+n+p}function compileLogicalOp(e,i){return e.map(compile).join(i)}function compileInOp(e,i){\"$type\"===e&&(i=i.map(function(e){return types.indexOf(e)}));var n=JSON.stringify(i.sort(compare)),o=compilePropertyReference(e);return i.length<=200?n+\".indexOf(\"+o+\") !== -1\":\"function(v, a, i, j) {while (i <= j) { var m = (i + j) >> 1; if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;}return false; }(\"+o+\", \"+n+\",0,\"+(i.length-1)+\")\"}function compileHasOp(e){return\"$id\"===e?'\"id\" in f':JSON.stringify(e)+\" in p\"}function compileNegation(e){return\"!(\"+e+\")\"}function compare(e,i){return e<i?-1:e>i?1:0}module.exports=createFilter;var types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];\n},{}],111:[function(_dereq_,module,exports){\n\"use strict\";function xyz2lab(r){return r>t3?Math.pow(r,1/3):r/t2+t0}function lab2xyz(r){return r>t1?r*r*r:t2*(r-t0)}function xyz2rgb(r){return 255*(r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055)}function rgb2xyz(r){return r/=255,r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function rgbToLab(r){var t=rgb2xyz(r[0]),a=rgb2xyz(r[1]),n=rgb2xyz(r[2]),b=xyz2lab((.4124564*t+.3575761*a+.1804375*n)/Xn),o=xyz2lab((.2126729*t+.7151522*a+.072175*n)/Yn);return[116*o-16,500*(b-o),200*(o-xyz2lab((.0193339*t+.119192*a+.9503041*n)/Zn)),r[3]]}function labToRgb(r){var t=(r[0]+16)/116,a=isNaN(r[1])?t:t+r[1]/500,n=isNaN(r[2])?t:t-r[2]/200;return t=Yn*lab2xyz(t),a=Xn*lab2xyz(a),n=Zn*lab2xyz(n),[xyz2rgb(3.2404542*a-1.5371385*t-.4985314*n),xyz2rgb(-.969266*a+1.8760108*t+.041556*n),xyz2rgb(.0556434*a-.2040259*t+1.0572252*n),r[3]]}function rgbToHcl(r){var t=rgbToLab(r),a=t[0],n=t[1],b=t[2],o=Math.atan2(b,n)*rad2deg;return[o<0?o+360:o,Math.sqrt(n*n+b*b),a,r[3]]}function hclToRgb(r){var t=r[0]*deg2rad,a=r[1];return labToRgb([r[2],Math.cos(t)*a,Math.sin(t)*a,r[3]])}var Xn=.95047,Yn=1,Zn=1.08883,t0=4/29,t1=6/29,t2=3*t1*t1,t3=t1*t1*t1,deg2rad=Math.PI/180,rad2deg=180/Math.PI;module.exports={lab:{forward:rgbToLab,reverse:labToRgb},hcl:{forward:rgbToHcl,reverse:hclToRgb}};\n},{}],112:[function(_dereq_,module,exports){\n\"use strict\";function identityFunction(t){return t}function createFunction(t,e){var o,n=\"color\"===e.type;if(isFunctionDefinition(t)){var r=t.stops&&\"object\"==typeof t.stops[0][0],a=r||void 0!==t.property,i=r||!a,s=t.type||(\"interpolated\"===e.function?\"exponential\":\"interval\");n&&(t=extend({},t),t.stops&&(t.stops=t.stops.map(function(t){return[t[0],parseColor(t[1])]})),t.default?t.default=parseColor(t.default):t.default=parseColor(e.default));var u,p,l;if(\"exponential\"===s)u=evaluateExponentialFunction;else if(\"interval\"===s)u=evaluateIntervalFunction;else if(\"categorical\"===s){u=evaluateCategoricalFunction,p=Object.create(null);for(var c=0,f=t.stops;c<f.length;c+=1){var v=f[c];p[v[0]]=v[1]}l=typeof t.stops[0][0]}else{if(\"identity\"!==s)throw new Error('Unknown function type \"'+s+'\"');u=evaluateIdentityFunction}var d;if(t.colorSpace&&\"rgb\"!==t.colorSpace){if(!colorSpaces[t.colorSpace])throw new Error(\"Unknown color space: \"+t.colorSpace);var y=colorSpaces[t.colorSpace];t=JSON.parse(JSON.stringify(t));for(var F=0;F<t.stops.length;F++)t.stops[F]=[t.stops[F][0],y.forward(t.stops[F][1])];d=y.reverse}else d=identityFunction;if(r){for(var h={},g=[],m=0;m<t.stops.length;m++){var C=t.stops[m],S=C[0].zoom;void 0===h[S]&&(h[S]={zoom:S,type:t.type,property:t.property,default:t.default,stops:[]},g.push(S)),h[S].stops.push([C[0].value,C[1]])}for(var T=[],x=0,b=g;x<b.length;x+=1){var q=b[x];T.push([h[q].zoom,createFunction(h[q],e)])}o=function(o,n){return d(evaluateExponentialFunction({stops:T,base:t.base},e,o)(o,n))},o.isFeatureConstant=!1,o.isZoomConstant=!1}else i?(o=function(o){return d(u(t,e,o,p,l))},o.isFeatureConstant=!0,o.isZoomConstant=!1):(o=function(o,n){var r=n[t.property];return void 0===r?coalesce(t.default,e.default):d(u(t,e,r,p,l))},o.isFeatureConstant=!1,o.isZoomConstant=!0)}else n&&t&&(t=parseColor(t)),o=function(){return t},o.isFeatureConstant=!0,o.isZoomConstant=!0;return o}function coalesce(t,e,o){return void 0!==t?t:void 0!==e?e:void 0!==o?o:void 0}function evaluateCategoricalFunction(t,e,o,n,r){return coalesce(typeof o===r?n[o]:void 0,t.default,e.default)}function evaluateIntervalFunction(t,e,o){if(\"number\"!==getType(o))return coalesce(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[n-1][0])return t.stops[n-1][1];var r=findStopLessThanOrEqualTo(t.stops,o);return t.stops[r][1]}function evaluateExponentialFunction(t,e,o){var n=void 0!==t.base?t.base:1;if(\"number\"!==getType(o))return coalesce(t.default,e.default);var r=t.stops.length;if(1===r)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[r-1][0])return t.stops[r-1][1];var a=findStopLessThanOrEqualTo(t.stops,o),i=interpolationFactor(o,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],p=interpolate[e.type]||identityFunction;return\"function\"==typeof s?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o=s.apply(void 0,t),n=u.apply(void 0,t);if(void 0!==o&&void 0!==n)return p(o,n,i)}:p(s,u,i)}function evaluateIdentityFunction(t,e,o){return\"color\"===e.type?o=parseColor(o):getType(o)===e.type||\"enum\"===e.type&&e.values[o]||(o=void 0),coalesce(o,t.default,e.default)}function findStopLessThanOrEqualTo(t,e){for(var o,n,r=t.length,a=0,i=r-1,s=0;a<=i;){if(s=Math.floor((a+i)/2),o=t[s][0],n=t[s+1][0],e===o||e>o&&e<n)return s;o<e?a=s+1:o>e&&(i=s-1)}return Math.max(s-1,0)}function isFunctionDefinition(t){return\"object\"==typeof t&&(t.stops||\"identity\"===t.type)}function interpolationFactor(t,e,o,n){var r=n-o,a=t-o;return 0===r?0:1===e?a/r:(Math.pow(e,a)-1)/(Math.pow(e,r)-1)}var colorSpaces=_dereq_(\"./color_spaces\"),parseColor=_dereq_(\"../util/parse_color\"),extend=_dereq_(\"../util/extend\"),getType=_dereq_(\"../util/get_type\"),interpolate=_dereq_(\"../util/interpolate\");module.exports=createFunction,module.exports.isFunctionDefinition=isFunctionDefinition,module.exports.interpolationFactor=interpolationFactor,module.exports.findStopLessThanOrEqualTo=findStopLessThanOrEqualTo;\n},{\"../util/extend\":125,\"../util/get_type\":126,\"../util/interpolate\":127,\"../util/parse_color\":128,\"./color_spaces\":111}],113:[function(_dereq_,module,exports){\n\"use strict\";function stringify(r){var t=typeof r;if(\"number\"===t||\"boolean\"===t||\"string\"===t||void 0===r||null===r)return JSON.stringify(r);if(Array.isArray(r)){for(var e=\"[\",i=0,n=r;i<n.length;i+=1){e+=stringify(n[i])+\",\"}return e+\"]\"}for(var o=Object.keys(r).sort(),f=\"{\",u=0;u<o.length;u++)f+=JSON.stringify(o[u])+\":\"+stringify(r[o[u]])+\",\";return f+\"}\"}function getKey(r){for(var t=\"\",e=0,i=refProperties;e<i.length;e+=1){t+=\"/\"+stringify(r[i[e]])}return t}function groupByLayout(r){for(var t={},e=0;e<r.length;e++){var i=getKey(r[e]),n=t[i];n||(n=t[i]=[]),n.push(r[e])}var o=[];for(var f in t)o.push(t[f]);return o}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=groupByLayout;\n},{\"./util/ref_properties\":129}],114:[function(_dereq_,module,exports){\nfunction clamp_css_byte(e){return e=Math.round(e),e<0?0:e>255?255:e}function clamp_css_float(e){return e<0?0:e>1?1:e}function parse_css_int(e){return clamp_css_byte(\"%\"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function parse_css_float(e){return clamp_css_float(\"%\"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function css_hue_to_rgb(e,r,l){return l<0?l+=1:l>1&&(l-=1),6*l<1?e+(r-e)*l*6:2*l<1?r:3*l<2?e+(r-e)*(2/3-l)*6:e}function parseCSSColor(e){var r=e.replace(/ /g,\"\").toLowerCase();if(r in kCSSColorTable)return kCSSColorTable[r].slice();if(\"#\"===r[0]){if(4===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=4095?[(3840&l)>>4|(3840&l)>>8,240&l|(240&l)>>4,15&l|(15&l)<<4,1]:null}if(7===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=16777215?[(16711680&l)>>16,(65280&l)>>8,255&l,1]:null}return null}var a=r.indexOf(\"(\"),t=r.indexOf(\")\");if(-1!==a&&t+1===r.length){var n=r.substr(0,a),s=r.substr(a+1,t-(a+1)).split(\",\"),o=1;switch(n){case\"rgba\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"rgb\":return 3!==s.length?null:[parse_css_int(s[0]),parse_css_int(s[1]),parse_css_int(s[2]),o];case\"hsla\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"hsl\":if(3!==s.length)return null;var i=(parseFloat(s[0])%360+360)%360/360,u=parse_css_float(s[1]),g=parse_css_float(s[2]),d=g<=.5?g*(u+1):g+u-g*u,c=2*g-d;return[clamp_css_byte(255*css_hue_to_rgb(c,d,i+1/3)),clamp_css_byte(255*css_hue_to_rgb(c,d,i)),clamp_css_byte(255*css_hue_to_rgb(c,d,i-1/3)),o];default:return null}}return null}var kCSSColorTable={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{exports.parseCSSColor=parseCSSColor}catch(e){}\n},{}],115:[function(_dereq_,module,exports){\nfunction isObjectLike(r){return!!r&&\"object\"==typeof r}function arraySome(r,e){for(var a=-1,t=r.length;++a<t;)if(e(r[a],a,r))return!0;return!1}function baseIsEqual(r,e,a,t,o,n){return r===e||(null==r||null==e||!isObject(r)&&!isObjectLike(e)?r!==r&&e!==e:baseIsEqualDeep(r,e,baseIsEqual,a,t,o,n))}function baseIsEqualDeep(r,e,a,t,o,n,u){var c=isArray(r),s=isArray(e),i=arrayTag,g=arrayTag;c||(i=objToString.call(r),i==argsTag?i=objectTag:i!=objectTag&&(c=isTypedArray(r))),s||(g=objToString.call(e),g==argsTag?g=objectTag:g!=objectTag&&(s=isTypedArray(e)));var b=i==objectTag,l=g==objectTag,f=i==g;if(f&&!c&&!b)return equalByTag(r,e,i);if(!o){var y=b&&hasOwnProperty.call(r,\"__wrapped__\"),T=l&&hasOwnProperty.call(e,\"__wrapped__\");if(y||T)return a(y?r.value():r,T?e.value():e,t,o,n,u)}if(!f)return!1;n||(n=[]),u||(u=[]);for(var j=n.length;j--;)if(n[j]==r)return u[j]==e;n.push(r),u.push(e);var p=(c?equalArrays:equalObjects)(r,e,a,t,o,n,u);return n.pop(),u.pop(),p}function equalArrays(r,e,a,t,o,n,u){var c=-1,s=r.length,i=e.length;if(s!=i&&!(o&&i>s))return!1;for(;++c<s;){var g=r[c],b=e[c],l=t?t(o?b:g,o?g:b,c):void 0;if(void 0!==l){if(l)continue;return!1}if(o){if(!arraySome(e,function(r){return g===r||a(g,r,t,o,n,u)}))return!1}else if(g!==b&&!a(g,b,t,o,n,u))return!1}return!0}function equalByTag(r,e,a){switch(a){case boolTag:case dateTag:return+r==+e;case errorTag:return r.name==e.name&&r.message==e.message;case numberTag:return r!=+r?e!=+e:r==+e;case regexpTag:case stringTag:return r==e+\"\"}return!1}function equalObjects(r,e,a,t,o,n,u){var c=keys(r),s=c.length;if(s!=keys(e).length&&!o)return!1;for(var i=s;i--;){var g=c[i];if(!(o?g in e:hasOwnProperty.call(e,g)))return!1}for(var b=o;++i<s;){g=c[i];var l=r[g],f=e[g],y=t?t(o?f:l,o?l:f,g):void 0;if(!(void 0===y?a(l,f,t,o,n,u):y))return!1;b||(b=\"constructor\"==g)}if(!b){var T=r.constructor,j=e.constructor;if(T!=j&&\"constructor\"in r&&\"constructor\"in e&&!(\"function\"==typeof T&&T instanceof T&&\"function\"==typeof j&&j instanceof j))return!1}return!0}function isObject(r){var e=typeof r;return!!r&&(\"object\"==e||\"function\"==e)}var isArray=_dereq_(\"lodash.isarray\"),isTypedArray=_dereq_(\"lodash.istypedarray\"),keys=_dereq_(\"lodash.keys\"),argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",stringTag=\"[object String]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString;module.exports=baseIsEqual;\n},{\"lodash.isarray\":119,\"lodash.istypedarray\":121,\"lodash.keys\":122}],116:[function(_dereq_,module,exports){\nfunction bindCallback(n,t,r){if(\"function\"!=typeof n)return identity;if(void 0===t)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,c){return n.call(t,r,e,u,c)};case 5:return function(r,e,u,c,i){return n.call(t,r,e,u,c,i)}}return function(){return n.apply(t,arguments)}}function identity(n){return n}module.exports=bindCallback;\n},{}],117:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,o){var e=null==t?void 0:t[o];return isNative(e)?e:void 0}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var o=typeof t;return!!t&&(\"object\"==o||\"function\"==o)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");module.exports=getNative;\n},{}],118:[function(_dereq_,module,exports){\nfunction isArguments(t){return isArrayLikeObject(t)&&hasOwnProperty.call(t,\"callee\")&&(!propertyIsEnumerable.call(t,\"callee\")||objectToString.call(t)==argsTag)}function isArrayLike(t){return null!=t&&isLength(t.length)&&!isFunction(t)}function isArrayLikeObject(t){return isObjectLike(t)&&isArrayLike(t)}function isFunction(t){var e=isObject(t)?objectToString.call(t):\"\";return e==funcTag||e==genTag}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isObject(t){var e=typeof t;return!!t&&(\"object\"==e||\"function\"==e)}function isObjectLike(t){return!!t&&\"object\"==typeof t}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",funcTag=\"[object Function]\",genTag=\"[object GeneratorFunction]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objectToString=objectProto.toString,propertyIsEnumerable=objectProto.propertyIsEnumerable;module.exports=isArguments;\n},{}],119:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,r){var e=null==t?void 0:t[r];return isNative(e)?e:void 0}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var r=typeof t;return!!t&&(\"object\"==r||\"function\"==r)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var arrayTag=\"[object Array]\",funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),nativeIsArray=getNative(Array,\"isArray\"),MAX_SAFE_INTEGER=9007199254740991,isArray=nativeIsArray||function(t){return isObjectLike(t)&&isLength(t.length)&&objToString.call(t)==arrayTag};module.exports=isArray;\n},{}],120:[function(_dereq_,module,exports){\nfunction isEqual(a,l,i,e){i=\"function\"==typeof i?bindCallback(i,e,3):void 0;var s=i?i(a,l):void 0;return void 0===s?baseIsEqual(a,l,i):!!s}var baseIsEqual=_dereq_(\"lodash._baseisequal\"),bindCallback=_dereq_(\"lodash._bindcallback\");module.exports=isEqual;\n},{\"lodash._baseisequal\":115,\"lodash._bindcallback\":116}],121:[function(_dereq_,module,exports){\nfunction isLength(a){return\"number\"==typeof a&&a>-1&&a%1==0&&a<=MAX_SAFE_INTEGER}function isObjectLike(a){return!!a&&\"object\"==typeof a}function isTypedArray(a){return isObjectLike(a)&&isLength(a.length)&&!!typedArrayTags[objectToString.call(a)]}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",funcTag=\"[object Function]\",mapTag=\"[object Map]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",setTag=\"[object Set]\",stringTag=\"[object String]\",weakMapTag=\"[object WeakMap]\",arrayBufferTag=\"[object ArrayBuffer]\",dataViewTag=\"[object DataView]\",float32Tag=\"[object Float32Array]\",float64Tag=\"[object Float64Array]\",int8Tag=\"[object Int8Array]\",int16Tag=\"[object Int16Array]\",int32Tag=\"[object Int32Array]\",uint8Tag=\"[object Uint8Array]\",uint8ClampedTag=\"[object Uint8ClampedArray]\",uint16Tag=\"[object Uint16Array]\",uint32Tag=\"[object Uint32Array]\",typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var objectProto=Object.prototype,objectToString=objectProto.toString;module.exports=isTypedArray;\n},{}],122:[function(_dereq_,module,exports){\nfunction baseProperty(e){return function(t){return null==t?void 0:t[e]}}function isArrayLike(e){return null!=e&&isLength(getLength(e))}function isIndex(e,t){return e=\"number\"==typeof e||reIsUint.test(e)?+e:-1,t=null==t?MAX_SAFE_INTEGER:t,e>-1&&e%1==0&&e<t}function isLength(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function shimKeys(e){for(var t=keysIn(e),r=t.length,n=r&&e.length,s=!!n&&isLength(n)&&(isArray(e)||isArguments(e)),o=-1,i=[];++o<r;){var u=t[o];(s&&isIndex(u,n)||hasOwnProperty.call(e,u))&&i.push(u)}return i}function isObject(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function keysIn(e){if(null==e)return[];isObject(e)||(e=Object(e));var t=e.length;t=t&&isLength(t)&&(isArray(e)||isArguments(e))&&t||0;for(var r=e.constructor,n=-1,s=\"function\"==typeof r&&r.prototype===e,o=Array(t),i=t>0;++n<t;)o[n]=n+\"\";for(var u in e)i&&isIndex(u,t)||\"constructor\"==u&&(s||!hasOwnProperty.call(e,u))||o.push(u);return o}var getNative=_dereq_(\"lodash._getnative\"),isArguments=_dereq_(\"lodash.isarguments\"),isArray=_dereq_(\"lodash.isarray\"),reIsUint=/^\\d+$/,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeKeys=getNative(Object,\"keys\"),MAX_SAFE_INTEGER=9007199254740991,getLength=baseProperty(\"length\"),keys=nativeKeys?function(e){var t=null==e?void 0:e.constructor;return\"function\"==typeof t&&t.prototype===e||\"function\"!=typeof e&&isArrayLike(e)?shimKeys(e):isObject(e)?nativeKeys(e):[]}:shimKeys;module.exports=keys;\n},{\"lodash._getnative\":117,\"lodash.isarguments\":118,\"lodash.isarray\":119}],123:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"./v8.json\");\n},{\"./v8.json\":124}],124:[function(_dereq_,module,exports){\nmodule.exports={\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_tile\",\"source_geojson\",\"source_video\",\"source_image\",\"source_canvas\"],\"source_tile\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{},\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.0511,180,85.0511]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_canvas\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"canvas\":{}}},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}},\"animate\":{\"type\":\"boolean\",\"default\":\"true\"},\"canvas\":{\"type\":\"string\",\"required\":true},\"contextType\":{\"required\":true,\"type\":\"enum\",\"values\":{\"2d\":{},\"webgl\":{},\"experimental-webgl\":{},\"webgl2\":{}}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"fill-extrusion\":{},\"raster\":{},\"background\":{}}},\"metadata\":{\"type\":\"*\"},\"ref\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"},\"paint.*\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_background\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_circle\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\"},\"line-join\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"miter\"}]},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"round\"}]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"point\":{},\"line\":{}},\"default\":\"point\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}]},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false},\"icon-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",\"text-field\"]},\"icon-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"]},\"icon-text-fit\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"]},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}]},\"icon-image\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"tokens\":true},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"degrees\",\"requires\":[\"icon-image\"]},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"icon-image\"]},\"icon-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"]},\"icon-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"text-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-field\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"default\":\"\",\"tokens\":true},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"]},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-justify\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\",{\"symbol-placement\":\"line\"}]},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"text-transform\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"]},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\"]},\"text-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\",\"icon-image\"]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":22,\"value\":[\"number\",\"color\"],\"length\":2},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"transition\":false,\"zoom-function\":true,\"property-function\":false,\"function\":\"piecewise-constant\"},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"transition\":true,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false},\"color\":{\"type\":\"color\",\"default\":\"#ffffff\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true},\"intensity\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_background\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true},\"fill-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}]},\"fill-outline-color\":{\"type\":\"color\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}]},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"]},\"fill-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}]},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"]},\"fill-extrusion-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"fill-extrusion-height\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true},\"fill-extrusion-base\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"maximum\":65535,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"]}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}]},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"]},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}]},\"line-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"]},\"circle-pitch-scale\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"]},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"]}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"degrees\"},\"raster-brightness-min\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-brightness-max\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"milliseconds\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}]},\"background-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}}}\n},{}],125:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];for(var n=0,o=t;n<o.length;n+=1){var a=o[n];for(var f in a)r[f]=a[f]}return r};\n},{}],126:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number?\"number\":n instanceof String?\"string\":n instanceof Boolean?\"boolean\":Array.isArray(n)?\"array\":null===n?\"null\":typeof n};\n},{}],127:[function(_dereq_,module,exports){\n\"use strict\";function interpolate(t,e,n){return t*(1-n)+e*n}module.exports=interpolate,interpolate.number=interpolate,interpolate.vec2=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n)]},interpolate.color=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n),interpolate(t[2],e[2],n),interpolate(t[3],e[3],n)]},interpolate.array=function(t,e,n){return t.map(function(t,r){return interpolate(t,e[r],n)})};\n},{}],128:[function(_dereq_,module,exports){\n\"use strict\";var parseColorString=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){if(\"string\"==typeof r){var e=parseColorString(r);if(!e)return;return[e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]]}return Array.isArray(r)?r:void 0};\n},{\"csscolorparser\":114}],129:[function(_dereq_,module,exports){\n\"use strict\";module.exports=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];\n},{}],130:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number||n instanceof String||n instanceof Boolean?n.valueOf():n};\n},{}],131:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=_dereq_(\"./validate_function\"),t=_dereq_(\"./validate_object\"),i={\"*\":function(){return[]},array:_dereq_(\"./validate_array\"),boolean:_dereq_(\"./validate_boolean\"),number:_dereq_(\"./validate_number\"),color:_dereq_(\"./validate_color\"),constants:_dereq_(\"./validate_constants\"),enum:_dereq_(\"./validate_enum\"),filter:_dereq_(\"./validate_filter\"),function:_dereq_(\"./validate_function\"),layer:_dereq_(\"./validate_layer\"),object:_dereq_(\"./validate_object\"),source:_dereq_(\"./validate_source\"),light:_dereq_(\"./validate_light\"),string:_dereq_(\"./validate_string\")},a=e.value,n=e.valueSpec,u=e.key,o=e.styleSpec,l=e.style;if(\"string\"===getType(a)&&\"@\"===a[0]){if(o.$version>7)return[new ValidationError(u,a,\"constants have been deprecated as of v8\")];if(!(a in l.constants))return[new ValidationError(u,a,'constant \"%s\" not found',a)];e=extend({},e,{value:l.constants[a]})}return n.function&&\"object\"===getType(a)?r(e):n.type&&i[n.type]?i[n.type](e):t(extend({},e,{valueSpec:n.type?o[n.type]:n}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/get_type\":126,\"./validate_array\":132,\"./validate_boolean\":133,\"./validate_color\":134,\"./validate_constants\":135,\"./validate_enum\":136,\"./validate_filter\":137,\"./validate_function\":138,\"./validate_layer\":140,\"./validate_light\":142,\"./validate_number\":143,\"./validate_object\":144,\"./validate_source\":147,\"./validate_string\":148}],132:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,t=e.valueSpec,a=e.style,n=e.styleSpec,l=e.key,i=e.arrayElementValidator||validate;if(\"array\"!==getType(r))return[new ValidationError(l,r,\"array expected, %s found\",getType(r))];if(t.length&&r.length!==t.length)return[new ValidationError(l,r,\"array length %d expected, length %d found\",t.length,r.length)];if(t[\"min-length\"]&&r.length<t[\"min-length\"])return[new ValidationError(l,r,\"array length at least %d expected, length %d found\",t[\"min-length\"],r.length)];var o={type:t.value};n.$version<7&&(o.function=t.function),\"object\"===getType(t.value)&&(o=t.value);for(var u=[],d=0;d<r.length;d++)u=u.concat(i({array:r,arrayIndex:d,value:r[d],valueSpec:o,style:a,styleSpec:n,key:l+\"[\"+d+\"]\"}));return u};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],133:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,o=e.key,t=getType(r);return\"boolean\"!==t?[new ValidationError(o,r,\"boolean expected, %s found\",t)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],134:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),parseCSSColor=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){var e=r.key,o=r.value,t=getType(o);return\"string\"!==t?[new ValidationError(e,o,\"color expected, %s found\",t)]:null===parseCSSColor(o)?[new ValidationError(e,o,'color expected, \"%s\" found',o)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"csscolorparser\":114}],135:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(r){var e=r.key,t=r.value;if(r.styleSpec.$version>7)return t?[new ValidationError(e,t,\"constants have been deprecated as of v8\")]:[];var a=getType(t);if(\"object\"!==a)return[new ValidationError(e,t,\"object expected, %s found\",a)];var o=[];for(var n in t)\"@\"!==n[0]&&o.push(new ValidationError(e+\".\"+n,t[n],'constants must start with \"@\"'));return o};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],136:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){var r=e.key,n=e.value,u=e.valueSpec,o=[];return Array.isArray(u.values)?-1===u.values.indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",u.values.join(\", \"),n)):-1===Object.keys(u.values).indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",Object.keys(u.values).join(\", \"),n)),o};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130}],137:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateEnum=_dereq_(\"./validate_enum\"),getType=_dereq_(\"../util/get_type\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function e(r){var t,a=r.value,n=r.key,l=r.styleSpec,s=[];if(\"array\"!==getType(a))return[new ValidationError(n,a,\"array expected, %s found\",getType(a))];if(a.length<1)return[new ValidationError(n,a,\"filter array must have at least 1 element\")];switch(s=s.concat(validateEnum({key:n+\"[0]\",value:a[0],valueSpec:l.filter_operator,style:r.style,styleSpec:r.styleSpec})),unbundle(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&\"$type\"===unbundle(a[1])&&s.push(new ValidationError(n,a,'\"$type\" cannot be use with operator \"%s\"',a[0]));case\"==\":case\"!=\":3!==a.length&&s.push(new ValidationError(n,a,'filter array for operator \"%s\" must have 3 elements',a[0]));case\"in\":case\"!in\":a.length>=2&&\"string\"!==(t=getType(a[1]))&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t));for(var o=2;o<a.length;o++)t=getType(a[o]),\"$type\"===unbundle(a[1])?s=s.concat(validateEnum({key:n+\"[\"+o+\"]\",value:a[o],valueSpec:l.geometry_type,style:r.style,styleSpec:r.styleSpec})):\"string\"!==t&&\"number\"!==t&&\"boolean\"!==t&&s.push(new ValidationError(n+\"[\"+o+\"]\",a[o],\"string, number, or boolean expected, %s found\",t));break;case\"any\":case\"all\":case\"none\":for(var i=1;i<a.length;i++)s=s.concat(e({key:n+\"[\"+i+\"]\",value:a[i],style:r.style,styleSpec:r.styleSpec}));break;case\"has\":case\"!has\":t=getType(a[1]),2!==a.length?s.push(new ValidationError(n,a,'filter array for \"%s\" operator must have 2 elements',a[0])):\"string\"!==t&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t))}return s};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136}],138:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),validateObject=_dereq_(\"./validate_object\"),validateArray=_dereq_(\"./validate_array\"),validateNumber=_dereq_(\"./validate_number\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){function t(e){if(\"identity\"===p)return[new ValidationError(e.key,e.value,'identity function may not have a \"stops\" property')];var t=[],a=e.value;return t=t.concat(validateArray({key:e.key,value:a,valueSpec:e.valueSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:r})),\"array\"===getType(a)&&0===a.length&&t.push(new ValidationError(e.key,a,\"array must have at least one stop\")),t}function r(e){var t=[],r=e.value,o=e.key;if(\"array\"!==getType(r))return[new ValidationError(o,r,\"array expected, %s found\",getType(r))];if(2!==r.length)return[new ValidationError(o,r,\"array length %d expected, length %d found\",2,r.length)];if(c){if(\"object\"!==getType(r[0]))return[new ValidationError(o,r,\"object expected, %s found\",getType(r[0]))];if(void 0===r[0].zoom)return[new ValidationError(o,r,\"object stop key must have zoom\")];if(void 0===r[0].value)return[new ValidationError(o,r,\"object stop key must have value\")];if(l&&l>unbundle(r[0].zoom))return[new ValidationError(o,r[0].zoom,\"stop zoom values must appear in ascending order\")];unbundle(r[0].zoom)!==l&&(l=unbundle(r[0].zoom),i=void 0,s={}),t=t.concat(validateObject({key:o+\"[0]\",value:r[0],valueSpec:{zoom:{}},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:validateNumber,value:a}}))}else t=t.concat(a({key:o+\"[0]\",value:r[0],valueSpec:{},style:e.style,styleSpec:e.styleSpec}));return t.concat(validate({key:o+\"[1]\",value:r[1],valueSpec:u,style:e.style,styleSpec:e.styleSpec}))}function a(e){var t=getType(e.value),r=unbundle(e.value);if(n){if(t!==n)return[new ValidationError(e.key,e.value,\"%s stop domain type must match previous stop domain type %s\",t,n)]}else n=t;if(\"number\"!==t&&\"string\"!==t&&\"boolean\"!==t)return[new ValidationError(e.key,e.value,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==t&&\"categorical\"!==p){var a=\"number expected, %s found\";return u[\"property-function\"]&&void 0===p&&(a+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ValidationError(e.key,e.value,a,t)]}return\"categorical\"!==p||\"number\"!==t||isFinite(r)&&Math.floor(r)===r?\"categorical\"!==p&&\"number\"===t&&void 0!==i&&r<i?[new ValidationError(e.key,e.value,\"stop domain values must appear in ascending order\")]:(i=r,\"categorical\"===p&&r in s?[new ValidationError(e.key,e.value,\"stop domain values must be unique\")]:(s[r]=!0,[])):[new ValidationError(e.key,e.value,\"integer expected, found %s\",r)]}function o(e){return validate({key:e.key,value:e.value,valueSpec:u,style:e.style,styleSpec:e.styleSpec})}var n,i,l,u=e.valueSpec,p=unbundle(e.value.type),s={},y=\"categorical\"!==p&&void 0===e.value.property,d=!y,c=\"array\"===getType(e.value.stops)&&\"array\"===getType(e.value.stops[0])&&\"object\"===getType(e.value.stops[0][0]),v=validateObject({key:e.key,value:e.value,valueSpec:e.styleSpec.function,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:t,default:o}});return\"identity\"===p&&y&&v.push(new ValidationError(e.key,e.value,'missing required property \"property\"')),\"identity\"===p||e.value.stops||v.push(new ValidationError(e.key,e.value,'missing required property \"stops\"')),\"exponential\"===p&&\"piecewise-constant\"===e.valueSpec.function&&v.push(new ValidationError(e.key,e.value,\"exponential functions not supported\")),e.styleSpec.$version>=8&&(d&&!e.valueSpec[\"property-function\"]?v.push(new ValidationError(e.key,e.value,\"property functions not supported\")):y&&!e.valueSpec[\"zoom-function\"]&&v.push(new ValidationError(e.key,e.value,\"zoom functions not supported\"))),\"categorical\"!==p&&!c||void 0!==e.value.property||v.push(new ValidationError(e.key,e.value,'\"property\" property is required')),v};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate\":131,\"./validate_array\":132,\"./validate_number\":143,\"./validate_object\":144}],139:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateString=_dereq_(\"./validate_string\");module.exports=function(r){var e=r.value,t=r.key,a=validateString(r);return a.length?a:(-1===e.indexOf(\"{fontstack}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{range}\" token')),a)};\n},{\"../error/validation_error\":109,\"./validate_string\":148}],140:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateFilter=_dereq_(\"./validate_filter\"),validatePaintProperty=_dereq_(\"./validate_paint_property\"),validateLayoutProperty=_dereq_(\"./validate_layout_property\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=[],t=e.value,a=e.key,i=e.style,l=e.styleSpec;t.type||t.ref||r.push(new ValidationError(a,t,'either \"type\" or \"ref\" is required'));var u=unbundle(t.type),n=unbundle(t.ref);if(t.id)for(var o=unbundle(t.id),s=0;s<e.arrayIndex;s++){var d=i.layers[s];unbundle(d.id)===o&&r.push(new ValidationError(a,t.id,'duplicate layer id \"%s\", previously used at line %d',t.id,d.id.__line__))}if(\"ref\"in t){[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach(function(e){e in t&&r.push(new ValidationError(a,t[e],'\"%s\" is prohibited for ref layers',e))});var y;i.layers.forEach(function(e){unbundle(e.id)===n&&(y=e)}),y?y.ref?r.push(new ValidationError(a,t.ref,\"ref cannot reference another ref layer\")):u=unbundle(y.type):r.push(new ValidationError(a,t.ref,'ref layer \"%s\" not found',n))}else if(\"background\"!==u)if(t.source){var c=i.sources&&i.sources[t.source],p=c&&unbundle(c.type);c?\"vector\"===p&&\"raster\"===u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a raster source',t.id)):\"raster\"===p&&\"raster\"!==u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a vector source',t.id)):\"vector\"!==p||t[\"source-layer\"]||r.push(new ValidationError(a,t,'layer \"%s\" must specify a \"source-layer\"',t.id)):r.push(new ValidationError(a,t.source,'source \"%s\" not found',t.source))}else r.push(new ValidationError(a,t,'missing required property \"source\"'));return r=r.concat(validateObject({key:a,value:t,valueSpec:l.layer,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(){return[]},filter:validateFilter,layout:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validateLayoutProperty(extend({layerType:u},e))}}})},paint:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validatePaintProperty(extend({layerType:u},e))}}})}}}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/unbundle_jsonlint\":130,\"./validate_filter\":137,\"./validate_layout_property\":141,\"./validate_object\":144,\"./validate_paint_property\":145}],141:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"layout\")};\n},{\"./validate_property\":146}],142:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\");module.exports=function(e){var t=e.value,r=e.styleSpec,a=r.light,i=e.style,n=[],o=getType(t);if(void 0===t)return n;if(\"object\"!==o)return n=n.concat([new ValidationError(\"light\",t,\"object expected, %s found\",o)]);for(var l in t){var c=l.match(/^(.*)-transition$/);n=c&&a[c[1]]&&a[c[1]].transition?n.concat(validate({key:l,value:t[l],valueSpec:r.transition,style:i,styleSpec:r})):a[l]?n.concat(validate({key:l,value:t[l],valueSpec:a[l],style:i,styleSpec:r})):n.concat([new ValidationError(l,t[l],'unknown property \"%s\"',l)])}return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],143:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.key,i=e.value,m=e.valueSpec,a=getType(i);return\"number\"!==a?[new ValidationError(r,i,\"number expected, %s found\",a)]:\"minimum\"in m&&i<m.minimum?[new ValidationError(r,i,\"%s is less than the minimum value %s\",i,m.minimum)]:\"maximum\"in m&&i>m.maximum?[new ValidationError(r,i,\"%s is greater than the maximum value %s\",i,m.maximum)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],144:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validateSpec=_dereq_(\"./validate\");module.exports=function(e){var r=e.key,t=e.value,i=e.valueSpec||{},a=e.objectElementValidators||{},o=e.style,l=e.styleSpec,n=[],u=getType(t);if(\"object\"!==u)return[new ValidationError(r,t,\"object expected, %s found\",u)];for(var d in t){var p=d.split(\".\")[0],s=i[p]||i[\"*\"],c=void 0;if(a[p])c=a[p];else if(i[p])c=validateSpec;else if(a[\"*\"])c=a[\"*\"];else{if(!i[\"*\"]){n.push(new ValidationError(r,t[d],'unknown property \"%s\"',d));continue}c=validateSpec}n=n.concat(c({key:(r?r+\".\":r)+d,value:t[d],valueSpec:s,style:o,styleSpec:l,object:t,objectKey:d}))}for(var v in i)i[v].required&&void 0===i[v].default&&void 0===t[v]&&n.push(new ValidationError(r,t,'missing required property \"%s\"',v));return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],145:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"paint\")};\n},{\"./validate_property\":146}],146:[function(_dereq_,module,exports){\n\"use strict\";var validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(e,t){var r=e.key,i=e.style,a=e.styleSpec,n=e.value,o=e.objectKey,l=a[t+\"_\"+e.layerType];if(!l)return[];var y=o.match(/^(.*)-transition$/);if(\"paint\"===t&&y&&l[y[1]]&&l[y[1]].transition)return validate({key:r,value:n,valueSpec:a.transition,style:i,styleSpec:a});var p=e.valueSpec||l[o];if(!p)return[new ValidationError(r,n,'unknown property \"%s\"',o)];var s;if(\"string\"===getType(n)&&p[\"property-function\"]&&!p.tokens&&(s=/^{([^}]+)}$/.exec(n)))return[new ValidationError(r,n,'\"%s\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": %s` }`.',o,JSON.stringify(s[1]))];var u=[];return\"symbol\"===e.layerType&&\"text-field\"===o&&i&&!i.glyphs&&u.push(new ValidationError(r,n,'use of \"text-field\" requires a style \"glyphs\" property')),u.concat(validate({key:e.key,value:n,valueSpec:p,style:i,styleSpec:a}))};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],147:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateEnum=_dereq_(\"./validate_enum\");module.exports=function(e){var a=e.value,t=e.key,r=e.styleSpec,l=e.style;if(!a.type)return[new ValidationError(t,a,'\"type\" is required')];var u=unbundle(a.type),i=[];switch(u){case\"vector\":case\"raster\":if(i=i.concat(validateObject({key:t,value:a,valueSpec:r.source_tile,style:e.style,styleSpec:r})),\"url\"in a)for(var s in a)[\"type\",\"url\",\"tileSize\"].indexOf(s)<0&&i.push(new ValidationError(t+\".\"+s,a[s],'a source with a \"url\" property may not include a \"%s\" property',s));return i;case\"geojson\":return validateObject({key:t,value:a,valueSpec:r.source_geojson,style:l,styleSpec:r});case\"video\":return validateObject({key:t,value:a,valueSpec:r.source_video,style:l,styleSpec:r});case\"image\":return validateObject({key:t,value:a,valueSpec:r.source_image,style:l,styleSpec:r});case\"canvas\":return validateObject({key:t,value:a,valueSpec:r.source_canvas,style:l,styleSpec:r});default:return validateEnum({key:t+\".type\",value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"]},style:l,styleSpec:r})}};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136,\"./validate_object\":144}],148:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(r){var e=r.value,t=r.key,i=getType(e);return\"string\"!==i?[new ValidationError(t,e,\"string expected, %s found\",i)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],149:[function(_dereq_,module,exports){\n\"use strict\";function validateStyleMin(e,a){a=a||latestStyleSpec;var t=[];return t=t.concat(validate({key:\"\",value:e,valueSpec:a.$root,styleSpec:a,style:e,objectElementValidators:{glyphs:validateGlyphsURL,\"*\":function(){return[]}}})),a.$version>7&&e.constants&&(t=t.concat(validateConstants({key:\"constants\",value:e.constants,style:e,styleSpec:a}))),sortErrors(t)}function sortErrors(e){return[].concat(e).sort(function(e,a){return e.line-a.line})}function wrapCleanErrors(e){return function(){return sortErrors(e.apply(this,arguments))}}var validateConstants=_dereq_(\"./validate/validate_constants\"),validate=_dereq_(\"./validate/validate\"),latestStyleSpec=_dereq_(\"./reference/latest\"),validateGlyphsURL=_dereq_(\"./validate/validate_glyphs_url\");validateStyleMin.source=wrapCleanErrors(_dereq_(\"./validate/validate_source\")),validateStyleMin.light=wrapCleanErrors(_dereq_(\"./validate/validate_light\")),validateStyleMin.layer=wrapCleanErrors(_dereq_(\"./validate/validate_layer\")),validateStyleMin.filter=wrapCleanErrors(_dereq_(\"./validate/validate_filter\")),validateStyleMin.paintProperty=wrapCleanErrors(_dereq_(\"./validate/validate_paint_property\")),validateStyleMin.layoutProperty=wrapCleanErrors(_dereq_(\"./validate/validate_layout_property\")),module.exports=validateStyleMin;\n},{\"./reference/latest\":123,\"./validate/validate\":131,\"./validate/validate_constants\":135,\"./validate/validate_filter\":137,\"./validate/validate_glyphs_url\":139,\"./validate/validate_layer\":140,\"./validate/validate_layout_property\":141,\"./validate/validate_light\":142,\"./validate/validate_paint_property\":145,\"./validate/validate_source\":147}],150:[function(_dereq_,module,exports){\n\"use strict\";var AnimationLoop=function(){this.n=0,this.times=[]};AnimationLoop.prototype.stopped=function(){return this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()}),!this.times.length},AnimationLoop.prototype.set=function(t){return this.times.push({id:this.n,time:t+(new Date).getTime()}),this.n++},AnimationLoop.prototype.cancel=function(t){this.times=this.times.filter(function(i){return i.id!==t})},module.exports=AnimationLoop;\n},{}],151:[function(_dereq_,module,exports){\n\"use strict\";var styleSpec=_dereq_(\"../style-spec/reference/latest\"),util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),validateStyle=_dereq_(\"./validate_style\"),StyleDeclaration=_dereq_(\"./style_declaration\"),StyleTransition=_dereq_(\"./style_transition\"),TRANSITION_SUFFIX=\"-transition\",properties=[\"anchor\",\"color\",\"position\",\"intensity\"],specifications=styleSpec.light,Light=function(t){function i(i){t.call(this),this.set(i)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.set=function(t){var i=this;if(!this._validate(validateStyle.light,t)){this._declarations={},this._transitions={},this._transitionOptions={},this.calculated={},t=util.extend({anchor:specifications.anchor.default,color:specifications.color.default,position:specifications.position.default,intensity:specifications.intensity.default},t);for(var e=0,o=properties;e<o.length;e+=1){var n=o[e];i._declarations[n]=new StyleDeclaration(specifications[n],t[n])}return this}},i.prototype.getLight=function(){return{anchor:this.getLightProperty(\"anchor\"),color:this.getLightProperty(\"color\"),position:this.getLightProperty(\"position\"),intensity:this.getLightProperty(\"intensity\")}},i.prototype.getLightProperty=function(t){return util.endsWith(t,TRANSITION_SUFFIX)?this._transitionOptions[t]:this._declarations[t]&&this._declarations[t].value},i.prototype.getLightValue=function(t,i){if(\"position\"===t){var e=this._transitions[t].calculate(i),o=util.sphericalToCartesian(e);return{x:o[0],y:o[1],z:o[2]}}return this._transitions[t].calculate(i)},i.prototype.setLight=function(t){var i=this;if(!this._validate(validateStyle.light,t))for(var e in t){var o=t[e];util.endsWith(e,TRANSITION_SUFFIX)?i._transitionOptions[e]=o:null===o||void 0===o?delete i._declarations[e]:i._declarations[e]=new StyleDeclaration(specifications[e],o)}},i.prototype.recalculate=function(t){var i=this;for(var e in i._declarations)i.calculated[e]=i.getLightValue(e,{zoom:t})},i.prototype._applyLightDeclaration=function(t,i,e,o,n){var r=e.transition?this._transitions[t]:void 0,a=specifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(a,a.default)),!r||r.declaration.json!==i.json){var s=util.extend({duration:300,delay:0},o,this.getLightProperty(t+TRANSITION_SUFFIX)),l=this._transitions[t]=new StyleTransition(a,i,r,s);l.instant()||(l.loopID=n.set(l.endTime-Date.now())),r&&n.cancel(r.loopID)}},i.prototype.updateLightTransitions=function(t,i,e){var o,n=this;for(o in n._declarations)n._applyLightDeclaration(o,n._declarations[o],t,i,e)},i.prototype._validate=function(t,i){return validateStyle.emitErrors(this,t.call(validateStyle,util.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:styleSpec})))},i}(Evented);module.exports=Light;\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./style_declaration\":157,\"./style_transition\":165,\"./validate_style\":166}],152:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/mapbox\"),normalizeGlyphsURL=ref.normalizeGlyphsURL,ajax=_dereq_(\"../util/ajax\"),parseGlyphPBF=_dereq_(\"./parse_glyph_pbf\");module.exports=function(e,r,a,l,p){var i=256*r,s=i+255,t=l(normalizeGlyphsURL(a).replace(\"{fontstack}\",e).replace(\"{range}\",i+\"-\"+s),ajax.ResourceType.Glyphs);ajax.getArrayBuffer(t,function(e,r){if(e)p(e);else if(r){for(var a={},l=0,i=parseGlyphPBF(r.data);l<i.length;l+=1){var s=i[l];a[s.id]=s}p(null,a)}})};\n},{\"../util/ajax\":201,\"../util/mapbox\":217,\"./parse_glyph_pbf\":154}],153:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),ref=_dereq_(\"../util/mapbox\"),normalizeSpriteURL=ref.normalizeSpriteURL,ref$1=_dereq_(\"../util/image\"),RGBAImage=ref$1.RGBAImage;module.exports=function(e,r,i){function a(){if(u)i(u);else if(t&&o){var e=browser.getImageData(o),r={};for(var a in t){var n=t[a],l=n.width,g=n.height,x=n.x,f=n.y,m=n.sdf,p=n.pixelRatio,s=RGBAImage.create({width:l,height:g});RGBAImage.copy(e,s,{x:x,y:f},{x:0,y:0},{width:l,height:g}),r[a]={data:s,pixelRatio:p,sdf:m}}i(null,r)}}if(!e)return void i(null,{});var t,o,u,n=browser.devicePixelRatio>1?\"@2x\":\"\";ajax.getJSON(r(normalizeSpriteURL(e,n,\".json\"),ajax.ResourceType.SpriteJSON),function(e,r){u||(u=e,t=r,a())}),ajax.getImage(r(normalizeSpriteURL(e,n,\".png\"),ajax.ResourceType.SpriteImage),function(e,r){u||(u=e,o=r,a())})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/image\":213,\"../util/mapbox\":217}],154:[function(_dereq_,module,exports){\n\"use strict\";function readFontstacks(e,a,r){1===e&&r.readMessage(readFontstack,a)}function readFontstack(e,a,r){if(3===e){var t=r.readMessage(readGlyph,{}),d=t.id,i=t.bitmap,n=t.width,o=t.height,h=t.left,s=t.top,p=t.advance;a.push({id:d,bitmap:AlphaImage.create({width:n+2*border,height:o+2*border},i),metrics:{width:n,height:o,left:h,top:s,advance:p}})}}function readGlyph(e,a,r){1===e?a.id=r.readVarint():2===e?a.bitmap=r.readBytes():3===e?a.width=r.readVarint():4===e?a.height=r.readVarint():5===e?a.left=r.readSVarint():6===e?a.top=r.readSVarint():7===e&&(a.advance=r.readVarint())}var ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,Protobuf=_dereq_(\"pbf\"),border=3;module.exports=function(e){return new Protobuf(e).readFields(readFontstacks,[])},module.exports.GLYPH_PBF_BORDER=border;\n},{\"../util/image\":213,\"pbf\":29}],155:[function(_dereq_,module,exports){\n\"use strict\";function getMaximumPaintValue(t,a,e){return a.isPaintValueFeatureConstant(t)?a.paint[t]:e.programConfigurations.get(a.id).paintPropertyStatistics[t].max}function translateDistance(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function translate(t,a,e,n,r){if(!a[0]&&!a[1])return t;var i=Point.convert(a);\"viewport\"===e&&i._rotate(-n);for(var u=[],s=0;s<t.length;s++){for(var o=t[s],l=[],m=0;m<o.length;m++)l.push(o[m].sub(i._mult(r)));u.push(l)}return u}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports={getMaximumPaintValue:getMaximumPaintValue,translateDistance:translateDistance,translate:translate};\n},{\"@mapbox/point-geometry\":2}],156:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),StyleLayer=_dereq_(\"./style_layer\"),loadSprite=_dereq_(\"./load_sprite\"),ImageManager=_dereq_(\"../render/image_manager\"),GlyphManager=_dereq_(\"../render/glyph_manager\"),Light=_dereq_(\"./light\"),LineAtlas=_dereq_(\"../render/line_atlas\"),util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),mapbox=_dereq_(\"../util/mapbox\"),browser=_dereq_(\"../util/browser\"),Dispatcher=_dereq_(\"../util/dispatcher\"),AnimationLoop=_dereq_(\"./animation_loop\"),validateStyle=_dereq_(\"./validate_style\"),getSourceType=_dereq_(\"../source/source\").getType,setSourceType=_dereq_(\"../source/source\").setType,QueryFeatures=_dereq_(\"../source/query_features\"),SourceCache=_dereq_(\"../source/source_cache\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),MapboxGLFunction=_dereq_(\"../style-spec/function\"),getWorkerPool=_dereq_(\"../util/global_worker_pool\"),deref=_dereq_(\"../style-spec/deref\"),diff=_dereq_(\"../style-spec/diff\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),supportedDiffOperations=util.pick(diff.operations,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\"]),ignoredDiffOperations=util.pick(diff.operations,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Style=function(e){function t(t,r,a){var i=this;e.call(this),a=util.extend({validate:\"string\"!=typeof t||!mapbox.isMapboxURL(t)},a);var o=function(e,t){return i.map?i.map._transformRequest(e,t):{url:e}};this.map=r,this.animationLoop=r&&r.animationLoop||new AnimationLoop,this.dispatcher=new Dispatcher(getWorkerPool(),this),this.imageManager=new ImageManager,this.glyphManager=new GlyphManager(o,a.localIdeographFontFamily),this.lineAtlas=new LineAtlas(256,512),this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory={},this._loaded=!1,util.bindAll([\"_redoPlacement\"],this),this._resetUpdates(),this.setEventedParent(r),this.fire(\"dataloading\",{dataType:\"style\"});var s=this;this._rtlTextPluginCallback=rtlTextPlugin.registerForPluginAvailability(function(e){s.dispatcher.broadcast(\"loadRTLTextPlugin\",e.pluginBlobURL,e.errorCallback);for(var t in s.sourceCaches)s.sourceCaches[t].reload()});var n=function(e,t){if(e)i.fire(\"error\",{error:e});else if(t){if(a.validate&&validateStyle.emitErrors(i,validateStyle(t)))return;i._loaded=!0,i.stylesheet=t,i.updateClasses();for(var r in t.sources)i.addSource(r,t.sources[r],a);loadSprite(t.sprite,o,function(e,t){if(e)i.fire(\"error\",e);else if(t)for(var r in t)i.imageManager.addImage(r,t[r]);i.imageManager.setLoaded(!0)}),i.glyphManager.setURL(t.glyphs),i._resolve(),i.fire(\"data\",{dataType:\"style\"}),i.fire(\"style.load\")}};\"string\"==typeof t?ajax.getJSON(o(mapbox.normalizeStyleURL(t),ajax.ResourceType.Style),n):browser.frame(function(){return n(null,t)}),this.on(\"data\",function(e){if(\"source\"===e.dataType&&\"metadata\"===e.sourceDataType){var t=i.sourceCaches[e.sourceId];if(t){var r=t.getSource();if(r&&r.vectorLayerIds)for(var a in i._layers){var o=i._layers[a];o.source===r.id&&i._validateLayer(o)}}}})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype._validateLayer=function(e){var t=this.sourceCaches[e.source];if(t){var r=e.sourceLayer;if(r){var a=t.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(r))&&this.fire(\"error\",{error:new Error('Source layer \"'+r+'\" does not exist on source \"'+a.id+'\" as specified by style layer \"'+e.id+'\"')})}}},t.prototype.loaded=function(){var e=this;if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in e.sourceCaches)if(!e.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},t.prototype._resolve=function(){var e=this,t=deref(this.stylesheet.layers);this._order=t.map(function(e){return e.id}),this._layers={};for(var r=0,a=t;r<a.length;r+=1){var i=a[r];i=StyleLayer.create(i),i.setEventedParent(e,{layer:{id:i.id}}),e._layers[i.id]=i}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new Light(this.stylesheet.light)},t.prototype._serializeLayers=function(e){var t=this;return e.map(function(e){return t._layers[e].serialize()})},t.prototype._applyClasses=function(e,t){var r=this;if(this._loaded){e=e||[],t=t||{transition:!0};var a=this.stylesheet.transition||{},i=this._updatedAllPaintProps?this._layers:this._updatedPaintProps;for(var o in i){var s=r._layers[o],n=r._updatedPaintProps[o];if(r._updatedAllPaintProps||n.all)s.updatePaintTransitions(e,t,a,r.animationLoop,r.zoomHistory);else for(var l in n)r._layers[o].updatePaintTransition(l,e,t,a,r.animationLoop,r.zoomHistory)}this.light.updateLightTransitions(t,a,this.animationLoop)}},t.prototype._recalculate=function(e){var t=this;if(this._loaded){for(var r in t.sourceCaches)t.sourceCaches[r].used=!1;this._updateZoomHistory(e);for(var a=0,i=t._order;a<i.length;a+=1){var o=i[a],s=t._layers[o];s.recalculate(e),!s.isHidden(e)&&s.source&&(t.sourceCaches[s.source].used=!0)}this.light.recalculate(e);Math.floor(this.z)!==Math.floor(e)&&this.animationLoop.set(300),this.z=e}},t.prototype._updateZoomHistory=function(e){var t=this.zoomHistory;void 0===t.lastIntegerZoom&&(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=0,t.lastZoom=e),Math.floor(t.lastZoom)<Math.floor(e)?(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=Date.now()):Math.floor(t.lastZoom)>Math.floor(e)&&(t.lastIntegerZoom=Math.floor(e+1),t.lastIntegerZoomTime=Date.now()),t.lastZoom=e},t.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},t.prototype.update=function(e,t){var r=this;if(this._changed){var a=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(a.length||i.length||this._updatedSymbolOrder)&&this._updateWorkerLayers(a,i);for(var o in r._updatedSources){var s=r._updatedSources[o];\"reload\"===s?r._reloadSource(o):\"clear\"===s&&r._clearSource(o)}this._applyClasses(e,t),this._resetUpdates(),this.fire(\"data\",{dataType:\"style\"})}},t.prototype._updateWorkerLayers=function(e,t){var r=this,a=this._updatedSymbolOrder?this._order.filter(function(e){return\"symbol\"===r._layers[e].type}):null;this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t,symbolOrder:a})},t.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSymbolOrder=!1,this._updatedSources={},this._updatedPaintProps={},this._updatedAllPaintProps=!1},t.prototype.setState=function(e){var t=this;if(this._checkLoaded(),validateStyle.emitErrors(this,validateStyle(e)))return!1;e=util.clone(e),e.layers=deref(e.layers);var r=diff(this.serialize(),e).filter(function(e){return!(e.command in ignoredDiffOperations)});if(0===r.length)return!1;var a=r.filter(function(e){return!(e.command in supportedDiffOperations)});if(a.length>0)throw new Error(\"Unimplemented: \"+a.map(function(e){return e.command}).join(\", \")+\".\");return r.forEach(function(e){\"setTransition\"!==e.command&&t[e.command].apply(t,e.args)}),this.stylesheet=e,!0},t.prototype.addImage=function(e,t){if(this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"An image with this name already exists.\")});this.imageManager.addImage(e,t),this.fire(\"data\",{dataType:\"style\"})},t.prototype.removeImage=function(e){if(!this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"No image with this name exists.\")});this.imageManager.removeImage(e),this.fire(\"data\",{dataType:\"style\"})},t.prototype.addSource=function(e,t,r){var a=this;if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!t.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(t).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"].indexOf(t.type)>=0&&this._validate(validateStyle.source,\"sources.\"+e,t,null,r))){var i=this.sourceCaches[e]=new SourceCache(e,t,this.dispatcher);i.style=this,i.setEventedParent(this,function(){return{isSourceLoaded:a.loaded(),source:i.serialize(),sourceId:e}}),i.onAdd(this.map),this._changed=!0}},t.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");var t=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],t.fire(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e}),t.setEventedParent(null),t.clearTiles(),t.onRemove&&t.onRemove(this.map),this._changed=!0},t.prototype.getSource=function(e){return this.sourceCaches[e]&&this.sourceCaches[e].getSource()},t.prototype.addLayer=function(e,t,r){this._checkLoaded();var a=e.id;if(\"object\"==typeof e.source&&(this.addSource(a,e.source),e=util.clone(e),e=util.extend(e,{source:a})),!this._validate(validateStyle.layer,\"layers.\"+a,e,{arrayIndex:-1},r)){var i=StyleLayer.create(e);this._validateLayer(i),i.setEventedParent(this,{layer:{id:a}});var o=t?this._order.indexOf(t):this._order.length;if(this._order.splice(o,0,a),this._layers[a]=i,this._removedLayers[a]&&i.source){var s=this._removedLayers[a];delete this._removedLayers[a],s.type!==i.type?this._updatedSources[i.source]=\"clear\":(this._updatedSources[i.source]=\"reload\",this.sourceCaches[i.source].pause())}this._updateLayer(i),\"symbol\"===i.type&&(this._updatedSymbolOrder=!0),this.updateClasses(a)}},t.prototype.moveLayer=function(e,t){this._checkLoaded(),this._changed=!0;var r=this._layers[e];if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")});var a=this._order.indexOf(e);this._order.splice(a,1);var i=t?this._order.indexOf(t):this._order.length;this._order.splice(i,0,e),\"symbol\"===r.type&&(this._updatedSymbolOrder=!0,r.source&&!this._updatedSources[r.source]&&(this._updatedSources[r.source]=\"reload\",this.sourceCaches[r.source].pause()))},t.prototype.removeLayer=function(e){this._checkLoaded();var t=this._layers[e];if(!t)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")});t.setEventedParent(null);var r=this._order.indexOf(e);this._order.splice(r,1),\"symbol\"===t.type&&(this._updatedSymbolOrder=!0),this._changed=!0,this._removedLayers[e]=t,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e]},t.prototype.getLayer=function(e){return this._layers[e]},t.prototype.setLayerZoomRange=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")});a.minzoom===t&&a.maxzoom===r||(null!=t&&(a.minzoom=t),null!=r&&(a.maxzoom=r),this._updateLayer(a))},t.prototype.setFilter=function(e,t){this._checkLoaded();var r=this.getLayer(e);if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")});null!==t&&void 0!==t&&this._validate(validateStyle.filter,\"layers.\"+r.id+\".filter\",t)||util.deepEqual(r.filter,t)||(r.filter=util.clone(t),this._updateLayer(r))},t.prototype.getFilter=function(e){return util.clone(this.getLayer(e).filter)},t.prototype.setLayoutProperty=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});util.deepEqual(a.getLayoutProperty(t),r)||(a.setLayoutProperty(t,r),this._updateLayer(a))},t.prototype.getLayoutProperty=function(e,t){return this.getLayer(e).getLayoutProperty(t)},t.prototype.setPaintProperty=function(e,t,r,a){this._checkLoaded();var i=this.getLayer(e);if(!i)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});if(!util.deepEqual(i.getPaintProperty(t,a),r)){var o=i.isPaintValueFeatureConstant(t);i.setPaintProperty(t,r,a);!(r&&MapboxGLFunction.isFunctionDefinition(r)&&\"$zoom\"!==r.property&&void 0!==r.property)&&o||this._updateLayer(i),this.updateClasses(e,t)}},t.prototype.getPaintProperty=function(e,t,r){return this.getLayer(e).getPaintProperty(t,r)},t.prototype.getTransition=function(){return util.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},t.prototype.updateClasses=function(e,t){if(this._changed=!0,e){var r=this._updatedPaintProps;r[e]||(r[e]={}),r[e][t||\"all\"]=!0}else this._updatedAllPaintProps=!0},t.prototype.serialize=function(){var e=this;return util.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:util.mapObject(this.sourceCaches,function(e){return e.serialize()}),layers:this._order.map(function(t){return e._layers[t].serialize()})},function(e){return void 0!==e})},t.prototype._updateLayer=function(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&(this._updatedSources[e.source]=\"reload\",this.sourceCaches[e.source].pause()),this._changed=!0},t.prototype._flattenRenderedFeatures=function(e){for(var t=this,r=[],a=this._order.length-1;a>=0;a--)for(var i=t._order[a],o=0,s=e;o<s.length;o+=1){var n=s[o],l=n[i];if(l)for(var u=0,d=l;u<d.length;u+=1){var h=d[u];r.push(h)}}return r},t.prototype.queryRenderedFeatures=function(e,t,r,a){var i=this;t&&t.filter&&this._validate(validateStyle.filter,\"queryRenderedFeatures.filter\",t.filter);var o={};if(t&&t.layers){if(!Array.isArray(t.layers))return this.fire(\"error\",{error:\"parameters.layers must be an Array.\"}),[];for(var s=0,n=t.layers;s<n.length;s+=1){var l=n[s],u=i._layers[l];if(!u)return i.fire(\"error\",{error:\"The layer '\"+l+\"' does not exist in the map's style and cannot be queried for features.\"}),[];o[u.source]=!0}}var d=[];for(var h in i.sourceCaches)if(!t.layers||o[h]){var c=QueryFeatures.rendered(i.sourceCaches[h],i._layers,e,t,r,a);d.push(c)}return this._flattenRenderedFeatures(d)},t.prototype.querySourceFeatures=function(e,t){t&&t.filter&&this._validate(validateStyle.filter,\"querySourceFeatures.filter\",t.filter);var r=this.sourceCaches[e];return r?QueryFeatures.source(r,t):[]},t.prototype.addSourceType=function(e,t,r){return getSourceType(e)?r(new Error('A source type called \"'+e+'\" already exists.')):(setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},r):r(null,null))},t.prototype.getLight=function(){return this.light.getLight()},t.prototype.setLight=function(e,t){this._checkLoaded();var r=this.light.getLight(),a=!1;for(var i in e)if(!util.deepEqual(e[i],r[i])){a=!0;break}if(a){var o=this.stylesheet.transition||{};this.light.setLight(e),this.light.updateLightTransitions(t||{transition:!0},o,this.animationLoop)}},t.prototype._validate=function(e,t,r,a,i){return(!i||!1!==i.validate)&&validateStyle.emitErrors(this,e.call(validateStyle,util.extend({key:t,style:this.serialize(),value:r,styleSpec:styleSpec},a)))},t.prototype._remove=function(){var e=this;rtlTextPlugin.evented.off(\"pluginAvailable\",this._rtlTextPluginCallback);for(var t in e.sourceCaches)e.sourceCaches[t].clearTiles();this.dispatcher.remove()},t.prototype._clearSource=function(e){this.sourceCaches[e].clearTiles()},t.prototype._reloadSource=function(e){this.sourceCaches[e].resume(),this.sourceCaches[e].reload()},t.prototype._updateSources=function(e){var t=this;for(var r in t.sourceCaches)t.sourceCaches[r].update(e)},t.prototype._redoPlacement=function(){var e=this;for(var t in e.sourceCaches)e.sourceCaches[t].redoPlacement()},t.prototype.getImages=function(e,t,r){this.imageManager.getImages(t.icons,r)},t.prototype.getGlyphs=function(e,t,r){this.glyphManager.getGlyphs(t.stacks,r)},t}(Evented);module.exports=Style;\n},{\"../render/glyph_manager\":75,\"../render/image_manager\":77,\"../render/line_atlas\":78,\"../source/query_features\":94,\"../source/rtl_text_plugin\":96,\"../source/source\":97,\"../source/source_cache\":98,\"../style-spec/deref\":107,\"../style-spec/diff\":108,\"../style-spec/function\":112,\"../style-spec/reference/latest\":123,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dispatcher\":208,\"../util/evented\":210,\"../util/global_worker_pool\":212,\"../util/mapbox\":217,\"../util/util\":223,\"./animation_loop\":150,\"./light\":151,\"./load_sprite\":153,\"./style_layer\":158,\"./validate_style\":166}],157:[function(_dereq_,module,exports){\n\"use strict\";var createFunction=_dereq_(\"../style-spec/function\"),util=_dereq_(\"../util/util\"),StyleDeclaration=function(t,i){var o=this;if(this.value=util.clone(i),this.isFunction=createFunction.isFunctionDefinition(i),this.json=JSON.stringify(this.value),this.minimum=t.minimum,this.function=createFunction(this.value,t),this.isFeatureConstant=this.function.isFeatureConstant,this.isZoomConstant=this.function.isZoomConstant,this.isFeatureConstant||this.isZoomConstant){if(!this.isZoomConstant){this.stopZoomLevels=[];for(var n=0,s=o.value.stops;n<s.length;n+=1){var e=s[n];o.stopZoomLevels.indexOf(e[0])<0&&o.stopZoomLevels.push(e[0])}}}else{this.stopZoomLevels=[];for(var a=[],u=0,l=o.value.stops;u<l.length;u+=1){var r=l[u],c=r[0].zoom;o.stopZoomLevels.indexOf(c)<0&&(o.stopZoomLevels.push(c),a.push([c,a.length]))}this._functionInterpolationT=createFunction({type:\"exponential\",stops:a,base:i.base},{type:\"number\"})}};StyleDeclaration.prototype.calculate=function(t,i){var o=this.function(t&&t.zoom,i||{});return void 0!==this.minimum&&o<this.minimum?this.minimum:o},StyleDeclaration.prototype.calculateInterpolationT=function(t){return this.isFeatureConstant||this.isZoomConstant?0:this._functionInterpolationT(t&&t.zoom,{})},module.exports=StyleDeclaration;\n},{\"../style-spec/function\":112,\"../util/util\":223}],158:[function(_dereq_,module,exports){\n\"use strict\";function getDeclarationValue(t){return t.value}var util=_dereq_(\"../util/util\"),StyleTransition=_dereq_(\"./style_transition\"),StyleDeclaration=_dereq_(\"./style_declaration\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),validateStyle=_dereq_(\"./validate_style\"),parseColor=_dereq_(\"./../style-spec/util/parse_color\"),Evented=_dereq_(\"../util/evented\"),TRANSITION_SUFFIX=\"-transition\",StyleLayer=function(t){function i(i){var e=this;t.call(this),this.id=i.id,this.metadata=i.metadata,this.type=i.type,this.minzoom=i.minzoom,this.maxzoom=i.maxzoom,\"background\"!==i.type&&(this.source=i.source,this.sourceLayer=i[\"source-layer\"],this.filter=i.filter),this.paint={},this.layout={},this._paintSpecifications=styleSpec[\"paint_\"+this.type],this._layoutSpecifications=styleSpec[\"layout_\"+this.type],this._paintTransitions={},this._paintTransitionOptions={},this._paintDeclarations={},this._layoutDeclarations={},this._layoutFunctions={};var a,o,n={validate:!1};for(var r in i){var s=r.match(/^paint(?:\\.(.*))?$/);if(s){var l=s[1]||\"\";for(a in i[r])e.setPaintProperty(a,i[r][a],l,n)}}for(o in i.layout)e.setLayoutProperty(o,i.layout[o],n);for(a in e._paintSpecifications)e.paint[a]=e.getPaintValue(a);for(o in e._layoutSpecifications)e._updateLayoutValue(o)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.setLayoutProperty=function(t,i,e){if(null==i)delete this._layoutDeclarations[t];else{var a=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(validateStyle.layoutProperty,a,t,i,e))return;this._layoutDeclarations[t]=new StyleDeclaration(this._layoutSpecifications[t],i)}this._updateLayoutValue(t)},i.prototype.getLayoutProperty=function(t){return this._layoutDeclarations[t]&&this._layoutDeclarations[t].value},i.prototype.getLayoutValue=function(t,i,e){var a=this._layoutSpecifications[t],o=this._layoutDeclarations[t];return o?o.calculate(i,e):a.default},i.prototype.setPaintProperty=function(t,i,e,a){var o=\"layers.\"+this.id+(e?'[\"paint.'+e+'\"].':\".paint.\")+t;if(util.endsWith(t,TRANSITION_SUFFIX))if(this._paintTransitionOptions[e||\"\"]||(this._paintTransitionOptions[e||\"\"]={}),null===i||void 0===i)delete this._paintTransitionOptions[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintTransitionOptions[e||\"\"][t]=i}else if(this._paintDeclarations[e||\"\"]||(this._paintDeclarations[e||\"\"]={}),null===i||void 0===i)delete this._paintDeclarations[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintDeclarations[e||\"\"][t]=new StyleDeclaration(this._paintSpecifications[t],i)}},i.prototype.getPaintProperty=function(t,i){return i=i||\"\",util.endsWith(t,TRANSITION_SUFFIX)?this._paintTransitionOptions[i]&&this._paintTransitionOptions[i][t]:this._paintDeclarations[i]&&this._paintDeclarations[i][t]&&this._paintDeclarations[i][t].value},i.prototype.getPaintValue=function(t,i,e){var a=this._paintSpecifications[t],o=this._paintTransitions[t];return o?o.calculate(i,e):\"color\"===a.type&&a.default?parseColor(a.default):a.default},i.prototype.getPaintValueStopZoomLevels=function(t){var i=this._paintTransitions[t];return i?i.declaration.stopZoomLevels:[]},i.prototype.getLayoutValueStopZoomLevels=function(t){var i=this._layoutDeclarations[t];return i?i.stopZoomLevels:[]},i.prototype.getPaintInterpolationT=function(t,i){return this._paintTransitions[t].declaration.calculateInterpolationT(i)},i.prototype.getLayoutInterpolationT=function(t,i){return this._layoutDeclarations[t].calculateInterpolationT(i)},i.prototype.isPaintValueFeatureConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isFeatureConstant},i.prototype.isLayoutValueFeatureConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isFeatureConstant},i.prototype.isPaintValueZoomConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isZoomConstant},i.prototype.isLayoutValueZoomConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isZoomConstant},i.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||(!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.layout.visibility)},i.prototype.updatePaintTransitions=function(t,i,e,a,o){for(var n=this,r=util.extend({},this._paintDeclarations[\"\"]),s=0;s<t.length;s++)util.extend(r,n._paintDeclarations[t[s]]);var l;for(l in r)n._applyPaintDeclaration(l,r[l],i,e,a,o);for(l in n._paintTransitions)l in r||n._applyPaintDeclaration(l,null,i,e,a,o)},i.prototype.updatePaintTransition=function(t,i,e,a,o,n){for(var r=this,s=this._paintDeclarations[\"\"][t],l=0;l<i.length;l++){var u=r._paintDeclarations[i[l]];u&&u[t]&&(s=u[t])}this._applyPaintDeclaration(t,s,e,a,o,n)},i.prototype.recalculate=function(t){var i=this;for(var e in i._paintTransitions)i.paint[e]=i.getPaintValue(e,{zoom:t});for(var a in i._layoutFunctions)i.layout[a]=i.getLayoutValue(a,{zoom:t})},i.prototype.serialize=function(){var t=this,i={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:util.mapObject(this._layoutDeclarations,getDeclarationValue)};for(var e in t._paintDeclarations){i[\"\"===e?\"paint\":\"paint.\"+e]=util.mapObject(t._paintDeclarations[e],getDeclarationValue)}return util.filterObject(i,function(t,i){return void 0!==t&&!(\"layout\"===i&&!Object.keys(t).length)})},i.prototype._applyPaintDeclaration=function(t,i,e,a,o,n){var r=e.transition?this._paintTransitions[t]:void 0,s=this._paintSpecifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(s,s.default)),!r||r.declaration.json!==i.json){var l=util.extend({duration:300,delay:0},a,this.getPaintProperty(t+TRANSITION_SUFFIX)),u=this._paintTransitions[t]=new StyleTransition(s,i,r,l,n);u.instant()||(u.loopID=o.set(u.endTime-Date.now())),r&&o.cancel(r.loopID)}},i.prototype._updateLayoutValue=function(t){var i=this._layoutDeclarations[t];i&&i.isFunction?this._layoutFunctions[t]=!0:(delete this._layoutFunctions[t],this.layout[t]=this.getLayoutValue(t))},i.prototype._validate=function(t,i,e,a,o){return(!o||!1!==o.validate)&&validateStyle.emitErrors(this,t.call(validateStyle,{key:i,layerType:this.type,objectKey:e,value:a,styleSpec:styleSpec,style:{glyphs:!0,sprite:!0}}))},i.prototype.has3DPass=function(){return!1},i}(Evented);module.exports=StyleLayer;var subclasses={circle:_dereq_(\"./style_layer/circle_style_layer\"),fill:_dereq_(\"./style_layer/fill_style_layer\"),\"fill-extrusion\":_dereq_(\"./style_layer/fill_extrusion_style_layer\"),line:_dereq_(\"./style_layer/line_style_layer\"),symbol:_dereq_(\"./style_layer/symbol_style_layer\"),background:StyleLayer,raster:StyleLayer};StyleLayer.create=function(t){return new subclasses[t.type](t)};\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./../style-spec/util/parse_color\":128,\"./style_declaration\":157,\"./style_layer/circle_style_layer\":159,\"./style_layer/fill_extrusion_style_layer\":160,\"./style_layer/fill_style_layer\":161,\"./style_layer/line_style_layer\":162,\"./style_layer/symbol_style_layer\":163,\"./style_transition\":165,\"./validate_style\":166}],159:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),CircleBucket=_dereq_(\"../../data/bucket/circle_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiPoint=ref.multiPolygonIntersectsBufferedMultiPoint,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,CircleStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new CircleBucket(e)},t.prototype.queryRadius=function(e){return getMaximumPaintValue(\"circle-radius\",this,e)+translateDistance(this.paint[\"circle-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,r,i,a,n){var u=translate(e,this.getPaintValue(\"circle-translate\",{zoom:i},t.properties),this.getPaintValue(\"circle-translate-anchor\",{zoom:i},t.properties),a,n),l=this.getPaintValue(\"circle-radius\",{zoom:i},t.properties)*n;return multiPolygonIntersectsBufferedMultiPoint(u,r,l)},t}(StyleLayer);module.exports=CircleStyleLayer;\n},{\"../../data/bucket/circle_bucket\":43,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],160:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillExtrusionBucket=_dereq_(\"../../data/bucket/fill_extrusion_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillExtrusionStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,r,i){var o=t.prototype.getPaintValue.call(this,e,r,i);return\"fill-extrusion-color\"===e&&o&&(o[3]=1),o},e.prototype.createBucket=function(t){return new FillExtrusionBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-extrusion-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,n){var l=translate(t,this.getPaintValue(\"fill-extrusion-translate\",{zoom:i},e.properties),this.getPaintValue(\"fill-extrusion-translate-anchor\",{zoom:i},e.properties),o,n);return multiPolygonIntersectsMultiPolygon(l,r)},e.prototype.has3DPass=function(){return 0!==this.paint[\"fill-extrusion-opacity\"]&&\"none\"!==this.layout.visibility},e}(StyleLayer);module.exports=FillExtrusionStyleLayer;\n},{\"../../data/bucket/fill_extrusion_bucket\":45,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],161:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillBucket=_dereq_(\"../../data/bucket/fill_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,o,l){var i=this;if(\"fill-outline-color\"===e){if(void 0===this.getPaintProperty(\"fill-outline-color\"))return t.prototype.getPaintValue.call(this,\"fill-color\",o,l);for(var r=this._paintTransitions[\"fill-outline-color\"];r;){if(!(r&&r.declaration&&r.declaration.value))return t.prototype.getPaintValue.call(i,\"fill-color\",o,l);r=r.oldTransition}}return t.prototype.getPaintValue.call(this,e,o,l)},e.prototype.getPaintValueStopZoomLevels=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintValueStopZoomLevels.call(this,\"fill-color\"):t.prototype.getPaintValueStopZoomLevels.call(this,e)},e.prototype.getPaintInterpolationT=function(e,o){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintInterpolationT.call(this,\"fill-color\",o):t.prototype.getPaintInterpolationT.call(this,e,o)},e.prototype.isPaintValueFeatureConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueFeatureConstant.call(this,\"fill-color\"):t.prototype.isPaintValueFeatureConstant.call(this,e)},e.prototype.isPaintValueZoomConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueZoomConstant.call(this,\"fill-color\"):t.prototype.isPaintValueZoomConstant.call(this,e)},e.prototype.createBucket=function(t){return new FillBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,o,l,i,r){var n=translate(t,this.getPaintValue(\"fill-translate\",{zoom:l},e.properties),this.getPaintValue(\"fill-translate-anchor\",{zoom:l},e.properties),i,r);return multiPolygonIntersectsMultiPolygon(n,o)},e}(StyleLayer);module.exports=FillStyleLayer;\n},{\"../../data/bucket/fill_bucket\":44,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],162:[function(_dereq_,module,exports){\n\"use strict\";function getLineWidth(e,t){return t>0?t+2*e:e}function offsetLine(e,t){for(var i=[],r=new Point(0,0),n=0;n<e.length;n++){for(var a=e[n],u=[],o=0;o<a.length;o++){var s=a[o-1],l=a[o],p=a[o+1],f=0===o?r:l.sub(s)._unit()._perp(),c=o===a.length-1?r:p.sub(l)._unit()._perp(),y=f._add(c)._unit(),h=y.x*c.x+y.y*c.y;y._mult(1/h),u.push(y._mult(t)._add(l))}i.push(u)}return i}var Point=_dereq_(\"@mapbox/point-geometry\"),StyleLayer=_dereq_(\"../style_layer\"),LineBucket=_dereq_(\"../../data/bucket/line_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiLine=ref.multiPolygonIntersectsBufferedMultiLine,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,LineStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new LineBucket(e)},t.prototype.queryRadius=function(e){var t=e,i=getLineWidth(getMaximumPaintValue(\"line-width\",this,t),getMaximumPaintValue(\"line-gap-width\",this,t)),r=getMaximumPaintValue(\"line-offset\",this,t);return i/2+Math.abs(r)+translateDistance(this.paint[\"line-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,i,r,n,a){var u=translate(e,this.getPaintValue(\"line-translate\",{zoom:r},t.properties),this.getPaintValue(\"line-translate-anchor\",{zoom:r},t.properties),n,a),o=a/2*getLineWidth(this.getPaintValue(\"line-width\",{zoom:r},t.properties),this.getPaintValue(\"line-gap-width\",{zoom:r},t.properties)),s=this.getPaintValue(\"line-offset\",{zoom:r},t.properties);return s&&(i=offsetLine(i,s*a)),multiPolygonIntersectsBufferedMultiLine(u,i,o)},t}(StyleLayer);module.exports=LineStyleLayer;\n},{\"../../data/bucket/line_bucket\":46,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158,\"@mapbox/point-geometry\":2}],163:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),SymbolBucket=_dereq_(\"../../data/bucket/symbol_bucket\"),SymbolStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getLayoutValue=function(e,r,o){var n=t.prototype.getLayoutValue.call(this,e,r,o);if(\"auto\"!==n)return n;switch(e){case\"text-rotation-alignment\":case\"icon-rotation-alignment\":return\"line\"===this.getLayoutValue(\"symbol-placement\",r,o)?\"map\":\"viewport\";case\"text-pitch-alignment\":return this.getLayoutValue(\"text-rotation-alignment\",r,o);case\"icon-pitch-alignment\":return this.getLayoutValue(\"icon-rotation-alignment\",r,o);default:return n}},e.prototype.createBucket=function(t){return new SymbolBucket(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e}(StyleLayer);module.exports=SymbolStyleLayer;\n},{\"../../data/bucket/symbol_bucket\":47,\"../style_layer\":158}],164:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"./style_layer\"),util=_dereq_(\"../util/util\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),groupByLayout=_dereq_(\"../style-spec/group_by_layout\"),StyleLayerIndex=function(e){e&&this.replace(e)};StyleLayerIndex.prototype.replace=function(e){var r=this;this.symbolOrder=[];for(var t=0,i=e;t<i.length;t+=1){var a=i[t];\"symbol\"===a.type&&r.symbolOrder.push(a.id)}this._layerConfigs={},this._layers={},this.update(e,[])},StyleLayerIndex.prototype.update=function(e,r,t){for(var i=this,a=0,l=e;a<l.length;a+=1){var y=l[a];i._layerConfigs[y.id]=y;var s=i._layers[y.id]=StyleLayer.create(y);s.updatePaintTransitions({},{transition:!1}),s.filter=featureFilter(s.filter)}for(var o=0,u=r;o<u.length;o+=1){var n=u[o];delete i._layerConfigs[n],delete i._layers[n]}t&&(this.symbolOrder=t),this.familiesBySource={};for(var f=groupByLayout(util.values(this._layerConfigs)),p=0,d=f;p<d.length;p+=1){var h=d[p],c=h.map(function(e){return i._layers[e.id]}),v=c[0];if(!v.layout||\"none\"!==v.layout.visibility){var _=v.source||\"\",g=i.familiesBySource[_];g||(g=i.familiesBySource[_]={});var L=v.sourceLayer||\"_geojsonTileLayer\",m=g[L];m||(m=g[L]=[]),m.push(c)}}},module.exports=StyleLayerIndex;\n},{\"../style-spec/feature_filter\":110,\"../style-spec/group_by_layout\":113,\"../util/util\":223,\"./style_layer\":158}],165:[function(_dereq_,module,exports){\n\"use strict\";function interpZoomTransitioned(t,i,e){if(void 0!==t&&void 0!==i)return{from:t.to,fromScale:t.toScale,to:i.to,toScale:i.toScale,t:e}}var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),fakeZoomHistory={lastIntegerZoom:0,lastIntegerZoomTime:0,lastZoom:0},StyleTransition=function(t,i,e,o,a){this.declaration=i,this.startTime=this.endTime=(new Date).getTime(),this.oldTransition=e,this.duration=o.duration||0,this.delay=o.delay||0,this.zoomTransitioned=\"piecewise-constant\"===t.function&&t.transition,this.interp=this.zoomTransitioned?interpZoomTransitioned:interpolate[t.type],this.zoomHistory=a||fakeZoomHistory,this.instant()||(this.endTime=this.startTime+this.duration+this.delay),e&&e.endTime<=this.startTime&&delete e.oldTransition};StyleTransition.prototype.instant=function(){return!this.oldTransition||!this.interp||0===this.duration&&0===this.delay},StyleTransition.prototype.calculate=function(t,i,e){var o=this._calculateTargetValue(t,i);if(this.instant())return o;if((e=e||Date.now())>=this.endTime)return o;var a=this.oldTransition.calculate(t,i,this.startTime),n=util.easeCubicInOut((e-this.startTime-this.delay)/this.duration);return this.interp(a,o,n)},StyleTransition.prototype._calculateTargetValue=function(t,i){if(!this.zoomTransitioned)return this.declaration.calculate(t,i);var e=t.zoom,o=this.zoomHistory.lastIntegerZoom,a=e>o?2:.5,n=this.declaration.calculate({zoom:e>o?e-1:e+1},i),r=this.declaration.calculate({zoom:e},i),s=Math.min((Date.now()-this.zoomHistory.lastIntegerZoomTime)/this.duration,1),l=Math.abs(e-o),u=interpolate(s,1,l);return void 0!==n&&void 0!==r?{from:n,fromScale:a,to:r,toScale:1,t:u}:void 0},module.exports=StyleTransition;\n},{\"../style-spec/util/interpolate\":127,\"../util/util\":223}],166:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"../style-spec/validate_style.min\"),module.exports.emitErrors=function(r,e){if(e&&e.length){for(var t=0,o=e;t<o.length;t+=1){var s=o[t],i=s.message;r.fire(\"error\",{error:new Error(i)})}return!0}return!1};\n},{\"../style-spec/validate_style.min\":149}],167:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),Anchor=function(t){function o(o,e,n,r){t.call(this,o,e),this.angle=n,void 0!==r&&(this.segment=r)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.clone=function(){return new o(this.x,this.y,this.angle,this.segment)},o}(Point);module.exports=Anchor;\n},{\"@mapbox/point-geometry\":2}],168:[function(_dereq_,module,exports){\n\"use strict\";function checkMaxAngle(e,t,a,r,n){if(void 0===t.segment)return!0;for(var i=t,s=t.segment+1,f=0;f>-a/2;){if(--s<0)return!1;f-=e[s].dist(i),i=e[s]}f+=e[s].dist(e[s+1]),s++;for(var l=[],o=0;f<a/2;){var u=e[s-1],c=e[s],g=e[s+1];if(!g)return!1;var h=u.angleTo(c)-c.angleTo(g);for(h=Math.abs((h+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:f,angleDelta:h}),o+=h;f-l[0].distance>r;)o-=l.shift().angleDelta;if(o>n)return!1;s++,f+=c.dist(g)}return!0}module.exports=checkMaxAngle;\n},{}],169:[function(_dereq_,module,exports){\n\"use strict\";function clipLine(n,x,y,o,e){for(var r=[],t=0;t<n.length;t++)for(var i=n[t],u=void 0,d=0;d<i.length-1;d++){var P=i[d],w=i[d+1];P.x<x&&w.x<x||(P.x<x?P=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round():w.x<x&&(w=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round()),P.y<y&&w.y<y||(P.y<y?P=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round():w.y<y&&(w=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round()),P.x>=o&&w.x>=o||(P.x>=o?P=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round():w.x>=o&&(w=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round()),P.y>=e&&w.y>=e||(P.y>=e?P=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round():w.y>=e&&(w=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round()),u&&P.equals(u[u.length-1])||(u=[P],r.push(u)),u.push(w)))))}return r}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=clipLine;\n},{\"@mapbox/point-geometry\":2}],170:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),Point=_dereq_(\"@mapbox/point-geometry\"),CollisionBoxArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"offsetX\"},{type:\"Int16\",name:\"offsetY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Float32\",name:\"unadjustedMaxScale\"},{type:\"Float32\",name:\"maxScale\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"bbox0\"},{type:\"Int16\",name:\"bbox1\"},{type:\"Int16\",name:\"bbox2\"},{type:\"Int16\",name:\"bbox3\"},{type:\"Float32\",name:\"placementScale\"}]});Object.defineProperty(CollisionBoxArray.prototype.StructType.prototype,\"anchorPoint\",{get:function(){return new Point(this.anchorPointX,this.anchorPointY)}}),module.exports=CollisionBoxArray;\n},{\"../util/struct_array\":220,\"@mapbox/point-geometry\":2}],171:[function(_dereq_,module,exports){\n\"use strict\";var CollisionFeature=function(t,e,i,o,a,n,s,l,r,d,u){var h=s.top*l-r,f=s.bottom*l+r,x=s.left*l-r,m=s.right*l+r;if(this.boxStartIndex=t.length,d){var _=f-h,b=m-x;if(_>0)if(_=Math.max(10*l,_),u){var v=e[i.segment+1].sub(e[i.segment])._unit()._mult(b),c=[i.sub(v),i.add(v)];this._addLineCollisionBoxes(t,c,i,0,b,_,o,a,n)}else this._addLineCollisionBoxes(t,e,i,i.segment,b,_,o,a,n)}else t.emplaceBack(i.x,i.y,0,0,x,h,m,f,1/0,1/0,o,a,n,0,0,0,0,0);this.boxEndIndex=t.length};CollisionFeature.prototype._addLineCollisionBoxes=function(t,e,i,o,a,n,s,l,r){var d=n/2,u=Math.floor(a/d),h=Math.floor(u/2),f=-n/2,x=i,m=o+1,_=f,b=-a/2,v=b-a/8;do{if(--m<0){if(_>b)return;m=0;break}_-=e[m].dist(x),x=e[m]}while(_>v);for(var c=e[m].dist(e[m+1]),g=-h;g<u+h;g++){var p=g*d,C=b+p;if(p<0&&(C+=p),p>a&&(C+=p-a),!(C<_)){for(;_+c<C;){if(_+=c,++m+1>=e.length)return;c=e[m].dist(e[m+1])}var M=C-_,y=e[m],B=e[m+1],k=B.sub(y)._unit()._mult(M)._add(y)._round(),F=Math.max(Math.abs(C-f)-d/2,0),L=a/2/F;(g<0||g>=u)&&(L=Math.min(L,.99)),t.emplaceBack(k.x,k.y,k.x-i.x,k.y-i.y,-n/2,-n/2,n/2,n/2,L,L,s,l,r,0,0,0,0,0)}}},module.exports=CollisionFeature;\n},{}],172:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),EXTENT=_dereq_(\"../data/extent\"),Grid=_dereq_(\"grid-index\"),intersectionTests=_dereq_(\"../util/intersection_tests\"),CollisionTile=function(e,t,i,a,r,o,n){void 0===o&&(o=new Grid(EXTENT,12,6)),void 0===n&&(n=new Grid(EXTENT,12,0)),this.angle=e,this.pitch=t,this.cameraToCenterDistance=i,this.cameraToTileDistance=a,this.grid=o,this.ignoredGrid=n,this.perspectiveRatio=1+.5*(a/i-1),this.minScale=.5/this.perspectiveRatio,this.maxScale=2/this.perspectiveRatio;var s=Math.sin(this.angle),l=Math.cos(this.angle);this.rotationMatrix=[l,-s,s,l],this.reverseRotationMatrix=[l,s,-s,l],this.yStretch=Math.max(1,a/(i*Math.cos(t/180*Math.PI))),this.collisionBoxArray=r,0===r.length&&(r.emplaceBack(),r.emplaceBack(0,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(EXTENT,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,0,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,EXTENT,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0)),this.tempCollisionBox=r.get(0),this.edges=[r.get(1),r.get(2),r.get(3),r.get(4)]};CollisionTile.deserialize=function(e,t){return new CollisionTile(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,t,new Grid(e.grid),new Grid(e.ignoredGrid))},CollisionTile.prototype.serialize=function(e){var t=this.grid.toArrayBuffer(),i=this.ignoredGrid.toArrayBuffer();return e&&(e.push(t),e.push(i)),{angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,grid:t,ignoredGrid:i}},CollisionTile.prototype.placeCollisionFeature=function(e,t,i){for(var a=this,r=this.collisionBoxArray,o=this.minScale,n=this.rotationMatrix,s=this.yStretch,l=e.boxStartIndex;l<e.boxEndIndex;l++){var c=r.get(l),h=c.anchorPoint._matMult(n),x=h.x,m=h.y,p=x+c.x1*a.perspectiveRatio,y=m+c.y1*s*a.perspectiveRatio,g=x+c.x2*a.perspectiveRatio,d=m+c.y2*s*a.perspectiveRatio;c.bbox0=p,c.bbox1=y,c.bbox2=g,c.bbox3=d;var T=new Point(c.offsetX,c.offsetY)._matMult(n),u=T.x*T.x,v=T.y*T.y,M=v*s*s,f=Math.sqrt((u+M)/(u+v))||1;if(c.maxScale=c.unadjustedMaxScale*f,!t)for(var E=a.grid.query(p,y,g,d),S=0;S<E.length;S++){var P=r.get(E[S]),b=P.anchorPoint._matMult(n);if((o=a.getPlacementScale(o,h,c,b,P))>=a.maxScale)return o}if(i){var N=void 0;if(a.angle){var C=a.reverseRotationMatrix,w=new Point(c.x1,c.y1).matMult(C),X=new Point(c.x2,c.y1).matMult(C),B=new Point(c.x1,c.y2).matMult(C),G=new Point(c.x2,c.y2).matMult(C);N=a.tempCollisionBox,N.anchorPointX=c.anchorPoint.x,N.anchorPointY=c.anchorPoint.y,N.x1=Math.min(w.x,X.x,B.x,G.x),N.y1=Math.min(w.y,X.x,B.x,G.x),N.x2=Math.max(w.x,X.x,B.x,G.x),N.y2=Math.max(w.y,X.x,B.x,G.x),N.maxScale=c.maxScale}else N=c;for(var R=0;R<this.edges.length;R++){var q=a.edges[R];if((o=a.getPlacementScale(o,c.anchorPoint,N,q.anchorPoint,q))>=a.maxScale)return o}}}return o},CollisionTile.prototype.queryRenderedSymbols=function(e,t){var i={},a=[];if(0===e.length||0===this.grid.keys.length&&0===this.ignoredGrid.keys.length)return a;for(var r=this.collisionBoxArray,o=this.rotationMatrix,n=this.yStretch,s=[],l=1/0,c=1/0,h=-1/0,x=-1/0,m=0;m<e.length;m++)for(var p=e[m],y=0;y<p.length;y++){var g=p[y].matMult(o);l=Math.min(l,g.x),c=Math.min(c,g.y),h=Math.max(h,g.x),x=Math.max(x,g.y),s.push(g)}for(var d=this.grid.query(l,c,h,x),T=this.ignoredGrid.query(l,c,h,x),u=0;u<T.length;u++)d.push(T[u]);for(var v=t/this.perspectiveRatio,M=Math.pow(2,Math.ceil(Math.log(v)/Math.LN2*10)/10),f=0;f<d.length;f++){var E=r.get(d[f]),S=E.sourceLayerIndex,P=E.featureIndex;if(void 0===i[S]&&(i[S]={}),!i[S][P]&&!(M<E.placementScale||M>E.maxScale)){var b=E.anchorPoint.matMult(o),N=b.x+E.x1/v,C=b.y+E.y1/v*n,w=b.x+E.x2/v,X=b.y+E.y2/v*n,B=[new Point(N,C),new Point(w,C),new Point(w,X),new Point(N,X)];intersectionTests.polygonIntersectsPolygon(s,B)&&(i[S][P]=!0,a.push(d[f]))}}return a},CollisionTile.prototype.getPlacementScale=function(e,t,i,a,r){var o=t.x-a.x,n=t.y-a.y,s=(r.x1-i.x2)/o,l=(r.x2-i.x1)/o,c=(r.y1-i.y2)*this.yStretch/n,h=(r.y2-i.y1)*this.yStretch/n;(isNaN(s)||isNaN(l))&&(s=l=1),(isNaN(c)||isNaN(h))&&(c=h=1);var x=Math.min(Math.max(s,l),Math.max(c,h)),m=r.maxScale,p=i.maxScale;return x>m&&(x=m),x>p&&(x=p),x>e&&x>=r.placementScale&&(e=x),e},CollisionTile.prototype.insertCollisionFeature=function(e,t,i){for(var a=this,r=i?this.ignoredGrid:this.grid,o=this.collisionBoxArray,n=e.boxStartIndex;n<e.boxEndIndex;n++){var s=o.get(n);s.placementScale=t,t<a.maxScale&&(1===a.perspectiveRatio||s.maxScale>=1)&&r.insert(n,s.bbox0,s.bbox1,s.bbox2,s.bbox3)}},module.exports=CollisionTile;\n},{\"../data/extent\":48,\"../util/intersection_tests\":214,\"@mapbox/point-geometry\":2,\"grid-index\":22}],173:[function(_dereq_,module,exports){\n\"use strict\";function getAnchors(e,r,t,n,a,l,o,i,c){var h=n?.6*l*o:0,s=Math.max(n?n.right-n.left:0,a?a.right-a.left:0),u=0===e[0].x||e[0].x===c||0===e[0].y||e[0].y===c;r-s*o<r/4&&(r=s*o+r/4);var g=2*l;return resample(e,u?r/2*i%r:(s/2+g)*o*i%r,r,h,t,s*o,u,!1,c)}function resample(e,r,t,n,a,l,o,i,c){for(var h=l/2,s=0,u=0;u<e.length-1;u++)s+=e[u].dist(e[u+1]);for(var g=0,p=r-t,x=[],f=0;f<e.length-1;f++){for(var v=e[f],m=e[f+1],y=v.dist(m),A=m.angleTo(v);p+t<g+y;){p+=t;var d=(p-g)/y,k=interpolate(v.x,m.x,d),q=interpolate(v.y,m.y,d);if(k>=0&&k<c&&q>=0&&q<c&&p-h>=0&&p+h<=s){var M=new Anchor(k,q,A,f);M._round(),n&&!checkMaxAngle(e,M,l,n,a)||x.push(M)}}g+=y}return i||x.length||o||(x=resample(e,g/2,t,n,a,l,o,!0,c)),x}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),Anchor=_dereq_(\"../symbol/anchor\"),checkMaxAngle=_dereq_(\"./check_max_angle\");module.exports=getAnchors;\n},{\"../style-spec/util/interpolate\":127,\"../symbol/anchor\":167,\"./check_max_angle\":168}],174:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(e){function t(t){g.push(e[t]),l++}function r(e,t,r){var n=u[e];return delete u[e],u[t]=n,g[n].geometry[0].pop(),g[n].geometry[0]=g[n].geometry[0].concat(r[0]),n}function n(e,t,r){var n=i[t];return delete i[t],i[e]=n,g[n].geometry[0].shift(),g[n].geometry[0]=r[0].concat(g[n].geometry[0]),n}function o(e,t,r){var n=r?t[0][t[0].length-1]:t[0][0];return e+\":\"+n.x+\":\"+n.y}for(var i={},u={},g=[],l=0,m=0;m<e.length;m++){var y=e[m],c=y.geometry,f=y.text;if(f){var a=o(f,c),s=o(f,c,!0);if(a in u&&s in i&&u[a]!==i[s]){var v=n(a,s,c),d=r(a,s,g[v].geometry);delete i[a],delete u[s],u[o(f,g[d].geometry,!0)]=d,g[v].geometry=null}else a in u?r(a,s,c):s in i?n(a,s,c):(t(m),i[a]=l-1,u[s]=l-1)}else t(m)}return g.filter(function(e){return e.geometry})};\n},{}],175:[function(_dereq_,module,exports){\n\"use strict\";function getLabelPlaneMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.identity(i),mat4.scale(i,i,[1/r,1/r,1]),a||mat4.rotateZ(i,i,n.angle)):(mat4.scale(i,i,[n.width/2,-n.height/2,1]),mat4.translate(i,i,[1,-1,0]),mat4.multiply(i,i,e)),i}function getGlCoordMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.multiply(i,i,e),mat4.scale(i,i,[r,r,1]),a||mat4.rotateZ(i,i,-n.angle)):(mat4.scale(i,i,[1,-1,1]),mat4.translate(i,i,[-1,-1,0]),mat4.scale(i,i,[2/n.width,2/n.height,1])),i}function project(e,t){var a=[e.x,e.y,0,1];vec4.transformMat4(a,a,t);var n=a[3];return{point:new Point(a[0]/n,a[1]/n),signedDistanceFromCamera:n}}function isVisible(e,t,a,n){var r=e[0]/e[3],i=e[1]/e[3];return r>=-a[0]&&r<=a[0]&&i>=-a[1]&&i<=a[1]&&n.frameHistory.isVisible(t)}function updateLineLabels(e,t,a,n,r,i,o,l,s,p){var m=n?e.textSizeData:e.iconSizeData,c=symbolSize.evaluateSizeForZoom(m,a.transform,p,n),u=[256/a.width*2+1,256/a.height*2+1],y=n?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;y.clear();for(var g=e.lineVertexArray,d=n?e.placedGlyphArray:e.placedIconArray,f=0;f<d.length;f++){var h=d.get(f),x=[h.anchorX,h.anchorY,0,1];if(vec4.transformMat4(x,x,t),isVisible(x,h.placementZoom,u,a)){var v=x[3],b=1+.5*(v/a.transform.cameraToCenterDistance-1),L=symbolSize.evaluateSizeForFeature(m,c,h),A=o?L*b:L/b,G=new Point(h.anchorX,h.anchorY),S=project(G,r).point,P={},D=placeGlyphsAlongLine(h,A,!1,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P);(D.notEnoughRoom||D.needsFlipping&&placeGlyphsAlongLine(h,A,!0,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P).notEnoughRoom)&&hideGlyphs(h.numGlyphs,y)}else hideGlyphs(h.numGlyphs,y)}n?e.text.dynamicLayoutVertexBuffer.updateData(y.serialize()):e.icon.dynamicLayoutVertexBuffer.updateData(y.serialize())}function placeGlyphsAlongLine(e,t,a,n,r,i,o,l,s,p,m,c,u){var y,g=t/24,d=e.lineOffsetX*t,f=e.lineOffsetY*t;if(e.numGlyphs>1){var h=e.glyphStartIndex+e.numGlyphs,x=l.get(e.glyphStartIndex).offsetX,v=l.get(h-1).offsetX,b=e.lineStartIndex,L=e.lineStartIndex+e.lineLength,A=placeGlyphAlongLine(g*x,d,f,a,m,c,e.segment,b,L,s,i,u);if(!A)return{notEnoughRoom:!0};var G=placeGlyphAlongLine(g*v,d,f,a,m,c,e.segment,b,L,s,i,u);if(!G)return{notEnoughRoom:!0};var S=project(A.point,o).point,P=project(G.point,o).point;if(n&&!a&&(e.vertical?S.y<P.y:S.x>P.x))return{needsFlipping:!0};y=[A];for(var D=e.glyphStartIndex+1;D<h-1;D++){var I=l.get(D);y.push(placeGlyphAlongLine(g*I.offsetX,d,f,a,m,c,e.segment,b,L,s,i,u))}y.push(G)}else{if(n&&!a){var M=project(c,r).point,j=s.get(e.lineStartIndex+e.segment+1),w=project(j,r),F=w.signedDistanceFromCamera>0?w.point:projectTruncatedLineSegment(c,new Point(j.x,j.y),M,1,r);if(e.vertical?F.y>M.y:F.x<M.x)return{needsFlipping:!0}}var z=l.get(e.glyphStartIndex),_=placeGlyphAlongLine(g*z.offsetX,d,f,a,m,c,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,s,i,u);if(!_)return{notEnoughRoom:!0};y=[_]}for(var V=e.placementZoom,C=0,X=y;C<X.length;C+=1){var E=X[C];addDynamicAttributes(p,E.point,E.angle,V)}return{}}function projectTruncatedLineSegment(e,t,a,n,r){var i=project(e.add(e.sub(t)._unit()),r).point,o=a.sub(i);return a.add(o._mult(n/o.mag()))}function placeGlyphAlongLine(e,t,a,n,r,i,o,l,s,p,m,c){var u=n?e-t:e+t,y=u>0?1:-1,g=0;n&&(y*=-1,g=Math.PI),y<0&&(g+=Math.PI);for(var d=y>0?l+o:l+o+1,f=r,h=r,x=0,v=0,b=Math.abs(u);x+v<=b;){if((d+=y)<l||d>=s)return null;if(h=f,void 0===(f=c[d])){var L=project(p.get(d),m);if(L.signedDistanceFromCamera>0)f=c[d]=L.point;else{f=projectTruncatedLineSegment(0===x?i:new Point(p.get(d-y).x,p.get(d-y).y),new Point(p.get(d).x,p.get(d).y),h,b-x+1,m)}}x+=v,v=h.dist(f)}var A=(b-x)/v,G=f.sub(h),S=G.mult(A)._add(h);return S._add(G._unit()._perp()._mult(a*y)),{point:S,angle:g+Math.atan2(f.y-h.y,f.x-h.x)}}function hideGlyphs(e,t){for(var a=0;a<e;a++)addDynamicAttributes(t,offscreenPoint,0,25)}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"@mapbox/gl-matrix\"),mat4=ref.mat4,vec4=ref.vec4,symbolSize=_dereq_(\"./symbol_size\"),ref$1=_dereq_(\"../data/bucket/symbol_bucket\"),addDynamicAttributes=ref$1.addDynamicAttributes;module.exports={updateLineLabels:updateLineLabels,getLabelPlaneMatrix:getLabelPlaneMatrix,getGlCoordMatrix:getGlCoordMatrix};var offscreenPoint=new Point(-1/0,-1/0);\n},{\"../data/bucket/symbol_bucket\":47,\"./symbol_size\":178,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],176:[function(_dereq_,module,exports){\n\"use strict\";function getIconQuads(t,e,i,o,n,a,r){var u,l,d,f,c=e.image,h=i.layout,x=e.top-1/c.pixelRatio,g=e.left-1/c.pixelRatio,p=e.bottom+1/c.pixelRatio,s=e.right+1/c.pixelRatio;if(\"none\"!==h[\"icon-text-fit\"]&&n){var P=s-g,_=p-x,w=h[\"text-size\"]/24,m=n.left*w,y=n.right*w,M=n.top*w,v=n.bottom*w,R=y-m,b=v-M,G=h[\"icon-text-fit-padding\"][0],B=h[\"icon-text-fit-padding\"][1],I=h[\"icon-text-fit-padding\"][2],L=h[\"icon-text-fit-padding\"][3],Q=\"width\"===h[\"icon-text-fit\"]?.5*(b-_):0,O=\"height\"===h[\"icon-text-fit\"]?.5*(R-P):0,A=\"width\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?R:P,D=\"height\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?b:_;u=new Point(m+O-L,M+Q-G),l=new Point(m+O+B+A,M+Q-G),d=new Point(m+O+B+A,M+Q+I+D),f=new Point(m+O-L,M+Q+I+D)}else u=new Point(g,x),l=new Point(s,x),d=new Point(s,p),f=new Point(g,p);var E=i.getLayoutValue(\"icon-rotate\",a,r)*Math.PI/180;if(E){var F=Math.sin(E),H=Math.cos(E),V=[H,-F,F,H];u._matMult(V),l._matMult(V),f._matMult(V),d._matMult(V)}return[{tl:u,tr:l,bl:f,br:d,tex:{x:c.textureRect.x-1,y:c.textureRect.y-1,w:c.textureRect.w+2,h:c.textureRect.h+2},writingMode:void 0,glyphOffset:[0,0]}]}function getGlyphQuads(t,e,i,o,n,a,r){for(var u=i.getLayoutValue(\"text-rotate\",n,a)*Math.PI/180,l=i.getLayoutValue(\"text-offset\",n,a).map(function(t){return 24*t}),d=e.positionedGlyphs,f=[],c=0;c<d.length;c++){var h=d[c],x=r[h.glyph];if(x){var g=x.rect;if(g){var p=GLYPH_PBF_BORDER+1,s=x.metrics.advance/2,P=o?[h.x+s,h.y]:[0,0],_=o?[0,0]:[h.x+s+l[0],h.y+l[1]],w=x.metrics.left-p-s+_[0],m=-x.metrics.top-p+_[1],y=w+g.w,M=m+g.h,v=new Point(w,m),R=new Point(y,m),b=new Point(w,M),G=new Point(y,M);if(o&&h.vertical){var B=new Point(-s,s),I=-Math.PI/2,L=new Point(5,0);v._rotateAround(I,B)._add(L),R._rotateAround(I,B)._add(L),b._rotateAround(I,B)._add(L),G._rotateAround(I,B)._add(L)}if(u){var Q=Math.sin(u),O=Math.cos(u),A=[O,-Q,Q,O];v._matMult(A),R._matMult(A),b._matMult(A),G._matMult(A)}f.push({tl:v,tr:R,bl:b,br:G,tex:g,writingMode:e.writingMode,glyphOffset:P})}}}return f}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../style/parse_glyph_pbf\"),GLYPH_PBF_BORDER=ref.GLYPH_PBF_BORDER;module.exports={getIconQuads:getIconQuads,getGlyphQuads:getGlyphQuads};\n},{\"../style/parse_glyph_pbf\":154,\"@mapbox/point-geometry\":2}],177:[function(_dereq_,module,exports){\n\"use strict\";function breakLines(e,t){for(var a=[],r=0,i=0,n=t;i<n.length;i+=1){var l=n[i];a.push(e.substring(r,l)),r=l}return r<e.length&&a.push(e.substring(r,e.length)),a}function shapeText(e,t,a,r,i,n,l,c,o,s){var h=e.trim();s===WritingMode.vertical&&(h=verticalizePunctuation(h));var g,u=[],p={positionedGlyphs:u,text:h,top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:s},b=rtlTextPlugin.processBidirectionalText;return g=b?b(h,determineLineBreaks(h,l,a,t)):breakLines(h,determineLineBreaks(h,l,a,t)),shapeLines(p,t,g,r,i,n,s,l,o),!!u.length&&p}function determineAverageLineWidth(e,t,a,r){for(var i=0,n=0;n<e.length;n++){var l=r[e.charCodeAt(n)];l&&(i+=l.metrics.advance+t)}return i/Math.max(1,Math.ceil(i/a))}function calculateBadness(e,t,a,r){var i=Math.pow(e-t,2);return r?e<t?i/2:2*i:i+Math.abs(a)*a}function calculatePenalty(e,t){var a=0;return 10===e&&(a-=1e4),40!==e&&65288!==e||(a+=50),41!==t&&65289!==t||(a+=50),a}function evaluateBreak(e,t,a,r,i,n){for(var l=null,c=calculateBadness(t,a,i,n),o=0,s=r;o<s.length;o+=1){var h=s[o],g=t-h.x,u=calculateBadness(g,a,i,n)+h.badness;u<=c&&(l=h,c=u)}return{index:e,x:t,priorBreak:l,badness:c}}function leastBadBreaks(e){return e?leastBadBreaks(e.priorBreak).concat(e.index):[]}function determineLineBreaks(e,t,a,r){if(!a)return[];if(!e)return[];for(var i=[],n=determineAverageLineWidth(e,t,a,r),l=0,c=0;c<e.length;c++){var o=e.charCodeAt(c),s=r[o];s&&!whitespace[o]&&(l+=s.metrics.advance+t),c<e.length-1&&(breakable[o]||scriptDetection.charAllowsIdeographicBreaking(o))&&i.push(evaluateBreak(c+1,l,n,i,calculatePenalty(o,e.charCodeAt(c+1)),!1))}return leastBadBreaks(evaluateBreak(e.length,l,n,i,0,!0))}function getAnchorAlignment(e){var t=.5,a=.5;switch(e){case\"right\":case\"top-right\":case\"bottom-right\":t=1;break;case\"left\":case\"top-left\":case\"bottom-left\":t=0}switch(e){case\"bottom\":case\"bottom-right\":case\"bottom-left\":a=1;break;case\"top\":case\"top-right\":case\"top-left\":a=0}return{horizontalAlign:t,verticalAlign:a}}function shapeLines(e,t,a,r,i,n,l,c,o){for(var s=0,h=-17,g=0,u=e.positionedGlyphs,p=\"right\"===n?1:\"left\"===n?0:.5,b=0,v=a;b<v.length;b+=1){var d=v[b];if(d=d.trim(),d.length){for(var f=u.length,k=0;k<d.length;k++){var m=d.charCodeAt(k),x=t[m];x&&(scriptDetection.charHasUprightVerticalOrientation(m)&&l!==WritingMode.horizontal?(u.push({glyph:m,x:s,y:0,vertical:!0}),s+=o+c):(u.push({glyph:m,x:s,y:h,vertical:!1}),s+=x.metrics.advance+c))}if(u.length!==f){var A=s-c;g=Math.max(A,g),justifyLine(u,t,f,u.length-1,p)}s=0,h+=r}else h+=r}var B=getAnchorAlignment(i),y=B.horizontalAlign,w=B.verticalAlign;align(u,p,y,w,g,r,a.length);var z=a.length*r;e.top+=-w*z,e.bottom=e.top+z,e.left+=-y*g,e.right=e.left+g}function justifyLine(e,t,a,r,i){if(i){var n=t[e[r].glyph];if(n)for(var l=n.metrics.advance,c=(e[r].x+l)*i,o=a;o<=r;o++)e[o].x-=c}}function align(e,t,a,r,i,n,l){for(var c=(t-a)*i,o=(-r*l+.5)*n,s=0;s<e.length;s++)e[s].x+=c,e[s].y+=o}function shapeIcon(e,t,a){var r=getAnchorAlignment(a),i=r.horizontalAlign,n=r.verticalAlign,l=t[0],c=t[1],o=l-e.displaySize[0]*i,s=o+e.displaySize[0],h=c-e.displaySize[1]*n;return{image:e,top:h,bottom:h+e.displaySize[1],left:o,right:s}}var scriptDetection=_dereq_(\"../util/script_detection\"),verticalizePunctuation=_dereq_(\"../util/verticalize_punctuation\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),WritingMode={horizontal:1,vertical:2};module.exports={shapeText:shapeText,shapeIcon:shapeIcon,WritingMode:WritingMode};var whitespace={};whitespace[9]=!0,whitespace[10]=!0,whitespace[11]=!0,whitespace[12]=!0,whitespace[13]=!0,whitespace[32]=!0;var breakable={};breakable[10]=!0,breakable[32]=!0,breakable[38]=!0,breakable[40]=!0,breakable[41]=!0,breakable[43]=!0,breakable[45]=!0,breakable[47]=!0,breakable[173]=!0,breakable[183]=!0,breakable[8203]=!0,breakable[8208]=!0,breakable[8211]=!0,breakable[8231]=!0;\n},{\"../source/rtl_text_plugin\":96,\"../util/script_detection\":218,\"../util/verticalize_punctuation\":225}],178:[function(_dereq_,module,exports){\n\"use strict\";function evaluateSizeForFeature(e,o,t){var i=o;return e.isFeatureConstant?i.uSize:e.isZoomConstant?t.lowerSize/10:interpolate.number(t.lowerSize/10,t.upperSize/10,i.uSizeT)}function evaluateSizeForZoom(e,o,t,i){var a={};if(e.isZoomConstant||e.isFeatureConstant)if(e.isFeatureConstant&&!e.isZoomConstant){var n;if(\"interval\"===e.functionType)n=t.getLayoutValue(i?\"text-size\":\"icon-size\",{zoom:o.zoom});else{var r=\"interval\"===e.functionType?0:interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]),u=e.coveringStopValues[0],l=e.coveringStopValues[1];n=u+(l-u)*util.clamp(r,0,1)}a.uSize=n}else e.isFeatureConstant&&e.isZoomConstant&&(a.uSize=e.layoutSize);else{var s=interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]);a.uSizeT=util.clamp(s,0,1)}return a}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),ref=_dereq_(\"../style-spec/function\"),interpolationFactor=ref.interpolationFactor,util=_dereq_(\"../util/util\");module.exports={evaluateSizeForFeature:evaluateSizeForFeature,evaluateSizeForZoom:evaluateSizeForZoom};\n},{\"../style-spec/function\":112,\"../style-spec/util/interpolate\":127,\"../util/util\":223}],179:[function(_dereq_,module,exports){\n\"use strict\";var rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\");module.exports=function(e,r,t,a){var l=r.getLayoutValue(\"text-transform\",t,a);return\"uppercase\"===l?e=e.toLocaleUpperCase():\"lowercase\"===l&&(e=e.toLocaleLowerCase()),rtlTextPlugin.applyArabicShaping&&(e=rtlTextPlugin.applyArabicShaping(e)),e};\n},{\"../source/rtl_text_plugin\":96}],180:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),Point=_dereq_(\"@mapbox/point-geometry\"),handlers={scrollZoom:_dereq_(\"./handler/scroll_zoom\"),boxZoom:_dereq_(\"./handler/box_zoom\"),dragRotate:_dereq_(\"./handler/drag_rotate\"),dragPan:_dereq_(\"./handler/drag_pan\"),keyboard:_dereq_(\"./handler/keyboard\"),doubleClickZoom:_dereq_(\"./handler/dblclick_zoom\"),touchZoomRotate:_dereq_(\"./handler/touch_zoom_rotate\")};module.exports=function(e,t){function n(e){h(\"mouseout\",e)}function o(t){e.stop(),L=DOM.mousePos(g,t),h(\"mousedown\",t),E=!0}function r(t){var n=e.dragRotate&&e.dragRotate.isActive();p&&!n&&h(\"contextmenu\",p),p=null,E=!1,h(\"mouseup\",t)}function a(t){if(!(e.dragPan&&e.dragPan.isActive()||e.dragRotate&&e.dragRotate.isActive())){for(var n=t.toElement||t.target;n&&n!==g;)n=n.parentNode;n===g&&h(\"mousemove\",t)}}function u(t){e.stop(),f(\"touchstart\",t),!t.touches||t.touches.length>1||(b?(clearTimeout(b),b=null,h(\"dblclick\",t)):b=setTimeout(l,300))}function i(e){f(\"touchmove\",e)}function c(e){f(\"touchend\",e)}function d(e){f(\"touchcancel\",e)}function l(){b=null}function s(e){DOM.mousePos(g,e).equals(L)&&h(\"click\",e)}function m(e){h(\"dblclick\",e),e.preventDefault()}function v(t){var n=e.dragRotate&&e.dragRotate.isActive();E||n?E&&(p=t):h(\"contextmenu\",t),t.preventDefault()}function h(t,n){var o=DOM.mousePos(g,n);return e.fire(t,{lngLat:e.unproject(o),point:o,originalEvent:n})}function f(t,n){var o=DOM.touchPos(g,n),r=o.reduce(function(e,t,n,o){return e.add(t.div(o.length))},new Point(0,0));return e.fire(t,{lngLat:e.unproject(r),point:r,lngLats:o.map(function(t){return e.unproject(t)},this),points:o,originalEvent:n})}var g=e.getCanvasContainer(),p=null,E=!1,L=null,b=null;for(var q in handlers)e[q]=new handlers[q](e,t),t.interactive&&t[q]&&e[q].enable(t[q]);g.addEventListener(\"mouseout\",n,!1),g.addEventListener(\"mousedown\",o,!1),g.addEventListener(\"mouseup\",r,!1),g.addEventListener(\"mousemove\",a,!1),g.addEventListener(\"touchstart\",u,!1),g.addEventListener(\"touchend\",c,!1),g.addEventListener(\"touchmove\",i,!1),g.addEventListener(\"touchcancel\",d,!1),g.addEventListener(\"click\",s,!1),g.addEventListener(\"dblclick\",m,!1),g.addEventListener(\"contextmenu\",v,!1)};\n},{\"../util/dom\":209,\"./handler/box_zoom\":189,\"./handler/dblclick_zoom\":190,\"./handler/drag_pan\":191,\"./handler/drag_rotate\":192,\"./handler/keyboard\":193,\"./handler/scroll_zoom\":194,\"./handler/touch_zoom_rotate\":195,\"@mapbox/point-geometry\":2}],181:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),browser=_dereq_(\"../util/browser\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),Camera=function(t){function e(e,i){t.call(this),this.moving=!1,this.transform=e,this._bearingSnap=i.bearingSnap}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCenter=function(){return this.transform.center},e.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},e.prototype.panBy=function(t,e,i){return t=Point.convert(t).mult(-1),this.panTo(this.transform.center,util.extend({offset:t},e),i)},e.prototype.panTo=function(t,e,i){return this.easeTo(util.extend({center:t},e),i)},e.prototype.getZoom=function(){return this.transform.zoom},e.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},e.prototype.zoomTo=function(t,e,i){return this.easeTo(util.extend({zoom:t},e),i)},e.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},e.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},e.prototype.getBearing=function(){return this.transform.bearing},e.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},e.prototype.rotateTo=function(t,e,i){return this.easeTo(util.extend({bearing:t},e),i)},e.prototype.resetNorth=function(t,e){return this.rotateTo(0,util.extend({duration:1e3},t),e),this},e.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},e.prototype.getPitch=function(){return this.transform.pitch},e.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},e.prototype.fitBounds=function(t,e,i){if(e=util.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},e),\"number\"==typeof e.padding){var o=e.padding;e.padding={top:o,bottom:o,right:o,left:o}}if(!util.deepEqual(Object.keys(e.padding).sort(function(t,e){return t<e?-1:t>e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"]))return util.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\"),this;t=LngLatBounds.convert(t);var n=[e.padding.left-e.padding.right,e.padding.top-e.padding.bottom],r=Math.min(e.padding.right,e.padding.left),a=Math.min(e.padding.top,e.padding.bottom);e.offset=[e.offset[0]+n[0],e.offset[1]+n[1]];var s=Point.convert(e.offset),h=this.transform,p=h.project(t.getNorthWest()),u=h.project(t.getSouthEast()),c=u.sub(p),m=(h.width-2*r-2*Math.abs(s.x))/c.x,f=(h.height-2*a-2*Math.abs(s.y))/c.y;return f<0||m<0?(util.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\"),this):(e.center=h.unproject(p.add(u).div(2)),e.zoom=Math.min(h.scaleZoom(h.scale*Math.min(m,f)),e.maxZoom),e.bearing=0,e.linear?this.easeTo(e,i):this.flyTo(e,i))},e.prototype.jumpTo=function(t,e){this.stop();var i=this.transform,o=!1,n=!1,r=!1;return\"zoom\"in t&&i.zoom!==+t.zoom&&(o=!0,i.zoom=+t.zoom),void 0!==t.center&&(i.center=LngLat.convert(t.center)),\"bearing\"in t&&i.bearing!==+t.bearing&&(n=!0,i.bearing=+t.bearing),\"pitch\"in t&&i.pitch!==+t.pitch&&(r=!0,i.pitch=+t.pitch),this.fire(\"movestart\",e).fire(\"move\",e),o&&this.fire(\"zoomstart\",e).fire(\"zoom\",e).fire(\"zoomend\",e),n&&this.fire(\"rotate\",e),r&&this.fire(\"pitchstart\",e).fire(\"pitch\",e).fire(\"pitchend\",e),this.fire(\"moveend\",e)},e.prototype.easeTo=function(t,e){var i=this;this.stop(),t=util.extend({offset:[0,0],duration:500,easing:util.ease},t),!1===t.animate&&(t.duration=0),t.smoothEasing&&0!==t.duration&&(t.easing=this._smoothOutEasing(t.duration));var o=this.transform,n=this.getZoom(),r=this.getBearing(),a=this.getPitch(),s=\"zoom\"in t?+t.zoom:n,h=\"bearing\"in t?this._normalizeBearing(t.bearing,r):r,p=\"pitch\"in t?+t.pitch:a,u=o.centerPoint.add(Point.convert(t.offset)),c=o.pointLocation(u),m=LngLat.convert(t.center||c);this._normalizeCenter(m);var f,g,d=o.project(c),l=o.project(m).sub(d),v=o.zoomScale(s-n);return t.around&&(f=LngLat.convert(t.around),g=o.locationPoint(f)),this.zooming=s!==n,this.rotating=r!==h,this.pitching=p!==a,this._prepareEase(e,t.noMoveStart),clearTimeout(this._onEaseEnd),this._ease(function(t){if(this.zooming&&(o.zoom=interpolate(n,s,t)),this.rotating&&(o.bearing=interpolate(r,h,t)),this.pitching&&(o.pitch=interpolate(a,p,t)),f)o.setLocationAtPoint(f,g);else{var i=o.zoomScale(o.zoom-n),c=s>n?Math.min(2,v):Math.max(.5,v),m=Math.pow(c,1-t),b=o.unproject(d.add(l.mult(t*m)).mult(i));o.setLocationAtPoint(o.renderWorldCopies?b.wrap():b,u)}this._fireMoveEvents(e)},function(){t.delayEndEvents?i._onEaseEnd=setTimeout(function(){return i._easeToEnd(e)},t.delayEndEvents):i._easeToEnd(e)},t),this},e.prototype._prepareEase=function(t,e){this.moving=!0,e||this.fire(\"movestart\",t),this.zooming&&this.fire(\"zoomstart\",t),this.pitching&&this.fire(\"pitchstart\",t)},e.prototype._fireMoveEvents=function(t){this.fire(\"move\",t),this.zooming&&this.fire(\"zoom\",t),this.rotating&&this.fire(\"rotate\",t),this.pitching&&this.fire(\"pitch\",t)},e.prototype._easeToEnd=function(t){var e=this.zooming,i=this.pitching;this.moving=!1,this.zooming=!1,this.rotating=!1,this.pitching=!1,e&&this.fire(\"zoomend\",t),i&&this.fire(\"pitchend\",t),this.fire(\"moveend\",t)},e.prototype.flyTo=function(t,e){function i(t){var e=(M*M-z*z+(t?-1:1)*L*L*E*E)/(2*(t?M:z)*L*E);return Math.log(Math.sqrt(e*e+1)-e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function n(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/n(t)}var a=this;this.stop(),t=util.extend({offset:[0,0],speed:1.2,curve:1.42,easing:util.ease},t);var s=this.transform,h=this.getZoom(),p=this.getBearing(),u=this.getPitch(),c=\"zoom\"in t?util.clamp(+t.zoom,s.minZoom,s.maxZoom):h,m=\"bearing\"in t?this._normalizeBearing(t.bearing,p):p,f=\"pitch\"in t?+t.pitch:u,g=s.zoomScale(c-h),d=s.centerPoint.add(Point.convert(t.offset)),l=s.pointLocation(d),v=LngLat.convert(t.center||l);this._normalizeCenter(v);var b=s.project(l),y=s.project(v).sub(b),_=t.curve,z=Math.max(s.width,s.height),M=z/g,E=y.mag();if(\"minZoom\"in t){var T=util.clamp(Math.min(t.minZoom,h,c),s.minZoom,s.maxZoom),x=z/s.zoomScale(T-h);_=Math.sqrt(x/E*2)}var L=_*_,j=i(0),Z=function(t){return n(j)/n(j+_*t)},w=function(t){return z*((n(j)*r(j+_*t)-o(j))/L)/E},P=(i(1)-j)/_;if(Math.abs(E)<1e-6||isNaN(P)){if(Math.abs(z-M)<1e-6)return this.easeTo(t,e);var q=M<z?-1:1;P=Math.abs(Math.log(M/z))/_,w=function(){return 0},Z=function(t){return Math.exp(q*_*t)}}if(\"duration\"in t)t.duration=+t.duration;else{var B=\"screenSpeed\"in t?+t.screenSpeed/_:+t.speed;t.duration=1e3*P/B}return this.zooming=!0,this.rotating=p!==m,this.pitching=f!==u,this._prepareEase(e,!1),this._ease(function(t){var i=t*P,o=1/Z(i);s.zoom=h+s.scaleZoom(o),this.rotating&&(s.bearing=interpolate(p,m,t)),this.pitching&&(s.pitch=interpolate(u,f,t));var n=s.unproject(b.add(y.mult(w(i))).mult(o));s.setLocationAtPoint(s.renderWorldCopies?n.wrap():n,d),this._fireMoveEvents(e)},function(){return a._easeToEnd(e)},t),this},e.prototype.isEasing=function(){return!!this._abortFn},e.prototype.isMoving=function(){return this.moving},e.prototype.stop=function(){return this._abortFn&&(this._abortFn(),this._finishEase()),this},e.prototype._ease=function(t,e,i){this._finishFn=e,this._abortFn=browser.timed(function(e){t.call(this,i.easing(e)),1===e&&this._finishEase()},!1===i.animate?0:i.duration,this)},e.prototype._finishEase=function(){delete this._abortFn;var t=this._finishFn;delete this._finishFn,t.call(this)},e.prototype._normalizeBearing=function(t,e){t=util.wrap(t,-180,180);var i=Math.abs(t-e);return Math.abs(t-360-e)<i&&(t-=360),Math.abs(t+360-e)<i&&(t+=360),t},e.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0}},e.prototype._smoothOutEasing=function(t){var e=util.ease;if(this._prevEase){var i=this._prevEase,o=(Date.now()-i.start)/i.duration,n=i.easing(o+.01)-i.easing(o),r=.27/Math.sqrt(n*n+1e-4)*.01,a=Math.sqrt(.0729-r*r);e=util.bezier(r,a,.25,1)}return this._prevEase={start:(new Date).getTime(),duration:t,easing:e},e},e}(Evented);module.exports=Camera;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../style-spec/util/interpolate\":127,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"@mapbox/point-geometry\":2}],182:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),config=_dereq_(\"../../util/config\"),AttributionControl=function(t){this.options=t,util.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};AttributionControl.prototype.getDefaultPosition=function(){return\"bottom-right\"},AttributionControl.prototype.onAdd=function(t){var i=this.options&&this.options.compact;return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),i&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===i&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},AttributionControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0},AttributionControl.prototype._updateEditLink=function(){var t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:config.ACCESS_TOKEN}];if(t){var o=i.reduce(function(t,o,e){return o.value&&(t+=o.key+\"=\"+o.value+(e<i.length-1?\"&\":\"\")),t},\"?\");t.href=\"https://www.mapbox.com/feedback/\"+o+(this._map._hash?this._map._hash.getHashString(!0):\"\")}},AttributionControl.prototype._updateData=function(t){t&&\"metadata\"===t.sourceDataType&&(this._updateAttributions(),this._updateEditLink())},AttributionControl.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this._map.style.stylesheet){var i=this._map.style.stylesheet;this.styleOwner=i.owner,this.styleId=i.id}var o=this._map.style.sourceCaches;for(var e in o){var n=o[e].getSource();n.attribution&&t.indexOf(n.attribution)<0&&t.push(n.attribution)}t.sort(function(t,i){return t.length-i.length}),t=t.filter(function(i,o){for(var e=o+1;e<t.length;e++)if(t[e].indexOf(i)>=0)return!1;return!0}),this._container.innerHTML=t.join(\" | \"),this._editLink=null}},AttributionControl.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")},module.exports=AttributionControl;\n},{\"../../util/config\":206,\"../../util/dom\":209,\"../../util/util\":223}],183:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),FullscreenControl=function(){this._fullscreen=!1,util.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in window.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\"};FullscreenControl.prototype.onAdd=function(e){return this._map=e,this._mapContainer=this._map.getContainer(),this._container=DOM.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._container.style.display=\"none\",util.warnOnce(\"This device does not support fullscreen mode.\")),this._container},FullscreenControl.prototype.onRemove=function(){DOM.remove(this._container),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._checkFullscreenSupport=function(){return!!(window.document.fullscreenEnabled||window.document.mozFullScreenEnabled||window.document.msFullscreenEnabled||window.document.webkitFullscreenEnabled)},FullscreenControl.prototype._setupUI=function(){var e=this._fullscreenButton=DOM.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._container);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._isFullscreen=function(){return this._fullscreen},FullscreenControl.prototype._changeIcon=function(){(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._mapContainer!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"))},FullscreenControl.prototype._onClickFullscreen=function(){this._isFullscreen()?window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen&&window.document.webkitCancelFullScreen():this._mapContainer.requestFullscreen?this._mapContainer.requestFullscreen():this._mapContainer.mozRequestFullScreen?this._mapContainer.mozRequestFullScreen():this._mapContainer.msRequestFullscreen?this._mapContainer.msRequestFullscreen():this._mapContainer.webkitRequestFullscreen&&this._mapContainer.webkitRequestFullscreen()},module.exports=FullscreenControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],184:[function(_dereq_,module,exports){\n\"use strict\";function checkGeolocationSupport(t){void 0!==supportsGeolocation?t(supportsGeolocation):void 0!==window.navigator.permissions?window.navigator.permissions.query({name:\"geolocation\"}).then(function(o){supportsGeolocation=\"denied\"!==o.state,t(supportsGeolocation)}):(supportsGeolocation=!!window.navigator.geolocation,t(supportsGeolocation))}var Evented=_dereq_(\"../../util/evented\"),DOM=_dereq_(\"../../util/dom\"),window=_dereq_(\"../../util/window\"),util=_dereq_(\"../../util/util\"),LngLat=_dereq_(\"../../geo/lng_lat\"),Marker=_dereq_(\"../marker\"),defaultOptions={positionOptions:{enableHighAccuracy:!1,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0},className=\"mapboxgl-ctrl\",supportsGeolocation,GeolocateControl=function(t){function o(o){t.call(this),this.options=util.extend({},defaultOptions,o),util.bindAll([\"_onSuccess\",\"_onError\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_onClickGeolocate\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",className+\" \"+className+\"-group\"),checkGeolocationSupport(this._setupUI),this._container},o.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker.remove(),DOM.remove(this._container),this._map=void 0},o.prototype._onSuccess=function(t){if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(\"geolocate\",t),this._finish()},o.prototype._updateCamera=function(t){var o=new LngLat(t.coords.longitude,t.coords.latitude),e=t.coords.accuracy;this._map.fitBounds(o.toBounds(e),this.options.fitBoundsOptions,{geolocateSource:!0})},o.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove()},o.prototype._onError=function(t){if(this.options.trackUserLocation)if(1===t.code)this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),void 0!==this._geolocationWatchID&&this._clearWatch();else switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(\"error\",t),this._finish()},o.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},o.prototype._setupUI=function(t){var o=this;!1!==t&&(this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._geolocateButton=DOM.create(\"button\",className+\"-icon \"+className+\"-geolocate\",this._container),this._geolocateButton.type=\"button\",this._geolocateButton.setAttribute(\"aria-label\",\"Geolocate\"),this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=DOM.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Marker(this._dotElement),this.options.trackUserLocation&&(this._watchState=\"OFF\")),this._geolocateButton.addEventListener(\"click\",this._onClickGeolocate.bind(this)),this.options.trackUserLocation&&this._map.on(\"movestart\",function(t){t.geolocateSource||\"ACTIVE_LOCK\"!==o._watchState||(o._watchState=\"BACKGROUND\",o._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),o._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),o.fire(\"trackuserlocationend\"))}))},o.prototype._onClickGeolocate=function(){if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(\"trackuserlocationstart\");break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(\"trackuserlocationend\");break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(\"trackuserlocationstart\")}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions))}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4)},o.prototype._clearWatch=function(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},o}(Evented);module.exports=GeolocateControl;\n},{\"../../geo/lng_lat\":58,\"../../util/dom\":209,\"../../util/evented\":210,\"../../util/util\":223,\"../../util/window\":204,\"../marker\":198}],185:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),LogoControl=function(){util.bindAll([\"_updateLogo\"],this)};LogoControl.prototype.onAdd=function(o){this._map=o,this._container=DOM.create(\"div\",\"mapboxgl-ctrl\");var t=DOM.create(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",\"Mapbox logo\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._container},LogoControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo)},LogoControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},LogoControl.prototype._updateLogo=function(o){o&&\"metadata\"!==o.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},LogoControl.prototype._logoRequired=function(){if(this._map.style){var o=this._map.style.sourceCaches;for(var t in o){if(o[t].getSource().mapbox_logo)return!0}return!1}},module.exports=LogoControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],186:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),DragRotateHandler=_dereq_(\"../handler/drag_rotate\"),NavigationControl=function(){var t=this;util.bindAll([\"_rotateCompassArrow\"],this),this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in\",\"Zoom In\",function(){return t._map.zoomIn()}),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out\",\"Zoom Out\",function(){return t._map.zoomOut()}),this._compass=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-compass\",\"Reset North\",function(){return t._map.resetNorth()}),this._compassArrow=DOM.create(\"span\",\"mapboxgl-ctrl-compass-arrow\",this._compass)};NavigationControl.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t},NavigationControl.prototype.onAdd=function(t){return this._map=t,this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new DragRotateHandler(t,{button:\"left\",element:this._compass,pitchWithRotate:!1}),this._handler.enable(),this._container},NavigationControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"rotate\",this._rotateCompassArrow),delete this._map,this._handler.disable(),delete this._handler},NavigationControl.prototype._createButton=function(t,o,r){var e=DOM.create(\"button\",t,this._container);return e.type=\"button\",e.setAttribute(\"aria-label\",o),e.addEventListener(\"click\",r),e},module.exports=NavigationControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../handler/drag_rotate\":192}],187:[function(_dereq_,module,exports){\n\"use strict\";function updateScale(t,e,o){var n=o&&o.maxWidth||100,i=t._container.clientHeight/2,a=getDistance(t.unproject([0,i]),t.unproject([n,i]));if(o&&\"imperial\"===o.unit){var l=3.2808*a;if(l>5280){setScale(e,n,l/5280,\"mi\")}else setScale(e,n,l,\"ft\")}else if(o&&\"nautical\"===o.unit){var r=a/1852;setScale(e,n,r,\"nm\")}else setScale(e,n,a,\"m\")}function setScale(t,e,o,n){var i=getRoundNum(o),a=i/o;\"m\"===n&&i>=1e3&&(i/=1e3,n=\"km\"),t.style.width=e*a+\"px\",t.innerHTML=i+n}function getDistance(t,e){var o=Math.PI/180,n=t.lat*o,i=e.lat*o,a=Math.sin(n)*Math.sin(i)+Math.cos(n)*Math.cos(i)*Math.cos((e.lng-t.lng)*o);return 6371e3*Math.acos(Math.min(a,1))}function getRoundNum(t){var e=Math.pow(10,(\"\"+Math.floor(t)).length-1),o=t/e;return o=o>=10?10:o>=5?5:o>=3?3:o>=2?2:1,e*o}var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),ScaleControl=function(t){this.options=t,util.bindAll([\"_onMove\"],this)};ScaleControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},ScaleControl.prototype._onMove=function(){updateScale(this._map,this._container,this.options)},ScaleControl.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},ScaleControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},module.exports=ScaleControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],188:[function(_dereq_,module,exports){\n\"use strict\";\n},{}],189:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),LngLatBounds=_dereq_(\"../../geo/lng_lat_bounds\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),BoxZoomHandler=function(o){this._map=o,this._el=o.getCanvasContainer(),this._container=o.getContainer(),util.bindAll([\"_onMouseDown\",\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this)};BoxZoomHandler.prototype.isEnabled=function(){return!!this._enabled},BoxZoomHandler.prototype.isActive=function(){return!!this._active},BoxZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.dragPan&&this._map.dragPan.disable(),this._el.addEventListener(\"mousedown\",this._onMouseDown,!1),this._map.dragPan&&this._map.dragPan.enable(),this._enabled=!0)},BoxZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onMouseDown),this._enabled=!1)},BoxZoomHandler.prototype._onMouseDown=function(o){o.shiftKey&&0===o.button&&(window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),window.document.addEventListener(\"keydown\",this._onKeyDown,!1),window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),DOM.disableDrag(),this._startPos=DOM.mousePos(this._el,o),this._active=!0)},BoxZoomHandler.prototype._onMouseMove=function(o){var e=this._startPos,t=DOM.mousePos(this._el,o);this._box||(this._box=DOM.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",o));var n=Math.min(e.x,t.x),i=Math.max(e.x,t.x),s=Math.min(e.y,t.y),a=Math.max(e.y,t.y);DOM.setTransform(this._box,\"translate(\"+n+\"px,\"+s+\"px)\"),this._box.style.width=i-n+\"px\",this._box.style.height=a-s+\"px\"},BoxZoomHandler.prototype._onMouseUp=function(o){if(0===o.button){var e=this._startPos,t=DOM.mousePos(this._el,o),n=(new LngLatBounds).extend(this._map.unproject(e)).extend(this._map.unproject(t));this._finish(),e.x===t.x&&e.y===t.y?this._fireEvent(\"boxzoomcancel\",o):this._map.fitBounds(n,{linear:!0}).fire(\"boxzoomend\",{originalEvent:o,boxZoomBounds:n})}},BoxZoomHandler.prototype._onKeyDown=function(o){27===o.keyCode&&(this._finish(),this._fireEvent(\"boxzoomcancel\",o))},BoxZoomHandler.prototype._finish=function(){this._active=!1,window.document.removeEventListener(\"mousemove\",this._onMouseMove,!1),window.document.removeEventListener(\"keydown\",this._onKeyDown,!1),window.document.removeEventListener(\"mouseup\",this._onMouseUp,!1),this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(DOM.remove(this._box),this._box=null),DOM.enableDrag()},BoxZoomHandler.prototype._fireEvent=function(o,e){return this._map.fire(o,{originalEvent:e})},module.exports=BoxZoomHandler;\n},{\"../../geo/lng_lat_bounds\":59,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],190:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../../util/util\"),DoubleClickZoomHandler=function(l){this._map=l,util.bindAll([\"_onDblClick\"],this)};DoubleClickZoomHandler.prototype.isEnabled=function(){return!!this._enabled},DoubleClickZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.on(\"dblclick\",this._onDblClick),this._enabled=!0)},DoubleClickZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._map.off(\"dblclick\",this._onDblClick),this._enabled=!1)},DoubleClickZoomHandler.prototype._onDblClick=function(l){this._map.zoomTo(this._map.getZoom()+(l.originalEvent.shiftKey?-1:1),{around:l.lngLat},l)},module.exports=DoubleClickZoomHandler;\n},{\"../../util/util\":223}],191:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.3,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=1400,inertiaDeceleration=2500,DragPanHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\",\"_onTouchEnd\",\"_onMouseUp\"],this)};DragPanHandler.prototype.isEnabled=function(){return!!this._enabled},DragPanHandler.prototype.isActive=function(){return!!this._active},DragPanHandler.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._el.addEventListener(\"mousedown\",this._onDown),this._el.addEventListener(\"touchstart\",this._onDown),this._enabled=!0)},DragPanHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._el.removeEventListener(\"mousedown\",this._onDown),this._el.removeEventListener(\"touchstart\",this._onDown),this._enabled=!1)},DragPanHandler.prototype._onDown=function(t){this._ignoreEvent(t)||this.isActive()||(t.touches?(window.document.addEventListener(\"touchmove\",this._onMove),window.document.addEventListener(\"touchend\",this._onTouchEnd)):(window.document.addEventListener(\"mousemove\",this._onMove),window.document.addEventListener(\"mouseup\",this._onMouseUp)),window.addEventListener(\"blur\",this._onMouseUp),this._active=!1,this._startPos=this._pos=DOM.mousePos(this._el,t),this._inertia=[[Date.now(),this._pos]])},DragPanHandler.prototype._onMove=function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"dragstart\",t),this._fireEvent(\"movestart\",t));var e=DOM.mousePos(this._el,t),n=this._map;n.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),e]),n.transform.setLocationAtPoint(n.transform.pointLocation(this._pos),e),this._fireEvent(\"drag\",t),this._fireEvent(\"move\",t),this._pos=e,t.preventDefault()}},DragPanHandler.prototype._onUp=function(t){var e=this;if(this.isActive()){this._active=!1,this._fireEvent(\"dragend\",t),this._drainInertiaBuffer();var n=function(){e._map.moving=!1,e._fireEvent(\"moveend\",t)},i=this._inertia;if(i.length<2)return void n();var o=i[i.length-1],r=i[0],a=o[1].sub(r[1]),s=(o[0]-r[0])/1e3;if(0===s||o[1].equals(r[1]))return void n();var u=a.mult(inertiaLinearity/s),d=u.mag();d>inertiaMaxSpeed&&(d=inertiaMaxSpeed,u._unit()._mult(d));var h=d/(inertiaDeceleration*inertiaLinearity),v=u.mult(-h/2);this._map.panBy(v,{duration:1e3*h,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragPanHandler.prototype._onMouseUp=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"mousemove\",this._onMove),window.document.removeEventListener(\"mouseup\",this._onMouseUp),window.removeEventListener(\"blur\",this._onMouseUp))},DragPanHandler.prototype._onTouchEnd=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onTouchEnd))},DragPanHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragPanHandler.prototype._ignoreEvent=function(t){var e=this._map;return!(!e.boxZoom||!e.boxZoom.isActive())||(!(!e.dragRotate||!e.dragRotate.isActive())||(t.touches?t.touches.length>1:!!t.ctrlKey||\"mousemove\"!==t.type&&t.button&&0!==t.button))},DragPanHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragPanHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],192:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.25,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=180,inertiaDeceleration=720,DragRotateHandler=function(t,e){this._map=t,this._el=e.element||t.getCanvasContainer(),this._button=e.button||\"right\",this._bearingSnap=e.bearingSnap||0,this._pitchWithRotate=!1!==e.pitchWithRotate,util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\"],this)};DragRotateHandler.prototype.isEnabled=function(){return!!this._enabled},DragRotateHandler.prototype.isActive=function(){return!!this._active},DragRotateHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"mousedown\",this._onDown),this._enabled=!0)},DragRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onDown),this._enabled=!1)},DragRotateHandler.prototype._onDown=function(t){if(!(this._map.boxZoom&&this._map.boxZoom.isActive()||this._map.dragPan&&this._map.dragPan.isActive()||this.isActive())){if(\"right\"===this._button){var e=t.ctrlKey?0:2,i=t.button;if(void 0!==window.InstallTrigger&&2===t.button&&t.ctrlKey&&window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0&&(i=0),i!==e)return}else if(t.ctrlKey||0!==t.button)return;DOM.disableDrag(),window.document.addEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.addEventListener(\"mouseup\",this._onUp),window.addEventListener(\"blur\",this._onUp),this._active=!1,this._inertia=[[Date.now(),this._map.getBearing()]],this._startPos=this._pos=DOM.mousePos(this._el,t),this._center=this._map.transform.centerPoint,t.preventDefault()}},DragRotateHandler.prototype._onMove=function(t){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"rotatestart\",t),this._fireEvent(\"movestart\",t),this._pitchWithRotate&&this._fireEvent(\"pitchstart\",t));var e=this._map;e.stop();var i=this._pos,n=DOM.mousePos(this._el,t),r=.8*(i.x-n.x),a=-.5*(i.y-n.y),o=e.getBearing()-r,s=e.getPitch()-a,h=this._inertia,_=h[h.length-1];this._drainInertiaBuffer(),h.push([Date.now(),e._normalizeBearing(o,_[1])]),e.transform.bearing=o,this._pitchWithRotate&&(this._fireEvent(\"pitch\",t),e.transform.pitch=s),this._fireEvent(\"rotate\",t),this._fireEvent(\"move\",t),this._pos=n},DragRotateHandler.prototype._onUp=function(t){var e=this;if(window.document.removeEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.removeEventListener(\"mouseup\",this._onUp),window.removeEventListener(\"blur\",this._onUp),DOM.enableDrag(),this.isActive()){this._active=!1,this._fireEvent(\"rotateend\",t),this._drainInertiaBuffer();var i=this._map,n=i.getBearing(),r=this._inertia,a=function(){Math.abs(n)<e._bearingSnap?i.resetNorth({noMoveStart:!0},{originalEvent:t}):(e._map.moving=!1,e._fireEvent(\"moveend\",t)),e._pitchWithRotate&&e._fireEvent(\"pitchend\",t)};if(r.length<2)return void a();var o=r[0],s=r[r.length-1],h=r[r.length-2],_=i._normalizeBearing(n,h[1]),p=s[1]-o[1],v=p<0?-1:1,d=(s[0]-o[0])/1e3;if(0===p||0===d)return void a();var l=Math.abs(p*(inertiaLinearity/d));l>inertiaMaxSpeed&&(l=inertiaMaxSpeed);var u=l/(inertiaDeceleration*inertiaLinearity);_+=v*l*(u/2),Math.abs(i._normalizeBearing(_,0))<this._bearingSnap&&(_=i._normalizeBearing(0,_)),i.rotateTo(_,{duration:1e3*u,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragRotateHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],193:[function(_dereq_,module,exports){\n\"use strict\";function easeOut(e){return e*(2-e)}var util=_dereq_(\"../../util/util\"),panStep=100,bearingStep=15,pitchStep=10,KeyboardHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onKeyDown\"],this)};KeyboardHandler.prototype.isEnabled=function(){return!!this._enabled},KeyboardHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0)},KeyboardHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1)},KeyboardHandler.prototype._onKeyDown=function(e){if(!(e.altKey||e.ctrlKey||e.metaKey)){var t=0,a=0,n=0,r=0,i=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?a=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?a=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?n=1:(e.preventDefault(),i=-1);break;case 40:e.shiftKey?n=-1:(i=1,e.preventDefault());break;default:return}var s=this._map,o=s.getZoom(),l={duration:300,delayEndEvents:500,easing:easeOut,zoom:t?Math.round(o)+t*(e.shiftKey?2:1):o,bearing:s.getBearing()+a*bearingStep,pitch:s.getPitch()+n*pitchStep,offset:[-r*panStep,-i*panStep],center:s.getCenter()};s.easeTo(l,{originalEvent:e})}},module.exports=KeyboardHandler;\n},{\"../../util/util\":223}],194:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),browser=_dereq_(\"../../util/browser\"),window=_dereq_(\"../../util/window\"),ua=window.navigator.userAgent.toLowerCase(),firefox=-1!==ua.indexOf(\"firefox\"),safari=-1!==ua.indexOf(\"safari\")&&-1===ua.indexOf(\"chrom\"),ScrollZoomHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onWheel\",\"_onTimeout\"],this)};ScrollZoomHandler.prototype.isEnabled=function(){return!!this._enabled},ScrollZoomHandler.prototype.enable=function(e){this.isEnabled()||(this._el.addEventListener(\"wheel\",this._onWheel,!1),this._el.addEventListener(\"mousewheel\",this._onWheel,!1),this._enabled=!0,this._aroundCenter=e&&\"center\"===e.around)},ScrollZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"wheel\",this._onWheel),this._el.removeEventListener(\"mousewheel\",this._onWheel),this._enabled=!1)},ScrollZoomHandler.prototype._onWheel=function(e){var t=0;\"wheel\"===e.type?(t=e.deltaY,firefox&&e.deltaMode===window.WheelEvent.DOM_DELTA_PIXEL&&(t/=browser.devicePixelRatio),e.deltaMode===window.WheelEvent.DOM_DELTA_LINE&&(t*=40)):\"mousewheel\"===e.type&&(t=-e.wheelDeltaY,safari&&(t/=3));var o=browser.now(),i=o-(this._time||0);this._pos=DOM.mousePos(this._el,e),this._time=o,0!==t&&t%4.000244140625==0?this._type=\"wheel\":0!==t&&Math.abs(t)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40)):this._type||(this._type=Math.abs(i*t)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&this._zoom(-t,e),e.preventDefault()},ScrollZoomHandler.prototype._onTimeout=function(){this._type=\"wheel\",this._zoom(-this._lastValue)},ScrollZoomHandler.prototype._zoom=function(e,t){if(0!==e){var o=this._map,i=2/(1+Math.exp(-Math.abs(e/100)));e<0&&0!==i&&(i=1/i);var l=o.ease?o.ease.to:o.transform.scale,s=o.transform.scaleZoom(l*i);o.zoomTo(s,{duration:\"wheel\"===this._type?200:0,around:this._aroundCenter?o.getCenter():o.unproject(this._pos),delayEndEvents:200,smoothEasing:!0},{originalEvent:t})}},module.exports=ScrollZoomHandler;\n},{\"../../util/browser\":202,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],195:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.15,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaDeceleration=12,inertiaMaxSpeed=2.5,significantScaleThreshold=.15,significantRotateThreshold=10,TouchZoomRotateHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onStart\",\"_onMove\",\"_onEnd\"],this)};TouchZoomRotateHandler.prototype.isEnabled=function(){return!!this._enabled},TouchZoomRotateHandler.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._el.addEventListener(\"touchstart\",this._onStart,!1),this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},TouchZoomRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._el.removeEventListener(\"touchstart\",this._onStart),this._enabled=!1)},TouchZoomRotateHandler.prototype.disableRotation=function(){this._rotationDisabled=!0},TouchZoomRotateHandler.prototype.enableRotation=function(){this._rotationDisabled=!1},TouchZoomRotateHandler.prototype._onStart=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]);this._startVec=e.sub(o),this._startScale=this._map.transform.scale,this._startBearing=this._map.transform.bearing,this._gestureIntent=void 0,this._inertia=[],window.document.addEventListener(\"touchmove\",this._onMove,!1),window.document.addEventListener(\"touchend\",this._onEnd,!1)}},TouchZoomRotateHandler.prototype._onMove=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]),i=e.add(o).div(2),n=e.sub(o),a=n.mag()/this._startVec.mag(),r=this._rotationDisabled?0:180*n.angleWith(this._startVec)/Math.PI,s=this._map;if(this._gestureIntent){var h={duration:0,around:s.unproject(i)};\"rotate\"===this._gestureIntent&&(h.bearing=this._startBearing+r),\"zoom\"!==this._gestureIntent&&\"rotate\"!==this._gestureIntent||(h.zoom=s.transform.scaleZoom(this._startScale*a)),s.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),a,i]),s.easeTo(h,{originalEvent:t})}else{var u=Math.abs(1-a)>significantScaleThreshold;Math.abs(r)>significantRotateThreshold?this._gestureIntent=\"rotate\":u&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._startVec=n,this._startScale=s.transform.scale,this._startBearing=s.transform.bearing)}t.preventDefault()}},TouchZoomRotateHandler.prototype._onEnd=function(t){window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onEnd),this._drainInertiaBuffer();var e=this._inertia,o=this._map;if(e.length<2)return void o.snapToNorth({},{originalEvent:t});var i=e[e.length-1],n=e[0],a=o.transform.scaleZoom(this._startScale*i[1]),r=o.transform.scaleZoom(this._startScale*n[1]),s=a-r,h=(i[0]-n[0])/1e3,u=i[2];if(0===h||a===r)return void o.snapToNorth({},{originalEvent:t});var l=s*inertiaLinearity/h;Math.abs(l)>inertiaMaxSpeed&&(l=l>0?inertiaMaxSpeed:-inertiaMaxSpeed);var d=1e3*Math.abs(l/(inertiaDeceleration*inertiaLinearity)),c=a+l*d/2e3;c<0&&(c=0),o.easeTo({zoom:c,duration:d,easing:inertiaEasing,around:this._aroundCenter?o.getCenter():o.unproject(u)},{originalEvent:t})},TouchZoomRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>2&&e-t[0][0]>160;)t.shift()},module.exports=TouchZoomRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],196:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),Hash=function(){util.bindAll([\"_onHashChange\",\"_updateHash\"],this)};Hash.prototype.addTo=function(t){return this._map=t,window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},Hash.prototype.remove=function(){return window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),delete this._map,this},Hash.prototype.getHashString=function(t){var a=this._map.getCenter(),h=Math.round(100*this._map.getZoom())/100,e=Math.max(0,Math.ceil(Math.log(h)/Math.LN2)),n=Math.round(a.lng*Math.pow(10,e))/Math.pow(10,e),o=Math.round(a.lat*Math.pow(10,e))/Math.pow(10,e),i=this._map.getBearing(),s=this._map.getPitch(),r=\"\";return r+=t?\"#/\"+n+\"/\"+o+\"/\"+h:\"#\"+h+\"/\"+o+\"/\"+n,(i||s)&&(r+=\"/\"+Math.round(10*i)/10),s&&(r+=\"/\"+Math.round(s)),r},Hash.prototype._onHashChange=function(){var t=window.location.hash.replace(\"#\",\"\").split(\"/\");return t.length>=3&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0),pitch:+(t[4]||0)}),!0)},Hash.prototype._updateHash=function(){var t=this.getHashString();window.history.replaceState(\"\",\"\",t)},module.exports=Hash;\n},{\"../util/util\":223,\"../util/window\":204}],197:[function(_dereq_,module,exports){\n\"use strict\";function removeNode(t){t.parentNode&&t.parentNode.removeChild(t)}var util=_dereq_(\"../util/util\"),browser=_dereq_(\"../util/browser\"),window=_dereq_(\"../util/window\"),ref=_dereq_(\"../util/window\"),HTMLImageElement=ref.HTMLImageElement,DOM=_dereq_(\"../util/dom\"),ajax=_dereq_(\"../util/ajax\"),Style=_dereq_(\"../style/style\"),AnimationLoop=_dereq_(\"../style/animation_loop\"),Painter=_dereq_(\"../render/painter\"),Transform=_dereq_(\"../geo/transform\"),Hash=_dereq_(\"./hash\"),bindHandlers=_dereq_(\"./bind_handlers\"),Camera=_dereq_(\"./camera\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),AttributionControl=_dereq_(\"./control/attribution_control\"),LogoControl=_dereq_(\"./control/logo_control\"),isSupported=_dereq_(\"mapbox-gl-supported\");_dereq_(\"./events\");var defaultMinZoom=0,defaultMaxZoom=22,defaultOptions={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:defaultMinZoom,maxZoom:defaultMaxZoom,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,transformRequest:null},Map=function(t){function e(e){var o=this;if(e=util.extend({},defaultOptions,e),null!=e.minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var r=new Transform(e.minZoom,e.maxZoom,e.renderWorldCopies);t.call(this,r,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles;var i=e.transformRequest;if(this._transformRequest=i?function(t,e){return i(t,e)||{url:t}}:function(t){return{url:t}},\"string\"==typeof e.container){var s=window.document.getElementById(e.container);if(!s)throw new Error(\"Container '\"+e.container+\"' not found.\");this._container=s}else this._container=e.container;this.animationLoop=new AnimationLoop,e.maxBounds&&this.setMaxBounds(e.maxBounds),util.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\",\"_update\",\"_render\",\"_onData\",\"_onDataLoading\"],this),this._setupContainer(),this._setupPainter(),this.on(\"move\",this._update.bind(this,!1)),this.on(\"zoom\",this._update.bind(this,!0)),this.on(\"moveend\",function(){o.animationLoop.set(300),o._rerender()}),void 0!==window&&(window.addEventListener(\"online\",this._onWindowOnline,!1),window.addEventListener(\"resize\",this._onWindowResize,!1)),bindHandlers(this,e),this._hash=e.hash&&(new Hash).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),this._classes=[],this.resize(),e.classes&&this.setClasses(e.classes),e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new AttributionControl),this.addControl(new LogoControl,e.logoPosition),this.on(\"style.load\",function(){this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this.style.update(this._classes,{transition:!1})}),this.on(\"data\",this._onData),this.on(\"dataloading\",this._onDataLoading)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var o={showTileBoundaries:{},showCollisionBoxes:{},showOverdrawInspector:{},repaint:{},vertices:{}};return e.prototype.addControl=function(t,e){void 0===e&&t.getDefaultPosition&&(e=t.getDefaultPosition()),void 0===e&&(e=\"top-right\");var o=t.onAdd(this),r=this._controlPositions[e];return-1!==e.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this},e.prototype.removeControl=function(t){return t.onRemove(this),this},e.prototype.addClass=function(t,e){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0||\"\"===t?this:(this._classes.push(t),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.removeClass=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");var o=this._classes.indexOf(t);return o<0||\"\"===t?this:(this._classes.splice(o,1),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.setClasses=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");for(var o={},r=0;r<t.length;r++)\"\"!==t[r]&&(o[t[r]]=!0);return this._classes=Object.keys(o),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0)},e.prototype.hasClass=function(t){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0},e.prototype.getClasses=function(){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes},e.prototype.resize=function(){var t=this._containerDimensions(),e=t[0],o=t[1];return this._resizeCanvas(e,o),this.transform.resize(e,o),this.painter.resize(e,o),this.fire(\"movestart\").fire(\"move\").fire(\"resize\").fire(\"moveend\")},e.prototype.getBounds=function(){var t=new LngLatBounds(this.transform.pointLocation(new Point(0,this.transform.height)),this.transform.pointLocation(new Point(this.transform.width,0)));return(this.transform.angle||this.transform.pitch)&&(t.extend(this.transform.pointLocation(new Point(this.transform.size.x,0))),t.extend(this.transform.pointLocation(new Point(0,this.transform.size.y)))),t},e.prototype.getMaxBounds=function(){return this.transform.latRange&&2===this.transform.latRange.length&&this.transform.lngRange&&2===this.transform.lngRange.length?new LngLatBounds([this.transform.lngRange[0],this.transform.latRange[0]],[this.transform.lngRange[1],this.transform.latRange[1]]):null},e.prototype.setMaxBounds=function(t){if(t){var e=LngLatBounds.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null!==t&&void 0!==t||(this.transform.lngRange=null,this.transform.latRange=null,this._update());return this},e.prototype.setMinZoom=function(t){if((t=null===t||void 0===t?defaultMinZoom:t)>=defaultMinZoom&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between \"+defaultMinZoom+\" and the current maxZoom, inclusive\")},e.prototype.getMinZoom=function(){return this.transform.minZoom},e.prototype.setMaxZoom=function(t){if((t=null===t||void 0===t?defaultMaxZoom:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},e.prototype.getMaxZoom=function(){return this.transform.maxZoom},e.prototype.project=function(t){return this.transform.locationPoint(LngLat.convert(t))},e.prototype.unproject=function(t){return this.transform.pointLocation(Point.convert(t))},e.prototype.on=function(e,o,r){var i=this;if(void 0===r)return t.prototype.on.call(this,e,o);var s=function(){if(\"mouseenter\"===e||\"mouseover\"===e){var t=!1;return{layer:o,listener:r,delegates:{mousemove:function(s){var n=i.getLayer(o)?i.queryRenderedFeatures(s.point,{layers:[o]}):[];n.length?t||(t=!0,r.call(i,util.extend({features:n},s,{type:e}))):t=!1},mouseout:function(){t=!1}}}}if(\"mouseleave\"===e||\"mouseout\"===e){var s=!1;return{layer:o,listener:r,delegates:{mousemove:function(t){(i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[]).length?s=!0:s&&(s=!1,r.call(i,util.extend({},t,{type:e})))},mouseout:function(t){s&&(s=!1,r.call(i,util.extend({},t,{type:e})))}}}}var n=function(t){var e=i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[];e.length&&r.call(i,util.extend({features:e},t))};return{layer:o,listener:r,delegates:(a={},a[e]=n,a)};var a}();this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(s);for(var n in s.delegates)i.on(n,s.delegates[n]);return this},e.prototype.off=function(e,o,r){var i=this;if(void 0===r)return t.prototype.off.call(this,e,o);if(this._delegatedListeners&&this._delegatedListeners[e])for(var s=this._delegatedListeners[e],n=0;n<s.length;n++){var a=s[n];if(a.layer===o&&a.listener===r){for(var h in a.delegates)i.off(h,a.delegates[h]);return s.splice(n,1),i}}return this},e.prototype.queryRenderedFeatures=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o,r={};return 2===t.length?(o=arguments[0],r=arguments[1]):1===t.length&&function(t){return t instanceof Point||Array.isArray(t)}(t[0])?o=t[0]:1===t.length&&(r=t[0]),this.style?this.style.queryRenderedFeatures(this._makeQueryGeometry(o),r,this.transform.zoom,this.transform.angle):[]},e.prototype._makeQueryGeometry=function(t){var e=this;void 0===t&&(t=[Point.convert([0,0]),Point.convert([this.transform.width,this.transform.height])]);var o;if(t instanceof Point||\"number\"==typeof t[0]){o=[Point.convert(t)]}else{var r=[Point.convert(t[0]),Point.convert(t[1])];o=[r[0],new Point(r[1].x,r[0].y),r[1],new Point(r[0].x,r[1].y),r[0]]}return o=o.map(function(t){return e.transform.pointCoordinate(t)})},e.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},e.prototype.setStyle=function(t,e){if((!e||!1!==e.diff&&!e.localIdeographFontFamily)&&this.style&&t&&!(t instanceof Style)&&\"string\"!=typeof t)try{return this.style.setState(t)&&this._update(!0),this}catch(t){util.warnOnce(\"Unable to perform style diff: \"+(t.message||t.error||t)+\". Rebuilding the style from scratch.\")}return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.off(\"rotate\",this.style._redoPlacement),this.off(\"pitch\",this.style._redoPlacement),this.off(\"move\",this.style._redoPlacement)),t?(this.style=t instanceof Style?t:new Style(t,this,e||{}),this.style.setEventedParent(this,{style:this.style}),this.on(\"rotate\",this.style._redoPlacement),this.on(\"pitch\",this.style._redoPlacement),this.on(\"move\",this.style._redoPlacement),this):(this.style=null,this)},e.prototype.getStyle=function(){if(this.style)return this.style.serialize()},e.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():util.warnOnce(\"There is no style added to the map.\")},e.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0),this},e.prototype.isSourceLoaded=function(t){var e=this.style&&this.style.sourceCaches[t];return void 0===e?void this.fire(\"error\",{error:new Error(\"There is no source with ID '\"+t+\"'\")}):e.loaded()},e.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var o=t[e],r=o._tiles;for(var i in r){var s=r[i];if(\"loaded\"!==s.state&&\"errored\"!==s.state)return!1}}return!0},e.prototype.addSourceType=function(t,e,o){return this.style.addSourceType(t,e,o)},e.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0),this},e.prototype.getSource=function(t){return this.style.getSource(t)},e.prototype.addImage=function(t,e,o){void 0===o&&(o={});var r=o.pixelRatio;void 0===r&&(r=1);var i=o.sdf;if(void 0===i&&(i=!1),e instanceof HTMLImageElement)e=browser.getImageData(e);else if(void 0===e.width||void 0===e.height)return this.fire(\"error\",{error:new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")});this.style.addImage(t,{data:e,pixelRatio:r,sdf:i})},e.prototype.removeImage=function(t){this.style.removeImage(t)},e.prototype.loadImage=function(t,e){ajax.getImage(this._transformRequest(t,ajax.ResourceType.Image),e)},e.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0),this},e.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0),this},e.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0),this},e.prototype.getLayer=function(t){return this.style.getLayer(t)},e.prototype.setFilter=function(t,e){return this.style.setFilter(t,e),this._update(!0),this},e.prototype.setLayerZoomRange=function(t,e,o){return this.style.setLayerZoomRange(t,e,o),this._update(!0),this},e.prototype.getFilter=function(t){return this.style.getFilter(t)},e.prototype.setPaintProperty=function(t,e,o,r){return this.style.setPaintProperty(t,e,o,r),this._update(!0),this},e.prototype.getPaintProperty=function(t,e,o){return this.style.getPaintProperty(t,e,o)},e.prototype.setLayoutProperty=function(t,e,o){return this.style.setLayoutProperty(t,e,o),this._update(!0),this},e.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},e.prototype.setLight=function(t){return this.style.setLight(t),this._update(!0),this},e.prototype.getLight=function(){return this.style.getLight()},e.prototype.getContainer=function(){return this._container},e.prototype.getCanvasContainer=function(){return this._canvasContainer},e.prototype.getCanvas=function(){return this._canvas},e.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),[t,e]},e.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\");var e=this._canvasContainer=DOM.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=DOM.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.style.position=\"absolute\",this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\");var o=this._containerDimensions();this._resizeCanvas(o[0],o[1]);var r=this._controlContainer=DOM.create(\"div\",\"mapboxgl-control-container\",t),i=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(function(t){i[t]=DOM.create(\"div\",\"mapboxgl-ctrl-\"+t,r)})},e.prototype._resizeCanvas=function(t,e){var o=window.devicePixelRatio||1;this._canvas.width=o*t,this._canvas.height=o*e,this._canvas.style.width=t+\"px\",this._canvas.style.height=e+\"px\"},e.prototype._setupPainter=function(){var t=util.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},isSupported.webGLContextAttributes),e=this._canvas.getContext(\"webgl\",t)||this._canvas.getContext(\"experimental-webgl\",t);if(!e)return void this.fire(\"error\",{error:new Error(\"Failed to initialize WebGL\")});this.painter=new Painter(e,this.transform)},e.prototype._contextLost=function(t){t.preventDefault(),this._frameId&&(browser.cancelFrame(this._frameId),this._frameId=null),this.fire(\"webglcontextlost\",{originalEvent:t})},e.prototype._contextRestored=function(t){this._setupPainter(),this.resize(),this._update(),this.fire(\"webglcontextrestored\",{originalEvent:t})},e.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},e.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender(),this):this},e.prototype._render=function(){return this.style&&this._styleDirty&&(this._styleDirty=!1,this.style.update(this._classes,this._classOptions),this._classOptions=null,this.style._recalculate(this.transform.zoom)),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.rotating,zooming:this.zooming}),this.fire(\"render\"),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(\"load\")),this._frameId=null,this.animationLoop.stopped()||(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty)&&this._rerender(),this},e.prototype.remove=function(){this._hash&&this._hash.remove(),browser.cancelFrame(this._frameId),this._frameId=null,this.setStyle(null),void 0!==window&&(window.removeEventListener(\"resize\",this._onWindowResize,!1),window.removeEventListener(\"online\",this._onWindowOnline,!1));var t=this.painter.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),removeNode(this._canvasContainer),removeNode(this._controlContainer),this._container.classList.remove(\"mapboxgl-map\"),this.fire(\"remove\")},e.prototype._rerender=function(){this.style&&!this._frameId&&(this._frameId=browser.frame(this._render))},e.prototype._onWindowOnline=function(){this._update()},e.prototype._onWindowResize=function(){this._trackResize&&this.stop().resize()._update()},o.showTileBoundaries.get=function(){return!!this._showTileBoundaries},o.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},o.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},o.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,this.style._redoPlacement())},o.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},o.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},o.repaint.get=function(){return!!this._repaint},o.repaint.set=function(t){this._repaint=t,this._update()},o.vertices.get=function(){return!!this._vertices},o.vertices.set=function(t){this._vertices=t,this._update()},e.prototype._onData=function(t){this._update(\"style\"===t.dataType),this.fire(t.dataType+\"data\",t)},e.prototype._onDataLoading=function(t){this.fire(t.dataType+\"dataloading\",t)},Object.defineProperties(e.prototype,o),e}(Camera);module.exports=Map;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../geo/transform\":60,\"../render/painter\":79,\"../style/animation_loop\":150,\"../style/style\":156,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dom\":209,\"../util/util\":223,\"../util/window\":204,\"./bind_handlers\":180,\"./camera\":181,\"./control/attribution_control\":182,\"./control/logo_control\":185,\"./events\":188,\"./hash\":196,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],198:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),smartWrap=_dereq_(\"../util/smart_wrap\"),ref=_dereq_(\"../util/util\"),bindAll=ref.bindAll,Marker=function(t,e){this._offset=Point.convert(e&&e.offset||[0,0]),bindAll([\"_update\",\"_onMapClick\"],this),t||(t=DOM.create(\"div\")),t.classList.add(\"mapboxgl-marker\"),this._element=t,this._popup=null};Marker.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this._update(),this._map.on(\"click\",this._onMapClick),this},Marker.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),delete this._map),DOM.remove(this._element),this._popup&&this._popup.remove(),this},Marker.prototype.getLngLat=function(){return this._lngLat},Marker.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},Marker.prototype.getElement=function(){return this._element},Marker.prototype.setPopup=function(t){return this._popup&&(this._popup.remove(),this._popup=null),t&&(\"offset\"in t.options||(t.options.offset=this._offset),this._popup=t,this._popup.setLngLat(this._lngLat)),this},Marker.prototype._onMapClick=function(t){var e=t.originalEvent.target,p=this._element;this._popup&&(e===p||p.contains(e))&&this.togglePopup()},Marker.prototype.getPopup=function(){return this._popup},Marker.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},Marker.prototype._update=function(t){this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),DOM.setTransform(this._element,\"translate(-50%, -50%) translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px)\"))},module.exports=Marker;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/smart_wrap\":219,\"../util/util\":223,\"@mapbox/point-geometry\":2}],199:[function(_dereq_,module,exports){\n\"use strict\";function normalizeOffset(t){if(t){if(\"number\"==typeof t){var o=Math.round(Math.sqrt(.5*Math.pow(t,2)));return{top:new Point(0,t),\"top-left\":new Point(o,o),\"top-right\":new Point(-o,o),bottom:new Point(0,-t),\"bottom-left\":new Point(o,-o),\"bottom-right\":new Point(-o,-o),left:new Point(t,0),right:new Point(-t,0)}}if(t instanceof Point||Array.isArray(t)){var e=Point.convert(t);return{top:e,\"top-left\":e,\"top-right\":e,bottom:e,\"bottom-left\":e,\"bottom-right\":e,left:e,right:e}}return{top:Point.convert(t.top||[0,0]),\"top-left\":Point.convert(t[\"top-left\"]||[0,0]),\"top-right\":Point.convert(t[\"top-right\"]||[0,0]),bottom:Point.convert(t.bottom||[0,0]),\"bottom-left\":Point.convert(t[\"bottom-left\"]||[0,0]),\"bottom-right\":Point.convert(t[\"bottom-right\"]||[0,0]),left:Point.convert(t.left||[0,0]),right:Point.convert(t.right||[0,0])}}return normalizeOffset(new Point(0,0))}var util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"../util/window\"),smartWrap=_dereq_(\"../util/smart_wrap\"),defaultOptions={closeButton:!0,closeOnClick:!0},Popup=function(t){function o(o){t.call(this),this.options=util.extend(Object.create(defaultOptions),o),util.bindAll([\"_update\",\"_onClickClose\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.addTo=function(t){return this._map=t,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._update(),this},o.prototype.isOpen=function(){return!!this._map},o.prototype.remove=function(){return this._content&&DOM.remove(this._content),this._container&&(DOM.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),delete this._map),this.fire(\"close\"),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._update(),this},o.prototype.setText=function(t){return this.setDOMContent(window.document.createTextNode(t))},o.prototype.setHTML=function(t){var o,e=window.document.createDocumentFragment(),n=window.document.createElement(\"body\");for(n.innerHTML=t;;){if(!(o=n.firstChild))break;e.appendChild(o)}return this.setDOMContent(e)},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype._createContent=function(){this._content&&DOM.remove(this._content),this._content=DOM.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=DOM.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClickClose))},o.prototype._update=function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=DOM.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=DOM.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content)),this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform));var t=this._pos=this._map.project(this._lngLat),o=this.options.anchor,e=normalizeOffset(this.options.offset);if(!o){var n=this._container.offsetWidth,i=this._container.offsetHeight;o=t.y+e.bottom.y<i?[\"top\"]:t.y>this._map.transform.height-i?[\"bottom\"]:[],t.x<n/2?o.push(\"left\"):t.x>this._map.transform.width-n/2&&o.push(\"right\"),o=0===o.length?\"bottom\":o.join(\"-\")}var r=t.add(e[o]).round(),s={top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"},p=this._container.classList;for(var a in s)p.remove(\"mapboxgl-popup-anchor-\"+a);p.add(\"mapboxgl-popup-anchor-\"+o),DOM.setTransform(this._container,s[o]+\" translate(\"+r.x+\"px,\"+r.y+\"px)\")}},o.prototype._onClickClose=function(){this.remove()},o}(Evented);module.exports=Popup;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/evented\":210,\"../util/smart_wrap\":219,\"../util/util\":223,\"../util/window\":204,\"@mapbox/point-geometry\":2}],200:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,util.bindAll([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1)};Actor.prototype.send=function(t,e,r,a,i){var s=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[s]=r),this.target.postMessage({targetMapId:i,sourceMapId:this.mapId,type:t,id:String(s),data:e},a)},Actor.prototype.receive=function(t){var e,r=this,a=t.data,i=a.id;if(!a.targetMapId||this.mapId===a.targetMapId){var s=function(t,e,a){r.target.postMessage({sourceMapId:r.mapId,type:\"<response>\",id:String(i),error:t?String(t):null,data:e},a)};if(\"<response>\"===a.type)e=this.callbacks[a.id],delete this.callbacks[a.id],e&&a.error?e(new Error(a.error)):e&&e(null,a.data);else if(void 0!==a.id&&this.parent[a.type])this.parent[a.type](a.sourceMapId,a.data,s);else if(void 0!==a.id&&this.parent.getWorkerSource){var o=a.type.split(\".\"),p=this.parent.getWorkerSource(a.sourceMapId,o[0]);p[o[1]](a.data,s)}else this.parent[a.type](a.data)}},Actor.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1)},module.exports=Actor;\n},{\"./util\":223}],201:[function(_dereq_,module,exports){\n\"use strict\";function makeRequest(e){var t=new window.XMLHttpRequest;t.open(\"GET\",e.url,!0);for(var r in e.headers)t.setRequestHeader(r,e.headers[r]);return t.withCredentials=\"include\"===e.credentials,t}function sameOrigin(e){var t=window.document.createElement(\"a\");return t.href=e,t.protocol===window.document.location.protocol&&t.host===window.document.location.host}var window=_dereq_(\"./window\"),ResourceType={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};exports.ResourceType=ResourceType,\"function\"==typeof Object.freeze&&Object.freeze(ResourceType);var AJAXError=function(e){function t(t,r){e.call(this,t),this.status=r}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(Error);exports.getJSON=function(e,t){var r=makeRequest(e);return r.setRequestHeader(\"Accept\",\"application/json\"),r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var e;try{e=JSON.parse(r.response)}catch(e){return t(e)}t(null,e)}else t(new AJAXError(r.statusText,r.status))},r.send(),r},exports.getArrayBuffer=function(e,t){var r=makeRequest(e);return r.responseType=\"arraybuffer\",r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){var e=r.response;if(0===e.byteLength&&200===r.status)return t(new Error(\"http status 200 returned without content.\"));r.status>=200&&r.status<300&&r.response?t(null,{data:e,cacheControl:r.getResponseHeader(\"Cache-Control\"),expires:r.getResponseHeader(\"Expires\")}):t(new AJAXError(r.statusText,r.status))},r.send(),r};var transparentPngUrl=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";exports.getImage=function(e,t){return exports.getArrayBuffer(e,function(e,r){if(e)t(e);else if(r){var n=new window.Image,o=window.URL||window.webkitURL;n.onload=function(){t(null,n),o.revokeObjectURL(n.src)};var s=new window.Blob([new Uint8Array(r.data)],{type:\"image/png\"});n.cacheControl=r.cacheControl,n.expires=r.expires,n.src=r.data.byteLength?o.createObjectURL(s):transparentPngUrl}})},exports.getVideo=function(e,t){var r=window.document.createElement(\"video\");r.onloadstart=function(){t(null,r)};for(var n=0;n<e.length;n++){var o=window.document.createElement(\"source\");sameOrigin(e[n])||(r.crossOrigin=\"Anonymous\"),o.src=e[n],r.appendChild(o)}return r};\n},{\"./window\":204}],202:[function(_dereq_,module,exports){\n\"use strict\";var window=_dereq_(\"./window\"),now=window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now.bind(Date),frame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,cancel=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame;module.exports={now:now,frame:function(e){return frame(e)},cancelFrame:function(e){return cancel(e)},timed:function(e,n,t){function a(){if(!i){var r=now();r>=o+n?e.call(t,1):(e.call(t,(r-o)/n),frame(a))}}if(!n)return e.call(t,1),null;var i=!1,o=now();return frame(a),function(){i=!0}},getImageData:function(e){var n=window.document.createElement(\"canvas\"),t=n.getContext(\"2d\");if(!t)throw new Error(\"failed to create canvas 2d context\");return n.width=e.width,n.height=e.height,t.drawImage(e,0,0,e.width,e.height),t.getImageData(0,0,e.width,e.height)},hardwareConcurrency:window.navigator.hardwareConcurrency||4,get devicePixelRatio(){return window.devicePixelRatio},supportsWebp:!1};var webpImgTest=window.document.createElement(\"img\");webpImgTest.onload=function(){module.exports.supportsWebp=!0},webpImgTest.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\";\n},{\"./window\":204}],203:[function(_dereq_,module,exports){\n\"use strict\";var WebWorkify=_dereq_(\"webworkify\"),window=_dereq_(\"../window\"),workerURL=window.URL.createObjectURL(new WebWorkify(_dereq_(\"../../source/worker\"),{bare:!0}));module.exports=function(){return new window.Worker(workerURL)};\n},{\"../../source/worker\":105,\"../window\":204,\"webworkify\":39}],204:[function(_dereq_,module,exports){\n\"use strict\";module.exports=self;\n},{}],205:[function(_dereq_,module,exports){\n\"use strict\";function compareAreas(e,r){return r.area-e.area}var quickselect=_dereq_(\"quickselect\"),calculateSignedArea=_dereq_(\"./util\").calculateSignedArea;module.exports=function(e,r){var a=e.length;if(a<=1)return[e];for(var t,u,c=[],i=0;i<a;i++){var l=calculateSignedArea(e[i]);0!==l&&(e[i].area=Math.abs(l),void 0===u&&(u=l<0),u===l<0?(t&&c.push(t),t=[e[i]]):t.push(e[i]))}if(t&&c.push(t),r>1)for(var n=0;n<c.length;n++)c[n].length<=r||(quickselect(c[n],r,1,c[n].length-1,compareAreas),c[n]=c[n].slice(0,r));return c};\n},{\"./util\":223,\"quickselect\":31}],206:[function(_dereq_,module,exports){\n\"use strict\";var config={API_URL:\"https://api.mapbox.com\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null};module.exports=config;\n},{}],207:[function(_dereq_,module,exports){\n\"use strict\";var DictionaryCoder=function(r){var t=this;this._stringToNumber={},this._numberToString=[];for(var o=0;o<r.length;o++){var i=r[o];t._stringToNumber[i]=o,t._numberToString[o]=i}};DictionaryCoder.prototype.encode=function(r){return this._stringToNumber[r]},DictionaryCoder.prototype.decode=function(r){return this._numberToString[r]},module.exports=DictionaryCoder;\n},{}],208:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=_dereq_(\"./actor\"),Dispatcher=function(t,r){var o=this;this.workerPool=t,this.actors=[],this.currentActor=0,this.id=util.uniqueId();for(var i=this.workerPool.acquire(this.id),e=0;e<i.length;e++){var s=i[e],c=new Actor(s,r,o.id);c.name=\"Worker \"+e,o.actors.push(c)}};Dispatcher.prototype.broadcast=function(t,r,o){o=o||function(){},util.asyncAll(this.actors,function(o,i){o.send(t,r,i)},o)},Dispatcher.prototype.send=function(t,r,o,i,e){return(\"number\"!=typeof i||isNaN(i))&&(i=this.currentActor=(this.currentActor+1)%this.actors.length),this.actors[i].send(t,r,o,e),i},Dispatcher.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},module.exports=Dispatcher;\n},{\"./actor\":200,\"./util\":223}],209:[function(_dereq_,module,exports){\n\"use strict\";function testProp(e){for(var t=0;t<e.length;t++)if(e[t]in docStyle)return e[t];return e[0]}var Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"./window\");exports.create=function(e,t,o){var n=window.document.createElement(e);return t&&(n.className=t),o&&o.appendChild(n),n};var docStyle=window.document.documentElement.style,selectProp=testProp([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]),userSelect;exports.disableDrag=function(){selectProp&&(userSelect=docStyle[selectProp],docStyle[selectProp]=\"none\")},exports.enableDrag=function(){selectProp&&(docStyle[selectProp]=userSelect)};var transformProp=testProp([\"transform\",\"WebkitTransform\"]);exports.setTransform=function(e,t){e.style[transformProp]=t};var suppressClick=function(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener(\"click\",suppressClick,!0)};exports.suppressClick=function(){window.addEventListener(\"click\",suppressClick,!0),window.setTimeout(function(){window.removeEventListener(\"click\",suppressClick,!0)},0)},exports.mousePos=function(e,t){var o=e.getBoundingClientRect();return t=t.touches?t.touches[0]:t,new Point(t.clientX-o.left-e.clientLeft,t.clientY-o.top-e.clientTop)},exports.touchPos=function(e,t){for(var o=e.getBoundingClientRect(),n=[],r=\"touchend\"===t.type?t.changedTouches:t.touches,s=0;s<r.length;s++)n.push(new Point(r[s].clientX-o.left-e.clientLeft,r[s].clientY-o.top-e.clientTop));return n},exports.remove=function(e){e.parentNode&&e.parentNode.removeChild(e)};\n},{\"./window\":204,\"@mapbox/point-geometry\":2}],210:[function(_dereq_,module,exports){\n\"use strict\";function _addEventListener(e,t,n){n[e]=n[e]||[],n[e].push(t)}function _removeEventListener(e,t,n){if(n&&n[e]){var i=n[e].indexOf(t);-1!==i&&n[e].splice(i,1)}}var util=_dereq_(\"./util\"),Evented=function(){};Evented.prototype.on=function(e,t){return this._listeners=this._listeners||{},_addEventListener(e,t,this._listeners),this},Evented.prototype.off=function(e,t){return _removeEventListener(e,t,this._listeners),_removeEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.once=function(e,t){return this._oneTimeListeners=this._oneTimeListeners||{},_addEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.fire=function(e,t){var n=this;if(this.listens(e)){t=util.extend({},t,{type:e,target:this});for(var i=this._listeners&&this._listeners[e]?this._listeners[e].slice():[],s=0;s<i.length;s++)i[s].call(n,t);for(var r=this._oneTimeListeners&&this._oneTimeListeners[e]?this._oneTimeListeners[e].slice():[],o=0;o<r.length;o++)r[o].call(n,t),_removeEventListener(e,r[o],n._oneTimeListeners);this._eventedParent&&this._eventedParent.fire(e,util.extend({},t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData))}else util.endsWith(e,\"error\")&&console.error(t&&t.error||t||\"Empty error event\");return this},Evented.prototype.listens=function(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)},Evented.prototype.setEventedParent=function(e,t){return this._eventedParent=e,this._eventedParentData=t,this},module.exports=Evented;\n},{\"./util\":223}],211:[function(_dereq_,module,exports){\n\"use strict\";function compareMax(e,t){return t.max-e.max}function Cell(e,t,n,o){this.p=new Point(e,t),this.h=n,this.d=pointToPolygonDist(this.p,o),this.max=this.d+this.h*Math.SQRT2}function pointToPolygonDist(e,t){for(var n=!1,o=1/0,r=0;r<t.length;r++)for(var i=t[r],l=0,u=i.length,a=u-1;l<u;a=l++){var s=i[l],p=i[a];s.y>e.y!=p.y>e.y&&e.x<(p.x-s.x)*(e.y-s.y)/(p.y-s.y)+s.x&&(n=!n),o=Math.min(o,distToSegmentSquared(e,s,p))}return(n?1:-1)*Math.sqrt(o)}function getCentroidCell(e){for(var t=0,n=0,o=0,r=e[0],i=0,l=r.length,u=l-1;i<l;u=i++){var a=r[i],s=r[u],p=a.x*s.y-s.x*a.y;n+=(a.x+s.x)*p,o+=(a.y+s.y)*p,t+=3*p}return new Cell(n/t,o/t,0,e)}var Queue=_dereq_(\"tinyqueue\"),Point=_dereq_(\"@mapbox/point-geometry\"),distToSegmentSquared=_dereq_(\"./intersection_tests\").distToSegmentSquared;module.exports=function(e,t,n){void 0===t&&(t=1),void 0===n&&(n=!1);for(var o=1/0,r=1/0,i=-1/0,l=-1/0,u=e[0],a=0;a<u.length;a++){var s=u[a];(!a||s.x<o)&&(o=s.x),(!a||s.y<r)&&(r=s.y),(!a||s.x>i)&&(i=s.x),(!a||s.y>l)&&(l=s.y)}var p=i-o,h=l-r,d=Math.min(p,h),x=d/2,y=new Queue(null,compareMax);if(0===d)return new Point(o,r);for(var g=o;g<i;g+=d)for(var f=r;f<l;f+=d)y.push(new Cell(g+x,f+x,x,e));for(var m=getCentroidCell(e),v=y.length;y.length;){var c=y.pop();(c.d>m.d||!m.d)&&(m=c,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*c.d)/1e4,v)),c.max-m.d<=t||(x=c.h/2,y.push(new Cell(c.p.x-x,c.p.y-x,x,e)),y.push(new Cell(c.p.x+x,c.p.y-x,x,e)),y.push(new Cell(c.p.x-x,c.p.y+x,x,e)),y.push(new Cell(c.p.x+x,c.p.y+x,x,e)),v+=4)}return n&&(console.log(\"num probes: \"+v),console.log(\"best distance: \"+m.d)),m.p};\n},{\"./intersection_tests\":214,\"@mapbox/point-geometry\":2,\"tinyqueue\":33}],212:[function(_dereq_,module,exports){\n\"use strict\";var WorkerPool=_dereq_(\"./worker_pool\"),globalWorkerPool;module.exports=function(){return globalWorkerPool||(globalWorkerPool=new WorkerPool),globalWorkerPool};\n},{\"./worker_pool\":226}],213:[function(_dereq_,module,exports){\n\"use strict\";function createImage(e,t,i){var h=e.width,a=e.height;if(i){if(i.length!==h*a*t)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(h*a*t);return{width:h,height:a,data:i}}function resizeImage(e,t,i){var h=t.width,a=t.height;if(h===e.width&&a===e.height)return e;var r=createImage({width:h,height:a},i);copyImage(e,r,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,h),height:Math.min(e.height,a)},i),e.width=h,e.height=a,e.data=r.data}function copyImage(e,t,i,h,a,r){if(0===a.width||0===a.height)return t;if(a.width>e.width||a.height>e.height||i.x>e.width-a.width||i.y>e.height-a.height)throw new RangeError(\"out of range source coordinates for image copy\");if(a.width>t.width||a.height>t.height||h.x>t.width-a.width||h.y>t.height-a.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var g=e.data,n=t.data,o=0;o<a.height;o++)for(var m=((i.y+o)*e.width+i.x)*r,c=((h.y+o)*t.width+h.x)*r,d=0;d<a.width*r;d++)n[c+d]=g[m+d];return t}var AlphaImage=function(){};AlphaImage.create=function(e,t){return createImage(e,1,t)},AlphaImage.resize=function(e,t){resizeImage(e,t,1)},AlphaImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,1)};var RGBAImage=function(){};RGBAImage.create=function(e,t){return createImage(e,4,t)},RGBAImage.resize=function(e,t){resizeImage(e,t,4)},RGBAImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,4)},module.exports={AlphaImage:AlphaImage,RGBAImage:RGBAImage};\n},{}],214:[function(_dereq_,module,exports){\n\"use strict\";function polygonIntersectsPolygon(n,t){for(var e=0;e<n.length;e++)if(polygonContainsPoint(t,n[e]))return!0;for(var r=0;r<t.length;r++)if(polygonContainsPoint(n,t[r]))return!0;return!!lineIntersectsLine(n,t)}function multiPolygonIntersectsBufferedMultiPoint(n,t,e){for(var r=0;r<n.length;r++)for(var o=n[r],i=0;i<t.length;i++)for(var l=t[i],u=0;u<l.length;u++){var s=l[u];if(polygonContainsPoint(o,s))return!0;if(pointIntersectsBufferedLine(s,o,e))return!0}return!1}function multiPolygonIntersectsMultiPolygon(n,t){if(1===n.length&&1===n[0].length)return multiPolygonContainsPoint(t,n[0][0]);for(var e=0;e<t.length;e++)for(var r=t[e],o=0;o<r.length;o++)if(multiPolygonContainsPoint(n,r[o]))return!0;for(var i=0;i<n.length;i++){for(var l=n[i],u=0;u<l.length;u++)if(multiPolygonContainsPoint(t,l[u]))return!0;for(var s=0;s<t.length;s++)if(lineIntersectsLine(l,t[s]))return!0}return!1}function multiPolygonIntersectsBufferedMultiLine(n,t,e){for(var r=0;r<t.length;r++)for(var o=t[r],i=0;i<n.length;i++){var l=n[i];if(l.length>=3)for(var u=0;u<o.length;u++)if(polygonContainsPoint(l,o[u]))return!0;if(lineIntersectsBufferedLine(l,o,e))return!0}return!1}function lineIntersectsBufferedLine(n,t,e){if(n.length>1){if(lineIntersectsLine(n,t))return!0;for(var r=0;r<t.length;r++)if(pointIntersectsBufferedLine(t[r],n,e))return!0}for(var o=0;o<n.length;o++)if(pointIntersectsBufferedLine(n[o],t,e))return!0;return!1}function lineIntersectsLine(n,t){if(0===n.length||0===t.length)return!1;for(var e=0;e<n.length-1;e++)for(var r=n[e],o=n[e+1],i=0;i<t.length-1;i++){var l=t[i],u=t[i+1];if(lineSegmentIntersectsLineSegment(r,o,l,u))return!0}return!1}function lineSegmentIntersectsLineSegment(n,t,e,r){return isCounterClockwise(n,e,r)!==isCounterClockwise(t,e,r)&&isCounterClockwise(n,t,e)!==isCounterClockwise(n,t,r)}function pointIntersectsBufferedLine(n,t,e){var r=e*e;if(1===t.length)return n.distSqr(t[0])<r;for(var o=1;o<t.length;o++){if(distToSegmentSquared(n,t[o-1],t[o])<r)return!0}return!1}function distToSegmentSquared(n,t,e){var r=t.distSqr(e);if(0===r)return n.distSqr(t);var o=((n.x-t.x)*(e.x-t.x)+(n.y-t.y)*(e.y-t.y))/r;return o<0?n.distSqr(t):o>1?n.distSqr(e):n.distSqr(e.sub(t)._mult(o)._add(t))}function multiPolygonContainsPoint(n,t){for(var e,r,o,i=!1,l=0;l<n.length;l++){e=n[l];for(var u=0,s=e.length-1;u<e.length;s=u++)r=e[u],o=e[s],r.y>t.y!=o.y>t.y&&t.x<(o.x-r.x)*(t.y-r.y)/(o.y-r.y)+r.x&&(i=!i)}return i}function polygonContainsPoint(n,t){for(var e=!1,r=0,o=n.length-1;r<n.length;o=r++){var i=n[r],l=n[o];i.y>t.y!=l.y>t.y&&t.x<(l.x-i.x)*(t.y-i.y)/(l.y-i.y)+i.x&&(e=!e)}return e}var ref=_dereq_(\"./util\"),isCounterClockwise=ref.isCounterClockwise;module.exports={multiPolygonIntersectsBufferedMultiPoint:multiPolygonIntersectsBufferedMultiPoint,multiPolygonIntersectsMultiPolygon:multiPolygonIntersectsMultiPolygon,multiPolygonIntersectsBufferedMultiLine:multiPolygonIntersectsBufferedMultiLine,polygonIntersectsPolygon:polygonIntersectsPolygon,distToSegmentSquared:distToSegmentSquared};\n},{\"./util\":223}],215:[function(_dereq_,module,exports){\n\"use strict\";var unicodeBlockLookup={\"Latin-1 Supplement\":function(n){return n>=128&&n<=255},Arabic:function(n){return n>=1536&&n<=1791},\"Arabic Supplement\":function(n){return n>=1872&&n<=1919},\"Arabic Extended-A\":function(n){return n>=2208&&n<=2303},\"Hangul Jamo\":function(n){return n>=4352&&n<=4607},\"Unified Canadian Aboriginal Syllabics\":function(n){return n>=5120&&n<=5759},\"Unified Canadian Aboriginal Syllabics Extended\":function(n){return n>=6320&&n<=6399},\"General Punctuation\":function(n){return n>=8192&&n<=8303},\"Letterlike Symbols\":function(n){return n>=8448&&n<=8527},\"Number Forms\":function(n){return n>=8528&&n<=8591},\"Miscellaneous Technical\":function(n){return n>=8960&&n<=9215},\"Control Pictures\":function(n){return n>=9216&&n<=9279},\"Optical Character Recognition\":function(n){return n>=9280&&n<=9311},\"Enclosed Alphanumerics\":function(n){return n>=9312&&n<=9471},\"Geometric Shapes\":function(n){return n>=9632&&n<=9727},\"Miscellaneous Symbols\":function(n){return n>=9728&&n<=9983},\"Miscellaneous Symbols and Arrows\":function(n){return n>=11008&&n<=11263},\"CJK Radicals Supplement\":function(n){return n>=11904&&n<=12031},\"Kangxi Radicals\":function(n){return n>=12032&&n<=12255},\"Ideographic Description Characters\":function(n){return n>=12272&&n<=12287},\"CJK Symbols and Punctuation\":function(n){return n>=12288&&n<=12351},Hiragana:function(n){return n>=12352&&n<=12447},Katakana:function(n){return n>=12448&&n<=12543},Bopomofo:function(n){return n>=12544&&n<=12591},\"Hangul Compatibility Jamo\":function(n){return n>=12592&&n<=12687},Kanbun:function(n){return n>=12688&&n<=12703},\"Bopomofo Extended\":function(n){return n>=12704&&n<=12735},\"CJK Strokes\":function(n){return n>=12736&&n<=12783},\"Katakana Phonetic Extensions\":function(n){return n>=12784&&n<=12799},\"Enclosed CJK Letters and Months\":function(n){return n>=12800&&n<=13055},\"CJK Compatibility\":function(n){return n>=13056&&n<=13311},\"CJK Unified Ideographs Extension A\":function(n){return n>=13312&&n<=19903},\"Yijing Hexagram Symbols\":function(n){return n>=19904&&n<=19967},\"CJK Unified Ideographs\":function(n){return n>=19968&&n<=40959},\"Yi Syllables\":function(n){return n>=40960&&n<=42127},\"Yi Radicals\":function(n){return n>=42128&&n<=42191},\"Hangul Jamo Extended-A\":function(n){return n>=43360&&n<=43391},\"Hangul Syllables\":function(n){return n>=44032&&n<=55215},\"Hangul Jamo Extended-B\":function(n){return n>=55216&&n<=55295},\"Private Use Area\":function(n){return n>=57344&&n<=63743},\"CJK Compatibility Ideographs\":function(n){return n>=63744&&n<=64255},\"Arabic Presentation Forms-A\":function(n){return n>=64336&&n<=65023},\"Vertical Forms\":function(n){return n>=65040&&n<=65055},\"CJK Compatibility Forms\":function(n){return n>=65072&&n<=65103},\"Small Form Variants\":function(n){return n>=65104&&n<=65135},\"Arabic Presentation Forms-B\":function(n){return n>=65136&&n<=65279},\"Halfwidth and Fullwidth Forms\":function(n){return n>=65280&&n<=65519}};module.exports=unicodeBlockLookup;\n},{}],216:[function(_dereq_,module,exports){\n\"use strict\";var LRUCache=function(t,e){this.max=t,this.onRemove=e,this.reset()};LRUCache.prototype.reset=function(){var t=this;for(var e in t.data)t.onRemove(t.data[e]);return this.data={},this.order=[],this},LRUCache.prototype.add=function(t,e){if(this.has(t))this.order.splice(this.order.indexOf(t),1),this.data[t]=e,this.order.push(t);else if(this.data[t]=e,this.order.push(t),this.order.length>this.max){var r=this.get(this.order[0]);r&&this.onRemove(r)}return this},LRUCache.prototype.has=function(t){return t in this.data},LRUCache.prototype.keys=function(){return this.order},LRUCache.prototype.get=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},LRUCache.prototype.getWithoutRemoving=function(t){return this.has(t)?this.data[t]:null},LRUCache.prototype.remove=function(t){if(!this.has(t))return this;var e=this.data[t];return delete this.data[t],this.onRemove(e),this.order.splice(this.order.indexOf(t),1),this},LRUCache.prototype.setMaxSize=function(t){var e=this;for(this.max=t;this.order.length>this.max;){var r=e.get(e.order[0]);r&&e.onRemove(r)}return this},module.exports=LRUCache;\n},{}],217:[function(_dereq_,module,exports){\n\"use strict\";function makeAPIURL(r,e){var t=parseUrl(config.API_URL);if(r.protocol=t.protocol,r.authority=t.authority,\"/\"!==t.path&&(r.path=\"\"+t.path+r.path),!config.REQUIRE_ACCESS_TOKEN)return formatUrl(r);if(!(e=e||config.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+help);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+help);return r.params.push(\"access_token=\"+e),formatUrl(r)}function isMapboxURL(r){return 0===r.indexOf(\"mapbox:\")}function replaceTempAccessToken(r){for(var e=0;e<r.length;e++)0===r[e].indexOf(\"access_token=tk.\")&&(r[e]=\"access_token=\"+(config.ACCESS_TOKEN||\"\"))}function parseUrl(r){var e=r.match(urlRe);if(!e)throw new Error(\"Unable to parse URL object\");return{protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function formatUrl(r){var e=r.params.length?\"?\"+r.params.join(\"&\"):\"\";return r.protocol+\"://\"+r.authority+r.path+e}var config=_dereq_(\"./config\"),browser=_dereq_(\"./browser\"),help=\"See https://www.mapbox.com/api-documentation/#access-tokens\";exports.isMapboxURL=isMapboxURL,exports.normalizeStyleURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/styles/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeGlyphsURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/fonts/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeSourceURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/v4/\"+t.authority+\".json\",t.params.push(\"secure\"),makeAPIURL(t,e)},exports.normalizeSpriteURL=function(r,e,t,a){var o=parseUrl(r);return isMapboxURL(r)?(o.path=\"/styles/v1\"+o.path+\"/sprite\"+e+t,makeAPIURL(o,a)):(o.path+=\"\"+e+t,formatUrl(o))};var imageExtensionRe=/(\\.(png|jpg)\\d*)(?=$)/;exports.normalizeTileURL=function(r,e,t){if(!e||!isMapboxURL(e))return r;var a=parseUrl(r),o=browser.devicePixelRatio>=2||512===t?\"@2x\":\"\",p=browser.supportsWebp?\".webp\":\"$1\";return a.path=a.path.replace(imageExtensionRe,\"\"+o+p),replaceTempAccessToken(a.params),formatUrl(a)};var urlRe=/^(\\w+):\\/\\/([^\\/?]*)(\\/[^?]+)?\\??(.+)?/;\n},{\"./browser\":202,\"./config\":206}],218:[function(_dereq_,module,exports){\n\"use strict\";var isChar=_dereq_(\"./is_char_in_unicode_block\");module.exports.allowsIdeographicBreaking=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsIdeographicBreaking(s.charCodeAt(0)))return!1}return!0},module.exports.allowsVerticalWritingMode=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(exports.charHasUprightVerticalOrientation(s.charCodeAt(0)))return!0}return!1},module.exports.allowsLetterSpacing=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsLetterSpacing(s.charCodeAt(0)))return!1}return!0},module.exports.charAllowsLetterSpacing=function(a){return!isChar.Arabic(a)&&(!isChar[\"Arabic Supplement\"](a)&&(!isChar[\"Arabic Extended-A\"](a)&&(!isChar[\"Arabic Presentation Forms-A\"](a)&&!isChar[\"Arabic Presentation Forms-B\"](a))))},module.exports.charAllowsIdeographicBreaking=function(a){return!(a<11904)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yi Radicals\"](a)||!!isChar[\"Yi Syllables\"](a))))))))))))))))))))},exports.charHasUprightVerticalOrientation=function(a){return 746===a||747===a||!(a<4352)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!(!isChar[\"CJK Compatibility Forms\"](a)||a>=65097&&a<=65103)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!(!isChar[\"CJK Symbols and Punctuation\"](a)||a>=12296&&a<=12305||a>=12308&&a<=12319||12336===a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Hangul Compatibility Jamo\"](a)||(!!isChar[\"Hangul Jamo Extended-A\"](a)||(!!isChar[\"Hangul Jamo Extended-B\"](a)||(!!isChar[\"Hangul Jamo\"](a)||(!!isChar[\"Hangul Syllables\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar.Kanbun(a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!(!isChar.Katakana(a)||12540===a)||(!(!isChar[\"Halfwidth and Fullwidth Forms\"](a)||65288===a||65289===a||65293===a||a>=65306&&a<=65310||65339===a||65341===a||65343===a||a>=65371&&a<=65503||65507===a||a>=65512&&a<=65519)||(!(!isChar[\"Small Form Variants\"](a)||a>=65112&&a<=65118||a>=65123&&a<=65126)||(!!isChar[\"Unified Canadian Aboriginal Syllabics\"](a)||(!!isChar[\"Unified Canadian Aboriginal Syllabics Extended\"](a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yijing Hexagram Symbols\"](a)||(!!isChar[\"Yi Syllables\"](a)||!!isChar[\"Yi Radicals\"](a))))))))))))))))))))))))))))))},exports.charHasNeutralVerticalOrientation=function(a){return!(!isChar[\"Latin-1 Supplement\"](a)||167!==a&&169!==a&&174!==a&&177!==a&&188!==a&&189!==a&&190!==a&&215!==a&&247!==a)||(!(!isChar[\"General Punctuation\"](a)||8214!==a&&8224!==a&&8225!==a&&8240!==a&&8241!==a&&8251!==a&&8252!==a&&8258!==a&&8263!==a&&8264!==a&&8265!==a&&8273!==a)||(!!isChar[\"Letterlike Symbols\"](a)||(!!isChar[\"Number Forms\"](a)||(!(!isChar[\"Miscellaneous Technical\"](a)||!(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||9003===a||a>=9085&&a<=9114||a>=9150&&a<=9165||9167===a||a>=9169&&a<=9179||a>=9186&&a<=9215))||(!(!isChar[\"Control Pictures\"](a)||9251===a)||(!!isChar[\"Optical Character Recognition\"](a)||(!!isChar[\"Enclosed Alphanumerics\"](a)||(!!isChar[\"Geometric Shapes\"](a)||(!(!isChar[\"Miscellaneous Symbols\"](a)||a>=9754&&a<=9759)||(!(!isChar[\"Miscellaneous Symbols and Arrows\"](a)||!(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243))||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Private Use Area\"](a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"Small Form Variants\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(8734===a||8756===a||8757===a||a>=9984&&a<=10087||a>=10102&&a<=10131||65532===a||65533===a)))))))))))))))))},exports.charHasRotatedVerticalOrientation=function(a){return!(exports.charHasUprightVerticalOrientation(a)||exports.charHasNeutralVerticalOrientation(a))};\n},{\"./is_char_in_unicode_block\":215}],219:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"../geo/lng_lat\");module.exports=function(n,t,l){if(n=new LngLat(n.lng,n.lat),t){var a=new LngLat(n.lng-360,n.lat),i=new LngLat(n.lng+360,n.lat),o=l.locationPoint(n).distSqr(t);l.locationPoint(a).distSqr(t)<o?n=a:l.locationPoint(i).distSqr(t)<o&&(n=i)}for(;Math.abs(n.lng-l.center.lng)>180;){var e=l.locationPoint(n);if(e.x>=0&&e.y>=0&&e.x<=l.width&&e.y<=l.height)break;n.lng>l.center.lng?n.lng-=360:n.lng+=360}return n};\n},{\"../geo/lng_lat\":58}],220:[function(_dereq_,module,exports){\n\"use strict\";function createStructArrayType(t){var r=JSON.stringify(t);if(structArrayTypeCache[r])return structArrayTypeCache[r];var e=void 0===t.alignment?1:t.alignment,i=0,n=0,a=[\"Uint8\"],s=t.members.map(function(t){a.indexOf(t.type)<0&&a.push(t.type);var r=sizeOf(t.type),s=i=align(i,Math.max(e,r)),o=t.components||1;return n=Math.max(n,r),i+=r*o,{name:t.name,type:t.type,components:o,offset:s}}),o=align(i,Math.max(n,e)),p=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(Struct);p.prototype.alignment=e,p.prototype.size=o;for(var y=0,c=s;y<c.length;y+=1)for(var h=c[y],u=0;u<h.components;u++){var f=h.name;if(h.components>1&&(f+=u),f in p.prototype)throw new Error(f+\" is a reserved name and cannot be used as a member name.\");Object.defineProperty(p.prototype,f,createAccessors(h,u))}var m=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(StructArray);return m.prototype.members=s,m.prototype.StructType=p,m.prototype.bytesPerElement=o,m.prototype.emplaceBack=createEmplaceBack(s,o),m.prototype._usedTypes=a,structArrayTypeCache[r]=m,m}function align(t,r){return Math.ceil(t/r)*r}function sizeOf(t){return viewTypes[t].BYTES_PER_ELEMENT}function getArrayViewName(t){return t.toLowerCase()}function createEmplaceBack(t,r){for(var e=[],i=[],n=\"var i = this.length;\\nthis.resize(this.length + 1);\\n\",a=0,s=t;a<s.length;a+=1){var o=s[a],p=sizeOf(o.type);e.indexOf(p)<0&&(e.push(p),n+=\"var o\"+p.toFixed(0)+\" = i * \"+(r/p).toFixed(0)+\";\\n\");for(var y=0;y<o.components;y++){var c=\"v\"+i.length,h=\"o\"+p.toFixed(0)+\" + \"+(o.offset/p+y).toFixed(0);n+=\"this.\"+getArrayViewName(o.type)+\"[\"+h+\"] = \"+c+\";\\n\",i.push(c)}}return n+=\"return i;\",new Function(i.toString(),n)}function createMemberComponentString(t,r){var e=\"this._pos\"+sizeOf(t.type).toFixed(0),i=(t.offset/sizeOf(t.type)+r).toFixed(0),n=e+\" + \"+i;return\"this._structArray.\"+getArrayViewName(t.type)+\"[\"+n+\"]\"}function createAccessors(t,r){var e=createMemberComponentString(t,r);return{get:new Function(\"return \"+e+\";\"),set:new Function(\"x\",e+\" = x;\")}}module.exports=createStructArrayType;var viewTypes={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Struct=function(t,r){this._structArray=t,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},DEFAULT_CAPACITY=128,RESIZE_MULTIPLIER=5,StructArray=function(t){this.isTransferred=!1,void 0!==t?(this.arrayBuffer=t.arrayBuffer,this.length=t.length,this.capacity=this.arrayBuffer.byteLength/this.bytesPerElement,this._refreshViews()):(this.capacity=-1,this.resize(0))};StructArray.serialize=function(){return{members:this.prototype.members,alignment:this.prototype.StructType.prototype.alignment}},StructArray.prototype.serialize=function(t){return this._trim(),t&&(this.isTransferred=!0,t.push(this.arrayBuffer)),{length:this.length,arrayBuffer:this.arrayBuffer}},StructArray.prototype.get=function(t){return new this.StructType(this,t)},StructArray.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},StructArray.prototype.clear=function(){this.length=0},StructArray.prototype.resize=function(t){if(this.length=t,t>this.capacity){this.capacity=Math.max(t,Math.floor(this.capacity*RESIZE_MULTIPLIER),DEFAULT_CAPACITY),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}},StructArray.prototype._refreshViews=function(){for(var t=this,r=0,e=t._usedTypes;r<e.length;r+=1){var i=e[r];t[getArrayViewName(i)]=new viewTypes[i](t.arrayBuffer)}},StructArray.prototype.toArray=function(t,r){for(var e=this,i=[],n=t;n<r;n++){var a=e.get(n);i.push(a)}return i};var structArrayTypeCache={};\n},{}],221:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"./browser\"),Throttler=function(t,o){this.frequency=t,this.throttledFunction=o,this.lastInvocation=0};Throttler.prototype.invoke=function(){var t=this;if(!this.pendingInvocation){var o=0===this.lastInvocation?0:this.lastInvocation+this.frequency-browser.now();o<=0?(this.lastInvocation=browser.now(),this.throttledFunction()):this.pendingInvocation=setTimeout(function(){t.pendingInvocation=void 0,t.lastInvocation=browser.now(),t.throttledFunction()},o)}},Throttler.prototype.stop=function(){this.pendingInvocation&&(clearTimeout(this.pendingInvocation),this.pendingInvocation=void 0)},module.exports=Throttler;\n},{\"./browser\":202}],222:[function(_dereq_,module,exports){\n\"use strict\";function resolveTokens(e,n){return n.replace(/{([^{}]+)}/g,function(n,r){return r in e?String(e[r]):\"\"})}module.exports=resolveTokens;\n},{}],223:[function(_dereq_,module,exports){\n\"use strict\";var UnitBezier=_dereq_(\"@mapbox/unitbezier\"),Coordinate=_dereq_(\"../geo/coordinate\"),Point=_dereq_(\"@mapbox/point-geometry\");exports.easeCubicInOut=function(r){if(r<=0)return 0;if(r>=1)return 1;var e=r*r,t=e*r;return 4*(r<.5?t:3*(r-e)+t-.75)},exports.bezier=function(r,e,t,n){var o=new UnitBezier(r,e,t,n);return function(r){return o.solve(r)}},exports.ease=exports.bezier(.25,.1,.25,1),exports.clamp=function(r,e,t){return Math.min(t,Math.max(e,r))},exports.wrap=function(r,e,t){var n=t-e,o=((r-e)%n+n)%n+e;return o===e?t:o},exports.asyncAll=function(r,e,t){if(!r.length)return t(null,[]);var n=r.length,o=new Array(r.length),a=null;r.forEach(function(r,i){e(r,function(r,e){r&&(a=r),o[i]=e,0==--n&&t(a,o)})})},exports.values=function(r){var e=[];for(var t in r)e.push(r[t]);return e},exports.keysDifference=function(r,e){var t=[];for(var n in r)n in e||t.push(n);return t},exports.extend=function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];for(var n=0,o=e;n<o.length;n+=1){var a=o[n];for(var i in a)r[i]=a[i]}return r},exports.pick=function(r,e){for(var t={},n=0;n<e.length;n++){var o=e[n];o in r&&(t[o]=r[o])}return t};var id=1;exports.uniqueId=function(){return id++},exports.bindAll=function(r,e){r.forEach(function(r){e[r]&&(e[r]=e[r].bind(e))})},exports.getCoordinatesCenter=function(r){for(var e=1/0,t=1/0,n=-1/0,o=-1/0,a=0;a<r.length;a++)e=Math.min(e,r[a].column),t=Math.min(t,r[a].row),n=Math.max(n,r[a].column),o=Math.max(o,r[a].row);var i=n-e,u=o-t,s=Math.max(i,u),c=Math.max(0,Math.floor(-Math.log(s)/Math.LN2));return new Coordinate((e+n)/2,(t+o)/2,0).zoomTo(c)},exports.endsWith=function(r,e){return-1!==r.indexOf(e,r.length-e.length)},exports.mapObject=function(r,e,t){var n=this,o={};for(var a in r)o[a]=e.call(t||n,r[a],a,r);return o},exports.filterObject=function(r,e,t){var n=this,o={};for(var a in r)e.call(t||n,r[a],a,r)&&(o[a]=r[a]);return o},exports.deepEqual=function(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(var t=0;t<r.length;t++)if(!exports.deepEqual(r[t],e[t]))return!1;return!0}if(\"object\"==typeof r&&null!==r&&null!==e){if(\"object\"!=typeof e)return!1;if(Object.keys(r).length!==Object.keys(e).length)return!1;for(var n in r)if(!exports.deepEqual(r[n],e[n]))return!1;return!0}return r===e},exports.clone=function(r){return Array.isArray(r)?r.map(exports.clone):\"object\"==typeof r&&r?exports.mapObject(r,exports.clone):r},exports.arraysIntersect=function(r,e){for(var t=0;t<r.length;t++)if(e.indexOf(r[t])>=0)return!0;return!1};var warnOnceHistory={};exports.warnOnce=function(r){warnOnceHistory[r]||(\"undefined\"!=typeof console&&console.warn(r),warnOnceHistory[r]=!0)},exports.isCounterClockwise=function(r,e,t){return(t.y-r.y)*(e.x-r.x)>(e.y-r.y)*(t.x-r.x)},exports.calculateSignedArea=function(r){for(var e=0,t=0,n=r.length,o=n-1,a=void 0,i=void 0;t<n;o=t++)a=r[t],i=r[o],e+=(i.x-a.x)*(a.y+i.y);return e},exports.isClosedPolygon=function(r){if(r.length<4)return!1;var e=r[0],t=r[r.length-1];return!(Math.abs(e.x-t.x)>0||Math.abs(e.y-t.y)>0)&&Math.abs(exports.calculateSignedArea(r))>.01},exports.sphericalToCartesian=function(r){var e=r[0],t=r[1],n=r[2];return t+=90,t*=Math.PI/180,n*=Math.PI/180,[e*Math.cos(t)*Math.sin(n),e*Math.sin(t)*Math.sin(n),e*Math.cos(n)]},exports.parseCacheControl=function(r){var e=/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,t={};if(r.replace(e,function(r,e,n,o){var a=n||o;return t[e]=!a||a.toLowerCase(),\"\"}),t[\"max-age\"]){var n=parseInt(t[\"max-age\"],10);isNaN(n)?delete t[\"max-age\"]:t[\"max-age\"]=n}return t};\n},{\"../geo/coordinate\":57,\"@mapbox/point-geometry\":2,\"@mapbox/unitbezier\":5}],224:[function(_dereq_,module,exports){\n\"use strict\";var Feature=function(e,t,r,o){this.type=\"Feature\",this._vectorTileFeature=e,e._z=t,e._x=r,e._y=o,this.properties=e.properties,null!=e.id&&(this.id=e.id)},prototypeAccessors={geometry:{}};prototypeAccessors.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},prototypeAccessors.geometry.set=function(e){this._geometry=e},Feature.prototype.toJSON=function(){var e=this,t={geometry:this.geometry};for(var r in e)\"_geometry\"!==r&&\"_vectorTileFeature\"!==r&&(t[r]=e[r]);return t},Object.defineProperties(Feature.prototype,prototypeAccessors),module.exports=Feature;\n},{}],225:[function(_dereq_,module,exports){\n\"use strict\";var scriptDetection=_dereq_(\"./script_detection\");module.exports=function(t){for(var o=\"\",e=0;e<t.length;e++){var r=t.charCodeAt(e+1)||null,l=t.charCodeAt(e-1)||null;(!r||!scriptDetection.charHasRotatedVerticalOrientation(r)||module.exports.lookup[t[e+1]])&&(!l||!scriptDetection.charHasRotatedVerticalOrientation(l)||module.exports.lookup[t[e-1]])&&module.exports.lookup[t[e]]?o+=module.exports.lookup[t[e]]:o+=t[e]}return o},module.exports.lookup={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};\n},{\"./script_detection\":218}],226:[function(_dereq_,module,exports){\n\"use strict\";var WebWorker=_dereq_(\"./web_worker\"),WorkerPool=function(){this.active={}};WorkerPool.prototype.acquire=function(r){var e=this;if(!this.workers){var o=_dereq_(\"../\").workerCount;for(this.workers=[];this.workers.length<o;)e.workers.push(new WebWorker)}return this.active[r]=!0,this.workers.slice()},WorkerPool.prototype.release=function(r){delete this.active[r],0===Object.keys(this.active).length&&(this.workers.forEach(function(r){r.terminate()}),this.workers=null)},module.exports=WorkerPool;\n},{\"../\":63,\"./web_worker\":203}]},{},[63])(63)\n});\n\n\n//# sourceMappingURL=mapbox-gl.js.map\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWFwYm94LWdsL2Rpc3QvbWFwYm94LWdsLmpzP2Q1ZWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjBEQUFBLHlCQUFhLFNBQTJELG1CQUFtQixnREFBZ0QsYUFBYSxLQUFLLE1BQU0sZ0NBQWdDLFNBQVMscUNBQXFDLFNBQVMsbUNBQW1DLE9BQU8sS0FBSyxPQUFPLGtCQUFrQixhQUFhLDBCQUEwQiwwQkFBMEIsZ0JBQWdCLFVBQVUsVUFBVSwwQ0FBMEMsOEJBQXdCLG9CQUFvQiw4Q0FBOEMsa0NBQWtDLFlBQVksWUFBWSxtQ0FBbUMsaUJBQWlCLGdCQUFnQixzQkFBc0Isb0JBQW9CLDBDQUEwQyxZQUFZLFdBQVcsWUFBWSxTQUFTLEdBQUc7QUFDNXlCLGVBQWUsdUlBQXVJLGlCQUFpQixhQUFhLGtCQUFrQix5QkFBeUIsdUZBQXVGLGtCQUFrQixnQ0FBZ0MsbUpBQW1KLGFBQWEsMEJBQTBCLHFDQUFxQyxrQkFBa0IsNERBQTRELCtEQUErRCxrQkFBa0IsOENBQThDLDZDQUE2QyxhQUFhLDBCQUEwQix3RUFBd0UsZ0JBQWdCLGdDQUFnQyx5RUFBeUUsYUFBYSwyQkFBMkIsK0hBQStILGNBQWMsK0hBQStILGdCQUFnQiw0UUFBNFEsOFdBQThXLGtCQUFrQixzSkFBc0oseWJBQXliLGtCQUFrQixpREFBaUQscWFBQXFhLGtCQUFrQix5QkFBeUIsNk1BQTZNLGtCQUFrQiwwRkFBMEYsb05BQW9OLGtCQUFrQix3RkFBd0Ysc05BQXNOLHNCQUFzQixnQ0FBZ0MsOElBQThJLDBCQUEwQixrQ0FBa0MseUpBQXlKLFlBQVksMEJBQTBCLHFCQUFxQixlQUFlLDBCQUEwQiw0QkFBNEIsR0FBRyxPQUFPLE1BQU0sZ0JBQWdCLE9BQU8sZ0JBQWdCLE9BQU8sMEJBQTBCLE9BQU8sd0JBQXdCLE9BQU8sd0dBQXdHO0FBQ3ZxSixDQUFDLEdBQUc7QUFDSixhQUFhLG9CQUFvQixrQkFBa0Isc0NBQXNDLGlCQUFpQixnQ0FBZ0Ms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QUFxQjtBQUNqZSxDQUFDLEVBQUUsNEJBQTRCLEVBQUUsR0FBRztBQUNwQyxDQUFDOzs7QUFHRCxxQyIsImZpbGUiOiIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcubWFwYm94Z2wgPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4hZnVuY3Rpb24odCxuKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1uKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShuKTp0LmdsTWF0cml4PW4oKX0odGhpcyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQodCxuLHIpe3ZhciBlPW5bMF0sYT1uWzFdLG89blsyXTtyZXR1cm4gdFswXT1lKnJbMF0rYSpyWzNdK28qcls2XSx0WzFdPWUqclsxXSthKnJbNF0rbypyWzddLHRbMl09ZSpyWzJdK2Eqcls1XStvKnJbOF0sdH1mdW5jdGlvbiBuKHQsbixyKXt2YXIgZT1uWzBdLGE9blsxXSxvPW5bMl0sdT1uWzNdO3JldHVybiB0WzBdPXJbMF0qZStyWzRdKmErcls4XSpvK3JbMTJdKnUsdFsxXT1yWzFdKmUrcls1XSphK3JbOV0qbytyWzEzXSp1LHRbMl09clsyXSplK3JbNl0qYStyWzEwXSpvK3JbMTRdKnUsdFszXT1yWzNdKmUrcls3XSphK3JbMTFdKm8rclsxNV0qdSx0fWZ1bmN0aW9uIHIoKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDQpO3JldHVybiB0WzBdPTEsdFsxXT0wLHRbMl09MCx0WzNdPTEsdH1mdW5jdGlvbiBlKHQsbixyKXt2YXIgZT1uWzBdLGE9blsxXSxvPW5bMl0sdT1uWzNdLGk9TWF0aC5zaW4ociksYz1NYXRoLmNvcyhyKTtyZXR1cm4gdFswXT1lKmMrbyppLHRbMV09YSpjK3UqaSx0WzJdPWUqLWkrbypjLHRbM109YSotaSt1KmMsdH1mdW5jdGlvbiBhKHQsbixyKXt2YXIgZT1uWzBdLGE9blsxXSxvPW5bMl0sdT1uWzNdLGk9clswXSxjPXJbMV07cmV0dXJuIHRbMF09ZSppLHRbMV09YSppLHRbMl09bypjLHRbM109dSpjLHR9ZnVuY3Rpb24gbygpe3ZhciB0PW5ldyBGbG9hdDMyQXJyYXkoOSk7cmV0dXJuIHRbMF09MSx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTEsdFs1XT0wLHRbNl09MCx0WzddPTAsdFs4XT0xLHR9ZnVuY3Rpb24gdSh0LG4pe3ZhciByPU1hdGguc2luKG4pLGU9TWF0aC5jb3Mobik7cmV0dXJuIHRbMF09ZSx0WzFdPXIsdFsyXT0wLHRbM109LXIsdFs0XT1lLHRbNV09MCx0WzZdPTAsdFs3XT0wLHRbOF09MSx0fWZ1bmN0aW9uIGkoKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9ZnVuY3Rpb24gZih0LG4pe3ZhciByPW5bMF0sZT1uWzFdLGE9blsyXSxvPW5bM10sdT1uWzRdLGk9bls1XSxjPW5bNl0sZj1uWzddLHY9bls4XSxzPW5bOV0sbD1uWzEwXSxNPW5bMTFdLGg9blsxMl0sbT1uWzEzXSx5PW5bMTRdLGQ9blsxNV0scD1yKmktZSp1LHc9cipjLWEqdSxBPXIqZi1vKnUsRj1lKmMtYSppLHg9ZSpmLW8qaSxiPWEqZi1vKmMsZz12Km0tcypoLGo9dip5LWwqaCxSPXYqZC1NKmgsWD1zKnktbCptLFo9cypkLU0qbSxrPWwqZC1NKnkscT1wKmstdypaK0EqWCtGKlIteCpqK2IqZztyZXR1cm4gcT8ocT0xL3EsdFswXT0oaSprLWMqWitmKlgpKnEsdFsxXT0oYSpaLWUqay1vKlgpKnEsdFsyXT0obSpiLXkqeCtkKkYpKnEsdFszXT0obCp4LXMqYi1NKkYpKnEsdFs0XT0oYypSLXUqay1mKmopKnEsdFs1XT0ociprLWEqUitvKmopKnEsdFs2XT0oeSpBLWgqYi1kKncpKnEsdFs3XT0odipiLWwqQStNKncpKnEsdFs4XT0odSpaLWkqUitmKmcpKnEsdFs5XT0oZSpSLXIqWi1vKmcpKnEsdFsxMF09KGgqeC1tKkErZCpwKSpxLHRbMTFdPShzKkEtdip4LU0qcCkqcSx0WzEyXT0oaSpqLXUqWC1jKmcpKnEsdFsxM109KHIqWC1lKmorYSpnKSpxLHRbMTRdPShtKnctaCpGLXkqcCkqcSx0WzE1XT0odipGLXMqdytsKnApKnEsdCk6bnVsbH1mdW5jdGlvbiB2KHQsbixyKXt2YXIgZT1uWzBdLGE9blsxXSxvPW5bMl0sdT1uWzNdLGk9bls0XSxjPW5bNV0sZj1uWzZdLHY9bls3XSxzPW5bOF0sbD1uWzldLE09blsxMF0saD1uWzExXSxtPW5bMTJdLHk9blsxM10sZD1uWzE0XSxwPW5bMTVdLHc9clswXSxBPXJbMV0sRj1yWzJdLHg9clszXTtyZXR1cm4gdFswXT13KmUrQSppK0Yqcyt4Km0sdFsxXT13KmErQSpjK0YqbCt4KnksdFsyXT13Km8rQSpmK0YqTSt4KmQsdFszXT13KnUrQSp2K0YqaCt4KnAsdz1yWzRdLEE9cls1XSxGPXJbNl0seD1yWzddLHRbNF09dyplK0EqaStGKnMreCptLHRbNV09dyphK0EqYytGKmwreCp5LHRbNl09dypvK0EqZitGKk0reCpkLHRbN109dyp1K0EqditGKmgreCpwLHc9cls4XSxBPXJbOV0sRj1yWzEwXSx4PXJbMTFdLHRbOF09dyplK0EqaStGKnMreCptLHRbOV09dyphK0EqYytGKmwreCp5LHRbMTBdPXcqbytBKmYrRipNK3gqZCx0WzExXT13KnUrQSp2K0YqaCt4KnAsdz1yWzEyXSxBPXJbMTNdLEY9clsxNF0seD1yWzE1XSx0WzEyXT13KmUrQSppK0Yqcyt4Km0sdFsxM109dyphK0EqYytGKmwreCp5LHRbMTRdPXcqbytBKmYrRipNK3gqZCx0WzE1XT13KnUrQSp2K0YqaCt4KnAsdH1mdW5jdGlvbiBzKHQsbixyKXt2YXIgZSxhLG8sdSxpLGMsZix2LHMsbCxNLGgsbT1yWzBdLHk9clsxXSxkPXJbMl07cmV0dXJuIG49PT10Pyh0WzEyXT1uWzBdKm0rbls0XSp5K25bOF0qZCtuWzEyXSx0WzEzXT1uWzFdKm0rbls1XSp5K25bOV0qZCtuWzEzXSx0WzE0XT1uWzJdKm0rbls2XSp5K25bMTBdKmQrblsxNF0sdFsxNV09blszXSptK25bN10qeStuWzExXSpkK25bMTVdKTooZT1uWzBdLGE9blsxXSxvPW5bMl0sdT1uWzNdLGk9bls0XSxjPW5bNV0sZj1uWzZdLHY9bls3XSxzPW5bOF0sbD1uWzldLE09blsxMF0saD1uWzExXSx0WzBdPWUsdFsxXT1hLHRbMl09byx0WzNdPXUsdFs0XT1pLHRbNV09Yyx0WzZdPWYsdFs3XT12LHRbOF09cyx0WzldPWwsdFsxMF09TSx0WzExXT1oLHRbMTJdPWUqbStpKnkrcypkK25bMTJdLHRbMTNdPWEqbStjKnkrbCpkK25bMTNdLHRbMTRdPW8qbStmKnkrTSpkK25bMTRdLHRbMTVdPXUqbSt2KnkraCpkK25bMTVdKSx0fWZ1bmN0aW9uIGwodCxuLHIpe3ZhciBlPXJbMF0sYT1yWzFdLG89clsyXTtyZXR1cm4gdFswXT1uWzBdKmUsdFsxXT1uWzFdKmUsdFsyXT1uWzJdKmUsdFszXT1uWzNdKmUsdFs0XT1uWzRdKmEsdFs1XT1uWzVdKmEsdFs2XT1uWzZdKmEsdFs3XT1uWzddKmEsdFs4XT1uWzhdKm8sdFs5XT1uWzldKm8sdFsxMF09blsxMF0qbyx0WzExXT1uWzExXSpvLHRbMTJdPW5bMTJdLHRbMTNdPW5bMTNdLHRbMTRdPW5bMTRdLHRbMTVdPW5bMTVdLHR9ZnVuY3Rpb24gTSh0LG4scil7dmFyIGU9TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxvPW5bNF0sdT1uWzVdLGk9bls2XSxjPW5bN10sZj1uWzhdLHY9bls5XSxzPW5bMTBdLGw9blsxMV07cmV0dXJuIG4hPT10JiYodFswXT1uWzBdLHRbMV09blsxXSx0WzJdPW5bMl0sdFszXT1uWzNdLHRbMTJdPW5bMTJdLHRbMTNdPW5bMTNdLHRbMTRdPW5bMTRdLHRbMTVdPW5bMTVdKSx0WzRdPW8qYStmKmUsdFs1XT11KmErdiplLHRbNl09aSphK3MqZSx0WzddPWMqYStsKmUsdFs4XT1mKmEtbyplLHRbOV09diphLXUqZSx0WzEwXT1zKmEtaSplLHRbMTFdPWwqYS1jKmUsdH1mdW5jdGlvbiBoKHQsbixyKXt2YXIgZT1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLG89blswXSx1PW5bMV0saT1uWzJdLGM9blszXSxmPW5bNF0sdj1uWzVdLHM9bls2XSxsPW5bN107cmV0dXJuIG4hPT10JiYodFs4XT1uWzhdLHRbOV09bls5XSx0WzEwXT1uWzEwXSx0WzExXT1uWzExXSx0WzEyXT1uWzEyXSx0WzEzXT1uWzEzXSx0WzE0XT1uWzE0XSx0WzE1XT1uWzE1XSksdFswXT1vKmErZiplLHRbMV09dSphK3YqZSx0WzJdPWkqYStzKmUsdFszXT1jKmErbCplLHRbNF09ZiphLW8qZSx0WzVdPXYqYS11KmUsdFs2XT1zKmEtaSplLHRbN109bCphLWMqZSx0fWZ1bmN0aW9uIG0odCxuLHIsZSxhKXt2YXIgbz0xL01hdGgudGFuKG4vMiksdT0xLyhlLWEpO3JldHVybiB0WzBdPW8vcix0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1vLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0oYStlKSp1LHRbMTFdPS0xLHRbMTJdPTAsdFsxM109MCx0WzE0XT0yKmEqZSp1LHRbMTVdPTAsdH1mdW5jdGlvbiB5KHQsbixyLGUsYSxvLHUpe3ZhciBpPTEvKG4tciksYz0xLyhlLWEpLGY9MS8oby11KTtyZXR1cm4gdFswXT0tMippLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPS0yKmMsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTIqZix0WzExXT0wLHRbMTJdPShuK3IpKmksdFsxM109KGErZSkqYyx0WzE0XT0odStvKSpmLHRbMTVdPTEsdH0oZnVuY3Rpb24oKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDMpO3RbMF09MCx0WzFdPTAsdFsyXT0wfSkoKSxmdW5jdGlvbigpe3ZhciB0PW5ldyBGbG9hdDMyQXJyYXkoNCk7dFswXT0wLHRbMV09MCx0WzJdPTAsdFszXT0wfSgpO3JldHVybnt2ZWMzOnt0cmFuc2Zvcm1NYXQzOnR9LHZlYzQ6e3RyYW5zZm9ybU1hdDQ6bn0sbWF0Mjp7Y3JlYXRlOnIscm90YXRlOmUsc2NhbGU6YX0sbWF0Mzp7Y3JlYXRlOm8sZnJvbVJvdGF0aW9uOnV9LG1hdDQ6e2NyZWF0ZTppLGlkZW50aXR5OmMsdHJhbnNsYXRlOnMsc2NhbGU6bCxtdWx0aXBseTp2LHBlcnNwZWN0aXZlOm0scm90YXRlWDpNLHJvdGF0ZVo6aCxpbnZlcnQ6ZixvcnRobzp5fX19KTtcbn0se31dLDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gUG9pbnQodCxuKXt0aGlzLng9dCx0aGlzLnk9bn1tb2R1bGUuZXhwb3J0cz1Qb2ludCxQb2ludC5wcm90b3R5cGU9e2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLngsdGhpcy55KX0sYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2FkZCh0KX0sc3ViOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1Yih0KX0sbXVsdEJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbXVsdEJ5UG9pbnQodCl9LGRpdkJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZGl2QnlQb2ludCh0KX0sbXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0KHQpfSxkaXY6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZGl2KHQpfSxyb3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm90YXRlKHQpfSxyb3RhdGVBcm91bmQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3RhdGVBcm91bmQodCxuKX0sbWF0TXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tYXRNdWx0KHQpfSx1bml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fdW5pdCgpfSxwZXJwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcGVycCgpfSxyb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdW5kKCl9LG1hZzpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55KX0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLng9PT10LngmJnRoaXMueT09PXQueX0sZGlzdDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdFNxcih0KSl9LGRpc3RTcXI6ZnVuY3Rpb24odCl7dmFyIG49dC54LXRoaXMueCxpPXQueS10aGlzLnk7cmV0dXJuIG4qbitpKml9LGFuZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy55LHRoaXMueCl9LGFuZ2xlVG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy55LXQueSx0aGlzLngtdC54KX0sYW5nbGVXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFuZ2xlV2l0aFNlcCh0LngsdC55KX0sYW5nbGVXaXRoU2VwOmZ1bmN0aW9uKHQsbil7cmV0dXJuIE1hdGguYXRhbjIodGhpcy54Km4tdGhpcy55KnQsdGhpcy54KnQrdGhpcy55Km4pfSxfbWF0TXVsdDpmdW5jdGlvbih0KXt2YXIgbj10WzBdKnRoaXMueCt0WzFdKnRoaXMueSxpPXRbMl0qdGhpcy54K3RbM10qdGhpcy55O3JldHVybiB0aGlzLng9bix0aGlzLnk9aSx0aGlzfSxfYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzfSxfc3ViOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzfSxfbXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxfZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngvPXQsdGhpcy55Lz10LHRoaXN9LF9tdWx0QnlQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc30sX2RpdkJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9LF91bml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpdih0aGlzLm1hZygpKSx0aGlzfSxfcGVycDpmdW5jdGlvbigpe3ZhciB0PXRoaXMueTtyZXR1cm4gdGhpcy55PXRoaXMueCx0aGlzLng9LXQsdGhpc30sX3JvdGF0ZTpmdW5jdGlvbih0KXt2YXIgbj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpLHM9bip0aGlzLngtaSp0aGlzLnkscj1pKnRoaXMueCtuKnRoaXMueTtyZXR1cm4gdGhpcy54PXMsdGhpcy55PXIsdGhpc30sX3JvdGF0ZUFyb3VuZDpmdW5jdGlvbih0LG4pe3ZhciBpPU1hdGguY29zKHQpLHM9TWF0aC5zaW4odCkscj1uLngraSoodGhpcy54LW4ueCktcyoodGhpcy55LW4ueSksaD1uLnkrcyoodGhpcy54LW4ueCkraSoodGhpcy55LW4ueSk7cmV0dXJuIHRoaXMueD1yLHRoaXMueT1oLHRoaXN9LF9yb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc319LFBvaW50LmNvbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBQb2ludD90OkFycmF5LmlzQXJyYXkodCk/bmV3IFBvaW50KHRbMF0sdFsxXSk6dH07XG59LHt9XSwzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOnQuU2hlbGZQYWNrPWUoKX0odGhpcyxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe2k9aXx8e30sdGhpcy53PXR8fDY0LHRoaXMuaD1lfHw2NCx0aGlzLmF1dG9SZXNpemU9ISFpLmF1dG9SZXNpemUsdGhpcy5zaGVsdmVzPVtdLHRoaXMuZnJlZWJpbnM9W10sdGhpcy5zdGF0cz17fSx0aGlzLmJpbnM9e30sdGhpcy5tYXhJZD0wfWZ1bmN0aW9uIGUodCxlLGkpe3RoaXMueD0wLHRoaXMueT10LHRoaXMudz10aGlzLmZyZWU9ZSx0aGlzLmg9aX1mdW5jdGlvbiBpKHQsZSxpLHMsaCxuLHIpe3RoaXMuaWQ9dCx0aGlzLng9ZSx0aGlzLnk9aSx0aGlzLnc9cyx0aGlzLmg9aCx0aGlzLm1heHc9bnx8cyx0aGlzLm1heGg9cnx8aCx0aGlzLnJlZmNvdW50PTB9cmV0dXJuIHQucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24odCxlKXt0PVtdLmNvbmNhdCh0KSxlPWV8fHt9O2Zvcih2YXIgaSxzLGgsbixyPVtdLGY9MDtmPHQubGVuZ3RoO2YrKylpZihpPXRbZl0ud3x8dFtmXS53aWR0aCxzPXRbZl0uaHx8dFtmXS5oZWlnaHQsaD10W2ZdLmlkLGkmJnMpe2lmKCEobj10aGlzLnBhY2tPbmUoaSxzLGgpKSljb250aW51ZTtlLmluUGxhY2UmJih0W2ZdLng9bi54LHRbZl0ueT1uLnksdFtmXS5pZD1uLmlkKSxyLnB1c2gobil9cmV0dXJuIHRoaXMuc2hyaW5rKCkscn0sdC5wcm90b3R5cGUucGFja09uZT1mdW5jdGlvbih0LGkscyl7dmFyIGgsbixyLGYsbz17ZnJlZWJpbjotMSxzaGVsZjotMSx3YXN0ZToxLzB9LGE9MDtpZihcInN0cmluZ1wiPT10eXBlb2Ygc3x8XCJudW1iZXJcIj09dHlwZW9mIHMpe2lmKGg9dGhpcy5nZXRCaW4ocykpcmV0dXJuIHRoaXMucmVmKGgpLGg7XCJudW1iZXJcIj09dHlwZW9mIHMmJih0aGlzLm1heElkPU1hdGgubWF4KHMsdGhpcy5tYXhJZCkpfWVsc2Ugcz0rK3RoaXMubWF4SWQ7Zm9yKGY9MDtmPHRoaXMuZnJlZWJpbnMubGVuZ3RoO2YrKyl7aWYoaD10aGlzLmZyZWViaW5zW2ZdLGk9PT1oLm1heGgmJnQ9PT1oLm1heHcpcmV0dXJuIHRoaXMuYWxsb2NGcmVlYmluKGYsdCxpLHMpO2k+aC5tYXhofHx0PmgubWF4d3x8aTw9aC5tYXhoJiZ0PD1oLm1heHcmJihyPWgubWF4dypoLm1heGgtdCppKTxvLndhc3RlJiYoby53YXN0ZT1yLG8uZnJlZWJpbj1mKX1mb3IoZj0wO2Y8dGhpcy5zaGVsdmVzLmxlbmd0aDtmKyspaWYobj10aGlzLnNoZWx2ZXNbZl0sYSs9bi5oLCEodD5uLmZyZWUpKXtpZihpPT09bi5oKXJldHVybiB0aGlzLmFsbG9jU2hlbGYoZix0LGkscyk7aT5uLmh8fGk8bi5oJiYocj0obi5oLWkpKnQpPG8ud2FzdGUmJihvLmZyZWViaW49LTEsby53YXN0ZT1yLG8uc2hlbGY9Zil9aWYoLTEhPT1vLmZyZWViaW4pcmV0dXJuIHRoaXMuYWxsb2NGcmVlYmluKG8uZnJlZWJpbix0LGkscyk7aWYoLTEhPT1vLnNoZWxmKXJldHVybiB0aGlzLmFsbG9jU2hlbGYoby5zaGVsZix0LGkscyk7aWYoaTw9dGhpcy5oLWEmJnQ8PXRoaXMudylyZXR1cm4gbj1uZXcgZShhLHRoaXMudyxpKSx0aGlzLmFsbG9jU2hlbGYodGhpcy5zaGVsdmVzLnB1c2gobiktMSx0LGkscyk7aWYodGhpcy5hdXRvUmVzaXplKXt2YXIgdSxsLGMscDtyZXR1cm4gdT1sPXRoaXMuaCxjPXA9dGhpcy53LChjPD11fHx0PmMpJiYocD0yKk1hdGgubWF4KHQsYykpLCh1PGN8fGk+dSkmJihsPTIqTWF0aC5tYXgoaSx1KSksdGhpcy5yZXNpemUocCxsKSx0aGlzLnBhY2tPbmUodCxpLHMpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5hbGxvY0ZyZWViaW49ZnVuY3Rpb24odCxlLGkscyl7dmFyIGg9dGhpcy5mcmVlYmlucy5zcGxpY2UodCwxKVswXTtyZXR1cm4gaC5pZD1zLGgudz1lLGguaD1pLGgucmVmY291bnQ9MCx0aGlzLmJpbnNbc109aCx0aGlzLnJlZihoKSxofSx0LnByb3RvdHlwZS5hbGxvY1NoZWxmPWZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBoPXRoaXMuc2hlbHZlc1t0XSxuPWguYWxsb2MoZSxpLHMpO3JldHVybiB0aGlzLmJpbnNbc109bix0aGlzLnJlZihuKSxufSx0LnByb3RvdHlwZS5zaHJpbms9ZnVuY3Rpb24oKXtpZih0aGlzLnNoZWx2ZXMubGVuZ3RoPjApe2Zvcih2YXIgdD0wLGU9MCxpPTA7aTx0aGlzLnNoZWx2ZXMubGVuZ3RoO2krKyl7dmFyIHM9dGhpcy5zaGVsdmVzW2ldO2UrPXMuaCx0PU1hdGgubWF4KHMudy1zLmZyZWUsdCl9dGhpcy5yZXNpemUodCxlKX19LHQucHJvdG90eXBlLmdldEJpbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5iaW5zW3RdfSx0LnByb3RvdHlwZS5yZWY9ZnVuY3Rpb24odCl7aWYoMT09Kyt0LnJlZmNvdW50KXt2YXIgZT10Lmg7dGhpcy5zdGF0c1tlXT0xKygwfHRoaXMuc3RhdHNbZV0pfXJldHVybiB0LnJlZmNvdW50fSx0LnByb3RvdHlwZS51bnJlZj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXQucmVmY291bnQ/MDooMD09LS10LnJlZmNvdW50JiYodGhpcy5zdGF0c1t0LmhdLS0sZGVsZXRlIHRoaXMuYmluc1t0LmlkXSx0aGlzLmZyZWViaW5zLnB1c2godCkpLHQucmVmY291bnQpfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2hlbHZlcz1bXSx0aGlzLmZyZWViaW5zPVtdLHRoaXMuc3RhdHM9e30sdGhpcy5iaW5zPXt9LHRoaXMubWF4SWQ9MH0sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQsZSl7dGhpcy53PXQsdGhpcy5oPWU7Zm9yKHZhciBpPTA7aTx0aGlzLnNoZWx2ZXMubGVuZ3RoO2krKyl0aGlzLnNoZWx2ZXNbaV0ucmVzaXplKHQpO3JldHVybiEwfSxlLnByb3RvdHlwZS5hbGxvYz1mdW5jdGlvbih0LGUscyl7aWYodD50aGlzLmZyZWV8fGU+dGhpcy5oKXJldHVybiBudWxsO3ZhciBoPXRoaXMueDtyZXR1cm4gdGhpcy54Kz10LHRoaXMuZnJlZS09dCxuZXcgaShzLGgsdGhpcy55LHQsZSx0LHRoaXMuaCl9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mcmVlKz10LXRoaXMudyx0aGlzLnc9dCwhMH0sdH0pO1xufSx7fV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBUaW55U0RGKHQsaSxzLGUsaCxyKXt0aGlzLmZvbnRTaXplPXR8fDI0LHRoaXMuYnVmZmVyPXZvaWQgMD09PWk/MzppLHRoaXMuY3V0b2ZmPWV8fC4yNSx0aGlzLmZvbnRGYW1pbHk9aHx8XCJzYW5zLXNlcmlmXCIsdGhpcy5mb250V2VpZ2h0PXJ8fFwibm9ybWFsXCIsdGhpcy5yYWRpdXM9c3x8ODt2YXIgYT10aGlzLnNpemU9dGhpcy5mb250U2l6ZSsyKnRoaXMuYnVmZmVyO3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksdGhpcy5jYW52YXMud2lkdGg9dGhpcy5jYW52YXMuaGVpZ2h0PWEsdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLHRoaXMuY3R4LmZvbnQ9dGhpcy5mb250V2VpZ2h0K1wiIFwiK3RoaXMuZm9udFNpemUrXCJweCBcIit0aGlzLmZvbnRGYW1pbHksdGhpcy5jdHgudGV4dEJhc2VsaW5lPVwibWlkZGxlXCIsdGhpcy5jdHguZmlsbFN0eWxlPVwiYmxhY2tcIix0aGlzLmdyaWRPdXRlcj1uZXcgRmxvYXQ2NEFycmF5KGEqYSksdGhpcy5ncmlkSW5uZXI9bmV3IEZsb2F0NjRBcnJheShhKmEpLHRoaXMuZj1uZXcgRmxvYXQ2NEFycmF5KGEpLHRoaXMuZD1uZXcgRmxvYXQ2NEFycmF5KGEpLHRoaXMuej1uZXcgRmxvYXQ2NEFycmF5KGErMSksdGhpcy52PW5ldyBJbnQxNkFycmF5KGEpLHRoaXMubWlkZGxlPU1hdGgucm91bmQoYS8yKihuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJHZWNrby9cIik+PTA/MS4yOjEpKX1mdW5jdGlvbiBlZHQodCxpLHMsZSxoLHIsYSl7Zm9yKHZhciBuPTA7bjxpO24rKyl7Zm9yKHZhciBvPTA7bzxzO28rKyllW29dPXRbbyppK25dO2ZvcihlZHQxZChlLGgscixhLHMpLG89MDtvPHM7bysrKXRbbyppK25dPWhbb119Zm9yKG89MDtvPHM7bysrKXtmb3Iobj0wO248aTtuKyspZVtuXT10W28qaStuXTtmb3IoZWR0MWQoZSxoLHIsYSxpKSxuPTA7bjxpO24rKyl0W28qaStuXT1NYXRoLnNxcnQoaFtuXSl9fWZ1bmN0aW9uIGVkdDFkKHQsaSxzLGUsaCl7c1swXT0wLGVbMF09LUlORixlWzFdPStJTkY7Zm9yKHZhciByPTEsYT0wO3I8aDtyKyspe2Zvcih2YXIgbj0odFtyXStyKnItKHRbc1thXV0rc1thXSpzW2FdKSkvKDIqci0yKnNbYV0pO248PWVbYV07KWEtLSxuPSh0W3JdK3Iqci0odFtzW2FdXStzW2FdKnNbYV0pKS8oMipyLTIqc1thXSk7YSsrLHNbYV09cixlW2FdPW4sZVthKzFdPStJTkZ9Zm9yKHI9MCxhPTA7cjxoO3IrKyl7Zm9yKDtlW2ErMV08cjspYSsrO2lbcl09KHItc1thXSkqKHItc1thXSkrdFtzW2FdXX19bW9kdWxlLmV4cG9ydHM9VGlueVNERjt2YXIgSU5GPTFlMjA7VGlueVNERi5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0KXt0aGlzLmN0eC5jbGVhclJlY3QoMCwwLHRoaXMuc2l6ZSx0aGlzLnNpemUpLHRoaXMuY3R4LmZpbGxUZXh0KHQsdGhpcy5idWZmZXIsdGhpcy5taWRkbGUpO2Zvcih2YXIgaT10aGlzLmN0eC5nZXRJbWFnZURhdGEoMCwwLHRoaXMuc2l6ZSx0aGlzLnNpemUpLHM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRoaXMuc2l6ZSp0aGlzLnNpemUpLGU9MDtlPHRoaXMuc2l6ZSp0aGlzLnNpemU7ZSsrKXt2YXIgaD1pLmRhdGFbNCplKzNdLzI1NTt0aGlzLmdyaWRPdXRlcltlXT0xPT09aD8wOjA9PT1oP0lORjpNYXRoLnBvdyhNYXRoLm1heCgwLC41LWgpLDIpLHRoaXMuZ3JpZElubmVyW2VdPTE9PT1oP0lORjowPT09aD8wOk1hdGgucG93KE1hdGgubWF4KDAsaC0uNSksMil9Zm9yKGVkdCh0aGlzLmdyaWRPdXRlcix0aGlzLnNpemUsdGhpcy5zaXplLHRoaXMuZix0aGlzLmQsdGhpcy52LHRoaXMueiksZWR0KHRoaXMuZ3JpZElubmVyLHRoaXMuc2l6ZSx0aGlzLnNpemUsdGhpcy5mLHRoaXMuZCx0aGlzLnYsdGhpcy56KSxlPTA7ZTx0aGlzLnNpemUqdGhpcy5zaXplO2UrKyl7dmFyIHI9dGhpcy5ncmlkT3V0ZXJbZV0tdGhpcy5ncmlkSW5uZXJbZV07c1tlXT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI1NS0yNTUqKHIvdGhpcy5yYWRpdXMrdGhpcy5jdXRvZmYpKSkpfXJldHVybiBzfTtcbn0se31dLDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZnVuY3Rpb24gVW5pdEJlemllcih0LGksZSxyKXt0aGlzLmN4PTMqdCx0aGlzLmJ4PTMqKGUtdCktdGhpcy5jeCx0aGlzLmF4PTEtdGhpcy5jeC10aGlzLmJ4LHRoaXMuY3k9MyppLHRoaXMuYnk9Myooci1pKS10aGlzLmN5LHRoaXMuYXk9MS10aGlzLmN5LXRoaXMuYnksdGhpcy5wMXg9dCx0aGlzLnAxeT1yLHRoaXMucDJ4PWUsdGhpcy5wMnk9cn1tb2R1bGUuZXhwb3J0cz1Vbml0QmV6aWVyLFVuaXRCZXppZXIucHJvdG90eXBlLnNhbXBsZUN1cnZlWD1mdW5jdGlvbih0KXtyZXR1cm4oKHRoaXMuYXgqdCt0aGlzLmJ4KSp0K3RoaXMuY3gpKnR9LFVuaXRCZXppZXIucHJvdG90eXBlLnNhbXBsZUN1cnZlWT1mdW5jdGlvbih0KXtyZXR1cm4oKHRoaXMuYXkqdCt0aGlzLmJ5KSp0K3RoaXMuY3kpKnR9LFVuaXRCZXppZXIucHJvdG90eXBlLnNhbXBsZUN1cnZlRGVyaXZhdGl2ZVg9ZnVuY3Rpb24odCl7cmV0dXJuKDMqdGhpcy5heCp0KzIqdGhpcy5ieCkqdCt0aGlzLmN4fSxVbml0QmV6aWVyLnByb3RvdHlwZS5zb2x2ZUN1cnZlWD1mdW5jdGlvbih0LGkpe3ZvaWQgMD09PWkmJihpPTFlLTYpO3ZhciBlLHIscyxoLG47Zm9yKHM9dCxuPTA7bjw4O24rKyl7aWYoaD10aGlzLnNhbXBsZUN1cnZlWChzKS10LE1hdGguYWJzKGgpPGkpcmV0dXJuIHM7dmFyIHU9dGhpcy5zYW1wbGVDdXJ2ZURlcml2YXRpdmVYKHMpO2lmKE1hdGguYWJzKHUpPDFlLTYpYnJlYWs7cy09aC91fWlmKGU9MCxyPTEsKHM9dCk8ZSlyZXR1cm4gZTtpZihzPnIpcmV0dXJuIHI7Zm9yKDtlPHI7KXtpZihoPXRoaXMuc2FtcGxlQ3VydmVYKHMpLE1hdGguYWJzKGgtdCk8aSlyZXR1cm4gczt0Pmg/ZT1zOnI9cyxzPS41KihyLWUpK2V9cmV0dXJuIHN9LFVuaXRCZXppZXIucHJvdG90eXBlLnNvbHZlPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuc2FtcGxlQ3VydmVZKHRoaXMuc29sdmVDdXJ2ZVgodCxpKSl9O1xufSx7fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cy5WZWN0b3JUaWxlPV9kZXJlcV8oXCIuL2xpYi92ZWN0b3J0aWxlLmpzXCIpLG1vZHVsZS5leHBvcnRzLlZlY3RvclRpbGVGZWF0dXJlPV9kZXJlcV8oXCIuL2xpYi92ZWN0b3J0aWxlZmVhdHVyZS5qc1wiKSxtb2R1bGUuZXhwb3J0cy5WZWN0b3JUaWxlTGF5ZXI9X2RlcmVxXyhcIi4vbGliL3ZlY3RvcnRpbGVsYXllci5qc1wiKTtcbn0se1wiLi9saWIvdmVjdG9ydGlsZS5qc1wiOjcsXCIuL2xpYi92ZWN0b3J0aWxlZmVhdHVyZS5qc1wiOjgsXCIuL2xpYi92ZWN0b3J0aWxlbGF5ZXIuanNcIjo5fV0sNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBWZWN0b3JUaWxlKGUscil7dGhpcy5sYXllcnM9ZS5yZWFkRmllbGRzKHJlYWRUaWxlLHt9LHIpfWZ1bmN0aW9uIHJlYWRUaWxlKGUscixpKXtpZigzPT09ZSl7dmFyIHQ9bmV3IFZlY3RvclRpbGVMYXllcihpLGkucmVhZFZhcmludCgpK2kucG9zKTt0Lmxlbmd0aCYmKHJbdC5uYW1lXT10KX19dmFyIFZlY3RvclRpbGVMYXllcj1fZGVyZXFfKFwiLi92ZWN0b3J0aWxlbGF5ZXJcIik7bW9kdWxlLmV4cG9ydHM9VmVjdG9yVGlsZTtcbn0se1wiLi92ZWN0b3J0aWxlbGF5ZXJcIjo5fV0sODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBWZWN0b3JUaWxlRmVhdHVyZShlLHQscixhLGkpe3RoaXMucHJvcGVydGllcz17fSx0aGlzLmV4dGVudD1yLHRoaXMudHlwZT0wLHRoaXMuX3BiZj1lLHRoaXMuX2dlb21ldHJ5PS0xLHRoaXMuX2tleXM9YSx0aGlzLl92YWx1ZXM9aSxlLnJlYWRGaWVsZHMocmVhZEZlYXR1cmUsdGhpcyx0KX1mdW5jdGlvbiByZWFkRmVhdHVyZShlLHQscil7MT09ZT90LmlkPXIucmVhZFZhcmludCgpOjI9PWU/cmVhZFRhZyhyLHQpOjM9PWU/dC50eXBlPXIucmVhZFZhcmludCgpOjQ9PWUmJih0Ll9nZW9tZXRyeT1yLnBvcyl9ZnVuY3Rpb24gcmVhZFRhZyhlLHQpe2Zvcih2YXIgcj1lLnJlYWRWYXJpbnQoKStlLnBvcztlLnBvczxyOyl7dmFyIGE9dC5fa2V5c1tlLnJlYWRWYXJpbnQoKV0saT10Ll92YWx1ZXNbZS5yZWFkVmFyaW50KCldO3QucHJvcGVydGllc1thXT1pfX1mdW5jdGlvbiBjbGFzc2lmeVJpbmdzKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PTEpcmV0dXJuW2VdO2Zvcih2YXIgcixhLGk9W10sbz0wO288dDtvKyspe3ZhciBuPXNpZ25lZEFyZWEoZVtvXSk7MCE9PW4mJih2b2lkIDA9PT1hJiYoYT1uPDApLGE9PT1uPDA/KHImJmkucHVzaChyKSxyPVtlW29dXSk6ci5wdXNoKGVbb10pKX1yZXR1cm4gciYmaS5wdXNoKHIpLGl9ZnVuY3Rpb24gc2lnbmVkQXJlYShlKXtmb3IodmFyIHQscixhPTAsaT0wLG89ZS5sZW5ndGgsbj1vLTE7aTxvO249aSsrKXQ9ZVtpXSxyPWVbbl0sYSs9KHIueC10LngpKih0Lnkrci55KTtyZXR1cm4gYX12YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIik7bW9kdWxlLmV4cG9ydHM9VmVjdG9yVGlsZUZlYXR1cmUsVmVjdG9yVGlsZUZlYXR1cmUudHlwZXM9W1wiVW5rbm93blwiLFwiUG9pbnRcIixcIkxpbmVTdHJpbmdcIixcIlBvbHlnb25cIl0sVmVjdG9yVGlsZUZlYXR1cmUucHJvdG90eXBlLmxvYWRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BiZjtlLnBvcz10aGlzLl9nZW9tZXRyeTtmb3IodmFyIHQscj1lLnJlYWRWYXJpbnQoKStlLnBvcyxhPTEsaT0wLG89MCxuPTAscz1bXTtlLnBvczxyOyl7aWYoIWkpe3ZhciBwPWUucmVhZFZhcmludCgpO2E9NyZwLGk9cD4+M31pZihpLS0sMT09PWF8fDI9PT1hKW8rPWUucmVhZFNWYXJpbnQoKSxuKz1lLnJlYWRTVmFyaW50KCksMT09PWEmJih0JiZzLnB1c2godCksdD1bXSksdC5wdXNoKG5ldyBQb2ludChvLG4pKTtlbHNle2lmKDchPT1hKXRocm93IG5ldyBFcnJvcihcInVua25vd24gY29tbWFuZCBcIithKTt0JiZ0LnB1c2godFswXS5jbG9uZSgpKX19cmV0dXJuIHQmJnMucHVzaCh0KSxzfSxWZWN0b3JUaWxlRmVhdHVyZS5wcm90b3R5cGUuYmJveD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BiZjtlLnBvcz10aGlzLl9nZW9tZXRyeTtmb3IodmFyIHQ9ZS5yZWFkVmFyaW50KCkrZS5wb3Mscj0xLGE9MCxpPTAsbz0wLG49MS8wLHM9LTEvMCxwPTEvMCxoPS0xLzA7ZS5wb3M8dDspe2lmKCFhKXt2YXIgdT1lLnJlYWRWYXJpbnQoKTtyPTcmdSxhPXU+PjN9aWYoYS0tLDE9PT1yfHwyPT09cilpKz1lLnJlYWRTVmFyaW50KCksbys9ZS5yZWFkU1ZhcmludCgpLGk8biYmKG49aSksaT5zJiYocz1pKSxvPHAmJihwPW8pLG8+aCYmKGg9byk7ZWxzZSBpZig3IT09cil0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGNvbW1hbmQgXCIrcil9cmV0dXJuW24scCxzLGhdfSxWZWN0b3JUaWxlRmVhdHVyZS5wcm90b3R5cGUudG9HZW9KU09OPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLGE9MTgwLTM2MCooci55K3ApL247ZVt0XT1bMzYwKihyLngrcykvbi0xODAsMzYwL01hdGguUEkqTWF0aC5hdGFuKE1hdGguZXhwKGEqTWF0aC5QSS8xODApKS05MF19fXZhciBpLG8sbj10aGlzLmV4dGVudCpNYXRoLnBvdygyLHIpLHM9dGhpcy5leHRlbnQqZSxwPXRoaXMuZXh0ZW50KnQsaD10aGlzLmxvYWRHZW9tZXRyeSgpLHU9VmVjdG9yVGlsZUZlYXR1cmUudHlwZXNbdGhpcy50eXBlXTtzd2l0Y2godGhpcy50eXBlKXtjYXNlIDE6dmFyIGQ9W107Zm9yKGk9MDtpPGgubGVuZ3RoO2krKylkW2ldPWhbaV1bMF07aD1kLGEoaCk7YnJlYWs7Y2FzZSAyOmZvcihpPTA7aTxoLmxlbmd0aDtpKyspYShoW2ldKTticmVhaztjYXNlIDM6Zm9yKGg9Y2xhc3NpZnlSaW5ncyhoKSxpPTA7aTxoLmxlbmd0aDtpKyspZm9yKG89MDtvPGhbaV0ubGVuZ3RoO28rKylhKGhbaV1bb10pfTE9PT1oLmxlbmd0aD9oPWhbMF06dT1cIk11bHRpXCIrdTt2YXIgZj17dHlwZTpcIkZlYXR1cmVcIixnZW9tZXRyeTp7dHlwZTp1LGNvb3JkaW5hdGVzOmh9LHByb3BlcnRpZXM6dGhpcy5wcm9wZXJ0aWVzfTtyZXR1cm5cImlkXCJpbiB0aGlzJiYoZi5pZD10aGlzLmlkKSxmfTtcbn0se1wiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjJ9XSw5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIFZlY3RvclRpbGVMYXllcihlLHQpe3RoaXMudmVyc2lvbj0xLHRoaXMubmFtZT1udWxsLHRoaXMuZXh0ZW50PTQwOTYsdGhpcy5sZW5ndGg9MCx0aGlzLl9wYmY9ZSx0aGlzLl9rZXlzPVtdLHRoaXMuX3ZhbHVlcz1bXSx0aGlzLl9mZWF0dXJlcz1bXSxlLnJlYWRGaWVsZHMocmVhZExheWVyLHRoaXMsdCksdGhpcy5sZW5ndGg9dGhpcy5fZmVhdHVyZXMubGVuZ3RofWZ1bmN0aW9uIHJlYWRMYXllcihlLHQscil7MTU9PT1lP3QudmVyc2lvbj1yLnJlYWRWYXJpbnQoKToxPT09ZT90Lm5hbWU9ci5yZWFkU3RyaW5nKCk6NT09PWU/dC5leHRlbnQ9ci5yZWFkVmFyaW50KCk6Mj09PWU/dC5fZmVhdHVyZXMucHVzaChyLnBvcyk6Mz09PWU/dC5fa2V5cy5wdXNoKHIucmVhZFN0cmluZygpKTo0PT09ZSYmdC5fdmFsdWVzLnB1c2gocmVhZFZhbHVlTWVzc2FnZShyKSl9ZnVuY3Rpb24gcmVhZFZhbHVlTWVzc2FnZShlKXtmb3IodmFyIHQ9bnVsbCxyPWUucmVhZFZhcmludCgpK2UucG9zO2UucG9zPHI7KXt2YXIgYT1lLnJlYWRWYXJpbnQoKT4+Mzt0PTE9PT1hP2UucmVhZFN0cmluZygpOjI9PT1hP2UucmVhZEZsb2F0KCk6Mz09PWE/ZS5yZWFkRG91YmxlKCk6ND09PWE/ZS5yZWFkVmFyaW50NjQoKTo1PT09YT9lLnJlYWRWYXJpbnQoKTo2PT09YT9lLnJlYWRTVmFyaW50KCk6Nz09PWE/ZS5yZWFkQm9vbGVhbigpOm51bGx9cmV0dXJuIHR9dmFyIFZlY3RvclRpbGVGZWF0dXJlPV9kZXJlcV8oXCIuL3ZlY3RvcnRpbGVmZWF0dXJlLmpzXCIpO21vZHVsZS5leHBvcnRzPVZlY3RvclRpbGVMYXllcixWZWN0b3JUaWxlTGF5ZXIucHJvdG90eXBlLmZlYXR1cmU9ZnVuY3Rpb24oZSl7aWYoZTwwfHxlPj10aGlzLl9mZWF0dXJlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiZmVhdHVyZSBpbmRleCBvdXQgb2YgYm91bmRzXCIpO3RoaXMuX3BiZi5wb3M9dGhpcy5fZmVhdHVyZXNbZV07dmFyIHQ9dGhpcy5fcGJmLnJlYWRWYXJpbnQoKSt0aGlzLl9wYmYucG9zO3JldHVybiBuZXcgVmVjdG9yVGlsZUZlYXR1cmUodGhpcy5fcGJmLHQsdGhpcy5leHRlbnQsdGhpcy5fa2V5cyx0aGlzLl92YWx1ZXMpfTtcbn0se1wiLi92ZWN0b3J0aWxlZmVhdHVyZS5qc1wiOjh9XSwxMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4hZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT90KGV4cG9ydHMpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wiZXhwb3J0c1wiXSx0KTp0KGUuV2hvb1RTPWUuV2hvb1RTfHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuLGkscyl7cmV0dXJuIHM9c3x8e30sZStcIj9cIitbXCJiYm94PVwiK28ocixuLGkpLFwiZm9ybWF0PVwiKyhzLmZvcm1hdHx8XCJpbWFnZS9wbmdcIiksXCJzZXJ2aWNlPVwiKyhzLnNlcnZpY2V8fFwiV01TXCIpLFwidmVyc2lvbj1cIisocy52ZXJzaW9ufHxcIjEuMS4xXCIpLFwicmVxdWVzdD1cIisocy5yZXF1ZXN0fHxcIkdldE1hcFwiKSxcInNycz1cIisocy5zcnN8fFwiRVBTRzozODU3XCIpLFwid2lkdGg9XCIrKHMud2lkdGh8fDI1NiksXCJoZWlnaHQ9XCIrKHMuaGVpZ2h0fHwyNTYpLFwibGF5ZXJzPVwiK3RdLmpvaW4oXCImXCIpfWZ1bmN0aW9uIG8oZSx0LG8pe3Q9TWF0aC5wb3coMixvKS10LTE7dmFyIG49cigyNTYqZSwyNTYqdCxvKSxpPXIoMjU2KihlKzEpLDI1NioodCsxKSxvKTtyZXR1cm4gblswXStcIixcIituWzFdK1wiLFwiK2lbMF0rXCIsXCIraVsxXX1mdW5jdGlvbiByKGUsdCxvKXt2YXIgcj0yKk1hdGguUEkqNjM3ODEzNy8yNTYvTWF0aC5wb3coMixvKTtyZXR1cm5bZSpyLTIqTWF0aC5QSSo2Mzc4MTM3LzIsdCpyLTIqTWF0aC5QSSo2Mzc4MTM3LzJdfWUuZ2V0VVJMPXQsZS5nZXRUaWxlQkJveD1vLGUuZ2V0TWVyY0Nvb3Jkcz1yLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSk7XG59LHt9XSwxMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBlYXJjdXQoZSxuLHIpe3I9cnx8Mjt2YXIgdD1uJiZuLmxlbmd0aCxpPXQ/blswXSpyOmUubGVuZ3RoLHg9bGlua2VkTGlzdChlLDAsaSxyLCEwKSxhPVtdO2lmKCF4KXJldHVybiBhO3ZhciBvLGwsdSxzLHYsZix5O2lmKHQmJih4PWVsaW1pbmF0ZUhvbGVzKGUsbix4LHIpKSxlLmxlbmd0aD44MCpyKXtvPXU9ZVswXSxsPXM9ZVsxXTtmb3IodmFyIGQ9cjtkPGk7ZCs9cil2PWVbZF0sZj1lW2QrMV0sdjxvJiYobz12KSxmPGwmJihsPWYpLHY+dSYmKHU9diksZj5zJiYocz1mKTt5PU1hdGgubWF4KHUtbyxzLWwpfXJldHVybiBlYXJjdXRMaW5rZWQoeCxhLHIsbyxsLHkpLGF9ZnVuY3Rpb24gbGlua2VkTGlzdChlLG4scix0LGkpe3ZhciB4LGE7aWYoaT09PXNpZ25lZEFyZWEoZSxuLHIsdCk+MClmb3IoeD1uO3g8cjt4Kz10KWE9aW5zZXJ0Tm9kZSh4LGVbeF0sZVt4KzFdLGEpO2Vsc2UgZm9yKHg9ci10O3g+PW47eC09dClhPWluc2VydE5vZGUoeCxlW3hdLGVbeCsxXSxhKTtyZXR1cm4gYSYmZXF1YWxzKGEsYS5uZXh0KSYmKHJlbW92ZU5vZGUoYSksYT1hLm5leHQpLGF9ZnVuY3Rpb24gZmlsdGVyUG9pbnRzKGUsbil7aWYoIWUpcmV0dXJuIGU7bnx8KG49ZSk7dmFyIHIsdD1lO2Rve2lmKHI9ITEsdC5zdGVpbmVyfHwhZXF1YWxzKHQsdC5uZXh0KSYmMCE9PWFyZWEodC5wcmV2LHQsdC5uZXh0KSl0PXQubmV4dDtlbHNle2lmKHJlbW92ZU5vZGUodCksKHQ9bj10LnByZXYpPT09dC5uZXh0KXJldHVybiBudWxsO3I9ITB9fXdoaWxlKHJ8fHQhPT1uKTtyZXR1cm4gbn1mdW5jdGlvbiBlYXJjdXRMaW5rZWQoZSxuLHIsdCxpLHgsYSl7aWYoZSl7IWEmJngmJmluZGV4Q3VydmUoZSx0LGkseCk7Zm9yKHZhciBvLGwsdT1lO2UucHJldiE9PWUubmV4dDspaWYobz1lLnByZXYsbD1lLm5leHQseD9pc0Vhckhhc2hlZChlLHQsaSx4KTppc0VhcihlKSluLnB1c2goby5pL3IpLG4ucHVzaChlLmkvciksbi5wdXNoKGwuaS9yKSxyZW1vdmVOb2RlKGUpLGU9bC5uZXh0LHU9bC5uZXh0O2Vsc2UgaWYoKGU9bCk9PT11KXthPzE9PT1hPyhlPWN1cmVMb2NhbEludGVyc2VjdGlvbnMoZSxuLHIpLGVhcmN1dExpbmtlZChlLG4scix0LGkseCwyKSk6Mj09PWEmJnNwbGl0RWFyY3V0KGUsbixyLHQsaSx4KTplYXJjdXRMaW5rZWQoZmlsdGVyUG9pbnRzKGUpLG4scix0LGkseCwxKTticmVha319fWZ1bmN0aW9uIGlzRWFyKGUpe3ZhciBuPWUucHJldixyPWUsdD1lLm5leHQ7aWYoYXJlYShuLHIsdCk+PTApcmV0dXJuITE7Zm9yKHZhciBpPWUubmV4dC5uZXh0O2khPT1lLnByZXY7KXtpZihwb2ludEluVHJpYW5nbGUobi54LG4ueSxyLngsci55LHQueCx0LnksaS54LGkueSkmJmFyZWEoaS5wcmV2LGksaS5uZXh0KT49MClyZXR1cm4hMTtpPWkubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBpc0Vhckhhc2hlZChlLG4scix0KXt2YXIgaT1lLnByZXYseD1lLGE9ZS5uZXh0O2lmKGFyZWEoaSx4LGEpPj0wKXJldHVybiExO2Zvcih2YXIgbz1pLng8eC54P2kueDxhLng/aS54OmEueDp4Lng8YS54P3gueDphLngsbD1pLnk8eC55P2kueTxhLnk/aS55OmEueTp4Lnk8YS55P3gueTphLnksdT1pLng+eC54P2kueD5hLng/aS54OmEueDp4Lng+YS54P3gueDphLngscz1pLnk+eC55P2kueT5hLnk/aS55OmEueTp4Lnk+YS55P3gueTphLnksdj16T3JkZXIobyxsLG4scix0KSxmPXpPcmRlcih1LHMsbixyLHQpLHk9ZS5uZXh0Wjt5JiZ5Lno8PWY7KXtpZih5IT09ZS5wcmV2JiZ5IT09ZS5uZXh0JiZwb2ludEluVHJpYW5nbGUoaS54LGkueSx4LngseC55LGEueCxhLnkseS54LHkueSkmJmFyZWEoeS5wcmV2LHkseS5uZXh0KT49MClyZXR1cm4hMTt5PXkubmV4dFp9Zm9yKHk9ZS5wcmV2Wjt5JiZ5Lno+PXY7KXtpZih5IT09ZS5wcmV2JiZ5IT09ZS5uZXh0JiZwb2ludEluVHJpYW5nbGUoaS54LGkueSx4LngseC55LGEueCxhLnkseS54LHkueSkmJmFyZWEoeS5wcmV2LHkseS5uZXh0KT49MClyZXR1cm4hMTt5PXkucHJldlp9cmV0dXJuITB9ZnVuY3Rpb24gY3VyZUxvY2FsSW50ZXJzZWN0aW9ucyhlLG4scil7dmFyIHQ9ZTtkb3t2YXIgaT10LnByZXYseD10Lm5leHQubmV4dDshZXF1YWxzKGkseCkmJmludGVyc2VjdHMoaSx0LHQubmV4dCx4KSYmbG9jYWxseUluc2lkZShpLHgpJiZsb2NhbGx5SW5zaWRlKHgsaSkmJihuLnB1c2goaS5pL3IpLG4ucHVzaCh0Lmkvciksbi5wdXNoKHguaS9yKSxyZW1vdmVOb2RlKHQpLHJlbW92ZU5vZGUodC5uZXh0KSx0PWU9eCksdD10Lm5leHR9d2hpbGUodCE9PWUpO3JldHVybiB0fWZ1bmN0aW9uIHNwbGl0RWFyY3V0KGUsbixyLHQsaSx4KXt2YXIgYT1lO2Rve2Zvcih2YXIgbz1hLm5leHQubmV4dDtvIT09YS5wcmV2Oyl7aWYoYS5pIT09by5pJiZpc1ZhbGlkRGlhZ29uYWwoYSxvKSl7dmFyIGw9c3BsaXRQb2x5Z29uKGEsbyk7cmV0dXJuIGE9ZmlsdGVyUG9pbnRzKGEsYS5uZXh0KSxsPWZpbHRlclBvaW50cyhsLGwubmV4dCksZWFyY3V0TGlua2VkKGEsbixyLHQsaSx4KSx2b2lkIGVhcmN1dExpbmtlZChsLG4scix0LGkseCl9bz1vLm5leHR9YT1hLm5leHR9d2hpbGUoYSE9PWUpfWZ1bmN0aW9uIGVsaW1pbmF0ZUhvbGVzKGUsbixyLHQpe3ZhciBpLHgsYSxvLGwsdT1bXTtmb3IoaT0wLHg9bi5sZW5ndGg7aTx4O2krKylhPW5baV0qdCxvPWk8eC0xP25baSsxXSp0OmUubGVuZ3RoLGw9bGlua2VkTGlzdChlLGEsbyx0LCExKSxsPT09bC5uZXh0JiYobC5zdGVpbmVyPSEwKSx1LnB1c2goZ2V0TGVmdG1vc3QobCkpO2Zvcih1LnNvcnQoY29tcGFyZVgpLGk9MDtpPHUubGVuZ3RoO2krKyllbGltaW5hdGVIb2xlKHVbaV0scikscj1maWx0ZXJQb2ludHMocixyLm5leHQpO3JldHVybiByfWZ1bmN0aW9uIGNvbXBhcmVYKGUsbil7cmV0dXJuIGUueC1uLnh9ZnVuY3Rpb24gZWxpbWluYXRlSG9sZShlLG4pe2lmKG49ZmluZEhvbGVCcmlkZ2UoZSxuKSl7dmFyIHI9c3BsaXRQb2x5Z29uKG4sZSk7ZmlsdGVyUG9pbnRzKHIsci5uZXh0KX19ZnVuY3Rpb24gZmluZEhvbGVCcmlkZ2UoZSxuKXt2YXIgcix0PW4saT1lLngseD1lLnksYT0tMS8wO2Rve2lmKHg8PXQueSYmeD49dC5uZXh0Lnkpe3ZhciBvPXQueCsoeC10LnkpKih0Lm5leHQueC10LngpLyh0Lm5leHQueS10LnkpO2lmKG88PWkmJm8+YSl7aWYoYT1vLG89PT1pKXtpZih4PT09dC55KXJldHVybiB0O2lmKHg9PT10Lm5leHQueSlyZXR1cm4gdC5uZXh0fXI9dC54PHQubmV4dC54P3Q6dC5uZXh0fX10PXQubmV4dH13aGlsZSh0IT09bik7aWYoIXIpcmV0dXJuIG51bGw7aWYoaT09PWEpcmV0dXJuIHIucHJldjt2YXIgbCx1PXIscz1yLngsdj1yLnksZj0xLzA7Zm9yKHQ9ci5uZXh0O3QhPT11OylpPj10LngmJnQueD49cyYmcG9pbnRJblRyaWFuZ2xlKHg8dj9pOmEseCxzLHYseDx2P2E6aSx4LHQueCx0LnkpJiYoKGw9TWF0aC5hYnMoeC10LnkpLyhpLXQueCkpPGZ8fGw9PT1mJiZ0Lng+ci54KSYmbG9jYWxseUluc2lkZSh0LGUpJiYocj10LGY9bCksdD10Lm5leHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gaW5kZXhDdXJ2ZShlLG4scix0KXt2YXIgaT1lO2Rve251bGw9PT1pLnomJihpLno9ek9yZGVyKGkueCxpLnksbixyLHQpKSxpLnByZXZaPWkucHJldixpLm5leHRaPWkubmV4dCxpPWkubmV4dH13aGlsZShpIT09ZSk7aS5wcmV2Wi5uZXh0Wj1udWxsLGkucHJldlo9bnVsbCxzb3J0TGlua2VkKGkpfWZ1bmN0aW9uIHNvcnRMaW5rZWQoZSl7dmFyIG4scix0LGkseCxhLG8sbCx1PTE7ZG97Zm9yKHI9ZSxlPW51bGwseD1udWxsLGE9MDtyOyl7Zm9yKGErKyx0PXIsbz0wLG49MDtuPHUmJihvKyssdD10Lm5leHRaKTtuKyspO2ZvcihsPXU7bz4wfHxsPjAmJnQ7KTA9PT1vPyhpPXQsdD10Lm5leHRaLGwtLSk6MCE9PWwmJnQ/ci56PD10Lno/KGk9cixyPXIubmV4dFosby0tKTooaT10LHQ9dC5uZXh0WixsLS0pOihpPXIscj1yLm5leHRaLG8tLSkseD94Lm5leHRaPWk6ZT1pLGkucHJldlo9eCx4PWk7cj10fXgubmV4dFo9bnVsbCx1Kj0yfXdoaWxlKGE+MSk7cmV0dXJuIGV9ZnVuY3Rpb24gek9yZGVyKGUsbixyLHQsaSl7cmV0dXJuIGU9MzI3NjcqKGUtcikvaSxuPTMyNzY3KihuLXQpL2ksZT0xNjcxMTkzNSYoZXxlPDw4KSxlPTI1MjY0NTEzNSYoZXxlPDw0KSxlPTg1ODk5MzQ1OSYoZXxlPDwyKSxlPTE0MzE2NTU3NjUmKGV8ZTw8MSksbj0xNjcxMTkzNSYobnxuPDw4KSxuPTI1MjY0NTEzNSYobnxuPDw0KSxuPTg1ODk5MzQ1OSYobnxuPDwyKSxuPTE0MzE2NTU3NjUmKG58bjw8MSksZXxuPDwxfWZ1bmN0aW9uIGdldExlZnRtb3N0KGUpe3ZhciBuPWUscj1lO2Rve24ueDxyLngmJihyPW4pLG49bi5uZXh0fXdoaWxlKG4hPT1lKTtyZXR1cm4gcn1mdW5jdGlvbiBwb2ludEluVHJpYW5nbGUoZSxuLHIsdCxpLHgsYSxvKXtyZXR1cm4oaS1hKSoobi1vKS0oZS1hKSooeC1vKT49MCYmKGUtYSkqKHQtbyktKHItYSkqKG4tbyk+PTAmJihyLWEpKih4LW8pLShpLWEpKih0LW8pPj0wfWZ1bmN0aW9uIGlzVmFsaWREaWFnb25hbChlLG4pe3JldHVybiBlLm5leHQuaSE9PW4uaSYmZS5wcmV2LmkhPT1uLmkmJiFpbnRlcnNlY3RzUG9seWdvbihlLG4pJiZsb2NhbGx5SW5zaWRlKGUsbikmJmxvY2FsbHlJbnNpZGUobixlKSYmbWlkZGxlSW5zaWRlKGUsbil9ZnVuY3Rpb24gYXJlYShlLG4scil7cmV0dXJuKG4ueS1lLnkpKihyLngtbi54KS0obi54LWUueCkqKHIueS1uLnkpfWZ1bmN0aW9uIGVxdWFscyhlLG4pe3JldHVybiBlLng9PT1uLngmJmUueT09PW4ueX1mdW5jdGlvbiBpbnRlcnNlY3RzKGUsbixyLHQpe3JldHVybiEhKGVxdWFscyhlLG4pJiZlcXVhbHMocix0KXx8ZXF1YWxzKGUsdCkmJmVxdWFscyhyLG4pKXx8YXJlYShlLG4scik+MCE9YXJlYShlLG4sdCk+MCYmYXJlYShyLHQsZSk+MCE9YXJlYShyLHQsbik+MH1mdW5jdGlvbiBpbnRlcnNlY3RzUG9seWdvbihlLG4pe3ZhciByPWU7ZG97aWYoci5pIT09ZS5pJiZyLm5leHQuaSE9PWUuaSYmci5pIT09bi5pJiZyLm5leHQuaSE9PW4uaSYmaW50ZXJzZWN0cyhyLHIubmV4dCxlLG4pKXJldHVybiEwO3I9ci5uZXh0fXdoaWxlKHIhPT1lKTtyZXR1cm4hMX1mdW5jdGlvbiBsb2NhbGx5SW5zaWRlKGUsbil7cmV0dXJuIGFyZWEoZS5wcmV2LGUsZS5uZXh0KTwwP2FyZWEoZSxuLGUubmV4dCk+PTAmJmFyZWEoZSxlLnByZXYsbik+PTA6YXJlYShlLG4sZS5wcmV2KTwwfHxhcmVhKGUsZS5uZXh0LG4pPDB9ZnVuY3Rpb24gbWlkZGxlSW5zaWRlKGUsbil7dmFyIHI9ZSx0PSExLGk9KGUueCtuLngpLzIseD0oZS55K24ueSkvMjtkb3tyLnk+eCE9ci5uZXh0Lnk+eCYmaTwoci5uZXh0Lngtci54KSooeC1yLnkpLyhyLm5leHQueS1yLnkpK3IueCYmKHQ9IXQpLHI9ci5uZXh0fXdoaWxlKHIhPT1lKTtyZXR1cm4gdH1mdW5jdGlvbiBzcGxpdFBvbHlnb24oZSxuKXt2YXIgcj1uZXcgTm9kZShlLmksZS54LGUueSksdD1uZXcgTm9kZShuLmksbi54LG4ueSksaT1lLm5leHQseD1uLnByZXY7cmV0dXJuIGUubmV4dD1uLG4ucHJldj1lLHIubmV4dD1pLGkucHJldj1yLHQubmV4dD1yLHIucHJldj10LHgubmV4dD10LHQucHJldj14LHR9ZnVuY3Rpb24gaW5zZXJ0Tm9kZShlLG4scix0KXt2YXIgaT1uZXcgTm9kZShlLG4scik7cmV0dXJuIHQ/KGkubmV4dD10Lm5leHQsaS5wcmV2PXQsdC5uZXh0LnByZXY9aSx0Lm5leHQ9aSk6KGkucHJldj1pLGkubmV4dD1pKSxpfWZ1bmN0aW9uIHJlbW92ZU5vZGUoZSl7ZS5uZXh0LnByZXY9ZS5wcmV2LGUucHJldi5uZXh0PWUubmV4dCxlLnByZXZaJiYoZS5wcmV2Wi5uZXh0Wj1lLm5leHRaKSxlLm5leHRaJiYoZS5uZXh0Wi5wcmV2Wj1lLnByZXZaKX1mdW5jdGlvbiBOb2RlKGUsbixyKXt0aGlzLmk9ZSx0aGlzLng9bix0aGlzLnk9cix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBzaWduZWRBcmVhKGUsbixyLHQpe2Zvcih2YXIgaT0wLHg9bixhPXItdDt4PHI7eCs9dClpKz0oZVthXS1lW3hdKSooZVt4KzFdK2VbYSsxXSksYT14O3JldHVybiBpfW1vZHVsZS5leHBvcnRzPWVhcmN1dCxlYXJjdXQuZGV2aWF0aW9uPWZ1bmN0aW9uKGUsbixyLHQpe3ZhciBpPW4mJm4ubGVuZ3RoLHg9aT9uWzBdKnI6ZS5sZW5ndGgsYT1NYXRoLmFicyhzaWduZWRBcmVhKGUsMCx4LHIpKTtpZihpKWZvcih2YXIgbz0wLGw9bi5sZW5ndGg7bzxsO28rKyl7dmFyIHU9bltvXSpyLHM9bzxsLTE/bltvKzFdKnI6ZS5sZW5ndGg7YS09TWF0aC5hYnMoc2lnbmVkQXJlYShlLHUscyxyKSl9dmFyIHY9MDtmb3Iobz0wO288dC5sZW5ndGg7bys9Myl7dmFyIGY9dFtvXSpyLHk9dFtvKzFdKnIsZD10W28rMl0qcjt2Kz1NYXRoLmFicygoZVtmXS1lW2RdKSooZVt5KzFdLWVbZisxXSktKGVbZl0tZVt5XSkqKGVbZCsxXS1lW2YrMV0pKX1yZXR1cm4gMD09PWEmJjA9PT12PzA6TWF0aC5hYnMoKHYtYSkvYSl9LGVhcmN1dC5mbGF0dGVuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1lWzBdWzBdLmxlbmd0aCxyPXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOm59LHQ9MCxpPTA7aTxlLmxlbmd0aDtpKyspe2Zvcih2YXIgeD0wO3g8ZVtpXS5sZW5ndGg7eCsrKWZvcih2YXIgYT0wO2E8bjthKyspci52ZXJ0aWNlcy5wdXNoKGVbaV1beF1bYV0pO2k+MCYmKHQrPWVbaS0xXS5sZW5ndGgsci5ob2xlcy5wdXNoKHQpKX1yZXR1cm4gcn07XG59LHt9XSwxMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBnZW9tZXRyeShyKXtpZihcIlBvbHlnb25cIj09PXIudHlwZSlyZXR1cm4gcG9seWdvbkFyZWEoci5jb29yZGluYXRlcyk7aWYoXCJNdWx0aVBvbHlnb25cIj09PXIudHlwZSl7Zm9yKHZhciBlPTAsbj0wO248ci5jb29yZGluYXRlcy5sZW5ndGg7bisrKWUrPXBvbHlnb25BcmVhKHIuY29vcmRpbmF0ZXNbbl0pO3JldHVybiBlfXJldHVybiBudWxsfWZ1bmN0aW9uIHBvbHlnb25BcmVhKHIpe3ZhciBlPTA7aWYociYmci5sZW5ndGg+MCl7ZSs9TWF0aC5hYnMocmluZ0FyZWEoclswXSkpO2Zvcih2YXIgbj0xO248ci5sZW5ndGg7bisrKWUtPU1hdGguYWJzKHJpbmdBcmVhKHJbbl0pKX1yZXR1cm4gZX1mdW5jdGlvbiByaW5nQXJlYShyKXt2YXIgZT0wO2lmKHIubGVuZ3RoPjIpe2Zvcih2YXIgbix0LG89MDtvPHIubGVuZ3RoLTE7bysrKW49cltvXSx0PXJbbysxXSxlKz1yYWQodFswXS1uWzBdKSooMitNYXRoLnNpbihyYWQoblsxXSkpK01hdGguc2luKHJhZCh0WzFdKSkpO2U9ZSp3Z3M4NC5SQURJVVMqd2dzODQuUkFESVVTLzJ9cmV0dXJuIGV9ZnVuY3Rpb24gcmFkKHIpe3JldHVybiByKk1hdGguUEkvMTgwfXZhciB3Z3M4ND1fZGVyZXFfKFwid2dzODRcIik7bW9kdWxlLmV4cG9ydHMuZ2VvbWV0cnk9Z2VvbWV0cnksbW9kdWxlLmV4cG9ydHMucmluZz1yaW5nQXJlYTtcbn0se1wid2dzODRcIjo0MH1dLDEzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbmZ1bmN0aW9uIHJld2luZChyLGUpe3N3aXRjaChyJiZyLnR5cGV8fG51bGwpe2Nhc2VcIkZlYXR1cmVDb2xsZWN0aW9uXCI6cmV0dXJuIHIuZmVhdHVyZXM9ci5mZWF0dXJlcy5tYXAoY3VycnlPdXRlcihyZXdpbmQsZSkpLHI7Y2FzZVwiRmVhdHVyZVwiOnJldHVybiByLmdlb21ldHJ5PXJld2luZChyLmdlb21ldHJ5LGUpLHI7Y2FzZVwiUG9seWdvblwiOmNhc2VcIk11bHRpUG9seWdvblwiOnJldHVybiBjb3JyZWN0KHIsZSk7ZGVmYXVsdDpyZXR1cm4gcn19ZnVuY3Rpb24gY3VycnlPdXRlcihyLGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gcihuLGUpfX1mdW5jdGlvbiBjb3JyZWN0KHIsZSl7cmV0dXJuXCJQb2x5Z29uXCI9PT1yLnR5cGU/ci5jb29yZGluYXRlcz1jb3JyZWN0UmluZ3Moci5jb29yZGluYXRlcyxlKTpcIk11bHRpUG9seWdvblwiPT09ci50eXBlJiYoci5jb29yZGluYXRlcz1yLmNvb3JkaW5hdGVzLm1hcChjdXJyeU91dGVyKGNvcnJlY3RSaW5ncyxlKSkpLHJ9ZnVuY3Rpb24gY29ycmVjdFJpbmdzKHIsZSl7ZT0hIWUsclswXT13aW5kKHJbMF0sZSk7Zm9yKHZhciBuPTE7bjxyLmxlbmd0aDtuKyspcltuXT13aW5kKHJbbl0sIWUpO3JldHVybiByfWZ1bmN0aW9uIHdpbmQocixlKXtyZXR1cm4gY3cocik9PT1lP3I6ci5yZXZlcnNlKCl9ZnVuY3Rpb24gY3cocil7cmV0dXJuIGdlb2pzb25BcmVhLnJpbmcocik+PTB9dmFyIGdlb2pzb25BcmVhPV9kZXJlcV8oXCJnZW9qc29uLWFyZWFcIik7bW9kdWxlLmV4cG9ydHM9cmV3aW5kO1xufSx7XCJnZW9qc29uLWFyZWFcIjoxMn1dLDE0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNsaXAoZSxyLHQsbix1LGksbCxzKXtpZih0Lz1yLG4vPXIsbD49dCYmczw9bilyZXR1cm4gZTtpZihsPm58fHM8dClyZXR1cm4gbnVsbDtmb3IodmFyIGg9W10scD0wO3A8ZS5sZW5ndGg7cCsrKXt2YXIgYSxjLG89ZVtwXSxmPW8uZ2VvbWV0cnksZz1vLnR5cGU7aWYoYT1vLm1pblt1XSxjPW8ubWF4W3VdLGE+PXQmJmM8PW4paC5wdXNoKG8pO2Vsc2UgaWYoIShhPm58fGM8dCkpe3ZhciB2PTE9PT1nP2NsaXBQb2ludHMoZix0LG4sdSk6Y2xpcEdlb21ldHJ5KGYsdCxuLHUsaSwzPT09Zyk7di5sZW5ndGgmJmgucHVzaChjcmVhdGVGZWF0dXJlKG8udGFncyxnLHYsby5pZCkpfX1yZXR1cm4gaC5sZW5ndGg/aDpudWxsfWZ1bmN0aW9uIGNsaXBQb2ludHMoZSxyLHQsbil7Zm9yKHZhciB1PVtdLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGw9ZVtpXSxzPWxbbl07cz49ciYmczw9dCYmdS5wdXNoKGwpfXJldHVybiB1fWZ1bmN0aW9uIGNsaXBHZW9tZXRyeShlLHIsdCxuLHUsaSl7Zm9yKHZhciBsPVtdLHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIGgscCxhLGM9MCxvPTAsZj1udWxsLGc9ZVtzXSx2PWcuYXJlYSxtPWcuZGlzdCx3PWcub3V0ZXIsUz1nLmxlbmd0aCxkPVtdO2ZvcihwPTA7cDxTLTE7cCsrKWg9Znx8Z1twXSxmPWdbcCsxXSxjPW98fGhbbl0sbz1mW25dLGM8cj9vPnQ/KGQucHVzaCh1KGgsZixyKSx1KGgsZix0KSksaXx8KGQ9bmV3U2xpY2UobCxkLHYsbSx3KSkpOm8+PXImJmQucHVzaCh1KGgsZixyKSk6Yz50P288cj8oZC5wdXNoKHUoaCxmLHQpLHUoaCxmLHIpKSxpfHwoZD1uZXdTbGljZShsLGQsdixtLHcpKSk6bzw9dCYmZC5wdXNoKHUoaCxmLHQpKTooZC5wdXNoKGgpLG88cj8oZC5wdXNoKHUoaCxmLHIpKSxpfHwoZD1uZXdTbGljZShsLGQsdixtLHcpKSk6bz50JiYoZC5wdXNoKHUoaCxmLHQpKSxpfHwoZD1uZXdTbGljZShsLGQsdixtLHcpKSkpO2g9Z1tTLTFdLGM9aFtuXSxjPj1yJiZjPD10JiZkLnB1c2goaCksYT1kW2QubGVuZ3RoLTFdLGkmJmEmJihkWzBdWzBdIT09YVswXXx8ZFswXVsxXSE9PWFbMV0pJiZkLnB1c2goZFswXSksbmV3U2xpY2UobCxkLHYsbSx3KX1yZXR1cm4gbH1mdW5jdGlvbiBuZXdTbGljZShlLHIsdCxuLHUpe3JldHVybiByLmxlbmd0aCYmKHIuYXJlYT10LHIuZGlzdD1uLHZvaWQgMCE9PXUmJihyLm91dGVyPXUpLGUucHVzaChyKSksW119bW9kdWxlLmV4cG9ydHM9Y2xpcDt2YXIgY3JlYXRlRmVhdHVyZT1fZGVyZXFfKFwiLi9mZWF0dXJlXCIpO1xufSx7XCIuL2ZlYXR1cmVcIjoxNn1dLDE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNvbnZlcnQoZSx0KXt2YXIgcj1bXTtpZihcIkZlYXR1cmVDb2xsZWN0aW9uXCI9PT1lLnR5cGUpZm9yKHZhciBvPTA7bzxlLmZlYXR1cmVzLmxlbmd0aDtvKyspY29udmVydEZlYXR1cmUocixlLmZlYXR1cmVzW29dLHQpO2Vsc2VcIkZlYXR1cmVcIj09PWUudHlwZT9jb252ZXJ0RmVhdHVyZShyLGUsdCk6Y29udmVydEZlYXR1cmUocix7Z2VvbWV0cnk6ZX0sdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gY29udmVydEZlYXR1cmUoZSx0LHIpe2lmKG51bGwhPT10Lmdlb21ldHJ5KXt2YXIgbyxhLGksbix1PXQuZ2VvbWV0cnksYz11LnR5cGUsbD11LmNvb3JkaW5hdGVzLHM9dC5wcm9wZXJ0aWVzLHA9dC5pZDtpZihcIlBvaW50XCI9PT1jKWUucHVzaChjcmVhdGVGZWF0dXJlKHMsMSxbcHJvamVjdFBvaW50KGwpXSxwKSk7ZWxzZSBpZihcIk11bHRpUG9pbnRcIj09PWMpZS5wdXNoKGNyZWF0ZUZlYXR1cmUocywxLHByb2plY3QobCkscCkpO2Vsc2UgaWYoXCJMaW5lU3RyaW5nXCI9PT1jKWUucHVzaChjcmVhdGVGZWF0dXJlKHMsMixbcHJvamVjdChsLHIpXSxwKSk7ZWxzZSBpZihcIk11bHRpTGluZVN0cmluZ1wiPT09Y3x8XCJQb2x5Z29uXCI9PT1jKXtmb3IoaT1bXSxvPTA7bzxsLmxlbmd0aDtvKyspbj1wcm9qZWN0KGxbb10sciksXCJQb2x5Z29uXCI9PT1jJiYobi5vdXRlcj0wPT09byksaS5wdXNoKG4pO2UucHVzaChjcmVhdGVGZWF0dXJlKHMsXCJQb2x5Z29uXCI9PT1jPzM6MixpLHApKX1lbHNlIGlmKFwiTXVsdGlQb2x5Z29uXCI9PT1jKXtmb3IoaT1bXSxvPTA7bzxsLmxlbmd0aDtvKyspZm9yKGE9MDthPGxbb10ubGVuZ3RoO2ErKyluPXByb2plY3QobFtvXVthXSxyKSxuLm91dGVyPTA9PT1hLGkucHVzaChuKTtlLnB1c2goY3JlYXRlRmVhdHVyZShzLDMsaSxwKSl9ZWxzZXtpZihcIkdlb21ldHJ5Q29sbGVjdGlvblwiIT09Yyl0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBkYXRhIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04gb2JqZWN0LlwiKTtmb3Iobz0wO288dS5nZW9tZXRyaWVzLmxlbmd0aDtvKyspY29udmVydEZlYXR1cmUoZSx7Z2VvbWV0cnk6dS5nZW9tZXRyaWVzW29dLHByb3BlcnRpZXM6c30scil9fX1mdW5jdGlvbiBwcm9qZWN0KGUsdCl7Zm9yKHZhciByPVtdLG89MDtvPGUubGVuZ3RoO28rKylyLnB1c2gocHJvamVjdFBvaW50KGVbb10pKTtyZXR1cm4gdCYmKHNpbXBsaWZ5KHIsdCksY2FsY1NpemUocikpLHJ9ZnVuY3Rpb24gcHJvamVjdFBvaW50KGUpe3ZhciB0PU1hdGguc2luKGVbMV0qTWF0aC5QSS8xODApLHI9ZVswXS8zNjArLjUsbz0uNS0uMjUqTWF0aC5sb2coKDErdCkvKDEtdCkpL01hdGguUEk7cmV0dXJuIG89bzwwPzA6bz4xPzE6byxbcixvLDBdfWZ1bmN0aW9uIGNhbGNTaXplKGUpe2Zvcih2YXIgdCxyLG89MCxhPTAsaT0wO2k8ZS5sZW5ndGgtMTtpKyspdD1yfHxlW2ldLHI9ZVtpKzFdLG8rPXRbMF0qclsxXS1yWzBdKnRbMV0sYSs9TWF0aC5hYnMoclswXS10WzBdKStNYXRoLmFicyhyWzFdLXRbMV0pO2UuYXJlYT1NYXRoLmFicyhvLzIpLGUuZGlzdD1hfW1vZHVsZS5leHBvcnRzPWNvbnZlcnQ7dmFyIHNpbXBsaWZ5PV9kZXJlcV8oXCIuL3NpbXBsaWZ5XCIpLGNyZWF0ZUZlYXR1cmU9X2RlcmVxXyhcIi4vZmVhdHVyZVwiKTtcbn0se1wiLi9mZWF0dXJlXCI6MTYsXCIuL3NpbXBsaWZ5XCI6MTh9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBjcmVhdGVGZWF0dXJlKGUsdCxhLG4pe3ZhciByPXtpZDpufHxudWxsLHR5cGU6dCxnZW9tZXRyeTphLHRhZ3M6ZXx8bnVsbCxtaW46WzEvMCwxLzBdLG1heDpbLTEvMCwtMS8wXX07cmV0dXJuIGNhbGNCQm94KHIpLHJ9ZnVuY3Rpb24gY2FsY0JCb3goZSl7dmFyIHQ9ZS5nZW9tZXRyeSxhPWUubWluLG49ZS5tYXg7aWYoMT09PWUudHlwZSljYWxjUmluZ0JCb3goYSxuLHQpO2Vsc2UgZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspY2FsY1JpbmdCQm94KGEsbix0W3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBjYWxjUmluZ0JCb3goZSx0LGEpe2Zvcih2YXIgbixyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLGVbMF09TWF0aC5taW4oblswXSxlWzBdKSx0WzBdPU1hdGgubWF4KG5bMF0sdFswXSksZVsxXT1NYXRoLm1pbihuWzFdLGVbMV0pLHRbMV09TWF0aC5tYXgoblsxXSx0WzFdKX1tb2R1bGUuZXhwb3J0cz1jcmVhdGVGZWF0dXJlO1xufSx7fV0sMTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZ2VvanNvbnZ0KGUsdCl7cmV0dXJuIG5ldyBHZW9KU09OVlQoZSx0KX1mdW5jdGlvbiBHZW9KU09OVlQoZSx0KXt0PXRoaXMub3B0aW9ucz1leHRlbmQoT2JqZWN0LmNyZWF0ZSh0aGlzLm9wdGlvbnMpLHQpO3ZhciBpPXQuZGVidWc7aSYmY29uc29sZS50aW1lKFwicHJlcHJvY2VzcyBkYXRhXCIpO3ZhciBvPTE8PHQubWF4Wm9vbSxuPWNvbnZlcnQoZSx0LnRvbGVyYW5jZS8obyp0LmV4dGVudCkpO3RoaXMudGlsZXM9e30sdGhpcy50aWxlQ29vcmRzPVtdLGkmJihjb25zb2xlLnRpbWVFbmQoXCJwcmVwcm9jZXNzIGRhdGFcIiksY29uc29sZS5sb2coXCJpbmRleDogbWF4Wm9vbTogJWQsIG1heFBvaW50czogJWRcIix0LmluZGV4TWF4Wm9vbSx0LmluZGV4TWF4UG9pbnRzKSxjb25zb2xlLnRpbWUoXCJnZW5lcmF0ZSB0aWxlc1wiKSx0aGlzLnN0YXRzPXt9LHRoaXMudG90YWw9MCksbj13cmFwKG4sdC5idWZmZXIvdC5leHRlbnQsaW50ZXJzZWN0WCksbi5sZW5ndGgmJnRoaXMuc3BsaXRUaWxlKG4sMCwwLDApLGkmJihuLmxlbmd0aCYmY29uc29sZS5sb2coXCJmZWF0dXJlczogJWQsIHBvaW50czogJWRcIix0aGlzLnRpbGVzWzBdLm51bUZlYXR1cmVzLHRoaXMudGlsZXNbMF0ubnVtUG9pbnRzKSxjb25zb2xlLnRpbWVFbmQoXCJnZW5lcmF0ZSB0aWxlc1wiKSxjb25zb2xlLmxvZyhcInRpbGVzIGdlbmVyYXRlZDpcIix0aGlzLnRvdGFsLEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdHMpKSl9ZnVuY3Rpb24gdG9JRChlLHQsaSl7cmV0dXJuIDMyKigoMTw8ZSkqaSt0KStlfWZ1bmN0aW9uIGludGVyc2VjdFgoZSx0LGkpe3JldHVybltpLChpLWVbMF0pKih0WzFdLWVbMV0pLyh0WzBdLWVbMF0pK2VbMV0sMV19ZnVuY3Rpb24gaW50ZXJzZWN0WShlLHQsaSl7cmV0dXJuWyhpLWVbMV0pKih0WzBdLWVbMF0pLyh0WzFdLWVbMV0pK2VbMF0saSwxXX1mdW5jdGlvbiBleHRlbmQoZSx0KXtmb3IodmFyIGkgaW4gdCllW2ldPXRbaV07cmV0dXJuIGV9ZnVuY3Rpb24gaXNDbGlwcGVkU3F1YXJlKGUsdCxpKXt2YXIgbz1lLnNvdXJjZTtpZigxIT09by5sZW5ndGgpcmV0dXJuITE7dmFyIG49b1swXTtpZigzIT09bi50eXBlfHxuLmdlb21ldHJ5Lmxlbmd0aD4xKXJldHVybiExO3ZhciByPW4uZ2VvbWV0cnlbMF0ubGVuZ3RoO2lmKDUhPT1yKXJldHVybiExO2Zvcih2YXIgcz0wO3M8cjtzKyspe3ZhciBsPXRyYW5zZm9ybS5wb2ludChuLmdlb21ldHJ5WzBdW3NdLHQsZS56MixlLngsZS55KTtpZihsWzBdIT09LWkmJmxbMF0hPT10K2l8fGxbMV0hPT0taSYmbFsxXSE9PXQraSlyZXR1cm4hMX1yZXR1cm4hMH1tb2R1bGUuZXhwb3J0cz1nZW9qc29udnQ7dmFyIGNvbnZlcnQ9X2RlcmVxXyhcIi4vY29udmVydFwiKSx0cmFuc2Zvcm09X2RlcmVxXyhcIi4vdHJhbnNmb3JtXCIpLGNsaXA9X2RlcmVxXyhcIi4vY2xpcFwiKSx3cmFwPV9kZXJlcV8oXCIuL3dyYXBcIiksY3JlYXRlVGlsZT1fZGVyZXFfKFwiLi90aWxlXCIpO0dlb0pTT05WVC5wcm90b3R5cGUub3B0aW9ucz17bWF4Wm9vbToxNCxpbmRleE1heFpvb206NSxpbmRleE1heFBvaW50czoxZTUsc29saWRDaGlsZHJlbjohMSx0b2xlcmFuY2U6MyxleHRlbnQ6NDA5NixidWZmZXI6NjQsZGVidWc6MH0sR2VvSlNPTlZULnByb3RvdHlwZS5zcGxpdFRpbGU9ZnVuY3Rpb24oZSx0LGksbyxuLHIscyl7Zm9yKHZhciBsPVtlLHQsaSxvXSxhPXRoaXMub3B0aW9ucyx1PWEuZGVidWcsYz1udWxsO2wubGVuZ3RoOyl7bz1sLnBvcCgpLGk9bC5wb3AoKSx0PWwucG9wKCksZT1sLnBvcCgpO3ZhciBwPTE8PHQsZD10b0lEKHQsaSxvKSxtPXRoaXMudGlsZXNbZF0sZj10PT09YS5tYXhab29tPzA6YS50b2xlcmFuY2UvKHAqYS5leHRlbnQpO2lmKCFtJiYodT4xJiZjb25zb2xlLnRpbWUoXCJjcmVhdGlvblwiKSxtPXRoaXMudGlsZXNbZF09Y3JlYXRlVGlsZShlLHAsaSxvLGYsdD09PWEubWF4Wm9vbSksdGhpcy50aWxlQ29vcmRzLnB1c2goe3o6dCx4OmkseTpvfSksdSkpe3U+MSYmKGNvbnNvbGUubG9nKFwidGlsZSB6JWQtJWQtJWQgKGZlYXR1cmVzOiAlZCwgcG9pbnRzOiAlZCwgc2ltcGxpZmllZDogJWQpXCIsdCxpLG8sbS5udW1GZWF0dXJlcyxtLm51bVBvaW50cyxtLm51bVNpbXBsaWZpZWQpLGNvbnNvbGUudGltZUVuZChcImNyZWF0aW9uXCIpKTt2YXIgaD1cInpcIit0O3RoaXMuc3RhdHNbaF09KHRoaXMuc3RhdHNbaF18fDApKzEsdGhpcy50b3RhbCsrfWlmKG0uc291cmNlPWUsbil7aWYodD09PWEubWF4Wm9vbXx8dD09PW4pY29udGludWU7dmFyIHg9MTw8bi10O2lmKGkhPT1NYXRoLmZsb29yKHIveCl8fG8hPT1NYXRoLmZsb29yKHMveCkpY29udGludWV9ZWxzZSBpZih0PT09YS5pbmRleE1heFpvb218fG0ubnVtUG9pbnRzPD1hLmluZGV4TWF4UG9pbnRzKWNvbnRpbnVlO2lmKGEuc29saWRDaGlsZHJlbnx8IWlzQ2xpcHBlZFNxdWFyZShtLGEuZXh0ZW50LGEuYnVmZmVyKSl7bS5zb3VyY2U9bnVsbCx1PjEmJmNvbnNvbGUudGltZShcImNsaXBwaW5nXCIpO3ZhciBnLHYsTSxULGIseSxTPS41KmEuYnVmZmVyL2EuZXh0ZW50LFo9LjUtUyxxPS41K1Msdz0xK1M7Zz12PU09VD1udWxsLGI9Y2xpcChlLHAsaS1TLGkrcSwwLGludGVyc2VjdFgsbS5taW5bMF0sbS5tYXhbMF0pLHk9Y2xpcChlLHAsaStaLGkrdywwLGludGVyc2VjdFgsbS5taW5bMF0sbS5tYXhbMF0pLGImJihnPWNsaXAoYixwLG8tUyxvK3EsMSxpbnRlcnNlY3RZLG0ubWluWzFdLG0ubWF4WzFdKSx2PWNsaXAoYixwLG8rWixvK3csMSxpbnRlcnNlY3RZLG0ubWluWzFdLG0ubWF4WzFdKSkseSYmKE09Y2xpcCh5LHAsby1TLG8rcSwxLGludGVyc2VjdFksbS5taW5bMV0sbS5tYXhbMV0pLFQ9Y2xpcCh5LHAsbytaLG8rdywxLGludGVyc2VjdFksbS5taW5bMV0sbS5tYXhbMV0pKSx1PjEmJmNvbnNvbGUudGltZUVuZChcImNsaXBwaW5nXCIpLGUubGVuZ3RoJiYobC5wdXNoKGd8fFtdLHQrMSwyKmksMipvKSxsLnB1c2godnx8W10sdCsxLDIqaSwyKm8rMSksbC5wdXNoKE18fFtdLHQrMSwyKmkrMSwyKm8pLGwucHVzaChUfHxbXSx0KzEsMippKzEsMipvKzEpKX1lbHNlIG4mJihjPXQpfXJldHVybiBjfSxHZW9KU09OVlQucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24oZSx0LGkpe3ZhciBvPXRoaXMub3B0aW9ucyxuPW8uZXh0ZW50LHI9by5kZWJ1ZyxzPTE8PGU7dD0odCVzK3MpJXM7dmFyIGw9dG9JRChlLHQsaSk7aWYodGhpcy50aWxlc1tsXSlyZXR1cm4gdHJhbnNmb3JtLnRpbGUodGhpcy50aWxlc1tsXSxuKTtyPjEmJmNvbnNvbGUubG9nKFwiZHJpbGxpbmcgZG93biB0byB6JWQtJWQtJWRcIixlLHQsaSk7Zm9yKHZhciBhLHU9ZSxjPXQscD1pOyFhJiZ1PjA7KXUtLSxjPU1hdGguZmxvb3IoYy8yKSxwPU1hdGguZmxvb3IocC8yKSxhPXRoaXMudGlsZXNbdG9JRCh1LGMscCldO2lmKCFhfHwhYS5zb3VyY2UpcmV0dXJuIG51bGw7aWYocj4xJiZjb25zb2xlLmxvZyhcImZvdW5kIHBhcmVudCB0aWxlIHolZC0lZC0lZFwiLHUsYyxwKSxpc0NsaXBwZWRTcXVhcmUoYSxuLG8uYnVmZmVyKSlyZXR1cm4gdHJhbnNmb3JtLnRpbGUoYSxuKTtyPjEmJmNvbnNvbGUudGltZShcImRyaWxsaW5nIGRvd25cIik7dmFyIGQ9dGhpcy5zcGxpdFRpbGUoYS5zb3VyY2UsdSxjLHAsZSx0LGkpO2lmKHI+MSYmY29uc29sZS50aW1lRW5kKFwiZHJpbGxpbmcgZG93blwiKSxudWxsIT09ZCl7dmFyIG09MTw8ZS1kO2w9dG9JRChkLE1hdGguZmxvb3IodC9tKSxNYXRoLmZsb29yKGkvbSkpfXJldHVybiB0aGlzLnRpbGVzW2xdP3RyYW5zZm9ybS50aWxlKHRoaXMudGlsZXNbbF0sbik6bnVsbH07XG59LHtcIi4vY2xpcFwiOjE0LFwiLi9jb252ZXJ0XCI6MTUsXCIuL3RpbGVcIjoxOSxcIi4vdHJhbnNmb3JtXCI6MjAsXCIuL3dyYXBcIjoyMX1dLDE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHNpbXBsaWZ5KHQsaSl7dmFyIGUscCxyLHMsbz1pKmksZj10Lmxlbmd0aCx1PTAsbj1mLTEsZz1bXTtmb3IodFt1XVsyXT0xLHRbbl1bMl09MTtuOyl7Zm9yKHA9MCxlPXUrMTtlPG47ZSsrKShyPWdldFNxU2VnRGlzdCh0W2VdLHRbdV0sdFtuXSkpPnAmJihzPWUscD1yKTtwPm8/KHRbc11bMl09cCxnLnB1c2godSksZy5wdXNoKHMpLHU9cyk6KG49Zy5wb3AoKSx1PWcucG9wKCkpfX1mdW5jdGlvbiBnZXRTcVNlZ0Rpc3QodCxpLGUpe3ZhciBwPWlbMF0scj1pWzFdLHM9ZVswXSxvPWVbMV0sZj10WzBdLHU9dFsxXSxuPXMtcCxnPW8tcjtpZigwIT09bnx8MCE9PWcpe3ZhciBsPSgoZi1wKSpuKyh1LXIpKmcpLyhuKm4rZypnKTtsPjE/KHA9cyxyPW8pOmw+MCYmKHArPW4qbCxyKz1nKmwpfXJldHVybiBuPWYtcCxnPXUtcixuKm4rZypnfW1vZHVsZS5leHBvcnRzPXNpbXBsaWZ5O1xufSx7fV0sMTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY3JlYXRlVGlsZShlLG4scixpLHQsdSl7Zm9yKHZhciBhPXtmZWF0dXJlczpbXSxudW1Qb2ludHM6MCxudW1TaW1wbGlmaWVkOjAsbnVtRmVhdHVyZXM6MCxzb3VyY2U6bnVsbCx4OnIseTppLHoyOm4sdHJhbnNmb3JtZWQ6ITEsbWluOlsyLDFdLG1heDpbLTEsMF19LG09MDttPGUubGVuZ3RoO20rKyl7YS5udW1GZWF0dXJlcysrLGFkZEZlYXR1cmUoYSxlW21dLHQsdSk7dmFyIHM9ZVttXS5taW4sbD1lW21dLm1heDtzWzBdPGEubWluWzBdJiYoYS5taW5bMF09c1swXSksc1sxXTxhLm1pblsxXSYmKGEubWluWzFdPXNbMV0pLGxbMF0+YS5tYXhbMF0mJihhLm1heFswXT1sWzBdKSxsWzFdPmEubWF4WzFdJiYoYS5tYXhbMV09bFsxXSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWRkRmVhdHVyZShlLG4scixpKXt2YXIgdCx1LGEsbSxzPW4uZ2VvbWV0cnksbD1uLnR5cGUsbz1bXSxmPXIqcjtpZigxPT09bClmb3IodD0wO3Q8cy5sZW5ndGg7dCsrKW8ucHVzaChzW3RdKSxlLm51bVBvaW50cysrLGUubnVtU2ltcGxpZmllZCsrO2Vsc2UgZm9yKHQ9MDt0PHMubGVuZ3RoO3QrKylpZihhPXNbdF0saXx8ISgyPT09bCYmYS5kaXN0PHJ8fDM9PT1sJiZhLmFyZWE8Zikpe3ZhciBkPVtdO2Zvcih1PTA7dTxhLmxlbmd0aDt1KyspbT1hW3VdLChpfHxtWzJdPmYpJiYoZC5wdXNoKG0pLGUubnVtU2ltcGxpZmllZCsrKSxlLm51bVBvaW50cysrOzM9PT1sJiZyZXdpbmQoZCxhLm91dGVyKSxvLnB1c2goZCl9ZWxzZSBlLm51bVBvaW50cys9YS5sZW5ndGg7aWYoby5sZW5ndGgpe3ZhciBnPXtnZW9tZXRyeTpvLHR5cGU6bCx0YWdzOm4udGFnc3x8bnVsbH07bnVsbCE9PW4uaWQmJihnLmlkPW4uaWQpLGUuZmVhdHVyZXMucHVzaChnKX19ZnVuY3Rpb24gcmV3aW5kKGUsbil7c2lnbmVkQXJlYShlKTwwPT09biYmZS5yZXZlcnNlKCl9ZnVuY3Rpb24gc2lnbmVkQXJlYShlKXtmb3IodmFyIG4scixpPTAsdD0wLHU9ZS5sZW5ndGgsYT11LTE7dDx1O2E9dCsrKW49ZVt0XSxyPWVbYV0saSs9KHJbMF0tblswXSkqKG5bMV0rclsxXSk7cmV0dXJuIGl9bW9kdWxlLmV4cG9ydHM9Y3JlYXRlVGlsZTtcbn0se31dLDIwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHRyYW5zZm9ybVRpbGUocix0KXtpZihyLnRyYW5zZm9ybWVkKXJldHVybiByO3ZhciBuLGUsbyxmPXIuejIsYT1yLngscz1yLnk7Zm9yKG49MDtuPHIuZmVhdHVyZXMubGVuZ3RoO24rKyl7dmFyIGk9ci5mZWF0dXJlc1tuXSx1PWkuZ2VvbWV0cnk7aWYoMT09PWkudHlwZSlmb3IoZT0wO2U8dS5sZW5ndGg7ZSsrKXVbZV09dHJhbnNmb3JtUG9pbnQodVtlXSx0LGYsYSxzKTtlbHNlIGZvcihlPTA7ZTx1Lmxlbmd0aDtlKyspe3ZhciBtPXVbZV07Zm9yKG89MDtvPG0ubGVuZ3RoO28rKyltW29dPXRyYW5zZm9ybVBvaW50KG1bb10sdCxmLGEscyl9fXJldHVybiByLnRyYW5zZm9ybWVkPSEwLHJ9ZnVuY3Rpb24gdHJhbnNmb3JtUG9pbnQocix0LG4sZSxvKXtyZXR1cm5bTWF0aC5yb3VuZCh0KihyWzBdKm4tZSkpLE1hdGgucm91bmQodCooclsxXSpuLW8pKV19ZXhwb3J0cy50aWxlPXRyYW5zZm9ybVRpbGUsZXhwb3J0cy5wb2ludD10cmFuc2Zvcm1Qb2ludDtcbn0se31dLDIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHdyYXAocixlLHQpe3ZhciBvPXIsYT1jbGlwKHIsMSwtMS1lLGUsMCx0LC0xLDIpLHM9Y2xpcChyLDEsMS1lLDIrZSwwLHQsLTEsMik7cmV0dXJuKGF8fHMpJiYobz1jbGlwKHIsMSwtZSwxK2UsMCx0LC0xLDIpfHxbXSxhJiYobz1zaGlmdEZlYXR1cmVDb29yZHMoYSwxKS5jb25jYXQobykpLHMmJihvPW8uY29uY2F0KHNoaWZ0RmVhdHVyZUNvb3JkcyhzLC0xKSkpKSxvfWZ1bmN0aW9uIHNoaWZ0RmVhdHVyZUNvb3JkcyhyLGUpe2Zvcih2YXIgdD1bXSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBhLHM9cltvXSxpPXMudHlwZTtpZigxPT09aSlhPXNoaWZ0Q29vcmRzKHMuZ2VvbWV0cnksZSk7ZWxzZXthPVtdO2Zvcih2YXIgdT0wO3U8cy5nZW9tZXRyeS5sZW5ndGg7dSsrKWEucHVzaChzaGlmdENvb3JkcyhzLmdlb21ldHJ5W3VdLGUpKX10LnB1c2goY3JlYXRlRmVhdHVyZShzLnRhZ3MsaSxhLHMuaWQpKX1yZXR1cm4gdH1mdW5jdGlvbiBzaGlmdENvb3JkcyhyLGUpe3ZhciB0PVtdO3QuYXJlYT1yLmFyZWEsdC5kaXN0PXIuZGlzdDtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0LnB1c2goW3Jbb11bMF0rZSxyW29dWzFdLHJbb11bMl1dKTtyZXR1cm4gdH12YXIgY2xpcD1fZGVyZXFfKFwiLi9jbGlwXCIpLGNyZWF0ZUZlYXR1cmU9X2RlcmVxXyhcIi4vZmVhdHVyZVwiKTttb2R1bGUuZXhwb3J0cz13cmFwO1xufSx7XCIuL2NsaXBcIjoxNCxcIi4vZmVhdHVyZVwiOjE2fV0sMjI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gR3JpZEluZGV4KHQscixlKXt2YXIgcz10aGlzLmNlbGxzPVtdO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dGhpcy5hcnJheUJ1ZmZlcj10O3ZhciBpPW5ldyBJbnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO3Q9aVswXSxyPWlbMV0sZT1pWzJdLHRoaXMuZD1yKzIqZTtmb3IodmFyIGg9MDtoPHRoaXMuZCp0aGlzLmQ7aCsrKXt2YXIgbj1pW05VTV9QQVJBTVMraF0sbz1pW05VTV9QQVJBTVMraCsxXTtzLnB1c2gobj09PW8/bnVsbDppLnN1YmFycmF5KG4sbykpfXZhciBsPWlbTlVNX1BBUkFNUytzLmxlbmd0aF0sYT1pW05VTV9QQVJBTVMrcy5sZW5ndGgrMV07dGhpcy5rZXlzPWkuc3ViYXJyYXkobCxhKSx0aGlzLmJib3hlcz1pLnN1YmFycmF5KGEpLHRoaXMuaW5zZXJ0PXRoaXMuX2luc2VydFJlYWRvbmx5fWVsc2V7dGhpcy5kPXIrMiplO2Zvcih2YXIgZD0wO2Q8dGhpcy5kKnRoaXMuZDtkKyspcy5wdXNoKFtdKTt0aGlzLmtleXM9W10sdGhpcy5iYm94ZXM9W119dGhpcy5uPXIsdGhpcy5leHRlbnQ9dCx0aGlzLnBhZGRpbmc9ZSx0aGlzLnNjYWxlPXIvdCx0aGlzLnVpZD0wO3ZhciBmPWUvcip0O3RoaXMubWluPS1mLHRoaXMubWF4PXQrZn1tb2R1bGUuZXhwb3J0cz1HcmlkSW5kZXg7dmFyIE5VTV9QQVJBTVM9MztHcmlkSW5kZXgucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LHIsZSxzLGkpe3RoaXMuX2ZvckVhY2hDZWxsKHIsZSxzLGksdGhpcy5faW5zZXJ0Q2VsbCx0aGlzLnVpZCsrKSx0aGlzLmtleXMucHVzaCh0KSx0aGlzLmJib3hlcy5wdXNoKHIpLHRoaXMuYmJveGVzLnB1c2goZSksdGhpcy5iYm94ZXMucHVzaChzKSx0aGlzLmJib3hlcy5wdXNoKGkpfSxHcmlkSW5kZXgucHJvdG90eXBlLl9pbnNlcnRSZWFkb25seT1mdW5jdGlvbigpe3Rocm93XCJDYW5ub3QgaW5zZXJ0IGludG8gYSBHcmlkSW5kZXggY3JlYXRlZCBmcm9tIGFuIEFycmF5QnVmZmVyLlwifSxHcmlkSW5kZXgucHJvdG90eXBlLl9pbnNlcnRDZWxsPWZ1bmN0aW9uKHQscixlLHMsaSxoKXt0aGlzLmNlbGxzW2ldLnB1c2goaCl9LEdyaWRJbmRleC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxyLGUscyl7dmFyIGk9dGhpcy5taW4saD10aGlzLm1heDtpZih0PD1pJiZyPD1pJiZoPD1lJiZoPD1zKXJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmtleXMpO3ZhciBuPVtdLG89e307cmV0dXJuIHRoaXMuX2ZvckVhY2hDZWxsKHQscixlLHMsdGhpcy5fcXVlcnlDZWxsLG4sbyksbn0sR3JpZEluZGV4LnByb3RvdHlwZS5fcXVlcnlDZWxsPWZ1bmN0aW9uKHQscixlLHMsaSxoLG4pe3ZhciBvPXRoaXMuY2VsbHNbaV07aWYobnVsbCE9PW8pZm9yKHZhciBsPXRoaXMua2V5cyxhPXRoaXMuYmJveGVzLGQ9MDtkPG8ubGVuZ3RoO2QrKyl7dmFyIGY9b1tkXTtpZih2b2lkIDA9PT1uW2ZdKXt2YXIgdT00KmY7dDw9YVt1KzJdJiZyPD1hW3UrM10mJmU+PWFbdSswXSYmcz49YVt1KzFdPyhuW2ZdPSEwLGgucHVzaChsW2ZdKSk6bltmXT0hMX19fSxHcmlkSW5kZXgucHJvdG90eXBlLl9mb3JFYWNoQ2VsbD1mdW5jdGlvbih0LHIsZSxzLGksaCxuKXtmb3IodmFyIG89dGhpcy5fY29udmVydFRvQ2VsbENvb3JkKHQpLGw9dGhpcy5fY29udmVydFRvQ2VsbENvb3JkKHIpLGE9dGhpcy5fY29udmVydFRvQ2VsbENvb3JkKGUpLGQ9dGhpcy5fY29udmVydFRvQ2VsbENvb3JkKHMpLGY9bztmPD1hO2YrKylmb3IodmFyIHU9bDt1PD1kO3UrKyl7dmFyIHk9dGhpcy5kKnUrZjtpZihpLmNhbGwodGhpcyx0LHIsZSxzLHksaCxuKSlyZXR1cm59fSxHcmlkSW5kZXgucHJvdG90eXBlLl9jb252ZXJ0VG9DZWxsQ29vcmQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5kLTEsTWF0aC5mbG9vcih0KnRoaXMuc2NhbGUpK3RoaXMucGFkZGluZykpfSxHcmlkSW5kZXgucHJvdG90eXBlLnRvQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmFycmF5QnVmZmVyKXJldHVybiB0aGlzLmFycmF5QnVmZmVyO2Zvcih2YXIgdD10aGlzLmNlbGxzLHI9TlVNX1BBUkFNUyt0aGlzLmNlbGxzLmxlbmd0aCsxKzEsZT0wLHM9MDtzPHRoaXMuY2VsbHMubGVuZ3RoO3MrKyllKz10aGlzLmNlbGxzW3NdLmxlbmd0aDt2YXIgaT1uZXcgSW50MzJBcnJheShyK2UrdGhpcy5rZXlzLmxlbmd0aCt0aGlzLmJib3hlcy5sZW5ndGgpO2lbMF09dGhpcy5leHRlbnQsaVsxXT10aGlzLm4saVsyXT10aGlzLnBhZGRpbmc7Zm9yKHZhciBoPXIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgbz10W25dO2lbTlVNX1BBUkFNUytuXT1oLGkuc2V0KG8saCksaCs9by5sZW5ndGh9cmV0dXJuIGlbTlVNX1BBUkFNUyt0Lmxlbmd0aF09aCxpLnNldCh0aGlzLmtleXMsaCksaCs9dGhpcy5rZXlzLmxlbmd0aCxpW05VTV9QQVJBTVMrdC5sZW5ndGgrMV09aCxpLnNldCh0aGlzLmJib3hlcyxoKSxoKz10aGlzLmJib3hlcy5sZW5ndGgsaS5idWZmZXJ9O1xufSx7fV0sMjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZXhwb3J0cy5yZWFkPWZ1bmN0aW9uKGEsbyx0LHIsaCl7dmFyIE0scCx3PTgqaC1yLTEsZj0oMTw8dyktMSxlPWY+PjEsaT0tNyxOPXQ/aC0xOjAsbj10Py0xOjEscz1hW28rTl07Zm9yKE4rPW4sTT1zJigxPDwtaSktMSxzPj49LWksaSs9dztpPjA7TT0yNTYqTSthW28rTl0sTis9bixpLT04KTtmb3IocD1NJigxPDwtaSktMSxNPj49LWksaSs9cjtpPjA7cD0yNTYqcCthW28rTl0sTis9bixpLT04KTtpZigwPT09TSlNPTEtZTtlbHNle2lmKE09PT1mKXJldHVybiBwP05hTjoxLzAqKHM/LTE6MSk7cCs9TWF0aC5wb3coMixyKSxNLT1lfXJldHVybihzPy0xOjEpKnAqTWF0aC5wb3coMixNLXIpfSxleHBvcnRzLndyaXRlPWZ1bmN0aW9uKGEsbyx0LHIsaCxNKXt2YXIgcCx3LGYsZT04Kk0taC0xLGk9KDE8PGUpLTEsTj1pPj4xLG49MjM9PT1oP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxzPXI/MDpNLTEsdT1yPzE6LTEsbD1vPDB8fDA9PT1vJiYxL288MD8xOjA7Zm9yKG89TWF0aC5hYnMobyksaXNOYU4obyl8fG89PT0xLzA/KHc9aXNOYU4obyk/MTowLHA9aSk6KHA9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMiksbyooZj1NYXRoLnBvdygyLC1wKSk8MSYmKHAtLSxmKj0yKSxvKz1wK04+PTE/bi9mOm4qTWF0aC5wb3coMiwxLU4pLG8qZj49MiYmKHArKyxmLz0yKSxwK04+PWk/KHc9MCxwPWkpOnArTj49MT8odz0obypmLTEpKk1hdGgucG93KDIsaCkscCs9Tik6KHc9bypNYXRoLnBvdygyLE4tMSkqTWF0aC5wb3coMixoKSxwPTApKTtoPj04O2FbdCtzXT0yNTUmdyxzKz11LHcvPTI1NixoLT04KTtmb3IocD1wPDxofHcsZSs9aDtlPjA7YVt0K3NdPTI1NSZwLHMrPXUscC89MjU2LGUtPTgpO2FbdCtzLXVdfD0xMjgqbH07XG59LHt9XSwyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBrZGJ1c2godCxpLGUscyxuKXtyZXR1cm4gbmV3IEtEQnVzaCh0LGksZSxzLG4pfWZ1bmN0aW9uIEtEQnVzaCh0LGksZSxzLG4pe2k9aXx8ZGVmYXVsdEdldFgsZT1lfHxkZWZhdWx0R2V0WSxuPW58fEFycmF5LHRoaXMubm9kZVNpemU9c3x8NjQsdGhpcy5wb2ludHM9dCx0aGlzLmlkcz1uZXcgbih0Lmxlbmd0aCksdGhpcy5jb29yZHM9bmV3IG4oMip0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy5pZHNbcl09cix0aGlzLmNvb3Jkc1syKnJdPWkodFtyXSksdGhpcy5jb29yZHNbMipyKzFdPWUodFtyXSk7c29ydCh0aGlzLmlkcyx0aGlzLmNvb3Jkcyx0aGlzLm5vZGVTaXplLDAsdGhpcy5pZHMubGVuZ3RoLTEsMCl9ZnVuY3Rpb24gZGVmYXVsdEdldFgodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gZGVmYXVsdEdldFkodCl7cmV0dXJuIHRbMV19dmFyIHNvcnQ9X2RlcmVxXyhcIi4vc29ydFwiKSxyYW5nZT1fZGVyZXFfKFwiLi9yYW5nZVwiKSx3aXRoaW49X2RlcmVxXyhcIi4vd2l0aGluXCIpO21vZHVsZS5leHBvcnRzPWtkYnVzaCxLREJ1c2gucHJvdG90eXBlPXtyYW5nZTpmdW5jdGlvbih0LGksZSxzKXtyZXR1cm4gcmFuZ2UodGhpcy5pZHMsdGhpcy5jb29yZHMsdCxpLGUscyx0aGlzLm5vZGVTaXplKX0sd2l0aGluOmZ1bmN0aW9uKHQsaSxlKXtyZXR1cm4gd2l0aGluKHRoaXMuaWRzLHRoaXMuY29vcmRzLHQsaSxlLHRoaXMubm9kZVNpemUpfX07XG59LHtcIi4vcmFuZ2VcIjoyNSxcIi4vc29ydFwiOjI2LFwiLi93aXRoaW5cIjoyN31dLDI1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHJhbmdlKHAscixzLHUsaCxlLG8pe2Zvcih2YXIgYSx0LG49WzAscC5sZW5ndGgtMSwwXSxmPVtdO24ubGVuZ3RoOyl7dmFyIGw9bi5wb3AoKSx2PW4ucG9wKCksZz1uLnBvcCgpO2lmKHYtZzw9bylmb3IodmFyIGk9ZztpPD12O2krKylhPXJbMippXSx0PXJbMippKzFdLGE+PXMmJmE8PWgmJnQ+PXUmJnQ8PWUmJmYucHVzaChwW2ldKTtlbHNle3ZhciBjPU1hdGguZmxvb3IoKGcrdikvMik7YT1yWzIqY10sdD1yWzIqYysxXSxhPj1zJiZhPD1oJiZ0Pj11JiZ0PD1lJiZmLnB1c2gocFtjXSk7dmFyIGQ9KGwrMSklMjsoMD09PWw/czw9YTp1PD10KSYmKG4ucHVzaChnKSxuLnB1c2goYy0xKSxuLnB1c2goZCkpLCgwPT09bD9oPj1hOmU+PXQpJiYobi5wdXNoKGMrMSksbi5wdXNoKHYpLG4ucHVzaChkKSl9fXJldHVybiBmfW1vZHVsZS5leHBvcnRzPXJhbmdlO1xufSx7fV0sMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gc29ydEtEKHQsYSxvLHMscixlKXtpZighKHItczw9bykpe3ZhciBmPU1hdGguZmxvb3IoKHMrcikvMik7c2VsZWN0KHQsYSxmLHMscixlJTIpLHNvcnRLRCh0LGEsbyxzLGYtMSxlKzEpLHNvcnRLRCh0LGEsbyxmKzEscixlKzEpfX1mdW5jdGlvbiBzZWxlY3QodCxhLG8scyxyLGUpe2Zvcig7cj5zOyl7aWYoci1zPjYwMCl7dmFyIGY9ci1zKzEscD1vLXMrMSx3PU1hdGgubG9nKGYpLG09LjUqTWF0aC5leHAoMip3LzMpLG49LjUqTWF0aC5zcXJ0KHcqbSooZi1tKS9mKSoocC1mLzI8MD8tMToxKTtzZWxlY3QodCxhLG8sTWF0aC5tYXgocyxNYXRoLmZsb29yKG8tcCptL2YrbikpLE1hdGgubWluKHIsTWF0aC5mbG9vcihvKyhmLXApKm0vZituKSksZSl9dmFyIGM9YVsyKm8rZV0saD1zLGk9cjtmb3Ioc3dhcEl0ZW0odCxhLHMsbyksYVsyKnIrZV0+YyYmc3dhcEl0ZW0odCxhLHMscik7aDxpOyl7Zm9yKHN3YXBJdGVtKHQsYSxoLGkpLGgrKyxpLS07YVsyKmgrZV08YzspaCsrO2Zvcig7YVsyKmkrZV0+YzspaS0tfWFbMipzK2VdPT09Yz9zd2FwSXRlbSh0LGEscyxpKTooaSsrLHN3YXBJdGVtKHQsYSxpLHIpKSxpPD1vJiYocz1pKzEpLG88PWkmJihyPWktMSl9fWZ1bmN0aW9uIHN3YXBJdGVtKHQsYSxvLHMpe3N3YXAodCxvLHMpLHN3YXAoYSwyKm8sMipzKSxzd2FwKGEsMipvKzEsMipzKzEpfWZ1bmN0aW9uIHN3YXAodCxhLG8pe3ZhciBzPXRbYV07dFthXT10W29dLHRbb109c31tb2R1bGUuZXhwb3J0cz1zb3J0S0Q7XG59LHt9XSwyNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB3aXRoaW4ocyxwLHIsdCx1LGgpe2Zvcih2YXIgaT1bMCxzLmxlbmd0aC0xLDBdLG89W10sbj11KnU7aS5sZW5ndGg7KXt2YXIgZT1pLnBvcCgpLGE9aS5wb3AoKSxmPWkucG9wKCk7aWYoYS1mPD1oKWZvcih2YXIgdj1mO3Y8PWE7disrKXNxRGlzdChwWzIqdl0scFsyKnYrMV0scix0KTw9biYmby5wdXNoKHNbdl0pO2Vsc2V7dmFyIGw9TWF0aC5mbG9vcigoZithKS8yKSxjPXBbMipsXSxxPXBbMipsKzFdO3NxRGlzdChjLHEscix0KTw9biYmby5wdXNoKHNbbF0pO3ZhciBEPShlKzEpJTI7KDA9PT1lP3ItdTw9Yzp0LXU8PXEpJiYoaS5wdXNoKGYpLGkucHVzaChsLTEpLGkucHVzaChEKSksKDA9PT1lP3IrdT49Yzp0K3U+PXEpJiYoaS5wdXNoKGwrMSksaS5wdXNoKGEpLGkucHVzaChEKSl9fXJldHVybiBvfWZ1bmN0aW9uIHNxRGlzdChzLHAscix0KXt2YXIgdT1zLXIsaD1wLXQ7cmV0dXJuIHUqdStoKmh9bW9kdWxlLmV4cG9ydHM9d2l0aGluO1xufSx7fV0sMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gaXNTdXBwb3J0ZWQoZSl7cmV0dXJuISEoaXNCcm93c2VyKCkmJmlzQXJyYXlTdXBwb3J0ZWQoKSYmaXNGdW5jdGlvblN1cHBvcnRlZCgpJiZpc09iamVjdFN1cHBvcnRlZCgpJiZpc0pTT05TdXBwb3J0ZWQoKSYmaXNXb3JrZXJTdXBwb3J0ZWQoKSYmaXNVaW50OENsYW1wZWRBcnJheVN1cHBvcnRlZCgpJiZpc1dlYkdMU3VwcG9ydGVkQ2FjaGVkKGUmJmUuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpfWZ1bmN0aW9uIGlzQnJvd3Nlcigpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudH1mdW5jdGlvbiBpc0FycmF5U3VwcG9ydGVkKCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZSYmQXJyYXkucHJvdG90eXBlLmV2ZXJ5JiZBcnJheS5wcm90b3R5cGUuZmlsdGVyJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaCYmQXJyYXkucHJvdG90eXBlLmluZGV4T2YmJkFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZiYmQXJyYXkucHJvdG90eXBlLm1hcCYmQXJyYXkucHJvdG90eXBlLnNvbWUmJkFycmF5LnByb3RvdHlwZS5yZWR1Y2UmJkFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodCYmQXJyYXkuaXNBcnJheX1mdW5jdGlvbiBpc0Z1bmN0aW9uU3VwcG9ydGVkKCl7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZSYmRnVuY3Rpb24ucHJvdG90eXBlLmJpbmR9ZnVuY3Rpb24gaXNPYmplY3RTdXBwb3J0ZWQoKXtyZXR1cm4gT2JqZWN0LmtleXMmJk9iamVjdC5jcmVhdGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZiYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMmJk9iamVjdC5pc1NlYWxlZCYmT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNFeHRlbnNpYmxlJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJiZPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzJiZPYmplY3Quc2VhbCYmT2JqZWN0LmZyZWV6ZSYmT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zfWZ1bmN0aW9uIGlzSlNPTlN1cHBvcnRlZCgpe3JldHVyblwiSlNPTlwiaW4gd2luZG93JiZcInBhcnNlXCJpbiBKU09OJiZcInN0cmluZ2lmeVwiaW4gSlNPTn1mdW5jdGlvbiBpc1dvcmtlclN1cHBvcnRlZCgpe3JldHVyblwiV29ya2VyXCJpbiB3aW5kb3d9ZnVuY3Rpb24gaXNVaW50OENsYW1wZWRBcnJheVN1cHBvcnRlZCgpe3JldHVyblwiVWludDhDbGFtcGVkQXJyYXlcImluIHdpbmRvd31mdW5jdGlvbiBpc1dlYkdMU3VwcG9ydGVkQ2FjaGVkKGUpe3JldHVybiB2b2lkIDA9PT1pc1dlYkdMU3VwcG9ydGVkQ2FjaGVbZV0mJihpc1dlYkdMU3VwcG9ydGVkQ2FjaGVbZV09aXNXZWJHTFN1cHBvcnRlZChlKSksaXNXZWJHTFN1cHBvcnRlZENhY2hlW2VdfWZ1bmN0aW9uIGlzV2ViR0xTdXBwb3J0ZWQoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSxyPU9iamVjdC5jcmVhdGUoaXNTdXBwb3J0ZWQud2ViR0xDb250ZXh0QXR0cmlidXRlcyk7cmV0dXJuIHIuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdD1lLHQucHJvYmFibHlTdXBwb3J0c0NvbnRleHQ/dC5wcm9iYWJseVN1cHBvcnRzQ29udGV4dChcIndlYmdsXCIscil8fHQucHJvYmFibHlTdXBwb3J0c0NvbnRleHQoXCJleHBlcmltZW50YWwtd2ViZ2xcIixyKTp0LnN1cHBvcnRzQ29udGV4dD90LnN1cHBvcnRzQ29udGV4dChcIndlYmdsXCIscil8fHQuc3VwcG9ydHNDb250ZXh0KFwiZXhwZXJpbWVudGFsLXdlYmdsXCIscik6dC5nZXRDb250ZXh0KFwid2ViZ2xcIixyKXx8dC5nZXRDb250ZXh0KFwiZXhwZXJpbWVudGFsLXdlYmdsXCIscil9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9aXNTdXBwb3J0ZWQ6d2luZG93JiYod2luZG93Lm1hcGJveGdsPXdpbmRvdy5tYXBib3hnbHx8e30sd2luZG93Lm1hcGJveGdsLnN1cHBvcnRlZD1pc1N1cHBvcnRlZCk7dmFyIGlzV2ViR0xTdXBwb3J0ZWRDYWNoZT17fTtpc1N1cHBvcnRlZC53ZWJHTENvbnRleHRBdHRyaWJ1dGVzPXthbnRpYWxpYXM6ITEsYWxwaGE6ITAsc3RlbmNpbDohMCxkZXB0aDohMH07XG59LHt9XSwyOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBQYmYodCl7dGhpcy5idWY9QXJyYXlCdWZmZXIuaXNWaWV3JiZBcnJheUJ1ZmZlci5pc1ZpZXcodCk/dDpuZXcgVWludDhBcnJheSh0fHwwKSx0aGlzLnBvcz0wLHRoaXMudHlwZT0wLHRoaXMubGVuZ3RoPXRoaXMuYnVmLmxlbmd0aH1mdW5jdGlvbiByZWFkVmFyaW50UmVtYWluZGVyKHQsaSxlKXt2YXIgcixzLG49ZS5idWY7aWYocz1uW2UucG9zKytdLHI9KDExMiZzKT4+NCxzPDEyOClyZXR1cm4gdG9OdW0odCxyLGkpO2lmKHM9bltlLnBvcysrXSxyfD0oMTI3JnMpPDwzLHM8MTI4KXJldHVybiB0b051bSh0LHIsaSk7aWYocz1uW2UucG9zKytdLHJ8PSgxMjcmcyk8PDEwLHM8MTI4KXJldHVybiB0b051bSh0LHIsaSk7aWYocz1uW2UucG9zKytdLHJ8PSgxMjcmcyk8PDE3LHM8MTI4KXJldHVybiB0b051bSh0LHIsaSk7aWYocz1uW2UucG9zKytdLHJ8PSgxMjcmcyk8PDI0LHM8MTI4KXJldHVybiB0b051bSh0LHIsaSk7aWYocz1uW2UucG9zKytdLHJ8PSgxJnMpPDwzMSxzPDEyOClyZXR1cm4gdG9OdW0odCxyLGkpO3Rocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHZhcmludCBub3QgbW9yZSB0aGFuIDEwIGJ5dGVzXCIpfWZ1bmN0aW9uIHJlYWRQYWNrZWRFbmQodCl7cmV0dXJuIHQudHlwZT09PVBiZi5CeXRlcz90LnJlYWRWYXJpbnQoKSt0LnBvczp0LnBvcysxfWZ1bmN0aW9uIHRvTnVtKHQsaSxlKXtyZXR1cm4gZT80Mjk0OTY3Mjk2KmkrKHQ+Pj4wKTo0Mjk0OTY3Mjk2KihpPj4+MCkrKHQ+Pj4wKX1mdW5jdGlvbiB3cml0ZUJpZ1ZhcmludCh0LGkpe3ZhciBlLHI7aWYodD49MD8oZT10JTQyOTQ5NjcyOTZ8MCxyPXQvNDI5NDk2NzI5NnwwKTooZT1+KC10JTQyOTQ5NjcyOTYpLHI9figtdC80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1XmU/ZT1lKzF8MDooZT0wLHI9cisxfDApKSx0Pj0weDEwMDAwMDAwMDAwMDAwMDAwfHx0PC0weDEwMDAwMDAwMDAwMDAwMDAwKXRocm93IG5ldyBFcnJvcihcIkdpdmVuIHZhcmludCBkb2Vzbid0IGZpdCBpbnRvIDEwIGJ5dGVzXCIpO2kucmVhbGxvYygxMCksd3JpdGVCaWdWYXJpbnRMb3coZSxyLGkpLHdyaXRlQmlnVmFyaW50SGlnaChyLGkpfWZ1bmN0aW9uIHdyaXRlQmlnVmFyaW50TG93KHQsaSxlKXtlLmJ1ZltlLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03LGUuYnVmW2UucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsZS5idWZbZS5wb3MrK109MTI3JnR8MTI4LHQ+Pj49NyxlLmJ1ZltlLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03LGUuYnVmW2UucG9zXT0xMjcmdH1mdW5jdGlvbiB3cml0ZUJpZ1ZhcmludEhpZ2godCxpKXt2YXIgZT0oNyZ0KTw8NDtpLmJ1ZltpLnBvcysrXXw9ZXwoKHQ+Pj49Myk/MTI4OjApLHQmJihpLmJ1ZltpLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihpLmJ1ZltpLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihpLmJ1ZltpLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihpLmJ1ZltpLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihpLmJ1ZltpLnBvcysrXT0xMjcmdCkpKSkpfWZ1bmN0aW9uIG1ha2VSb29tRm9yRXh0cmFMZW5ndGgodCxpLGUpe3ZhciByPWk8PTE2MzgzPzE6aTw9MjA5NzE1MT8yOmk8PTI2ODQzNTQ1NT8zOk1hdGguY2VpbChNYXRoLmxvZyhpKS8oNypNYXRoLkxOMikpO2UucmVhbGxvYyhyKTtmb3IodmFyIHM9ZS5wb3MtMTtzPj10O3MtLSllLmJ1ZltzK3JdPWUuYnVmW3NdfWZ1bmN0aW9uIHdyaXRlUGFja2VkVmFyaW50KHQsaSl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaS53cml0ZVZhcmludCh0W2VdKX1mdW5jdGlvbiB3cml0ZVBhY2tlZFNWYXJpbnQodCxpKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpLndyaXRlU1ZhcmludCh0W2VdKX1mdW5jdGlvbiB3cml0ZVBhY2tlZEZsb2F0KHQsaSl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaS53cml0ZUZsb2F0KHRbZV0pfWZ1bmN0aW9uIHdyaXRlUGFja2VkRG91YmxlKHQsaSl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaS53cml0ZURvdWJsZSh0W2VdKX1mdW5jdGlvbiB3cml0ZVBhY2tlZEJvb2xlYW4odCxpKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpLndyaXRlQm9vbGVhbih0W2VdKX1mdW5jdGlvbiB3cml0ZVBhY2tlZEZpeGVkMzIodCxpKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpLndyaXRlRml4ZWQzMih0W2VdKX1mdW5jdGlvbiB3cml0ZVBhY2tlZFNGaXhlZDMyKHQsaSl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaS53cml0ZVNGaXhlZDMyKHRbZV0pfWZ1bmN0aW9uIHdyaXRlUGFja2VkRml4ZWQ2NCh0LGkpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWkud3JpdGVGaXhlZDY0KHRbZV0pfWZ1bmN0aW9uIHdyaXRlUGFja2VkU0ZpeGVkNjQodCxpKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpLndyaXRlU0ZpeGVkNjQodFtlXSl9ZnVuY3Rpb24gcmVhZFVJbnQzMih0LGkpe3JldHVybih0W2ldfHRbaSsxXTw8OHx0W2krMl08PDE2KSsxNjc3NzIxNip0W2krM119ZnVuY3Rpb24gd3JpdGVJbnQzMih0LGksZSl7dFtlXT1pLHRbZSsxXT1pPj4+OCx0W2UrMl09aT4+PjE2LHRbZSszXT1pPj4+MjR9ZnVuY3Rpb24gcmVhZEludDMyKHQsaSl7cmV0dXJuKHRbaV18dFtpKzFdPDw4fHRbaSsyXTw8MTYpKyh0W2krM108PDI0KX1mdW5jdGlvbiByZWFkVXRmOCh0LGksZSl7Zm9yKHZhciByPVwiXCIscz1pO3M8ZTspe3ZhciBuPXRbc10sbz1udWxsLGE9bj4yMzk/NDpuPjIyMz8zOm4+MTkxPzI6MTtpZihzK2E+ZSlicmVhazt2YXIgaCx1LGY7MT09PWE/bjwxMjgmJihvPW4pOjI9PT1hPzEyOD09KDE5MiYoaD10W3MrMV0pKSYmKG89KDMxJm4pPDw2fDYzJmgpPD0xMjcmJihvPW51bGwpOjM9PT1hPyhoPXRbcysxXSx1PXRbcysyXSwxMjg9PSgxOTImaCkmJjEyOD09KDE5MiZ1KSYmKChvPSgxNSZuKTw8MTJ8KDYzJmgpPDw2fDYzJnUpPD0yMDQ3fHxvPj01NTI5NiYmbzw9NTczNDMpJiYobz1udWxsKSk6ND09PWEmJihoPXRbcysxXSx1PXRbcysyXSxmPXRbcyszXSwxMjg9PSgxOTImaCkmJjEyOD09KDE5MiZ1KSYmMTI4PT0oMTkyJmYpJiYoKG89KDE1Jm4pPDwxOHwoNjMmaCk8PDEyfCg2MyZ1KTw8Nnw2MyZmKTw9NjU1MzV8fG8+PTExMTQxMTIpJiYobz1udWxsKSksbnVsbD09PW8/KG89NjU1MzMsYT0xKTpvPjY1NTM1JiYoby09NjU1MzYscis9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4+MTAmMTAyM3w1NTI5Niksbz01NjMyMHwxMDIzJm8pLHIrPVN0cmluZy5mcm9tQ2hhckNvZGUobykscys9YX1yZXR1cm4gcn1mdW5jdGlvbiB3cml0ZVV0ZjgodCxpLGUpe2Zvcih2YXIgcixzLG49MDtuPGkubGVuZ3RoO24rKyl7aWYoKHI9aS5jaGFyQ29kZUF0KG4pKT41NTI5NSYmcjw1NzM0NCl7aWYoIXMpe3I+NTYzMTl8fG4rMT09PWkubGVuZ3RoPyh0W2UrK109MjM5LHRbZSsrXT0xOTEsdFtlKytdPTE4OSk6cz1yO2NvbnRpbnVlfWlmKHI8NTYzMjApe3RbZSsrXT0yMzksdFtlKytdPTE5MSx0W2UrK109MTg5LHM9cjtjb250aW51ZX1yPXMtNTUyOTY8PDEwfHItNTYzMjB8NjU1MzYscz1udWxsfWVsc2UgcyYmKHRbZSsrXT0yMzksdFtlKytdPTE5MSx0W2UrK109MTg5LHM9bnVsbCk7cjwxMjg/dFtlKytdPXI6KHI8MjA0OD90W2UrK109cj4+NnwxOTI6KHI8NjU1MzY/dFtlKytdPXI+PjEyfDIyNDoodFtlKytdPXI+PjE4fDI0MCx0W2UrK109cj4+MTImNjN8MTI4KSx0W2UrK109cj4+NiY2M3wxMjgpLHRbZSsrXT02MyZyfDEyOCl9cmV0dXJuIGV9bW9kdWxlLmV4cG9ydHM9UGJmO3ZhciBpZWVlNzU0PV9kZXJlcV8oXCJpZWVlNzU0XCIpO1BiZi5WYXJpbnQ9MCxQYmYuRml4ZWQ2ND0xLFBiZi5CeXRlcz0yLFBiZi5GaXhlZDMyPTU7dmFyIFNISUZUX0xFRlRfMzI9NDI5NDk2NzI5NixTSElGVF9SSUdIVF8zMj0xL1NISUZUX0xFRlRfMzI7UGJmLnByb3RvdHlwZT17ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuYnVmPW51bGx9LHJlYWRGaWVsZHM6ZnVuY3Rpb24odCxpLGUpe2ZvcihlPWV8fHRoaXMubGVuZ3RoO3RoaXMucG9zPGU7KXt2YXIgcj10aGlzLnJlYWRWYXJpbnQoKSxzPXI+PjMsbj10aGlzLnBvczt0aGlzLnR5cGU9NyZyLHQocyxpLHRoaXMpLHRoaXMucG9zPT09biYmdGhpcy5za2lwKHIpfXJldHVybiBpfSxyZWFkTWVzc2FnZTpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLnJlYWRGaWVsZHModCxpLHRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zKX0scmVhZEZpeGVkMzI6ZnVuY3Rpb24oKXt2YXIgdD1yZWFkVUludDMyKHRoaXMuYnVmLHRoaXMucG9zKTtyZXR1cm4gdGhpcy5wb3MrPTQsdH0scmVhZFNGaXhlZDMyOmZ1bmN0aW9uKCl7dmFyIHQ9cmVhZEludDMyKHRoaXMuYnVmLHRoaXMucG9zKTtyZXR1cm4gdGhpcy5wb3MrPTQsdH0scmVhZEZpeGVkNjQ6ZnVuY3Rpb24oKXt2YXIgdD1yZWFkVUludDMyKHRoaXMuYnVmLHRoaXMucG9zKStyZWFkVUludDMyKHRoaXMuYnVmLHRoaXMucG9zKzQpKlNISUZUX0xFRlRfMzI7cmV0dXJuIHRoaXMucG9zKz04LHR9LHJlYWRTRml4ZWQ2NDpmdW5jdGlvbigpe3ZhciB0PXJlYWRVSW50MzIodGhpcy5idWYsdGhpcy5wb3MpK3JlYWRJbnQzMih0aGlzLmJ1Zix0aGlzLnBvcys0KSpTSElGVF9MRUZUXzMyO3JldHVybiB0aGlzLnBvcys9OCx0fSxyZWFkRmxvYXQ6ZnVuY3Rpb24oKXt2YXIgdD1pZWVlNzU0LnJlYWQodGhpcy5idWYsdGhpcy5wb3MsITAsMjMsNCk7cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWREb3VibGU6ZnVuY3Rpb24oKXt2YXIgdD1pZWVlNzU0LnJlYWQodGhpcy5idWYsdGhpcy5wb3MsITAsNTIsOCk7cmV0dXJuIHRoaXMucG9zKz04LHR9LHJlYWRWYXJpbnQ6ZnVuY3Rpb24odCl7dmFyIGksZSxyPXRoaXMuYnVmO3JldHVybiBlPXJbdGhpcy5wb3MrK10saT0xMjcmZSxlPDEyOD9pOihlPXJbdGhpcy5wb3MrK10saXw9KDEyNyZlKTw8NyxlPDEyOD9pOihlPXJbdGhpcy5wb3MrK10saXw9KDEyNyZlKTw8MTQsZTwxMjg/aTooZT1yW3RoaXMucG9zKytdLGl8PSgxMjcmZSk8PDIxLGU8MTI4P2k6KGU9clt0aGlzLnBvc10saXw9KDE1JmUpPDwyOCxyZWFkVmFyaW50UmVtYWluZGVyKGksdCx0aGlzKSkpKSl9LHJlYWRWYXJpbnQ2NDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRWYXJpbnQoITApfSxyZWFkU1ZhcmludDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpO3JldHVybiB0JTI9PTE/KHQrMSkvLTI6dC8yfSxyZWFkQm9vbGVhbjpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMucmVhZFZhcmludCgpKX0scmVhZFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zLGk9cmVhZFV0ZjgodGhpcy5idWYsdGhpcy5wb3MsdCk7cmV0dXJuIHRoaXMucG9zPXQsaX0scmVhZEJ5dGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkVmFyaW50KCkrdGhpcy5wb3MsaT10aGlzLmJ1Zi5zdWJhcnJheSh0aGlzLnBvcyx0KTtyZXR1cm4gdGhpcy5wb3M9dCxpfSxyZWFkUGFja2VkVmFyaW50OmZ1bmN0aW9uKHQsaSl7dmFyIGU9cmVhZFBhY2tlZEVuZCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkVmFyaW50KGkpKTtyZXR1cm4gdH0scmVhZFBhY2tlZFNWYXJpbnQ6ZnVuY3Rpb24odCl7dmFyIGk9cmVhZFBhY2tlZEVuZCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxpOyl0LnB1c2godGhpcy5yZWFkU1ZhcmludCgpKTtyZXR1cm4gdH0scmVhZFBhY2tlZEJvb2xlYW46ZnVuY3Rpb24odCl7dmFyIGk9cmVhZFBhY2tlZEVuZCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxpOyl0LnB1c2godGhpcy5yZWFkQm9vbGVhbigpKTtyZXR1cm4gdH0scmVhZFBhY2tlZEZsb2F0OmZ1bmN0aW9uKHQpe3ZhciBpPXJlYWRQYWNrZWRFbmQodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8aTspdC5wdXNoKHRoaXMucmVhZEZsb2F0KCkpO3JldHVybiB0fSxyZWFkUGFja2VkRG91YmxlOmZ1bmN0aW9uKHQpe3ZhciBpPXJlYWRQYWNrZWRFbmQodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8aTspdC5wdXNoKHRoaXMucmVhZERvdWJsZSgpKTtyZXR1cm4gdH0scmVhZFBhY2tlZEZpeGVkMzI6ZnVuY3Rpb24odCl7dmFyIGk9cmVhZFBhY2tlZEVuZCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxpOyl0LnB1c2godGhpcy5yZWFkRml4ZWQzMigpKTtyZXR1cm4gdH0scmVhZFBhY2tlZFNGaXhlZDMyOmZ1bmN0aW9uKHQpe3ZhciBpPXJlYWRQYWNrZWRFbmQodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8aTspdC5wdXNoKHRoaXMucmVhZFNGaXhlZDMyKCkpO3JldHVybiB0fSxyZWFkUGFja2VkRml4ZWQ2NDpmdW5jdGlvbih0KXt2YXIgaT1yZWFkUGFja2VkRW5kKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGk7KXQucHVzaCh0aGlzLnJlYWRGaXhlZDY0KCkpO3JldHVybiB0fSxyZWFkUGFja2VkU0ZpeGVkNjQ6ZnVuY3Rpb24odCl7dmFyIGk9cmVhZFBhY2tlZEVuZCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxpOyl0LnB1c2godGhpcy5yZWFkU0ZpeGVkNjQoKSk7cmV0dXJuIHR9LHNraXA6ZnVuY3Rpb24odCl7dmFyIGk9NyZ0O2lmKGk9PT1QYmYuVmFyaW50KWZvcig7dGhpcy5idWZbdGhpcy5wb3MrK10+MTI3Oyk7ZWxzZSBpZihpPT09UGJmLkJ5dGVzKXRoaXMucG9zPXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zO2Vsc2UgaWYoaT09PVBiZi5GaXhlZDMyKXRoaXMucG9zKz00O2Vsc2V7aWYoaSE9PVBiZi5GaXhlZDY0KXRocm93IG5ldyBFcnJvcihcIlVuaW1wbGVtZW50ZWQgdHlwZTogXCIraSk7dGhpcy5wb3MrPTh9fSx3cml0ZVRhZzpmdW5jdGlvbih0LGkpe3RoaXMud3JpdGVWYXJpbnQodDw8M3xpKX0scmVhbGxvYzpmdW5jdGlvbih0KXtmb3IodmFyIGk9dGhpcy5sZW5ndGh8fDE2O2k8dGhpcy5wb3MrdDspaSo9MjtpZihpIT09dGhpcy5sZW5ndGgpe3ZhciBlPW5ldyBVaW50OEFycmF5KGkpO2Uuc2V0KHRoaXMuYnVmKSx0aGlzLmJ1Zj1lLHRoaXMubGVuZ3RoPWl9fSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGg9dGhpcy5wb3MsdGhpcy5wb3M9MCx0aGlzLmJ1Zi5zdWJhcnJheSgwLHRoaXMubGVuZ3RoKX0sd3JpdGVGaXhlZDMyOmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg0KSx3cml0ZUludDMyKHRoaXMuYnVmLHQsdGhpcy5wb3MpLHRoaXMucG9zKz00fSx3cml0ZVNGaXhlZDMyOmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg0KSx3cml0ZUludDMyKHRoaXMuYnVmLHQsdGhpcy5wb3MpLHRoaXMucG9zKz00fSx3cml0ZUZpeGVkNjQ6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLHdyaXRlSW50MzIodGhpcy5idWYsLTEmdCx0aGlzLnBvcyksd3JpdGVJbnQzMih0aGlzLmJ1ZixNYXRoLmZsb29yKHQqU0hJRlRfUklHSFRfMzIpLHRoaXMucG9zKzQpLHRoaXMucG9zKz04fSx3cml0ZVNGaXhlZDY0OmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg4KSx3cml0ZUludDMyKHRoaXMuYnVmLC0xJnQsdGhpcy5wb3MpLHdyaXRlSW50MzIodGhpcy5idWYsTWF0aC5mbG9vcih0KlNISUZUX1JJR0hUXzMyKSx0aGlzLnBvcys0KSx0aGlzLnBvcys9OH0sd3JpdGVWYXJpbnQ6ZnVuY3Rpb24odCl7aWYoKHQ9K3R8fDApPjI2ODQzNTQ1NXx8dDwwKXJldHVybiB2b2lkIHdyaXRlQmlnVmFyaW50KHQsdGhpcyk7dGhpcy5yZWFsbG9jKDQpLHRoaXMuYnVmW3RoaXMucG9zKytdPTEyNyZ0fCh0PjEyNz8xMjg6MCksdDw9MTI3fHwodGhpcy5idWZbdGhpcy5wb3MrK109MTI3Jih0Pj4+PTcpfCh0PjEyNz8xMjg6MCksdDw9MTI3fHwodGhpcy5idWZbdGhpcy5wb3MrK109MTI3Jih0Pj4+PTcpfCh0PjEyNz8xMjg6MCksdDw9MTI3fHwodGhpcy5idWZbdGhpcy5wb3MrK109dD4+PjcmMTI3KSkpfSx3cml0ZVNWYXJpbnQ6ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludCh0PDA/MiotdC0xOjIqdCl9LHdyaXRlQm9vbGVhbjpmdW5jdGlvbih0KXt0aGlzLndyaXRlVmFyaW50KEJvb2xlYW4odCkpfSx3cml0ZVN0cmluZzpmdW5jdGlvbih0KXt0PVN0cmluZyh0KSx0aGlzLnJlYWxsb2MoNCp0Lmxlbmd0aCksdGhpcy5wb3MrKzt2YXIgaT10aGlzLnBvczt0aGlzLnBvcz13cml0ZVV0ZjgodGhpcy5idWYsdCx0aGlzLnBvcyk7dmFyIGU9dGhpcy5wb3MtaTtlPj0xMjgmJm1ha2VSb29tRm9yRXh0cmFMZW5ndGgoaSxlLHRoaXMpLHRoaXMucG9zPWktMSx0aGlzLndyaXRlVmFyaW50KGUpLHRoaXMucG9zKz1lfSx3cml0ZUZsb2F0OmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg0KSxpZWVlNzU0LndyaXRlKHRoaXMuYnVmLHQsdGhpcy5wb3MsITAsMjMsNCksdGhpcy5wb3MrPTR9LHdyaXRlRG91YmxlOmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg4KSxpZWVlNzU0LndyaXRlKHRoaXMuYnVmLHQsdGhpcy5wb3MsITAsNTIsOCksdGhpcy5wb3MrPTh9LHdyaXRlQnl0ZXM6ZnVuY3Rpb24odCl7dmFyIGk9dC5sZW5ndGg7dGhpcy53cml0ZVZhcmludChpKSx0aGlzLnJlYWxsb2MoaSk7Zm9yKHZhciBlPTA7ZTxpO2UrKyl0aGlzLmJ1Zlt0aGlzLnBvcysrXT10W2VdfSx3cml0ZVJhd01lc3NhZ2U6ZnVuY3Rpb24odCxpKXt0aGlzLnBvcysrO3ZhciBlPXRoaXMucG9zO3QoaSx0aGlzKTt2YXIgcj10aGlzLnBvcy1lO3I+PTEyOCYmbWFrZVJvb21Gb3JFeHRyYUxlbmd0aChlLHIsdGhpcyksdGhpcy5wb3M9ZS0xLHRoaXMud3JpdGVWYXJpbnQociksdGhpcy5wb3MrPXJ9LHdyaXRlTWVzc2FnZTpmdW5jdGlvbih0LGksZSl7dGhpcy53cml0ZVRhZyh0LFBiZi5CeXRlcyksdGhpcy53cml0ZVJhd01lc3NhZ2UoaSxlKX0sd3JpdGVQYWNrZWRWYXJpbnQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlTWVzc2FnZSh0LHdyaXRlUGFja2VkVmFyaW50LGkpfSx3cml0ZVBhY2tlZFNWYXJpbnQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlTWVzc2FnZSh0LHdyaXRlUGFja2VkU1ZhcmludCxpKX0sd3JpdGVQYWNrZWRCb29sZWFuOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZU1lc3NhZ2UodCx3cml0ZVBhY2tlZEJvb2xlYW4saSl9LHdyaXRlUGFja2VkRmxvYXQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlTWVzc2FnZSh0LHdyaXRlUGFja2VkRmxvYXQsaSl9LHdyaXRlUGFja2VkRG91YmxlOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZU1lc3NhZ2UodCx3cml0ZVBhY2tlZERvdWJsZSxpKX0sd3JpdGVQYWNrZWRGaXhlZDMyOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZU1lc3NhZ2UodCx3cml0ZVBhY2tlZEZpeGVkMzIsaSl9LHdyaXRlUGFja2VkU0ZpeGVkMzI6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlTWVzc2FnZSh0LHdyaXRlUGFja2VkU0ZpeGVkMzIsaSl9LHdyaXRlUGFja2VkRml4ZWQ2NDpmdW5jdGlvbih0LGkpe3RoaXMud3JpdGVNZXNzYWdlKHQsd3JpdGVQYWNrZWRGaXhlZDY0LGkpfSx3cml0ZVBhY2tlZFNGaXhlZDY0OmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZU1lc3NhZ2UodCx3cml0ZVBhY2tlZFNGaXhlZDY0LGkpfSx3cml0ZUJ5dGVzRmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVGFnKHQsUGJmLkJ5dGVzKSx0aGlzLndyaXRlQnl0ZXMoaSl9LHdyaXRlRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZVRhZyh0LFBiZi5GaXhlZDMyKSx0aGlzLndyaXRlRml4ZWQzMihpKX0sd3JpdGVTRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZVRhZyh0LFBiZi5GaXhlZDMyKSx0aGlzLndyaXRlU0ZpeGVkMzIoaSl9LHdyaXRlRml4ZWQ2NEZpZWxkOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZVRhZyh0LFBiZi5GaXhlZDY0KSx0aGlzLndyaXRlRml4ZWQ2NChpKX0sd3JpdGVTRml4ZWQ2NEZpZWxkOmZ1bmN0aW9uKHQsaSl7dGhpcy53cml0ZVRhZyh0LFBiZi5GaXhlZDY0KSx0aGlzLndyaXRlU0ZpeGVkNjQoaSl9LHdyaXRlVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVGFnKHQsUGJmLlZhcmludCksdGhpcy53cml0ZVZhcmludChpKX0sd3JpdGVTVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVGFnKHQsUGJmLlZhcmludCksdGhpcy53cml0ZVNWYXJpbnQoaSl9LHdyaXRlU3RyaW5nRmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVGFnKHQsUGJmLkJ5dGVzKSx0aGlzLndyaXRlU3RyaW5nKGkpfSx3cml0ZUZsb2F0RmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVGFnKHQsUGJmLkZpeGVkMzIpLHRoaXMud3JpdGVGbG9hdChpKX0sd3JpdGVEb3VibGVGaWVsZDpmdW5jdGlvbih0LGkpe3RoaXMud3JpdGVUYWcodCxQYmYuRml4ZWQ2NCksdGhpcy53cml0ZURvdWJsZShpKX0sd3JpdGVCb29sZWFuRmllbGQ6ZnVuY3Rpb24odCxpKXt0aGlzLndyaXRlVmFyaW50RmllbGQodCxCb29sZWFuKGkpKX19O1xufSx7XCJpZWVlNzU0XCI6MjN9XSwzMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIHJ1blRpbWVvdXQoZSl7aWYoY2FjaGVkU2V0VGltZW91dD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoY2FjaGVkU2V0VGltZW91dD09PWRlZmF1bHRTZXRUaW1vdXR8fCFjYWNoZWRTZXRUaW1lb3V0KSYmc2V0VGltZW91dClyZXR1cm4gY2FjaGVkU2V0VGltZW91dD1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLGUsMCl9fX1mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQoZSl7aWYoY2FjaGVkQ2xlYXJUaW1lb3V0PT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKGNhY2hlZENsZWFyVGltZW91dD09PWRlZmF1bHRDbGVhclRpbWVvdXR8fCFjYWNoZWRDbGVhclRpbWVvdXQpJiZjbGVhclRpbWVvdXQpcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dD1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtyZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcyxlKX19fWZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpe2RyYWluaW5nJiZjdXJyZW50UXVldWUmJihkcmFpbmluZz0hMSxjdXJyZW50UXVldWUubGVuZ3RoP3F1ZXVlPWN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpOnF1ZXVlSW5kZXg9LTEscXVldWUubGVuZ3RoJiZkcmFpblF1ZXVlKCkpfWZ1bmN0aW9uIGRyYWluUXVldWUoKXtpZighZHJhaW5pbmcpe3ZhciBlPXJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtkcmFpbmluZz0hMDtmb3IodmFyIHQ9cXVldWUubGVuZ3RoO3Q7KXtmb3IoY3VycmVudFF1ZXVlPXF1ZXVlLHF1ZXVlPVtdOysrcXVldWVJbmRleDx0OyljdXJyZW50UXVldWUmJmN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtxdWV1ZUluZGV4PS0xLHQ9cXVldWUubGVuZ3RofWN1cnJlbnRRdWV1ZT1udWxsLGRyYWluaW5nPSExLHJ1bkNsZWFyVGltZW91dChlKX19ZnVuY3Rpb24gSXRlbShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIG5vb3AoKXt9dmFyIHByb2Nlc3M9bW9kdWxlLmV4cG9ydHM9e30sY2FjaGVkU2V0VGltZW91dCxjYWNoZWRDbGVhclRpbWVvdXQ7IWZ1bmN0aW9uKCl7dHJ5e2NhY2hlZFNldFRpbWVvdXQ9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OmRlZmF1bHRTZXRUaW1vdXR9Y2F0Y2goZSl7Y2FjaGVkU2V0VGltZW91dD1kZWZhdWx0U2V0VGltb3V0fXRyeXtjYWNoZWRDbGVhclRpbWVvdXQ9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpkZWZhdWx0Q2xlYXJUaW1lb3V0fWNhdGNoKGUpe2NhY2hlZENsZWFyVGltZW91dD1kZWZhdWx0Q2xlYXJUaW1lb3V0fX0oKTt2YXIgcXVldWU9W10sZHJhaW5pbmc9ITEsY3VycmVudFF1ZXVlLHF1ZXVlSW5kZXg9LTE7cHJvY2Vzcy5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3F1ZXVlLnB1c2gobmV3IEl0ZW0oZSx0KSksMSE9PXF1ZXVlLmxlbmd0aHx8ZHJhaW5pbmd8fHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSl9LEl0ZW0ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHByb2Nlc3MudGl0bGU9XCJicm93c2VyXCIscHJvY2Vzcy5icm93c2VyPSEwLHByb2Nlc3MuZW52PXt9LHByb2Nlc3MuYXJndj1bXSxwcm9jZXNzLnZlcnNpb249XCJcIixwcm9jZXNzLnZlcnNpb25zPXt9LHByb2Nlc3Mub249bm9vcCxwcm9jZXNzLmFkZExpc3RlbmVyPW5vb3AscHJvY2Vzcy5vbmNlPW5vb3AscHJvY2Vzcy5vZmY9bm9vcCxwcm9jZXNzLnJlbW92ZUxpc3RlbmVyPW5vb3AscHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnM9bm9vcCxwcm9jZXNzLmVtaXQ9bm9vcCxwcm9jZXNzLnByZXBlbmRMaXN0ZW5lcj1ub29wLHByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lcj1ub29wLHByb2Nlc3MubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxwcm9jZXNzLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LHByb2Nlc3MuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LHByb2Nlc3MuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxwcm9jZXNzLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O1xufSx7fV0sMzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcGFydGlhbFNvcnQoYSx0LHIsbyxwKXtmb3Iocj1yfHwwLG89b3x8YS5sZW5ndGgtMSxwPXB8fGRlZmF1bHRDb21wYXJlO28+cjspe2lmKG8tcj42MDApe3ZhciBmPW8tcisxLGU9dC1yKzEsbD1NYXRoLmxvZyhmKSxzPS41Kk1hdGguZXhwKDIqbC8zKSxpPS41Kk1hdGguc3FydChsKnMqKGYtcykvZikqKGUtZi8yPDA/LTE6MSk7cGFydGlhbFNvcnQoYSx0LE1hdGgubWF4KHIsTWF0aC5mbG9vcih0LWUqcy9mK2kpKSxNYXRoLm1pbihvLE1hdGguZmxvb3IodCsoZi1lKSpzL2YraSkpLHApfXZhciBuPWFbdF0saD1yLHU9bztmb3Ioc3dhcChhLHIsdCkscChhW29dLG4pPjAmJnN3YXAoYSxyLG8pO2g8dTspe2Zvcihzd2FwKGEsaCx1KSxoKyssdS0tO3AoYVtoXSxuKTwwOyloKys7Zm9yKDtwKGFbdV0sbik+MDspdS0tfTA9PT1wKGFbcl0sbik/c3dhcChhLHIsdSk6KHUrKyxzd2FwKGEsdSxvKSksdTw9dCYmKHI9dSsxKSx0PD11JiYobz11LTEpfX1mdW5jdGlvbiBzd2FwKGEsdCxyKXt2YXIgbz1hW3RdO2FbdF09YVtyXSxhW3JdPW99ZnVuY3Rpb24gZGVmYXVsdENvbXBhcmUoYSx0KXtyZXR1cm4gYTx0Py0xOmE+dD8xOjB9bW9kdWxlLmV4cG9ydHM9cGFydGlhbFNvcnQ7XG59LHt9XSwzMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBzdXBlcmNsdXN0ZXIodCl7cmV0dXJuIG5ldyBTdXBlckNsdXN0ZXIodCl9ZnVuY3Rpb24gU3VwZXJDbHVzdGVyKHQpe3RoaXMub3B0aW9ucz1leHRlbmQoT2JqZWN0LmNyZWF0ZSh0aGlzLm9wdGlvbnMpLHQpLHRoaXMudHJlZXM9bmV3IEFycmF5KHRoaXMub3B0aW9ucy5tYXhab29tKzEpfWZ1bmN0aW9uIGNyZWF0ZUNsdXN0ZXIodCxlLG4sbyxpKXtyZXR1cm57eDp0LHk6ZSx6b29tOjEvMCxpZDpvLHByb3BlcnRpZXM6aSxwYXJlbnRJZDotMSxudW1Qb2ludHM6bn19ZnVuY3Rpb24gY3JlYXRlUG9pbnRDbHVzdGVyKHQsZSl7dmFyIG49dC5nZW9tZXRyeS5jb29yZGluYXRlcztyZXR1cm57eDpsbmdYKG5bMF0pLHk6bGF0WShuWzFdKSx6b29tOjEvMCxpZDplLHBhcmVudElkOi0xfX1mdW5jdGlvbiBnZXRDbHVzdGVySlNPTih0KXtyZXR1cm57dHlwZTpcIkZlYXR1cmVcIixwcm9wZXJ0aWVzOmdldENsdXN0ZXJQcm9wZXJ0aWVzKHQpLGdlb21ldHJ5Ont0eXBlOlwiUG9pbnRcIixjb29yZGluYXRlczpbeExuZyh0LngpLHlMYXQodC55KV19fX1mdW5jdGlvbiBnZXRDbHVzdGVyUHJvcGVydGllcyh0KXt2YXIgZT10Lm51bVBvaW50cyxuPWU+PTFlND9NYXRoLnJvdW5kKGUvMWUzKStcImtcIjplPj0xZTM/TWF0aC5yb3VuZChlLzEwMCkvMTArXCJrXCI6ZTtyZXR1cm4gZXh0ZW5kKGV4dGVuZCh7fSx0LnByb3BlcnRpZXMpLHtjbHVzdGVyOiEwLGNsdXN0ZXJfaWQ6dC5pZCxwb2ludF9jb3VudDplLHBvaW50X2NvdW50X2FiYnJldmlhdGVkOm59KX1mdW5jdGlvbiBsbmdYKHQpe3JldHVybiB0LzM2MCsuNX1mdW5jdGlvbiBsYXRZKHQpe3ZhciBlPU1hdGguc2luKHQqTWF0aC5QSS8xODApLG49LjUtLjI1Kk1hdGgubG9nKCgxK2UpLygxLWUpKS9NYXRoLlBJO3JldHVybiBuPDA/MDpuPjE/MTpufWZ1bmN0aW9uIHhMbmcodCl7cmV0dXJuIDM2MCoodC0uNSl9ZnVuY3Rpb24geUxhdCh0KXt2YXIgZT0oMTgwLTM2MCp0KSpNYXRoLlBJLzE4MDtyZXR1cm4gMzYwKk1hdGguYXRhbihNYXRoLmV4cChlKSkvTWF0aC5QSS05MH1mdW5jdGlvbiBleHRlbmQodCxlKXtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0WCh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIGdldFkodCl7cmV0dXJuIHQueX12YXIga2RidXNoPV9kZXJlcV8oXCJrZGJ1c2hcIik7bW9kdWxlLmV4cG9ydHM9c3VwZXJjbHVzdGVyLFN1cGVyQ2x1c3Rlci5wcm90b3R5cGU9e29wdGlvbnM6e21pblpvb206MCxtYXhab29tOjE2LHJhZGl1czo0MCxleHRlbnQ6NTEyLG5vZGVTaXplOjY0LGxvZzohMSxyZWR1Y2U6bnVsbCxpbml0aWFsOmZ1bmN0aW9uKCl7cmV0dXJue319LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LGxvYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLmxvZztlJiZjb25zb2xlLnRpbWUoXCJ0b3RhbCB0aW1lXCIpO3ZhciBuPVwicHJlcGFyZSBcIit0Lmxlbmd0aCtcIiBwb2ludHNcIjtlJiZjb25zb2xlLnRpbWUobiksdGhpcy5wb2ludHM9dDt2YXIgbz10Lm1hcChjcmVhdGVQb2ludENsdXN0ZXIpO2UmJmNvbnNvbGUudGltZUVuZChuKTtmb3IodmFyIGk9dGhpcy5vcHRpb25zLm1heFpvb207aT49dGhpcy5vcHRpb25zLm1pblpvb207aS0tKXt2YXIgcj0rRGF0ZS5ub3coKTt0aGlzLnRyZWVzW2krMV09a2RidXNoKG8sZ2V0WCxnZXRZLHRoaXMub3B0aW9ucy5ub2RlU2l6ZSxGbG9hdDMyQXJyYXkpLG89dGhpcy5fY2x1c3RlcihvLGkpLGUmJmNvbnNvbGUubG9nKFwieiVkOiAlZCBjbHVzdGVycyBpbiAlZG1zXCIsaSxvLmxlbmd0aCwrRGF0ZS5ub3coKS1yKX1yZXR1cm4gdGhpcy50cmVlc1t0aGlzLm9wdGlvbnMubWluWm9vbV09a2RidXNoKG8sZ2V0WCxnZXRZLHRoaXMub3B0aW9ucy5ub2RlU2l6ZSxGbG9hdDMyQXJyYXkpLGUmJmNvbnNvbGUudGltZUVuZChcInRvdGFsIHRpbWVcIiksdGhpc30sZ2V0Q2x1c3RlcnM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cmVlc1t0aGlzLl9saW1pdFpvb20oZSldLG89bi5yYW5nZShsbmdYKHRbMF0pLGxhdFkodFszXSksbG5nWCh0WzJdKSxsYXRZKHRbMV0pKSxpPVtdLHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIHM9bi5wb2ludHNbb1tyXV07aS5wdXNoKHMubnVtUG9pbnRzP2dldENsdXN0ZXJKU09OKHMpOnRoaXMucG9pbnRzW3MuaWRdKX1yZXR1cm4gaX0sZ2V0Q2hpbGRyZW46ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cmVlc1tlKzFdLnBvaW50c1t0XSxvPXRoaXMub3B0aW9ucy5yYWRpdXMvKHRoaXMub3B0aW9ucy5leHRlbnQqTWF0aC5wb3coMixlKSksaT10aGlzLnRyZWVzW2UrMV0ud2l0aGluKG4ueCxuLnksbykscj1bXSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciB1PXRoaXMudHJlZXNbZSsxXS5wb2ludHNbaVtzXV07dS5wYXJlbnRJZD09PXQmJnIucHVzaCh1Lm51bVBvaW50cz9nZXRDbHVzdGVySlNPTih1KTp0aGlzLnBvaW50c1t1LmlkXSl9cmV0dXJuIHJ9LGdldExlYXZlczpmdW5jdGlvbih0LGUsbixvKXtuPW58fDEwLG89b3x8MDt2YXIgaT1bXTtyZXR1cm4gdGhpcy5fYXBwZW5kTGVhdmVzKGksdCxlLG4sbywwKSxpfSxnZXRUaWxlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz10aGlzLnRyZWVzW3RoaXMuX2xpbWl0Wm9vbSh0KV0saT1NYXRoLnBvdygyLHQpLHI9dGhpcy5vcHRpb25zLmV4dGVudCxzPXRoaXMub3B0aW9ucy5yYWRpdXMsdT1zL3IsYT0obi11KS9pLHA9KG4rMSt1KS9pLGg9e2ZlYXR1cmVzOltdfTtyZXR1cm4gdGhpcy5fYWRkVGlsZUZlYXR1cmVzKG8ucmFuZ2UoKGUtdSkvaSxhLChlKzErdSkvaSxwKSxvLnBvaW50cyxlLG4saSxoKSwwPT09ZSYmdGhpcy5fYWRkVGlsZUZlYXR1cmVzKG8ucmFuZ2UoMS11L2ksYSwxLHApLG8ucG9pbnRzLGksbixpLGgpLGU9PT1pLTEmJnRoaXMuX2FkZFRpbGVGZWF0dXJlcyhvLnJhbmdlKDAsYSx1L2kscCksby5wb2ludHMsLTEsbixpLGgpLGguZmVhdHVyZXMubGVuZ3RoP2g6bnVsbH0sZ2V0Q2x1c3RlckV4cGFuc2lvblpvb206ZnVuY3Rpb24odCxlKXtmb3IoO2U8dGhpcy5vcHRpb25zLm1heFpvb207KXt2YXIgbj10aGlzLmdldENoaWxkcmVuKHQsZSk7aWYoZSsrLDEhPT1uLmxlbmd0aClicmVhazt0PW5bMF0ucHJvcGVydGllcy5jbHVzdGVyX2lkfXJldHVybiBlfSxfYXBwZW5kTGVhdmVzOmZ1bmN0aW9uKHQsZSxuLG8saSxyKXtmb3IodmFyIHM9dGhpcy5nZXRDaGlsZHJlbihlLG4pLHU9MDt1PHMubGVuZ3RoO3UrKyl7dmFyIGE9c1t1XS5wcm9wZXJ0aWVzO2lmKGEuY2x1c3Rlcj9yK2EucG9pbnRfY291bnQ8PWk/cis9YS5wb2ludF9jb3VudDpyPXRoaXMuX2FwcGVuZExlYXZlcyh0LGEuY2x1c3Rlcl9pZCxuKzEsbyxpLHIpOnI8aT9yKys6dC5wdXNoKHNbdV0pLHQubGVuZ3RoPT09bylicmVha31yZXR1cm4gcn0sX2FkZFRpbGVGZWF0dXJlczpmdW5jdGlvbih0LGUsbixvLGkscil7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspe3ZhciB1PWVbdFtzXV07ci5mZWF0dXJlcy5wdXNoKHt0eXBlOjEsZ2VvbWV0cnk6W1tNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5leHRlbnQqKHUueCppLW4pKSxNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5leHRlbnQqKHUueSppLW8pKV1dLHRhZ3M6dS5udW1Qb2ludHM/Z2V0Q2x1c3RlclByb3BlcnRpZXModSk6dGhpcy5wb2ludHNbdS5pZF0ucHJvcGVydGllc30pfX0sX2xpbWl0Wm9vbTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgodGhpcy5vcHRpb25zLm1pblpvb20sTWF0aC5taW4odCx0aGlzLm9wdGlvbnMubWF4Wm9vbSsxKSl9LF9jbHVzdGVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLG89dGhpcy5vcHRpb25zLnJhZGl1cy8odGhpcy5vcHRpb25zLmV4dGVudCpNYXRoLnBvdygyLGUpKSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciByPXRbaV07aWYoIShyLnpvb208PWUpKXtyLnpvb209ZTt2YXIgcz10aGlzLnRyZWVzW2UrMV0sdT1zLndpdGhpbihyLngsci55LG8pLGE9ci5udW1Qb2ludHN8fDEscD1yLngqYSxoPXIueSphLGw9bnVsbDt0aGlzLm9wdGlvbnMucmVkdWNlJiYobD10aGlzLm9wdGlvbnMuaW5pdGlhbCgpLHRoaXMuX2FjY3VtdWxhdGUobCxyKSk7Zm9yKHZhciBjPTA7Yzx1Lmxlbmd0aDtjKyspe3ZhciBkPXMucG9pbnRzW3VbY11dO2lmKGU8ZC56b29tKXt2YXIgbT1kLm51bVBvaW50c3x8MTtkLnpvb209ZSxwKz1kLngqbSxoKz1kLnkqbSxhKz1tLGQucGFyZW50SWQ9aSx0aGlzLm9wdGlvbnMucmVkdWNlJiZ0aGlzLl9hY2N1bXVsYXRlKGwsZCl9fTE9PT1hP24ucHVzaChyKTooci5wYXJlbnRJZD1pLG4ucHVzaChjcmVhdGVDbHVzdGVyKHAvYSxoL2EsYSxpLGwpKSl9fXJldHVybiBufSxfYWNjdW11bGF0ZTpmdW5jdGlvbih0LGUpe3ZhciBuPWUubnVtUG9pbnRzP2UucHJvcGVydGllczp0aGlzLm9wdGlvbnMubWFwKHRoaXMucG9pbnRzW2UuaWRdLnByb3BlcnRpZXMpO3RoaXMub3B0aW9ucy5yZWR1Y2UodCxuKX19O1xufSx7XCJrZGJ1c2hcIjoyNH1dLDMzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIFRpbnlRdWV1ZSh0LGkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFRpbnlRdWV1ZSkpcmV0dXJuIG5ldyBUaW55UXVldWUodCxpKTtpZih0aGlzLmRhdGE9dHx8W10sdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmNvbXBhcmU9aXx8ZGVmYXVsdENvbXBhcmUsdGhpcy5sZW5ndGg+MClmb3IodmFyIGU9dGhpcy5sZW5ndGg+PjE7ZT49MDtlLS0pdGhpcy5fZG93bihlKX1mdW5jdGlvbiBkZWZhdWx0Q29tcGFyZSh0LGkpe3JldHVybiB0PGk/LTE6dD5pPzE6MH1tb2R1bGUuZXhwb3J0cz1UaW55UXVldWUsVGlueVF1ZXVlLnByb3RvdHlwZT17cHVzaDpmdW5jdGlvbih0KXt0aGlzLmRhdGEucHVzaCh0KSx0aGlzLmxlbmd0aCsrLHRoaXMuX3VwKHRoaXMubGVuZ3RoLTEpfSxwb3A6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZGF0YVswXTtyZXR1cm4gdGhpcy5sZW5ndGgtLSx0aGlzLmxlbmd0aD4wJiYodGhpcy5kYXRhWzBdPXRoaXMuZGF0YVt0aGlzLmxlbmd0aF0sdGhpcy5fZG93bigwKSksdGhpcy5kYXRhLnBvcCgpLHR9fSxwZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVswXX0sX3VwOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT10aGlzLmRhdGEsZT10aGlzLmNvbXBhcmUsaD1pW3RdO3Q+MDspe3ZhciBuPXQtMT4+MSxhPWlbbl07aWYoZShoLGEpPj0wKWJyZWFrO2lbdF09YSx0PW59aVt0XT1ofSxfZG93bjpmdW5jdGlvbih0KXtmb3IodmFyIGk9dGhpcy5kYXRhLGU9dGhpcy5jb21wYXJlLGg9dGhpcy5sZW5ndGgsbj1oPj4xLGE9aVt0XTt0PG47KXt2YXIgcz0xKyh0PDwxKSx1PXMrMSxyPWlbc107aWYodTxoJiZlKGlbdV0scik8MCYmKHM9dSxyPWlbdV0pLGUocixhKT49MClicmVhaztpW3RdPXIsdD1zfWlbdF09YX19O1xufSx7fV0sMzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Quc3VwZXJfPWUsdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9Om1vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dC5zdXBlcl89ZTt2YXIgbz1mdW5jdGlvbigpe307by5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IG8sdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dH07XG59LHt9XSwzNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gbyYmXCJvYmplY3RcIj09dHlwZW9mIG8mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG8uY29weSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygby5maWxsJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLnJlYWRVSW50OH07XG59LHt9XSwzNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKHByb2Nlc3MsZ2xvYmFsKXtcbmZ1bmN0aW9uIGluc3BlY3QoZSxyKXt2YXIgdD17c2VlbjpbXSxzdHlsaXplOnN0eWxpemVOb0NvbG9yfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKHQuZGVwdGg9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPj00JiYodC5jb2xvcnM9YXJndW1lbnRzWzNdKSxpc0Jvb2xlYW4ocik/dC5zaG93SGlkZGVuPXI6ciYmZXhwb3J0cy5fZXh0ZW5kKHQsciksaXNVbmRlZmluZWQodC5zaG93SGlkZGVuKSYmKHQuc2hvd0hpZGRlbj0hMSksaXNVbmRlZmluZWQodC5kZXB0aCkmJih0LmRlcHRoPTIpLGlzVW5kZWZpbmVkKHQuY29sb3JzKSYmKHQuY29sb3JzPSExKSxpc1VuZGVmaW5lZCh0LmN1c3RvbUluc3BlY3QpJiYodC5jdXN0b21JbnNwZWN0PSEwKSx0LmNvbG9ycyYmKHQuc3R5bGl6ZT1zdHlsaXplV2l0aENvbG9yKSxmb3JtYXRWYWx1ZSh0LGUsdC5kZXB0aCl9ZnVuY3Rpb24gc3R5bGl6ZVdpdGhDb2xvcihlLHIpe3ZhciB0PWluc3BlY3Quc3R5bGVzW3JdO3JldHVybiB0P1wiXHUwMDFiW1wiK2luc3BlY3QuY29sb3JzW3RdWzBdK1wibVwiK2UrXCJcdTAwMWJbXCIraW5zcGVjdC5jb2xvcnNbdF1bMV0rXCJtXCI6ZX1mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihlLHIpe3JldHVybiBlfWZ1bmN0aW9uIGFycmF5VG9IYXNoKGUpe3ZhciByPXt9O3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtyW2VdPSEwfSkscn1mdW5jdGlvbiBmb3JtYXRWYWx1ZShlLHIsdCl7aWYoZS5jdXN0b21JbnNwZWN0JiZyJiZpc0Z1bmN0aW9uKHIuaW5zcGVjdCkmJnIuaW5zcGVjdCE9PWV4cG9ydHMuaW5zcGVjdCYmKCFyLmNvbnN0cnVjdG9yfHxyLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PXIpKXt2YXIgbj1yLmluc3BlY3QodCxlKTtyZXR1cm4gaXNTdHJpbmcobil8fChuPWZvcm1hdFZhbHVlKGUsbix0KSksbn12YXIgaT1mb3JtYXRQcmltaXRpdmUoZSxyKTtpZihpKXJldHVybiBpO3ZhciBvPU9iamVjdC5rZXlzKHIpLHM9YXJyYXlUb0hhc2gobyk7aWYoZS5zaG93SGlkZGVuJiYobz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKSksaXNFcnJvcihyKSYmKG8uaW5kZXhPZihcIm1lc3NhZ2VcIik+PTB8fG8uaW5kZXhPZihcImRlc2NyaXB0aW9uXCIpPj0wKSlyZXR1cm4gZm9ybWF0RXJyb3Iocik7aWYoMD09PW8ubGVuZ3RoKXtpZihpc0Z1bmN0aW9uKHIpKXt2YXIgdT1yLm5hbWU/XCI6IFwiK3IubmFtZTpcIlwiO3JldHVybiBlLnN0eWxpemUoXCJbRnVuY3Rpb25cIit1K1wiXVwiLFwic3BlY2lhbFwiKX1pZihpc1JlZ0V4cChyKSlyZXR1cm4gZS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcInJlZ2V4cFwiKTtpZihpc0RhdGUocikpcmV0dXJuIGUuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpLFwiZGF0ZVwiKTtpZihpc0Vycm9yKHIpKXJldHVybiBmb3JtYXRFcnJvcihyKX12YXIgYz1cIlwiLGE9ITEsbD1bXCJ7XCIsXCJ9XCJdO2lmKGlzQXJyYXkocikmJihhPSEwLGw9W1wiW1wiLFwiXVwiXSksaXNGdW5jdGlvbihyKSl7Yz1cIiBbRnVuY3Rpb25cIisoci5uYW1lP1wiOiBcIityLm5hbWU6XCJcIikrXCJdXCJ9aWYoaXNSZWdFeHAocikmJihjPVwiIFwiK1JlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSksaXNEYXRlKHIpJiYoYz1cIiBcIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHIpKSxpc0Vycm9yKHIpJiYoYz1cIiBcIitmb3JtYXRFcnJvcihyKSksMD09PW8ubGVuZ3RoJiYoIWF8fDA9PXIubGVuZ3RoKSlyZXR1cm4gbFswXStjK2xbMV07aWYodDwwKXJldHVybiBpc1JlZ0V4cChyKT9lLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpLFwicmVnZXhwXCIpOmUuc3R5bGl6ZShcIltPYmplY3RdXCIsXCJzcGVjaWFsXCIpO2Uuc2Vlbi5wdXNoKHIpO3ZhciBwO3JldHVybiBwPWE/Zm9ybWF0QXJyYXkoZSxyLHQscyxvKTpvLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gZm9ybWF0UHJvcGVydHkoZSxyLHQscyxuLGEpfSksZS5zZWVuLnBvcCgpLHJlZHVjZVRvU2luZ2xlU3RyaW5nKHAsYyxsKX1mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoZSxyKXtpZihpc1VuZGVmaW5lZChyKSlyZXR1cm4gZS5zdHlsaXplKFwidW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIik7aWYoaXNTdHJpbmcocikpe3ZhciB0PVwiJ1wiK0pTT04uc3RyaW5naWZ5KHIpLnJlcGxhY2UoL15cInxcIiQvZyxcIlwiKS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKStcIidcIjtyZXR1cm4gZS5zdHlsaXplKHQsXCJzdHJpbmdcIil9cmV0dXJuIGlzTnVtYmVyKHIpP2Uuc3R5bGl6ZShcIlwiK3IsXCJudW1iZXJcIik6aXNCb29sZWFuKHIpP2Uuc3R5bGl6ZShcIlwiK3IsXCJib29sZWFuXCIpOmlzTnVsbChyKT9lLnN0eWxpemUoXCJudWxsXCIsXCJudWxsXCIpOnZvaWQgMH1mdW5jdGlvbiBmb3JtYXRFcnJvcihlKXtyZXR1cm5cIltcIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKStcIl1cIn1mdW5jdGlvbiBmb3JtYXRBcnJheShlLHIsdCxuLGkpe2Zvcih2YXIgbz1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KytzKWhhc093blByb3BlcnR5KHIsU3RyaW5nKHMpKT9vLnB1c2goZm9ybWF0UHJvcGVydHkoZSxyLHQsbixTdHJpbmcocyksITApKTpvLnB1c2goXCJcIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihpKXtpLm1hdGNoKC9eXFxkKyQvKXx8by5wdXNoKGZvcm1hdFByb3BlcnR5KGUscix0LG4saSwhMCkpfSksb31mdW5jdGlvbiBmb3JtYXRQcm9wZXJ0eShlLHIsdCxuLGksbyl7dmFyIHMsdSxjO2lmKGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGkpfHx7dmFsdWU6cltpXX0sYy5nZXQ/dT1jLnNldD9lLnN0eWxpemUoXCJbR2V0dGVyL1NldHRlcl1cIixcInNwZWNpYWxcIik6ZS5zdHlsaXplKFwiW0dldHRlcl1cIixcInNwZWNpYWxcIik6Yy5zZXQmJih1PWUuc3R5bGl6ZShcIltTZXR0ZXJdXCIsXCJzcGVjaWFsXCIpKSxoYXNPd25Qcm9wZXJ0eShuLGkpfHwocz1cIltcIitpK1wiXVwiKSx1fHwoZS5zZWVuLmluZGV4T2YoYy52YWx1ZSk8MD8odT1pc051bGwodCk/Zm9ybWF0VmFsdWUoZSxjLnZhbHVlLG51bGwpOmZvcm1hdFZhbHVlKGUsYy52YWx1ZSx0LTEpLHUuaW5kZXhPZihcIlxcblwiKT4tMSYmKHU9bz91LnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm5cIiAgXCIrZX0pLmpvaW4oXCJcXG5cIikuc3Vic3RyKDIpOlwiXFxuXCIrdS5zcGxpdChcIlxcblwiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCIgICBcIitlfSkuam9pbihcIlxcblwiKSkpOnU9ZS5zdHlsaXplKFwiW0NpcmN1bGFyXVwiLFwic3BlY2lhbFwiKSksaXNVbmRlZmluZWQocykpe2lmKG8mJmkubWF0Y2goL15cXGQrJC8pKXJldHVybiB1O3M9SlNPTi5zdHJpbmdpZnkoXCJcIitpKSxzLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKT8ocz1zLnN1YnN0cigxLHMubGVuZ3RoLTIpLHM9ZS5zdHlsaXplKHMsXCJuYW1lXCIpKToocz1zLnJlcGxhY2UoLycvZyxcIlxcXFwnXCIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpLnJlcGxhY2UoLyheXCJ8XCIkKS9nLFwiJ1wiKSxzPWUuc3R5bGl6ZShzLFwic3RyaW5nXCIpKX1yZXR1cm4gcytcIjogXCIrdX1mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhlLHIsdCl7dmFyIG49MDtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gbisrLHIuaW5kZXhPZihcIlxcblwiKT49MCYmbisrLGUrci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZyxcIlwiKS5sZW5ndGgrMX0sMCk+NjA/dFswXSsoXCJcIj09PXI/XCJcIjpyK1wiXFxuIFwiKStcIiBcIitlLmpvaW4oXCIsXFxuICBcIikrXCIgXCIrdFsxXTp0WzBdK3IrXCIgXCIrZS5qb2luKFwiLCBcIikrXCIgXCIrdFsxXX1mdW5jdGlvbiBpc0FycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIGlzQm9vbGVhbihlKXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGV9ZnVuY3Rpb24gaXNOdWxsKGUpe3JldHVybiBudWxsPT09ZX1mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiBpc051bWJlcihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX1mdW5jdGlvbiBpc1N0cmluZyhlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX1mdW5jdGlvbiBpc1N5bWJvbChlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZX1mdW5jdGlvbiBpc1VuZGVmaW5lZChlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBpc1JlZ0V4cChlKXtyZXR1cm4gaXNPYmplY3QoZSkmJlwiW29iamVjdCBSZWdFeHBdXCI9PT1vYmplY3RUb1N0cmluZyhlKX1mdW5jdGlvbiBpc09iamVjdChlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWV9ZnVuY3Rpb24gaXNEYXRlKGUpe3JldHVybiBpc09iamVjdChlKSYmXCJbb2JqZWN0IERhdGVdXCI9PT1vYmplY3RUb1N0cmluZyhlKX1mdW5jdGlvbiBpc0Vycm9yKGUpe3JldHVybiBpc09iamVjdChlKSYmKFwiW29iamVjdCBFcnJvcl1cIj09PW9iamVjdFRvU3RyaW5nKGUpfHxlIGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIGlzRnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiBpc1ByaW1pdGl2ZShlKXtyZXR1cm4gbnVsbD09PWV8fFwiYm9vbGVhblwiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGV8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcInN5bWJvbFwiPT10eXBlb2YgZXx8dm9pZCAwPT09ZX1mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIHBhZChlKXtyZXR1cm4gZTwxMD9cIjBcIitlLnRvU3RyaW5nKDEwKTplLnRvU3RyaW5nKDEwKX1mdW5jdGlvbiB0aW1lc3RhbXAoKXt2YXIgZT1uZXcgRGF0ZSxyPVtwYWQoZS5nZXRIb3VycygpKSxwYWQoZS5nZXRNaW51dGVzKCkpLHBhZChlLmdldFNlY29uZHMoKSldLmpvaW4oXCI6XCIpO3JldHVybltlLmdldERhdGUoKSxtb250aHNbZS5nZXRNb250aCgpXSxyXS5qb2luKFwiIFwiKX1mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShlLHIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKX12YXIgZm9ybWF0UmVnRXhwPS8lW3NkaiVdL2c7ZXhwb3J0cy5mb3JtYXQ9ZnVuY3Rpb24oZSl7aWYoIWlzU3RyaW5nKGUpKXtmb3IodmFyIHI9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspci5wdXNoKGluc3BlY3QoYXJndW1lbnRzW3RdKSk7cmV0dXJuIHIuam9pbihcIiBcIil9Zm9yKHZhciB0PTEsbj1hcmd1bWVudHMsaT1uLmxlbmd0aCxvPVN0cmluZyhlKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCxmdW5jdGlvbihlKXtpZihcIiUlXCI9PT1lKXJldHVyblwiJVwiO2lmKHQ+PWkpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2VcIiVzXCI6cmV0dXJuIFN0cmluZyhuW3QrK10pO2Nhc2VcIiVkXCI6cmV0dXJuIE51bWJlcihuW3QrK10pO2Nhc2VcIiVqXCI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShuW3QrK10pfWNhdGNoKGUpe3JldHVyblwiW0NpcmN1bGFyXVwifWRlZmF1bHQ6cmV0dXJuIGV9fSkscz1uW3RdO3Q8aTtzPW5bKyt0XSlpc051bGwocyl8fCFpc09iamVjdChzKT9vKz1cIiBcIitzOm8rPVwiIFwiK2luc3BlY3Qocyk7cmV0dXJuIG99LGV4cG9ydHMuZGVwcmVjYXRlPWZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gdCgpe2lmKCFuKXtpZihwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pdGhyb3cgbmV3IEVycm9yKHIpO3Byb2Nlc3MudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKHIpOmNvbnNvbGUuZXJyb3Iociksbj0hMH1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9aWYoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBleHBvcnRzLmRlcHJlY2F0ZShlLHIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aWYoITA9PT1wcm9jZXNzLm5vRGVwcmVjYXRpb24pcmV0dXJuIGU7dmFyIG49ITE7cmV0dXJuIHR9O3ZhciBkZWJ1Z3M9e30sZGVidWdFbnZpcm9uO2V4cG9ydHMuZGVidWdsb2c9ZnVuY3Rpb24oZSl7aWYoaXNVbmRlZmluZWQoZGVidWdFbnZpcm9uKSYmKGRlYnVnRW52aXJvbj1wcm9jZXNzLmVudi5OT0RFX0RFQlVHfHxcIlwiKSxlPWUudG9VcHBlckNhc2UoKSwhZGVidWdzW2VdKWlmKG5ldyBSZWdFeHAoXCJcXFxcYlwiK2UrXCJcXFxcYlwiLFwiaVwiKS50ZXN0KGRlYnVnRW52aXJvbikpe3ZhciByPXByb2Nlc3MucGlkO2RlYnVnc1tlXT1mdW5jdGlvbigpe3ZhciB0PWV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsYXJndW1lbnRzKTtjb25zb2xlLmVycm9yKFwiJXMgJWQ6ICVzXCIsZSxyLHQpfX1lbHNlIGRlYnVnc1tlXT1mdW5jdGlvbigpe307cmV0dXJuIGRlYnVnc1tlXX0sZXhwb3J0cy5pbnNwZWN0PWluc3BlY3QsaW5zcGVjdC5jb2xvcnM9e2JvbGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93OlszMywzOV19LGluc3BlY3Quc3R5bGVzPXtzcGVjaWFsOlwiY3lhblwiLG51bWJlcjpcInllbGxvd1wiLGJvb2xlYW46XCJ5ZWxsb3dcIix1bmRlZmluZWQ6XCJncmV5XCIsbnVsbDpcImJvbGRcIixzdHJpbmc6XCJncmVlblwiLGRhdGU6XCJtYWdlbnRhXCIscmVnZXhwOlwicmVkXCJ9LGV4cG9ydHMuaXNBcnJheT1pc0FycmF5LGV4cG9ydHMuaXNCb29sZWFuPWlzQm9vbGVhbixleHBvcnRzLmlzTnVsbD1pc051bGwsZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZD1pc051bGxPclVuZGVmaW5lZCxleHBvcnRzLmlzTnVtYmVyPWlzTnVtYmVyLGV4cG9ydHMuaXNTdHJpbmc9aXNTdHJpbmcsZXhwb3J0cy5pc1N5bWJvbD1pc1N5bWJvbCxleHBvcnRzLmlzVW5kZWZpbmVkPWlzVW5kZWZpbmVkLGV4cG9ydHMuaXNSZWdFeHA9aXNSZWdFeHAsZXhwb3J0cy5pc09iamVjdD1pc09iamVjdCxleHBvcnRzLmlzRGF0ZT1pc0RhdGUsZXhwb3J0cy5pc0Vycm9yPWlzRXJyb3IsZXhwb3J0cy5pc0Z1bmN0aW9uPWlzRnVuY3Rpb24sZXhwb3J0cy5pc1ByaW1pdGl2ZT1pc1ByaW1pdGl2ZSxleHBvcnRzLmlzQnVmZmVyPV9kZXJlcV8oXCIuL3N1cHBvcnQvaXNCdWZmZXJcIik7dmFyIG1vbnRocz1bXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdO2V4cG9ydHMubG9nPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coXCIlcyAtICVzXCIsdGltZXN0YW1wKCksZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cyxhcmd1bWVudHMpKX0sZXhwb3J0cy5pbmhlcml0cz1fZGVyZXFfKFwiaW5oZXJpdHNcIiksZXhwb3J0cy5fZXh0ZW5kPWZ1bmN0aW9uKGUscil7aWYoIXJ8fCFpc09iamVjdChyKSlyZXR1cm4gZTtmb3IodmFyIHQ9T2JqZWN0LmtleXMociksbj10Lmxlbmd0aDtuLS07KWVbdFtuXV09clt0W25dXTtyZXR1cm4gZX07XG59KS5jYWxsKHRoaXMsX2RlcmVxXygnX3Byb2Nlc3MnKSx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxuXG59LHtcIi4vc3VwcG9ydC9pc0J1ZmZlclwiOjM1LFwiX3Byb2Nlc3NcIjozMCxcImluaGVyaXRzXCI6MzR9XSwzNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBmcm9tVmVjdG9yVGlsZUpzKGUpe3ZhciByPW5ldyBQYmY7cmV0dXJuIHdyaXRlVGlsZShlLHIpLHIuZmluaXNoKCl9ZnVuY3Rpb24gZnJvbUdlb2pzb25WdChlKXt2YXIgcj17fTtmb3IodmFyIHQgaW4gZSlyW3RdPW5ldyBHZW9KU09OV3JhcHBlcihlW3RdLmZlYXR1cmVzKSxyW3RdLm5hbWU9dDtyZXR1cm4gZnJvbVZlY3RvclRpbGVKcyh7bGF5ZXJzOnJ9KX1mdW5jdGlvbiB3cml0ZVRpbGUoZSxyKXtmb3IodmFyIHQgaW4gZS5sYXllcnMpci53cml0ZU1lc3NhZ2UoMyx3cml0ZUxheWVyLGUubGF5ZXJzW3RdKX1mdW5jdGlvbiB3cml0ZUxheWVyKGUscil7ci53cml0ZVZhcmludEZpZWxkKDE1LGUudmVyc2lvbnx8MSksci53cml0ZVN0cmluZ0ZpZWxkKDEsZS5uYW1lfHxcIlwiKSxyLndyaXRlVmFyaW50RmllbGQoNSxlLmV4dGVudHx8NDA5Nik7dmFyIHQsaT17a2V5czpbXSx2YWx1ZXM6W10sa2V5Y2FjaGU6e30sdmFsdWVjYWNoZTp7fX07Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpLmZlYXR1cmU9ZS5mZWF0dXJlKHQpLHIud3JpdGVNZXNzYWdlKDIsd3JpdGVGZWF0dXJlLGkpO3ZhciBhPWkua2V5cztmb3IodD0wO3Q8YS5sZW5ndGg7dCsrKXIud3JpdGVTdHJpbmdGaWVsZCgzLGFbdF0pO3ZhciBvPWkudmFsdWVzO2Zvcih0PTA7dDxvLmxlbmd0aDt0Kyspci53cml0ZU1lc3NhZ2UoNCx3cml0ZVZhbHVlLG9bdF0pfWZ1bmN0aW9uIHdyaXRlRmVhdHVyZShlLHIpe3ZhciB0PWUuZmVhdHVyZTt2b2lkIDAhPT10LmlkJiZyLndyaXRlVmFyaW50RmllbGQoMSx0LmlkKSxyLndyaXRlTWVzc2FnZSgyLHdyaXRlUHJvcGVydGllcyxlKSxyLndyaXRlVmFyaW50RmllbGQoMyx0LnR5cGUpLHIud3JpdGVNZXNzYWdlKDQsd3JpdGVHZW9tZXRyeSx0KX1mdW5jdGlvbiB3cml0ZVByb3BlcnRpZXMoZSxyKXt2YXIgdD1lLmZlYXR1cmUsaT1lLmtleXMsYT1lLnZhbHVlcyxvPWUua2V5Y2FjaGUsbj1lLnZhbHVlY2FjaGU7Zm9yKHZhciBsIGluIHQucHJvcGVydGllcyl7dmFyIHM9b1tsXTt2b2lkIDA9PT1zJiYoaS5wdXNoKGwpLHM9aS5sZW5ndGgtMSxvW2xdPXMpLHIud3JpdGVWYXJpbnQocyk7dmFyIHU9dC5wcm9wZXJ0aWVzW2xdLGY9dHlwZW9mIHU7XCJzdHJpbmdcIiE9PWYmJlwiYm9vbGVhblwiIT09ZiYmXCJudW1iZXJcIiE9PWYmJih1PUpTT04uc3RyaW5naWZ5KHUpKTt2YXIgdz1mK1wiOlwiK3Usdj1uW3ddO3ZvaWQgMD09PXYmJihhLnB1c2godSksdj1hLmxlbmd0aC0xLG5bd109diksci53cml0ZVZhcmludCh2KX19ZnVuY3Rpb24gY29tbWFuZChlLHIpe3JldHVybihyPDwzKSsoNyZlKX1mdW5jdGlvbiB6aWd6YWcoZSl7cmV0dXJuIGU8PDFeZT4+MzF9ZnVuY3Rpb24gd3JpdGVHZW9tZXRyeShlLHIpe2Zvcih2YXIgdD1lLmxvYWRHZW9tZXRyeSgpLGk9ZS50eXBlLGE9MCxvPTAsbj10Lmxlbmd0aCxsPTA7bDxuO2wrKyl7dmFyIHM9dFtsXSx1PTE7MT09PWkmJih1PXMubGVuZ3RoKSxyLndyaXRlVmFyaW50KGNvbW1hbmQoMSx1KSk7Zm9yKHZhciBmPTA7ZjxzLmxlbmd0aDtmKyspezE9PT1mJiYxIT09aSYmci53cml0ZVZhcmludChjb21tYW5kKDIscy5sZW5ndGgtMSkpO3ZhciB3PXNbZl0ueC1hLHY9c1tmXS55LW87ci53cml0ZVZhcmludCh6aWd6YWcodykpLHIud3JpdGVWYXJpbnQoemlnemFnKHYpKSxhKz13LG8rPXZ9fX1mdW5jdGlvbiB3cml0ZVZhbHVlKGUscil7dmFyIHQ9dHlwZW9mIGU7XCJzdHJpbmdcIj09PXQ/ci53cml0ZVN0cmluZ0ZpZWxkKDEsZSk6XCJib29sZWFuXCI9PT10P3Iud3JpdGVCb29sZWFuRmllbGQoNyxlKTpcIm51bWJlclwiPT09dCYmKGUlMSE9MD9yLndyaXRlRG91YmxlRmllbGQoMyxlKTplPDA/ci53cml0ZVNWYXJpbnRGaWVsZCg2LGUpOnIud3JpdGVWYXJpbnRGaWVsZCg1LGUpKX12YXIgUGJmPV9kZXJlcV8oXCJwYmZcIiksR2VvSlNPTldyYXBwZXI9X2RlcmVxXyhcIi4vbGliL2dlb2pzb25fd3JhcHBlclwiKTttb2R1bGUuZXhwb3J0cz1mcm9tVmVjdG9yVGlsZUpzLG1vZHVsZS5leHBvcnRzLmZyb21WZWN0b3JUaWxlSnM9ZnJvbVZlY3RvclRpbGVKcyxtb2R1bGUuZXhwb3J0cy5mcm9tR2VvanNvblZ0PWZyb21HZW9qc29uVnQsbW9kdWxlLmV4cG9ydHMuR2VvSlNPTldyYXBwZXI9R2VvSlNPTldyYXBwZXI7XG59LHtcIi4vbGliL2dlb2pzb25fd3JhcHBlclwiOjM4LFwicGJmXCI6Mjl9XSwzODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBHZW9KU09OV3JhcHBlcihlKXt0aGlzLmZlYXR1cmVzPWUsdGhpcy5sZW5ndGg9ZS5sZW5ndGh9ZnVuY3Rpb24gRmVhdHVyZVdyYXBwZXIoZSl7dGhpcy5pZD1cIm51bWJlclwiPT10eXBlb2YgZS5pZD9lLmlkOnZvaWQgMCx0aGlzLnR5cGU9ZS50eXBlLHRoaXMucmF3R2VvbWV0cnk9MT09PWUudHlwZT9bZS5nZW9tZXRyeV06ZS5nZW9tZXRyeSx0aGlzLnByb3BlcnRpZXM9ZS50YWdzLHRoaXMuZXh0ZW50PTQwOTZ9dmFyIFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLFZlY3RvclRpbGVGZWF0dXJlPV9kZXJlcV8oXCJAbWFwYm94L3ZlY3Rvci10aWxlXCIpLlZlY3RvclRpbGVGZWF0dXJlO21vZHVsZS5leHBvcnRzPUdlb0pTT05XcmFwcGVyLEdlb0pTT05XcmFwcGVyLnByb3RvdHlwZS5mZWF0dXJlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRmVhdHVyZVdyYXBwZXIodGhpcy5mZWF0dXJlc1tlXSl9LEZlYXR1cmVXcmFwcGVyLnByb3RvdHlwZS5sb2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJhd0dlb21ldHJ5O3RoaXMuZ2VvbWV0cnk9W107Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe2Zvcih2YXIgcj1lW3RdLG89W10sYT0wO2E8ci5sZW5ndGg7YSsrKW8ucHVzaChuZXcgUG9pbnQoclthXVswXSxyW2FdWzFdKSk7dGhpcy5nZW9tZXRyeS5wdXNoKG8pfXJldHVybiB0aGlzLmdlb21ldHJ5fSxGZWF0dXJlV3JhcHBlci5wcm90b3R5cGUuYmJveD1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnl8fHRoaXMubG9hZEdlb21ldHJ5KCk7Zm9yKHZhciBlPXRoaXMuZ2VvbWV0cnksdD0xLzAscj0tMS8wLG89MS8wLGE9LTEvMCxwPTA7cDxlLmxlbmd0aDtwKyspZm9yKHZhciBpPWVbcF0sbj0wO248aS5sZW5ndGg7bisrKXt2YXIgaD1pW25dO3Q9TWF0aC5taW4odCxoLngpLHI9TWF0aC5tYXgocixoLngpLG89TWF0aC5taW4obyxoLnkpLGE9TWF0aC5tYXgoYSxoLnkpfXJldHVyblt0LG8scixhXX0sRmVhdHVyZVdyYXBwZXIucHJvdG90eXBlLnRvR2VvSlNPTj1WZWN0b3JUaWxlRmVhdHVyZS5wcm90b3R5cGUudG9HZW9KU09OO1xufSx7XCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6MixcIkBtYXBib3gvdmVjdG9yLXRpbGVcIjo2fV0sMzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xudmFyIGJ1bmRsZUZuPWFyZ3VtZW50c1szXSxzb3VyY2VzPWFyZ3VtZW50c1s0XSxjYWNoZT1hcmd1bWVudHNbNV0sc3RyaW5naWZ5PUpTT04uc3RyaW5naWZ5O21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHIsZSl7ZnVuY3Rpb24gdChyKXtkW3JdPSEwO2Zvcih2YXIgZSBpbiBzb3VyY2VzW3JdWzFdKXt2YXIgbj1zb3VyY2VzW3JdWzFdW2VdO2Rbbl18fHQobil9fWZvcih2YXIgbixvPU9iamVjdC5rZXlzKGNhY2hlKSxhPTAsaT1vLmxlbmd0aDthPGk7YSsrKXt2YXIgcz1vW2FdLHU9Y2FjaGVbc10uZXhwb3J0cztpZih1PT09cnx8dSYmdS5kZWZhdWx0PT09cil7bj1zO2JyZWFrfX1pZighbil7bj1NYXRoLmZsb29yKE1hdGgucG93KDE2LDgpKk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtmb3IodmFyIGY9e30sYT0wLGk9by5sZW5ndGg7YTxpO2ErKyl7dmFyIHM9b1thXTtmW3NdPXN9c291cmNlc1tuXT1bRnVuY3Rpb24oW1wicmVxdWlyZVwiLFwibW9kdWxlXCIsXCJleHBvcnRzXCJdLFwiKFwiK3IrXCIpKHNlbGYpXCIpLGZdfXZhciBjPU1hdGguZmxvb3IoTWF0aC5wb3coMTYsOCkqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpLGw9e307bFtuXT1uLHNvdXJjZXNbY109W0Z1bmN0aW9uKFtcInJlcXVpcmVcIl0sXCJ2YXIgZiA9IHJlcXVpcmUoXCIrc3RyaW5naWZ5KG4pK1wiKTsoZi5kZWZhdWx0ID8gZi5kZWZhdWx0IDogZikoc2VsZik7XCIpLGxdO3ZhciBkPXt9O3QoYyk7dmFyIGc9XCIoXCIrYnVuZGxlRm4rXCIpKHtcIitPYmplY3Qua2V5cyhkKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHN0cmluZ2lmeShyKStcIjpbXCIrc291cmNlc1tyXVswXStcIixcIitzdHJpbmdpZnkoc291cmNlc1tyXVsxXSkrXCJdXCJ9KS5qb2luKFwiLFwiKStcIn0se30sW1wiK3N0cmluZ2lmeShjKStcIl0pXCIsdj13aW5kb3cuVVJMfHx3aW5kb3cud2Via2l0VVJMfHx3aW5kb3cubW96VVJMfHx3aW5kb3cubXNVUkwsdz1uZXcgQmxvYihbZ10se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pO2lmKGUmJmUuYmFyZSlyZXR1cm4gdzt2YXIgaD12LmNyZWF0ZU9iamVjdFVSTCh3KSxiPW5ldyBXb3JrZXIoaCk7cmV0dXJuIGIub2JqZWN0VVJMPWgsYn07XG59LHt9XSw0MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cy5SQURJVVM9NjM3ODEzNyxtb2R1bGUuZXhwb3J0cy5GTEFUVEVOSU5HPTEvMjk4LjI1NzIyMzU2Myxtb2R1bGUuZXhwb3J0cy5QT0xBUl9SQURJVVM9NjM1Njc1Mi4zMTQyO1xufSx7fV0sNDE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHM9e1widmVyc2lvblwiOlwiMC40MC4xXCJ9XG59LHt9XSw0MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpO21vZHVsZS5leHBvcnRzPXtkZXNlcmlhbGl6ZTpmdW5jdGlvbihlLHIpe3ZhciB0PXt9O2lmKCFyKXJldHVybiB0O2Zvcih2YXIgaT0wLGE9ZTtpPGEubGVuZ3RoO2krPTEpe3ZhciBsPWFbaV0sdT1sLmxheWVySWRzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gci5nZXRMYXllcihlKX0pLmZpbHRlcihCb29sZWFuKTtpZigwIT09dS5sZW5ndGgpZm9yKHZhciBuPXVbMF0uY3JlYXRlQnVja2V0KHV0aWwuZXh0ZW5kKHtsYXllcnM6dX0sbCkpLG89MCxmPXU7bzxmLmxlbmd0aDtvKz0xKXt2YXIgcz1mW29dO3Rbcy5pZF09bn19cmV0dXJuIHR9fTtcbn0se1wiLi4vdXRpbC91dGlsXCI6MjIzfV0sNDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYWRkQ2lyY2xlVmVydGV4KGUscix0LGksYSl7ZS5lbXBsYWNlQmFjaygyKnIrKGkrMSkvMiwyKnQrKGErMSkvMil9dmFyIHJlZj1fZGVyZXFfKFwiLi4vc2VnbWVudFwiKSxTZWdtZW50VmVjdG9yPXJlZi5TZWdtZW50VmVjdG9yLFZlcnRleEJ1ZmZlcj1fZGVyZXFfKFwiLi4vLi4vZ2wvdmVydGV4X2J1ZmZlclwiKSxJbmRleEJ1ZmZlcj1fZGVyZXFfKFwiLi4vLi4vZ2wvaW5kZXhfYnVmZmVyXCIpLHJlZiQxPV9kZXJlcV8oXCIuLi9wcm9ncmFtX2NvbmZpZ3VyYXRpb25cIiksUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQ9cmVmJDEuUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQsY3JlYXRlVmVydGV4QXJyYXlUeXBlPV9kZXJlcV8oXCIuLi92ZXJ0ZXhfYXJyYXlfdHlwZVwiKSxyZWYkMj1fZGVyZXFfKFwiLi4vaW5kZXhfYXJyYXlfdHlwZVwiKSxUcmlhbmdsZUluZGV4QXJyYXk9cmVmJDIuVHJpYW5nbGVJbmRleEFycmF5LGxvYWRHZW9tZXRyeT1fZGVyZXFfKFwiLi4vbG9hZF9nZW9tZXRyeVwiKSxFWFRFTlQ9X2RlcmVxXyhcIi4uL2V4dGVudFwiKSxjaXJjbGVJbnRlcmZhY2U9e2xheW91dEF0dHJpYnV0ZXM6W3tuYW1lOlwiYV9wb3NcIixjb21wb25lbnRzOjIsdHlwZTpcIkludDE2XCJ9XSxpbmRleEFycmF5VHlwZTpUcmlhbmdsZUluZGV4QXJyYXkscGFpbnRBdHRyaWJ1dGVzOlt7cHJvcGVydHk6XCJjaXJjbGUtY29sb3JcIn0se3Byb3BlcnR5OlwiY2lyY2xlLXJhZGl1c1wifSx7cHJvcGVydHk6XCJjaXJjbGUtYmx1clwifSx7cHJvcGVydHk6XCJjaXJjbGUtb3BhY2l0eVwifSx7cHJvcGVydHk6XCJjaXJjbGUtc3Ryb2tlLWNvbG9yXCJ9LHtwcm9wZXJ0eTpcImNpcmNsZS1zdHJva2Utd2lkdGhcIn0se3Byb3BlcnR5OlwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5XCJ9XX0sTGF5b3V0VmVydGV4QXJyYXlUeXBlPWNyZWF0ZVZlcnRleEFycmF5VHlwZShjaXJjbGVJbnRlcmZhY2UubGF5b3V0QXR0cmlidXRlcyksQ2lyY2xlQnVja2V0PWZ1bmN0aW9uKGUpe3RoaXMuem9vbT1lLnpvb20sdGhpcy5vdmVyc2NhbGluZz1lLm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPWUubGF5ZXJzLHRoaXMuaW5kZXg9ZS5pbmRleCx0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBMYXlvdXRWZXJ0ZXhBcnJheVR5cGUoZS5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEFycmF5PW5ldyBUcmlhbmdsZUluZGV4QXJyYXkoZS5pbmRleEFycmF5KSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQoY2lyY2xlSW50ZXJmYWNlLGUubGF5ZXJzLGUuem9vbSxlLnByb2dyYW1Db25maWd1cmF0aW9ucyksdGhpcy5zZWdtZW50cz1uZXcgU2VnbWVudFZlY3RvcihlLnNlZ21lbnRzKX07Q2lyY2xlQnVja2V0LnByb3RvdHlwZS5wb3B1bGF0ZT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgdD10aGlzLGk9MCxhPWU7aTxhLmxlbmd0aDtpKz0xKXt2YXIgbz1hW2ldLG49by5mZWF0dXJlLHk9by5pbmRleCx1PW8uc291cmNlTGF5ZXJJbmRleDtpZih0LmxheWVyc1swXS5maWx0ZXIobikpe3ZhciBzPWxvYWRHZW9tZXRyeShuKTt0LmFkZEZlYXR1cmUobixzKSxyLmZlYXR1cmVJbmRleC5pbnNlcnQobixzLHksdSx0LmluZGV4KX19fSxDaXJjbGVCdWNrZXQucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxDaXJjbGVCdWNrZXQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm57em9vbTp0aGlzLnpvb20sbGF5ZXJJZHM6dGhpcy5sYXllcnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkfSksbGF5b3V0VmVydGV4QXJyYXk6dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5zZXJpYWxpemUoZSksaW5kZXhBcnJheTp0aGlzLmluZGV4QXJyYXkuc2VyaWFsaXplKGUpLHByb2dyYW1Db25maWd1cmF0aW9uczp0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5zZXJpYWxpemUoZSksc2VnbWVudHM6dGhpcy5zZWdtZW50cy5nZXQoKX19LENpcmNsZUJ1Y2tldC5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKGUpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyPW5ldyBWZXJ0ZXhCdWZmZXIoZSx0aGlzLmxheW91dFZlcnRleEFycmF5KSx0aGlzLmluZGV4QnVmZmVyPW5ldyBJbmRleEJ1ZmZlcihlLHRoaXMuaW5kZXhBcnJheSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKGUpfSxDaXJjbGVCdWNrZXQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCkpfSxDaXJjbGVCdWNrZXQucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24oZSxyKXtmb3IodmFyIHQ9dGhpcyxpPTAsYT1yO2k8YS5sZW5ndGg7aSs9MSlmb3IodmFyIG89YVtpXSxuPTAseT1vO248eS5sZW5ndGg7bis9MSl7dmFyIHU9eVtuXSxzPXUueCxjPXUueTtpZighKHM8MHx8cz49RVhURU5UfHxjPDB8fGM+PUVYVEVOVCkpe3ZhciBsPXQuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCx0LmxheW91dFZlcnRleEFycmF5LHQuaW5kZXhBcnJheSkscD1sLnZlcnRleExlbmd0aDthZGRDaXJjbGVWZXJ0ZXgodC5sYXlvdXRWZXJ0ZXhBcnJheSxzLGMsLTEsLTEpLGFkZENpcmNsZVZlcnRleCh0LmxheW91dFZlcnRleEFycmF5LHMsYywxLC0xKSxhZGRDaXJjbGVWZXJ0ZXgodC5sYXlvdXRWZXJ0ZXhBcnJheSxzLGMsMSwxKSxhZGRDaXJjbGVWZXJ0ZXgodC5sYXlvdXRWZXJ0ZXhBcnJheSxzLGMsLTEsMSksdC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKHAscCsxLHArMiksdC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKHAscCszLHArMiksbC52ZXJ0ZXhMZW5ndGgrPTQsbC5wcmltaXRpdmVMZW5ndGgrPTJ9fXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsZS5wcm9wZXJ0aWVzKX0sQ2lyY2xlQnVja2V0LnByb2dyYW1JbnRlcmZhY2U9Y2lyY2xlSW50ZXJmYWNlLG1vZHVsZS5leHBvcnRzPUNpcmNsZUJ1Y2tldDtcbn0se1wiLi4vLi4vZ2wvaW5kZXhfYnVmZmVyXCI6NjEsXCIuLi8uLi9nbC92ZXJ0ZXhfYnVmZmVyXCI6NjIsXCIuLi9leHRlbnRcIjo0OCxcIi4uL2luZGV4X2FycmF5X3R5cGVcIjo1MCxcIi4uL2xvYWRfZ2VvbWV0cnlcIjo1MSxcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiOjUzLFwiLi4vc2VnbWVudFwiOjU1LFwiLi4vdmVydGV4X2FycmF5X3R5cGVcIjo1Nn1dLDQ0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciByZWY9X2RlcmVxXyhcIi4uL3NlZ21lbnRcIiksU2VnbWVudFZlY3Rvcj1yZWYuU2VnbWVudFZlY3RvcixWZXJ0ZXhCdWZmZXI9X2RlcmVxXyhcIi4uLy4uL2dsL3ZlcnRleF9idWZmZXJcIiksSW5kZXhCdWZmZXI9X2RlcmVxXyhcIi4uLy4uL2dsL2luZGV4X2J1ZmZlclwiKSxyZWYkMT1fZGVyZXFfKFwiLi4vcHJvZ3JhbV9jb25maWd1cmF0aW9uXCIpLFByb2dyYW1Db25maWd1cmF0aW9uU2V0PXJlZiQxLlByb2dyYW1Db25maWd1cmF0aW9uU2V0LGNyZWF0ZVZlcnRleEFycmF5VHlwZT1fZGVyZXFfKFwiLi4vdmVydGV4X2FycmF5X3R5cGVcIikscmVmJDI9X2RlcmVxXyhcIi4uL2luZGV4X2FycmF5X3R5cGVcIiksTGluZUluZGV4QXJyYXk9cmVmJDIuTGluZUluZGV4QXJyYXksVHJpYW5nbGVJbmRleEFycmF5PXJlZiQyLlRyaWFuZ2xlSW5kZXhBcnJheSxsb2FkR2VvbWV0cnk9X2RlcmVxXyhcIi4uL2xvYWRfZ2VvbWV0cnlcIiksZWFyY3V0PV9kZXJlcV8oXCJlYXJjdXRcIiksY2xhc3NpZnlSaW5ncz1fZGVyZXFfKFwiLi4vLi4vdXRpbC9jbGFzc2lmeV9yaW5nc1wiKSxFQVJDVVRfTUFYX1JJTkdTPTUwMCxmaWxsSW50ZXJmYWNlPXtsYXlvdXRBdHRyaWJ1dGVzOlt7bmFtZTpcImFfcG9zXCIsY29tcG9uZW50czoyLHR5cGU6XCJJbnQxNlwifV0saW5kZXhBcnJheVR5cGU6VHJpYW5nbGVJbmRleEFycmF5LGluZGV4QXJyYXlUeXBlMjpMaW5lSW5kZXhBcnJheSxwYWludEF0dHJpYnV0ZXM6W3twcm9wZXJ0eTpcImZpbGwtY29sb3JcIn0se3Byb3BlcnR5OlwiZmlsbC1vdXRsaW5lLWNvbG9yXCJ9LHtwcm9wZXJ0eTpcImZpbGwtb3BhY2l0eVwifV19LExheW91dFZlcnRleEFycmF5VHlwZT1jcmVhdGVWZXJ0ZXhBcnJheVR5cGUoZmlsbEludGVyZmFjZS5sYXlvdXRBdHRyaWJ1dGVzKSxGaWxsQnVja2V0PWZ1bmN0aW9uKGUpe3RoaXMuem9vbT1lLnpvb20sdGhpcy5vdmVyc2NhbGluZz1lLm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPWUubGF5ZXJzLHRoaXMuaW5kZXg9ZS5pbmRleCx0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBMYXlvdXRWZXJ0ZXhBcnJheVR5cGUoZS5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEFycmF5PW5ldyBUcmlhbmdsZUluZGV4QXJyYXkoZS5pbmRleEFycmF5KSx0aGlzLmluZGV4QXJyYXkyPW5ldyBMaW5lSW5kZXhBcnJheShlLmluZGV4QXJyYXkyKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQoZmlsbEludGVyZmFjZSxlLmxheWVycyxlLnpvb20sZS5wcm9ncmFtQ29uZmlndXJhdGlvbnMpLHRoaXMuc2VnbWVudHM9bmV3IFNlZ21lbnRWZWN0b3IoZS5zZWdtZW50cyksdGhpcy5zZWdtZW50czI9bmV3IFNlZ21lbnRWZWN0b3IoZS5zZWdtZW50czIpfTtGaWxsQnVja2V0LnByb3RvdHlwZS5wb3B1bGF0ZT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgdD10aGlzLGk9MCxhPWU7aTxhLmxlbmd0aDtpKz0xKXt2YXIgbj1hW2ldLG89bi5mZWF0dXJlLHM9bi5pbmRleCx5PW4uc291cmNlTGF5ZXJJbmRleDtpZih0LmxheWVyc1swXS5maWx0ZXIobykpe3ZhciBsPWxvYWRHZW9tZXRyeShvKTt0LmFkZEZlYXR1cmUobyxsKSxyLmZlYXR1cmVJbmRleC5pbnNlcnQobyxsLHMseSx0LmluZGV4KX19fSxGaWxsQnVja2V0LnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aH0sRmlsbEJ1Y2tldC5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybnt6b29tOnRoaXMuem9vbSxsYXllcklkczp0aGlzLmxheWVycy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9KSxsYXlvdXRWZXJ0ZXhBcnJheTp0aGlzLmxheW91dFZlcnRleEFycmF5LnNlcmlhbGl6ZShlKSxpbmRleEFycmF5OnRoaXMuaW5kZXhBcnJheS5zZXJpYWxpemUoZSksaW5kZXhBcnJheTI6dGhpcy5pbmRleEFycmF5Mi5zZXJpYWxpemUoZSkscHJvZ3JhbUNvbmZpZ3VyYXRpb25zOnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnNlcmlhbGl6ZShlKSxzZWdtZW50czp0aGlzLnNlZ21lbnRzLmdldCgpLHNlZ21lbnRzMjp0aGlzLnNlZ21lbnRzMi5nZXQoKX19LEZpbGxCdWNrZXQucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbihlKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj1uZXcgVmVydGV4QnVmZmVyKGUsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEJ1ZmZlcj1uZXcgSW5kZXhCdWZmZXIoZSx0aGlzLmluZGV4QXJyYXkpLHRoaXMuaW5kZXhCdWZmZXIyPW5ldyBJbmRleEJ1ZmZlcihlLHRoaXMuaW5kZXhBcnJheTIpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZChlKX0sRmlsbEJ1Y2tldC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCksdGhpcy5zZWdtZW50czIuZGVzdHJveSgpKX0sRmlsbEJ1Y2tldC5wcm90b3R5cGUuYWRkRmVhdHVyZT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgdD10aGlzLGk9MCxhPWNsYXNzaWZ5UmluZ3MocixFQVJDVVRfTUFYX1JJTkdTKTtpPGEubGVuZ3RoO2krPTEpe2Zvcih2YXIgbj1hW2ldLG89MCxzPTAseT1uO3M8eS5sZW5ndGg7cys9MSl7bys9eVtzXS5sZW5ndGh9Zm9yKHZhciBsPXQuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQobyx0LmxheW91dFZlcnRleEFycmF5LHQuaW5kZXhBcnJheSksdT1sLnZlcnRleExlbmd0aCxmPVtdLGc9W10seD0wLHA9bjt4PHAubGVuZ3RoO3grPTEpe3ZhciBoPXBbeF07aWYoMCE9PWgubGVuZ3RoKXtoIT09blswXSYmZy5wdXNoKGYubGVuZ3RoLzIpO3ZhciBkPXQuc2VnbWVudHMyLnByZXBhcmVTZWdtZW50KGgubGVuZ3RoLHQubGF5b3V0VmVydGV4QXJyYXksdC5pbmRleEFycmF5MiksYz1kLnZlcnRleExlbmd0aDt0LmxheW91dFZlcnRleEFycmF5LmVtcGxhY2VCYWNrKGhbMF0ueCxoWzBdLnkpLHQuaW5kZXhBcnJheTIuZW1wbGFjZUJhY2soYytoLmxlbmd0aC0xLGMpLGYucHVzaChoWzBdLngpLGYucHVzaChoWzBdLnkpO2Zvcih2YXIgbT0xO208aC5sZW5ndGg7bSsrKXQubGF5b3V0VmVydGV4QXJyYXkuZW1wbGFjZUJhY2soaFttXS54LGhbbV0ueSksdC5pbmRleEFycmF5Mi5lbXBsYWNlQmFjayhjK20tMSxjK20pLGYucHVzaChoW21dLngpLGYucHVzaChoW21dLnkpO2QudmVydGV4TGVuZ3RoKz1oLmxlbmd0aCxkLnByaW1pdGl2ZUxlbmd0aCs9aC5sZW5ndGh9fWZvcih2YXIgQT1lYXJjdXQoZixnKSxCPTA7QjxBLmxlbmd0aDtCKz0zKXQuaW5kZXhBcnJheS5lbXBsYWNlQmFjayh1K0FbQl0sdStBW0IrMV0sdStBW0IrMl0pO2wudmVydGV4TGVuZ3RoKz1vLGwucHJpbWl0aXZlTGVuZ3RoKz1BLmxlbmd0aC8zfXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsZS5wcm9wZXJ0aWVzKX0sRmlsbEJ1Y2tldC5wcm9ncmFtSW50ZXJmYWNlPWZpbGxJbnRlcmZhY2UsbW9kdWxlLmV4cG9ydHM9RmlsbEJ1Y2tldDtcbn0se1wiLi4vLi4vZ2wvaW5kZXhfYnVmZmVyXCI6NjEsXCIuLi8uLi9nbC92ZXJ0ZXhfYnVmZmVyXCI6NjIsXCIuLi8uLi91dGlsL2NsYXNzaWZ5X3JpbmdzXCI6MjA1LFwiLi4vaW5kZXhfYXJyYXlfdHlwZVwiOjUwLFwiLi4vbG9hZF9nZW9tZXRyeVwiOjUxLFwiLi4vcHJvZ3JhbV9jb25maWd1cmF0aW9uXCI6NTMsXCIuLi9zZWdtZW50XCI6NTUsXCIuLi92ZXJ0ZXhfYXJyYXlfdHlwZVwiOjU2LFwiZWFyY3V0XCI6MTF9XSw0NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBhZGRWZXJ0ZXgoZSxyLHQsYSxpLG4sbyxzKXtlLmVtcGxhY2VCYWNrKHIsdCwyKk1hdGguZmxvb3IoYSpGQUNUT1IpK28saSpGQUNUT1IqMixuKkZBQ1RPUioyLE1hdGgucm91bmQocykpfWZ1bmN0aW9uIGlzQm91bmRhcnlFZGdlKGUscil7cmV0dXJuIGUueD09PXIueCYmKGUueDwwfHxlLng+RVhURU5UKXx8ZS55PT09ci55JiYoZS55PDB8fGUueT5FWFRFTlQpfXZhciByZWY9X2RlcmVxXyhcIi4uL3NlZ21lbnRcIiksU2VnbWVudFZlY3Rvcj1yZWYuU2VnbWVudFZlY3RvcixNQVhfVkVSVEVYX0FSUkFZX0xFTkdUSD1yZWYuTUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEgsVmVydGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC92ZXJ0ZXhfYnVmZmVyXCIpLEluZGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIikscmVmJDE9X2RlcmVxXyhcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiKSxQcm9ncmFtQ29uZmlndXJhdGlvblNldD1yZWYkMS5Qcm9ncmFtQ29uZmlndXJhdGlvblNldCxjcmVhdGVWZXJ0ZXhBcnJheVR5cGU9X2RlcmVxXyhcIi4uL3ZlcnRleF9hcnJheV90eXBlXCIpLHJlZiQyPV9kZXJlcV8oXCIuLi9pbmRleF9hcnJheV90eXBlXCIpLFRyaWFuZ2xlSW5kZXhBcnJheT1yZWYkMi5UcmlhbmdsZUluZGV4QXJyYXksbG9hZEdlb21ldHJ5PV9kZXJlcV8oXCIuLi9sb2FkX2dlb21ldHJ5XCIpLEVYVEVOVD1fZGVyZXFfKFwiLi4vZXh0ZW50XCIpLGVhcmN1dD1fZGVyZXFfKFwiZWFyY3V0XCIpLGNsYXNzaWZ5UmluZ3M9X2RlcmVxXyhcIi4uLy4uL3V0aWwvY2xhc3NpZnlfcmluZ3NcIiksRUFSQ1VUX01BWF9SSU5HUz01MDAsZmlsbEV4dHJ1c2lvbkludGVyZmFjZT17bGF5b3V0QXR0cmlidXRlczpbe25hbWU6XCJhX3Bvc1wiLGNvbXBvbmVudHM6Mix0eXBlOlwiSW50MTZcIn0se25hbWU6XCJhX25vcm1hbFwiLGNvbXBvbmVudHM6Myx0eXBlOlwiSW50MTZcIn0se25hbWU6XCJhX2VkZ2VkaXN0YW5jZVwiLGNvbXBvbmVudHM6MSx0eXBlOlwiSW50MTZcIn1dLGluZGV4QXJyYXlUeXBlOlRyaWFuZ2xlSW5kZXhBcnJheSxwYWludEF0dHJpYnV0ZXM6W3twcm9wZXJ0eTpcImZpbGwtZXh0cnVzaW9uLWJhc2VcIn0se3Byb3BlcnR5OlwiZmlsbC1leHRydXNpb24taGVpZ2h0XCJ9LHtwcm9wZXJ0eTpcImZpbGwtZXh0cnVzaW9uLWNvbG9yXCJ9XX0sRkFDVE9SPU1hdGgucG93KDIsMTMpLExheW91dFZlcnRleEFycmF5VHlwZT1jcmVhdGVWZXJ0ZXhBcnJheVR5cGUoZmlsbEV4dHJ1c2lvbkludGVyZmFjZS5sYXlvdXRBdHRyaWJ1dGVzKSxGaWxsRXh0cnVzaW9uQnVja2V0PWZ1bmN0aW9uKGUpe3RoaXMuem9vbT1lLnpvb20sdGhpcy5vdmVyc2NhbGluZz1lLm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPWUubGF5ZXJzLHRoaXMuaW5kZXg9ZS5pbmRleCx0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBMYXlvdXRWZXJ0ZXhBcnJheVR5cGUoZS5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEFycmF5PW5ldyBUcmlhbmdsZUluZGV4QXJyYXkoZS5pbmRleEFycmF5KSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQoZmlsbEV4dHJ1c2lvbkludGVyZmFjZSxlLmxheWVycyxlLnpvb20sZS5wcm9ncmFtQ29uZmlndXJhdGlvbnMpLHRoaXMuc2VnbWVudHM9bmV3IFNlZ21lbnRWZWN0b3IoZS5zZWdtZW50cyl9O0ZpbGxFeHRydXNpb25CdWNrZXQucHJvdG90eXBlLnBvcHVsYXRlPWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0PXRoaXMsYT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpe3ZhciBuPWlbYV0sbz1uLmZlYXR1cmUscz1uLmluZGV4LHU9bi5zb3VyY2VMYXllckluZGV4O2lmKHQubGF5ZXJzWzBdLmZpbHRlcihvKSl7dmFyIHk9bG9hZEdlb21ldHJ5KG8pO3QuYWRkRmVhdHVyZShvLHkpLHIuZmVhdHVyZUluZGV4Lmluc2VydChvLHkscyx1LHQuaW5kZXgpfX19LEZpbGxFeHRydXNpb25CdWNrZXQucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxGaWxsRXh0cnVzaW9uQnVja2V0LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJue3pvb206dGhpcy56b29tLGxheWVySWRzOnRoaXMubGF5ZXJzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZH0pLGxheW91dFZlcnRleEFycmF5OnRoaXMubGF5b3V0VmVydGV4QXJyYXkuc2VyaWFsaXplKGUpLGluZGV4QXJyYXk6dGhpcy5pbmRleEFycmF5LnNlcmlhbGl6ZShlKSxwcm9ncmFtQ29uZmlndXJhdGlvbnM6dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuc2VyaWFsaXplKGUpLHNlZ21lbnRzOnRoaXMuc2VnbWVudHMuZ2V0KCl9fSxGaWxsRXh0cnVzaW9uQnVja2V0LnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24oZSl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9bmV3IFZlcnRleEJ1ZmZlcihlLHRoaXMubGF5b3V0VmVydGV4QXJyYXkpLHRoaXMuaW5kZXhCdWZmZXI9bmV3IEluZGV4QnVmZmVyKGUsdGhpcy5pbmRleEFycmF5KSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGxvYWQoZSl9LEZpbGxFeHRydXNpb25CdWNrZXQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCkpfSxGaWxsRXh0cnVzaW9uQnVja2V0LnByb3RvdHlwZS5hZGRGZWF0dXJlPWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0PXRoaXMsYT0wLGk9Y2xhc3NpZnlSaW5ncyhyLEVBUkNVVF9NQVhfUklOR1MpO2E8aS5sZW5ndGg7YSs9MSl7Zm9yKHZhciBuPWlbYV0sbz0wLHM9MCx1PW47czx1Lmxlbmd0aDtzKz0xKXtvKz11W3NdLmxlbmd0aH1mb3IodmFyIHk9dC5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0LHQubGF5b3V0VmVydGV4QXJyYXksdC5pbmRleEFycmF5KSxsPTAseD1uO2w8eC5sZW5ndGg7bCs9MSl7dmFyIGY9eFtsXTtpZigwIT09Zi5sZW5ndGgpZm9yKHZhciBnPTAscD0wO3A8Zi5sZW5ndGg7cCsrKXt2YXIgZD1mW3BdO2lmKHA+PTEpe3ZhciBoPWZbcC0xXTtpZighaXNCb3VuZGFyeUVkZ2UoZCxoKSl7eS52ZXJ0ZXhMZW5ndGgrND5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmKHk9dC5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0LHQubGF5b3V0VmVydGV4QXJyYXksdC5pbmRleEFycmF5KSk7dmFyIEE9ZC5zdWIoaCkuX3BlcnAoKS5fdW5pdCgpO2FkZFZlcnRleCh0LmxheW91dFZlcnRleEFycmF5LGQueCxkLnksQS54LEEueSwwLDAsZyksYWRkVmVydGV4KHQubGF5b3V0VmVydGV4QXJyYXksZC54LGQueSxBLngsQS55LDAsMSxnKSxnKz1oLmRpc3QoZCksYWRkVmVydGV4KHQubGF5b3V0VmVydGV4QXJyYXksaC54LGgueSxBLngsQS55LDAsMCxnKSxhZGRWZXJ0ZXgodC5sYXlvdXRWZXJ0ZXhBcnJheSxoLngsaC55LEEueCxBLnksMCwxLGcpO3ZhciBjPXkudmVydGV4TGVuZ3RoO3QuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhjLGMrMSxjKzIpLHQuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhjKzEsYysyLGMrMykseS52ZXJ0ZXhMZW5ndGgrPTQseS5wcmltaXRpdmVMZW5ndGgrPTJ9fX19eS52ZXJ0ZXhMZW5ndGgrbz5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmKHk9dC5zZWdtZW50cy5wcmVwYXJlU2VnbWVudChvLHQubGF5b3V0VmVydGV4QXJyYXksdC5pbmRleEFycmF5KSk7Zm9yKHZhciBtPVtdLFY9W10sRT15LnZlcnRleExlbmd0aCx2PTAsXz1uO3Y8Xy5sZW5ndGg7dis9MSl7dmFyIFQ9X1t2XTtpZigwIT09VC5sZW5ndGgpe1QhPT1uWzBdJiZWLnB1c2gobS5sZW5ndGgvMik7Zm9yKHZhciBCPTA7QjxULmxlbmd0aDtCKyspe3ZhciBSPVRbQl07YWRkVmVydGV4KHQubGF5b3V0VmVydGV4QXJyYXksUi54LFIueSwwLDAsMSwxLDApLG0ucHVzaChSLngpLG0ucHVzaChSLnkpfX19Zm9yKHZhciBJPWVhcmN1dChtLFYpLEM9MDtDPEkubGVuZ3RoO0MrPTMpdC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKEUrSVtDXSxFK0lbQysxXSxFK0lbQysyXSk7eS5wcmltaXRpdmVMZW5ndGgrPUkubGVuZ3RoLzMseS52ZXJ0ZXhMZW5ndGgrPW99dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5cyh0aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCxlLnByb3BlcnRpZXMpfSxGaWxsRXh0cnVzaW9uQnVja2V0LnByb2dyYW1JbnRlcmZhY2U9ZmlsbEV4dHJ1c2lvbkludGVyZmFjZSxtb2R1bGUuZXhwb3J0cz1GaWxsRXh0cnVzaW9uQnVja2V0O1xufSx7XCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIjo2MSxcIi4uLy4uL2dsL3ZlcnRleF9idWZmZXJcIjo2MixcIi4uLy4uL3V0aWwvY2xhc3NpZnlfcmluZ3NcIjoyMDUsXCIuLi9leHRlbnRcIjo0OCxcIi4uL2luZGV4X2FycmF5X3R5cGVcIjo1MCxcIi4uL2xvYWRfZ2VvbWV0cnlcIjo1MSxcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiOjUzLFwiLi4vc2VnbWVudFwiOjU1LFwiLi4vdmVydGV4X2FycmF5X3R5cGVcIjo1NixcImVhcmN1dFwiOjExfV0sNDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYWRkTGluZVZlcnRleChlLHQscixpLGEsbixzKXtlLmVtcGxhY2VCYWNrKHQueCx0LnksaT8xOjAsYT8xOi0xLE1hdGgucm91bmQoRVhUUlVERV9TQ0FMRSpyLngpKzEyOCxNYXRoLnJvdW5kKEVYVFJVREVfU0NBTEUqci55KSsxMjgsMSsoMD09PW4/MDpuPDA/LTE6MSl8KHMqTElORV9ESVNUQU5DRV9TQ0FMRSY2Myk8PDIscypMSU5FX0RJU1RBTkNFX1NDQUxFPj42KX12YXIgcmVmPV9kZXJlcV8oXCIuLi9zZWdtZW50XCIpLFNlZ21lbnRWZWN0b3I9cmVmLlNlZ21lbnRWZWN0b3IsVmVydGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC92ZXJ0ZXhfYnVmZmVyXCIpLEluZGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIikscmVmJDE9X2RlcmVxXyhcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiKSxQcm9ncmFtQ29uZmlndXJhdGlvblNldD1yZWYkMS5Qcm9ncmFtQ29uZmlndXJhdGlvblNldCxjcmVhdGVWZXJ0ZXhBcnJheVR5cGU9X2RlcmVxXyhcIi4uL3ZlcnRleF9hcnJheV90eXBlXCIpLHJlZiQyPV9kZXJlcV8oXCIuLi9pbmRleF9hcnJheV90eXBlXCIpLFRyaWFuZ2xlSW5kZXhBcnJheT1yZWYkMi5UcmlhbmdsZUluZGV4QXJyYXksbG9hZEdlb21ldHJ5PV9kZXJlcV8oXCIuLi9sb2FkX2dlb21ldHJ5XCIpLEVYVEVOVD1fZGVyZXFfKFwiLi4vZXh0ZW50XCIpLHZlY3RvclRpbGVGZWF0dXJlVHlwZXM9X2RlcmVxXyhcIkBtYXBib3gvdmVjdG9yLXRpbGVcIikuVmVjdG9yVGlsZUZlYXR1cmUudHlwZXMsRVhUUlVERV9TQ0FMRT02MyxDT1NfSEFMRl9TSEFSUF9DT1JORVI9TWF0aC5jb3MoTWF0aC5QSS8xODAqMzcuNSksU0hBUlBfQ09STkVSX09GRlNFVD0xNSxMSU5FX0RJU1RBTkNFX0JVRkZFUl9CSVRTPTE1LExJTkVfRElTVEFOQ0VfU0NBTEU9LjUsTUFYX0xJTkVfRElTVEFOQ0U9TWF0aC5wb3coMixMSU5FX0RJU1RBTkNFX0JVRkZFUl9CSVRTLTEpL0xJTkVfRElTVEFOQ0VfU0NBTEUsbGluZUludGVyZmFjZT17bGF5b3V0QXR0cmlidXRlczpbe25hbWU6XCJhX3Bvc19ub3JtYWxcIixjb21wb25lbnRzOjQsdHlwZTpcIkludDE2XCJ9LHtuYW1lOlwiYV9kYXRhXCIsY29tcG9uZW50czo0LHR5cGU6XCJVaW50OFwifV0scGFpbnRBdHRyaWJ1dGVzOlt7cHJvcGVydHk6XCJsaW5lLWNvbG9yXCJ9LHtwcm9wZXJ0eTpcImxpbmUtYmx1clwifSx7cHJvcGVydHk6XCJsaW5lLW9wYWNpdHlcIn0se3Byb3BlcnR5OlwibGluZS1nYXAtd2lkdGhcIixuYW1lOlwiZ2Fwd2lkdGhcIn0se3Byb3BlcnR5OlwibGluZS1vZmZzZXRcIn0se3Byb3BlcnR5OlwibGluZS13aWR0aFwifSx7cHJvcGVydHk6XCJsaW5lLXdpZHRoXCIsbmFtZTpcImZsb29yd2lkdGhcIix1c2VJbnRlZ2VyWm9vbTohMH1dLGluZGV4QXJyYXlUeXBlOlRyaWFuZ2xlSW5kZXhBcnJheX0sTGF5b3V0VmVydGV4QXJyYXlUeXBlPWNyZWF0ZVZlcnRleEFycmF5VHlwZShsaW5lSW50ZXJmYWNlLmxheW91dEF0dHJpYnV0ZXMpLExpbmVCdWNrZXQ9ZnVuY3Rpb24oZSl7dGhpcy56b29tPWUuem9vbSx0aGlzLm92ZXJzY2FsaW5nPWUub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9ZS5sYXllcnMsdGhpcy5pbmRleD1lLmluZGV4LHRoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3IExheW91dFZlcnRleEFycmF5VHlwZShlLmxheW91dFZlcnRleEFycmF5KSx0aGlzLmluZGV4QXJyYXk9bmV3IFRyaWFuZ2xlSW5kZXhBcnJheShlLmluZGV4QXJyYXkpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPW5ldyBQcm9ncmFtQ29uZmlndXJhdGlvblNldChsaW5lSW50ZXJmYWNlLGUubGF5ZXJzLGUuem9vbSxlLnByb2dyYW1Db25maWd1cmF0aW9ucyksdGhpcy5zZWdtZW50cz1uZXcgU2VnbWVudFZlY3RvcihlLnNlZ21lbnRzKX07TGluZUJ1Y2tldC5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcyxpPTAsYT1lO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG49YVtpXSxzPW4uZmVhdHVyZSxvPW4uaW5kZXgsdT1uLnNvdXJjZUxheWVySW5kZXg7aWYoci5sYXllcnNbMF0uZmlsdGVyKHMpKXt2YXIgZD1sb2FkR2VvbWV0cnkocyk7ci5hZGRGZWF0dXJlKHMsZCksdC5mZWF0dXJlSW5kZXguaW5zZXJ0KHMsZCxvLHUsci5pbmRleCl9fX0sTGluZUJ1Y2tldC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9LExpbmVCdWNrZXQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm57em9vbTp0aGlzLnpvb20sbGF5ZXJJZHM6dGhpcy5sYXllcnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkfSksbGF5b3V0VmVydGV4QXJyYXk6dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5zZXJpYWxpemUoZSksaW5kZXhBcnJheTp0aGlzLmluZGV4QXJyYXkuc2VyaWFsaXplKGUpLHByb2dyYW1Db25maWd1cmF0aW9uczp0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5zZXJpYWxpemUoZSksc2VnbWVudHM6dGhpcy5zZWdtZW50cy5nZXQoKX19LExpbmVCdWNrZXQucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbihlKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj1uZXcgVmVydGV4QnVmZmVyKGUsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEJ1ZmZlcj1uZXcgSW5kZXhCdWZmZXIoZSx0aGlzLmluZGV4QXJyYXkpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZChlKX0sTGluZUJ1Y2tldC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSl9LExpbmVCdWNrZXQucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcyxpPXRoaXMubGF5ZXJzWzBdLmxheW91dCxhPXRoaXMubGF5ZXJzWzBdLmdldExheW91dFZhbHVlKFwibGluZS1qb2luXCIse3pvb206dGhpcy56b29tfSxlLnByb3BlcnRpZXMpLG49aVtcImxpbmUtY2FwXCJdLHM9aVtcImxpbmUtbWl0ZXItbGltaXRcIl0sbz1pW1wibGluZS1yb3VuZC1saW1pdFwiXSx1PTAsZD10O3U8ZC5sZW5ndGg7dSs9MSl7dmFyIGw9ZFt1XTtyLmFkZExpbmUobCxlLGEsbixzLG8pfX0sTGluZUJ1Y2tldC5wcm90b3R5cGUuYWRkTGluZT1mdW5jdGlvbihlLHQscixpLGEsbil7Zm9yKHZhciBzPXRoaXMsbz10LnByb3BlcnRpZXMsdT1cIlBvbHlnb25cIj09PXZlY3RvclRpbGVGZWF0dXJlVHlwZXNbdC50eXBlXSxkPWUubGVuZ3RoO2Q+PTImJmVbZC0xXS5lcXVhbHMoZVtkLTJdKTspZC0tO2Zvcih2YXIgbD0wO2w8ZC0xJiZlW2xdLmVxdWFscyhlW2wrMV0pOylsKys7aWYoIShkPCh1PzM6MikpKXtcImJldmVsXCI9PT1yJiYoYT0xLjA1KTt2YXIgeT1TSEFSUF9DT1JORVJfT0ZGU0VUKihFWFRFTlQvKDUxMip0aGlzLm92ZXJzY2FsaW5nKSksaD1lW2xdLHA9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCgxMCpkLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KTt0aGlzLmRpc3RhbmNlPTA7dmFyIGMsZix4LG09aSxnPXU/XCJidXR0XCI6aSxfPSEwLEE9dm9pZCAwLHY9dm9pZCAwLFY9dm9pZCAwLEM9dm9pZCAwO3RoaXMuZTE9dGhpcy5lMj10aGlzLmUzPS0xLHUmJihjPWVbZC0yXSxDPWguc3ViKGMpLl91bml0KCkuX3BlcnAoKSk7Zm9yKHZhciBMPWw7TDxkO0wrKylpZighKHY9dSYmTD09PWQtMT9lW2wrMV06ZVtMKzFdKXx8IWVbTF0uZXF1YWxzKHYpKXtDJiYoVj1DKSxjJiYoQT1jKSxjPWVbTF0sQz12P3Yuc3ViKGMpLl91bml0KCkuX3BlcnAoKTpWLFY9Vnx8Qzt2YXIgRT1WLmFkZChDKTswPT09RS54JiYwPT09RS55fHxFLl91bml0KCk7dmFyIFM9RS54KkMueCtFLnkqQy55LEk9MCE9PVM/MS9TOjEvMCxUPVM8Q09TX0hBTEZfU0hBUlBfQ09STkVSJiZBJiZ2O2lmKFQmJkw+bCl7dmFyIEI9Yy5kaXN0KEEpO2lmKEI+Mip5KXt2YXIgYj1jLnN1YihjLnN1YihBKS5fbXVsdCh5L0IpLl9yb3VuZCgpKTtzLmRpc3RhbmNlKz1iLmRpc3QoQSkscy5hZGRDdXJyZW50VmVydGV4KGIscy5kaXN0YW5jZSxWLm11bHQoMSksMCwwLCExLHApLEE9Yn19dmFyIE49QSYmdixrPU4/cjp2P206ZztpZihOJiZcInJvdW5kXCI9PT1rJiYoSTxuP2s9XCJtaXRlclwiOkk8PTImJihrPVwiZmFrZXJvdW5kXCIpKSxcIm1pdGVyXCI9PT1rJiZJPmEmJihrPVwiYmV2ZWxcIiksXCJiZXZlbFwiPT09ayYmKEk+MiYmKGs9XCJmbGlwYmV2ZWxcIiksSTxhJiYoaz1cIm1pdGVyXCIpKSxBJiYocy5kaXN0YW5jZSs9Yy5kaXN0KEEpKSxcIm1pdGVyXCI9PT1rKUUuX211bHQoSSkscy5hZGRDdXJyZW50VmVydGV4KGMscy5kaXN0YW5jZSxFLDAsMCwhMSxwKTtlbHNlIGlmKFwiZmxpcGJldmVsXCI9PT1rKXtpZihJPjEwMClFPUMuY2xvbmUoKS5tdWx0KC0xKTtlbHNle3ZhciBSPVYueCpDLnktVi55KkMueD4wPy0xOjEsRj1JKlYuYWRkKEMpLm1hZygpL1Yuc3ViKEMpLm1hZygpO0UuX3BlcnAoKS5fbXVsdChGKlIpfXMuYWRkQ3VycmVudFZlcnRleChjLHMuZGlzdGFuY2UsRSwwLDAsITEscCkscy5hZGRDdXJyZW50VmVydGV4KGMscy5kaXN0YW5jZSxFLm11bHQoLTEpLDAsMCwhMSxwKX1lbHNlIGlmKFwiYmV2ZWxcIj09PWt8fFwiZmFrZXJvdW5kXCI9PT1rKXt2YXIgcT1WLngqQy55LVYueSpDLng+MCxQPS1NYXRoLnNxcnQoSSpJLTEpO2lmKHE/KHg9MCxmPVApOihmPTAseD1QKSxffHxzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLFYsZix4LCExLHApLFwiZmFrZXJvdW5kXCI9PT1rKXtmb3IodmFyIHc9TWF0aC5mbG9vcig4KiguNS0oUy0uNSkpKSx6PXZvaWQgMCxEPTA7RDx3O0QrKyl6PUMubXVsdCgoRCsxKS8odysxKSkuX2FkZChWKS5fdW5pdCgpLHMuYWRkUGllU2xpY2VWZXJ0ZXgoYyxzLmRpc3RhbmNlLHoscSxwKTtzLmFkZFBpZVNsaWNlVmVydGV4KGMscy5kaXN0YW5jZSxFLHEscCk7Zm9yKHZhciBNPXctMTtNPj0wO00tLSl6PVYubXVsdCgoTSsxKS8odysxKSkuX2FkZChDKS5fdW5pdCgpLHMuYWRkUGllU2xpY2VWZXJ0ZXgoYyxzLmRpc3RhbmNlLHoscSxwKX12JiZzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLEMsLWYsLXgsITEscCl9ZWxzZVwiYnV0dFwiPT09az8oX3x8cy5hZGRDdXJyZW50VmVydGV4KGMscy5kaXN0YW5jZSxWLDAsMCwhMSxwKSx2JiZzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLEMsMCwwLCExLHApKTpcInNxdWFyZVwiPT09az8oX3x8KHMuYWRkQ3VycmVudFZlcnRleChjLHMuZGlzdGFuY2UsViwxLDEsITEscCkscy5lMT1zLmUyPS0xKSx2JiZzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLEMsLTEsLTEsITEscCkpOlwicm91bmRcIj09PWsmJihffHwocy5hZGRDdXJyZW50VmVydGV4KGMscy5kaXN0YW5jZSxWLDAsMCwhMSxwKSxzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLFYsMSwxLCEwLHApLHMuZTE9cy5lMj0tMSksdiYmKHMuYWRkQ3VycmVudFZlcnRleChjLHMuZGlzdGFuY2UsQywtMSwtMSwhMCxwKSxzLmFkZEN1cnJlbnRWZXJ0ZXgoYyxzLmRpc3RhbmNlLEMsMCwwLCExLHApKSk7aWYoVCYmTDxkLTEpe3ZhciBPPWMuZGlzdCh2KTtpZihPPjIqeSl7dmFyIFg9Yy5hZGQodi5zdWIoYykuX211bHQoeS9PKS5fcm91bmQoKSk7cy5kaXN0YW5jZSs9WC5kaXN0KGMpLHMuYWRkQ3VycmVudFZlcnRleChYLHMuZGlzdGFuY2UsQy5tdWx0KDEpLDAsMCwhMSxwKSxjPVh9fV89ITF9dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5cyh0aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCxvKX19LExpbmVCdWNrZXQucHJvdG90eXBlLmFkZEN1cnJlbnRWZXJ0ZXg9ZnVuY3Rpb24oZSx0LHIsaSxhLG4scyl7dmFyIG8sdT10aGlzLmxheW91dFZlcnRleEFycmF5LGQ9dGhpcy5pbmRleEFycmF5O289ci5jbG9uZSgpLGkmJm8uX3N1YihyLnBlcnAoKS5fbXVsdChpKSksYWRkTGluZVZlcnRleCh1LGUsbyxuLCExLGksdCksdGhpcy5lMz1zLnZlcnRleExlbmd0aCsrLHRoaXMuZTE+PTAmJnRoaXMuZTI+PTAmJihkLmVtcGxhY2VCYWNrKHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzKSxzLnByaW1pdGl2ZUxlbmd0aCsrKSx0aGlzLmUxPXRoaXMuZTIsdGhpcy5lMj10aGlzLmUzLG89ci5tdWx0KC0xKSxhJiZvLl9zdWIoci5wZXJwKCkuX211bHQoYSkpLGFkZExpbmVWZXJ0ZXgodSxlLG8sbiwhMCwtYSx0KSx0aGlzLmUzPXMudmVydGV4TGVuZ3RoKyssdGhpcy5lMT49MCYmdGhpcy5lMj49MCYmKGQuZW1wbGFjZUJhY2sodGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMpLHMucHJpbWl0aXZlTGVuZ3RoKyspLHRoaXMuZTE9dGhpcy5lMix0aGlzLmUyPXRoaXMuZTMsdD5NQVhfTElORV9ESVNUQU5DRS8yJiYodGhpcy5kaXN0YW5jZT0wLHRoaXMuYWRkQ3VycmVudFZlcnRleChlLHRoaXMuZGlzdGFuY2UscixpLGEsbixzKSl9LExpbmVCdWNrZXQucHJvdG90eXBlLmFkZFBpZVNsaWNlVmVydGV4PWZ1bmN0aW9uKGUsdCxyLGksYSl7cj1yLm11bHQoaT8tMToxKTt2YXIgbj10aGlzLmxheW91dFZlcnRleEFycmF5LHM9dGhpcy5pbmRleEFycmF5O2FkZExpbmVWZXJ0ZXgobixlLHIsITEsaSwwLHQpLHRoaXMuZTM9YS52ZXJ0ZXhMZW5ndGgrKyx0aGlzLmUxPj0wJiZ0aGlzLmUyPj0wJiYocy5lbXBsYWNlQmFjayh0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyksYS5wcmltaXRpdmVMZW5ndGgrKyksaT90aGlzLmUyPXRoaXMuZTM6dGhpcy5lMT10aGlzLmUzfSxMaW5lQnVja2V0LnByb2dyYW1JbnRlcmZhY2U9bGluZUludGVyZmFjZSxtb2R1bGUuZXhwb3J0cz1MaW5lQnVja2V0O1xufSx7XCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIjo2MSxcIi4uLy4uL2dsL3ZlcnRleF9idWZmZXJcIjo2MixcIi4uL2V4dGVudFwiOjQ4LFwiLi4vaW5kZXhfYXJyYXlfdHlwZVwiOjUwLFwiLi4vbG9hZF9nZW9tZXRyeVwiOjUxLFwiLi4vcHJvZ3JhbV9jb25maWd1cmF0aW9uXCI6NTMsXCIuLi9zZWdtZW50XCI6NTUsXCIuLi92ZXJ0ZXhfYXJyYXlfdHlwZVwiOjU2LFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiOjZ9XSw0NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBhZGRWZXJ0ZXgoZSx0LG8scixhLGksbixzKXtlLmVtcGxhY2VCYWNrKHQsbyxNYXRoLnJvdW5kKDY0KnIpLE1hdGgucm91bmQoNjQqYSksaSxuLHM/c1swXTp2b2lkIDAscz9zWzFdOnZvaWQgMCl9ZnVuY3Rpb24gYWRkRHluYW1pY0F0dHJpYnV0ZXMoZSx0LG8scil7dmFyIGE9MipNYXRoLlBJLGk9cGFja1VpbnQ4VG9GbG9hdCgobythKSVhL2EqMjU1LDEwKnIpO2UuZW1wbGFjZUJhY2sodC54LHQueSxpKSxlLmVtcGxhY2VCYWNrKHQueCx0LnksaSksZS5lbXBsYWNlQmFjayh0LngsdC55LGkpLGUuZW1wbGFjZUJhY2sodC54LHQueSxpKX1mdW5jdGlvbiBhZGRDb2xsaXNpb25Cb3hWZXJ0ZXgoZSx0LG8scixhLGkpe3JldHVybiBlLmVtcGxhY2VCYWNrKHQueCx0Lnksby54LG8ueSxNYXRoLnJvdW5kKHIueCksTWF0aC5yb3VuZChyLnkpLDEwKmEsMTAqaSl9ZnVuY3Rpb24gZ2V0U2l6ZURhdGEoZSx0LG8pe3ZhciByPXt9O2lmKHIuaXNGZWF0dXJlQ29uc3RhbnQ9dC5pc0xheW91dFZhbHVlRmVhdHVyZUNvbnN0YW50KG8pLHIuaXNab29tQ29uc3RhbnQ9dC5pc0xheW91dFZhbHVlWm9vbUNvbnN0YW50KG8pLHIuaXNGZWF0dXJlQ29uc3RhbnQmJihyLmxheW91dFNpemU9dC5nZXRMYXlvdXRWYWx1ZShvLHt6b29tOmUrMX0pKSwhci5pc1pvb21Db25zdGFudCl7Zm9yKHZhciBhPXQuZ2V0TGF5b3V0VmFsdWVTdG9wWm9vbUxldmVscyhvKSxpPTA7aTxhLmxlbmd0aCYmYVtpXTw9ZTspaSsrO2k9TWF0aC5tYXgoMCxpLTEpO2Zvcih2YXIgbj1pO248YS5sZW5ndGgmJmFbbl08ZSsxOyluKys7bj1NYXRoLm1pbihhLmxlbmd0aC0xLG4pLHIuY292ZXJpbmdab29tUmFuZ2U9W2FbaV0sYVtuXV0sdC5pc0xheW91dFZhbHVlRmVhdHVyZUNvbnN0YW50KG8pJiYoci5jb3ZlcmluZ1N0b3BWYWx1ZXM9W3QuZ2V0TGF5b3V0VmFsdWUobyx7em9vbTphW2ldfSksdC5nZXRMYXlvdXRWYWx1ZShvLHt6b29tOmFbbl19KV0pLHIuZnVuY3Rpb25CYXNlPXQuZ2V0TGF5b3V0UHJvcGVydHkobykuYmFzZSx2b2lkIDA9PT1yLmZ1bmN0aW9uQmFzZSYmKHIuZnVuY3Rpb25CYXNlPTEpLHIuZnVuY3Rpb25UeXBlPXQuZ2V0TGF5b3V0UHJvcGVydHkobykudHlwZXx8XCJleHBvbmVudGlhbFwifXJldHVybiByfWZ1bmN0aW9uIGdldFNpemVWZXJ0ZXhEYXRhKGUsdCxvLHIsYSl7cmV0dXJuIGUuaXNMYXlvdXRWYWx1ZVpvb21Db25zdGFudChyKSYmIWUuaXNMYXlvdXRWYWx1ZUZlYXR1cmVDb25zdGFudChyKT9bMTAqZS5nZXRMYXlvdXRWYWx1ZShyLHt9LGEpXTplLmlzTGF5b3V0VmFsdWVab29tQ29uc3RhbnQocil8fGUuaXNMYXlvdXRWYWx1ZUZlYXR1cmVDb25zdGFudChyKT9udWxsOlsxMCplLmdldExheW91dFZhbHVlKHIse3pvb206b1swXX0sYSksMTAqZS5nZXRMYXlvdXRWYWx1ZShyLHt6b29tOm9bMV19LGEpXX12YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIikscmVmPV9kZXJlcV8oXCIuLi9zZWdtZW50XCIpLFNlZ21lbnRWZWN0b3I9cmVmLlNlZ21lbnRWZWN0b3IsVmVydGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC92ZXJ0ZXhfYnVmZmVyXCIpLEluZGV4QnVmZmVyPV9kZXJlcV8oXCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIikscmVmJDE9X2RlcmVxXyhcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiKSxQcm9ncmFtQ29uZmlndXJhdGlvblNldD1yZWYkMS5Qcm9ncmFtQ29uZmlndXJhdGlvblNldCxjcmVhdGVWZXJ0ZXhBcnJheVR5cGU9X2RlcmVxXyhcIi4uL3ZlcnRleF9hcnJheV90eXBlXCIpLHJlZiQyPV9kZXJlcV8oXCIuLi9pbmRleF9hcnJheV90eXBlXCIpLFRyaWFuZ2xlSW5kZXhBcnJheT1yZWYkMi5UcmlhbmdsZUluZGV4QXJyYXksTGluZUluZGV4QXJyYXk9cmVmJDIuTGluZUluZGV4QXJyYXksRVhURU5UPV9kZXJlcV8oXCIuLi9leHRlbnRcIikscmVmJDM9X2RlcmVxXyhcIi4uLy4uL3NoYWRlcnMvZW5jb2RlX2F0dHJpYnV0ZVwiKSxwYWNrVWludDhUb0Zsb2F0PXJlZiQzLnBhY2tVaW50OFRvRmxvYXQsQW5jaG9yPV9kZXJlcV8oXCIuLi8uLi9zeW1ib2wvYW5jaG9yXCIpLGdldEFuY2hvcnM9X2RlcmVxXyhcIi4uLy4uL3N5bWJvbC9nZXRfYW5jaG9yc1wiKSxyZXNvbHZlVG9rZW5zPV9kZXJlcV8oXCIuLi8uLi91dGlsL3Rva2VuXCIpLHJlZiQ0PV9kZXJlcV8oXCIuLi8uLi9zeW1ib2wvcXVhZHNcIiksZ2V0R2x5cGhRdWFkcz1yZWYkNC5nZXRHbHlwaFF1YWRzLGdldEljb25RdWFkcz1yZWYkNC5nZXRJY29uUXVhZHMscmVmJDU9X2RlcmVxXyhcIi4uLy4uL3N5bWJvbC9zaGFwaW5nXCIpLHNoYXBlVGV4dD1yZWYkNS5zaGFwZVRleHQsc2hhcGVJY29uPXJlZiQ1LnNoYXBlSWNvbixXcml0aW5nTW9kZT1yZWYkNS5Xcml0aW5nTW9kZSx0cmFuc2Zvcm1UZXh0PV9kZXJlcV8oXCIuLi8uLi9zeW1ib2wvdHJhbnNmb3JtX3RleHRcIiksbWVyZ2VMaW5lcz1fZGVyZXFfKFwiLi4vLi4vc3ltYm9sL21lcmdlbGluZXNcIiksY2xpcExpbmU9X2RlcmVxXyhcIi4uLy4uL3N5bWJvbC9jbGlwX2xpbmVcIiksdXRpbD1fZGVyZXFfKFwiLi4vLi4vdXRpbC91dGlsXCIpLHNjcmlwdERldGVjdGlvbj1fZGVyZXFfKFwiLi4vLi4vdXRpbC9zY3JpcHRfZGV0ZWN0aW9uXCIpLGxvYWRHZW9tZXRyeT1fZGVyZXFfKFwiLi4vbG9hZF9nZW9tZXRyeVwiKSxDb2xsaXNpb25GZWF0dXJlPV9kZXJlcV8oXCIuLi8uLi9zeW1ib2wvY29sbGlzaW9uX2ZlYXR1cmVcIiksZmluZFBvbGVPZkluYWNjZXNzaWJpbGl0eT1fZGVyZXFfKFwiLi4vLi4vdXRpbC9maW5kX3BvbGVfb2ZfaW5hY2Nlc3NpYmlsaXR5XCIpLGNsYXNzaWZ5UmluZ3M9X2RlcmVxXyhcIi4uLy4uL3V0aWwvY2xhc3NpZnlfcmluZ3NcIiksdmVjdG9yVGlsZUZlYXR1cmVUeXBlcz1fZGVyZXFfKFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiKS5WZWN0b3JUaWxlRmVhdHVyZS50eXBlcyxjcmVhdGVTdHJ1Y3RBcnJheVR5cGU9X2RlcmVxXyhcIi4uLy4uL3V0aWwvc3RydWN0X2FycmF5XCIpLHZlcnRpY2FsaXplUHVuY3R1YXRpb249X2RlcmVxXyhcIi4uLy4uL3V0aWwvdmVydGljYWxpemVfcHVuY3R1YXRpb25cIiksUGxhY2VkU3ltYm9sQXJyYXk9Y3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7dHlwZTpcIkludDE2XCIsbmFtZTpcImFuY2hvclhcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJhbmNob3JZXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImdseXBoU3RhcnRJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJudW1HbHlwaHNcIn0se3R5cGU6XCJVaW50MzJcIixuYW1lOlwibGluZVN0YXJ0SW5kZXhcIn0se3R5cGU6XCJVaW50MzJcIixuYW1lOlwibGluZUxlbmd0aFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJzZWdtZW50XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImxvd2VyU2l6ZVwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJ1cHBlclNpemVcIn0se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcImxpbmVPZmZzZXRYXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJsaW5lT2Zmc2V0WVwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwicGxhY2VtZW50Wm9vbVwifSx7dHlwZTpcIlVpbnQ4XCIsbmFtZTpcInZlcnRpY2FsXCJ9XX0pLEdseXBoT2Zmc2V0QXJyYXk9Y3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwib2Zmc2V0WFwifV19KSxMaW5lVmVydGV4QXJyYXk9Y3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7dHlwZTpcIkludDE2XCIsbmFtZTpcInhcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJ5XCJ9XX0pLGxheW91dEF0dHJpYnV0ZXM9W3tuYW1lOlwiYV9wb3Nfb2Zmc2V0XCIsY29tcG9uZW50czo0LHR5cGU6XCJJbnQxNlwifSx7bmFtZTpcImFfZGF0YVwiLGNvbXBvbmVudHM6NCx0eXBlOlwiVWludDE2XCJ9XSxkeW5hbWljTGF5b3V0QXR0cmlidXRlcz1be25hbWU6XCJhX3Byb2plY3RlZF9wb3NcIixjb21wb25lbnRzOjMsdHlwZTpcIkZsb2F0MzJcIn1dLHN5bWJvbEludGVyZmFjZXM9e3RleHQ6e2xheW91dEF0dHJpYnV0ZXM6bGF5b3V0QXR0cmlidXRlcyxkeW5hbWljTGF5b3V0QXR0cmlidXRlczpkeW5hbWljTGF5b3V0QXR0cmlidXRlcyxpbmRleEFycmF5VHlwZTpUcmlhbmdsZUluZGV4QXJyYXkscGFpbnRBdHRyaWJ1dGVzOlt7cHJvcGVydHk6XCJ0ZXh0LWNvbG9yXCIsbmFtZTpcImZpbGxfY29sb3JcIn0se3Byb3BlcnR5OlwidGV4dC1oYWxvLWNvbG9yXCIsbmFtZTpcImhhbG9fY29sb3JcIn0se3Byb3BlcnR5OlwidGV4dC1oYWxvLXdpZHRoXCIsbmFtZTpcImhhbG9fd2lkdGhcIn0se3Byb3BlcnR5OlwidGV4dC1oYWxvLWJsdXJcIixuYW1lOlwiaGFsb19ibHVyXCJ9LHtwcm9wZXJ0eTpcInRleHQtb3BhY2l0eVwiLG5hbWU6XCJvcGFjaXR5XCJ9XX0saWNvbjp7bGF5b3V0QXR0cmlidXRlczpsYXlvdXRBdHRyaWJ1dGVzLGR5bmFtaWNMYXlvdXRBdHRyaWJ1dGVzOmR5bmFtaWNMYXlvdXRBdHRyaWJ1dGVzLGluZGV4QXJyYXlUeXBlOlRyaWFuZ2xlSW5kZXhBcnJheSxwYWludEF0dHJpYnV0ZXM6W3twcm9wZXJ0eTpcImljb24tY29sb3JcIixuYW1lOlwiZmlsbF9jb2xvclwifSx7cHJvcGVydHk6XCJpY29uLWhhbG8tY29sb3JcIixuYW1lOlwiaGFsb19jb2xvclwifSx7cHJvcGVydHk6XCJpY29uLWhhbG8td2lkdGhcIixuYW1lOlwiaGFsb193aWR0aFwifSx7cHJvcGVydHk6XCJpY29uLWhhbG8tYmx1clwiLG5hbWU6XCJoYWxvX2JsdXJcIn0se3Byb3BlcnR5OlwiaWNvbi1vcGFjaXR5XCIsbmFtZTpcIm9wYWNpdHlcIn1dfSxjb2xsaXNpb25Cb3g6e2xheW91dEF0dHJpYnV0ZXM6W3tuYW1lOlwiYV9wb3NcIixjb21wb25lbnRzOjIsdHlwZTpcIkludDE2XCJ9LHtuYW1lOlwiYV9hbmNob3JfcG9zXCIsY29tcG9uZW50czoyLHR5cGU6XCJJbnQxNlwifSx7bmFtZTpcImFfZXh0cnVkZVwiLGNvbXBvbmVudHM6Mix0eXBlOlwiSW50MTZcIn0se25hbWU6XCJhX2RhdGFcIixjb21wb25lbnRzOjIsdHlwZTpcIlVpbnQ4XCJ9XSxpbmRleEFycmF5VHlwZTpMaW5lSW5kZXhBcnJheX19LFN5bWJvbEJ1ZmZlcnM9ZnVuY3Rpb24oZSx0LG8scil7dGhpcy5wcm9ncmFtSW50ZXJmYWNlPWU7dmFyIGE9Y3JlYXRlVmVydGV4QXJyYXlUeXBlKGUubGF5b3V0QXR0cmlidXRlcyksaT1lLmluZGV4QXJyYXlUeXBlO2lmKHRoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3IGEociYmci5sYXlvdXRWZXJ0ZXhBcnJheSksdGhpcy5pbmRleEFycmF5PW5ldyBpKHImJnIuaW5kZXhBcnJheSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9bmV3IFByb2dyYW1Db25maWd1cmF0aW9uU2V0KGUsdCxvLHImJnIucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKSx0aGlzLnNlZ21lbnRzPW5ldyBTZWdtZW50VmVjdG9yKHImJnIuc2VnbWVudHMpLGUuZHluYW1pY0xheW91dEF0dHJpYnV0ZXMpe3ZhciBuPWNyZWF0ZVZlcnRleEFycmF5VHlwZShlLmR5bmFtaWNMYXlvdXRBdHRyaWJ1dGVzKTt0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheT1uZXcgbihyJiZyLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheSl9fTtTeW1ib2xCdWZmZXJzLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJue2xheW91dFZlcnRleEFycmF5OnRoaXMubGF5b3V0VmVydGV4QXJyYXkuc2VyaWFsaXplKGUpLGluZGV4QXJyYXk6dGhpcy5pbmRleEFycmF5LnNlcmlhbGl6ZShlKSxwcm9ncmFtQ29uZmlndXJhdGlvbnM6dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuc2VyaWFsaXplKGUpLHNlZ21lbnRzOnRoaXMuc2VnbWVudHMuZ2V0KCksZHluYW1pY0xheW91dFZlcnRleEFycmF5OnRoaXMuZHluYW1pY0xheW91dFZlcnRleEFycmF5JiZ0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheS5zZXJpYWxpemUoZSl9fSxTeW1ib2xCdWZmZXJzLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24oZSl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9bmV3IFZlcnRleEJ1ZmZlcihlLHRoaXMubGF5b3V0VmVydGV4QXJyYXkpLHRoaXMuaW5kZXhCdWZmZXI9bmV3IEluZGV4QnVmZmVyKGUsdGhpcy5pbmRleEFycmF5KSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGxvYWQoZSksdGhpcy5wcm9ncmFtSW50ZXJmYWNlLmR5bmFtaWNMYXlvdXRBdHRyaWJ1dGVzJiYodGhpcy5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyPW5ldyBWZXJ0ZXhCdWZmZXIoZSx0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheSwhMCkpfSxTeW1ib2xCdWZmZXJzLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpLHRoaXMuZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlciYmdGhpcy5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSl9O3ZhciBTeW1ib2xCdWNrZXQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5jb2xsaXNpb25Cb3hBcnJheT1lLmNvbGxpc2lvbkJveEFycmF5LHRoaXMuem9vbT1lLnpvb20sdGhpcy5vdmVyc2NhbGluZz1lLm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPWUubGF5ZXJzLHRoaXMuaW5kZXg9ZS5pbmRleCx0aGlzLnNkZkljb25zPWUuc2RmSWNvbnMsdGhpcy5pY29uc05lZWRMaW5lYXI9ZS5pY29uc05lZWRMaW5lYXIsdGhpcy5waXhlbFJhdGlvPWUucGl4ZWxSYXRpbyxlLnRleHQpdGhpcy50ZXh0PW5ldyBTeW1ib2xCdWZmZXJzKHN5bWJvbEludGVyZmFjZXMudGV4dCxlLmxheWVycyxlLnpvb20sZS50ZXh0KSx0aGlzLmljb249bmV3IFN5bWJvbEJ1ZmZlcnMoc3ltYm9sSW50ZXJmYWNlcy5pY29uLGUubGF5ZXJzLGUuem9vbSxlLmljb24pLHRoaXMuY29sbGlzaW9uQm94PW5ldyBTeW1ib2xCdWZmZXJzKHN5bWJvbEludGVyZmFjZXMuY29sbGlzaW9uQm94LGUubGF5ZXJzLGUuem9vbSxlLmNvbGxpc2lvbkJveCksdGhpcy50ZXh0U2l6ZURhdGE9ZS50ZXh0U2l6ZURhdGEsdGhpcy5pY29uU2l6ZURhdGE9ZS5pY29uU2l6ZURhdGEsdGhpcy5wbGFjZWRHbHlwaEFycmF5PW5ldyBQbGFjZWRTeW1ib2xBcnJheShlLnBsYWNlZEdseXBoQXJyYXkpLHRoaXMucGxhY2VkSWNvbkFycmF5PW5ldyBQbGFjZWRTeW1ib2xBcnJheShlLnBsYWNlZEljb25BcnJheSksdGhpcy5nbHlwaE9mZnNldEFycmF5PW5ldyBHbHlwaE9mZnNldEFycmF5KGUuZ2x5cGhPZmZzZXRBcnJheSksdGhpcy5saW5lVmVydGV4QXJyYXk9bmV3IExpbmVWZXJ0ZXhBcnJheShlLmxpbmVWZXJ0ZXhBcnJheSk7ZWxzZXt2YXIgdD10aGlzLmxheWVyc1swXTt0aGlzLnRleHRTaXplRGF0YT1nZXRTaXplRGF0YSh0aGlzLnpvb20sdCxcInRleHQtc2l6ZVwiKSx0aGlzLmljb25TaXplRGF0YT1nZXRTaXplRGF0YSh0aGlzLnpvb20sdCxcImljb24tc2l6ZVwiKX19O1N5bWJvbEJ1Y2tldC5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbz10aGlzLHI9dGhpcy5sYXllcnNbMF0sYT1yLmxheW91dCxpPWFbXCJ0ZXh0LWZvbnRcIl0sbj0oIXIuaXNMYXlvdXRWYWx1ZUZlYXR1cmVDb25zdGFudChcInRleHQtZmllbGRcIil8fGFbXCJ0ZXh0LWZpZWxkXCJdKSYmaSxzPSFyLmlzTGF5b3V0VmFsdWVGZWF0dXJlQ29uc3RhbnQoXCJpY29uLWltYWdlXCIpfHxhW1wiaWNvbi1pbWFnZVwiXTtpZih0aGlzLmZlYXR1cmVzPVtdLG58fHMpe2Zvcih2YXIgbD10Lmljb25EZXBlbmRlbmNpZXMseT10LmdseXBoRGVwZW5kZW5jaWVzLGM9eVtpXT15W2ldfHx7fSx1PXt6b29tOnRoaXMuem9vbX0scD0wLHg9ZTtwPHgubGVuZ3RoO3ArPTEpe3ZhciBtPXhbcF0saD1tLmZlYXR1cmUsZD1tLmluZGV4LGY9bS5zb3VyY2VMYXllckluZGV4O2lmKHIuZmlsdGVyKGgpKXt2YXIgZz12b2lkIDA7biYmKGc9ci5nZXRMYXlvdXRWYWx1ZShcInRleHQtZmllbGRcIix1LGgucHJvcGVydGllcyksci5pc0xheW91dFZhbHVlRmVhdHVyZUNvbnN0YW50KFwidGV4dC1maWVsZFwiKSYmKGc9cmVzb2x2ZVRva2VucyhoLnByb3BlcnRpZXMsZykpLGc9dHJhbnNmb3JtVGV4dChnLHIsdSxoLnByb3BlcnRpZXMpKTt2YXIgYj12b2lkIDA7aWYocyYmKGI9ci5nZXRMYXlvdXRWYWx1ZShcImljb24taW1hZ2VcIix1LGgucHJvcGVydGllcyksci5pc0xheW91dFZhbHVlRmVhdHVyZUNvbnN0YW50KFwiaWNvbi1pbWFnZVwiKSYmKGI9cmVzb2x2ZVRva2VucyhoLnByb3BlcnRpZXMsYikpKSwoZ3x8YikmJihvLmZlYXR1cmVzLnB1c2goe3RleHQ6ZyxpY29uOmIsaW5kZXg6ZCxzb3VyY2VMYXllckluZGV4OmYsZ2VvbWV0cnk6bG9hZEdlb21ldHJ5KGgpLHByb3BlcnRpZXM6aC5wcm9wZXJ0aWVzLHR5cGU6dmVjdG9yVGlsZUZlYXR1cmVUeXBlc1toLnR5cGVdfSksYiYmKGxbYl09ITApLGcpKWZvcih2YXIgQT1cIm1hcFwiPT09YVtcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCJdJiZcImxpbmVcIj09PWFbXCJzeW1ib2wtcGxhY2VtZW50XCJdLHY9c2NyaXB0RGV0ZWN0aW9uLmFsbG93c1ZlcnRpY2FsV3JpdGluZ01vZGUoZyksUz0wO1M8Zy5sZW5ndGg7UysrKWlmKGNbZy5jaGFyQ29kZUF0KFMpXT0hMCxBJiZ2KXt2YXIgST12ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uLmxvb2t1cFtnLmNoYXJBdChTKV07SSYmKGNbSS5jaGFyQ29kZUF0KDApXT0hMCl9fX1cImxpbmVcIj09PWFbXCJzeW1ib2wtcGxhY2VtZW50XCJdJiYodGhpcy5mZWF0dXJlcz1tZXJnZUxpbmVzKHRoaXMuZmVhdHVyZXMpKX19LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5pY29uLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCYmMD09PXRoaXMudGV4dC5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgmJjA9PT10aGlzLmNvbGxpc2lvbkJveC5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybnt6b29tOnRoaXMuem9vbSxsYXllcklkczp0aGlzLmxheWVycy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9KSxzZGZJY29uczp0aGlzLnNkZkljb25zLGljb25zTmVlZExpbmVhcjp0aGlzLmljb25zTmVlZExpbmVhcix0ZXh0U2l6ZURhdGE6dGhpcy50ZXh0U2l6ZURhdGEsaWNvblNpemVEYXRhOnRoaXMuaWNvblNpemVEYXRhLHBsYWNlZEdseXBoQXJyYXk6dGhpcy5wbGFjZWRHbHlwaEFycmF5LnNlcmlhbGl6ZShlKSxwbGFjZWRJY29uQXJyYXk6dGhpcy5wbGFjZWRJY29uQXJyYXkuc2VyaWFsaXplKGUpLGdseXBoT2Zmc2V0QXJyYXk6dGhpcy5nbHlwaE9mZnNldEFycmF5LnNlcmlhbGl6ZShlKSxsaW5lVmVydGV4QXJyYXk6dGhpcy5saW5lVmVydGV4QXJyYXkuc2VyaWFsaXplKGUpLHRleHQ6dGhpcy50ZXh0LnNlcmlhbGl6ZShlKSxpY29uOnRoaXMuaWNvbi5zZXJpYWxpemUoZSksY29sbGlzaW9uQm94OnRoaXMuY29sbGlzaW9uQm94LnNlcmlhbGl6ZShlKX19LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKGUpe3RoaXMudGV4dC51cGxvYWQoZSksdGhpcy5pY29uLnVwbG9hZChlKSx0aGlzLmNvbGxpc2lvbkJveC51cGxvYWQoZSl9LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudGV4dC5kZXN0cm95KCksdGhpcy5pY29uLmRlc3Ryb3koKSx0aGlzLmNvbGxpc2lvbkJveC5kZXN0cm95KCl9LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbihlLHQsbyxyKXt2YXIgYT10aGlzO3RoaXMuc3ltYm9sSW5zdGFuY2VzPVtdO3ZhciBpPTUxMip0aGlzLm92ZXJzY2FsaW5nO3RoaXMudGlsZVBpeGVsUmF0aW89RVhURU5UL2ksdGhpcy5jb21wYXJlVGV4dD17fSx0aGlzLmljb25zTmVlZExpbmVhcj0hMTtmb3IodmFyIG49dGhpcy5sYXllcnNbMF0ubGF5b3V0LHM9MjQqbltcInRleHQtbGluZS1oZWlnaHRcIl0sbD1uW1widGV4dC1mb250XCJdLmpvaW4oXCIsXCIpLHk9XCJtYXBcIj09PW5bXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiXSYmXCJsaW5lXCI9PT1uW1wic3ltYm9sLXBsYWNlbWVudFwiXSxjPWVbbF18fHt9LHU9dFtsXXx8e30scD0wLHg9YS5mZWF0dXJlcztwPHgubGVuZ3RoO3ArPTEpe3ZhciBtPXhbcF0saD17fSxkPW0udGV4dDtpZihkKXt2YXIgZj1hLmxheWVyc1swXS5nZXRMYXlvdXRWYWx1ZShcInRleHQtb2Zmc2V0XCIse3pvb206YS56b29tfSxtLnByb3BlcnRpZXMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gMjQqZX0pLGc9MjQqYS5sYXllcnNbMF0uZ2V0TGF5b3V0VmFsdWUoXCJ0ZXh0LWxldHRlci1zcGFjaW5nXCIse3pvb206YS56b29tfSxtLnByb3BlcnRpZXMpLGI9c2NyaXB0RGV0ZWN0aW9uLmFsbG93c0xldHRlclNwYWNpbmcoZCk/ZzowLEE9YS5sYXllcnNbMF0uZ2V0TGF5b3V0VmFsdWUoXCJ0ZXh0LWFuY2hvclwiLHt6b29tOmEuem9vbX0sbS5wcm9wZXJ0aWVzKSx2PWEubGF5ZXJzWzBdLmdldExheW91dFZhbHVlKFwidGV4dC1qdXN0aWZ5XCIse3pvb206YS56b29tfSxtLnByb3BlcnRpZXMpLFM9XCJsaW5lXCIhPT1uW1wic3ltYm9sLXBsYWNlbWVudFwiXT8yNCphLmxheWVyc1swXS5nZXRMYXlvdXRWYWx1ZShcInRleHQtbWF4LXdpZHRoXCIse3pvb206YS56b29tfSxtLnByb3BlcnRpZXMpOjAsST1mdW5jdGlvbihlLHQpe3JldHVybiBzaGFwZVRleHQoZSxjLFMscyxBLHYsYixmLDI0LHQpfTtoW1dyaXRpbmdNb2RlLmhvcml6b250YWxdPUkoZCxXcml0aW5nTW9kZS5ob3Jpem9udGFsKSxzY3JpcHREZXRlY3Rpb24uYWxsb3dzVmVydGljYWxXcml0aW5nTW9kZShkKSYmeSYmKGhbV3JpdGluZ01vZGUudmVydGljYWxdPUkoZCxXcml0aW5nTW9kZS52ZXJ0aWNhbCkpfXZhciBCPXZvaWQgMDtpZihtLmljb24pe3ZhciB6PW9bbS5pY29uXTt6JiYoQj1zaGFwZUljb24oclttLmljb25dLGEubGF5ZXJzWzBdLmdldExheW91dFZhbHVlKFwiaWNvbi1vZmZzZXRcIix7em9vbTphLnpvb219LG0ucHJvcGVydGllcyksYS5sYXllcnNbMF0uZ2V0TGF5b3V0VmFsdWUoXCJpY29uLWFuY2hvclwiLHt6b29tOmEuem9vbX0sbS5wcm9wZXJ0aWVzKSksdm9pZCAwPT09YS5zZGZJY29ucz9hLnNkZkljb25zPXouc2RmOmEuc2RmSWNvbnMhPT16LnNkZiYmdXRpbC53YXJuT25jZShcIlN0eWxlIHNoZWV0IHdhcm5pbmc6IENhbm5vdCBtaXggU0RGIGFuZCBub24tU0RGIGljb25zIGluIG9uZSBidWZmZXJcIiksei5waXhlbFJhdGlvIT09YS5waXhlbFJhdGlvP2EuaWNvbnNOZWVkTGluZWFyPSEwOjA9PT1uW1wiaWNvbi1yb3RhdGVcIl0mJmEubGF5ZXJzWzBdLmlzTGF5b3V0VmFsdWVGZWF0dXJlQ29uc3RhbnQoXCJpY29uLXJvdGF0ZVwiKXx8KGEuaWNvbnNOZWVkTGluZWFyPSEwKSl9KGhbV3JpdGluZ01vZGUuaG9yaXpvbnRhbF18fEIpJiZhLmFkZEZlYXR1cmUobSxoLEIsdSl9fSxTeW1ib2xCdWNrZXQucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24oZSx0LG8scil7dmFyIGE9dGhpcyxpPXRoaXMubGF5ZXJzWzBdLmdldExheW91dFZhbHVlKFwidGV4dC1zaXplXCIse3pvb206dGhpcy56b29tKzF9LGUucHJvcGVydGllcyksbj10aGlzLmxheWVyc1swXS5nZXRMYXlvdXRWYWx1ZShcImljb24tc2l6ZVwiLHt6b29tOnRoaXMuem9vbSsxfSxlLnByb3BlcnRpZXMpLHM9dGhpcy5sYXllcnNbMF0uZ2V0TGF5b3V0VmFsdWUoXCJ0ZXh0LW9mZnNldFwiLHt6b29tOnRoaXMuem9vbX0sZS5wcm9wZXJ0aWVzKSxsPXRoaXMubGF5ZXJzWzBdLmdldExheW91dFZhbHVlKFwiaWNvbi1vZmZzZXRcIix7em9vbTp0aGlzLnpvb219LGUucHJvcGVydGllcykseT10aGlzLmxheWVyc1swXS5nZXRMYXlvdXRWYWx1ZShcInRleHQtc2l6ZVwiLHt6b29tOjE4fSxlLnByb3BlcnRpZXMpO3ZvaWQgMD09PXkmJih5PWkpO3ZhciBjPXRoaXMubGF5ZXJzWzBdLmxheW91dCx1PWkvMjQscD10aGlzLnRpbGVQaXhlbFJhdGlvKnUseD10aGlzLnRpbGVQaXhlbFJhdGlvKnkvMjQsbT10aGlzLnRpbGVQaXhlbFJhdGlvKm4saD10aGlzLnRpbGVQaXhlbFJhdGlvKmNbXCJzeW1ib2wtc3BhY2luZ1wiXSxkPWNbXCJzeW1ib2wtYXZvaWQtZWRnZXNcIl0sZj1jW1widGV4dC1wYWRkaW5nXCJdKnRoaXMudGlsZVBpeGVsUmF0aW8sZz1jW1wiaWNvbi1wYWRkaW5nXCJdKnRoaXMudGlsZVBpeGVsUmF0aW8sYj1jW1widGV4dC1tYXgtYW5nbGVcIl0vMTgwKk1hdGguUEksQT1cIm1hcFwiPT09Y1tcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCJdJiZcImxpbmVcIj09PWNbXCJzeW1ib2wtcGxhY2VtZW50XCJdLHY9XCJtYXBcIj09PWNbXCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiXSYmXCJsaW5lXCI9PT1jW1wic3ltYm9sLXBsYWNlbWVudFwiXSxTPWNbXCJ0ZXh0LWFsbG93LW92ZXJsYXBcIl18fGNbXCJpY29uLWFsbG93LW92ZXJsYXBcIl18fGNbXCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnRcIl18fGNbXCJpY29uLWlnbm9yZS1wbGFjZW1lbnRcIl0sST1jW1wic3ltYm9sLXBsYWNlbWVudFwiXSxCPWgvMix6PWZ1bmN0aW9uKGksbil7dmFyIHk9IShuLng8MHx8bi54PkVYVEVOVHx8bi55PDB8fG4ueT5FWFRFTlQpO2lmKCFkfHx5KXt2YXIgYz15fHxTO2EuYWRkU3ltYm9sSW5zdGFuY2UobixpLHQsbyxhLmxheWVyc1swXSxjLGEuY29sbGlzaW9uQm94QXJyYXksZS5pbmRleCxlLnNvdXJjZUxheWVySW5kZXgsYS5pbmRleCxwLGYsQSxzLG0sZyx2LGwse3pvb206YS56b29tfSxlLnByb3BlcnRpZXMscil9fTtpZihcImxpbmVcIj09PUkpZm9yKHZhciBWPTAsTD1jbGlwTGluZShlLmdlb21ldHJ5LDAsMCxFWFRFTlQsRVhURU5UKTtWPEwubGVuZ3RoO1YrPTEpZm9yKHZhciBUPUxbVl0sdz1nZXRBbmNob3JzKFQsaCxiLHRbV3JpdGluZ01vZGUudmVydGljYWxdfHx0W1dyaXRpbmdNb2RlLmhvcml6b250YWxdLG8sMjQseCxhLm92ZXJzY2FsaW5nLEVYVEVOVCksTT0wLEM9dztNPEMubGVuZ3RoO00rPTEpe3ZhciBfPUNbTV0saz10W1dyaXRpbmdNb2RlLmhvcml6b250YWxdO2smJmEuYW5jaG9ySXNUb29DbG9zZShrLnRleHQsQixfKXx8eihULF8pfWVsc2UgaWYoXCJQb2x5Z29uXCI9PT1lLnR5cGUpZm9yKHZhciBQPTAsRj1jbGFzc2lmeVJpbmdzKGUuZ2VvbWV0cnksMCk7UDxGLmxlbmd0aDtQKz0xKXt2YXIgRT1GW1BdLEQ9ZmluZFBvbGVPZkluYWNjZXNzaWJpbGl0eShFLDE2KTt6KEVbMF0sbmV3IEFuY2hvcihELngsRC55LDApKX1lbHNlIGlmKFwiTGluZVN0cmluZ1wiPT09ZS50eXBlKWZvcih2YXIgcT0wLE89ZS5nZW9tZXRyeTtxPE8ubGVuZ3RoO3ErPTEpe3ZhciBOPU9bcV07eihOLG5ldyBBbmNob3IoTlswXS54LE5bMF0ueSwwKSl9ZWxzZSBpZihcIlBvaW50XCI9PT1lLnR5cGUpZm9yKHZhciBXPTAsUj1lLmdlb21ldHJ5O1c8Ui5sZW5ndGg7Vys9MSlmb3IodmFyIEc9UltXXSwkPTAsVT1HOyQ8VS5sZW5ndGg7JCs9MSl7dmFyIFg9VVskXTt6KFtYXSxuZXcgQW5jaG9yKFgueCxYLnksMCkpfX0sU3ltYm9sQnVja2V0LnByb3RvdHlwZS5hbmNob3JJc1Rvb0Nsb3NlPWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj10aGlzLmNvbXBhcmVUZXh0O2lmKGUgaW4gcil7Zm9yKHZhciBhPXJbZV0saT1hLmxlbmd0aC0xO2k+PTA7aS0tKWlmKG8uZGlzdChhW2ldKTx0KXJldHVybiEwfWVsc2UgcltlXT1bXTtyZXR1cm4gcltlXS5wdXNoKG8pLCExfSxTeW1ib2xCdWNrZXQucHJvdG90eXBlLnBsYWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG89dGhpczt0aGlzLnRleHQ9bmV3IFN5bWJvbEJ1ZmZlcnMoc3ltYm9sSW50ZXJmYWNlcy50ZXh0LHRoaXMubGF5ZXJzLHRoaXMuem9vbSksdGhpcy5pY29uPW5ldyBTeW1ib2xCdWZmZXJzKHN5bWJvbEludGVyZmFjZXMuaWNvbix0aGlzLmxheWVycyx0aGlzLnpvb20pLHRoaXMuY29sbGlzaW9uQm94PW5ldyBTeW1ib2xCdWZmZXJzKHN5bWJvbEludGVyZmFjZXMuY29sbGlzaW9uQm94LHRoaXMubGF5ZXJzLHRoaXMuem9vbSksdGhpcy5wbGFjZWRHbHlwaEFycmF5PW5ldyBQbGFjZWRTeW1ib2xBcnJheSx0aGlzLnBsYWNlZEljb25BcnJheT1uZXcgUGxhY2VkU3ltYm9sQXJyYXksdGhpcy5nbHlwaE9mZnNldEFycmF5PW5ldyBHbHlwaE9mZnNldEFycmF5LHRoaXMubGluZVZlcnRleEFycmF5PW5ldyBMaW5lVmVydGV4QXJyYXk7dmFyIHI9dGhpcy5sYXllcnNbMF0sYT1yLmxheW91dCxpPWUubWF4U2NhbGUsbj1cIm1hcFwiPT09YVtcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCJdJiZcImxpbmVcIj09PWFbXCJzeW1ib2wtcGxhY2VtZW50XCJdLHM9XCJtYXBcIj09PWFbXCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiXSYmXCJsaW5lXCI9PT1hW1wic3ltYm9sLXBsYWNlbWVudFwiXTtpZihhW1widGV4dC1hbGxvdy1vdmVybGFwXCJdfHxhW1wiaWNvbi1hbGxvdy1vdmVybGFwXCJdfHxhW1widGV4dC1pZ25vcmUtcGxhY2VtZW50XCJdfHxhW1wiaWNvbi1pZ25vcmUtcGxhY2VtZW50XCJdKXt2YXIgbD1lLmFuZ2xlLHk9TWF0aC5zaW4obCksYz1NYXRoLmNvcyhsKTt0aGlzLnN5bWJvbEluc3RhbmNlcy5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHkqZS5hbmNob3IueCtjKmUuYW5jaG9yLnl8MCktKHkqdC5hbmNob3IueCtjKnQuYW5jaG9yLnl8MCl8fHQuZmVhdHVyZUluZGV4LWUuZmVhdHVyZUluZGV4fSl9Zm9yKHZhciB1PTAscD1vLnN5bWJvbEluc3RhbmNlczt1PHAubGVuZ3RoO3UrPTEpe3ZhciB4PXBbdV0sbT17Ym94U3RhcnRJbmRleDp4LnRleHRCb3hTdGFydEluZGV4LGJveEVuZEluZGV4OngudGV4dEJveEVuZEluZGV4fSxoPXtib3hTdGFydEluZGV4OnguaWNvbkJveFN0YXJ0SW5kZXgsYm94RW5kSW5kZXg6eC5pY29uQm94RW5kSW5kZXh9LGQ9ISh4LnRleHRCb3hTdGFydEluZGV4PT09eC50ZXh0Qm94RW5kSW5kZXgpLGY9ISh4Lmljb25Cb3hTdGFydEluZGV4PT09eC5pY29uQm94RW5kSW5kZXgpLGc9YVtcInRleHQtb3B0aW9uYWxcIl18fCFkLGI9YVtcImljb24tb3B0aW9uYWxcIl18fCFmLEE9ZD9lLnBsYWNlQ29sbGlzaW9uRmVhdHVyZShtLGFbXCJ0ZXh0LWFsbG93LW92ZXJsYXBcIl0sYVtcInN5bWJvbC1hdm9pZC1lZGdlc1wiXSk6ZS5taW5TY2FsZSx2PWY/ZS5wbGFjZUNvbGxpc2lvbkZlYXR1cmUoaCxhW1wiaWNvbi1hbGxvdy1vdmVybGFwXCJdLGFbXCJzeW1ib2wtYXZvaWQtZWRnZXNcIl0pOmUubWluU2NhbGU7aWYoZ3x8Yj8hYiYmQT9BPU1hdGgubWF4KHYsQSk6IWcmJnYmJih2PU1hdGgubWF4KHYsQSkpOnY9QT1NYXRoLm1heCh2LEEpLGR8fGYpe2Zvcih2YXIgUz14LmxpbmUsST1vLmxpbmVWZXJ0ZXhBcnJheS5sZW5ndGgsQj0wO0I8Uy5sZW5ndGg7QisrKW8ubGluZVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKFNbQl0ueCxTW0JdLnkpO3ZhciB6PW8ubGluZVZlcnRleEFycmF5Lmxlbmd0aC1JO2lmKGQmJihlLmluc2VydENvbGxpc2lvbkZlYXR1cmUobSxBLGFbXCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnRcIl0pLEE8PWkpKXt2YXIgVj1nZXRTaXplVmVydGV4RGF0YShyLG8uem9vbSxvLnRleHRTaXplRGF0YS5jb3ZlcmluZ1pvb21SYW5nZSxcInRleHQtc2l6ZVwiLHguZmVhdHVyZVByb3BlcnRpZXMpO28uYWRkU3ltYm9scyhvLnRleHQseC5nbHlwaFF1YWRzLEEsVixhW1widGV4dC1rZWVwLXVwcmlnaHRcIl0seC50ZXh0T2Zmc2V0LG4sZS5hbmdsZSx4LmZlYXR1cmVQcm9wZXJ0aWVzLHgud3JpdGluZ01vZGVzLHguYW5jaG9yLEkseixvLnBsYWNlZEdseXBoQXJyYXkpfWlmKGYmJihlLmluc2VydENvbGxpc2lvbkZlYXR1cmUoaCx2LGFbXCJpY29uLWlnbm9yZS1wbGFjZW1lbnRcIl0pLHY8PWkpKXt2YXIgTD1nZXRTaXplVmVydGV4RGF0YShyLG8uem9vbSxvLmljb25TaXplRGF0YS5jb3ZlcmluZ1pvb21SYW5nZSxcImljb24tc2l6ZVwiLHguZmVhdHVyZVByb3BlcnRpZXMpO28uYWRkU3ltYm9scyhvLmljb24seC5pY29uUXVhZHMsdixMLGFbXCJpY29uLWtlZXAtdXByaWdodFwiXSx4Lmljb25PZmZzZXQscyxlLmFuZ2xlLHguZmVhdHVyZVByb3BlcnRpZXMsMCx4LmFuY2hvcixJLHosby5wbGFjZWRJY29uQXJyYXkpfX19dCYmdGhpcy5hZGRUb0RlYnVnQnVmZmVycyhlKX0sU3ltYm9sQnVja2V0LnByb3RvdHlwZS5hZGRTeW1ib2xzPWZ1bmN0aW9uKGUsdCxvLHIsYSxpLG4scyxsLHksYyx1LHAseCl7Zm9yKHZhciBtPXRoaXMsaD1lLmluZGV4QXJyYXksZD1lLmxheW91dFZlcnRleEFycmF5LGY9ZS5keW5hbWljTGF5b3V0VmVydGV4QXJyYXksZz10aGlzLnpvb20sYj1NYXRoLm1heChNYXRoLmxvZyhvKS9NYXRoLkxOMitnLDApLEE9dGhpcy5nbHlwaE9mZnNldEFycmF5Lmxlbmd0aCx2PShjLmFuZ2xlK3MrMipNYXRoLlBJKSUoMipNYXRoLlBJKSxTPXY+MSpNYXRoLlBJLzQmJnY8PTMqTWF0aC5QSS80fHx2PjUqTWF0aC5QSS80JiZ2PD03Kk1hdGguUEkvNCxJPUJvb2xlYW4oeSZXcml0aW5nTW9kZS52ZXJ0aWNhbCkmJlMsQj0wLHo9dDtCPHoubGVuZ3RoO0IrPTEpe3ZhciBWPXpbQl07aWYoIW58fCFhfHxWLndyaXRpbmdNb2RlPT09V3JpdGluZ01vZGUudmVydGljYWw9PT1JKXt2YXIgTD1WLnRsLFQ9Vi50cix3PVYuYmwsTT1WLmJyLEM9Vi50ZXgsXz1lLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KDQsZS5sYXlvdXRWZXJ0ZXhBcnJheSxlLmluZGV4QXJyYXkpLGs9Xy52ZXJ0ZXhMZW5ndGgsUD1WLmdseXBoT2Zmc2V0WzFdO2FkZFZlcnRleChkLGMueCxjLnksTC54LFArTC55LEMueCxDLnksciksYWRkVmVydGV4KGQsYy54LGMueSxULngsUCtULnksQy54K0MudyxDLnksciksYWRkVmVydGV4KGQsYy54LGMueSx3LngsUCt3LnksQy54LEMueStDLmgsciksYWRkVmVydGV4KGQsYy54LGMueSxNLngsUCtNLnksQy54K0MudyxDLnkrQy5oLHIpLGFkZER5bmFtaWNBdHRyaWJ1dGVzKGYsYywwLGIpLGguZW1wbGFjZUJhY2soayxrKzEsaysyKSxoLmVtcGxhY2VCYWNrKGsrMSxrKzIsayszKSxfLnZlcnRleExlbmd0aCs9NCxfLnByaW1pdGl2ZUxlbmd0aCs9MixtLmdseXBoT2Zmc2V0QXJyYXkuZW1wbGFjZUJhY2soVi5nbHlwaE9mZnNldFswXSl9fXguZW1wbGFjZUJhY2soYy54LGMueSxBLHRoaXMuZ2x5cGhPZmZzZXRBcnJheS5sZW5ndGgtQSx1LHAsYy5zZWdtZW50LHI/clswXTowLHI/clsxXTowLGlbMF0saVsxXSxiLEkpLGUucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXMoZS5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsbCl9LFN5bWJvbEJ1Y2tldC5wcm90b3R5cGUuYWRkVG9EZWJ1Z0J1ZmZlcnM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMsbz10aGlzLmNvbGxpc2lvbkJveCxyPW8ubGF5b3V0VmVydGV4QXJyYXksYT1vLmluZGV4QXJyYXksaT0tZS5hbmdsZSxuPWUueVN0cmV0Y2gscz0wLGw9dC5zeW1ib2xJbnN0YW5jZXM7czxsLmxlbmd0aDtzKz0xKXt2YXIgeT1sW3NdO3kudGV4dENvbGxpc2lvbkZlYXR1cmU9e2JveFN0YXJ0SW5kZXg6eS50ZXh0Qm94U3RhcnRJbmRleCxib3hFbmRJbmRleDp5LnRleHRCb3hFbmRJbmRleH0seS5pY29uQ29sbGlzaW9uRmVhdHVyZT17Ym94U3RhcnRJbmRleDp5Lmljb25Cb3hTdGFydEluZGV4LGJveEVuZEluZGV4OnkuaWNvbkJveEVuZEluZGV4fTtmb3IodmFyIGM9MDtjPDI7YysrKXt2YXIgdT15WzA9PT1jP1widGV4dENvbGxpc2lvbkZlYXR1cmVcIjpcImljb25Db2xsaXNpb25GZWF0dXJlXCJdO2lmKHUpZm9yKHZhciBwPXUuYm94U3RhcnRJbmRleDtwPHUuYm94RW5kSW5kZXg7cCsrKXt2YXIgeD10LmNvbGxpc2lvbkJveEFycmF5LmdldChwKTtpZighKDE9PT1lLnBlcnNwZWN0aXZlUmF0aW8mJngubWF4U2NhbGU8MSkpe3ZhciBtPXguYW5jaG9yUG9pbnQsaD1uZXcgUG9pbnQoeC54MSx4LnkxKm4pLl9yb3RhdGUoaSksZD1uZXcgUG9pbnQoeC54Mix4LnkxKm4pLl9yb3RhdGUoaSksZj1uZXcgUG9pbnQoeC54MSx4LnkyKm4pLl9yb3RhdGUoaSksZz1uZXcgUG9pbnQoeC54Mix4LnkyKm4pLl9yb3RhdGUoaSksYj1NYXRoLm1heCgwLE1hdGgubWluKDI1LHQuem9vbStNYXRoLmxvZyh4Lm1heFNjYWxlKS9NYXRoLkxOMikpLEE9TWF0aC5tYXgoMCxNYXRoLm1pbigyNSx0Lnpvb20rTWF0aC5sb2coeC5wbGFjZW1lbnRTY2FsZSkvTWF0aC5MTjIpKSx2PW8uc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCxvLmxheW91dFZlcnRleEFycmF5LG8uaW5kZXhBcnJheSksUz12LnZlcnRleExlbmd0aDthZGRDb2xsaXNpb25Cb3hWZXJ0ZXgocixtLHkuYW5jaG9yLGgsYixBKSxhZGRDb2xsaXNpb25Cb3hWZXJ0ZXgocixtLHkuYW5jaG9yLGQsYixBKSxhZGRDb2xsaXNpb25Cb3hWZXJ0ZXgocixtLHkuYW5jaG9yLGcsYixBKSxhZGRDb2xsaXNpb25Cb3hWZXJ0ZXgocixtLHkuYW5jaG9yLGYsYixBKSxhLmVtcGxhY2VCYWNrKFMsUysxKSxhLmVtcGxhY2VCYWNrKFMrMSxTKzIpLGEuZW1wbGFjZUJhY2soUysyLFMrMyksYS5lbXBsYWNlQmFjayhTKzMsUyksdi52ZXJ0ZXhMZW5ndGgrPTQsdi5wcmltaXRpdmVMZW5ndGgrPTR9fX19fSxTeW1ib2xCdWNrZXQucHJvdG90eXBlLmFkZFN5bWJvbEluc3RhbmNlPWZ1bmN0aW9uKGUsdCxvLHIsYSxpLG4scyxsLHksYyx1LHAseCxtLGgsZCxmLGcsYixBKXt2YXIgdixTLEk9W10sQj1bXTtmb3IodmFyIHogaW4gbyl7dmFyIFY9cGFyc2VJbnQoeiwxMCk7b1tWXSYmKEI9Qi5jb25jYXQoaT9nZXRHbHlwaFF1YWRzKGUsb1tWXSxhLHAsZyxiLEEpOltdKSx2PW5ldyBDb2xsaXNpb25GZWF0dXJlKG4sdCxlLHMsbCx5LG9bVl0sYyx1LHAsITEpKX12YXIgTD12P3YuYm94U3RhcnRJbmRleDp0aGlzLmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxUPXY/di5ib3hFbmRJbmRleDp0aGlzLmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aDtyJiYoST1pP2dldEljb25RdWFkcyhlLHIsYSxkLG9bV3JpdGluZ01vZGUuaG9yaXpvbnRhbF0sZyxiKTpbXSxTPW5ldyBDb2xsaXNpb25GZWF0dXJlKG4sdCxlLHMsbCx5LHIsbSxoLGQsITApKTt2YXIgdz1TP1MuYm94U3RhcnRJbmRleDp0aGlzLmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxNPVM/Uy5ib3hFbmRJbmRleDp0aGlzLmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aDtUPlN5bWJvbEJ1Y2tldC5NQVhfSU5TVEFOQ0VTJiZ1dGlsLndhcm5PbmNlKFwiVG9vIG1hbnkgc3ltYm9scyBiZWluZyByZW5kZXJlZCBpbiBhIHRpbGUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L21hcGJveC1nbC1qcy9pc3N1ZXMvMjkwN1wiKSxNPlN5bWJvbEJ1Y2tldC5NQVhfSU5TVEFOQ0VTJiZ1dGlsLndhcm5PbmNlKFwiVG9vIG1hbnkgZ2x5cGhzIGJlaW5nIHJlbmRlcmVkIGluIGEgdGlsZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvbWFwYm94LWdsLWpzL2lzc3Vlcy8yOTA3XCIpO3ZhciBDPShvW1dyaXRpbmdNb2RlLnZlcnRpY2FsXT9Xcml0aW5nTW9kZS52ZXJ0aWNhbDowKXwob1tXcml0aW5nTW9kZS5ob3Jpem9udGFsXT9Xcml0aW5nTW9kZS5ob3Jpem9udGFsOjApO3RoaXMuc3ltYm9sSW5zdGFuY2VzLnB1c2goe3RleHRCb3hTdGFydEluZGV4OkwsdGV4dEJveEVuZEluZGV4OlQsaWNvbkJveFN0YXJ0SW5kZXg6dyxpY29uQm94RW5kSW5kZXg6TSxnbHlwaFF1YWRzOkIsaWNvblF1YWRzOkksdGV4dE9mZnNldDp4LGljb25PZmZzZXQ6ZixhbmNob3I6ZSxsaW5lOnQsZmVhdHVyZUluZGV4OnMsZmVhdHVyZVByb3BlcnRpZXM6Yix3cml0aW5nTW9kZXM6Q30pfSxTeW1ib2xCdWNrZXQucHJvZ3JhbUludGVyZmFjZXM9c3ltYm9sSW50ZXJmYWNlcyxTeW1ib2xCdWNrZXQuTUFYX0lOU1RBTkNFUz02NTUzNSxTeW1ib2xCdWNrZXQuYWRkRHluYW1pY0F0dHJpYnV0ZXM9YWRkRHluYW1pY0F0dHJpYnV0ZXMsbW9kdWxlLmV4cG9ydHM9U3ltYm9sQnVja2V0O1xufSx7XCIuLi8uLi9nbC9pbmRleF9idWZmZXJcIjo2MSxcIi4uLy4uL2dsL3ZlcnRleF9idWZmZXJcIjo2MixcIi4uLy4uL3NoYWRlcnMvZW5jb2RlX2F0dHJpYnV0ZVwiOjg1LFwiLi4vLi4vc3ltYm9sL2FuY2hvclwiOjE2NyxcIi4uLy4uL3N5bWJvbC9jbGlwX2xpbmVcIjoxNjksXCIuLi8uLi9zeW1ib2wvY29sbGlzaW9uX2ZlYXR1cmVcIjoxNzEsXCIuLi8uLi9zeW1ib2wvZ2V0X2FuY2hvcnNcIjoxNzMsXCIuLi8uLi9zeW1ib2wvbWVyZ2VsaW5lc1wiOjE3NCxcIi4uLy4uL3N5bWJvbC9xdWFkc1wiOjE3NixcIi4uLy4uL3N5bWJvbC9zaGFwaW5nXCI6MTc3LFwiLi4vLi4vc3ltYm9sL3RyYW5zZm9ybV90ZXh0XCI6MTc5LFwiLi4vLi4vdXRpbC9jbGFzc2lmeV9yaW5nc1wiOjIwNSxcIi4uLy4uL3V0aWwvZmluZF9wb2xlX29mX2luYWNjZXNzaWJpbGl0eVwiOjIxMSxcIi4uLy4uL3V0aWwvc2NyaXB0X2RldGVjdGlvblwiOjIxOCxcIi4uLy4uL3V0aWwvc3RydWN0X2FycmF5XCI6MjIwLFwiLi4vLi4vdXRpbC90b2tlblwiOjIyMixcIi4uLy4uL3V0aWwvdXRpbFwiOjIyMyxcIi4uLy4uL3V0aWwvdmVydGljYWxpemVfcHVuY3R1YXRpb25cIjoyMjUsXCIuLi9leHRlbnRcIjo0OCxcIi4uL2luZGV4X2FycmF5X3R5cGVcIjo1MCxcIi4uL2xvYWRfZ2VvbWV0cnlcIjo1MSxcIi4uL3Byb2dyYW1fY29uZmlndXJhdGlvblwiOjUzLFwiLi4vc2VnbWVudFwiOjU1LFwiLi4vdmVydGV4X2FycmF5X3R5cGVcIjo1NixcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyLFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiOjZ9XSw0ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz04MTkyO1xufSx7fV0sNDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdG9wRG93bkZlYXR1cmVDb21wYXJhdG9yKGUscil7cmV0dXJuIHItZX12YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIiksbG9hZEdlb21ldHJ5PV9kZXJlcV8oXCIuL2xvYWRfZ2VvbWV0cnlcIiksRVhURU5UPV9kZXJlcV8oXCIuL2V4dGVudFwiKSxmZWF0dXJlRmlsdGVyPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL2ZlYXR1cmVfZmlsdGVyXCIpLGNyZWF0ZVN0cnVjdEFycmF5VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIiksR3JpZD1fZGVyZXFfKFwiZ3JpZC1pbmRleFwiKSxEaWN0aW9uYXJ5Q29kZXI9X2RlcmVxXyhcIi4uL3V0aWwvZGljdGlvbmFyeV9jb2RlclwiKSx2dD1fZGVyZXFfKFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiKSxQcm90b2J1Zj1fZGVyZXFfKFwicGJmXCIpLEdlb0pTT05GZWF0dXJlPV9kZXJlcV8oXCIuLi91dGlsL3ZlY3RvcnRpbGVfdG9fZ2VvanNvblwiKSxhcnJheXNJbnRlcnNlY3Q9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKS5hcnJheXNJbnRlcnNlY3QsRmVhdHVyZUluZGV4QXJyYXk9Y3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7dHlwZTpcIlVpbnQzMlwiLG5hbWU6XCJmZWF0dXJlSW5kZXhcIn0se3R5cGU6XCJVaW50MTZcIixuYW1lOlwic291cmNlTGF5ZXJJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJidWNrZXRJbmRleFwifV19KSxGZWF0dXJlSW5kZXg9ZnVuY3Rpb24oZSxyLHQsYSl7dGhpcy5jb29yZD1lLHRoaXMub3ZlcnNjYWxpbmc9cix0aGlzLng9ZS54LHRoaXMueT1lLnksdGhpcy56PWUuei1NYXRoLmxvZyhyKS9NYXRoLkxOMix0aGlzLmdyaWQ9dHx8bmV3IEdyaWQoRVhURU5ULDE2LDApLHRoaXMuZmVhdHVyZUluZGV4QXJyYXk9YXx8bmV3IEZlYXR1cmVJbmRleEFycmF5fTtGZWF0dXJlSW5kZXguZGVzZXJpYWxpemU9ZnVuY3Rpb24oZSxyLHQpe3ZhciBhPW5ldyBGZWF0dXJlSW5kZXgoZS5jb29yZCxlLm92ZXJzY2FsaW5nLG5ldyBHcmlkKGUuZ3JpZCksbmV3IEZlYXR1cmVJbmRleEFycmF5KGUuZmVhdHVyZUluZGV4QXJyYXkpKTtyZXR1cm4gYS5yYXdUaWxlRGF0YT1yLGEuYnVja2V0TGF5ZXJJRHM9ZS5idWNrZXRMYXllcklEcyxhLnNldENvbGxpc2lvblRpbGUodCksYX0sRmVhdHVyZUluZGV4LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oZSxyLHQsYSxpKXt2YXIgbj10aGlzLG89dGhpcy5mZWF0dXJlSW5kZXhBcnJheS5sZW5ndGg7dGhpcy5mZWF0dXJlSW5kZXhBcnJheS5lbXBsYWNlQmFjayh0LGEsaSk7Zm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspe2Zvcih2YXIgdT1yW3NdLHk9WzEvMCwxLzAsLTEvMCwtMS8wXSxsPTA7bDx1Lmxlbmd0aDtsKyspe3ZhciBkPXVbbF07eVswXT1NYXRoLm1pbih5WzBdLGQueCkseVsxXT1NYXRoLm1pbih5WzFdLGQueSkseVsyXT1NYXRoLm1heCh5WzJdLGQueCkseVszXT1NYXRoLm1heCh5WzNdLGQueSl9bi5ncmlkLmluc2VydChvLHlbMF0seVsxXSx5WzJdLHlbM10pfX0sRmVhdHVyZUluZGV4LnByb3RvdHlwZS5zZXRDb2xsaXNpb25UaWxlPWZ1bmN0aW9uKGUpe3RoaXMuY29sbGlzaW9uVGlsZT1lfSxGZWF0dXJlSW5kZXgucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLmdyaWQudG9BcnJheUJ1ZmZlcigpO3JldHVybiBlJiZlLnB1c2gocikse2Nvb3JkOnRoaXMuY29vcmQsb3ZlcnNjYWxpbmc6dGhpcy5vdmVyc2NhbGluZyxncmlkOnIsZmVhdHVyZUluZGV4QXJyYXk6dGhpcy5mZWF0dXJlSW5kZXhBcnJheS5zZXJpYWxpemUoZSksYnVja2V0TGF5ZXJJRHM6dGhpcy5idWNrZXRMYXllcklEc319LEZlYXR1cmVJbmRleC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSxyKXt0aGlzLnZ0TGF5ZXJzfHwodGhpcy52dExheWVycz1uZXcgdnQuVmVjdG9yVGlsZShuZXcgUHJvdG9idWYodGhpcy5yYXdUaWxlRGF0YSkpLmxheWVycyx0aGlzLnNvdXJjZUxheWVyQ29kZXI9bmV3IERpY3Rpb25hcnlDb2Rlcih0aGlzLnZ0TGF5ZXJzP09iamVjdC5rZXlzKHRoaXMudnRMYXllcnMpLnNvcnQoKTpbXCJfZ2VvanNvblRpbGVMYXllclwiXSkpO2Zvcih2YXIgdD17fSxhPWUucGFyYW1zfHx7fSxpPUVYVEVOVC9lLnRpbGVTaXplL2Uuc2NhbGUsbj1mZWF0dXJlRmlsdGVyKGEuZmlsdGVyKSxvPWUucXVlcnlHZW9tZXRyeSxzPWUuYWRkaXRpb25hbFJhZGl1cyppLHU9MS8wLHk9MS8wLGw9LTEvMCxkPS0xLzAsYz0wO2M8by5sZW5ndGg7YysrKWZvcih2YXIgaD1vW2NdLGY9MDtmPGgubGVuZ3RoO2YrKyl7dmFyIHg9aFtmXTt1PU1hdGgubWluKHUseC54KSx5PU1hdGgubWluKHkseC55KSxsPU1hdGgubWF4KGwseC54KSxkPU1hdGgubWF4KGQseC55KX12YXIgdj10aGlzLmdyaWQucXVlcnkodS1zLHktcyxsK3MsZCtzKTt2LnNvcnQodG9wRG93bkZlYXR1cmVDb21wYXJhdG9yKSx0aGlzLmZpbHRlck1hdGNoaW5nKHQsdix0aGlzLmZlYXR1cmVJbmRleEFycmF5LG8sbixhLmxheWVycyxyLGUuYmVhcmluZyxpKTt2YXIgST10aGlzLmNvbGxpc2lvblRpbGUucXVlcnlSZW5kZXJlZFN5bWJvbHMobyxlLnNjYWxlKTtyZXR1cm4gSS5zb3J0KCksdGhpcy5maWx0ZXJNYXRjaGluZyh0LEksdGhpcy5jb2xsaXNpb25UaWxlLmNvbGxpc2lvbkJveEFycmF5LG8sbixhLmxheWVycyxyLGUuYmVhcmluZyxpKSx0fSxGZWF0dXJlSW5kZXgucHJvdG90eXBlLmZpbHRlck1hdGNoaW5nPWZ1bmN0aW9uKGUscix0LGEsaSxuLG8scyx1KXtmb3IodmFyIHksbD10aGlzLGQ9MDtkPHIubGVuZ3RoO2QrKyl7dmFyIGM9cltkXTtpZihjIT09eSl7eT1jO3ZhciBoPXQuZ2V0KGMpLGY9bC5idWNrZXRMYXllcklEc1toLmJ1Y2tldEluZGV4XTtpZighbnx8YXJyYXlzSW50ZXJzZWN0KG4sZikpe3ZhciB4PWwuc291cmNlTGF5ZXJDb2Rlci5kZWNvZGUoaC5zb3VyY2VMYXllckluZGV4KSx2PWwudnRMYXllcnNbeF0sST12LmZlYXR1cmUoaC5mZWF0dXJlSW5kZXgpO2lmKGkoSSkpZm9yKHZhciBwPW51bGwsZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgbT1mW2ddO2lmKCEobiYmbi5pbmRleE9mKG0pPDApKXt2YXIgRj1vW21dO2lmKEYmJihcInN5bWJvbFwiPT09Ri50eXBlfHwocHx8KHA9bG9hZEdlb21ldHJ5KEkpKSxGLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUoYSxJLHAsbC56LHMsdSkpKSl7dmFyIGI9bmV3IEdlb0pTT05GZWF0dXJlKEksbC56LGwueCxsLnkpO2IubGF5ZXI9Ri5zZXJpYWxpemUoKTt2YXIgTD1lW21dO3ZvaWQgMD09PUwmJihMPWVbbV09W10pLEwucHVzaCh7ZmVhdHVyZUluZGV4OmMsZmVhdHVyZTpifSl9fX19fX19LEZlYXR1cmVJbmRleC5wcm90b3R5cGUuaGFzTGF5ZXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciByPXRoaXMsdD0wLGE9ci5idWNrZXRMYXllcklEczt0PGEubGVuZ3RoO3QrPTEpZm9yKHZhciBpPWFbdF0sbj0wLG89aTtuPG8ubGVuZ3RoO24rPTEpe3ZhciBzPW9bbl07aWYoZT09PXMpcmV0dXJuITB9cmV0dXJuITF9LG1vZHVsZS5leHBvcnRzPUZlYXR1cmVJbmRleDtcbn0se1wiLi4vc3R5bGUtc3BlYy9mZWF0dXJlX2ZpbHRlclwiOjExMCxcIi4uL3V0aWwvZGljdGlvbmFyeV9jb2RlclwiOjIwNyxcIi4uL3V0aWwvc3RydWN0X2FycmF5XCI6MjIwLFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vdXRpbC92ZWN0b3J0aWxlX3RvX2dlb2pzb25cIjoyMjQsXCIuL2V4dGVudFwiOjQ4LFwiLi9sb2FkX2dlb21ldHJ5XCI6NTEsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6MixcIkBtYXBib3gvdmVjdG9yLXRpbGVcIjo2LFwiZ3JpZC1pbmRleFwiOjIyLFwicGJmXCI6Mjl9XSw1MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBjcmVhdGVJbmRleEFycmF5VHlwZShlKXtyZXR1cm4gY3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJ2ZXJ0aWNlc1wiLGNvbXBvbmVudHM6ZX1dfSl9dmFyIGNyZWF0ZVN0cnVjdEFycmF5VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIik7bW9kdWxlLmV4cG9ydHM9e0xpbmVJbmRleEFycmF5OmNyZWF0ZUluZGV4QXJyYXlUeXBlKDIpLFRyaWFuZ2xlSW5kZXhBcnJheTpjcmVhdGVJbmRleEFycmF5VHlwZSgzKX07XG59LHtcIi4uL3V0aWwvc3RydWN0X2FycmF5XCI6MjIwfV0sNTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY3JlYXRlQm91bmRzKGUpe3JldHVybnttaW46LTEqTWF0aC5wb3coMixlLTEpLG1heDpNYXRoLnBvdygyLGUtMSktMX19dmFyIHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxFWFRFTlQ9X2RlcmVxXyhcIi4vZXh0ZW50XCIpLGJvdW5kcz1jcmVhdGVCb3VuZHMoMTYpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1FWFRFTlQvZS5leHRlbnQscj1lLmxvYWRHZW9tZXRyeSgpLG49MDtuPHIubGVuZ3RoO24rKylmb3IodmFyIHU9cltuXSxvPTA7bzx1Lmxlbmd0aDtvKyspe3ZhciBhPXVbb107YS54PU1hdGgucm91bmQoYS54KnQpLGEueT1NYXRoLnJvdW5kKGEueSp0KSwoYS54PGJvdW5kcy5taW58fGEueD5ib3VuZHMubWF4fHxhLnk8Ym91bmRzLm1pbnx8YS55PmJvdW5kcy5tYXgpJiZ1dGlsLndhcm5PbmNlKFwiR2VvbWV0cnkgZXhjZWVkcyBhbGxvd2VkIGV4dGVudCwgcmVkdWNlIHlvdXIgdmVjdG9yIHRpbGUgYnVmZmVyIHNpemVcIil9cmV0dXJuIHJ9O1xufSx7XCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuL2V4dGVudFwiOjQ4fV0sNTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIGNyZWF0ZVN0cnVjdEFycmF5VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIiksUG9zQXJyYXk9Y3JlYXRlU3RydWN0QXJyYXlUeXBlKHttZW1iZXJzOlt7bmFtZTpcImFfcG9zXCIsdHlwZTpcIkludDE2XCIsY29tcG9uZW50czoyfV19KTttb2R1bGUuZXhwb3J0cz1Qb3NBcnJheTtcbn0se1wiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIjoyMjB9XSw1MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBwYWNrQ29sb3Iocil7cmV0dXJuW3BhY2tVaW50OFRvRmxvYXQoMjU1KnJbMF0sMjU1KnJbMV0pLHBhY2tVaW50OFRvRmxvYXQoMjU1KnJbMl0sMjU1KnJbM10pXX12YXIgY3JlYXRlVmVydGV4QXJyYXlUeXBlPV9kZXJlcV8oXCIuL3ZlcnRleF9hcnJheV90eXBlXCIpLGludGVycG9sYXRpb25GYWN0b3I9X2RlcmVxXyhcIi4uL3N0eWxlLXNwZWMvZnVuY3Rpb25cIikuaW50ZXJwb2xhdGlvbkZhY3RvcixwYWNrVWludDhUb0Zsb2F0PV9kZXJlcV8oXCIuLi9zaGFkZXJzL2VuY29kZV9hdHRyaWJ1dGVcIikucGFja1VpbnQ4VG9GbG9hdCxWZXJ0ZXhCdWZmZXI9X2RlcmVxXyhcIi4uL2dsL3ZlcnRleF9idWZmZXJcIiksQ29uc3RhbnRCaW5kZXI9ZnVuY3Rpb24ocix0LG8sZSl7dGhpcy5uYW1lPXIsdGhpcy50eXBlPXQsdGhpcy5wcm9wZXJ0eT1vLHRoaXMudXNlSW50ZWdlclpvb209ZX07Q29uc3RhbnRCaW5kZXIucHJvdG90eXBlLmRlZmluZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXCIjZGVmaW5lIEhBU19VTklGT1JNX3VfXCIrdGhpcy5uYW1lXX0sQ29uc3RhbnRCaW5kZXIucHJvdG90eXBlLnBvcHVsYXRlUGFpbnRBcnJheT1mdW5jdGlvbigpe30sQ29uc3RhbnRCaW5kZXIucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHIsdCxvLGUpe3ZhciBpPWUuem9vbSxuPW8uZ2V0UGFpbnRWYWx1ZSh0aGlzLnByb3BlcnR5LHt6b29tOnRoaXMudXNlSW50ZWdlclpvb20/TWF0aC5mbG9vcihpKTppfSk7XCJjb2xvclwiPT09dGhpcy50eXBlP3IudW5pZm9ybTRmdih0LnVuaWZvcm1zW1widV9cIit0aGlzLm5hbWVdLG4pOnIudW5pZm9ybTFmKHQudW5pZm9ybXNbXCJ1X1wiK3RoaXMubmFtZV0sbil9O3ZhciBTb3VyY2VGdW5jdGlvbkJpbmRlcj1mdW5jdGlvbihyLHQsbyl7dGhpcy5uYW1lPXIsdGhpcy50eXBlPXQsdGhpcy5wcm9wZXJ0eT1vfTtTb3VyY2VGdW5jdGlvbkJpbmRlci5wcm90b3R5cGUuZGVmaW5lcz1mdW5jdGlvbigpe3JldHVybltdfSxTb3VyY2VGdW5jdGlvbkJpbmRlci5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKHIsdCxvLGUsaSxuKXt2YXIgYT10aGlzLHM9ci5nZXRQYWludFZhbHVlKHRoaXMucHJvcGVydHksdm9pZCAwLG4pO2lmKFwiY29sb3JcIj09PXRoaXMudHlwZSlmb3IodmFyIHA9cGFja0NvbG9yKHMpLHU9ZTt1PGk7dSsrKXt2YXIgZj10LmdldCh1KTtmW1wiYV9cIithLm5hbWUrXCIwXCJdPXBbMF0sZltcImFfXCIrYS5uYW1lK1wiMVwiXT1wWzFdfWVsc2V7Zm9yKHZhciBjPWU7YzxpO2MrKyl7dC5nZXQoYylbXCJhX1wiK2EubmFtZV09c312YXIgbT1vW3RoaXMucHJvcGVydHldO20ubWF4PU1hdGgubWF4KG0ubWF4LHMpfX0sU291cmNlRnVuY3Rpb25CaW5kZXIucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHIsdCl7ci51bmlmb3JtMWYodC51bmlmb3Jtc1tcImFfXCIrdGhpcy5uYW1lK1wiX3RcIl0sMCl9O3ZhciBDb21wb3NpdGVGdW5jdGlvbkJpbmRlcj1mdW5jdGlvbihyLHQsbyxlLGkpe3RoaXMubmFtZT1yLHRoaXMudHlwZT10LHRoaXMucHJvcGVydHk9byx0aGlzLnVzZUludGVnZXJab29tPWUsdGhpcy56b29tPWl9O0NvbXBvc2l0ZUZ1bmN0aW9uQmluZGVyLnByb3RvdHlwZS5kZWZpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LENvbXBvc2l0ZUZ1bmN0aW9uQmluZGVyLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24ocix0LG8sZSxpLG4pe3ZhciBhPXRoaXMscz1yLmdldFBhaW50VmFsdWUodGhpcy5wcm9wZXJ0eSx7em9vbTp0aGlzLnpvb219LG4pLHA9ci5nZXRQYWludFZhbHVlKHRoaXMucHJvcGVydHkse3pvb206dGhpcy56b29tKzF9LG4pO2lmKFwiY29sb3JcIj09PXRoaXMudHlwZSlmb3IodmFyIHU9cGFja0NvbG9yKHMpLGY9cGFja0NvbG9yKHApLGM9ZTtjPGk7YysrKXt2YXIgbT10LmdldChjKTttW1wiYV9cIithLm5hbWUrXCIwXCJdPXVbMF0sbVtcImFfXCIrYS5uYW1lK1wiMVwiXT11WzFdLG1bXCJhX1wiK2EubmFtZStcIjJcIl09ZlswXSxtW1wiYV9cIithLm5hbWUrXCIzXCJdPWZbMV19ZWxzZXtmb3IodmFyIHk9ZTt5PGk7eSsrKXt2YXIgZz10LmdldCh5KTtnW1wiYV9cIithLm5hbWUrXCIwXCJdPXMsZ1tcImFfXCIrYS5uYW1lK1wiMVwiXT1wfXZhciBoPW9bdGhpcy5wcm9wZXJ0eV07aC5tYXg9TWF0aC5tYXgoaC5tYXgscyxwKX19LENvbXBvc2l0ZUZ1bmN0aW9uQmluZGVyLnByb3RvdHlwZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbihyLHQsbyxlKXt2YXIgaT1lLnpvb20sbj1pbnRlcnBvbGF0aW9uRmFjdG9yKHRoaXMudXNlSW50ZWdlclpvb20/TWF0aC5mbG9vcihpKTppLDEsdGhpcy56b29tLHRoaXMuem9vbSsxKTtyLnVuaWZvcm0xZih0LnVuaWZvcm1zW1wiYV9cIit0aGlzLm5hbWUrXCJfdFwiXSxuKX07dmFyIFByb2dyYW1Db25maWd1cmF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5iaW5kZXJzPXt9LHRoaXMuY2FjaGVLZXk9XCJcIn07UHJvZ3JhbUNvbmZpZ3VyYXRpb24uY3JlYXRlRHluYW1pYz1mdW5jdGlvbihyLHQsbyl7Zm9yKHZhciBlPW5ldyBQcm9ncmFtQ29uZmlndXJhdGlvbixpPVtdLG49MCxhPXIucGFpbnRBdHRyaWJ1dGVzfHxbXTtuPGEubGVuZ3RoO24rPTEpe3ZhciBzPWFbbl0scD1zLnByb3BlcnR5LHU9cy51c2VJbnRlZ2VyWm9vbXx8ITEsZj1zLm5hbWV8fHAucmVwbGFjZSh0LnR5cGUrXCItXCIsXCJcIikucmVwbGFjZSgvLS9nLFwiX1wiKSxjPXQuX3BhaW50U3BlY2lmaWNhdGlvbnNbcF0udHlwZTt0LmlzUGFpbnRWYWx1ZUZlYXR1cmVDb25zdGFudChwKT8oZS5iaW5kZXJzW2ZdPW5ldyBDb25zdGFudEJpbmRlcihmLGMscCx1KSxlLmNhY2hlS2V5Kz1cIi91X1wiK2YpOnQuaXNQYWludFZhbHVlWm9vbUNvbnN0YW50KHApPyhlLmJpbmRlcnNbZl09bmV3IFNvdXJjZUZ1bmN0aW9uQmluZGVyKGYsYyxwKSxlLmNhY2hlS2V5Kz1cIi9hX1wiK2YsaS5wdXNoKHtuYW1lOlwiYV9cIitmLHR5cGU6XCJGbG9hdDMyXCIsY29tcG9uZW50czpcImNvbG9yXCI9PT1jPzI6MX0pKTooZS5iaW5kZXJzW2ZdPW5ldyBDb21wb3NpdGVGdW5jdGlvbkJpbmRlcihmLGMscCx1LG8pLGUuY2FjaGVLZXkrPVwiL3pfXCIrZixpLnB1c2goe25hbWU6XCJhX1wiK2YsdHlwZTpcIkZsb2F0MzJcIixjb21wb25lbnRzOlwiY29sb3JcIj09PWM/NDoyfSkpfXJldHVybiBlLlBhaW50VmVydGV4QXJyYXk9Y3JlYXRlVmVydGV4QXJyYXlUeXBlKGkpLGUuaW50ZXJmYWNlPXIsZS5sYXllcj10LGV9LFByb2dyYW1Db25maWd1cmF0aW9uLmNyZWF0ZUJhc2ljRmlsbD1mdW5jdGlvbigpe3ZhciByPW5ldyBQcm9ncmFtQ29uZmlndXJhdGlvbjtyZXR1cm4gci5iaW5kZXJzLmNvbG9yPW5ldyBDb25zdGFudEJpbmRlcihcImNvbG9yXCIsXCJjb2xvclwiLFwiZmlsbC1jb2xvclwiLCExKSxyLmNhY2hlS2V5Kz1cIi91X2NvbG9yXCIsci5iaW5kZXJzLm9wYWNpdHk9bmV3IENvbnN0YW50QmluZGVyKFwib3BhY2l0eVwiLFwibnVtYmVyXCIsXCJmaWxsLW9wYWNpdHlcIiwhMSksci5jYWNoZUtleSs9XCIvdV9vcGFjaXR5XCIscn0sUHJvZ3JhbUNvbmZpZ3VyYXRpb24ucHJvdG90eXBlLmNyZWF0ZVBhaW50UHJvcGVydHlTdGF0aXN0aWNzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyx0PXt9O2Zvcih2YXIgbyBpbiByLmJpbmRlcnMpdFtyLmJpbmRlcnNbb10ucHJvcGVydHldPXttYXg6LTEvMH07cmV0dXJuIHR9LFByb2dyYW1Db25maWd1cmF0aW9uLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24ocix0KXt2YXIgbz10aGlzLGU9dGhpcy5wYWludFZlcnRleEFycmF5O2lmKDAhPT1lLmJ5dGVzUGVyRWxlbWVudCl7dmFyIGk9ZS5sZW5ndGg7ZS5yZXNpemUocik7Zm9yKHZhciBuIGluIG8uYmluZGVycylvLmJpbmRlcnNbbl0ucG9wdWxhdGVQYWludEFycmF5KG8ubGF5ZXIsZSxvLnBhaW50UHJvcGVydHlTdGF0aXN0aWNzLGkscix0KX19LFByb2dyYW1Db25maWd1cmF0aW9uLnByb3RvdHlwZS5kZWZpbmVzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyx0PVtdO2Zvcih2YXIgbyBpbiByLmJpbmRlcnMpdC5wdXNoLmFwcGx5KHQsci5iaW5kZXJzW29dLmRlZmluZXMoKSk7cmV0dXJuIHR9LFByb2dyYW1Db25maWd1cmF0aW9uLnByb3RvdHlwZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbihyLHQsbyxlKXt2YXIgaT10aGlzO2Zvcih2YXIgbiBpbiBpLmJpbmRlcnMpaS5iaW5kZXJzW25dLnNldFVuaWZvcm1zKHIsdCxvLGUpfSxQcm9ncmFtQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKHIpe3JldHVybiAwPT09dGhpcy5wYWludFZlcnRleEFycmF5Lmxlbmd0aD9udWxsOnthcnJheTp0aGlzLnBhaW50VmVydGV4QXJyYXkuc2VyaWFsaXplKHIpLHR5cGU6dGhpcy5wYWludFZlcnRleEFycmF5LmNvbnN0cnVjdG9yLnNlcmlhbGl6ZSgpLHN0YXRpc3RpY3M6dGhpcy5wYWludFByb3BlcnR5U3RhdGlzdGljc319LFByb2dyYW1Db25maWd1cmF0aW9uLmRlc2VyaWFsaXplPWZ1bmN0aW9uKHIsdCxvLGUpe3ZhciBpPVByb2dyYW1Db25maWd1cmF0aW9uLmNyZWF0ZUR5bmFtaWMocix0LG8pO3JldHVybiBlJiYoaS5QYWludFZlcnRleEFycmF5PWNyZWF0ZVZlcnRleEFycmF5VHlwZShlLnR5cGUubWVtYmVycyksaS5wYWludFZlcnRleEFycmF5PW5ldyBpLlBhaW50VmVydGV4QXJyYXkoZS5hcnJheSksaS5wYWludFByb3BlcnR5U3RhdGlzdGljcz1lLnN0YXRpc3RpY3MpLGl9LFByb2dyYW1Db25maWd1cmF0aW9uLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24ocil7dGhpcy5wYWludFZlcnRleEFycmF5JiYodGhpcy5wYWludFZlcnRleEJ1ZmZlcj1uZXcgVmVydGV4QnVmZmVyKHIsdGhpcy5wYWludFZlcnRleEFycmF5KSl9LFByb2dyYW1Db25maWd1cmF0aW9uLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5wYWludFZlcnRleEJ1ZmZlci5kZXN0cm95KCl9O3ZhciBQcm9ncmFtQ29uZmlndXJhdGlvblNldD1mdW5jdGlvbihyLHQsbyxlKXt2YXIgaT10aGlzO2lmKHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXt9LGUpZm9yKHZhciBuPTAsYT10O248YS5sZW5ndGg7bis9MSl7dmFyIHM9YVtuXTtpLnByb2dyYW1Db25maWd1cmF0aW9uc1tzLmlkXT1Qcm9ncmFtQ29uZmlndXJhdGlvbi5kZXNlcmlhbGl6ZShyLHMsbyxlW3MuaWRdKX1lbHNlIGZvcih2YXIgcD0wLHU9dDtwPHUubGVuZ3RoO3ArPTEpe3ZhciBmPXVbcF0sYz1Qcm9ncmFtQ29uZmlndXJhdGlvbi5jcmVhdGVEeW5hbWljKHIsZixvKTtjLnBhaW50VmVydGV4QXJyYXk9bmV3IGMuUGFpbnRWZXJ0ZXhBcnJheSxjLnBhaW50UHJvcGVydHlTdGF0aXN0aWNzPWMuY3JlYXRlUGFpbnRQcm9wZXJ0eVN0YXRpc3RpY3MoKSxpLnByb2dyYW1Db25maWd1cmF0aW9uc1tmLmlkXT1jfX07UHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQucHJvdG90eXBlLnBvcHVsYXRlUGFpbnRBcnJheXM9ZnVuY3Rpb24ocix0KXt2YXIgbz10aGlzO2Zvcih2YXIgZSBpbiBvLnByb2dyYW1Db25maWd1cmF0aW9ucylvLnByb2dyYW1Db25maWd1cmF0aW9uc1tlXS5wb3B1bGF0ZVBhaW50QXJyYXkocix0KX0sUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbihyKXt2YXIgdD10aGlzLG89e307Zm9yKHZhciBlIGluIHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKXt2YXIgaT10LnByb2dyYW1Db25maWd1cmF0aW9uc1tlXS5zZXJpYWxpemUocik7aSYmKG9bZV09aSl9cmV0dXJuIG99LFByb2dyYW1Db25maWd1cmF0aW9uU2V0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW3JdfSxQcm9ncmFtQ29uZmlndXJhdGlvblNldC5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHIpe3ZhciB0PXRoaXM7Zm9yKHZhciBvIGluIHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKXQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW29dLnVwbG9hZChyKX0sUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2Zvcih2YXIgdCBpbiByLnByb2dyYW1Db25maWd1cmF0aW9ucylyLnByb2dyYW1Db25maWd1cmF0aW9uc1t0XS5kZXN0cm95KCl9LG1vZHVsZS5leHBvcnRzPXtQcm9ncmFtQ29uZmlndXJhdGlvbjpQcm9ncmFtQ29uZmlndXJhdGlvbixQcm9ncmFtQ29uZmlndXJhdGlvblNldDpQcm9ncmFtQ29uZmlndXJhdGlvblNldH07XG59LHtcIi4uL2dsL3ZlcnRleF9idWZmZXJcIjo2MixcIi4uL3NoYWRlcnMvZW5jb2RlX2F0dHJpYnV0ZVwiOjg1LFwiLi4vc3R5bGUtc3BlYy9mdW5jdGlvblwiOjExMixcIi4vdmVydGV4X2FycmF5X3R5cGVcIjo1Nn1dLDU0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBjcmVhdGVTdHJ1Y3RBcnJheVR5cGU9X2RlcmVxXyhcIi4uL3V0aWwvc3RydWN0X2FycmF5XCIpLFJhc3RlckJvdW5kc0FycmF5PWNyZWF0ZVN0cnVjdEFycmF5VHlwZSh7bWVtYmVyczpbe25hbWU6XCJhX3Bvc1wiLHR5cGU6XCJJbnQxNlwiLGNvbXBvbmVudHM6Mn0se25hbWU6XCJhX3RleHR1cmVfcG9zXCIsdHlwZTpcIkludDE2XCIsY29tcG9uZW50czoyfV19KTttb2R1bGUuZXhwb3J0cz1SYXN0ZXJCb3VuZHNBcnJheTtcbn0se1wiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIjoyMjB9XSw1NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgcmVmPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksd2Fybk9uY2U9cmVmLndhcm5PbmNlLE1BWF9WRVJURVhfQVJSQVlfTEVOR1RIPU1hdGgucG93KDIsMTYpLTEsU2VnbWVudFZlY3Rvcj1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5zZWdtZW50cz1lfTtTZWdtZW50VmVjdG9yLnByb3RvdHlwZS5wcmVwYXJlU2VnbWVudD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5zZWdtZW50c1t0aGlzLnNlZ21lbnRzLmxlbmd0aC0xXTtyZXR1cm4gZT5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmd2Fybk9uY2UoXCJNYXggdmVydGljZXMgcGVyIHNlZ21lbnQgaXMgXCIrTUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEgrXCI6IGJ1Y2tldCByZXF1ZXN0ZWQgXCIrZSksKCFufHxuLnZlcnRleExlbmd0aCtlPm1vZHVsZS5leHBvcnRzLk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIKSYmKG49e3ZlcnRleE9mZnNldDp0Lmxlbmd0aCxwcmltaXRpdmVPZmZzZXQ6ci5sZW5ndGgsdmVydGV4TGVuZ3RoOjAscHJpbWl0aXZlTGVuZ3RoOjB9LHRoaXMuc2VnbWVudHMucHVzaChuKSksbn0sU2VnbWVudFZlY3Rvci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VnbWVudHN9LFNlZ21lbnRWZWN0b3IucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PTAscj1lLnNlZ21lbnRzO3Q8ci5sZW5ndGg7dCs9MSl7dmFyIG49clt0XTtmb3IodmFyIHMgaW4gbi52YW9zKW4udmFvc1tzXS5kZXN0cm95KCl9fSxtb2R1bGUuZXhwb3J0cz17U2VnbWVudFZlY3RvcjpTZWdtZW50VmVjdG9yLE1BWF9WRVJURVhfQVJSQVlfTEVOR1RIOk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIfTtcbn0se1wiLi4vdXRpbC91dGlsXCI6MjIzfV0sNTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY3JlYXRlVmVydGV4QXJyYXlUeXBlKHIpe3JldHVybiBjcmVhdGVTdHJ1Y3RBcnJheVR5cGUoe21lbWJlcnM6cixhbGlnbm1lbnQ6NH0pfXZhciBjcmVhdGVTdHJ1Y3RBcnJheVR5cGU9X2RlcmVxXyhcIi4uL3V0aWwvc3RydWN0X2FycmF5XCIpO21vZHVsZS5leHBvcnRzPWNyZWF0ZVZlcnRleEFycmF5VHlwZTtcbn0se1wiLi4vdXRpbC9zdHJ1Y3RfYXJyYXlcIjoyMjB9XSw1NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgQ29vcmRpbmF0ZT1mdW5jdGlvbihvLHQsbil7dGhpcy5jb2x1bW49byx0aGlzLnJvdz10LHRoaXMuem9vbT1ufTtDb29yZGluYXRlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgQ29vcmRpbmF0ZSh0aGlzLmNvbHVtbix0aGlzLnJvdyx0aGlzLnpvb20pfSxDb29yZGluYXRlLnByb3RvdHlwZS56b29tVG89ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fem9vbVRvKG8pfSxDb29yZGluYXRlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fc3ViKG8pfSxDb29yZGluYXRlLnByb3RvdHlwZS5fem9vbVRvPWZ1bmN0aW9uKG8pe3ZhciB0PU1hdGgucG93KDIsby10aGlzLnpvb20pO3JldHVybiB0aGlzLmNvbHVtbio9dCx0aGlzLnJvdyo9dCx0aGlzLnpvb209byx0aGlzfSxDb29yZGluYXRlLnByb3RvdHlwZS5fc3ViPWZ1bmN0aW9uKG8pe3JldHVybiBvPW8uem9vbVRvKHRoaXMuem9vbSksdGhpcy5jb2x1bW4tPW8uY29sdW1uLHRoaXMucm93LT1vLnJvdyx0aGlzfSxtb2R1bGUuZXhwb3J0cz1Db29yZGluYXRlO1xufSx7fV0sNTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHdyYXA9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKS53cmFwLExuZ0xhdD1mdW5jdGlvbih0LG4pe2lmKGlzTmFOKHQpfHxpc05hTihuKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIExuZ0xhdCBvYmplY3Q6IChcIit0K1wiLCBcIituK1wiKVwiKTtpZih0aGlzLmxuZz0rdCx0aGlzLmxhdD0rbix0aGlzLmxhdD45MHx8dGhpcy5sYXQ8LTkwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTG5nTGF0IGxhdGl0dWRlIHZhbHVlOiBtdXN0IGJlIGJldHdlZW4gLTkwIGFuZCA5MFwiKX07TG5nTGF0LnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBMbmdMYXQod3JhcCh0aGlzLmxuZywtMTgwLDE4MCksdGhpcy5sYXQpfSxMbmdMYXQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5sbmcsdGhpcy5sYXRdfSxMbmdMYXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJMbmdMYXQoXCIrdGhpcy5sbmcrXCIsIFwiK3RoaXMubGF0K1wiKVwifSxMbmdMYXQucHJvdG90eXBlLnRvQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBuPTM2MCp0LzQwMDc1MDE3LHI9bi9NYXRoLmNvcyhNYXRoLlBJLzE4MCp0aGlzLmxhdCk7cmV0dXJuIG5ldyhfZGVyZXFfKFwiLi9sbmdfbGF0X2JvdW5kc1wiKSkobmV3IExuZ0xhdCh0aGlzLmxuZy1yLHRoaXMubGF0LW4pLG5ldyBMbmdMYXQodGhpcy5sbmcrcix0aGlzLmxhdCtuKSl9LExuZ0xhdC5jb252ZXJ0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBMbmdMYXQpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSYmMj09PXQubGVuZ3RoKXJldHVybiBuZXcgTG5nTGF0KE51bWJlcih0WzBdKSxOdW1iZXIodFsxXSkpO2lmKCFBcnJheS5pc0FycmF5KHQpJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQpcmV0dXJuIG5ldyBMbmdMYXQoTnVtYmVyKHQubG5nKSxOdW1iZXIodC5sYXQpKTt0aHJvdyBuZXcgRXJyb3IoXCJgTG5nTGF0TGlrZWAgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBMbmdMYXQgaW5zdGFuY2UsIGFuIG9iamVjdCB7bG5nOiA8bG5nPiwgbGF0OiA8bGF0Pn0sIG9yIGFuIGFycmF5IG9mIFs8bG5nPiwgPGxhdD5dXCIpfSxtb2R1bGUuZXhwb3J0cz1MbmdMYXQ7XG59LHtcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIi4vbG5nX2xhdF9ib3VuZHNcIjo1OX1dLDU5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBMbmdMYXQ9X2RlcmVxXyhcIi4vbG5nX2xhdFwiKSxMbmdMYXRCb3VuZHM9ZnVuY3Rpb24odCxuKXt0JiYobj90aGlzLnNldFNvdXRoV2VzdCh0KS5zZXROb3J0aEVhc3Qobik6ND09PXQubGVuZ3RoP3RoaXMuc2V0U291dGhXZXN0KFt0WzBdLHRbMV1dKS5zZXROb3J0aEVhc3QoW3RbMl0sdFszXV0pOnRoaXMuc2V0U291dGhXZXN0KHRbMF0pLnNldE5vcnRoRWFzdCh0WzFdKSl9O0xuZ0xhdEJvdW5kcy5wcm90b3R5cGUuc2V0Tm9ydGhFYXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uZT10IGluc3RhbmNlb2YgTG5nTGF0P25ldyBMbmdMYXQodC5sbmcsdC5sYXQpOkxuZ0xhdC5jb252ZXJ0KHQpLHRoaXN9LExuZ0xhdEJvdW5kcy5wcm90b3R5cGUuc2V0U291dGhXZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdz10IGluc3RhbmNlb2YgTG5nTGF0P25ldyBMbmdMYXQodC5sbmcsdC5sYXQpOkxuZ0xhdC5jb252ZXJ0KHQpLHRoaXN9LExuZ0xhdEJvdW5kcy5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKHQpe3ZhciBuLGUscz10aGlzLl9zdyxvPXRoaXMuX25lO2lmKHQgaW5zdGFuY2VvZiBMbmdMYXQpbj10LGU9dDtlbHNle2lmKCEodCBpbnN0YW5jZW9mIExuZ0xhdEJvdW5kcykpcmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5ldmVyeShBcnJheS5pc0FycmF5KT90aGlzLmV4dGVuZChMbmdMYXRCb3VuZHMuY29udmVydCh0KSk6dGhpcy5leHRlbmQoTG5nTGF0LmNvbnZlcnQodCkpOnRoaXM7aWYobj10Ll9zdyxlPXQuX25lLCFufHwhZSlyZXR1cm4gdGhpc31yZXR1cm4gc3x8bz8ocy5sbmc9TWF0aC5taW4obi5sbmcscy5sbmcpLHMubGF0PU1hdGgubWluKG4ubGF0LHMubGF0KSxvLmxuZz1NYXRoLm1heChlLmxuZyxvLmxuZyksby5sYXQ9TWF0aC5tYXgoZS5sYXQsby5sYXQpKToodGhpcy5fc3c9bmV3IExuZ0xhdChuLmxuZyxuLmxhdCksdGhpcy5fbmU9bmV3IExuZ0xhdChlLmxuZyxlLmxhdCkpLHRoaXN9LExuZ0xhdEJvdW5kcy5wcm90b3R5cGUuZ2V0Q2VudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBMbmdMYXQoKHRoaXMuX3N3LmxuZyt0aGlzLl9uZS5sbmcpLzIsKHRoaXMuX3N3LmxhdCt0aGlzLl9uZS5sYXQpLzIpfSxMbmdMYXRCb3VuZHMucHJvdG90eXBlLmdldFNvdXRoV2VzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zd30sTG5nTGF0Qm91bmRzLnByb3RvdHlwZS5nZXROb3J0aEVhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV9LExuZ0xhdEJvdW5kcy5wcm90b3R5cGUuZ2V0Tm9ydGhXZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBMbmdMYXQodGhpcy5nZXRXZXN0KCksdGhpcy5nZXROb3J0aCgpKX0sTG5nTGF0Qm91bmRzLnByb3RvdHlwZS5nZXRTb3V0aEVhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IExuZ0xhdCh0aGlzLmdldEVhc3QoKSx0aGlzLmdldFNvdXRoKCkpfSxMbmdMYXRCb3VuZHMucHJvdG90eXBlLmdldFdlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3cubG5nfSxMbmdMYXRCb3VuZHMucHJvdG90eXBlLmdldFNvdXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N3LmxhdH0sTG5nTGF0Qm91bmRzLnByb3RvdHlwZS5nZXRFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lLmxuZ30sTG5nTGF0Qm91bmRzLnByb3RvdHlwZS5nZXROb3J0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZS5sYXR9LExuZ0xhdEJvdW5kcy5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVyblt0aGlzLl9zdy50b0FycmF5KCksdGhpcy5fbmUudG9BcnJheSgpXX0sTG5nTGF0Qm91bmRzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiTG5nTGF0Qm91bmRzKFwiK3RoaXMuX3N3LnRvU3RyaW5nKCkrXCIsIFwiK3RoaXMuX25lLnRvU3RyaW5nKCkrXCIpXCJ9LExuZ0xhdEJvdW5kcy5jb252ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiF0fHx0IGluc3RhbmNlb2YgTG5nTGF0Qm91bmRzP3Q6bmV3IExuZ0xhdEJvdW5kcyh0KX0sbW9kdWxlLmV4cG9ydHM9TG5nTGF0Qm91bmRzO1xufSx7XCIuL2xuZ19sYXRcIjo1OH1dLDYwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBMbmdMYXQ9X2RlcmVxXyhcIi4vbG5nX2xhdFwiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxDb29yZGluYXRlPV9kZXJlcV8oXCIuL2Nvb3JkaW5hdGVcIiksdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLGludGVycD1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy91dGlsL2ludGVycG9sYXRlXCIpLFRpbGVDb29yZD1fZGVyZXFfKFwiLi4vc291cmNlL3RpbGVfY29vcmRcIiksRVhURU5UPV9kZXJlcV8oXCIuLi9kYXRhL2V4dGVudFwiKSxnbG1hdHJpeD1fZGVyZXFfKFwiQG1hcGJveC9nbC1tYXRyaXhcIiksdmVjND1nbG1hdHJpeC52ZWM0LG1hdDQ9Z2xtYXRyaXgubWF0NCxtYXQyPWdsbWF0cml4Lm1hdDIsVHJhbnNmb3JtPWZ1bmN0aW9uKHQsbyxpKXt0aGlzLnRpbGVTaXplPTUxMix0aGlzLl9yZW5kZXJXb3JsZENvcGllcz12b2lkIDA9PT1pfHxpLHRoaXMuX21pblpvb209dHx8MCx0aGlzLl9tYXhab29tPW98fDIyLHRoaXMubGF0UmFuZ2U9Wy04NS4wNTExMyw4NS4wNTExM10sdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fY2VudGVyPW5ldyBMbmdMYXQoMCwwKSx0aGlzLnpvb209MCx0aGlzLmFuZ2xlPTAsdGhpcy5fZm92PS42NDM1MDExMDg3OTMyODQ0LHRoaXMuX3BpdGNoPTAsdGhpcy5fdW5tb2RpZmllZD0hMH0scHJvdG90eXBlQWNjZXNzb3JzPXttaW5ab29tOnt9LG1heFpvb206e30scmVuZGVyV29ybGRDb3BpZXM6e30sd29ybGRTaXplOnt9LGNlbnRlclBvaW50Ont9LHNpemU6e30sYmVhcmluZzp7fSxwaXRjaDp7fSxmb3Y6e30sem9vbTp7fSxjZW50ZXI6e30sdW5tb2RpZmllZDp7fSx4Ont9LHk6e30scG9pbnQ6e319O3Byb3RvdHlwZUFjY2Vzc29ycy5taW5ab29tLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5ab29tfSxwcm90b3R5cGVBY2Nlc3NvcnMubWluWm9vbS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fbWluWm9vbSE9PXQmJih0aGlzLl9taW5ab29tPXQsdGhpcy56b29tPU1hdGgubWF4KHRoaXMuem9vbSx0KSl9LHByb3RvdHlwZUFjY2Vzc29ycy5tYXhab29tLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhab29tfSxwcm90b3R5cGVBY2Nlc3NvcnMubWF4Wm9vbS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fbWF4Wm9vbSE9PXQmJih0aGlzLl9tYXhab29tPXQsdGhpcy56b29tPU1hdGgubWluKHRoaXMuem9vbSx0KSl9LHByb3RvdHlwZUFjY2Vzc29ycy5yZW5kZXJXb3JsZENvcGllcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyV29ybGRDb3BpZXN9LHByb3RvdHlwZUFjY2Vzc29ycy53b3JsZFNpemUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNpemUqdGhpcy5zY2FsZX0scHJvdG90eXBlQWNjZXNzb3JzLmNlbnRlclBvaW50LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemUuX2RpdigyKX0scHJvdG90eXBlQWNjZXNzb3JzLnNpemUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX0scHJvdG90eXBlQWNjZXNzb3JzLmJlYXJpbmcuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuLXRoaXMuYW5nbGUvTWF0aC5QSSoxODB9LHByb3RvdHlwZUFjY2Vzc29ycy5iZWFyaW5nLnNldD1mdW5jdGlvbih0KXt2YXIgbz0tdXRpbC53cmFwKHQsLTE4MCwxODApKk1hdGguUEkvMTgwO3RoaXMuYW5nbGUhPT1vJiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLmFuZ2xlPW8sdGhpcy5fY2FsY01hdHJpY2VzKCksdGhpcy5yb3RhdGlvbk1hdHJpeD1tYXQyLmNyZWF0ZSgpLG1hdDIucm90YXRlKHRoaXMucm90YXRpb25NYXRyaXgsdGhpcy5yb3RhdGlvbk1hdHJpeCx0aGlzLmFuZ2xlKSl9LHByb3RvdHlwZUFjY2Vzc29ycy5waXRjaC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGl0Y2gvTWF0aC5QSSoxODB9LHByb3RvdHlwZUFjY2Vzc29ycy5waXRjaC5zZXQ9ZnVuY3Rpb24odCl7dmFyIG89dXRpbC5jbGFtcCh0LDAsNjApLzE4MCpNYXRoLlBJO3RoaXMuX3BpdGNoIT09byYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5fcGl0Y2g9byx0aGlzLl9jYWxjTWF0cmljZXMoKSl9LHByb3RvdHlwZUFjY2Vzc29ycy5mb3YuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvdi9NYXRoLlBJKjE4MH0scHJvdG90eXBlQWNjZXNzb3JzLmZvdi5zZXQ9ZnVuY3Rpb24odCl7dD1NYXRoLm1heCguMDEsTWF0aC5taW4oNjAsdCkpLHRoaXMuX2ZvdiE9PXQmJih0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2Zvdj10LzE4MCpNYXRoLlBJLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0scHJvdG90eXBlQWNjZXNzb3JzLnpvb20uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LHByb3RvdHlwZUFjY2Vzc29ycy56b29tLnNldD1mdW5jdGlvbih0KXt2YXIgbz1NYXRoLm1pbihNYXRoLm1heCh0LHRoaXMubWluWm9vbSksdGhpcy5tYXhab29tKTt0aGlzLl96b29tIT09byYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5fem9vbT1vLHRoaXMuc2NhbGU9dGhpcy56b29tU2NhbGUobyksdGhpcy50aWxlWm9vbT1NYXRoLmZsb29yKG8pLHRoaXMuem9vbUZyYWN0aW9uPW8tdGhpcy50aWxlWm9vbSx0aGlzLl9jb25zdHJhaW4oKSx0aGlzLl9jYWxjTWF0cmljZXMoKSl9LHByb3RvdHlwZUFjY2Vzc29ycy5jZW50ZXIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NlbnRlcn0scHJvdG90eXBlQWNjZXNzb3JzLmNlbnRlci5zZXQ9ZnVuY3Rpb24odCl7dC5sYXQ9PT10aGlzLl9jZW50ZXIubGF0JiZ0LmxuZz09PXRoaXMuX2NlbnRlci5sbmd8fCh0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2NlbnRlcj10LHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0sVHJhbnNmb3JtLnByb3RvdHlwZS5jb3ZlcmluZ1pvb21MZXZlbD1mdW5jdGlvbih0KXtyZXR1cm4odC5yb3VuZFpvb20/TWF0aC5yb3VuZDpNYXRoLmZsb29yKSh0aGlzLnpvb20rdGhpcy5zY2FsZVpvb20odGhpcy50aWxlU2l6ZS90LnRpbGVTaXplKSl9LFRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0VmlzaWJsZVdyYXBwZWRDb29yZGluYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIG89dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IFBvaW50KDAsMCksMCksaT10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgUG9pbnQodGhpcy53aWR0aCwwKSwwKSxlPU1hdGguZmxvb3Ioby5jb2x1bW4pLHI9TWF0aC5mbG9vcihpLmNvbHVtbiksbj1bdF0scz1lO3M8PXI7cysrKTAhPT1zJiZuLnB1c2gobmV3IFRpbGVDb29yZCh0LnosdC54LHQueSxzKSk7cmV0dXJuIG59LFRyYW5zZm9ybS5wcm90b3R5cGUuY292ZXJpbmdUaWxlcz1mdW5jdGlvbih0KXt2YXIgbz10aGlzLmNvdmVyaW5nWm9vbUxldmVsKHQpLGk9bztpZih2b2lkIDAhPT10Lm1pbnpvb20mJm88dC5taW56b29tKXJldHVybltdO3ZvaWQgMCE9PXQubWF4em9vbSYmbz50Lm1heHpvb20mJihvPXQubWF4em9vbSk7dmFyIGU9dGhpcy5wb2ludENvb3JkaW5hdGUodGhpcy5jZW50ZXJQb2ludCxvKSxyPW5ldyBQb2ludChlLmNvbHVtbi0uNSxlLnJvdy0uNSksbj1bdGhpcy5wb2ludENvb3JkaW5hdGUobmV3IFBvaW50KDAsMCksbyksdGhpcy5wb2ludENvb3JkaW5hdGUobmV3IFBvaW50KHRoaXMud2lkdGgsMCksbyksdGhpcy5wb2ludENvb3JkaW5hdGUobmV3IFBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLG8pLHRoaXMucG9pbnRDb29yZGluYXRlKG5ldyBQb2ludCgwLHRoaXMuaGVpZ2h0KSxvKV07cmV0dXJuIFRpbGVDb29yZC5jb3ZlcihvLG4sdC5yZXBhcnNlT3ZlcnNjYWxlZD9pOm8sdGhpcy5fcmVuZGVyV29ybGRDb3BpZXMpLnNvcnQoZnVuY3Rpb24odCxvKXtyZXR1cm4gci5kaXN0KHQpLXIuZGlzdChvKX0pfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0LG8pe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1vLHRoaXMucGl4ZWxzVG9HTFVuaXRzPVsyL3QsLTIvb10sdGhpcy5fY29uc3RyYWluKCksdGhpcy5fY2FsY01hdHJpY2VzKCl9LHByb3RvdHlwZUFjY2Vzc29ycy51bm1vZGlmaWVkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91bm1vZGlmaWVkfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnpvb21TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3coMix0KX0sVHJhbnNmb3JtLnByb3RvdHlwZS5zY2FsZVpvb209ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4yfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnByb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLmxuZ1godC5sbmcpLHRoaXMubGF0WSh0LmxhdCkpfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnVucHJvamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IExuZ0xhdCh0aGlzLnhMbmcodC54KSx0aGlzLnlMYXQodC55KSl9LHByb3RvdHlwZUFjY2Vzc29ycy54LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxuZ1godGhpcy5jZW50ZXIubG5nKX0scHJvdG90eXBlQWNjZXNzb3JzLnkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF0WSh0aGlzLmNlbnRlci5sYXQpfSxwcm90b3R5cGVBY2Nlc3NvcnMucG9pbnQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLngsdGhpcy55KX0sVHJhbnNmb3JtLnByb3RvdHlwZS5sbmdYPWZ1bmN0aW9uKHQpe3JldHVybigxODArdCkqdGhpcy53b3JsZFNpemUvMzYwfSxUcmFuc2Zvcm0ucHJvdG90eXBlLmxhdFk9ZnVuY3Rpb24odCl7cmV0dXJuKDE4MC0xODAvTWF0aC5QSSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdCpNYXRoLlBJLzM2MCkpKSp0aGlzLndvcmxkU2l6ZS8zNjB9LFRyYW5zZm9ybS5wcm90b3R5cGUueExuZz1mdW5jdGlvbih0KXtyZXR1cm4gMzYwKnQvdGhpcy53b3JsZFNpemUtMTgwfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnlMYXQ9ZnVuY3Rpb24odCl7dmFyIG89MTgwLTM2MCp0L3RoaXMud29ybGRTaXplO3JldHVybiAzNjAvTWF0aC5QSSpNYXRoLmF0YW4oTWF0aC5leHAobypNYXRoLlBJLzE4MCkpLTkwfSxUcmFuc2Zvcm0ucHJvdG90eXBlLnNldExvY2F0aW9uQXRQb2ludD1mdW5jdGlvbih0LG8pe3ZhciBpPXRoaXMucG9pbnRDb29yZGluYXRlKG8pLl9zdWIodGhpcy5wb2ludENvb3JkaW5hdGUodGhpcy5jZW50ZXJQb2ludCkpO3RoaXMuY2VudGVyPXRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKHRoaXMubG9jYXRpb25Db29yZGluYXRlKHQpLl9zdWIoaSkpLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzJiYodGhpcy5jZW50ZXI9dGhpcy5jZW50ZXIud3JhcCgpKX0sVHJhbnNmb3JtLnByb3RvdHlwZS5sb2NhdGlvblBvaW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvb3JkaW5hdGVQb2ludCh0aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZSh0KSl9LFRyYW5zZm9ybS5wcm90b3R5cGUucG9pbnRMb2NhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb29yZGluYXRlTG9jYXRpb24odGhpcy5wb2ludENvb3JkaW5hdGUodCkpfSxUcmFuc2Zvcm0ucHJvdG90eXBlLmxvY2F0aW9uQ29vcmRpbmF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IENvb3JkaW5hdGUodGhpcy5sbmdYKHQubG5nKS90aGlzLnRpbGVTaXplLHRoaXMubGF0WSh0LmxhdCkvdGhpcy50aWxlU2l6ZSx0aGlzLnpvb20pLnpvb21Ubyh0aGlzLnRpbGVab29tKX0sVHJhbnNmb3JtLnByb3RvdHlwZS5jb29yZGluYXRlTG9jYXRpb249ZnVuY3Rpb24odCl7dmFyIG89dC56b29tVG8odGhpcy56b29tKTtyZXR1cm4gbmV3IExuZ0xhdCh0aGlzLnhMbmcoby5jb2x1bW4qdGhpcy50aWxlU2l6ZSksdGhpcy55TGF0KG8ucm93KnRoaXMudGlsZVNpemUpKX0sVHJhbnNmb3JtLnByb3RvdHlwZS5wb2ludENvb3JkaW5hdGU9ZnVuY3Rpb24odCxvKXt2b2lkIDA9PT1vJiYobz10aGlzLnRpbGVab29tKTt2YXIgaT1bdC54LHQueSwwLDFdLGU9W3QueCx0LnksMSwxXTt2ZWM0LnRyYW5zZm9ybU1hdDQoaSxpLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKSx2ZWM0LnRyYW5zZm9ybU1hdDQoZSxlLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKTt2YXIgcj1pWzNdLG49ZVszXSxzPWlbMF0vcixhPWVbMF0vbixoPWlbMV0vcixjPWVbMV0vbixtPWlbMl0vcixwPWVbMl0vbixsPW09PT1wPzA6KDAtbSkvKHAtbSk7cmV0dXJuIG5ldyBDb29yZGluYXRlKGludGVycChzLGEsbCkvdGhpcy50aWxlU2l6ZSxpbnRlcnAoaCxjLGwpL3RoaXMudGlsZVNpemUsdGhpcy56b29tKS5fem9vbVRvKG8pfSxUcmFuc2Zvcm0ucHJvdG90eXBlLmNvb3JkaW5hdGVQb2ludD1mdW5jdGlvbih0KXt2YXIgbz10Lnpvb21Ubyh0aGlzLnpvb20pLGk9W28uY29sdW1uKnRoaXMudGlsZVNpemUsby5yb3cqdGhpcy50aWxlU2l6ZSwwLDFdO3JldHVybiB2ZWM0LnRyYW5zZm9ybU1hdDQoaSxpLHRoaXMucGl4ZWxNYXRyaXgpLG5ldyBQb2ludChpWzBdL2lbM10saVsxXS9pWzNdKX0sVHJhbnNmb3JtLnByb3RvdHlwZS5jYWxjdWxhdGVQb3NNYXRyaXg9ZnVuY3Rpb24odCxvKXt2YXIgaT10LnRvQ29vcmRpbmF0ZShvKSxlPXRoaXMud29ybGRTaXplL3RoaXMuem9vbVNjYWxlKGkuem9vbSkscj1tYXQ0LmlkZW50aXR5KG5ldyBGbG9hdDY0QXJyYXkoMTYpKTtyZXR1cm4gbWF0NC50cmFuc2xhdGUocixyLFtpLmNvbHVtbiplLGkucm93KmUsMF0pLG1hdDQuc2NhbGUocixyLFtlL0VYVEVOVCxlL0VYVEVOVCwxXSksbWF0NC5tdWx0aXBseShyLHRoaXMucHJvak1hdHJpeCxyKSxuZXcgRmxvYXQzMkFycmF5KHIpfSxUcmFuc2Zvcm0ucHJvdG90eXBlLmNhbWVyYVRvVGlsZURpc3RhbmNlPWZ1bmN0aW9uKHQpe3ZhciBvPXRoaXMuY2FsY3VsYXRlUG9zTWF0cml4KHQuY29vcmQsdC5zb3VyY2VNYXhab29tKSxpPVt0LnRpbGVTaXplLzIsdC50aWxlU2l6ZS8yLDAsMV07cmV0dXJuIHZlYzQudHJhbnNmb3JtTWF0NChpLGksbyksaVszXX0sVHJhbnNmb3JtLnByb3RvdHlwZS5fY29uc3RyYWluPWZ1bmN0aW9uKCl7aWYodGhpcy5jZW50ZXImJnRoaXMud2lkdGgmJnRoaXMuaGVpZ2h0JiYhdGhpcy5fY29uc3RyYWluaW5nKXt0aGlzLl9jb25zdHJhaW5pbmc9ITA7dmFyIHQsbyxpLGUscj0tOTAsbj05MCxzPS0xODAsYT0xODAsaD10aGlzLnNpemUsYz10aGlzLl91bm1vZGlmaWVkO2lmKHRoaXMubGF0UmFuZ2Upe3ZhciBtPXRoaXMubGF0UmFuZ2U7cj10aGlzLmxhdFkobVsxXSksbj10aGlzLmxhdFkobVswXSksdD1uLXI8aC55P2gueS8obi1yKTowfWlmKHRoaXMubG5nUmFuZ2Upe3ZhciBwPXRoaXMubG5nUmFuZ2U7cz10aGlzLmxuZ1gocFswXSksYT10aGlzLmxuZ1gocFsxXSksbz1hLXM8aC54P2gueC8oYS1zKTowfXZhciBsPU1hdGgubWF4KG98fDAsdHx8MCk7aWYobClyZXR1cm4gdGhpcy5jZW50ZXI9dGhpcy51bnByb2plY3QobmV3IFBvaW50KG8/KGErcykvMjp0aGlzLngsdD8obityKS8yOnRoaXMueSkpLHRoaXMuem9vbSs9dGhpcy5zY2FsZVpvb20obCksdGhpcy5fdW5tb2RpZmllZD1jLHZvaWQodGhpcy5fY29uc3RyYWluaW5nPSExKTtpZih0aGlzLmxhdFJhbmdlKXt2YXIgdT10aGlzLnksZj1oLnkvMjt1LWY8ciYmKGU9citmKSx1K2Y+biYmKGU9bi1mKX1pZih0aGlzLmxuZ1JhbmdlKXt2YXIgZD10aGlzLngsZz1oLngvMjtkLWc8cyYmKGk9cytnKSxkK2c+YSYmKGk9YS1nKX12b2lkIDA9PT1pJiZ2b2lkIDA9PT1lfHwodGhpcy5jZW50ZXI9dGhpcy51bnByb2plY3QobmV3IFBvaW50KHZvaWQgMCE9PWk/aTp0aGlzLngsdm9pZCAwIT09ZT9lOnRoaXMueSkpKSx0aGlzLl91bm1vZGlmaWVkPWMsdGhpcy5fY29uc3RyYWluaW5nPSExfX0sVHJhbnNmb3JtLnByb3RvdHlwZS5fY2FsY01hdHJpY2VzPWZ1bmN0aW9uKCl7aWYodGhpcy5oZWlnaHQpe3RoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZT0uNS9NYXRoLnRhbih0aGlzLl9mb3YvMikqdGhpcy5oZWlnaHQ7dmFyIHQ9dGhpcy5fZm92LzIsbz1NYXRoLlBJLzIrdGhpcy5fcGl0Y2gsaT1NYXRoLnNpbih0KSp0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UvTWF0aC5zaW4oTWF0aC5QSS1vLXQpLGU9TWF0aC5jb3MoTWF0aC5QSS8yLXRoaXMuX3BpdGNoKSppK3RoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSxyPTEuMDEqZSxuPW5ldyBGbG9hdDY0QXJyYXkoMTYpO21hdDQucGVyc3BlY3RpdmUobix0aGlzLl9mb3YsdGhpcy53aWR0aC90aGlzLmhlaWdodCwxLHIpLG1hdDQuc2NhbGUobixuLFsxLC0xLDFdKSxtYXQ0LnRyYW5zbGF0ZShuLG4sWzAsMCwtdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlXSksbWF0NC5yb3RhdGVYKG4sbix0aGlzLl9waXRjaCksbWF0NC5yb3RhdGVaKG4sbix0aGlzLmFuZ2xlKSxtYXQ0LnRyYW5zbGF0ZShuLG4sWy10aGlzLngsLXRoaXMueSwwXSk7dmFyIHM9dGhpcy53b3JsZFNpemUvKDIqTWF0aC5QSSo2Mzc4MTM3Kk1hdGguYWJzKE1hdGguY29zKHRoaXMuY2VudGVyLmxhdCooTWF0aC5QSS8xODApKSkpO2lmKG1hdDQuc2NhbGUobixuLFsxLDEscywxXSksdGhpcy5wcm9qTWF0cml4PW4sbj1tYXQ0LmNyZWF0ZSgpLG1hdDQuc2NhbGUobixuLFt0aGlzLndpZHRoLzIsLXRoaXMuaGVpZ2h0LzIsMV0pLG1hdDQudHJhbnNsYXRlKG4sbixbMSwtMSwwXSksdGhpcy5waXhlbE1hdHJpeD1tYXQ0Lm11bHRpcGx5KG5ldyBGbG9hdDY0QXJyYXkoMTYpLG4sdGhpcy5wcm9qTWF0cml4KSwhKG49bWF0NC5pbnZlcnQobmV3IEZsb2F0NjRBcnJheSgxNiksdGhpcy5waXhlbE1hdHJpeCkpKXRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBpbnZlcnQgbWF0cml4XCIpO3RoaXMucGl4ZWxNYXRyaXhJbnZlcnNlPW59fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUcmFuc2Zvcm0ucHJvdG90eXBlLHByb3RvdHlwZUFjY2Vzc29ycyksbW9kdWxlLmV4cG9ydHM9VHJhbnNmb3JtO1xufSx7XCIuLi9kYXRhL2V4dGVudFwiOjQ4LFwiLi4vc291cmNlL3RpbGVfY29vcmRcIjoxMDEsXCIuLi9zdHlsZS1zcGVjL3V0aWwvaW50ZXJwb2xhdGVcIjoxMjcsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuL2Nvb3JkaW5hdGVcIjo1NyxcIi4vbG5nX2xhdFwiOjU4LFwiQG1hcGJveC9nbC1tYXRyaXhcIjoxLFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjJ9XSw2MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgSW5kZXhCdWZmZXI9ZnVuY3Rpb24oZSxyKXt0aGlzLmdsPWUsdGhpcy5idWZmZXI9ZS5jcmVhdGVCdWZmZXIoKSx2b2lkIDA9PT1lLmV4dFZlcnRleEFycmF5T2JqZWN0JiYoZS5leHRWZXJ0ZXhBcnJheU9iamVjdD1lLmdldEV4dGVuc2lvbihcIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0XCIpKSxlLmV4dFZlcnRleEFycmF5T2JqZWN0JiZlLmV4dFZlcnRleEFycmF5T2JqZWN0LmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKSxlLmJpbmRCdWZmZXIoZS5FTEVNRU5UX0FSUkFZX0JVRkZFUix0aGlzLmJ1ZmZlciksZS5idWZmZXJEYXRhKGUuRUxFTUVOVF9BUlJBWV9CVUZGRVIsci5hcnJheUJ1ZmZlcixlLlNUQVRJQ19EUkFXKSxkZWxldGUgci5hcnJheUJ1ZmZlcn07SW5kZXhCdWZmZXIucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUix0aGlzLmJ1ZmZlcil9LEluZGV4QnVmZmVyLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5idWZmZXImJih0aGlzLmdsLmRlbGV0ZUJ1ZmZlcih0aGlzLmJ1ZmZlciksZGVsZXRlIHRoaXMuYnVmZmVyKX0sbW9kdWxlLmV4cG9ydHM9SW5kZXhCdWZmZXI7XG59LHt9XSw2MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgQXR0cmlidXRlVHlwZT17SW50ODpcIkJZVEVcIixVaW50ODpcIlVOU0lHTkVEX0JZVEVcIixJbnQxNjpcIlNIT1JUXCIsVWludDE2OlwiVU5TSUdORURfU0hPUlRcIixJbnQzMjpcIklOVFwiLFVpbnQzMjpcIlVOU0lHTkVEX0lOVFwiLEZsb2F0MzI6XCJGTE9BVFwifSxWZXJ0ZXhCdWZmZXI9ZnVuY3Rpb24odCxlLHIpe3RoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuYXR0cmlidXRlcz1lLm1lbWJlcnMsdGhpcy5pdGVtU2l6ZT1lLmJ5dGVzUGVyRWxlbWVudCx0aGlzLmR5bmFtaWNEcmF3PXIsdGhpcy5nbD10LHRoaXMuYnVmZmVyPXQuY3JlYXRlQnVmZmVyKCksdGhpcy5nbC5iaW5kQnVmZmVyKHQuQVJSQVlfQlVGRkVSLHRoaXMuYnVmZmVyKSx0aGlzLmdsLmJ1ZmZlckRhdGEodC5BUlJBWV9CVUZGRVIsZS5hcnJheUJ1ZmZlcix0aGlzLmR5bmFtaWNEcmF3P3QuRFlOQU1JQ19EUkFXOnQuU1RBVElDX0RSQVcpLHRoaXMuZHluYW1pY0RyYXd8fGRlbGV0ZSBlLmFycmF5QnVmZmVyfTtWZXJ0ZXhCdWZmZXIucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsdGhpcy5idWZmZXIpfSxWZXJ0ZXhCdWZmZXIucHJvdG90eXBlLnVwZGF0ZURhdGE9ZnVuY3Rpb24odCl7dGhpcy5iaW5kKCksdGhpcy5nbC5idWZmZXJTdWJEYXRhKHRoaXMuZ2wuQVJSQVlfQlVGRkVSLDAsdC5hcnJheUJ1ZmZlcil9LFZlcnRleEJ1ZmZlci5wcm90b3R5cGUuZW5hYmxlQXR0cmlidXRlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLGk9MDtpPHRoaXMuYXR0cmlidXRlcy5sZW5ndGg7aSsrKXt2YXIgZj1yLmF0dHJpYnV0ZXNbaV0scz1lLmF0dHJpYnV0ZXNbZi5uYW1lXTt2b2lkIDAhPT1zJiZ0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHMpfX0sVmVydGV4QnVmZmVyLnByb3RvdHlwZS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBpPXRoaXMsZj0wO2Y8dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtmKyspe3ZhciBzPWkuYXR0cmlidXRlc1tmXSx1PWUuYXR0cmlidXRlc1tzLm5hbWVdO3ZvaWQgMCE9PXUmJnQudmVydGV4QXR0cmliUG9pbnRlcih1LHMuY29tcG9uZW50cyx0W0F0dHJpYnV0ZVR5cGVbcy50eXBlXV0sITEsaS5pdGVtU2l6ZSxzLm9mZnNldCtpLml0ZW1TaXplKihyfHwwKSl9fSxWZXJ0ZXhCdWZmZXIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlciYmKHRoaXMuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuYnVmZmVyKSxkZWxldGUgdGhpcy5idWZmZXIpfSxtb2R1bGUuZXhwb3J0cz1WZXJ0ZXhCdWZmZXI7XG59LHt9XSw2MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgc3VwcG9ydGVkPV9kZXJlcV8oXCJtYXBib3gtZ2wtc3VwcG9ydGVkXCIpLGJyb3dzZXI9X2RlcmVxXyhcIi4vdXRpbC9icm93c2VyXCIpLHZlcnNpb249X2RlcmVxXyhcIi4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9uLE1hcD1fZGVyZXFfKFwiLi91aS9tYXBcIiksTmF2aWdhdGlvbkNvbnRyb2w9X2RlcmVxXyhcIi4vdWkvY29udHJvbC9uYXZpZ2F0aW9uX2NvbnRyb2xcIiksR2VvbG9jYXRlQ29udHJvbD1fZGVyZXFfKFwiLi91aS9jb250cm9sL2dlb2xvY2F0ZV9jb250cm9sXCIpLEF0dHJpYnV0aW9uQ29udHJvbD1fZGVyZXFfKFwiLi91aS9jb250cm9sL2F0dHJpYnV0aW9uX2NvbnRyb2xcIiksU2NhbGVDb250cm9sPV9kZXJlcV8oXCIuL3VpL2NvbnRyb2wvc2NhbGVfY29udHJvbFwiKSxGdWxsc2NyZWVuQ29udHJvbD1fZGVyZXFfKFwiLi91aS9jb250cm9sL2Z1bGxzY3JlZW5fY29udHJvbFwiKSxQb3B1cD1fZGVyZXFfKFwiLi91aS9wb3B1cFwiKSxNYXJrZXI9X2RlcmVxXyhcIi4vdWkvbWFya2VyXCIpLFN0eWxlPV9kZXJlcV8oXCIuL3N0eWxlL3N0eWxlXCIpLExuZ0xhdD1fZGVyZXFfKFwiLi9nZW8vbG5nX2xhdFwiKSxMbmdMYXRCb3VuZHM9X2RlcmVxXyhcIi4vZ2VvL2xuZ19sYXRfYm91bmRzXCIpLFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLEV2ZW50ZWQ9X2RlcmVxXyhcIi4vdXRpbC9ldmVudGVkXCIpLGNvbmZpZz1fZGVyZXFfKFwiLi91dGlsL2NvbmZpZ1wiKSxydGxUZXh0UGx1Z2luPV9kZXJlcV8oXCIuL3NvdXJjZS9ydGxfdGV4dF9wbHVnaW5cIik7bW9kdWxlLmV4cG9ydHM9e3ZlcnNpb246dmVyc2lvbixzdXBwb3J0ZWQ6c3VwcG9ydGVkLHdvcmtlckNvdW50Ok1hdGgubWF4KE1hdGguZmxvb3IoYnJvd3Nlci5oYXJkd2FyZUNvbmN1cnJlbmN5LzIpLDEpLHNldFJUTFRleHRQbHVnaW46cnRsVGV4dFBsdWdpbi5zZXRSVExUZXh0UGx1Z2luLE1hcDpNYXAsTmF2aWdhdGlvbkNvbnRyb2w6TmF2aWdhdGlvbkNvbnRyb2wsR2VvbG9jYXRlQ29udHJvbDpHZW9sb2NhdGVDb250cm9sLEF0dHJpYnV0aW9uQ29udHJvbDpBdHRyaWJ1dGlvbkNvbnRyb2wsU2NhbGVDb250cm9sOlNjYWxlQ29udHJvbCxGdWxsc2NyZWVuQ29udHJvbDpGdWxsc2NyZWVuQ29udHJvbCxQb3B1cDpQb3B1cCxNYXJrZXI6TWFya2VyLFN0eWxlOlN0eWxlLExuZ0xhdDpMbmdMYXQsTG5nTGF0Qm91bmRzOkxuZ0xhdEJvdW5kcyxQb2ludDpQb2ludCxFdmVudGVkOkV2ZW50ZWQsY29uZmlnOmNvbmZpZyxnZXQgYWNjZXNzVG9rZW4oKXtyZXR1cm4gY29uZmlnLkFDQ0VTU19UT0tFTn0sc2V0IGFjY2Vzc1Rva2VuKG8pe2NvbmZpZy5BQ0NFU1NfVE9LRU49b319O1xufSx7XCIuLi9wYWNrYWdlLmpzb25cIjo0MSxcIi4vZ2VvL2xuZ19sYXRcIjo1OCxcIi4vZ2VvL2xuZ19sYXRfYm91bmRzXCI6NTksXCIuL3NvdXJjZS9ydGxfdGV4dF9wbHVnaW5cIjo5NixcIi4vc3R5bGUvc3R5bGVcIjoxNTYsXCIuL3VpL2NvbnRyb2wvYXR0cmlidXRpb25fY29udHJvbFwiOjE4MixcIi4vdWkvY29udHJvbC9mdWxsc2NyZWVuX2NvbnRyb2xcIjoxODMsXCIuL3VpL2NvbnRyb2wvZ2VvbG9jYXRlX2NvbnRyb2xcIjoxODQsXCIuL3VpL2NvbnRyb2wvbmF2aWdhdGlvbl9jb250cm9sXCI6MTg2LFwiLi91aS9jb250cm9sL3NjYWxlX2NvbnRyb2xcIjoxODcsXCIuL3VpL21hcFwiOjE5NyxcIi4vdWkvbWFya2VyXCI6MTk4LFwiLi91aS9wb3B1cFwiOjE5OSxcIi4vdXRpbC9icm93c2VyXCI6MjAyLFwiLi91dGlsL2NvbmZpZ1wiOjIwNixcIi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjIsXCJtYXBib3gtZ2wtc3VwcG9ydGVkXCI6Mjh9XSw2NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBkcmF3QmFja2dyb3VuZChyLHQsZSl7dmFyIGk9ci5nbCxhPXIudHJhbnNmb3JtLG49YS50aWxlU2l6ZSxvPWUucGFpbnRbXCJiYWNrZ3JvdW5kLWNvbG9yXCJdLGw9ZS5wYWludFtcImJhY2tncm91bmQtcGF0dGVyblwiXSx1PWUucGFpbnRbXCJiYWNrZ3JvdW5kLW9wYWNpdHlcIl0sZj1sfHwxIT09b1szXXx8MSE9PXU/XCJ0cmFuc2x1Y2VudFwiOlwib3BhcXVlXCI7aWYoci5yZW5kZXJQYXNzPT09Zil7aS5kaXNhYmxlKGkuU1RFTkNJTF9URVNUKSxyLnNldERlcHRoU3VibGF5ZXIoMCk7dmFyIHM7aWYobCl7aWYocGF0dGVybi5pc1BhdHRlcm5NaXNzaW5nKGwscikpcmV0dXJuO3M9ci51c2VQcm9ncmFtKFwiZmlsbFBhdHRlcm5cIixyLmJhc2ljRmlsbFByb2dyYW1Db25maWd1cmF0aW9uKSxwYXR0ZXJuLnByZXBhcmUobCxyLHMpLHIudGlsZUV4dGVudFBhdHRlcm5WQU8uYmluZChpLHMsci50aWxlRXh0ZW50QnVmZmVyKX1lbHNlIHM9ci51c2VQcm9ncmFtKFwiZmlsbFwiLHIuYmFzaWNGaWxsUHJvZ3JhbUNvbmZpZ3VyYXRpb24pLGkudW5pZm9ybTRmdihzLnVuaWZvcm1zLnVfY29sb3Isbyksci50aWxlRXh0ZW50VkFPLmJpbmQoaSxzLHIudGlsZUV4dGVudEJ1ZmZlcik7aS51bmlmb3JtMWYocy51bmlmb3Jtcy51X29wYWNpdHksdSk7Zm9yKHZhciBjPWEuY292ZXJpbmdUaWxlcyh7dGlsZVNpemU6bn0pLGc9MCxwPWM7ZzxwLmxlbmd0aDtnKz0xKXt2YXIgZD1wW2ddO2wmJnBhdHRlcm4uc2V0VGlsZSh7Y29vcmQ6ZCx0aWxlU2l6ZTpufSxyLHMpLGkudW5pZm9ybU1hdHJpeDRmdihzLnVuaWZvcm1zLnVfbWF0cml4LCExLHIudHJhbnNmb3JtLmNhbGN1bGF0ZVBvc01hdHJpeChkKSksaS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVfU1RSSVAsMCxyLnRpbGVFeHRlbnRCdWZmZXIubGVuZ3RoKX19fXZhciBwYXR0ZXJuPV9kZXJlcV8oXCIuL3BhdHRlcm5cIik7bW9kdWxlLmV4cG9ydHM9ZHJhd0JhY2tncm91bmQ7XG59LHtcIi4vcGF0dGVyblwiOjgwfV0sNjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZHJhd0NpcmNsZXMocixpLGUsdCl7aWYoXCJ0cmFuc2x1Y2VudFwiPT09ci5yZW5kZXJQYXNzKXt2YXIgYT1yLmdsO3Iuc2V0RGVwdGhTdWJsYXllcigwKSxyLmRlcHRoTWFzayghMSksYS5kaXNhYmxlKGEuU1RFTkNJTF9URVNUKTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIG89dFtzXSxuPWkuZ2V0VGlsZShvKSx1PW4uZ2V0QnVja2V0KGUpO2lmKHUpe3ZhciBtPXUucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKSxmPXIudXNlUHJvZ3JhbShcImNpcmNsZVwiLG0pO2lmKG0uc2V0VW5pZm9ybXMoYSxmLGUse3pvb206ci50cmFuc2Zvcm0uem9vbX0pLGEudW5pZm9ybTFmKGYudW5pZm9ybXMudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlLHIudHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UpLGEudW5pZm9ybTFpKGYudW5pZm9ybXMudV9zY2FsZV93aXRoX21hcCxcIm1hcFwiPT09ZS5wYWludFtcImNpcmNsZS1waXRjaC1zY2FsZVwiXT8xOjApLFwibWFwXCI9PT1lLnBhaW50W1wiY2lyY2xlLXBpdGNoLWFsaWdubWVudFwiXSl7YS51bmlmb3JtMWkoZi51bmlmb3Jtcy51X3BpdGNoX3dpdGhfbWFwLDEpO3ZhciBsPXBpeGVsc1RvVGlsZVVuaXRzKG4sMSxyLnRyYW5zZm9ybS56b29tKTthLnVuaWZvcm0yZihmLnVuaWZvcm1zLnVfZXh0cnVkZV9zY2FsZSxsLGwpfWVsc2UgYS51bmlmb3JtMWkoZi51bmlmb3Jtcy51X3BpdGNoX3dpdGhfbWFwLDApLGEudW5pZm9ybTJmdihmLnVuaWZvcm1zLnVfZXh0cnVkZV9zY2FsZSxyLnRyYW5zZm9ybS5waXhlbHNUb0dMVW5pdHMpO2EudW5pZm9ybTFmKGYudW5pZm9ybXMudV9kZXZpY2VwaXhlbHJhdGlvLGJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyksYS51bmlmb3JtTWF0cml4NGZ2KGYudW5pZm9ybXMudV9tYXRyaXgsITEsci50cmFuc2xhdGVQb3NNYXRyaXgoby5wb3NNYXRyaXgsbixlLnBhaW50W1wiY2lyY2xlLXRyYW5zbGF0ZVwiXSxlLnBhaW50W1wiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3JcIl0pKSxmLmRyYXcoYSxhLlRSSUFOR0xFUyxlLmlkLHUubGF5b3V0VmVydGV4QnVmZmVyLHUuaW5kZXhCdWZmZXIsdS5zZWdtZW50cyxtKX19fX12YXIgYnJvd3Nlcj1fZGVyZXFfKFwiLi4vdXRpbC9icm93c2VyXCIpLHBpeGVsc1RvVGlsZVVuaXRzPV9kZXJlcV8oXCIuLi9zb3VyY2UvcGl4ZWxzX3RvX3RpbGVfdW5pdHNcIik7bW9kdWxlLmV4cG9ydHM9ZHJhd0NpcmNsZXM7XG59LHtcIi4uL3NvdXJjZS9waXhlbHNfdG9fdGlsZV91bml0c1wiOjkzLFwiLi4vdXRpbC9icm93c2VyXCI6MjAyfV0sNjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZHJhd0NvbGxpc2lvbkRlYnVnKG8saSxyLGUpe3ZhciBuPW8uZ2w7bi5lbmFibGUobi5TVEVOQ0lMX1RFU1QpO3ZhciB0PW8udXNlUHJvZ3JhbShcImNvbGxpc2lvbkJveFwiKTtuLmFjdGl2ZVRleHR1cmUobi5URVhUVVJFMSksby5mcmFtZUhpc3RvcnkuYmluZChuKSxuLnVuaWZvcm0xaSh0LnVuaWZvcm1zLnVfZmFkZXRleHR1cmUsMSk7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBmPWVbYV0sdT1pLmdldFRpbGUoZiksbT11LmdldEJ1Y2tldChyKTtpZihtKXtuLnVuaWZvcm1NYXRyaXg0ZnYodC51bmlmb3Jtcy51X21hdHJpeCwhMSxmLnBvc01hdHJpeCksby5lbmFibGVUaWxlQ2xpcHBpbmdNYXNrKGYpLG8ubGluZVdpZHRoKDEpLG4udW5pZm9ybTFmKHQudW5pZm9ybXMudV9zY2FsZSxNYXRoLnBvdygyLG8udHJhbnNmb3JtLnpvb20tdS5jb29yZC56KSksbi51bmlmb3JtMWYodC51bmlmb3Jtcy51X3pvb20sMTAqby50cmFuc2Zvcm0uem9vbSk7dmFyIHM9TWF0aC5tYXgoMCxNYXRoLm1pbigyNSx1LmNvb3JkLnorTWF0aC5sb2codS5jb2xsaXNpb25UaWxlLm1heFNjYWxlKS9NYXRoLkxOMikpO24udW5pZm9ybTFmKHQudW5pZm9ybXMudV9tYXh6b29tLDEwKnMpLG4udW5pZm9ybTFmKHQudW5pZm9ybXMudV9jb2xsaXNpb25feV9zdHJldGNoLHUuY29sbGlzaW9uVGlsZS55U3RyZXRjaCksbi51bmlmb3JtMWYodC51bmlmb3Jtcy51X3BpdGNoLG8udHJhbnNmb3JtLnBpdGNoLzM2MCoyKk1hdGguUEkpLG4udW5pZm9ybTFmKHQudW5pZm9ybXMudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlLG8udHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UpLHQuZHJhdyhuLG4uTElORVMsci5pZCxtLmNvbGxpc2lvbkJveC5sYXlvdXRWZXJ0ZXhCdWZmZXIsbS5jb2xsaXNpb25Cb3guaW5kZXhCdWZmZXIsbS5jb2xsaXNpb25Cb3guc2VnbWVudHMpfX19bW9kdWxlLmV4cG9ydHM9ZHJhd0NvbGxpc2lvbkRlYnVnO1xufSx7fV0sNjc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZHJhd0RlYnVnKHIsZSx0KXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylkcmF3RGVidWdUaWxlKHIsZSx0W2FdKX1mdW5jdGlvbiBkcmF3RGVidWdUaWxlKHIsZSx0KXt2YXIgYT1yLmdsO2EuZGlzYWJsZShhLlNURU5DSUxfVEVTVCksci5saW5lV2lkdGgoMSpicm93c2VyLmRldmljZVBpeGVsUmF0aW8pO3ZhciBpPXQucG9zTWF0cml4LHU9ci51c2VQcm9ncmFtKFwiZGVidWdcIik7YS51bmlmb3JtTWF0cml4NGZ2KHUudW5pZm9ybXMudV9tYXRyaXgsITEsaSksYS51bmlmb3JtNGYodS51bmlmb3Jtcy51X2NvbG9yLDEsMCwwLDEpLHIuZGVidWdWQU8uYmluZChhLHUsci5kZWJ1Z0J1ZmZlciksYS5kcmF3QXJyYXlzKGEuTElORV9TVFJJUCwwLHIuZGVidWdCdWZmZXIubGVuZ3RoKTtmb3IodmFyIG89Y3JlYXRlVGV4dFZlcnRpY2llcyh0LnRvU3RyaW5nKCksNTAsMjAwLDUpLG49bmV3IFBvc0FycmF5LGY9MDtmPG8ubGVuZ3RoO2YrPTIpbi5lbXBsYWNlQmFjayhvW2ZdLG9bZisxXSk7dmFyIGw9bmV3IFZlcnRleEJ1ZmZlcihhLG4pOyhuZXcgVmVydGV4QXJyYXlPYmplY3QpLmJpbmQoYSx1LGwpLGEudW5pZm9ybTRmKHUudW5pZm9ybXMudV9jb2xvciwxLDEsMSwxKTtmb3IodmFyIHM9ZS5nZXRUaWxlKHQpLnRpbGVTaXplLG09RVhURU5ULyhNYXRoLnBvdygyLHIudHJhbnNmb3JtLnpvb20tdC56KSpzKSx4PVtbLTEsLTFdLFstMSwxXSxbMSwtMV0sWzEsMV1dLGc9MDtnPHgubGVuZ3RoO2crKyl7dmFyIGI9eFtnXTthLnVuaWZvcm1NYXRyaXg0ZnYodS51bmlmb3Jtcy51X21hdHJpeCwhMSxtYXQ0LnRyYW5zbGF0ZShbXSxpLFttKmJbMF0sbSpiWzFdLDBdKSksYS5kcmF3QXJyYXlzKGEuTElORVMsMCxsLmxlbmd0aCl9YS51bmlmb3JtNGYodS51bmlmb3Jtcy51X2NvbG9yLDAsMCwwLDEpLGEudW5pZm9ybU1hdHJpeDRmdih1LnVuaWZvcm1zLnVfbWF0cml4LCExLGkpLGEuZHJhd0FycmF5cyhhLkxJTkVTLDAsbC5sZW5ndGgpfWZ1bmN0aW9uIGNyZWF0ZVRleHRWZXJ0aWNpZXMocixlLHQsYSl7YT1hfHwxO3ZhciBpLHUsbyxuLGYsbCxzLG0seD1bXTtmb3IoaT0wLHU9ci5sZW5ndGg7aTx1O2krKylpZihmPXNpbXBsZXhGb250W3JbaV1dKXtmb3IobT1udWxsLG89MCxuPWZbMV0ubGVuZ3RoO288bjtvKz0yKS0xPT09ZlsxXVtvXSYmLTE9PT1mWzFdW28rMV0/bT1udWxsOihsPWUrZlsxXVtvXSphLHM9dC1mWzFdW28rMV0qYSxtJiZ4LnB1c2gobS54LG0ueSxsLHMpLG09e3g6bCx5OnN9KTtlKz1mWzBdKmF9cmV0dXJuIHh9dmFyIGJyb3dzZXI9X2RlcmVxXyhcIi4uL3V0aWwvYnJvd3NlclwiKSxtYXQ0PV9kZXJlcV8oXCJAbWFwYm94L2dsLW1hdHJpeFwiKS5tYXQ0LEVYVEVOVD1fZGVyZXFfKFwiLi4vZGF0YS9leHRlbnRcIiksVmVydGV4QnVmZmVyPV9kZXJlcV8oXCIuLi9nbC92ZXJ0ZXhfYnVmZmVyXCIpLFZlcnRleEFycmF5T2JqZWN0PV9kZXJlcV8oXCIuL3ZlcnRleF9hcnJheV9vYmplY3RcIiksUG9zQXJyYXk9X2RlcmVxXyhcIi4uL2RhdGEvcG9zX2FycmF5XCIpO21vZHVsZS5leHBvcnRzPWRyYXdEZWJ1Zzt2YXIgc2ltcGxleEZvbnQ9e1wiIFwiOlsxNixbXV0sXCIhXCI6WzEwLFs1LDIxLDUsNywtMSwtMSw1LDIsNCwxLDUsMCw2LDEsNSwyXV0sJ1wiJzpbMTYsWzQsMjEsNCwxNCwtMSwtMSwxMiwyMSwxMiwxNF1dLFwiI1wiOlsyMSxbMTEsMjUsNCwtNywtMSwtMSwxNywyNSwxMCwtNywtMSwtMSw0LDEyLDE4LDEyLC0xLC0xLDMsNiwxNyw2XV0sJDpbMjAsWzgsMjUsOCwtNCwtMSwtMSwxMiwyNSwxMiwtNCwtMSwtMSwxNywxOCwxNSwyMCwxMiwyMSw4LDIxLDUsMjAsMywxOCwzLDE2LDQsMTQsNSwxMyw3LDEyLDEzLDEwLDE1LDksMTYsOCwxNyw2LDE3LDMsMTUsMSwxMiwwLDgsMCw1LDEsMywzXV0sXCIlXCI6WzI0LFsyMSwyMSwzLDAsLTEsLTEsOCwyMSwxMCwxOSwxMCwxNyw5LDE1LDcsMTQsNSwxNCwzLDE2LDMsMTgsNCwyMCw2LDIxLDgsMjEsMTAsMjAsMTMsMTksMTYsMTksMTksMjAsMjEsMjEsLTEsLTEsMTcsNywxNSw2LDE0LDQsMTQsMiwxNiwwLDE4LDAsMjAsMSwyMSwzLDIxLDUsMTksNywxNyw3XV0sXCImXCI6WzI2LFsyMywxMiwyMywxMywyMiwxNCwyMSwxNCwyMCwxMywxOSwxMSwxNyw2LDE1LDMsMTMsMSwxMSwwLDcsMCw1LDEsNCwyLDMsNCwzLDYsNCw4LDUsOSwxMiwxMywxMywxNCwxNCwxNiwxNCwxOCwxMywyMCwxMSwyMSw5LDIwLDgsMTgsOCwxNiw5LDEzLDExLDEwLDE2LDMsMTgsMSwyMCwwLDIyLDAsMjMsMSwyMywyXV0sXCInXCI6WzEwLFs1LDE5LDQsMjAsNSwyMSw2LDIwLDYsMTgsNSwxNiw0LDE1XV0sXCIoXCI6WzE0LFsxMSwyNSw5LDIzLDcsMjAsNSwxNiw0LDExLDQsNyw1LDIsNywtMiw5LC01LDExLC03XV0sXCIpXCI6WzE0LFszLDI1LDUsMjMsNywyMCw5LDE2LDEwLDExLDEwLDcsOSwyLDcsLTIsNSwtNSwzLC03XV0sXCIqXCI6WzE2LFs4LDIxLDgsOSwtMSwtMSwzLDE4LDEzLDEyLC0xLC0xLDEzLDE4LDMsMTJdXSxcIitcIjpbMjYsWzEzLDE4LDEzLDAsLTEsLTEsNCw5LDIyLDldXSxcIixcIjpbMTAsWzYsMSw1LDAsNCwxLDUsMiw2LDEsNiwtMSw1LC0zLDQsLTRdXSxcIi1cIjpbMjYsWzQsOSwyMiw5XV0sXCIuXCI6WzEwLFs1LDIsNCwxLDUsMCw2LDEsNSwyXV0sXCIvXCI6WzIyLFsyMCwyNSwyLC03XV0sMDpbMjAsWzksMjEsNiwyMCw0LDE3LDMsMTIsMyw5LDQsNCw2LDEsOSwwLDExLDAsMTQsMSwxNiw0LDE3LDksMTcsMTIsMTYsMTcsMTQsMjAsMTEsMjEsOSwyMV1dLDE6WzIwLFs2LDE3LDgsMTgsMTEsMjEsMTEsMF1dLDI6WzIwLFs0LDE2LDQsMTcsNSwxOSw2LDIwLDgsMjEsMTIsMjEsMTQsMjAsMTUsMTksMTYsMTcsMTYsMTUsMTUsMTMsMTMsMTAsMywwLDE3LDBdXSwzOlsyMCxbNSwyMSwxNiwyMSwxMCwxMywxMywxMywxNSwxMiwxNiwxMSwxNyw4LDE3LDYsMTYsMywxNCwxLDExLDAsOCwwLDUsMSw0LDIsMyw0XV0sNDpbMjAsWzEzLDIxLDMsNywxOCw3LC0xLC0xLDEzLDIxLDEzLDBdXSw1OlsyMCxbMTUsMjEsNSwyMSw0LDEyLDUsMTMsOCwxNCwxMSwxNCwxNCwxMywxNiwxMSwxNyw4LDE3LDYsMTYsMywxNCwxLDExLDAsOCwwLDUsMSw0LDIsMyw0XV0sNjpbMjAsWzE2LDE4LDE1LDIwLDEyLDIxLDEwLDIxLDcsMjAsNSwxNyw0LDEyLDQsNyw1LDMsNywxLDEwLDAsMTEsMCwxNCwxLDE2LDMsMTcsNiwxNyw3LDE2LDEwLDE0LDEyLDExLDEzLDEwLDEzLDcsMTIsNSwxMCw0LDddXSw3OlsyMCxbMTcsMjEsNywwLC0xLC0xLDMsMjEsMTcsMjFdXSw4OlsyMCxbOCwyMSw1LDIwLDQsMTgsNCwxNiw1LDE0LDcsMTMsMTEsMTIsMTQsMTEsMTYsOSwxNyw3LDE3LDQsMTYsMiwxNSwxLDEyLDAsOCwwLDUsMSw0LDIsMyw0LDMsNyw0LDksNiwxMSw5LDEyLDEzLDEzLDE1LDE0LDE2LDE2LDE2LDE4LDE1LDIwLDEyLDIxLDgsMjFdXSw5OlsyMCxbMTYsMTQsMTUsMTEsMTMsOSwxMCw4LDksOCw2LDksNCwxMSwzLDE0LDMsMTUsNCwxOCw2LDIwLDksMjEsMTAsMjEsMTMsMjAsMTUsMTgsMTYsMTQsMTYsOSwxNSw0LDEzLDEsMTAsMCw4LDAsNSwxLDQsM11dLFwiOlwiOlsxMCxbNSwxNCw0LDEzLDUsMTIsNiwxMyw1LDE0LC0xLC0xLDUsMiw0LDEsNSwwLDYsMSw1LDJdXSxcIjtcIjpbMTAsWzUsMTQsNCwxMyw1LDEyLDYsMTMsNSwxNCwtMSwtMSw2LDEsNSwwLDQsMSw1LDIsNiwxLDYsLTEsNSwtMyw0LC00XV0sXCI8XCI6WzI0LFsyMCwxOCw0LDksMjAsMF1dLFwiPVwiOlsyNixbNCwxMiwyMiwxMiwtMSwtMSw0LDYsMjIsNl1dLFwiPlwiOlsyNCxbNCwxOCwyMCw5LDQsMF1dLFwiP1wiOlsxOCxbMywxNiwzLDE3LDQsMTksNSwyMCw3LDIxLDExLDIxLDEzLDIwLDE0LDE5LDE1LDE3LDE1LDE1LDE0LDEzLDEzLDEyLDksMTAsOSw3LC0xLC0xLDksMiw4LDEsOSwwLDEwLDEsOSwyXV0sXCJAXCI6WzI3LFsxOCwxMywxNywxNSwxNSwxNiwxMiwxNiwxMCwxNSw5LDE0LDgsMTEsOCw4LDksNiwxMSw1LDE0LDUsMTYsNiwxNyw4LC0xLC0xLDEyLDE2LDEwLDE0LDksMTEsOSw4LDEwLDYsMTEsNSwtMSwtMSwxOCwxNiwxNyw4LDE3LDYsMTksNSwyMSw1LDIzLDcsMjQsMTAsMjQsMTIsMjMsMTUsMjIsMTcsMjAsMTksMTgsMjAsMTUsMjEsMTIsMjEsOSwyMCw3LDE5LDUsMTcsNCwxNSwzLDEyLDMsOSw0LDYsNSw0LDcsMiw5LDEsMTIsMCwxNSwwLDE4LDEsMjAsMiwyMSwzLC0xLC0xLDE5LDE2LDE4LDgsMTgsNiwxOSw1XV0sQTpbMTgsWzksMjEsMSwwLC0xLC0xLDksMjEsMTcsMCwtMSwtMSw0LDcsMTQsN11dLEI6WzIxLFs0LDIxLDQsMCwtMSwtMSw0LDIxLDEzLDIxLDE2LDIwLDE3LDE5LDE4LDE3LDE4LDE1LDE3LDEzLDE2LDEyLDEzLDExLC0xLC0xLDQsMTEsMTMsMTEsMTYsMTAsMTcsOSwxOCw3LDE4LDQsMTcsMiwxNiwxLDEzLDAsNCwwXV0sQzpbMjEsWzE4LDE2LDE3LDE4LDE1LDIwLDEzLDIxLDksMjEsNywyMCw1LDE4LDQsMTYsMywxMywzLDgsNCw1LDUsMyw3LDEsOSwwLDEzLDAsMTUsMSwxNywzLDE4LDVdXSxEOlsyMSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMSwyMSwxNCwyMCwxNiwxOCwxNywxNiwxOCwxMywxOCw4LDE3LDUsMTYsMywxNCwxLDExLDAsNCwwXV0sRTpbMTksWzQsMjEsNCwwLC0xLC0xLDQsMjEsMTcsMjEsLTEsLTEsNCwxMSwxMiwxMSwtMSwtMSw0LDAsMTcsMF1dLEY6WzE4LFs0LDIxLDQsMCwtMSwtMSw0LDIxLDE3LDIxLC0xLC0xLDQsMTEsMTIsMTFdXSxHOlsyMSxbMTgsMTYsMTcsMTgsMTUsMjAsMTMsMjEsOSwyMSw3LDIwLDUsMTgsNCwxNiwzLDEzLDMsOCw0LDUsNSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgsNSwxOCw4LC0xLC0xLDEzLDgsMTgsOF1dLEg6WzIyLFs0LDIxLDQsMCwtMSwtMSwxOCwyMSwxOCwwLC0xLC0xLDQsMTEsMTgsMTFdXSxJOls4LFs0LDIxLDQsMF1dLEo6WzE2LFsxMiwyMSwxMiw1LDExLDIsMTAsMSw4LDAsNiwwLDQsMSwzLDIsMiw1LDIsN11dLEs6WzIxLFs0LDIxLDQsMCwtMSwtMSwxOCwyMSw0LDcsLTEsLTEsOSwxMiwxOCwwXV0sTDpbMTcsWzQsMjEsNCwwLC0xLC0xLDQsMCwxNiwwXV0sTTpbMjQsWzQsMjEsNCwwLC0xLC0xLDQsMjEsMTIsMCwtMSwtMSwyMCwyMSwxMiwwLC0xLC0xLDIwLDIxLDIwLDBdXSxOOlsyMixbNCwyMSw0LDAsLTEsLTEsNCwyMSwxOCwwLC0xLC0xLDE4LDIxLDE4LDBdXSxPOlsyMixbOSwyMSw3LDIwLDUsMTgsNCwxNiwzLDEzLDMsOCw0LDUsNSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgsNSwxOSw4LDE5LDEzLDE4LDE2LDE3LDE4LDE1LDIwLDEzLDIxLDksMjFdXSxQOlsyMSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMywyMSwxNiwyMCwxNywxOSwxOCwxNywxOCwxNCwxNywxMiwxNiwxMSwxMywxMCw0LDEwXV0sUTpbMjIsWzksMjEsNywyMCw1LDE4LDQsMTYsMywxMywzLDgsNCw1LDUsMyw3LDEsOSwwLDEzLDAsMTUsMSwxNywzLDE4LDUsMTksOCwxOSwxMywxOCwxNiwxNywxOCwxNSwyMCwxMywyMSw5LDIxLC0xLC0xLDEyLDQsMTgsLTJdXSxSOlsyMSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMywyMSwxNiwyMCwxNywxOSwxOCwxNywxOCwxNSwxNywxMywxNiwxMiwxMywxMSw0LDExLC0xLC0xLDExLDExLDE4LDBdXSxTOlsyMCxbMTcsMTgsMTUsMjAsMTIsMjEsOCwyMSw1LDIwLDMsMTgsMywxNiw0LDE0LDUsMTMsNywxMiwxMywxMCwxNSw5LDE2LDgsMTcsNiwxNywzLDE1LDEsMTIsMCw4LDAsNSwxLDMsM11dLFQ6WzE2LFs4LDIxLDgsMCwtMSwtMSwxLDIxLDE1LDIxXV0sVTpbMjIsWzQsMjEsNCw2LDUsMyw3LDEsMTAsMCwxMiwwLDE1LDEsMTcsMywxOCw2LDE4LDIxXV0sVjpbMTgsWzEsMjEsOSwwLC0xLC0xLDE3LDIxLDksMF1dLFc6WzI0LFsyLDIxLDcsMCwtMSwtMSwxMiwyMSw3LDAsLTEsLTEsMTIsMjEsMTcsMCwtMSwtMSwyMiwyMSwxNywwXV0sWDpbMjAsWzMsMjEsMTcsMCwtMSwtMSwxNywyMSwzLDBdXSxZOlsxOCxbMSwyMSw5LDExLDksMCwtMSwtMSwxNywyMSw5LDExXV0sWjpbMjAsWzE3LDIxLDMsMCwtMSwtMSwzLDIxLDE3LDIxLC0xLC0xLDMsMCwxNywwXV0sXCJbXCI6WzE0LFs0LDI1LDQsLTcsLTEsLTEsNSwyNSw1LC03LC0xLC0xLDQsMjUsMTEsMjUsLTEsLTEsNCwtNywxMSwtN11dLFwiXFxcXFwiOlsxNCxbMCwyMSwxNCwtM11dLFwiXVwiOlsxNCxbOSwyNSw5LC03LC0xLC0xLDEwLDI1LDEwLC03LC0xLC0xLDMsMjUsMTAsMjUsLTEsLTEsMywtNywxMCwtN11dLFwiXlwiOlsxNixbNiwxNSw4LDE4LDEwLDE1LC0xLC0xLDMsMTIsOCwxNywxMywxMiwtMSwtMSw4LDE3LDgsMF1dLF86WzE2LFswLC0yLDE2LC0yXV0sXCJgXCI6WzEwLFs2LDIxLDUsMjAsNCwxOCw0LDE2LDUsMTUsNiwxNiw1LDE3XV0sYTpbMTksWzE1LDE0LDE1LDAsLTEsLTEsMTUsMTEsMTMsMTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLGI6WzE5LFs0LDIxLDQsMCwtMSwtMSw0LDExLDYsMTMsOCwxNCwxMSwxNCwxMywxMywxNSwxMSwxNiw4LDE2LDYsMTUsMywxMywxLDExLDAsOCwwLDYsMSw0LDNdXSxjOlsxOCxbMTUsMTEsMTMsMTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLGQ6WzE5LFsxNSwyMSwxNSwwLC0xLC0xLDE1LDExLDEzLDEzLDExLDE0LDgsMTQsNiwxMyw0LDExLDMsOCwzLDYsNCwzLDYsMSw4LDAsMTEsMCwxMywxLDE1LDNdXSxlOlsxOCxbMyw4LDE1LDgsMTUsMTAsMTQsMTIsMTMsMTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLGY6WzEyLFsxMCwyMSw4LDIxLDYsMjAsNSwxNyw1LDAsLTEsLTEsMiwxNCw5LDE0XV0sZzpbMTksWzE1LDE0LDE1LC0yLDE0LC01LDEzLC02LDExLC03LDgsLTcsNiwtNiwtMSwtMSwxNSwxMSwxMywxMywxMSwxNCw4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0saDpbMTksWzQsMjEsNCwwLC0xLC0xLDQsMTAsNywxMyw5LDE0LDEyLDE0LDE0LDEzLDE1LDEwLDE1LDBdXSxpOls4LFszLDIxLDQsMjAsNSwyMSw0LDIyLDMsMjEsLTEsLTEsNCwxNCw0LDBdXSxqOlsxMCxbNSwyMSw2LDIwLDcsMjEsNiwyMiw1LDIxLC0xLC0xLDYsMTQsNiwtMyw1LC02LDMsLTcsMSwtN11dLGs6WzE3LFs0LDIxLDQsMCwtMSwtMSwxNCwxNCw0LDQsLTEsLTEsOCw4LDE1LDBdXSxsOls4LFs0LDIxLDQsMF1dLG06WzMwLFs0LDE0LDQsMCwtMSwtMSw0LDEwLDcsMTMsOSwxNCwxMiwxNCwxNCwxMywxNSwxMCwxNSwwLC0xLC0xLDE1LDEwLDE4LDEzLDIwLDE0LDIzLDE0LDI1LDEzLDI2LDEwLDI2LDBdXSxuOlsxOSxbNCwxNCw0LDAsLTEsLTEsNCwxMCw3LDEzLDksMTQsMTIsMTQsMTQsMTMsMTUsMTAsMTUsMF1dLG86WzE5LFs4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzLDE2LDYsMTYsOCwxNSwxMSwxMywxMywxMSwxNCw4LDE0XV0scDpbMTksWzQsMTQsNCwtNywtMSwtMSw0LDExLDYsMTMsOCwxNCwxMSwxNCwxMywxMywxNSwxMSwxNiw4LDE2LDYsMTUsMywxMywxLDExLDAsOCwwLDYsMSw0LDNdXSxxOlsxOSxbMTUsMTQsMTUsLTcsLTEsLTEsMTUsMTEsMTMsMTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLHI6WzEzLFs0LDE0LDQsMCwtMSwtMSw0LDgsNSwxMSw3LDEzLDksMTQsMTIsMTRdXSxzOlsxNyxbMTQsMTEsMTMsMTMsMTAsMTQsNywxNCw0LDEzLDMsMTEsNCw5LDYsOCwxMSw3LDEzLDYsMTQsNCwxNCwzLDEzLDEsMTAsMCw3LDAsNCwxLDMsM11dLHQ6WzEyLFs1LDIxLDUsNCw2LDEsOCwwLDEwLDAsLTEsLTEsMiwxNCw5LDE0XV0sdTpbMTksWzQsMTQsNCw0LDUsMSw3LDAsMTAsMCwxMiwxLDE1LDQsLTEsLTEsMTUsMTQsMTUsMF1dLHY6WzE2LFsyLDE0LDgsMCwtMSwtMSwxNCwxNCw4LDBdXSx3OlsyMixbMywxNCw3LDAsLTEsLTEsMTEsMTQsNywwLC0xLC0xLDExLDE0LDE1LDAsLTEsLTEsMTksMTQsMTUsMF1dLHg6WzE3LFszLDE0LDE0LDAsLTEsLTEsMTQsMTQsMywwXV0seTpbMTYsWzIsMTQsOCwwLC0xLC0xLDE0LDE0LDgsMCw2LC00LDQsLTYsMiwtNywxLC03XV0sejpbMTcsWzE0LDE0LDMsMCwtMSwtMSwzLDE0LDE0LDE0LC0xLC0xLDMsMCwxNCwwXV0sXCJ7XCI6WzE0LFs5LDI1LDcsMjQsNiwyMyw1LDIxLDUsMTksNiwxNyw3LDE2LDgsMTQsOCwxMiw2LDEwLC0xLC0xLDcsMjQsNiwyMiw2LDIwLDcsMTgsOCwxNyw5LDE1LDksMTMsOCwxMSw0LDksOCw3LDksNSw5LDMsOCwxLDcsMCw2LC0yLDYsLTQsNywtNiwtMSwtMSw2LDgsOCw2LDgsNCw3LDIsNiwxLDUsLTEsNSwtMyw2LC01LDcsLTYsOSwtN11dLFwifFwiOls4LFs0LDI1LDQsLTddXSxcIn1cIjpbMTQsWzUsMjUsNywyNCw4LDIzLDksMjEsOSwxOSw4LDE3LDcsMTYsNiwxNCw2LDEyLDgsMTAsLTEsLTEsNywyNCw4LDIyLDgsMjAsNywxOCw2LDE3LDUsMTUsNSwxMyw2LDExLDEwLDksNiw3LDUsNSw1LDMsNiwxLDcsMCw4LC0yLDgsLTQsNywtNiwtMSwtMSw4LDgsNiw2LDYsNCw3LDIsOCwxLDksLTEsOSwtMyw4LC01LDcsLTYsNSwtN11dLFwiflwiOlsyNCxbMyw2LDMsOCw0LDExLDYsMTIsOCwxMiwxMCwxMSwxNCw4LDE2LDcsMTgsNywyMCw4LDIxLDEwLC0xLC0xLDMsOCw0LDEwLDYsMTEsOCwxMSwxMCwxMCwxNCw3LDE2LDYsMTgsNiwyMCw3LDIxLDEwLDIxLDEyXV19O1xufSx7XCIuLi9kYXRhL2V4dGVudFwiOjQ4LFwiLi4vZGF0YS9wb3NfYXJyYXlcIjo1MixcIi4uL2dsL3ZlcnRleF9idWZmZXJcIjo2MixcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4vdmVydGV4X2FycmF5X29iamVjdFwiOjg0LFwiQG1hcGJveC9nbC1tYXRyaXhcIjoxfV0sNjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZHJhd0ZpbGwocix0LGUsYSl7dmFyIGk9ci5nbDtpLmVuYWJsZShpLlNURU5DSUxfVEVTVCk7dmFyIGw9IWUucGFpbnRbXCJmaWxsLXBhdHRlcm5cIl0mJmUuaXNQYWludFZhbHVlRmVhdHVyZUNvbnN0YW50KFwiZmlsbC1jb2xvclwiKSYmZS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQoXCJmaWxsLW9wYWNpdHlcIikmJjE9PT1lLnBhaW50W1wiZmlsbC1jb2xvclwiXVszXSYmMT09PWUucGFpbnRbXCJmaWxsLW9wYWNpdHlcIl0/XCJvcGFxdWVcIjpcInRyYW5zbHVjZW50XCI7ci5yZW5kZXJQYXNzPT09bCYmKHIuc2V0RGVwdGhTdWJsYXllcigxKSxyLmRlcHRoTWFzayhcIm9wYXF1ZVwiPT09ci5yZW5kZXJQYXNzKSxkcmF3RmlsbFRpbGVzKHIsdCxlLGEsZHJhd0ZpbGxUaWxlKSksXCJ0cmFuc2x1Y2VudFwiPT09ci5yZW5kZXJQYXNzJiZlLnBhaW50W1wiZmlsbC1hbnRpYWxpYXNcIl0mJihyLmxpbmVXaWR0aCgyKSxyLmRlcHRoTWFzayghMSksci5zZXREZXB0aFN1YmxheWVyKGUuZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT8yOjApLGRyYXdGaWxsVGlsZXMocix0LGUsYSxkcmF3U3Ryb2tlVGlsZSkpfWZ1bmN0aW9uIGRyYXdGaWxsVGlsZXMocix0LGUsYSxpKXtpZighcGF0dGVybi5pc1BhdHRlcm5NaXNzaW5nKGUucGFpbnRbXCJmaWxsLXBhdHRlcm5cIl0scikpZm9yKHZhciBsPSEwLG49MCxvPWE7bjxvLmxlbmd0aDtuKz0xKXt2YXIgcz1vW25dLGY9dC5nZXRUaWxlKHMpLHU9Zi5nZXRCdWNrZXQoZSk7dSYmKHIuZW5hYmxlVGlsZUNsaXBwaW5nTWFzayhzKSxpKHIsdCxlLGYscyx1LGwpLGw9ITEpfX1mdW5jdGlvbiBkcmF3RmlsbFRpbGUocix0LGUsYSxpLGwsbil7dmFyIG89ci5nbCxzPWwucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKTtzZXRGaWxsUHJvZ3JhbShcImZpbGxcIixlLnBhaW50W1wiZmlsbC1wYXR0ZXJuXCJdLHIscyxlLGEsaSxuKS5kcmF3KG8sby5UUklBTkdMRVMsZS5pZCxsLmxheW91dFZlcnRleEJ1ZmZlcixsLmluZGV4QnVmZmVyLGwuc2VnbWVudHMscyl9ZnVuY3Rpb24gZHJhd1N0cm9rZVRpbGUocix0LGUsYSxpLGwsbil7dmFyIG89ci5nbCxzPWwucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKSxmPWUucGFpbnRbXCJmaWxsLXBhdHRlcm5cIl0mJiFlLmdldFBhaW50UHJvcGVydHkoXCJmaWxsLW91dGxpbmUtY29sb3JcIiksdT1zZXRGaWxsUHJvZ3JhbShcImZpbGxPdXRsaW5lXCIsZixyLHMsZSxhLGksbik7by51bmlmb3JtMmYodS51bmlmb3Jtcy51X3dvcmxkLG8uZHJhd2luZ0J1ZmZlcldpZHRoLG8uZHJhd2luZ0J1ZmZlckhlaWdodCksdS5kcmF3KG8sby5MSU5FUyxlLmlkLGwubGF5b3V0VmVydGV4QnVmZmVyLGwuaW5kZXhCdWZmZXIyLGwuc2VnbWVudHMyLHMpfWZ1bmN0aW9uIHNldEZpbGxQcm9ncmFtKHIsdCxlLGEsaSxsLG4sbyl7dmFyIHMsZj1lLmN1cnJlbnRQcm9ncmFtO3JldHVybiB0PyhzPWUudXNlUHJvZ3JhbShyK1wiUGF0dGVyblwiLGEpLChvfHxzIT09ZikmJihhLnNldFVuaWZvcm1zKGUuZ2wscyxpLHt6b29tOmUudHJhbnNmb3JtLnpvb219KSxwYXR0ZXJuLnByZXBhcmUoaS5wYWludFtcImZpbGwtcGF0dGVyblwiXSxlLHMpKSxwYXR0ZXJuLnNldFRpbGUobCxlLHMpKToocz1lLnVzZVByb2dyYW0ocixhKSwob3x8cyE9PWYpJiZhLnNldFVuaWZvcm1zKGUuZ2wscyxpLHt6b29tOmUudHJhbnNmb3JtLnpvb219KSksZS5nbC51bmlmb3JtTWF0cml4NGZ2KHMudW5pZm9ybXMudV9tYXRyaXgsITEsZS50cmFuc2xhdGVQb3NNYXRyaXgobi5wb3NNYXRyaXgsbCxpLnBhaW50W1wiZmlsbC10cmFuc2xhdGVcIl0saS5wYWludFtcImZpbGwtdHJhbnNsYXRlLWFuY2hvclwiXSkpLHN9dmFyIHBhdHRlcm49X2RlcmVxXyhcIi4vcGF0dGVyblwiKTttb2R1bGUuZXhwb3J0cz1kcmF3RmlsbDtcbn0se1wiLi9wYXR0ZXJuXCI6ODB9XSw2OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBkcmF3KHIsdCxlLGkpe2lmKFwiM2RcIj09PXIucmVuZGVyUGFzcyl7dmFyIGE9ci5nbDthLmRpc2FibGUoYS5TVEVOQ0lMX1RFU1QpLGEuZW5hYmxlKGEuREVQVEhfVEVTVCksci5jbGVhckNvbG9yKCksci5kZXB0aE1hc2soITApO2Zvcih2YXIgbj0wO248aS5sZW5ndGg7bisrKWRyYXdFeHRydXNpb24ocix0LGUsaVtuXSl9ZWxzZVwidHJhbnNsdWNlbnRcIj09PXIucmVuZGVyUGFzcyYmZHJhd0V4dHJ1c2lvblRleHR1cmUocixlKX1mdW5jdGlvbiBkcmF3RXh0cnVzaW9uVGV4dHVyZShyLHQpe3ZhciBlPXIucHJlcmVuZGVyZWRGcmFtZXNbdC5pZF07aWYoZSl7dmFyIGk9ci5nbCxhPXIudXNlUHJvZ3JhbShcImV4dHJ1c2lvblRleHR1cmVcIik7aS5kaXNhYmxlKGkuU1RFTkNJTF9URVNUKSxpLmRpc2FibGUoaS5ERVBUSF9URVNUKSxpLmFjdGl2ZVRleHR1cmUoaS5URVhUVVJFMCksaS5iaW5kVGV4dHVyZShpLlRFWFRVUkVfMkQsZS50ZXh0dXJlKSxpLnVuaWZvcm0xZihhLnVuaWZvcm1zLnVfb3BhY2l0eSx0LnBhaW50W1wiZmlsbC1leHRydXNpb24tb3BhY2l0eVwiXSksaS51bmlmb3JtMWkoYS51bmlmb3Jtcy51X2ltYWdlLDApO3ZhciBuPW1hdDQuY3JlYXRlKCk7bWF0NC5vcnRobyhuLDAsci53aWR0aCxyLmhlaWdodCwwLDAsMSksaS51bmlmb3JtTWF0cml4NGZ2KGEudW5pZm9ybXMudV9tYXRyaXgsITEsbiksaS51bmlmb3JtMmYoYS51bmlmb3Jtcy51X3dvcmxkLGkuZHJhd2luZ0J1ZmZlcldpZHRoLGkuZHJhd2luZ0J1ZmZlckhlaWdodCksZS52YW8uYmluZChpLGEsZS5idWZmZXIpLGkuZHJhd0FycmF5cyhpLlRSSUFOR0xFX1NUUklQLDAsNCksci52aWV3cG9ydEZyYW1lcy5wdXNoKGUpLGRlbGV0ZSByLnByZXJlbmRlcmVkRnJhbWVzW3QuaWRdfX1mdW5jdGlvbiBkcmF3RXh0cnVzaW9uKHIsdCxlLGkpe3ZhciBhPXQuZ2V0VGlsZShpKSxuPWEuZ2V0QnVja2V0KGUpO2lmKG4pe3ZhciBvPXIuZ2wsdT1lLnBhaW50W1wiZmlsbC1leHRydXNpb24tcGF0dGVyblwiXSxzPW4ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKSxmPXIudXNlUHJvZ3JhbSh1P1wiZmlsbEV4dHJ1c2lvblBhdHRlcm5cIjpcImZpbGxFeHRydXNpb25cIixzKTtpZihzLnNldFVuaWZvcm1zKG8sZixlLHt6b29tOnIudHJhbnNmb3JtLnpvb219KSx1KXtpZihwYXR0ZXJuLmlzUGF0dGVybk1pc3NpbmcodSxyKSlyZXR1cm47cGF0dGVybi5wcmVwYXJlKHUscixmKSxwYXR0ZXJuLnNldFRpbGUoYSxyLGYpLG8udW5pZm9ybTFmKGYudW5pZm9ybXMudV9oZWlnaHRfZmFjdG9yLC1NYXRoLnBvdygyLGkueikvYS50aWxlU2l6ZS84KX1yLmdsLnVuaWZvcm1NYXRyaXg0ZnYoZi51bmlmb3Jtcy51X21hdHJpeCwhMSxyLnRyYW5zbGF0ZVBvc01hdHJpeChpLnBvc01hdHJpeCxhLGUucGFpbnRbXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGVcIl0sZS5wYWludFtcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3JcIl0pKSxzZXRMaWdodChmLHIpLGYuZHJhdyhvLG8uVFJJQU5HTEVTLGUuaWQsbi5sYXlvdXRWZXJ0ZXhCdWZmZXIsbi5pbmRleEJ1ZmZlcixuLnNlZ21lbnRzLHMpfX1mdW5jdGlvbiBzZXRMaWdodChyLHQpe3ZhciBlPXQuZ2wsaT10LnN0eWxlLmxpZ2h0LGE9aS5jYWxjdWxhdGVkLnBvc2l0aW9uLG49W2EueCxhLnksYS56XSxvPW1hdDMuY3JlYXRlKCk7XCJ2aWV3cG9ydFwiPT09aS5jYWxjdWxhdGVkLmFuY2hvciYmbWF0My5mcm9tUm90YXRpb24obywtdC50cmFuc2Zvcm0uYW5nbGUpLHZlYzMudHJhbnNmb3JtTWF0MyhuLG4sbyksZS51bmlmb3JtM2Z2KHIudW5pZm9ybXMudV9saWdodHBvcyxuKSxlLnVuaWZvcm0xZihyLnVuaWZvcm1zLnVfbGlnaHRpbnRlbnNpdHksaS5jYWxjdWxhdGVkLmludGVuc2l0eSksZS51bmlmb3JtM2Z2KHIudW5pZm9ybXMudV9saWdodGNvbG9yLGkuY2FsY3VsYXRlZC5jb2xvci5zbGljZSgwLDMpKX12YXIgZ2xNYXRyaXg9X2RlcmVxXyhcIkBtYXBib3gvZ2wtbWF0cml4XCIpLHBhdHRlcm49X2RlcmVxXyhcIi4vcGF0dGVyblwiKSxtYXQzPWdsTWF0cml4Lm1hdDMsbWF0ND1nbE1hdHJpeC5tYXQ0LHZlYzM9Z2xNYXRyaXgudmVjMzttb2R1bGUuZXhwb3J0cz1kcmF3O1xufSx7XCIuL3BhdHRlcm5cIjo4MCxcIkBtYXBib3gvZ2wtbWF0cml4XCI6MX1dLDcwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGRyYXdMaW5lVGlsZShpLHIsZSx0LG4sYSxvLHUsZil7dmFyIHMsbCxtLF8scD1yLmdsLGc9bi5wYWludFtcImxpbmUtZGFzaGFycmF5XCJdLGQ9bi5wYWludFtcImxpbmUtcGF0dGVyblwiXTtpZih1fHxmKXt2YXIgeD0xL3BpeGVsc1RvVGlsZVVuaXRzKGUsMSxyLnRyYW5zZm9ybS50aWxlWm9vbSk7aWYoZyl7cz1yLmxpbmVBdGxhcy5nZXREYXNoKGcuZnJvbSxcInJvdW5kXCI9PT1uLmxheW91dFtcImxpbmUtY2FwXCJdKSxsPXIubGluZUF0bGFzLmdldERhc2goZy50byxcInJvdW5kXCI9PT1uLmxheW91dFtcImxpbmUtY2FwXCJdKTt2YXIgVD1zLndpZHRoKmcuZnJvbVNjYWxlLGM9bC53aWR0aCpnLnRvU2NhbGU7cC51bmlmb3JtMmYoaS51bmlmb3Jtcy51X3BhdHRlcm5zY2FsZV9hLHgvVCwtcy5oZWlnaHQvMikscC51bmlmb3JtMmYoaS51bmlmb3Jtcy51X3BhdHRlcm5zY2FsZV9iLHgvYywtbC5oZWlnaHQvMikscC51bmlmb3JtMWYoaS51bmlmb3Jtcy51X3NkZmdhbW1hLHIubGluZUF0bGFzLndpZHRoLygyNTYqTWF0aC5taW4oVCxjKSpicm93c2VyLmRldmljZVBpeGVsUmF0aW8pLzIpfWVsc2UgaWYoZCl7aWYobT1yLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKGQuZnJvbSksXz1yLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKGQudG8pLCFtfHwhXylyZXR1cm47cC51bmlmb3JtMmYoaS51bmlmb3Jtcy51X3BhdHRlcm5fc2l6ZV9hLG0uZGlzcGxheVNpemVbMF0qZC5mcm9tU2NhbGUveCxfLmRpc3BsYXlTaXplWzFdKSxwLnVuaWZvcm0yZihpLnVuaWZvcm1zLnVfcGF0dGVybl9zaXplX2IsXy5kaXNwbGF5U2l6ZVswXSpkLnRvU2NhbGUveCxfLmRpc3BsYXlTaXplWzFdKTt2YXIgaD1yLmltYWdlTWFuYWdlci5nZXRQaXhlbFNpemUoKSx2PWgud2lkdGgsYj1oLmhlaWdodDtwLnVuaWZvcm0yZnYoaS51bmlmb3Jtcy51X3RleHNpemUsW3YsYl0pfXAudW5pZm9ybTJmKGkudW5pZm9ybXMudV9nbF91bml0c190b19waXhlbHMsMS9yLnRyYW5zZm9ybS5waXhlbHNUb0dMVW5pdHNbMF0sMS9yLnRyYW5zZm9ybS5waXhlbHNUb0dMVW5pdHNbMV0pfXUmJihnPyhwLnVuaWZvcm0xaShpLnVuaWZvcm1zLnVfaW1hZ2UsMCkscC5hY3RpdmVUZXh0dXJlKHAuVEVYVFVSRTApLHIubGluZUF0bGFzLmJpbmQocCkscC51bmlmb3JtMWYoaS51bmlmb3Jtcy51X3RleF95X2Escy55KSxwLnVuaWZvcm0xZihpLnVuaWZvcm1zLnVfdGV4X3lfYixsLnkpLHAudW5pZm9ybTFmKGkudW5pZm9ybXMudV9taXgsZy50KSk6ZCYmKHAudW5pZm9ybTFpKGkudW5pZm9ybXMudV9pbWFnZSwwKSxwLmFjdGl2ZVRleHR1cmUocC5URVhUVVJFMCksci5pbWFnZU1hbmFnZXIuYmluZChwKSxwLnVuaWZvcm0yZnYoaS51bmlmb3Jtcy51X3BhdHRlcm5fdGxfYSxtLnRsKSxwLnVuaWZvcm0yZnYoaS51bmlmb3Jtcy51X3BhdHRlcm5fYnJfYSxtLmJyKSxwLnVuaWZvcm0yZnYoaS51bmlmb3Jtcy51X3BhdHRlcm5fdGxfYixfLnRsKSxwLnVuaWZvcm0yZnYoaS51bmlmb3Jtcy51X3BhdHRlcm5fYnJfYixfLmJyKSxwLnVuaWZvcm0xZihpLnVuaWZvcm1zLnVfZmFkZSxkLnQpKSksci5lbmFibGVUaWxlQ2xpcHBpbmdNYXNrKGEpO3ZhciB5PXIudHJhbnNsYXRlUG9zTWF0cml4KGEucG9zTWF0cml4LGUsbi5wYWludFtcImxpbmUtdHJhbnNsYXRlXCJdLG4ucGFpbnRbXCJsaW5lLXRyYW5zbGF0ZS1hbmNob3JcIl0pO3AudW5pZm9ybU1hdHJpeDRmdihpLnVuaWZvcm1zLnVfbWF0cml4LCExLHkpLHAudW5pZm9ybTFmKGkudW5pZm9ybXMudV9yYXRpbywxL3BpeGVsc1RvVGlsZVVuaXRzKGUsMSxyLnRyYW5zZm9ybS56b29tKSksaS5kcmF3KHAscC5UUklBTkdMRVMsbi5pZCx0LmxheW91dFZlcnRleEJ1ZmZlcix0LmluZGV4QnVmZmVyLHQuc2VnbWVudHMsbyl9dmFyIGJyb3dzZXI9X2RlcmVxXyhcIi4uL3V0aWwvYnJvd3NlclwiKSxwaXhlbHNUb1RpbGVVbml0cz1fZGVyZXFfKFwiLi4vc291cmNlL3BpeGVsc190b190aWxlX3VuaXRzXCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGkscixlLHQpe2lmKFwidHJhbnNsdWNlbnRcIj09PWkucmVuZGVyUGFzcyl7aS5zZXREZXB0aFN1YmxheWVyKDApLGkuZGVwdGhNYXNrKCExKTt2YXIgbj1pLmdsO2lmKG4uZW5hYmxlKG4uU1RFTkNJTF9URVNUKSwhKGUucGFpbnRbXCJsaW5lLXdpZHRoXCJdPD0wKSlmb3IodmFyIGEsbz1lLnBhaW50W1wibGluZS1kYXNoYXJyYXlcIl0/XCJsaW5lU0RGXCI6ZS5wYWludFtcImxpbmUtcGF0dGVyblwiXT9cImxpbmVQYXR0ZXJuXCI6XCJsaW5lXCIsdT0hMCxmPTAscz10O2Y8cy5sZW5ndGg7Zis9MSl7dmFyIGw9c1tmXSxtPXIuZ2V0VGlsZShsKSxfPW0uZ2V0QnVja2V0KGUpO2lmKF8pe3ZhciBwPV8ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKSxnPWkuY3VycmVudFByb2dyYW0sZD1pLnVzZVByb2dyYW0obyxwKSx4PXV8fGQhPT1nLFQ9YSE9PW0uY29vcmQuejt4JiZwLnNldFVuaWZvcm1zKGkuZ2wsZCxlLHt6b29tOmkudHJhbnNmb3JtLnpvb219KSxkcmF3TGluZVRpbGUoZCxpLG0sXyxlLGwscCx4LFQpLGE9bS5jb29yZC56LHU9ITF9fX19O1xufSx7XCIuLi9zb3VyY2UvcGl4ZWxzX3RvX3RpbGVfdW5pdHNcIjo5MyxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMn1dLDcxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGRyYXdSYXN0ZXIocix0LGUsYSl7aWYoXCJ0cmFuc2x1Y2VudFwiPT09ci5yZW5kZXJQYXNzKXt2YXIgaT1yLmdsLG89dC5nZXRTb3VyY2UoKSxuPXIudXNlUHJvZ3JhbShcInJhc3RlclwiKTtpLmVuYWJsZShpLkRFUFRIX1RFU1QpLHIuZGVwdGhNYXNrKCEwKSxpLmRlcHRoRnVuYyhpLkxFU1MpLGkuZGlzYWJsZShpLlNURU5DSUxfVEVTVCksaS51bmlmb3JtMWYobi51bmlmb3Jtcy51X2JyaWdodG5lc3NfbG93LGUucGFpbnRbXCJyYXN0ZXItYnJpZ2h0bmVzcy1taW5cIl0pLGkudW5pZm9ybTFmKG4udW5pZm9ybXMudV9icmlnaHRuZXNzX2hpZ2gsZS5wYWludFtcInJhc3Rlci1icmlnaHRuZXNzLW1heFwiXSksaS51bmlmb3JtMWYobi51bmlmb3Jtcy51X3NhdHVyYXRpb25fZmFjdG9yLHNhdHVyYXRpb25GYWN0b3IoZS5wYWludFtcInJhc3Rlci1zYXR1cmF0aW9uXCJdKSksaS51bmlmb3JtMWYobi51bmlmb3Jtcy51X2NvbnRyYXN0X2ZhY3Rvcixjb250cmFzdEZhY3RvcihlLnBhaW50W1wicmFzdGVyLWNvbnRyYXN0XCJdKSksaS51bmlmb3JtM2Z2KG4udW5pZm9ybXMudV9zcGluX3dlaWdodHMsc3BpbldlaWdodHMoZS5wYWludFtcInJhc3Rlci1odWUtcm90YXRlXCJdKSksaS51bmlmb3JtMWYobi51bmlmb3Jtcy51X2J1ZmZlcl9zY2FsZSwxKSxpLnVuaWZvcm0xaShuLnVuaWZvcm1zLnVfaW1hZ2UwLDApLGkudW5pZm9ybTFpKG4udW5pZm9ybXMudV9pbWFnZTEsMSk7Zm9yKHZhciB1PWEubGVuZ3RoJiZhWzBdLnoscz0wLGY9YTtzPGYubGVuZ3RoO3MrPTEpe3ZhciBtPWZbc107ci5zZXREZXB0aFN1YmxheWVyKG0uei11KTt2YXIgZD10LmdldFRpbGUobSksYz1yLnRyYW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgobSx0LmdldFNvdXJjZSgpLm1heHpvb20pO2QucmVnaXN0ZXJGYWRlRHVyYXRpb24oci5zdHlsZS5hbmltYXRpb25Mb29wLGUucGFpbnRbXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiXSksaS51bmlmb3JtTWF0cml4NGZ2KG4udW5pZm9ybXMudV9tYXRyaXgsITEsYyk7dmFyIHA9dC5maW5kTG9hZGVkUGFyZW50KG0sMCx7fSksXz1nZXRGYWRlVmFsdWVzKGQscCx0LGUsci50cmFuc2Zvcm0pLGg9dm9pZCAwLGw9dm9pZCAwO2lmKGkuYWN0aXZlVGV4dHVyZShpLlRFWFRVUkUwKSxpLmJpbmRUZXh0dXJlKGkuVEVYVFVSRV8yRCxkLnRleHR1cmUpLGkuYWN0aXZlVGV4dHVyZShpLlRFWFRVUkUxKSxwPyhpLmJpbmRUZXh0dXJlKGkuVEVYVFVSRV8yRCxwLnRleHR1cmUpLGg9TWF0aC5wb3coMixwLmNvb3JkLnotZC5jb29yZC56KSxsPVtkLmNvb3JkLngqaCUxLGQuY29vcmQueSpoJTFdKTppLmJpbmRUZXh0dXJlKGkuVEVYVFVSRV8yRCxkLnRleHR1cmUpLGkudW5pZm9ybTJmdihuLnVuaWZvcm1zLnVfdGxfcGFyZW50LGx8fFswLDBdKSxpLnVuaWZvcm0xZihuLnVuaWZvcm1zLnVfc2NhbGVfcGFyZW50LGh8fDEpLGkudW5pZm9ybTFmKG4udW5pZm9ybXMudV9mYWRlX3QsXy5taXgpLGkudW5pZm9ybTFmKG4udW5pZm9ybXMudV9vcGFjaXR5LF8ub3BhY2l0eSplLnBhaW50W1wicmFzdGVyLW9wYWNpdHlcIl0pLG8gaW5zdGFuY2VvZiBJbWFnZVNvdXJjZSl7dmFyIGc9by5ib3VuZHNCdWZmZXI7by5ib3VuZHNWQU8uYmluZChpLG4sZyksaS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVfU1RSSVAsMCxnLmxlbmd0aCl9ZWxzZXt2YXIgVD1yLnJhc3RlckJvdW5kc0J1ZmZlcjtyLnJhc3RlckJvdW5kc1ZBTy5iaW5kKGksbixUKSxpLmRyYXdBcnJheXMoaS5UUklBTkdMRV9TVFJJUCwwLFQubGVuZ3RoKX19aS5kZXB0aEZ1bmMoaS5MRVFVQUwpfX1mdW5jdGlvbiBzcGluV2VpZ2h0cyhyKXtyKj1NYXRoLlBJLzE4MDt2YXIgdD1NYXRoLnNpbihyKSxlPU1hdGguY29zKHIpO3JldHVyblsoMiplKzEpLzMsKC1NYXRoLnNxcnQoMykqdC1lKzEpLzMsKE1hdGguc3FydCgzKSp0LWUrMSkvM119ZnVuY3Rpb24gY29udHJhc3RGYWN0b3Iocil7cmV0dXJuIHI+MD8xLygxLXIpOjErcn1mdW5jdGlvbiBzYXR1cmF0aW9uRmFjdG9yKHIpe3JldHVybiByPjA/MS0xLygxLjAwMS1yKTotcn1mdW5jdGlvbiBnZXRGYWRlVmFsdWVzKHIsdCxlLGEsaSl7dmFyIG89YS5wYWludFtcInJhc3Rlci1mYWRlLWR1cmF0aW9uXCJdO2lmKG8+MCl7dmFyIG49RGF0ZS5ub3coKSx1PShuLXIudGltZUFkZGVkKS9vLHM9dD8obi10LnRpbWVBZGRlZCkvbzotMSxmPWUuZ2V0U291cmNlKCksbT1pLmNvdmVyaW5nWm9vbUxldmVsKHt0aWxlU2l6ZTpmLnRpbGVTaXplLHJvdW5kWm9vbTpmLnJvdW5kWm9vbX0pLGQ9IXR8fE1hdGguYWJzKHQuY29vcmQuei1tKT5NYXRoLmFicyhyLmNvb3JkLnotbSksYz1kJiZyLnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPzE6dXRpbC5jbGFtcChkP3U6MS1zLDAsMSk7cmV0dXJuIHIucmVmcmVzaGVkVXBvbkV4cGlyYXRpb24mJnU+PTEmJihyLnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPSExKSx0P3tvcGFjaXR5OjEsbWl4OjEtY306e29wYWNpdHk6YyxtaXg6MH19cmV0dXJue29wYWNpdHk6MSxtaXg6MH19dmFyIHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxJbWFnZVNvdXJjZT1fZGVyZXFfKFwiLi4vc291cmNlL2ltYWdlX3NvdXJjZVwiKTttb2R1bGUuZXhwb3J0cz1kcmF3UmFzdGVyO1xufSx7XCIuLi9zb3VyY2UvaW1hZ2Vfc291cmNlXCI6OTEsXCIuLi91dGlsL3V0aWxcIjoyMjN9XSw3MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBkcmF3U3ltYm9scyh0LGksbyxlKXtpZihcInRyYW5zbHVjZW50XCI9PT10LnJlbmRlclBhc3Mpe3ZhciBhPSEoby5sYXlvdXRbXCJ0ZXh0LWFsbG93LW92ZXJsYXBcIl18fG8ubGF5b3V0W1wiaWNvbi1hbGxvdy1vdmVybGFwXCJdfHxvLmxheW91dFtcInRleHQtaWdub3JlLXBsYWNlbWVudFwiXXx8by5sYXlvdXRbXCJpY29uLWlnbm9yZS1wbGFjZW1lbnRcIl0pLHI9dC5nbDthP3IuZGlzYWJsZShyLlNURU5DSUxfVEVTVCk6ci5lbmFibGUoci5TVEVOQ0lMX1RFU1QpLHQuc2V0RGVwdGhTdWJsYXllcigwKSx0LmRlcHRoTWFzayghMSksZHJhd0xheWVyU3ltYm9scyh0LGksbyxlLCExLG8ucGFpbnRbXCJpY29uLXRyYW5zbGF0ZVwiXSxvLnBhaW50W1wiaWNvbi10cmFuc2xhdGUtYW5jaG9yXCJdLG8ubGF5b3V0W1wiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIl0sby5sYXlvdXRbXCJpY29uLXBpdGNoLWFsaWdubWVudFwiXSxvLmxheW91dFtcImljb24ta2VlcC11cHJpZ2h0XCJdKSxkcmF3TGF5ZXJTeW1ib2xzKHQsaSxvLGUsITAsby5wYWludFtcInRleHQtdHJhbnNsYXRlXCJdLG8ucGFpbnRbXCJ0ZXh0LXRyYW5zbGF0ZS1hbmNob3JcIl0sby5sYXlvdXRbXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiXSxvLmxheW91dFtcInRleHQtcGl0Y2gtYWxpZ25tZW50XCJdLG8ubGF5b3V0W1widGV4dC1rZWVwLXVwcmlnaHRcIl0pLGkubWFwLnNob3dDb2xsaXNpb25Cb3hlcyYmZHJhd0NvbGxpc2lvbkRlYnVnKHQsaSxvLGUpfX1mdW5jdGlvbiBkcmF3TGF5ZXJTeW1ib2xzKHQsaSxvLGUsYSxyLG4scyx1LGwpe3ZhciBtPXQuZ2wsZj10LnRyYW5zZm9ybSxjPVwibWFwXCI9PT1zLF89XCJtYXBcIj09PXUseT1jJiZcImxpbmVcIj09PW8ubGF5b3V0W1wic3ltYm9sLXBsYWNlbWVudFwiXSxwPWMmJiFfJiYheSx4PV87eD9tLmVuYWJsZShtLkRFUFRIX1RFU1QpOm0uZGlzYWJsZShtLkRFUFRIX1RFU1QpO2Zvcih2YXIgYixkPTAsVD1lO2Q8VC5sZW5ndGg7ZCs9MSl7dmFyIGc9VFtkXSxTPWkuZ2V0VGlsZShnKSxoPVMuZ2V0QnVja2V0KG8pO2lmKGgpe3ZhciB6PWE/aC50ZXh0OmguaWNvbjtpZih6JiZ6LnNlZ21lbnRzLmdldCgpLmxlbmd0aCl7dmFyIHY9ei5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG8uaWQpLEU9YXx8aC5zZGZJY29ucyx3PWE/aC50ZXh0U2l6ZURhdGE6aC5pY29uU2l6ZURhdGE7aWYoYnx8KGI9dC51c2VQcm9ncmFtKEU/XCJzeW1ib2xTREZcIjpcInN5bWJvbEljb25cIix2KSx2LnNldFVuaWZvcm1zKG0sYixvLHt6b29tOnQudHJhbnNmb3JtLnpvb219KSxzZXRTeW1ib2xEcmF3U3RhdGUoYix0LG8sYSxwLF8sdykpLG0uYWN0aXZlVGV4dHVyZShtLlRFWFRVUkUwKSxtLnVuaWZvcm0xaShiLnVuaWZvcm1zLnVfdGV4dHVyZSwwKSxhKVMuZ2x5cGhBdGxhc1RleHR1cmUuYmluZChtLkxJTkVBUixtLkNMQU1QX1RPX0VER0UpLG0udW5pZm9ybTJmdihiLnVuaWZvcm1zLnVfdGV4c2l6ZSxTLmdseXBoQXRsYXNUZXh0dXJlLnNpemUpO2Vsc2V7dmFyIE09IW8uaXNMYXlvdXRWYWx1ZUZlYXR1cmVDb25zdGFudChcImljb24tc2l6ZVwiKXx8IW8uaXNMYXlvdXRWYWx1ZVpvb21Db25zdGFudChcImljb24tc2l6ZVwiKXx8MSE9PW8uZ2V0TGF5b3V0VmFsdWUoXCJpY29uLXNpemVcIix7em9vbTpmLnpvb219KXx8aC5pY29uc05lZWRMaW5lYXIsQz1ffHwwIT09Zi5waXRjaDtTLmljb25BdGxhc1RleHR1cmUuYmluZChFfHx0Lm9wdGlvbnMucm90YXRpbmd8fHQub3B0aW9ucy56b29taW5nfHxNfHxDP20uTElORUFSOm0uTkVBUkVTVCxtLkNMQU1QX1RPX0VER0UpLG0udW5pZm9ybTJmdihiLnVuaWZvcm1zLnVfdGV4c2l6ZSxTLmljb25BdGxhc1RleHR1cmUuc2l6ZSl9dC5lbmFibGVUaWxlQ2xpcHBpbmdNYXNrKGcpLG0udW5pZm9ybU1hdHJpeDRmdihiLnVuaWZvcm1zLnVfbWF0cml4LCExLHQudHJhbnNsYXRlUG9zTWF0cml4KGcucG9zTWF0cml4LFMscixuKSk7dmFyIEw9cGl4ZWxzVG9UaWxlVW5pdHMoUywxLHQudHJhbnNmb3JtLnpvb20pLFA9c3ltYm9sUHJvamVjdGlvbi5nZXRMYWJlbFBsYW5lTWF0cml4KGcucG9zTWF0cml4LF8sYyx0LnRyYW5zZm9ybSxMKSxEPXN5bWJvbFByb2plY3Rpb24uZ2V0R2xDb29yZE1hdHJpeChnLnBvc01hdHJpeCxfLGMsdC50cmFuc2Zvcm0sTCk7bS51bmlmb3JtTWF0cml4NGZ2KGIudW5pZm9ybXMudV9nbF9jb29yZF9tYXRyaXgsITEsdC50cmFuc2xhdGVQb3NNYXRyaXgoRCxTLHIsbiwhMCkpLHk/KG0udW5pZm9ybU1hdHJpeDRmdihiLnVuaWZvcm1zLnVfbGFiZWxfcGxhbmVfbWF0cml4LCExLGlkZW50aXR5TWF0NCksc3ltYm9sUHJvamVjdGlvbi51cGRhdGVMaW5lTGFiZWxzKGgsZy5wb3NNYXRyaXgsdCxhLFAsRCxfLGwsTCxvKSk6bS51bmlmb3JtTWF0cml4NGZ2KGIudW5pZm9ybXMudV9sYWJlbF9wbGFuZV9tYXRyaXgsITEsUCksbS51bmlmb3JtMWYoYi51bmlmb3Jtcy51X2NvbGxpc2lvbl95X3N0cmV0Y2gsUy5jb2xsaXNpb25UaWxlLnlTdHJldGNoKSxkcmF3VGlsZVN5bWJvbHMoYix2LHQsbyxTLHosYSxFLF8pfX19eHx8bS5lbmFibGUobS5ERVBUSF9URVNUKX1mdW5jdGlvbiBzZXRTeW1ib2xEcmF3U3RhdGUodCxpLG8sZSxhLHIsbil7dmFyIHM9aS5nbCx1PWkudHJhbnNmb3JtO3MudW5pZm9ybTFpKHQudW5pZm9ybXMudV9waXRjaF93aXRoX21hcCxyPzE6MCkscy51bmlmb3JtMWYodC51bmlmb3Jtcy51X2lzX3RleHQsZT8xOjApLHMuYWN0aXZlVGV4dHVyZShzLlRFWFRVUkUxKSxpLmZyYW1lSGlzdG9yeS5iaW5kKHMpLHMudW5pZm9ybTFpKHQudW5pZm9ybXMudV9mYWRldGV4dHVyZSwxKSxzLnVuaWZvcm0xZih0LnVuaWZvcm1zLnVfcGl0Y2gsdS5waXRjaC8zNjAqMipNYXRoLlBJKSxzLnVuaWZvcm0xaSh0LnVuaWZvcm1zLnVfaXNfc2l6ZV96b29tX2NvbnN0YW50LG4uaXNab29tQ29uc3RhbnQ/MTowKSxzLnVuaWZvcm0xaSh0LnVuaWZvcm1zLnVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50LG4uaXNGZWF0dXJlQ29uc3RhbnQ/MTowKSxzLnVuaWZvcm0xZih0LnVuaWZvcm1zLnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSx1LmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UpO3ZhciBsPXN5bWJvbFNpemUuZXZhbHVhdGVTaXplRm9yWm9vbShuLHUsbyxlKTt2b2lkIDAhPT1sLnVTaXplVCYmcy51bmlmb3JtMWYodC51bmlmb3Jtcy51X3NpemVfdCxsLnVTaXplVCksdm9pZCAwIT09bC51U2l6ZSYmcy51bmlmb3JtMWYodC51bmlmb3Jtcy51X3NpemUsbC51U2l6ZSkscy51bmlmb3JtMWYodC51bmlmb3Jtcy51X2FzcGVjdF9yYXRpbyx1LndpZHRoL3UuaGVpZ2h0KSxzLnVuaWZvcm0xaSh0LnVuaWZvcm1zLnVfcm90YXRlX3N5bWJvbCxhPzE6MCl9ZnVuY3Rpb24gZHJhd1RpbGVTeW1ib2xzKHQsaSxvLGUsYSxyLG4scyx1KXt2YXIgbD1vLmdsLG09by50cmFuc2Zvcm07aWYocyl7dmFyIGY9KG4/XCJ0ZXh0XCI6XCJpY29uXCIpK1wiLWhhbG8td2lkdGhcIixjPSFlLmlzUGFpbnRWYWx1ZUZlYXR1cmVDb25zdGFudChmKXx8ZS5wYWludFtmXSxfPXU/TWF0aC5jb3MobS5fcGl0Y2gpKm0uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZToxO2wudW5pZm9ybTFmKHQudW5pZm9ybXMudV9nYW1tYV9zY2FsZSxfKSxjJiYobC51bmlmb3JtMWYodC51bmlmb3Jtcy51X2lzX2hhbG8sMSksZHJhd1N5bWJvbEVsZW1lbnRzKHIsZSxsLHQpKSxsLnVuaWZvcm0xZih0LnVuaWZvcm1zLnVfaXNfaGFsbywwKX1kcmF3U3ltYm9sRWxlbWVudHMocixlLGwsdCl9ZnVuY3Rpb24gZHJhd1N5bWJvbEVsZW1lbnRzKHQsaSxvLGUpe2UuZHJhdyhvLG8uVFJJQU5HTEVTLGkuaWQsdC5sYXlvdXRWZXJ0ZXhCdWZmZXIsdC5pbmRleEJ1ZmZlcix0LnNlZ21lbnRzLHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChpLmlkKSx0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIpfXZhciBkcmF3Q29sbGlzaW9uRGVidWc9X2RlcmVxXyhcIi4vZHJhd19jb2xsaXNpb25fZGVidWdcIikscGl4ZWxzVG9UaWxlVW5pdHM9X2RlcmVxXyhcIi4uL3NvdXJjZS9waXhlbHNfdG9fdGlsZV91bml0c1wiKSxzeW1ib2xQcm9qZWN0aW9uPV9kZXJlcV8oXCIuLi9zeW1ib2wvcHJvamVjdGlvblwiKSxzeW1ib2xTaXplPV9kZXJlcV8oXCIuLi9zeW1ib2wvc3ltYm9sX3NpemVcIiksbWF0ND1fZGVyZXFfKFwiQG1hcGJveC9nbC1tYXRyaXhcIikubWF0NCxpZGVudGl0eU1hdDQ9bWF0NC5pZGVudGl0eShuZXcgRmxvYXQzMkFycmF5KDE2KSk7bW9kdWxlLmV4cG9ydHM9ZHJhd1N5bWJvbHM7XG59LHtcIi4uL3NvdXJjZS9waXhlbHNfdG9fdGlsZV91bml0c1wiOjkzLFwiLi4vc3ltYm9sL3Byb2plY3Rpb25cIjoxNzUsXCIuLi9zeW1ib2wvc3ltYm9sX3NpemVcIjoxNzgsXCIuL2RyYXdfY29sbGlzaW9uX2RlYnVnXCI6NjYsXCJAbWFwYm94L2dsLW1hdHJpeFwiOjF9XSw3MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRnJhbWVIaXN0b3J5PWZ1bmN0aW9uKCl7dGhpcy5jaGFuZ2VUaW1lcz1uZXcgRmxvYXQ2NEFycmF5KDI1NiksdGhpcy5jaGFuZ2VPcGFjaXRpZXM9bmV3IFVpbnQ4QXJyYXkoMjU2KSx0aGlzLm9wYWNpdGllcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMjU2KSx0aGlzLmFycmF5PW5ldyBVaW50OEFycmF5KHRoaXMub3BhY2l0aWVzLmJ1ZmZlciksdGhpcy5wcmV2aW91c1pvb209MCx0aGlzLmZpcnN0RnJhbWU9ITB9O0ZyYW1lSGlzdG9yeS5wcm90b3R5cGUucmVjb3JkPWZ1bmN0aW9uKGUsdCxpKXt2YXIgcj10aGlzO3RoaXMuZmlyc3RGcmFtZSYmKGU9MCx0aGlzLmZpcnN0RnJhbWU9ITEpLHQ9TWF0aC5mbG9vcigxMCp0KTt2YXIgYTtpZih0PHRoaXMucHJldmlvdXNab29tKWZvcihhPXQrMTthPD10aGlzLnByZXZpb3VzWm9vbTthKyspci5jaGFuZ2VUaW1lc1thXT1lLHIuY2hhbmdlT3BhY2l0aWVzW2FdPXIub3BhY2l0aWVzW2FdO2Vsc2UgZm9yKGE9dDthPnRoaXMucHJldmlvdXNab29tO2EtLSlyLmNoYW5nZVRpbWVzW2FdPWUsci5jaGFuZ2VPcGFjaXRpZXNbYV09ci5vcGFjaXRpZXNbYV07Zm9yKGE9MDthPDI1NjthKyspe3ZhciBzPWUtci5jaGFuZ2VUaW1lc1thXSxvPTI1NSooaT9zL2k6MSk7ci5vcGFjaXRpZXNbYV09YTw9dD9yLmNoYW5nZU9wYWNpdGllc1thXStvOnIuY2hhbmdlT3BhY2l0aWVzW2FdLW99dGhpcy5jaGFuZ2VkPSEwLHRoaXMucHJldmlvdXNab29tPXR9LEZyYW1lSGlzdG9yeS5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiAwIT09dGhpcy5vcGFjaXRpZXNbTWF0aC5mbG9vcigxMCplKV19LEZyYW1lSGlzdG9yeS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlKXt0aGlzLnRleHR1cmU/KGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksdGhpcy5jaGFuZ2VkJiYoZS50ZXhTdWJJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLDAsMCwyNTYsMSxlLkFMUEhBLGUuVU5TSUdORURfQllURSx0aGlzLmFycmF5KSx0aGlzLmNoYW5nZWQ9ITEpKToodGhpcy50ZXh0dXJlPWUuY3JlYXRlVGV4dHVyZSgpLGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfV1JBUF9TLGUuQ0xBTVBfVE9fRURHRSksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfV1JBUF9ULGUuQ0xBTVBfVE9fRURHRSksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUixlLk5FQVJFU1QpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX01BR19GSUxURVIsZS5ORUFSRVNUKSxlLnRleEltYWdlMkQoZS5URVhUVVJFXzJELDAsZS5BTFBIQSwyNTYsMSwwLGUuQUxQSEEsZS5VTlNJR05FRF9CWVRFLHRoaXMuYXJyYXkpKX0sbW9kdWxlLmV4cG9ydHM9RnJhbWVIaXN0b3J5O1xufSx7fV0sNzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbWFrZUdseXBoQXRsYXMoYSl7dmFyIGU9QWxwaGFJbWFnZS5jcmVhdGUoe3dpZHRoOjAsaGVpZ2h0OjB9KSxpPXt9LHQ9bmV3IFNoZWxmUGFjaygwLDAse2F1dG9SZXNpemU6ITB9KTtmb3IodmFyIGggaW4gYSl7dmFyIHA9YVtoXSxyPWlbaF09e307Zm9yKHZhciBtIGluIHApe3ZhciBnPXBbK21dO2lmKGcmJjAhPT1nLmJpdG1hcC53aWR0aCYmMCE9PWcuYml0bWFwLmhlaWdodCl7dmFyIGw9dC5wYWNrT25lKGcuYml0bWFwLndpZHRoKzIqcGFkZGluZyxnLmJpdG1hcC5oZWlnaHQrMipwYWRkaW5nKTtBbHBoYUltYWdlLnJlc2l6ZShlLHt3aWR0aDp0LncsaGVpZ2h0OnQuaH0pLEFscGhhSW1hZ2UuY29weShnLmJpdG1hcCxlLHt4OjAseTowfSx7eDpsLngrcGFkZGluZyx5OmwueStwYWRkaW5nfSxnLmJpdG1hcCksclttXT17cmVjdDpsLG1ldHJpY3M6Zy5tZXRyaWNzfX19fXJldHVybiB0LnNocmluaygpLEFscGhhSW1hZ2UucmVzaXplKGUse3dpZHRoOnQudyxoZWlnaHQ6dC5ofSkse2ltYWdlOmUscG9zaXRpb25zOml9fXZhciBTaGVsZlBhY2s9X2RlcmVxXyhcIkBtYXBib3gvc2hlbGYtcGFja1wiKSxyZWY9X2RlcmVxXyhcIi4uL3V0aWwvaW1hZ2VcIiksQWxwaGFJbWFnZT1yZWYuQWxwaGFJbWFnZSxwYWRkaW5nPTE7bW9kdWxlLmV4cG9ydHM9e21ha2VHbHlwaEF0bGFzOm1ha2VHbHlwaEF0bGFzfTtcbn0se1wiLi4vdXRpbC9pbWFnZVwiOjIxMyxcIkBtYXBib3gvc2hlbGYtcGFja1wiOjN9XSw3NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgbG9hZEdseXBoUmFuZ2U9X2RlcmVxXyhcIi4uL3N0eWxlL2xvYWRfZ2x5cGhfcmFuZ2VcIiksVGlueVNERj1fZGVyZXFfKFwiQG1hcGJveC90aW55LXNkZlwiKSxpc0NoYXI9X2RlcmVxXyhcIi4uL3V0aWwvaXNfY2hhcl9pbl91bmljb2RlX2Jsb2NrXCIpLHJlZj1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLGFzeW5jQWxsPXJlZi5hc3luY0FsbCxyZWYkMT1fZGVyZXFfKFwiLi4vdXRpbC9pbWFnZVwiKSxBbHBoYUltYWdlPXJlZiQxLkFscGhhSW1hZ2UsR2x5cGhNYW5hZ2VyPWZ1bmN0aW9uKHIsZSl7dGhpcy5yZXF1ZXN0VHJhbnNmb3JtPXIsdGhpcy5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9ZSx0aGlzLmVudHJpZXM9e319O0dseXBoTWFuYWdlci5wcm90b3R5cGUuc2V0VVJMPWZ1bmN0aW9uKHIpe3RoaXMudXJsPXJ9LEdseXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0R2x5cGhzPWZ1bmN0aW9uKHIsZSl7dmFyIHQ9dGhpcyxpPVtdO2Zvcih2YXIgYSBpbiByKWZvcih2YXIgbD0wLG49clthXTtsPG4ubGVuZ3RoO2wrPTEpe3ZhciBzPW5bbF07aS5wdXNoKHtzdGFjazphLGlkOnN9KX1hc3luY0FsbChpLGZ1bmN0aW9uKHIsZSl7dmFyIGk9ci5zdGFjayxhPXIuaWQsbD10LmVudHJpZXNbaV07bHx8KGw9dC5lbnRyaWVzW2ldPXtnbHlwaHM6e30scmVxdWVzdHM6e319KTt2YXIgbj1sLmdseXBoc1thXTtpZih2b2lkIDAhPT1uKXJldHVybiB2b2lkIGUobnVsbCx7c3RhY2s6aSxpZDphLGdseXBoOm59KTtpZihuPXQuX3RpbnlTREYobCxpLGEpKXJldHVybiB2b2lkIGUobnVsbCx7c3RhY2s6aSxpZDphLGdseXBoOm59KTt2YXIgcz1NYXRoLmZsb29yKGEvMjU2KTtpZigyNTYqcz42NTUzNSlyZXR1cm4gdm9pZCBlKG5ldyBFcnJvcihcImdseXBocyA+IDY1NTM1IG5vdCBzdXBwb3J0ZWRcIikpO3ZhciBvPWwucmVxdWVzdHNbc107b3x8KG89bC5yZXF1ZXN0c1tzXT1bXSxsb2FkR2x5cGhSYW5nZShpLHMsdC51cmwsdC5yZXF1ZXN0VHJhbnNmb3JtLGZ1bmN0aW9uKHIsZSl7aWYoZSlmb3IodmFyIHQgaW4gZSlsLmdseXBoc1srdF09ZVsrdF07Zm9yKHZhciBpPTAsYT1vO2k8YS5sZW5ndGg7aSs9MSl7KDAsYVtpXSkocixlKX1kZWxldGUgbC5yZXF1ZXN0c1tzXX0pKSxvLnB1c2goZnVuY3Rpb24ocix0KXtyP2Uocik6dCYmZShudWxsLHtzdGFjazppLGlkOmEsZ2x5cGg6dFthXXx8bnVsbH0pfSl9LGZ1bmN0aW9uKHIsdCl7aWYocillKHIpO2Vsc2UgaWYodCl7Zm9yKHZhciBpPXt9LGE9MCxsPXQ7YTxsLmxlbmd0aDthKz0xKXt2YXIgbj1sW2FdLHM9bi5zdGFjayxvPW4uaWQsaD1uLmdseXBoOyhpW3NdfHwoaVtzXT17fSkpW29dPWh9ZShudWxsLGkpfX0pfSxHbHlwaE1hbmFnZXIucHJvdG90eXBlLl90aW55U0RGPWZ1bmN0aW9uKHIsZSx0KXt2YXIgaT10aGlzLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseTtpZihpJiYoaXNDaGFyW1wiQ0pLIFVuaWZpZWQgSWRlb2dyYXBoc1wiXSh0KXx8aXNDaGFyW1wiSGFuZ3VsIFN5bGxhYmxlc1wiXSh0KSkpe3ZhciBhPXIudGlueVNERjtpZighYSl7dmFyIGw9XCI0MDBcIjsvYm9sZC9pLnRlc3QoZSk/bD1cIjkwMFwiOi9tZWRpdW0vaS50ZXN0KGUpP2w9XCI1MDBcIjovbGlnaHQvaS50ZXN0KGUpJiYobD1cIjIwMFwiKSxhPXIudGlueVNERj1uZXcgVGlueVNERigyNCwzLDgsLjI1LGksbCl9cmV0dXJue2lkOnQsYml0bWFwOkFscGhhSW1hZ2UuY3JlYXRlKHt3aWR0aDozMCxoZWlnaHQ6MzB9LGEuZHJhdyhTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSksbWV0cmljczp7d2lkdGg6MjQsaGVpZ2h0OjI0LGxlZnQ6MCx0b3A6LTgsYWR2YW5jZToyNH19fX0sbW9kdWxlLmV4cG9ydHM9R2x5cGhNYW5hZ2VyO1xufSx7XCIuLi9zdHlsZS9sb2FkX2dseXBoX3JhbmdlXCI6MTUyLFwiLi4vdXRpbC9pbWFnZVwiOjIxMyxcIi4uL3V0aWwvaXNfY2hhcl9pbl91bmljb2RlX2Jsb2NrXCI6MjE1LFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiQG1hcGJveC90aW55LXNkZlwiOjR9XSw3NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpbWFnZVBvc2l0aW9uKGEsZSl7dmFyIGk9ZS5waXhlbFJhdGlvLHQ9e3g6YS54K3BhZGRpbmcseTphLnkrcGFkZGluZyx3OmEudy0yKnBhZGRpbmcsaDphLmgtMipwYWRkaW5nfTtyZXR1cm57cGl4ZWxSYXRpbzppLHRleHR1cmVSZWN0OnQsdGw6W3QueCx0LnldLGJyOlt0LngrdC53LHQueSt0LmhdLGRpc3BsYXlTaXplOlt0LncvaSx0LmgvaV19fWZ1bmN0aW9uIG1ha2VJbWFnZUF0bGFzKGEpe3ZhciBlPVJHQkFJbWFnZS5jcmVhdGUoe3dpZHRoOjAsaGVpZ2h0OjB9KSxpPXt9LHQ9bmV3IFNoZWxmUGFjaygwLDAse2F1dG9SZXNpemU6ITB9KTtmb3IodmFyIGQgaW4gYSl7dmFyIGc9YVtkXSxuPXQucGFja09uZShnLmRhdGEud2lkdGgrMipwYWRkaW5nLGcuZGF0YS5oZWlnaHQrMipwYWRkaW5nKTtSR0JBSW1hZ2UucmVzaXplKGUse3dpZHRoOnQudyxoZWlnaHQ6dC5ofSksUkdCQUltYWdlLmNvcHkoZy5kYXRhLGUse3g6MCx5OjB9LHt4Om4ueCtwYWRkaW5nLHk6bi55K3BhZGRpbmd9LGcuZGF0YSksaVtkXT1pbWFnZVBvc2l0aW9uKG4sZyl9cmV0dXJuIHQuc2hyaW5rKCksUkdCQUltYWdlLnJlc2l6ZShlLHt3aWR0aDp0LncsaGVpZ2h0OnQuaH0pLHtpbWFnZTplLHBvc2l0aW9uczppfX12YXIgU2hlbGZQYWNrPV9kZXJlcV8oXCJAbWFwYm94L3NoZWxmLXBhY2tcIikscmVmPV9kZXJlcV8oXCIuLi91dGlsL2ltYWdlXCIpLFJHQkFJbWFnZT1yZWYuUkdCQUltYWdlLHBhZGRpbmc9MTttb2R1bGUuZXhwb3J0cz17aW1hZ2VQb3NpdGlvbjppbWFnZVBvc2l0aW9uLG1ha2VJbWFnZUF0bGFzOm1ha2VJbWFnZUF0bGFzfTtcbn0se1wiLi4vdXRpbC9pbWFnZVwiOjIxMyxcIkBtYXBib3gvc2hlbGYtcGFja1wiOjN9XSw3NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgU2hlbGZQYWNrPV9kZXJlcV8oXCJAbWFwYm94L3NoZWxmLXBhY2tcIikscmVmPV9kZXJlcV8oXCIuLi91dGlsL2ltYWdlXCIpLFJHQkFJbWFnZT1yZWYuUkdCQUltYWdlLHJlZiQxPV9kZXJlcV8oXCIuL2ltYWdlX2F0bGFzXCIpLGltYWdlUG9zaXRpb249cmVmJDEuaW1hZ2VQb3NpdGlvbixUZXh0dXJlPV9kZXJlcV8oXCIuL3RleHR1cmVcIikscGFkZGluZz0xLEltYWdlTWFuYWdlcj1mdW5jdGlvbigpe3RoaXMuaW1hZ2VzPXt9LHRoaXMubG9hZGVkPSExLHRoaXMucmVxdWVzdG9ycz1bXSx0aGlzLnNoZWxmUGFjaz1uZXcgU2hlbGZQYWNrKDY0LDY0LHthdXRvUmVzaXplOiEwfSksdGhpcy5wYXR0ZXJucz17fSx0aGlzLmF0bGFzSW1hZ2U9UkdCQUltYWdlLmNyZWF0ZSh7d2lkdGg6NjQsaGVpZ2h0OjY0fSksdGhpcy5kaXJ0eT0hMH07SW1hZ2VNYW5hZ2VyLnByb3RvdHlwZS5pc0xvYWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvYWRlZH0sSW1hZ2VNYW5hZ2VyLnByb3RvdHlwZS5zZXRMb2FkZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLmxvYWRlZCE9PWUmJih0aGlzLmxvYWRlZD1lLGUpKXtmb3IodmFyIGE9MCxpPXQucmVxdWVzdG9yczthPGkubGVuZ3RoO2ErPTEpe3ZhciByPWlbYV0scz1yLmlkcyxoPXIuY2FsbGJhY2s7dC5fbm90aWZ5KHMsaCl9dGhpcy5yZXF1ZXN0b3JzPVtdfX0sSW1hZ2VNYW5hZ2VyLnByb3RvdHlwZS5nZXRJbWFnZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbWFnZXNbZV19LEltYWdlTWFuYWdlci5wcm90b3R5cGUuYWRkSW1hZ2U9ZnVuY3Rpb24oZSx0KXt0aGlzLmltYWdlc1tlXT10fSxJbWFnZU1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmltYWdlc1tlXTt2YXIgdD10aGlzLnBhdHRlcm5zW2VdO3QmJih0aGlzLnNoZWxmUGFjay51bnJlZih0LmJpbiksZGVsZXRlIHRoaXMucGF0dGVybnNbZV0pfSxJbWFnZU1hbmFnZXIucHJvdG90eXBlLmdldEltYWdlcz1mdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMsaT0hMDtpZighdGhpcy5pc0xvYWRlZCgpKWZvcih2YXIgcj0wLHM9ZTtyPHMubGVuZ3RoO3IrPTEpe3ZhciBoPXNbcl07YS5pbWFnZXNbaF18fChpPSExKX10aGlzLmlzTG9hZGVkKCl8fGk/dGhpcy5fbm90aWZ5KGUsdCk6dGhpcy5yZXF1ZXN0b3JzLnB1c2goe2lkczplLGNhbGxiYWNrOnR9KX0sSW1hZ2VNYW5hZ2VyLnByb3RvdHlwZS5fbm90aWZ5PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhPXRoaXMsaT17fSxyPTAscz1lO3I8cy5sZW5ndGg7cis9MSl7dmFyIGg9c1tyXSxnPWEuaW1hZ2VzW2hdO2cmJihpW2hdPWcpfXQobnVsbCxpKX0sSW1hZ2VNYW5hZ2VyLnByb3RvdHlwZS5nZXRQaXhlbFNpemU9ZnVuY3Rpb24oKXtyZXR1cm57d2lkdGg6dGhpcy5zaGVsZlBhY2sudyxoZWlnaHQ6dGhpcy5zaGVsZlBhY2suaH19LEltYWdlTWFuYWdlci5wcm90b3R5cGUuZ2V0UGF0dGVybj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnBhdHRlcm5zW2VdO2lmKHQpcmV0dXJuIHQucG9zaXRpb247dmFyIGE9dGhpcy5nZXRJbWFnZShlKTtpZighYSlyZXR1cm4gbnVsbDt2YXIgaT1hLmRhdGEud2lkdGgrMipwYWRkaW5nLHI9YS5kYXRhLmhlaWdodCsyKnBhZGRpbmcscz10aGlzLnNoZWxmUGFjay5wYWNrT25lKGkscik7aWYoIXMpcmV0dXJuIG51bGw7UkdCQUltYWdlLnJlc2l6ZSh0aGlzLmF0bGFzSW1hZ2UsdGhpcy5nZXRQaXhlbFNpemUoKSk7dmFyIGg9YS5kYXRhLGc9dGhpcy5hdGxhc0ltYWdlLG49cy54K3BhZGRpbmcsbz1zLnkrcGFkZGluZyxkPWgud2lkdGgsbT1oLmhlaWdodDtSR0JBSW1hZ2UuY29weShoLGcse3g6MCx5OjB9LHt4Om4seTpvfSx7d2lkdGg6ZCxoZWlnaHQ6bX0pLFJHQkFJbWFnZS5jb3B5KGgsZyx7eDowLHk6bS0xfSx7eDpuLHk6by0xfSx7d2lkdGg6ZCxoZWlnaHQ6MX0pLFJHQkFJbWFnZS5jb3B5KGgsZyx7eDowLHk6MH0se3g6bix5Om8rbX0se3dpZHRoOmQsaGVpZ2h0OjF9KSxSR0JBSW1hZ2UuY29weShoLGcse3g6ZC0xLHk6MH0se3g6bi0xLHk6b30se3dpZHRoOjEsaGVpZ2h0Om19KSxSR0JBSW1hZ2UuY29weShoLGcse3g6MCx5OjB9LHt4Om4rZCx5Om99LHt3aWR0aDoxLGhlaWdodDptfSksdGhpcy5kaXJ0eT0hMDt2YXIgcD1pbWFnZVBvc2l0aW9uKHMsYSk7cmV0dXJuIHRoaXMucGF0dGVybnNbZV09e2JpbjpzLHBvc2l0aW9uOnB9LHB9LEltYWdlTWFuYWdlci5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlKXt0aGlzLmF0bGFzVGV4dHVyZT90aGlzLmRpcnR5JiYodGhpcy5hdGxhc1RleHR1cmUudXBkYXRlKHRoaXMuYXRsYXNJbWFnZSksdGhpcy5kaXJ0eT0hMSk6dGhpcy5hdGxhc1RleHR1cmU9bmV3IFRleHR1cmUoZSx0aGlzLmF0bGFzSW1hZ2UsZS5SR0JBKSx0aGlzLmF0bGFzVGV4dHVyZS5iaW5kKGUuTElORUFSLGUuQ0xBTVBfVE9fRURHRSl9LG1vZHVsZS5leHBvcnRzPUltYWdlTWFuYWdlcjtcbn0se1wiLi4vdXRpbC9pbWFnZVwiOjIxMyxcIi4vaW1hZ2VfYXRsYXNcIjo3NixcIi4vdGV4dHVyZVwiOjgzLFwiQG1hcGJveC9zaGVsZi1wYWNrXCI6M31dLDc4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksTGluZUF0bGFzPWZ1bmN0aW9uKHQsaSl7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWksdGhpcy5uZXh0Um93PTAsdGhpcy5ieXRlcz00LHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KnRoaXMuYnl0ZXMpLHRoaXMucG9zaXRpb25zPXt9fTtMaW5lQXRsYXMucHJvdG90eXBlLmdldERhc2g9ZnVuY3Rpb24odCxpKXt2YXIgZT10LmpvaW4oXCIsXCIpK1N0cmluZyhpKTtyZXR1cm4gdGhpcy5wb3NpdGlvbnNbZV18fCh0aGlzLnBvc2l0aW9uc1tlXT10aGlzLmFkZERhc2godCxpKSksdGhpcy5wb3NpdGlvbnNbZV19LExpbmVBdGxhcy5wcm90b3R5cGUuYWRkRGFzaD1mdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMsaD1pPzc6MCxzPTIqaCsxO2lmKHRoaXMubmV4dFJvdytzPnRoaXMuaGVpZ2h0KXJldHVybiB1dGlsLndhcm5PbmNlKFwiTGluZUF0bGFzIG91dCBvZiBzcGFjZVwiKSxudWxsO2Zvcih2YXIgYT0wLHI9MDtyPHQubGVuZ3RoO3IrKylhKz10W3JdO2Zvcih2YXIgbj10aGlzLndpZHRoL2EsRT1uLzIsVD10Lmxlbmd0aCUyPT0xLG89LWg7bzw9aDtvKyspZm9yKHZhciBSPWUubmV4dFJvdytoK28sZD1lLndpZHRoKlIsdT1UPy10W3QubGVuZ3RoLTFdOjAseD10WzBdLGw9MSxfPTA7Xzx0aGlzLndpZHRoO18rKyl7Zm9yKDt4PF8vbjspdT14LHgrPXRbbF0sVCYmbD09PXQubGVuZ3RoLTEmJih4Kz10WzBdKSxsKys7dmFyIEE9TWF0aC5hYnMoXy11Km4pLGc9TWF0aC5hYnMoXy14Km4pLHc9TWF0aC5taW4oQSxnKSxEPWwlMj09MSxVPXZvaWQgMDtpZihpKXt2YXIgZj1oP28vaCooRSsxKTowO2lmKEQpe3ZhciBwPUUtTWF0aC5hYnMoZik7VT1NYXRoLnNxcnQodyp3K3AqcCl9ZWxzZSBVPUUtTWF0aC5zcXJ0KHcqdytmKmYpfWVsc2UgVT0oRD8xOi0xKSp3O2UuZGF0YVszKzQqKGQrXyldPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LFUrMTI4KSl9dmFyIFg9e3k6KHRoaXMubmV4dFJvdytoKy41KS90aGlzLmhlaWdodCxoZWlnaHQ6MipoL3RoaXMuaGVpZ2h0LHdpZHRoOmF9O3JldHVybiB0aGlzLm5leHRSb3crPXMsdGhpcy5kaXJ0eT0hMCxYfSxMaW5lQXRsYXMucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7dGhpcy50ZXh0dXJlPyh0LmJpbmRUZXh0dXJlKHQuVEVYVFVSRV8yRCx0aGlzLnRleHR1cmUpLHRoaXMuZGlydHkmJih0aGlzLmRpcnR5PSExLHQudGV4U3ViSW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCwwLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodCx0LlJHQkEsdC5VTlNJR05FRF9CWVRFLHRoaXMuZGF0YSkpKToodGhpcy50ZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLHQuYmluZFRleHR1cmUodC5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksdC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8yRCx0LlRFWFRVUkVfV1JBUF9TLHQuUkVQRUFUKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVYVFVSRV9XUkFQX1QsdC5SRVBFQVQpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5URVhUVVJFX01JTl9GSUxURVIsdC5MSU5FQVIpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5URVhUVVJFX01BR19GSUxURVIsdC5MSU5FQVIpLHQudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCx0LlJHQkEsdGhpcy53aWR0aCx0aGlzLmhlaWdodCwwLHQuUkdCQSx0LlVOU0lHTkVEX0JZVEUsdGhpcy5kYXRhKSl9LG1vZHVsZS5leHBvcnRzPUxpbmVBdGxhcztcbn0se1wiLi4vdXRpbC91dGlsXCI6MjIzfV0sNzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIGJyb3dzZXI9X2RlcmVxXyhcIi4uL3V0aWwvYnJvd3NlclwiKSxtYXQ0PV9kZXJlcV8oXCJAbWFwYm94L2dsLW1hdHJpeFwiKS5tYXQ0LEZyYW1lSGlzdG9yeT1fZGVyZXFfKFwiLi9mcmFtZV9oaXN0b3J5XCIpLFNvdXJjZUNhY2hlPV9kZXJlcV8oXCIuLi9zb3VyY2Uvc291cmNlX2NhY2hlXCIpLEVYVEVOVD1fZGVyZXFfKFwiLi4vZGF0YS9leHRlbnRcIikscGl4ZWxzVG9UaWxlVW5pdHM9X2RlcmVxXyhcIi4uL3NvdXJjZS9waXhlbHNfdG9fdGlsZV91bml0c1wiKSx1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksVmVydGV4QnVmZmVyPV9kZXJlcV8oXCIuLi9nbC92ZXJ0ZXhfYnVmZmVyXCIpLFZlcnRleEFycmF5T2JqZWN0PV9kZXJlcV8oXCIuL3ZlcnRleF9hcnJheV9vYmplY3RcIiksUmFzdGVyQm91bmRzQXJyYXk9X2RlcmVxXyhcIi4uL2RhdGEvcmFzdGVyX2JvdW5kc19hcnJheVwiKSxQb3NBcnJheT1fZGVyZXFfKFwiLi4vZGF0YS9wb3NfYXJyYXlcIikscmVmPV9kZXJlcV8oXCIuLi9kYXRhL3Byb2dyYW1fY29uZmlndXJhdGlvblwiKSxQcm9ncmFtQ29uZmlndXJhdGlvbj1yZWYuUHJvZ3JhbUNvbmZpZ3VyYXRpb24sc2hhZGVycz1fZGVyZXFfKFwiLi4vc2hhZGVyc1wiKSxQcm9ncmFtPV9kZXJlcV8oXCIuL3Byb2dyYW1cIiksUmVuZGVyVGV4dHVyZT1fZGVyZXFfKFwiLi9yZW5kZXJfdGV4dHVyZVwiKSxkcmF3PXtzeW1ib2w6X2RlcmVxXyhcIi4vZHJhd19zeW1ib2xcIiksY2lyY2xlOl9kZXJlcV8oXCIuL2RyYXdfY2lyY2xlXCIpLGxpbmU6X2RlcmVxXyhcIi4vZHJhd19saW5lXCIpLGZpbGw6X2RlcmVxXyhcIi4vZHJhd19maWxsXCIpLFwiZmlsbC1leHRydXNpb25cIjpfZGVyZXFfKFwiLi9kcmF3X2ZpbGxfZXh0cnVzaW9uXCIpLHJhc3RlcjpfZGVyZXFfKFwiLi9kcmF3X3Jhc3RlclwiKSxiYWNrZ3JvdW5kOl9kZXJlcV8oXCIuL2RyYXdfYmFja2dyb3VuZFwiKSxkZWJ1ZzpfZGVyZXFfKFwiLi9kcmF3X2RlYnVnXCIpfSxQYWludGVyPWZ1bmN0aW9uKGUscil7dGhpcy5nbD1lLHRoaXMudHJhbnNmb3JtPXIsdGhpcy5fdGlsZVRleHR1cmVzPXt9LHRoaXMucHJlcmVuZGVyZWRGcmFtZXM9e30sdGhpcy52aWV3cG9ydEZyYW1lcz1bXSx0aGlzLmZyYW1lSGlzdG9yeT1uZXcgRnJhbWVIaXN0b3J5LHRoaXMuc2V0dXAoKSx0aGlzLm51bVN1YmxheWVycz1Tb3VyY2VDYWNoZS5tYXhVbmRlcnpvb21pbmcrU291cmNlQ2FjaGUubWF4T3Zlcnpvb21pbmcrMSx0aGlzLmRlcHRoRXBzaWxvbj0xL01hdGgucG93KDIsMTYpLHRoaXMubGluZVdpZHRoUmFuZ2U9ZS5nZXRQYXJhbWV0ZXIoZS5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpLHRoaXMuYmFzaWNGaWxsUHJvZ3JhbUNvbmZpZ3VyYXRpb249UHJvZ3JhbUNvbmZpZ3VyYXRpb24uY3JlYXRlQmFzaWNGaWxsKCksdGhpcy5lbXB0eVByb2dyYW1Db25maWd1cmF0aW9uPW5ldyBQcm9ncmFtQ29uZmlndXJhdGlvbn07UGFpbnRlci5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUscil7dmFyIHQ9dGhpcyxpPXRoaXMuZ2w7dGhpcy53aWR0aD1lKmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmhlaWdodD1yKmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyxpLnZpZXdwb3J0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtmb3IodmFyIGE9MCxzPXQudmlld3BvcnRGcmFtZXM7YTxzLmxlbmd0aDthKz0xKXt2YXIgbj1zW2FdO3QuZ2wuZGVsZXRlVGV4dHVyZShuLnRleHR1cmUpLHQuZ2wuZGVsZXRlRnJhbWVidWZmZXIobi5mYm8pfXRoaXMudmlld3BvcnRGcmFtZXM9W10sdGhpcy5kZXB0aFJibyYmKHRoaXMuZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHRoaXMuZGVwdGhSYm8pLHRoaXMuZGVwdGhSYm89bnVsbCl9LFBhaW50ZXIucHJvdG90eXBlLnNldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nbDtlLmVuYWJsZShlLkJMRU5EKSxlLmJsZW5kRnVuYyhlLk9ORSxlLk9ORV9NSU5VU19TUkNfQUxQSEEpLGUuZW5hYmxlKGUuU1RFTkNJTF9URVNUKSxlLmVuYWJsZShlLkRFUFRIX1RFU1QpLGUuZGVwdGhGdW5jKGUuTEVRVUFMKSx0aGlzLl9kZXB0aE1hc2s9ITEsZS5kZXB0aE1hc2soITEpO3ZhciByPW5ldyBQb3NBcnJheTtyLmVtcGxhY2VCYWNrKDAsMCksci5lbXBsYWNlQmFjayhFWFRFTlQsMCksci5lbXBsYWNlQmFjaygwLEVYVEVOVCksci5lbXBsYWNlQmFjayhFWFRFTlQsRVhURU5UKSx0aGlzLnRpbGVFeHRlbnRCdWZmZXI9bmV3IFZlcnRleEJ1ZmZlcihlLHIpLHRoaXMudGlsZUV4dGVudFZBTz1uZXcgVmVydGV4QXJyYXlPYmplY3QsdGhpcy50aWxlRXh0ZW50UGF0dGVyblZBTz1uZXcgVmVydGV4QXJyYXlPYmplY3Q7dmFyIHQ9bmV3IFBvc0FycmF5O3QuZW1wbGFjZUJhY2soMCwwKSx0LmVtcGxhY2VCYWNrKEVYVEVOVCwwKSx0LmVtcGxhY2VCYWNrKEVYVEVOVCxFWFRFTlQpLHQuZW1wbGFjZUJhY2soMCxFWFRFTlQpLHQuZW1wbGFjZUJhY2soMCwwKSx0aGlzLmRlYnVnQnVmZmVyPW5ldyBWZXJ0ZXhCdWZmZXIoZSx0KSx0aGlzLmRlYnVnVkFPPW5ldyBWZXJ0ZXhBcnJheU9iamVjdDt2YXIgaT1uZXcgUmFzdGVyQm91bmRzQXJyYXk7aS5lbXBsYWNlQmFjaygwLDAsMCwwKSxpLmVtcGxhY2VCYWNrKEVYVEVOVCwwLEVYVEVOVCwwKSxpLmVtcGxhY2VCYWNrKDAsRVhURU5ULDAsRVhURU5UKSxpLmVtcGxhY2VCYWNrKEVYVEVOVCxFWFRFTlQsRVhURU5ULEVYVEVOVCksdGhpcy5yYXN0ZXJCb3VuZHNCdWZmZXI9bmV3IFZlcnRleEJ1ZmZlcihlLGkpLHRoaXMucmFzdGVyQm91bmRzVkFPPW5ldyBWZXJ0ZXhBcnJheU9iamVjdCx0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz1lLmdldEV4dGVuc2lvbihcIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpY1wiKXx8ZS5nZXRFeHRlbnNpb24oXCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljXCIpfHxlLmdldEV4dGVuc2lvbihcIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWNcIiksdGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMmJih0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY01heD1lLmdldFBhcmFtZXRlcih0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpKX0sUGFpbnRlci5wcm90b3R5cGUuY2xlYXJDb2xvcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2w7ZS5jbGVhckNvbG9yKDAsMCwwLDApLGUuY2xlYXIoZS5DT0xPUl9CVUZGRVJfQklUKX0sUGFpbnRlci5wcm90b3R5cGUuY2xlYXJTdGVuY2lsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nbDtlLmNsZWFyU3RlbmNpbCgwKSxlLnN0ZW5jaWxNYXNrKDI1NSksZS5jbGVhcihlLlNURU5DSUxfQlVGRkVSX0JJVCl9LFBhaW50ZXIucHJvdG90eXBlLmNsZWFyRGVwdGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdsO2UuY2xlYXJEZXB0aCgxKSx0aGlzLmRlcHRoTWFzayghMCksZS5jbGVhcihlLkRFUFRIX0JVRkZFUl9CSVQpfSxQYWludGVyLnByb3RvdHlwZS5fcmVuZGVyVGlsZUNsaXBwaW5nTWFza3M9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcyx0PXRoaXMuZ2w7dC5jb2xvck1hc2soITEsITEsITEsITEpLHRoaXMuZGVwdGhNYXNrKCExKSx0LmRpc2FibGUodC5ERVBUSF9URVNUKSx0LmVuYWJsZSh0LlNURU5DSUxfVEVTVCksdC5zdGVuY2lsTWFzaygyNTUpLHQuc3RlbmNpbE9wKHQuS0VFUCx0LktFRVAsdC5SRVBMQUNFKTt2YXIgaT0xO3RoaXMuX3RpbGVDbGlwcGluZ01hc2tJRHM9e307Zm9yKHZhciBhPTAscz1lO2E8cy5sZW5ndGg7YSs9MSl7dmFyIG49c1thXSxvPXIuX3RpbGVDbGlwcGluZ01hc2tJRHNbbi5pZF09aSsrO3Quc3RlbmNpbEZ1bmModC5BTFdBWVMsbywyNTUpO3ZhciBsPXIudXNlUHJvZ3JhbShcImZpbGxcIixyLmJhc2ljRmlsbFByb2dyYW1Db25maWd1cmF0aW9uKTt0LnVuaWZvcm1NYXRyaXg0ZnYobC51bmlmb3Jtcy51X21hdHJpeCwhMSxuLnBvc01hdHJpeCksci50aWxlRXh0ZW50VkFPLmJpbmQodCxsLHIudGlsZUV4dGVudEJ1ZmZlciksdC5kcmF3QXJyYXlzKHQuVFJJQU5HTEVfU1RSSVAsMCxyLnRpbGVFeHRlbnRCdWZmZXIubGVuZ3RoKX10LnN0ZW5jaWxNYXNrKDApLHQuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx0aGlzLmRlcHRoTWFzayghMCksdC5lbmFibGUodC5ERVBUSF9URVNUKX0sUGFpbnRlci5wcm90b3R5cGUuZW5hYmxlVGlsZUNsaXBwaW5nTWFzaz1mdW5jdGlvbihlKXt2YXIgcj10aGlzLmdsO3Iuc3RlbmNpbEZ1bmMoci5FUVVBTCx0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzW2UuaWRdLDI1NSl9LFBhaW50ZXIucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHIpe3ZhciB0PXRoaXM7dGhpcy5zdHlsZT1lLHRoaXMub3B0aW9ucz1yLHRoaXMubGluZUF0bGFzPWUubGluZUF0bGFzLHRoaXMuaW1hZ2VNYW5hZ2VyPWUuaW1hZ2VNYW5hZ2VyLHRoaXMuZ2x5cGhNYW5hZ2VyPWUuZ2x5cGhNYW5hZ2VyLHRoaXMuZnJhbWVIaXN0b3J5LnJlY29yZChEYXRlLm5vdygpLHRoaXMudHJhbnNmb3JtLnpvb20sZS5nZXRUcmFuc2l0aW9uKCkuZHVyYXRpb24pO2Zvcih2YXIgaSBpbiB0LnN0eWxlLnNvdXJjZUNhY2hlcyl7dmFyIGE9dC5zdHlsZS5zb3VyY2VDYWNoZXNbaV07YS51c2VkJiZhLnByZXBhcmUodC5nbCl9dmFyIHM9dGhpcy5zdHlsZS5fb3JkZXI7dGhpcy5yZW5kZXJQYXNzPVwiM2RcIjtmb3IodmFyIG4sbz0hMCxsPVtdLGg9MDtoPHMubGVuZ3RoO2grKyl7dmFyIGM9dC5zdHlsZS5fbGF5ZXJzW3NbaF1dO2lmKGMuaGFzM0RQYXNzKCkmJiFjLmlzSGlkZGVuKHQudHJhbnNmb3JtLnpvb20pJiYoYy5zb3VyY2UhPT0obiYmbi5pZCkmJihuPXQuc3R5bGUuc291cmNlQ2FjaGVzW2Muc291cmNlXSxsPVtdLG4mJih0LmNsZWFyU3RlbmNpbCgpLGw9bi5nZXRWaXNpYmxlQ29vcmRpbmF0ZXMoKSksbC5yZXZlcnNlKCkpLGwubGVuZ3RoKSl7dC5fc2V0dXAzRFJlbmRlcmJ1ZmZlcigpO3ZhciB1PXQudmlld3BvcnRGcmFtZXMucG9wKCl8fG5ldyBSZW5kZXJUZXh0dXJlKHQpO3UuYmluZFdpdGhEZXB0aCh0LmRlcHRoUmJvKSxvJiYodC5jbGVhckRlcHRoKCksbz0hMSksdC5yZW5kZXJMYXllcih0LG4sYyxsKSx1LnVuYmluZCgpLHQucHJlcmVuZGVyZWRGcmFtZXNbYy5pZF09dX19dGhpcy5jbGVhckNvbG9yKCksdGhpcy5jbGVhckRlcHRoKCksdGhpcy5zaG93T3ZlcmRyYXdJbnNwZWN0b3Ioci5zaG93T3ZlcmRyYXdJbnNwZWN0b3IpLHRoaXMuZGVwdGhSYW5nZT0oZS5fb3JkZXIubGVuZ3RoKzIpKnRoaXMubnVtU3VibGF5ZXJzKnRoaXMuZGVwdGhFcHNpbG9uLHRoaXMucmVuZGVyUGFzcz1cIm9wYXF1ZVwiO3ZhciBwLGQ9W107Zm9yKHRoaXMuY3VycmVudExheWVyPXMubGVuZ3RoLTEsdGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yfHx0aGlzLmdsLmRpc2FibGUodGhpcy5nbC5CTEVORCksdGhpcy5jdXJyZW50TGF5ZXI7dGhpcy5jdXJyZW50TGF5ZXI+PTA7dGhpcy5jdXJyZW50TGF5ZXItLSl7dmFyIGc9dC5zdHlsZS5fbGF5ZXJzW3NbdC5jdXJyZW50TGF5ZXJdXTtnLnNvdXJjZSE9PShwJiZwLmlkKSYmKHA9dC5zdHlsZS5zb3VyY2VDYWNoZXNbZy5zb3VyY2VdLGQ9W10scCYmKHQuY2xlYXJTdGVuY2lsKCksZD1wLmdldFZpc2libGVDb29yZGluYXRlcygpLHAuZ2V0U291cmNlKCkuaXNUaWxlQ2xpcHBlZCYmdC5fcmVuZGVyVGlsZUNsaXBwaW5nTWFza3MoZCkpKSx0LnJlbmRlckxheWVyKHQscCxnLGQpfXRoaXMucmVuZGVyUGFzcz1cInRyYW5zbHVjZW50XCI7dmFyIGYsRT1bXTtmb3IodGhpcy5nbC5lbmFibGUodGhpcy5nbC5CTEVORCksdGhpcy5jdXJyZW50TGF5ZXI9MCx0aGlzLmN1cnJlbnRMYXllcjt0aGlzLmN1cnJlbnRMYXllcjxzLmxlbmd0aDt0aGlzLmN1cnJlbnRMYXllcisrKXt2YXIgVD10LnN0eWxlLl9sYXllcnNbc1t0LmN1cnJlbnRMYXllcl1dO1Quc291cmNlIT09KGYmJmYuaWQpJiYoZj10LnN0eWxlLnNvdXJjZUNhY2hlc1tULnNvdXJjZV0sRT1bXSxmJiYodC5jbGVhclN0ZW5jaWwoKSxFPWYuZ2V0VmlzaWJsZUNvb3JkaW5hdGVzKCksZi5nZXRTb3VyY2UoKS5pc1RpbGVDbGlwcGVkJiZ0Ll9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyhFKSksRS5yZXZlcnNlKCkpLHQucmVuZGVyTGF5ZXIodCxmLFQsRSl9aWYodGhpcy5vcHRpb25zLnNob3dUaWxlQm91bmRhcmllcyl7dmFyIF89dGhpcy5zdHlsZS5zb3VyY2VDYWNoZXNbT2JqZWN0LmtleXModGhpcy5zdHlsZS5zb3VyY2VDYWNoZXMpWzBdXTtfJiZkcmF3LmRlYnVnKHRoaXMsXyxfLmdldFZpc2libGVDb29yZGluYXRlcygpKX19LFBhaW50ZXIucHJvdG90eXBlLl9zZXR1cDNEUmVuZGVyYnVmZmVyPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZGVwdGhSYm8pe3ZhciBlPXRoaXMuZ2w7dGhpcy5kZXB0aFJibz1lLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLGUuYmluZFJlbmRlcmJ1ZmZlcihlLlJFTkRFUkJVRkZFUix0aGlzLmRlcHRoUmJvKSxlLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZS5SRU5ERVJCVUZGRVIsZS5ERVBUSF9DT01QT05FTlQxNix0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSxlLmJpbmRSZW5kZXJidWZmZXIoZS5SRU5ERVJCVUZGRVIsbnVsbCl9dGhpcy5kZXB0aFJib0F0dGFjaGVkPSEwfSxQYWludGVyLnByb3RvdHlwZS5kZXB0aE1hc2s9ZnVuY3Rpb24oZSl7ZSE9PXRoaXMuX2RlcHRoTWFzayYmKHRoaXMuX2RlcHRoTWFzaz1lLHRoaXMuZ2wuZGVwdGhNYXNrKGUpKX0sUGFpbnRlci5wcm90b3R5cGUucmVuZGVyTGF5ZXI9ZnVuY3Rpb24oZSxyLHQsaSl7dC5pc0hpZGRlbih0aGlzLnRyYW5zZm9ybS56b29tKXx8KFwiYmFja2dyb3VuZFwiPT09dC50eXBlfHxpLmxlbmd0aCkmJih0aGlzLmlkPXQuaWQsZHJhd1t0LnR5cGVdKGUscix0LGkpKX0sUGFpbnRlci5wcm90b3R5cGUuc2V0RGVwdGhTdWJsYXllcj1mdW5jdGlvbihlKXt2YXIgcj0xLSgoMSt0aGlzLmN1cnJlbnRMYXllcikqdGhpcy5udW1TdWJsYXllcnMrZSkqdGhpcy5kZXB0aEVwc2lsb24sdD1yLTErdGhpcy5kZXB0aFJhbmdlO3RoaXMuZ2wuZGVwdGhSYW5nZSh0LHIpfSxQYWludGVyLnByb3RvdHlwZS50cmFuc2xhdGVQb3NNYXRyaXg9ZnVuY3Rpb24oZSxyLHQsaSxhKXtpZighdFswXSYmIXRbMV0pcmV0dXJuIGU7dmFyIHM9YT9cIm1hcFwiPT09aT90aGlzLnRyYW5zZm9ybS5hbmdsZTowOlwidmlld3BvcnRcIj09PWk/LXRoaXMudHJhbnNmb3JtLmFuZ2xlOjA7aWYocyl7dmFyIG49TWF0aC5zaW4ocyksbz1NYXRoLmNvcyhzKTt0PVt0WzBdKm8tdFsxXSpuLHRbMF0qbit0WzFdKm9dfXZhciBsPVthP3RbMF06cGl4ZWxzVG9UaWxlVW5pdHMocix0WzBdLHRoaXMudHJhbnNmb3JtLnpvb20pLGE/dFsxXTpwaXhlbHNUb1RpbGVVbml0cyhyLHRbMV0sdGhpcy50cmFuc2Zvcm0uem9vbSksMF0saD1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gbWF0NC50cmFuc2xhdGUoaCxlLGwpLGh9LFBhaW50ZXIucHJvdG90eXBlLnNhdmVUaWxlVGV4dHVyZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl90aWxlVGV4dHVyZXNbZS5zaXplXTtyP3IucHVzaChlKTp0aGlzLl90aWxlVGV4dHVyZXNbZS5zaXplXT1bZV19LFBhaW50ZXIucHJvdG90eXBlLmdldFRpbGVUZXh0dXJlPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuX3RpbGVUZXh0dXJlc1tlXTtyZXR1cm4gciYmci5sZW5ndGg+MD9yLnBvcCgpOm51bGx9LFBhaW50ZXIucHJvdG90eXBlLmxpbmVXaWR0aD1mdW5jdGlvbihlKXt0aGlzLmdsLmxpbmVXaWR0aCh1dGlsLmNsYW1wKGUsdGhpcy5saW5lV2lkdGhSYW5nZVswXSx0aGlzLmxpbmVXaWR0aFJhbmdlWzFdKSl9LFBhaW50ZXIucHJvdG90eXBlLnNob3dPdmVyZHJhd0luc3BlY3Rvcj1mdW5jdGlvbihlKXtpZihlfHx0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3Ipe3RoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj1lO3ZhciByPXRoaXMuZ2w7aWYoZSl7ci5ibGVuZEZ1bmMoci5DT05TVEFOVF9DT0xPUixyLk9ORSk7ci5ibGVuZENvbG9yKDEvOCwxLzgsMS84LDApLHIuY2xlYXJDb2xvcigwLDAsMCwxKSxyLmNsZWFyKHIuQ09MT1JfQlVGRkVSX0JJVCl9ZWxzZSByLmJsZW5kRnVuYyhyLk9ORSxyLk9ORV9NSU5VU19TUkNfQUxQSEEpfX0sUGFpbnRlci5wcm90b3R5cGUuX2NyZWF0ZVByb2dyYW1DYWNoZWQ9ZnVuY3Rpb24oZSxyKXt0aGlzLmNhY2hlPXRoaXMuY2FjaGV8fHt9O3ZhciB0PVwiXCIrZSsoci5jYWNoZUtleXx8XCJcIikrKHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj9cIi9vdmVyZHJhd1wiOlwiXCIpO3JldHVybiB0aGlzLmNhY2hlW3RdfHwodGhpcy5jYWNoZVt0XT1uZXcgUHJvZ3JhbSh0aGlzLmdsLHNoYWRlcnNbZV0scix0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3IpKSx0aGlzLmNhY2hlW3RdfSxQYWludGVyLnByb3RvdHlwZS51c2VQcm9ncmFtPWZ1bmN0aW9uKGUscil7dmFyIHQ9dGhpcy5nbCxpPXRoaXMuX2NyZWF0ZVByb2dyYW1DYWNoZWQoZSxyfHx0aGlzLmVtcHR5UHJvZ3JhbUNvbmZpZ3VyYXRpb24pO3JldHVybiB0aGlzLmN1cnJlbnRQcm9ncmFtIT09aSYmKHQudXNlUHJvZ3JhbShpLnByb2dyYW0pLHRoaXMuY3VycmVudFByb2dyYW09aSksaX0sbW9kdWxlLmV4cG9ydHM9UGFpbnRlcjtcbn0se1wiLi4vZGF0YS9leHRlbnRcIjo0OCxcIi4uL2RhdGEvcG9zX2FycmF5XCI6NTIsXCIuLi9kYXRhL3Byb2dyYW1fY29uZmlndXJhdGlvblwiOjUzLFwiLi4vZGF0YS9yYXN0ZXJfYm91bmRzX2FycmF5XCI6NTQsXCIuLi9nbC92ZXJ0ZXhfYnVmZmVyXCI6NjIsXCIuLi9zaGFkZXJzXCI6ODYsXCIuLi9zb3VyY2UvcGl4ZWxzX3RvX3RpbGVfdW5pdHNcIjo5MyxcIi4uL3NvdXJjZS9zb3VyY2VfY2FjaGVcIjo5OCxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIi4vZHJhd19iYWNrZ3JvdW5kXCI6NjQsXCIuL2RyYXdfY2lyY2xlXCI6NjUsXCIuL2RyYXdfZGVidWdcIjo2NyxcIi4vZHJhd19maWxsXCI6NjgsXCIuL2RyYXdfZmlsbF9leHRydXNpb25cIjo2OSxcIi4vZHJhd19saW5lXCI6NzAsXCIuL2RyYXdfcmFzdGVyXCI6NzEsXCIuL2RyYXdfc3ltYm9sXCI6NzIsXCIuL2ZyYW1lX2hpc3RvcnlcIjo3MyxcIi4vcHJvZ3JhbVwiOjgxLFwiLi9yZW5kZXJfdGV4dHVyZVwiOjgyLFwiLi92ZXJ0ZXhfYXJyYXlfb2JqZWN0XCI6ODQsXCJAbWFwYm94L2dsLW1hdHJpeFwiOjF9XSw4MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgcGl4ZWxzVG9UaWxlVW5pdHM9X2RlcmVxXyhcIi4uL3NvdXJjZS9waXhlbHNfdG9fdGlsZV91bml0c1wiKTtleHBvcnRzLmlzUGF0dGVybk1pc3Npbmc9ZnVuY3Rpb24ocixpKXtpZighcilyZXR1cm4hMTt2YXIgZT1pLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHIuZnJvbSksbz1pLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHIudG8pO3JldHVybiFlfHwhb30sZXhwb3J0cy5wcmVwYXJlPWZ1bmN0aW9uKHIsaSxlKXt2YXIgbz1pLmdsLHQ9aS5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybihyLmZyb20pLG49aS5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybihyLnRvKTtvLnVuaWZvcm0xaShlLnVuaWZvcm1zLnVfaW1hZ2UsMCksby51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV9wYXR0ZXJuX3RsX2EsdC50bCksby51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV9wYXR0ZXJuX2JyX2EsdC5iciksby51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV9wYXR0ZXJuX3RsX2Isbi50bCksby51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV9wYXR0ZXJuX2JyX2Isbi5icik7dmFyIHU9aS5pbWFnZU1hbmFnZXIuZ2V0UGl4ZWxTaXplKCksYT11LndpZHRoLGY9dS5oZWlnaHQ7by51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV90ZXhzaXplLFthLGZdKSxvLnVuaWZvcm0xZihlLnVuaWZvcm1zLnVfbWl4LHIudCksby51bmlmb3JtMmZ2KGUudW5pZm9ybXMudV9wYXR0ZXJuX3NpemVfYSx0LmRpc3BsYXlTaXplKSxvLnVuaWZvcm0yZnYoZS51bmlmb3Jtcy51X3BhdHRlcm5fc2l6ZV9iLG4uZGlzcGxheVNpemUpLG8udW5pZm9ybTFmKGUudW5pZm9ybXMudV9zY2FsZV9hLHIuZnJvbVNjYWxlKSxvLnVuaWZvcm0xZihlLnVuaWZvcm1zLnVfc2NhbGVfYixyLnRvU2NhbGUpLG8uYWN0aXZlVGV4dHVyZShvLlRFWFRVUkUwKSxpLmltYWdlTWFuYWdlci5iaW5kKG8pfSxleHBvcnRzLnNldFRpbGU9ZnVuY3Rpb24ocixpLGUpe3ZhciBvPWkuZ2w7by51bmlmb3JtMWYoZS51bmlmb3Jtcy51X3RpbGVfdW5pdHNfdG9fcGl4ZWxzLDEvcGl4ZWxzVG9UaWxlVW5pdHMociwxLGkudHJhbnNmb3JtLnRpbGVab29tKSk7dmFyIHQ9TWF0aC5wb3coMixyLmNvb3JkLnopLG49ci50aWxlU2l6ZSpNYXRoLnBvdygyLGkudHJhbnNmb3JtLnRpbGVab29tKS90LHU9biooci5jb29yZC54K3IuY29vcmQudyp0KSxhPW4qci5jb29yZC55O28udW5pZm9ybTJmKGUudW5pZm9ybXMudV9waXhlbF9jb29yZF91cHBlcix1Pj4xNixhPj4xNiksby51bmlmb3JtMmYoZS51bmlmb3Jtcy51X3BpeGVsX2Nvb3JkX2xvd2VyLDY1NTM1JnUsNjU1MzUmYSl9O1xufSx7XCIuLi9zb3VyY2UvcGl4ZWxzX3RvX3RpbGVfdW5pdHNcIjo5M31dLDgxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBicm93c2VyPV9kZXJlcV8oXCIuLi91dGlsL2Jyb3dzZXJcIiksc2hhZGVycz1fZGVyZXFfKFwiLi4vc2hhZGVyc1wiKSxyZWY9X2RlcmVxXyhcIi4uL2RhdGEvcHJvZ3JhbV9jb25maWd1cmF0aW9uXCIpLFByb2dyYW1Db25maWd1cmF0aW9uPXJlZi5Qcm9ncmFtQ29uZmlndXJhdGlvbixWZXJ0ZXhBcnJheU9iamVjdD1fZGVyZXFfKFwiLi92ZXJ0ZXhfYXJyYXlfb2JqZWN0XCIpLFByb2dyYW09ZnVuY3Rpb24ocixlLHQsYSl7dmFyIG89dGhpczt0aGlzLmdsPXIsdGhpcy5wcm9ncmFtPXIuY3JlYXRlUHJvZ3JhbSgpO3ZhciBpPXQuZGVmaW5lcygpLmNvbmNhdChcIiNkZWZpbmUgREVWSUNFX1BJWEVMX1JBVElPIFwiK2Jyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpby50b0ZpeGVkKDEpKTthJiZpLnB1c2goXCIjZGVmaW5lIE9WRVJEUkFXX0lOU1BFQ1RPUjtcIik7dmFyIG49aS5jb25jYXQoc2hhZGVycy5wcmVsdWRlLmZyYWdtZW50U291cmNlLGUuZnJhZ21lbnRTb3VyY2UpLmpvaW4oXCJcXG5cIikscz1pLmNvbmNhdChzaGFkZXJzLnByZWx1ZGUudmVydGV4U291cmNlLGUudmVydGV4U291cmNlKS5qb2luKFwiXFxuXCIpLG09ci5jcmVhdGVTaGFkZXIoci5GUkFHTUVOVF9TSEFERVIpO3Iuc2hhZGVyU291cmNlKG0sbiksci5jb21waWxlU2hhZGVyKG0pLHIuYXR0YWNoU2hhZGVyKHRoaXMucHJvZ3JhbSxtKTt2YXIgZz1yLmNyZWF0ZVNoYWRlcihyLlZFUlRFWF9TSEFERVIpO3Iuc2hhZGVyU291cmNlKGcscyksci5jb21waWxlU2hhZGVyKGcpLHIuYXR0YWNoU2hhZGVyKHRoaXMucHJvZ3JhbSxnKTtmb3IodmFyIGM9dC5pbnRlcmZhY2U/dC5pbnRlcmZhY2UubGF5b3V0QXR0cmlidXRlczpbXSx1PTA7dTxjLmxlbmd0aDt1Kyspci5iaW5kQXR0cmliTG9jYXRpb24oby5wcm9ncmFtLHUsY1t1XS5uYW1lKTtyLmxpbmtQcm9ncmFtKHRoaXMucHJvZ3JhbSksdGhpcy5udW1BdHRyaWJ1dGVzPXIuZ2V0UHJvZ3JhbVBhcmFtZXRlcih0aGlzLnByb2dyYW0sci5BQ1RJVkVfQVRUUklCVVRFUyksdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMudW5pZm9ybXM9e307Zm9yKHZhciBoPTA7aDx0aGlzLm51bUF0dHJpYnV0ZXM7aCsrKXt2YXIgZj1yLmdldEFjdGl2ZUF0dHJpYihvLnByb2dyYW0saCk7ZiYmKG8uYXR0cmlidXRlc1tmLm5hbWVdPXIuZ2V0QXR0cmliTG9jYXRpb24oby5wcm9ncmFtLGYubmFtZSkpfWZvcih2YXIgZD1yLmdldFByb2dyYW1QYXJhbWV0ZXIodGhpcy5wcm9ncmFtLHIuQUNUSVZFX1VOSUZPUk1TKSxwPTA7cDxkO3ArKyl7dmFyIHY9ci5nZXRBY3RpdmVVbmlmb3JtKG8ucHJvZ3JhbSxwKTt2JiYoby51bmlmb3Jtc1t2Lm5hbWVdPXIuZ2V0VW5pZm9ybUxvY2F0aW9uKG8ucHJvZ3JhbSx2Lm5hbWUpKX19O1Byb2dyYW0ucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24ocixlLHQsYSxvLGksbixzKXtmb3IodmFyIG0sZz10aGlzLGM9KG09e30sbVtyLkxJTkVTXT0yLG1bci5UUklBTkdMRVNdPTMsbSlbZV0sdT0wLGg9aS5nZXQoKTt1PGgubGVuZ3RoO3UrPTEpe3ZhciBmPWhbdV0sZD1mLnZhb3N8fChmLnZhb3M9e30pOyhkW3RdfHwoZFt0XT1uZXcgVmVydGV4QXJyYXlPYmplY3QpKS5iaW5kKHIsZyxhLG8sbiYmbi5wYWludFZlcnRleEJ1ZmZlcixmLnZlcnRleE9mZnNldCxzKSxyLmRyYXdFbGVtZW50cyhlLGYucHJpbWl0aXZlTGVuZ3RoKmMsci5VTlNJR05FRF9TSE9SVCxmLnByaW1pdGl2ZU9mZnNldCpjKjIpfX0sbW9kdWxlLmV4cG9ydHM9UHJvZ3JhbTtcbn0se1wiLi4vZGF0YS9wcm9ncmFtX2NvbmZpZ3VyYXRpb25cIjo1MyxcIi4uL3NoYWRlcnNcIjo4NixcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4vdmVydGV4X2FycmF5X29iamVjdFwiOjg0fV0sODI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZlcnRleEJ1ZmZlcj1fZGVyZXFfKFwiLi4vZ2wvdmVydGV4X2J1ZmZlclwiKSxWZXJ0ZXhBcnJheU9iamVjdD1fZGVyZXFfKFwiLi92ZXJ0ZXhfYXJyYXlfb2JqZWN0XCIpLFBvc0FycmF5PV9kZXJlcV8oXCIuLi9kYXRhL3Bvc19hcnJheVwiKSxSZW5kZXJUZXh0dXJlPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuZ2w9ZS5nbCx0PXRoaXMudGV4dHVyZT1yLmNyZWF0ZVRleHR1cmUoKTtyLmJpbmRUZXh0dXJlKHIuVEVYVFVSRV8yRCx0KSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1Msci5DTEFNUF9UT19FREdFKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1Qsci5DTEFNUF9UT19FREdFKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9NSU5fRklMVEVSLHIuTElORUFSKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9NQUdfRklMVEVSLHIuTElORUFSKSxyLnRleEltYWdlMkQoci5URVhUVVJFXzJELDAsci5SR0JBLGUud2lkdGgsZS5oZWlnaHQsMCxyLlJHQkEsci5VTlNJR05FRF9CWVRFLG51bGwpLHIuYmluZFRleHR1cmUoci5URVhUVVJFXzJELG51bGwpO3ZhciBFPXRoaXMuZmJvPXIuY3JlYXRlRnJhbWVidWZmZXIoKTtyLmJpbmRGcmFtZWJ1ZmZlcihyLkZSQU1FQlVGRkVSLEUpLHIuZnJhbWVidWZmZXJUZXh0dXJlMkQoci5GUkFNRUJVRkZFUixyLkNPTE9SX0FUVEFDSE1FTlQwLHIuVEVYVFVSRV8yRCx0LDApO3ZhciBhPW5ldyBQb3NBcnJheTthLmVtcGxhY2VCYWNrKDAsMCksYS5lbXBsYWNlQmFjaygxLDApLGEuZW1wbGFjZUJhY2soMCwxKSxhLmVtcGxhY2VCYWNrKDEsMSksdGhpcy5idWZmZXI9bmV3IFZlcnRleEJ1ZmZlcihyLGEpLHRoaXMudmFvPW5ldyBWZXJ0ZXhBcnJheU9iamVjdH07UmVuZGVyVGV4dHVyZS5wcm90b3R5cGUuYmluZFdpdGhEZXB0aD1mdW5jdGlvbihlKXt2YXIgcj10aGlzLmdsO3IuYmluZEZyYW1lYnVmZmVyKHIuRlJBTUVCVUZGRVIsdGhpcy5mYm8pLHRoaXMuYXR0YWNoZWRSYm8hPT1lJiYoci5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihyLkZSQU1FQlVGRkVSLHIuREVQVEhfQVRUQUNITUVOVCxyLlJFTkRFUkJVRkZFUixlKSx0aGlzLmF0dGFjaGVkUmJvPWUpfSxSZW5kZXJUZXh0dXJlLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdsO2UuYmluZEZyYW1lYnVmZmVyKGUuRlJBTUVCVUZGRVIsbnVsbCl9LG1vZHVsZS5leHBvcnRzPVJlbmRlclRleHR1cmU7XG59LHtcIi4uL2RhdGEvcG9zX2FycmF5XCI6NTIsXCIuLi9nbC92ZXJ0ZXhfYnVmZmVyXCI6NjIsXCIuL3ZlcnRleF9hcnJheV9vYmplY3RcIjo4NH1dLDgzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBUZXh0dXJlPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLmdsPXQ7dmFyIHI9ZS53aWR0aCxUPWUuaGVpZ2h0O3RoaXMuc2l6ZT1bcixUXSx0aGlzLmZvcm1hdD1pLHRoaXMudGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSx0aGlzLnVwZGF0ZShlKX07VGV4dHVyZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQud2lkdGgsaT10LmhlaWdodCxyPXQuZGF0YTt0aGlzLnNpemU9W2UsaV07dmFyIFQ9dGhpcyxFPVQuZ2w7RS5iaW5kVGV4dHVyZShFLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSxFLnBpeGVsU3RvcmVpKEUuVU5QQUNLX0FMSUdOTUVOVCwxKSx0aGlzLmZvcm1hdD09PUUuUkdCQSYmRS5waXhlbFN0b3JlaShFLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwhMCksRS50ZXhJbWFnZTJEKEUuVEVYVFVSRV8yRCwwLHRoaXMuZm9ybWF0LGUsaSwwLHRoaXMuZm9ybWF0LEUuVU5TSUdORURfQllURSxyKX0sVGV4dHVyZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj1pLmdsO3IuYmluZFRleHR1cmUoci5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksdCE9PXRoaXMuZmlsdGVyJiYoci50ZXhQYXJhbWV0ZXJpKHIuVEVYVFVSRV8yRCxyLlRFWFRVUkVfTUFHX0ZJTFRFUix0KSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9NSU5fRklMVEVSLHQpLHRoaXMuZmlsdGVyPXQpLGUhPT10aGlzLndyYXAmJihyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1MsZSksci50ZXhQYXJhbWV0ZXJpKHIuVEVYVFVSRV8yRCxyLlRFWFRVUkVfV1JBUF9ULGUpLHRoaXMud3JhcD1lKX0sVGV4dHVyZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLnRleHR1cmUpLHRoaXMudGV4dHVyZT1udWxsfSxtb2R1bGUuZXhwb3J0cz1UZXh0dXJlO1xufSx7fV0sODQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZlcnRleEFycmF5T2JqZWN0PWZ1bmN0aW9uKCl7dGhpcy5ib3VuZFByb2dyYW09bnVsbCx0aGlzLmJvdW5kVmVydGV4QnVmZmVyPW51bGwsdGhpcy5ib3VuZFZlcnRleEJ1ZmZlcjI9bnVsbCx0aGlzLmJvdW5kSW5kZXhCdWZmZXI9bnVsbCx0aGlzLmJvdW5kVmVydGV4T2Zmc2V0PW51bGwsdGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXI9bnVsbCx0aGlzLnZhbz1udWxsfTtWZXJ0ZXhBcnJheU9iamVjdC5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQscixpLG4scyx1KXt2b2lkIDA9PT1lLmV4dFZlcnRleEFycmF5T2JqZWN0JiYoZS5leHRWZXJ0ZXhBcnJheU9iamVjdD1lLmdldEV4dGVuc2lvbihcIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0XCIpKTt2YXIgYj0hdGhpcy52YW98fHRoaXMuYm91bmRQcm9ncmFtIT09dHx8dGhpcy5ib3VuZFZlcnRleEJ1ZmZlciE9PXJ8fHRoaXMuYm91bmRWZXJ0ZXhCdWZmZXIyIT09bnx8dGhpcy5ib3VuZEluZGV4QnVmZmVyIT09aXx8dGhpcy5ib3VuZFZlcnRleE9mZnNldCE9PXN8fHRoaXMuYm91bmREeW5hbWljVmVydGV4QnVmZmVyIT09dTshZS5leHRWZXJ0ZXhBcnJheU9iamVjdHx8Yj8odGhpcy5mcmVzaEJpbmQoZSx0LHIsaSxuLHMsdSksdGhpcy5nbD1lKTooZS5leHRWZXJ0ZXhBcnJheU9iamVjdC5iaW5kVmVydGV4QXJyYXlPRVModGhpcy52YW8pLHUmJnUuYmluZCgpKX0sVmVydGV4QXJyYXlPYmplY3QucHJvdG90eXBlLmZyZXNoQmluZD1mdW5jdGlvbihlLHQscixpLG4scyx1KXt2YXIgYixvPXQubnVtQXR0cmlidXRlcztpZihlLmV4dFZlcnRleEFycmF5T2JqZWN0KXRoaXMudmFvJiZ0aGlzLmRlc3Ryb3koKSx0aGlzLnZhbz1lLmV4dFZlcnRleEFycmF5T2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCksZS5leHRWZXJ0ZXhBcnJheU9iamVjdC5iaW5kVmVydGV4QXJyYXlPRVModGhpcy52YW8pLGI9MCx0aGlzLmJvdW5kUHJvZ3JhbT10LHRoaXMuYm91bmRWZXJ0ZXhCdWZmZXI9cix0aGlzLmJvdW5kVmVydGV4QnVmZmVyMj1uLHRoaXMuYm91bmRJbmRleEJ1ZmZlcj1pLHRoaXMuYm91bmRWZXJ0ZXhPZmZzZXQ9cyx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcj11O2Vsc2V7Yj1lLmN1cnJlbnROdW1BdHRyaWJ1dGVzfHwwO2Zvcih2YXIgeD1vO3g8Yjt4KyspZS5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoeCl9ci5lbmFibGVBdHRyaWJ1dGVzKGUsdCksbiYmbi5lbmFibGVBdHRyaWJ1dGVzKGUsdCksdSYmdS5lbmFibGVBdHRyaWJ1dGVzKGUsdCksci5iaW5kKCksci5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyhlLHQscyksbiYmKG4uYmluZCgpLG4uc2V0VmVydGV4QXR0cmliUG9pbnRlcnMoZSx0LHMpKSx1JiYodS5iaW5kKCksdS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyhlLHQscykpLGkmJmkuYmluZCgpLGUuY3VycmVudE51bUF0dHJpYnV0ZXM9b30sVmVydGV4QXJyYXlPYmplY3QucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnZhbyYmKHRoaXMuZ2wuZXh0VmVydGV4QXJyYXlPYmplY3QuZGVsZXRlVmVydGV4QXJyYXlPRVModGhpcy52YW8pLHRoaXMudmFvPW51bGwpfSxtb2R1bGUuZXhwb3J0cz1WZXJ0ZXhBcnJheU9iamVjdDtcbn0se31dLDg1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIik7ZXhwb3J0cy5wYWNrVWludDhUb0Zsb2F0PWZ1bmN0aW9uKHQsbCl7cmV0dXJuIHQ9dXRpbC5jbGFtcChNYXRoLmZsb29yKHQpLDAsMjU1KSxsPXV0aWwuY2xhbXAoTWF0aC5mbG9vcihsKSwwLDI1NSksMjU2KnQrbH07XG59LHtcIi4uL3V0aWwvdXRpbFwiOjIyM31dLDg2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBzaGFkZXJzPXtwcmVsdWRlOntmcmFnbWVudFNvdXJjZTpcIiNpZmRlZiBHTF9FU1xcbnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xcbiNlbHNlXFxuXFxuI2lmICFkZWZpbmVkKGxvd3ApXFxuI2RlZmluZSBsb3dwXFxuI2VuZGlmXFxuXFxuI2lmICFkZWZpbmVkKG1lZGl1bXApXFxuI2RlZmluZSBtZWRpdW1wXFxuI2VuZGlmXFxuXFxuI2lmICFkZWZpbmVkKGhpZ2hwKVxcbiNkZWZpbmUgaGlnaHBcXG4jZW5kaWZcXG5cXG4jZW5kaWZcXG5cIix2ZXJ0ZXhTb3VyY2U6XCIjaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XFxuI2Vsc2VcXG5cXG4jaWYgIWRlZmluZWQobG93cClcXG4jZGVmaW5lIGxvd3BcXG4jZW5kaWZcXG5cXG4jaWYgIWRlZmluZWQobWVkaXVtcClcXG4jZGVmaW5lIG1lZGl1bXBcXG4jZW5kaWZcXG5cXG4jaWYgIWRlZmluZWQoaGlnaHApXFxuI2RlZmluZSBoaWdocFxcbiNlbmRpZlxcblxcbiNlbmRpZlxcblxcbi8vIFVucGFjayBhIHBhaXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGZsb2F0Llxcbi8vIFRoZSBwYWNrZWQgdmFsdWVzIGFyZSBhc3N1bWVkIHRvIGJlIDgtYml0IHVuc2lnbmVkIGludGVnZXJzLCBhbmQgYXJlXFxuLy8gcGFja2VkIGxpa2Ugc286XFxuLy8gcGFja2VkVmFsdWUgPSBmbG9vcihpbnB1dFswXSkgKiAyNTYgKyBpbnB1dFsxXSxcXG52ZWMyIHVucGFja19mbG9hdChjb25zdCBmbG9hdCBwYWNrZWRWYWx1ZSkge1xcbiAgICBpbnQgcGFja2VkSW50VmFsdWUgPSBpbnQocGFja2VkVmFsdWUpO1xcbiAgICBpbnQgdjAgPSBwYWNrZWRJbnRWYWx1ZSAvIDI1NjtcXG4gICAgcmV0dXJuIHZlYzIodjAsIHBhY2tlZEludFZhbHVlIC0gdjAgKiAyNTYpO1xcbn1cXG5cXG5cXG4vLyBUbyBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgbmVlZGVkLCB3ZSBlbmNvZGUgYSA0LWNvbXBvbmVudFxcbi8vIGNvbG9yIGludG8gYSBwYWlyIG9mIGZsb2F0cyAoaS5lLiBhIHZlYzIpIGFzIGZvbGxvd3M6XFxuLy8gWyBmbG9vcihjb2xvci5yICogMjU1KSAqIDI1NiArIGNvbG9yLmcgKiAyNTUsXFxuLy8gICBmbG9vcihjb2xvci5iICogMjU1KSAqIDI1NiArIGNvbG9yLmcgKiAyNTUgXVxcbnZlYzQgZGVjb2RlX2NvbG9yKGNvbnN0IHZlYzIgZW5jb2RlZENvbG9yKSB7XFxuICAgIHJldHVybiB2ZWM0KFxcbiAgICAgICAgdW5wYWNrX2Zsb2F0KGVuY29kZWRDb2xvclswXSkgLyAyNTUuMCxcXG4gICAgICAgIHVucGFja19mbG9hdChlbmNvZGVkQ29sb3JbMV0pIC8gMjU1LjBcXG4gICAgKTtcXG59XFxuXFxuLy8gVW5wYWNrIGEgcGFpciBvZiBwYWludCB2YWx1ZXMgYW5kIGludGVycG9sYXRlIGJldHdlZW4gdGhlbS5cXG5mbG9hdCB1bnBhY2tfbWl4X3ZlYzIoY29uc3QgdmVjMiBwYWNrZWRWYWx1ZSwgY29uc3QgZmxvYXQgdCkge1xcbiAgICByZXR1cm4gbWl4KHBhY2tlZFZhbHVlWzBdLCBwYWNrZWRWYWx1ZVsxXSwgdCk7XFxufVxcblxcbi8vIFVucGFjayBhIHBhaXIgb2YgcGFpbnQgdmFsdWVzIGFuZCBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHRoZW0uXFxudmVjNCB1bnBhY2tfbWl4X3ZlYzQoY29uc3QgdmVjNCBwYWNrZWRDb2xvcnMsIGNvbnN0IGZsb2F0IHQpIHtcXG4gICAgdmVjNCBtaW5Db2xvciA9IGRlY29kZV9jb2xvcih2ZWMyKHBhY2tlZENvbG9yc1swXSwgcGFja2VkQ29sb3JzWzFdKSk7XFxuICAgIHZlYzQgbWF4Q29sb3IgPSBkZWNvZGVfY29sb3IodmVjMihwYWNrZWRDb2xvcnNbMl0sIHBhY2tlZENvbG9yc1szXSkpO1xcbiAgICByZXR1cm4gbWl4KG1pbkNvbG9yLCBtYXhDb2xvciwgdCk7XFxufVxcblxcbi8vIFRoZSBvZmZzZXQgZGVwZW5kcyBvbiBob3cgbWFueSBwaXhlbHMgYXJlIGJldHdlZW4gdGhlIHdvcmxkIG9yaWdpbiBhbmQgdGhlIGVkZ2Ugb2YgdGhlIHRpbGU6XFxuLy8gdmVjMiBvZmZzZXQgPSBtb2QocGl4ZWxfY29vcmQsIHNpemUpXFxuLy9cXG4vLyBBdCBoaWdoIHpvb20gbGV2ZWxzIHRoZXJlIGFyZSBhIHRvbiBvZiBwaXhlbHMgYmV0d2VlbiB0aGUgd29ybGQgb3JpZ2luIGFuZCB0aGUgZWRnZSBvZiB0aGUgdGlsZS5cXG4vLyBUaGUgZ2xzbCBzcGVjIG9ubHkgZ3VhcmFudGVlcyAxNiBiaXRzIG9mIHByZWNpc2lvbiBmb3IgaGlnaHAgZmxvYXRzLiBXZSBuZWVkIG1vcmUgdGhhbiB0aGF0Llxcbi8vXFxuLy8gVGhlIHBpeGVsX2Nvb3JkIGlzIHBhc3NlZCBpbiBhcyB0d28gMTYgYml0IHZhbHVlczpcXG4vLyBwaXhlbF9jb29yZF91cHBlciA9IGZsb29yKHBpeGVsX2Nvb3JkIC8gMl4xNilcXG4vLyBwaXhlbF9jb29yZF9sb3dlciA9IG1vZChwaXhlbF9jb29yZCwgMl4xNilcXG4vL1xcbi8vIFRoZSBvZmZzZXQgaXMgY2FsY3VsYXRlZCBpbiBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHNob3VsZCBwcmVzZXJ2ZSB0aGlzIHByZWNpc2lvbjpcXG52ZWMyIGdldF9wYXR0ZXJuX3Bvcyhjb25zdCB2ZWMyIHBpeGVsX2Nvb3JkX3VwcGVyLCBjb25zdCB2ZWMyIHBpeGVsX2Nvb3JkX2xvd2VyLFxcbiAgICBjb25zdCB2ZWMyIHBhdHRlcm5fc2l6ZSwgY29uc3QgZmxvYXQgdGlsZV91bml0c190b19waXhlbHMsIGNvbnN0IHZlYzIgcG9zKSB7XFxuXFxuICAgIHZlYzIgb2Zmc2V0ID0gbW9kKG1vZChtb2QocGl4ZWxfY29vcmRfdXBwZXIsIHBhdHRlcm5fc2l6ZSkgKiAyNTYuMCwgcGF0dGVybl9zaXplKSAqIDI1Ni4wICsgcGl4ZWxfY29vcmRfbG93ZXIsIHBhdHRlcm5fc2l6ZSk7XFxuICAgIHJldHVybiAodGlsZV91bml0c190b19waXhlbHMgKiBwb3MgKyBvZmZzZXQpIC8gcGF0dGVybl9zaXplO1xcbn1cXG5cIn0sY2lyY2xlOntmcmFnbWVudFNvdXJjZTpcIiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IHN0cm9rZV9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBzdHJva2Vfd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcXG5cXG52YXJ5aW5nIHZlYzMgdl9kYXRhO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcXG5cXG4gICAgdmVjMiBleHRydWRlID0gdl9kYXRhLnh5O1xcbiAgICBmbG9hdCBleHRydWRlX2xlbmd0aCA9IGxlbmd0aChleHRydWRlKTtcXG5cXG4gICAgbG93cCBmbG9hdCBhbnRpYWxpYXNibHVyID0gdl9kYXRhLno7XFxuICAgIGZsb2F0IGFudGlhbGlhc2VkX2JsdXIgPSAtbWF4KGJsdXIsIGFudGlhbGlhc2JsdXIpO1xcblxcbiAgICBmbG9hdCBvcGFjaXR5X3QgPSBzbW9vdGhzdGVwKDAuMCwgYW50aWFsaWFzZWRfYmx1ciwgZXh0cnVkZV9sZW5ndGggLSAxLjApO1xcblxcbiAgICBmbG9hdCBjb2xvcl90ID0gc3Ryb2tlX3dpZHRoIDwgMC4wMSA/IDAuMCA6IHNtb290aHN0ZXAoXFxuICAgICAgICBhbnRpYWxpYXNlZF9ibHVyLFxcbiAgICAgICAgMC4wLFxcbiAgICAgICAgZXh0cnVkZV9sZW5ndGggLSByYWRpdXMgLyAocmFkaXVzICsgc3Ryb2tlX3dpZHRoKVxcbiAgICApO1xcblxcbiAgICBnbF9GcmFnQ29sb3IgPSBvcGFjaXR5X3QgKiBtaXgoY29sb3IgKiBvcGFjaXR5LCBzdHJva2VfY29sb3IgKiBzdHJva2Vfb3BhY2l0eSwgY29sb3JfdCk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIGJvb2wgdV9zY2FsZV93aXRoX21hcDtcXG51bmlmb3JtIGJvb2wgdV9waXRjaF93aXRoX21hcDtcXG51bmlmb3JtIHZlYzIgdV9leHRydWRlX3NjYWxlO1xcbnVuaWZvcm0gaGlnaHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO1xcblxcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcblxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IHN0cm9rZV9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBzdHJva2Vfd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcXG5cXG52YXJ5aW5nIHZlYzMgdl9kYXRhO1xcblxcbnZvaWQgbWFpbih2b2lkKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCByYWRpdXNcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IHN0cm9rZV9jb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5XFxuXFxuICAgIC8vIHVuZW5jb2RlIHRoZSBleHRydXNpb24gdmVjdG9yIHRoYXQgd2Ugc251Y2sgaW50byB0aGUgYV9wb3MgdmVjdG9yXFxuICAgIHZlYzIgZXh0cnVkZSA9IHZlYzIobW9kKGFfcG9zLCAyLjApICogMi4wIC0gMS4wKTtcXG5cXG4gICAgLy8gbXVsdGlwbHkgYV9wb3MgYnkgMC41LCBzaW5jZSB3ZSBoYWQgaXQgKiAyIGluIG9yZGVyIHRvIHNuZWFrXFxuICAgIC8vIGluIGV4dHJ1c2lvbiBkYXRhXFxuICAgIHZlYzIgY2lyY2xlX2NlbnRlciA9IGZsb29yKGFfcG9zICogMC41KTtcXG4gICAgaWYgKHVfcGl0Y2hfd2l0aF9tYXApIHtcXG4gICAgICAgIHZlYzIgY29ybmVyX3Bvc2l0aW9uID0gY2lyY2xlX2NlbnRlcjtcXG4gICAgICAgIGlmICh1X3NjYWxlX3dpdGhfbWFwKSB7XFxuICAgICAgICAgICAgY29ybmVyX3Bvc2l0aW9uICs9IGV4dHJ1ZGUgKiAocmFkaXVzICsgc3Ryb2tlX3dpZHRoKSAqIHVfZXh0cnVkZV9zY2FsZTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgLy8gUGl0Y2hpbmcgdGhlIGNpcmNsZSB3aXRoIHRoZSBtYXAgZWZmZWN0aXZlbHkgc2NhbGVzIGl0IHdpdGggdGhlIG1hcFxcbiAgICAgICAgICAgIC8vIFRvIGNvdW50ZXJhY3QgdGhlIGVmZmVjdCBmb3IgcGl0Y2gtc2NhbGU6IHZpZXdwb3J0LCB3ZSByZXNjYWxlIHRoZVxcbiAgICAgICAgICAgIC8vIHdob2xlIGNpcmNsZSBiYXNlZCBvbiB0aGUgcGl0Y2ggc2NhbGluZyBlZmZlY3QgYXQgaXRzIGNlbnRyYWwgcG9pbnRcXG4gICAgICAgICAgICB2ZWM0IHByb2plY3RlZF9jZW50ZXIgPSB1X21hdHJpeCAqIHZlYzQoY2lyY2xlX2NlbnRlciwgMCwgMSk7XFxuICAgICAgICAgICAgY29ybmVyX3Bvc2l0aW9uICs9IGV4dHJ1ZGUgKiAocmFkaXVzICsgc3Ryb2tlX3dpZHRoKSAqIHVfZXh0cnVkZV9zY2FsZSAqIChwcm9qZWN0ZWRfY2VudGVyLncgLyB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIHZlYzQoY29ybmVyX3Bvc2l0aW9uLCAwLCAxKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KGNpcmNsZV9jZW50ZXIsIDAsIDEpO1xcblxcbiAgICAgICAgaWYgKHVfc2NhbGVfd2l0aF9tYXApIHtcXG4gICAgICAgICAgICBnbF9Qb3NpdGlvbi54eSArPSBleHRydWRlICogKHJhZGl1cyArIHN0cm9rZV93aWR0aCkgKiB1X2V4dHJ1ZGVfc2NhbGUgKiB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGdsX1Bvc2l0aW9uLnh5ICs9IGV4dHJ1ZGUgKiAocmFkaXVzICsgc3Ryb2tlX3dpZHRoKSAqIHVfZXh0cnVkZV9zY2FsZSAqIGdsX1Bvc2l0aW9uLnc7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy8gVGhpcyBpcyBhIG1pbmltdW0gYmx1ciBkaXN0YW5jZSB0aGF0IHNlcnZlcyBhcyBhIGZhdXgtYW50aWFsaWFzaW5nIGZvclxcbiAgICAvLyB0aGUgY2lyY2xlLiBzaW5jZSBibHVyIGlzIGEgcmF0aW8gb2YgdGhlIGNpcmNsZSdzIHNpemUgYW5kIHRoZSBpbnRlbnQgaXNcXG4gICAgLy8gdG8ga2VlcCB0aGUgYmx1ciBhdCByb3VnaGx5IDFweCwgdGhlIHR3byBhcmUgaW52ZXJzZWx5IHJlbGF0ZWQuXFxuICAgIGxvd3AgZmxvYXQgYW50aWFsaWFzYmx1ciA9IDEuMCAvIERFVklDRV9QSVhFTF9SQVRJTyAvIChyYWRpdXMgKyBzdHJva2Vfd2lkdGgpO1xcblxcbiAgICB2X2RhdGEgPSB2ZWMzKGV4dHJ1ZGUueCwgZXh0cnVkZS55LCBhbnRpYWxpYXNibHVyKTtcXG59XFxuXCJ9LGNvbGxpc2lvbkJveDp7ZnJhZ21lbnRTb3VyY2U6XCJ1bmlmb3JtIGZsb2F0IHVfem9vbTtcXG4vLyB1X21heHpvb20gaXMgZGVyaXZlZCBmcm9tIHRoZSBtYXhpbXVtIHNjYWxlIGNvbnNpZGVyZWQgYnkgdGhlIENvbGxpc2lvblRpbGVcXG4vLyBMYWJlbHMgd2l0aCBwbGFjZW1lbnQgem9vbSBncmVhdGVyIHRoYW4gdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSBwbGFjZWQsXFxuLy8gcmVnYXJkbGVzcyBvZiBwZXJzcGVjdGl2ZSBlZmZlY3RzLlxcbnVuaWZvcm0gZmxvYXQgdV9tYXh6b29tO1xcbnVuaWZvcm0gc2FtcGxlcjJEIHVfZmFkZXRleHR1cmU7XFxuXFxuLy8gdl9tYXhfem9vbSBpcyBhIGNvbGxpc2lvbi1ib3gtc3BlY2lmaWMgdmFsdWUgdGhhdCBjb250cm9scyB3aGVuIGxpbmUtZm9sbG93aW5nXFxuLy8gY29sbGlzaW9uIGJveGVzIGFyZSB1c2VkLlxcbnZhcnlpbmcgZmxvYXQgdl9tYXhfem9vbTtcXG52YXJ5aW5nIGZsb2F0IHZfcGxhY2VtZW50X3pvb207XFxudmFyeWluZyBmbG9hdCB2X3BlcnNwZWN0aXZlX3pvb21fYWRqdXN0O1xcbnZhcnlpbmcgdmVjMiB2X2ZhZGVfdGV4O1xcblxcbnZvaWQgbWFpbigpIHtcXG5cXG4gICAgZmxvYXQgYWxwaGEgPSAwLjU7XFxuXFxuICAgIC8vIEdyZWVuID0gbm8gY29sbGlzaW9ucywgbGFiZWwgaXMgc2hvd2luZ1xcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCkgKiBhbHBoYTtcXG5cXG4gICAgLy8gUmVkID0gY29sbGlzaW9uLCBsYWJlbCBoaWRkZW5cXG4gICAgaWYgKHRleHR1cmUyRCh1X2ZhZGV0ZXh0dXJlLCB2X2ZhZGVfdGV4KS5hIDwgMS4wKSB7XFxuICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCkgKiBhbHBoYTtcXG4gICAgfVxcblxcbiAgICAvLyBGYWRlZCBibGFjayA9IHRoaXMgY29sbGlzaW9uIGJveCBpcyBub3QgdXNlZCBhdCB0aGlzIHpvb20gKGZvciBjdXJ2ZWQgbGFiZWxzKVxcbiAgICBpZiAodV96b29tID49IHZfbWF4X3pvb20gKyB2X3BlcnNwZWN0aXZlX3pvb21fYWRqdXN0KSB7XFxuICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCkgKiBhbHBoYSAqIDAuMjU7XFxuICAgIH1cXG5cXG4gICAgLy8gRmFkZWQgYmx1ZSA9IHRoZSBwbGFjZW1lbnQgc2NhbGUgZm9yIHRoaXMgbGFiZWwgaXMgYmV5b25kIHRoZSBDb2xsaXNpb25UaWxlXFxuICAgIC8vIG1heCBzY2FsZSwgc28gaXQncyBpbXBvc3NpYmxlIGZvciB0aGlzIGxhYmVsIHRvIHNob3cgd2l0aG91dCBjb2xsaXNpb24gZGV0ZWN0aW9uXFxuICAgIC8vIGJlaW5nIHJ1biBhZ2FpbiAodGhlIGxhYmVsJ3MgZ2x5cGhzIGhhdmVuJ3QgZXZlbiBiZWVuIGFkZGVkIHRvIHRoZSBzeW1ib2wgYnVja2V0KVxcbiAgICBpZiAodl9wbGFjZW1lbnRfem9vbSA+PSB1X21heHpvb20pIHtcXG4gICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKSAqIGFscGhhICogMC4yO1xcbiAgICB9XFxufVxcblwiLHZlcnRleFNvdXJjZTpcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfYW5jaG9yX3BvcztcXG5hdHRyaWJ1dGUgdmVjMiBhX2V4dHJ1ZGU7XFxuYXR0cmlidXRlIHZlYzIgYV9kYXRhO1xcblxcbnVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGU7XFxudW5pZm9ybSBmbG9hdCB1X3BpdGNoO1xcbnVuaWZvcm0gZmxvYXQgdV9jb2xsaXNpb25feV9zdHJldGNoO1xcbnVuaWZvcm0gZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO1xcblxcbnZhcnlpbmcgZmxvYXQgdl9tYXhfem9vbTtcXG52YXJ5aW5nIGZsb2F0IHZfcGxhY2VtZW50X3pvb207XFxudmFyeWluZyBmbG9hdCB2X3BlcnNwZWN0aXZlX3pvb21fYWRqdXN0O1xcbnZhcnlpbmcgdmVjMiB2X2ZhZGVfdGV4O1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgdmVjNCBwcm9qZWN0ZWRQb2ludCA9IHVfbWF0cml4ICogdmVjNChhX2FuY2hvcl9wb3MsIDAsIDEpO1xcbiAgICBoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlID0gcHJvamVjdGVkUG9pbnQudztcXG4gICAgaGlnaHAgZmxvYXQgY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvID0gMS4wICsgMC41ICogKChjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlIC8gdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlKSAtIDEuMCk7XFxuXFxuICAgIGhpZ2hwIGZsb2F0IGluY2lkZW5jZV9zdHJldGNoICA9IGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UgLyAodV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlICogY29zKHVfcGl0Y2gpKTtcXG4gICAgaGlnaHAgZmxvYXQgY29sbGlzaW9uX2FkanVzdG1lbnQgPSBtYXgoMS4wLCBpbmNpZGVuY2Vfc3RyZXRjaCAvIHVfY29sbGlzaW9uX3lfc3RyZXRjaCk7XFxuXFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KGFfcG9zICsgYV9leHRydWRlICogY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvICogY29sbGlzaW9uX2FkanVzdG1lbnQgLyB1X3NjYWxlLCAwLjAsIDEuMCk7XFxuXFxuICAgIHZfbWF4X3pvb20gPSBhX2RhdGEueDtcXG4gICAgdl9wbGFjZW1lbnRfem9vbSA9IGFfZGF0YS55O1xcblxcbiAgICB2X3BlcnNwZWN0aXZlX3pvb21fYWRqdXN0ID0gZmxvb3IobG9nMihjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW8gKiBjb2xsaXNpb25fYWRqdXN0bWVudCkgKiAxMC4wKTtcXG4gICAgdl9mYWRlX3RleCA9IHZlYzIoKHZfcGxhY2VtZW50X3pvb20gKyB2X3BlcnNwZWN0aXZlX3pvb21fYWRqdXN0KSAvIDI1NS4wLCAwLjApO1xcbn1cXG5cIn0sZGVidWc6e2ZyYWdtZW50U291cmNlOlwidW5pZm9ybSBoaWdocCB2ZWM0IHVfY29sb3I7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yO1xcbn1cXG5cIix2ZXJ0ZXhTb3VyY2U6XCJhdHRyaWJ1dGUgdmVjMiBhX3BvcztcXG5cXG51bmlmb3JtIG1hdDQgdV9tYXRyaXg7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAvLyBXZSBhcmUgdXNpbmcgSW50MTYgZm9yIHRleHR1cmUgcG9zaXRpb24gY29vcmRpbmF0ZXMgdG8gZ2l2ZSB1cyBlbm91Z2ggcHJlY2lzaW9uIGZvclxcbiAgICAvLyBmcmFjdGlvbmFsIGNvb3JkaW5hdGVzLiBXZSB1c2UgODE5MiB0byBzY2FsZSB0aGUgdGV4dHVyZSBjb29yZGluYXRlcyBpbiB0aGUgYnVmZmVyXFxuICAgIC8vIGFzIGFuIGFyYml0cmFyaWx5IGhpZ2ggbnVtYmVyIHRvIHByZXNlcnZlIGFkZXF1YXRlIHByZWNpc2lvbiB3aGVuIHJlbmRlcmluZy5cXG4gICAgLy8gVGhpcyBpcyBhbHNvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBFWFRFTlQgd2UgYXJlIHVzaW5nIGZvciBvdXIgdGlsZSBidWZmZXIgcG9zIGNvb3JkaW5hdGVzLFxcbiAgICAvLyBzbyBtYXRoIGZvciBtb2RpZnlpbmcgZWl0aGVyIGlzIGNvbnNpc3RlbnQuXFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KGFfcG9zLCBzdGVwKDgxOTIuMCwgYV9wb3MueCksIDEpO1xcbn1cXG5cIn0sZmlsbDp7ZnJhZ21lbnRTb3VyY2U6XCIjcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3IgKiBvcGFjaXR5O1xcblxcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cXG5cIix2ZXJ0ZXhTb3VyY2U6XCJhdHRyaWJ1dGUgdmVjMiBhX3BvcztcXG5cXG51bmlmb3JtIG1hdDQgdV9tYXRyaXg7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuXFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KGFfcG9zLCAwLCAxKTtcXG59XFxuXCJ9LGZpbGxPdXRsaW5lOntmcmFnbWVudFNvdXJjZTpcIiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52YXJ5aW5nIHZlYzIgdl9wb3M7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IG91dGxpbmVfY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuXFxuICAgIGZsb2F0IGRpc3QgPSBsZW5ndGgodl9wb3MgLSBnbF9GcmFnQ29vcmQueHkpO1xcbiAgICBmbG9hdCBhbHBoYSA9IDEuMCAtIHNtb290aHN0ZXAoMC4wLCAxLjAsIGRpc3QpO1xcbiAgICBnbF9GcmFnQ29sb3IgPSBvdXRsaW5lX2NvbG9yICogKGFscGhhICogb3BhY2l0eSk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcblxcbnVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV93b3JsZDtcXG5cXG52YXJ5aW5nIHZlYzIgdl9wb3M7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IG91dGxpbmVfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbiAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogdmVjNChhX3BvcywgMCwgMSk7XFxuICAgIHZfcG9zID0gKGdsX1Bvc2l0aW9uLnh5IC8gZ2xfUG9zaXRpb24udyArIDEuMCkgLyAyLjAgKiB1X3dvcmxkO1xcbn1cXG5cIn0sZmlsbE91dGxpbmVQYXR0ZXJuOntmcmFnbWVudFNvdXJjZTpcInVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX2JyX2E7XFxudW5pZm9ybSB2ZWMyIHVfcGF0dGVybl90bF9iO1xcbnVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fYnJfYjtcXG51bmlmb3JtIHZlYzIgdV90ZXhzaXplO1xcbnVuaWZvcm0gZmxvYXQgdV9taXg7XFxuXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTtcXG5cXG52YXJ5aW5nIHZlYzIgdl9wb3NfYTtcXG52YXJ5aW5nIHZlYzIgdl9wb3NfYjtcXG52YXJ5aW5nIHZlYzIgdl9wb3M7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbiAgICB2ZWMyIGltYWdlY29vcmQgPSBtb2Qodl9wb3NfYSwgMS4wKTtcXG4gICAgdmVjMiBwb3MgPSBtaXgodV9wYXR0ZXJuX3RsX2EgLyB1X3RleHNpemUsIHVfcGF0dGVybl9icl9hIC8gdV90ZXhzaXplLCBpbWFnZWNvb3JkKTtcXG4gICAgdmVjNCBjb2xvcjEgPSB0ZXh0dXJlMkQodV9pbWFnZSwgcG9zKTtcXG5cXG4gICAgdmVjMiBpbWFnZWNvb3JkX2IgPSBtb2Qodl9wb3NfYiwgMS4wKTtcXG4gICAgdmVjMiBwb3MyID0gbWl4KHVfcGF0dGVybl90bF9iIC8gdV90ZXhzaXplLCB1X3BhdHRlcm5fYnJfYiAvIHVfdGV4c2l6ZSwgaW1hZ2Vjb29yZF9iKTtcXG4gICAgdmVjNCBjb2xvcjIgPSB0ZXh0dXJlMkQodV9pbWFnZSwgcG9zMik7XFxuXFxuICAgIC8vIGZpbmQgZGlzdGFuY2UgdG8gb3V0bGluZSBmb3IgYWxwaGEgaW50ZXJwb2xhdGlvblxcblxcbiAgICBmbG9hdCBkaXN0ID0gbGVuZ3RoKHZfcG9zIC0gZ2xfRnJhZ0Nvb3JkLnh5KTtcXG4gICAgZmxvYXQgYWxwaGEgPSAxLjAgLSBzbW9vdGhzdGVwKDAuMCwgMS4wLCBkaXN0KTtcXG5cXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gbWl4KGNvbG9yMSwgY29sb3IyLCB1X21peCkgKiBhbHBoYSAqIG9wYWNpdHk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV93b3JsZDtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYTtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYjtcXG51bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7XFxuXFxuYXR0cmlidXRlIHZlYzIgYV9wb3M7XFxuXFxudmFyeWluZyB2ZWMyIHZfcG9zX2E7XFxudmFyeWluZyB2ZWMyIHZfcG9zX2I7XFxudmFyeWluZyB2ZWMyIHZfcG9zO1xcblxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG4gICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MsIDAsIDEpO1xcblxcbiAgICB2X3Bvc19hID0gZ2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsIHVfcGl4ZWxfY29vcmRfbG93ZXIsIHVfc2NhbGVfYSAqIHVfcGF0dGVybl9zaXplX2EsIHVfdGlsZV91bml0c190b19waXhlbHMsIGFfcG9zKTtcXG4gICAgdl9wb3NfYiA9IGdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLCB1X3BpeGVsX2Nvb3JkX2xvd2VyLCB1X3NjYWxlX2IgKiB1X3BhdHRlcm5fc2l6ZV9iLCB1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzLCBhX3Bvcyk7XFxuXFxuICAgIHZfcG9zID0gKGdsX1Bvc2l0aW9uLnh5IC8gZ2xfUG9zaXRpb24udyArIDEuMCkgLyAyLjAgKiB1X3dvcmxkO1xcbn1cXG5cIn0sZmlsbFBhdHRlcm46e2ZyYWdtZW50U291cmNlOlwidW5pZm9ybSB2ZWMyIHVfcGF0dGVybl90bF9hO1xcbnVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fYnJfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsX2I7XFxudW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9icl9iO1xcbnVuaWZvcm0gdmVjMiB1X3RleHNpemU7XFxudW5pZm9ybSBmbG9hdCB1X21peDtcXG5cXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO1xcblxcbnZhcnlpbmcgdmVjMiB2X3Bvc19hO1xcbnZhcnlpbmcgdmVjMiB2X3Bvc19iO1xcblxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG4gICAgdmVjMiBpbWFnZWNvb3JkID0gbW9kKHZfcG9zX2EsIDEuMCk7XFxuICAgIHZlYzIgcG9zID0gbWl4KHVfcGF0dGVybl90bF9hIC8gdV90ZXhzaXplLCB1X3BhdHRlcm5fYnJfYSAvIHVfdGV4c2l6ZSwgaW1hZ2Vjb29yZCk7XFxuICAgIHZlYzQgY29sb3IxID0gdGV4dHVyZTJEKHVfaW1hZ2UsIHBvcyk7XFxuXFxuICAgIHZlYzIgaW1hZ2Vjb29yZF9iID0gbW9kKHZfcG9zX2IsIDEuMCk7XFxuICAgIHZlYzIgcG9zMiA9IG1peCh1X3BhdHRlcm5fdGxfYiAvIHVfdGV4c2l6ZSwgdV9wYXR0ZXJuX2JyX2IgLyB1X3RleHNpemUsIGltYWdlY29vcmRfYik7XFxuICAgIHZlYzQgY29sb3IyID0gdGV4dHVyZTJEKHVfaW1hZ2UsIHBvczIpO1xcblxcbiAgICBnbF9GcmFnQ29sb3IgPSBtaXgoY29sb3IxLCBjb2xvcjIsIHVfbWl4KSAqIG9wYWNpdHk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYTtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYjtcXG51bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7XFxuXFxuYXR0cmlidXRlIHZlYzIgYV9wb3M7XFxuXFxudmFyeWluZyB2ZWMyIHZfcG9zX2E7XFxudmFyeWluZyB2ZWMyIHZfcG9zX2I7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbiAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogdmVjNChhX3BvcywgMCwgMSk7XFxuXFxuICAgIHZfcG9zX2EgPSBnZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlciwgdV9waXhlbF9jb29yZF9sb3dlciwgdV9zY2FsZV9hICogdV9wYXR0ZXJuX3NpemVfYSwgdV90aWxlX3VuaXRzX3RvX3BpeGVscywgYV9wb3MpO1xcbiAgICB2X3Bvc19iID0gZ2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsIHVfcGl4ZWxfY29vcmRfbG93ZXIsIHVfc2NhbGVfYiAqIHVfcGF0dGVybl9zaXplX2IsIHVfdGlsZV91bml0c190b19waXhlbHMsIGFfcG9zKTtcXG59XFxuXCJ9LGZpbGxFeHRydXNpb246e2ZyYWdtZW50U291cmNlOlwidmFyeWluZyB2ZWM0IHZfY29sb3I7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGVpZ2h0XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoZWlnaHRcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcblxcbiAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yO1xcblxcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cXG5cIix2ZXJ0ZXhTb3VyY2U6XCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7XFxudW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjtcXG51bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0cG9zO1xcbnVuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O1xcblxcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWMzIGFfbm9ybWFsO1xcbmF0dHJpYnV0ZSBmbG9hdCBhX2VkZ2VkaXN0YW5jZTtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmFzZVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoZWlnaHRcXG5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmFzZVxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhlaWdodFxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXFxuXFxuICAgIGJhc2UgPSBtYXgoMC4wLCBiYXNlKTtcXG4gICAgaGVpZ2h0ID0gbWF4KDAuMCwgaGVpZ2h0KTtcXG5cXG4gICAgZmxvYXQgZWQgPSBhX2VkZ2VkaXN0YW5jZTsgLy8gdXNlIGVhY2ggYXR0cmliIGluIG9yZGVyIHRvIG5vdCB0cmlwIGEgVkFPIGFzc2VydFxcbiAgICBmbG9hdCB0ID0gbW9kKGFfbm9ybWFsLngsIDIuMCk7XFxuXFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KGFfcG9zLCB0ID4gMC4wID8gaGVpZ2h0IDogYmFzZSwgMSk7XFxuXFxuICAgIC8vIFJlbGF0aXZlIGx1bWluYW5jZSAoaG93IGRhcmsvYnJpZ2h0IGlzIHRoZSBzdXJmYWNlIGNvbG9yPylcXG4gICAgZmxvYXQgY29sb3J2YWx1ZSA9IGNvbG9yLnIgKiAwLjIxMjYgKyBjb2xvci5nICogMC43MTUyICsgY29sb3IuYiAqIDAuMDcyMjtcXG5cXG4gICAgdl9jb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcXG5cXG4gICAgLy8gQWRkIHNsaWdodCBhbWJpZW50IGxpZ2h0aW5nIHNvIG5vIGV4dHJ1c2lvbnMgYXJlIHRvdGFsbHkgYmxhY2tcXG4gICAgdmVjNCBhbWJpZW50bGlnaHQgPSB2ZWM0KDAuMDMsIDAuMDMsIDAuMDMsIDEuMCk7XFxuICAgIGNvbG9yICs9IGFtYmllbnRsaWdodDtcXG5cXG4gICAgLy8gQ2FsY3VsYXRlIGNvcyh0aGV0YSksIHdoZXJlIHRoZXRhIGlzIHRoZSBhbmdsZSBiZXR3ZWVuIHN1cmZhY2Ugbm9ybWFsIGFuZCBkaWZmdXNlIGxpZ2h0IHJheVxcbiAgICBmbG9hdCBkaXJlY3Rpb25hbCA9IGNsYW1wKGRvdChhX25vcm1hbCAvIDE2Mzg0LjAsIHVfbGlnaHRwb3MpLCAwLjAsIDEuMCk7XFxuXFxuICAgIC8vIEFkanVzdCBkaXJlY3Rpb25hbCBzbyB0aGF0XFxuICAgIC8vIHRoZSByYW5nZSBvZiB2YWx1ZXMgZm9yIGhpZ2hsaWdodC9zaGFkaW5nIGlzIG5hcnJvd2VyXFxuICAgIC8vIHdpdGggbG93ZXIgbGlnaHQgaW50ZW5zaXR5XFxuICAgIC8vIGFuZCB3aXRoIGxpZ2h0ZXIvYnJpZ2h0ZXIgc3VyZmFjZSBjb2xvcnNcXG4gICAgZGlyZWN0aW9uYWwgPSBtaXgoKDEuMCAtIHVfbGlnaHRpbnRlbnNpdHkpLCBtYXgoKDEuMCAtIGNvbG9ydmFsdWUgKyB1X2xpZ2h0aW50ZW5zaXR5KSwgMS4wKSwgZGlyZWN0aW9uYWwpO1xcblxcbiAgICAvLyBBZGQgZ3JhZGllbnQgYWxvbmcgeiBheGlzIG9mIHNpZGUgc3VyZmFjZXNcXG4gICAgaWYgKGFfbm9ybWFsLnkgIT0gMC4wKSB7XFxuICAgICAgICBkaXJlY3Rpb25hbCAqPSBjbGFtcCgodCArIGJhc2UpICogcG93KGhlaWdodCAvIDE1MC4wLCAwLjUpLCBtaXgoMC43LCAwLjk4LCAxLjAgLSB1X2xpZ2h0aW50ZW5zaXR5KSwgMS4wKTtcXG4gICAgfVxcblxcbiAgICAvLyBBc3NpZ24gZmluYWwgY29sb3IgYmFzZWQgb24gc3VyZmFjZSArIGFtYmllbnQgbGlnaHQgY29sb3IsIGRpZmZ1c2UgbGlnaHQgZGlyZWN0aW9uYWwsIGFuZCBsaWdodCBjb2xvclxcbiAgICAvLyB3aXRoIGxvd2VyIGJvdW5kcyBhZGp1c3RlZCB0byBodWUgb2YgbGlnaHRcXG4gICAgLy8gc28gdGhhdCBzaGFkaW5nIGlzIHRpbnRlZCB3aXRoIHRoZSBjb21wbGVtZW50YXJ5IChvcHBvc2l0ZSkgY29sb3IgdG8gdGhlIGxpZ2h0IGNvbG9yXFxuICAgIHZfY29sb3IuciArPSBjbGFtcChjb2xvci5yICogZGlyZWN0aW9uYWwgKiB1X2xpZ2h0Y29sb3IuciwgbWl4KDAuMCwgMC4zLCAxLjAgLSB1X2xpZ2h0Y29sb3IuciksIDEuMCk7XFxuICAgIHZfY29sb3IuZyArPSBjbGFtcChjb2xvci5nICogZGlyZWN0aW9uYWwgKiB1X2xpZ2h0Y29sb3IuZywgbWl4KDAuMCwgMC4zLCAxLjAgLSB1X2xpZ2h0Y29sb3IuZyksIDEuMCk7XFxuICAgIHZfY29sb3IuYiArPSBjbGFtcChjb2xvci5iICogZGlyZWN0aW9uYWwgKiB1X2xpZ2h0Y29sb3IuYiwgbWl4KDAuMCwgMC4zLCAxLjAgLSB1X2xpZ2h0Y29sb3IuYiksIDEuMCk7XFxufVxcblwifSxmaWxsRXh0cnVzaW9uUGF0dGVybjp7ZnJhZ21lbnRTb3VyY2U6XCJ1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsX2E7XFxudW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9icl9hO1xcbnVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYjtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX2JyX2I7XFxudW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTtcXG51bmlmb3JtIGZsb2F0IHVfbWl4O1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7XFxuXFxudmFyeWluZyB2ZWMyIHZfcG9zX2E7XFxudmFyeWluZyB2ZWMyIHZfcG9zX2I7XFxudmFyeWluZyB2ZWM0IHZfbGlnaHRpbmc7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGVpZ2h0XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoZWlnaHRcXG5cXG4gICAgdmVjMiBpbWFnZWNvb3JkID0gbW9kKHZfcG9zX2EsIDEuMCk7XFxuICAgIHZlYzIgcG9zID0gbWl4KHVfcGF0dGVybl90bF9hIC8gdV90ZXhzaXplLCB1X3BhdHRlcm5fYnJfYSAvIHVfdGV4c2l6ZSwgaW1hZ2Vjb29yZCk7XFxuICAgIHZlYzQgY29sb3IxID0gdGV4dHVyZTJEKHVfaW1hZ2UsIHBvcyk7XFxuXFxuICAgIHZlYzIgaW1hZ2Vjb29yZF9iID0gbW9kKHZfcG9zX2IsIDEuMCk7XFxuICAgIHZlYzIgcG9zMiA9IG1peCh1X3BhdHRlcm5fdGxfYiAvIHVfdGV4c2l6ZSwgdV9wYXR0ZXJuX2JyX2IgLyB1X3RleHNpemUsIGltYWdlY29vcmRfYik7XFxuICAgIHZlYzQgY29sb3IyID0gdGV4dHVyZTJEKHVfaW1hZ2UsIHBvczIpO1xcblxcbiAgICB2ZWM0IG1peGVkQ29sb3IgPSBtaXgoY29sb3IxLCBjb2xvcjIsIHVfbWl4KTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gbWl4ZWRDb2xvciAqIHZfbGlnaHRpbmc7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjtcXG51bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYTtcXG51bmlmb3JtIGZsb2F0IHVfc2NhbGVfYjtcXG51bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7XFxudW5pZm9ybSBmbG9hdCB1X2hlaWdodF9mYWN0b3I7XFxuXFxudW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjtcXG51bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0cG9zO1xcbnVuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O1xcblxcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWMzIGFfbm9ybWFsO1xcbmF0dHJpYnV0ZSBmbG9hdCBhX2VkZ2VkaXN0YW5jZTtcXG5cXG52YXJ5aW5nIHZlYzIgdl9wb3NfYTtcXG52YXJ5aW5nIHZlYzIgdl9wb3NfYjtcXG52YXJ5aW5nIHZlYzQgdl9saWdodGluZztcXG52YXJ5aW5nIGZsb2F0IHZfZGlyZWN0aW9uYWw7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGVpZ2h0XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoZWlnaHRcXG5cXG4gICAgYmFzZSA9IG1heCgwLjAsIGJhc2UpO1xcbiAgICBoZWlnaHQgPSBtYXgoMC4wLCBoZWlnaHQpO1xcblxcbiAgICBmbG9hdCB0ID0gbW9kKGFfbm9ybWFsLngsIDIuMCk7XFxuICAgIGZsb2F0IHogPSB0ID4gMC4wID8gaGVpZ2h0IDogYmFzZTtcXG5cXG4gICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MsIHosIDEpO1xcblxcbiAgICB2ZWMyIHBvcyA9IGFfbm9ybWFsLnggPT0gMS4wICYmIGFfbm9ybWFsLnkgPT0gMC4wICYmIGFfbm9ybWFsLnogPT0gMTYzODQuMFxcbiAgICAgICAgPyBhX3BvcyAvLyBleHRydXNpb24gdG9wXFxuICAgICAgICA6IHZlYzIoYV9lZGdlZGlzdGFuY2UsIHogKiB1X2hlaWdodF9mYWN0b3IpOyAvLyBleHRydXNpb24gc2lkZVxcblxcbiAgICB2X3Bvc19hID0gZ2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsIHVfcGl4ZWxfY29vcmRfbG93ZXIsIHVfc2NhbGVfYSAqIHVfcGF0dGVybl9zaXplX2EsIHVfdGlsZV91bml0c190b19waXhlbHMsIHBvcyk7XFxuICAgIHZfcG9zX2IgPSBnZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlciwgdV9waXhlbF9jb29yZF9sb3dlciwgdV9zY2FsZV9iICogdV9wYXR0ZXJuX3NpemVfYiwgdV90aWxlX3VuaXRzX3RvX3BpeGVscywgcG9zKTtcXG5cXG4gICAgdl9saWdodGluZyA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcXG4gICAgZmxvYXQgZGlyZWN0aW9uYWwgPSBjbGFtcChkb3QoYV9ub3JtYWwgLyAxNjM4My4wLCB1X2xpZ2h0cG9zKSwgMC4wLCAxLjApO1xcbiAgICBkaXJlY3Rpb25hbCA9IG1peCgoMS4wIC0gdV9saWdodGludGVuc2l0eSksIG1heCgoMC41ICsgdV9saWdodGludGVuc2l0eSksIDEuMCksIGRpcmVjdGlvbmFsKTtcXG5cXG4gICAgaWYgKGFfbm9ybWFsLnkgIT0gMC4wKSB7XFxuICAgICAgICBkaXJlY3Rpb25hbCAqPSBjbGFtcCgodCArIGJhc2UpICogcG93KGhlaWdodCAvIDE1MC4wLCAwLjUpLCBtaXgoMC43LCAwLjk4LCAxLjAgLSB1X2xpZ2h0aW50ZW5zaXR5KSwgMS4wKTtcXG4gICAgfVxcblxcbiAgICB2X2xpZ2h0aW5nLnJnYiArPSBjbGFtcChkaXJlY3Rpb25hbCAqIHVfbGlnaHRjb2xvciwgbWl4KHZlYzMoMC4wKSwgdmVjMygwLjMpLCAxLjAgLSB1X2xpZ2h0Y29sb3IpLCB2ZWMzKDEuMCkpO1xcbn1cXG5cIn0sZXh0cnVzaW9uVGV4dHVyZTp7ZnJhZ21lbnRTb3VyY2U6XCJ1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO1xcbnVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5O1xcbnZhcnlpbmcgdmVjMiB2X3BvcztcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X2ltYWdlLCB2X3BvcykgKiB1X29wYWNpdHk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV93b3JsZDtcXG5hdHRyaWJ1dGUgdmVjMiBhX3BvcztcXG52YXJ5aW5nIHZlYzIgdl9wb3M7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogdmVjNChhX3BvcyAqIHVfd29ybGQsIDAsIDEpO1xcblxcbiAgICB2X3Bvcy54ID0gYV9wb3MueDtcXG4gICAgdl9wb3MueSA9IDEuMCAtIGFfcG9zLnk7XFxufVxcblwifSxsaW5lOntmcmFnbWVudFNvdXJjZTpcIiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52YXJ5aW5nIHZlYzIgdl93aWR0aDI7XFxudmFyeWluZyB2ZWMyIHZfbm9ybWFsO1xcbnZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpc3RhbmNlIG9mIHRoZSBwaXhlbCBmcm9tIHRoZSBsaW5lIGluIHBpeGVscy5cXG4gICAgZmxvYXQgZGlzdCA9IGxlbmd0aCh2X25vcm1hbCkgKiB2X3dpZHRoMi5zO1xcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFudGlhbGlhc2luZyBmYWRlIGZhY3Rvci4gVGhpcyBpcyBlaXRoZXIgd2hlbiBmYWRpbmcgaW5cXG4gICAgLy8gdGhlIGxpbmUgaW4gY2FzZSBvZiBhbiBvZmZzZXQgbGluZSAodl93aWR0aDIudCkgb3Igd2hlbiBmYWRpbmcgb3V0XFxuICAgIC8vICh2X3dpZHRoMi5zKVxcbiAgICBmbG9hdCBibHVyMiA9IChibHVyICsgMS4wIC8gREVWSUNFX1BJWEVMX1JBVElPKSAqIHZfZ2FtbWFfc2NhbGU7XFxuICAgIGZsb2F0IGFscGhhID0gY2xhbXAobWluKGRpc3QgLSAodl93aWR0aDIudCAtIGJsdXIyKSwgdl93aWR0aDIucyAtIGRpc3QpIC8gYmx1cjIsIDAuMCwgMS4wKTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3IgKiAoYWxwaGEgKiBvcGFjaXR5KTtcXG5cXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XFxuXCIsdmVydGV4U291cmNlOlwiXFxuXFxuLy8gdGhlIGRpc3RhbmNlIG92ZXIgd2hpY2ggdGhlIGxpbmUgZWRnZSBmYWRlcyBvdXQuXFxuLy8gUmV0aW5hIGRldmljZXMgbmVlZCBhIHNtYWxsZXIgZGlzdGFuY2UgdG8gYXZvaWQgYWxpYXNpbmcuXFxuI2RlZmluZSBBTlRJQUxJQVNJTkcgMS4wIC8gREVWSUNFX1BJWEVMX1JBVElPIC8gMi4wXFxuXFxuLy8gZmxvb3IoMTI3IC8gMikgPT0gNjMuMFxcbi8vIHRoZSBtYXhpbXVtIGFsbG93ZWQgbWl0ZXIgbGltaXQgaXMgMi4wIGF0IHRoZSBtb21lbnQuIHRoZSBleHRydWRlIG5vcm1hbCBpc1xcbi8vIHN0b3JlZCBpbiBhIGJ5dGUgKC0xMjguLjEyNykuIHdlIHNjYWxlIHJlZ3VsYXIgbm9ybWFscyB1cCB0byBsZW5ndGggNjMsIGJ1dFxcbi8vIHRoZXJlIGFyZSBhbHNvIFxcXCJzcGVjaWFsXFxcIiBub3JtYWxzIHRoYXQgaGF2ZSBhIGJpZ2dlciBsZW5ndGggKG9mIHVwIHRvIDEyNiBpblxcbi8vIHRoaXMgY2FzZSkuXFxuLy8gI2RlZmluZSBzY2FsZSA2My4wXFxuI2RlZmluZSBzY2FsZSAwLjAxNTg3MzAxNlxcblxcbmF0dHJpYnV0ZSB2ZWM0IGFfcG9zX25vcm1hbDtcXG5hdHRyaWJ1dGUgdmVjNCBhX2RhdGE7XFxuXFxudW5pZm9ybSBtYXQ0IHVfbWF0cml4O1xcbnVuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X3JhdGlvO1xcbnVuaWZvcm0gdmVjMiB1X2dsX3VuaXRzX3RvX3BpeGVscztcXG5cXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyB2ZWMyIHZfd2lkdGgyO1xcbnZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcXG5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9mZnNldFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCB3aWR0aFxcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxcblxcbiAgICB2ZWMyIGFfZXh0cnVkZSA9IGFfZGF0YS54eSAtIDEyOC4wO1xcbiAgICBmbG9hdCBhX2RpcmVjdGlvbiA9IG1vZChhX2RhdGEueiwgNC4wKSAtIDEuMDtcXG5cXG4gICAgdmVjMiBwb3MgPSBhX3Bvc19ub3JtYWwueHk7XFxuXFxuICAgIC8vIHggaXMgMSBpZiBpdCdzIGEgcm91bmQgY2FwLCAwIG90aGVyd2lzZVxcbiAgICAvLyB5IGlzIDEgaWYgdGhlIG5vcm1hbCBwb2ludHMgdXAsIGFuZCAtMSBpZiBpdCBwb2ludHMgZG93blxcbiAgICBtZWRpdW1wIHZlYzIgbm9ybWFsID0gYV9wb3Nfbm9ybWFsLnp3O1xcbiAgICB2X25vcm1hbCA9IG5vcm1hbDtcXG5cXG4gICAgLy8gdGhlc2UgdHJhbnNmb3JtYXRpb25zIHVzZWQgdG8gYmUgYXBwbGllZCBpbiB0aGUgSlMgYW5kIG5hdGl2ZSBjb2RlIGJhc2VzLlxcbiAgICAvLyBtb3ZlZCB0aGVtIGludG8gdGhlIHNoYWRlciBmb3IgY2xhcml0eSBhbmQgc2ltcGxpY2l0eS5cXG4gICAgZ2Fwd2lkdGggPSBnYXB3aWR0aCAvIDIuMDtcXG4gICAgZmxvYXQgaGFsZndpZHRoID0gd2lkdGggLyAyLjA7XFxuICAgIG9mZnNldCA9IC0xLjAgKiBvZmZzZXQ7XFxuXFxuICAgIGZsb2F0IGluc2V0ID0gZ2Fwd2lkdGggKyAoZ2Fwd2lkdGggPiAwLjAgPyBBTlRJQUxJQVNJTkcgOiAwLjApO1xcbiAgICBmbG9hdCBvdXRzZXQgPSBnYXB3aWR0aCArIGhhbGZ3aWR0aCAqIChnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkgKyBBTlRJQUxJQVNJTkc7XFxuXFxuICAgIC8vIFNjYWxlIHRoZSBleHRydXNpb24gdmVjdG9yIGRvd24gdG8gYSBub3JtYWwgYW5kIHRoZW4gdXAgYnkgdGhlIGxpbmUgd2lkdGhcXG4gICAgLy8gb2YgdGhpcyB2ZXJ0ZXguXFxuICAgIG1lZGl1bXAgdmVjMiBkaXN0ID0gb3V0c2V0ICogYV9leHRydWRlICogc2NhbGU7XFxuXFxuICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IHdoZW4gZHJhd2luZyBhIGxpbmUgdGhhdCBpcyB0byB0aGUgc2lkZSBvZiB0aGUgYWN0dWFsIGxpbmUuXFxuICAgIC8vIFdlIGRvIHRoaXMgYnkgY3JlYXRpbmcgYSB2ZWN0b3IgdGhhdCBwb2ludHMgdG93YXJkcyB0aGUgZXh0cnVkZSwgYnV0IHJvdGF0ZVxcbiAgICAvLyBpdCB3aGVuIHdlJ3JlIGRyYXdpbmcgcm91bmQgZW5kIHBvaW50cyAoYV9kaXJlY3Rpb24gPSAtMSBvciAxKSBzaW5jZSB0aGVpclxcbiAgICAvLyBleHRydWRlIHZlY3RvciBwb2ludHMgaW4gYW5vdGhlciBkaXJlY3Rpb24uXFxuICAgIG1lZGl1bXAgZmxvYXQgdSA9IDAuNSAqIGFfZGlyZWN0aW9uO1xcbiAgICBtZWRpdW1wIGZsb2F0IHQgPSAxLjAgLSBhYnModSk7XFxuICAgIG1lZGl1bXAgdmVjMiBvZmZzZXQyID0gb2Zmc2V0ICogYV9leHRydWRlICogc2NhbGUgKiBub3JtYWwueSAqIG1hdDIodCwgLXUsIHUsIHQpO1xcblxcbiAgICB2ZWM0IHByb2plY3RlZF9leHRydWRlID0gdV9tYXRyaXggKiB2ZWM0KGRpc3QgLyB1X3JhdGlvLCAwLjAsIDAuMCk7XFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KHBvcyArIG9mZnNldDIgLyB1X3JhdGlvLCAwLjAsIDEuMCkgKyBwcm9qZWN0ZWRfZXh0cnVkZTtcXG5cXG4gICAgLy8gY2FsY3VsYXRlIGhvdyBtdWNoIHRoZSBwZXJzcGVjdGl2ZSB2aWV3IHNxdWlzaGVzIG9yIHN0cmV0Y2hlcyB0aGUgZXh0cnVkZVxcbiAgICBmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlID0gbGVuZ3RoKGRpc3QpO1xcbiAgICBmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlID0gbGVuZ3RoKHByb2plY3RlZF9leHRydWRlLnh5IC8gZ2xfUG9zaXRpb24udyAqIHVfZ2xfdW5pdHNfdG9fcGl4ZWxzKTtcXG4gICAgdl9nYW1tYV9zY2FsZSA9IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUgLyBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlO1xcblxcbiAgICB2X3dpZHRoMiA9IHZlYzIob3V0c2V0LCBpbnNldCk7XFxufVxcblwifSxsaW5lUGF0dGVybjp7ZnJhZ21lbnRTb3VyY2U6XCJ1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYjtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsX2E7XFxudW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9icl9hO1xcbnVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYjtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX2JyX2I7XFxudW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTtcXG51bmlmb3JtIGZsb2F0IHVfZmFkZTtcXG5cXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO1xcblxcbnZhcnlpbmcgdmVjMiB2X25vcm1hbDtcXG52YXJ5aW5nIHZlYzIgdl93aWR0aDI7XFxudmFyeWluZyBmbG9hdCB2X2xpbmVzb2ZhcjtcXG52YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpc3RhbmNlIG9mIHRoZSBwaXhlbCBmcm9tIHRoZSBsaW5lIGluIHBpeGVscy5cXG4gICAgZmxvYXQgZGlzdCA9IGxlbmd0aCh2X25vcm1hbCkgKiB2X3dpZHRoMi5zO1xcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFudGlhbGlhc2luZyBmYWRlIGZhY3Rvci4gVGhpcyBpcyBlaXRoZXIgd2hlbiBmYWRpbmcgaW5cXG4gICAgLy8gdGhlIGxpbmUgaW4gY2FzZSBvZiBhbiBvZmZzZXQgbGluZSAodl93aWR0aDIudCkgb3Igd2hlbiBmYWRpbmcgb3V0XFxuICAgIC8vICh2X3dpZHRoMi5zKVxcbiAgICBmbG9hdCBibHVyMiA9IChibHVyICsgMS4wIC8gREVWSUNFX1BJWEVMX1JBVElPKSAqIHZfZ2FtbWFfc2NhbGU7XFxuICAgIGZsb2F0IGFscGhhID0gY2xhbXAobWluKGRpc3QgLSAodl93aWR0aDIudCAtIGJsdXIyKSwgdl93aWR0aDIucyAtIGRpc3QpIC8gYmx1cjIsIDAuMCwgMS4wKTtcXG5cXG4gICAgZmxvYXQgeF9hID0gbW9kKHZfbGluZXNvZmFyIC8gdV9wYXR0ZXJuX3NpemVfYS54LCAxLjApO1xcbiAgICBmbG9hdCB4X2IgPSBtb2Qodl9saW5lc29mYXIgLyB1X3BhdHRlcm5fc2l6ZV9iLngsIDEuMCk7XFxuICAgIGZsb2F0IHlfYSA9IDAuNSArICh2X25vcm1hbC55ICogdl93aWR0aDIucyAvIHVfcGF0dGVybl9zaXplX2EueSk7XFxuICAgIGZsb2F0IHlfYiA9IDAuNSArICh2X25vcm1hbC55ICogdl93aWR0aDIucyAvIHVfcGF0dGVybl9zaXplX2IueSk7XFxuICAgIHZlYzIgcG9zX2EgPSBtaXgodV9wYXR0ZXJuX3RsX2EgLyB1X3RleHNpemUsIHVfcGF0dGVybl9icl9hIC8gdV90ZXhzaXplLCB2ZWMyKHhfYSwgeV9hKSk7XFxuICAgIHZlYzIgcG9zX2IgPSBtaXgodV9wYXR0ZXJuX3RsX2IgLyB1X3RleHNpemUsIHVfcGF0dGVybl9icl9iIC8gdV90ZXhzaXplLCB2ZWMyKHhfYiwgeV9iKSk7XFxuXFxuICAgIHZlYzQgY29sb3IgPSBtaXgodGV4dHVyZTJEKHVfaW1hZ2UsIHBvc19hKSwgdGV4dHVyZTJEKHVfaW1hZ2UsIHBvc19iKSwgdV9mYWRlKTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3IgKiBhbHBoYSAqIG9wYWNpdHk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcIi8vIGZsb29yKDEyNyAvIDIpID09IDYzLjBcXG4vLyB0aGUgbWF4aW11bSBhbGxvd2VkIG1pdGVyIGxpbWl0IGlzIDIuMCBhdCB0aGUgbW9tZW50LiB0aGUgZXh0cnVkZSBub3JtYWwgaXNcXG4vLyBzdG9yZWQgaW4gYSBieXRlICgtMTI4Li4xMjcpLiB3ZSBzY2FsZSByZWd1bGFyIG5vcm1hbHMgdXAgdG8gbGVuZ3RoIDYzLCBidXRcXG4vLyB0aGVyZSBhcmUgYWxzbyBcXFwic3BlY2lhbFxcXCIgbm9ybWFscyB0aGF0IGhhdmUgYSBiaWdnZXIgbGVuZ3RoIChvZiB1cCB0byAxMjYgaW5cXG4vLyB0aGlzIGNhc2UpLlxcbi8vICNkZWZpbmUgc2NhbGUgNjMuMFxcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcXG5cXG4vLyBXZSBzY2FsZSB0aGUgZGlzdGFuY2UgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgYnVmZmVycyBzbyB0aGF0IHdlIGNhbiBzdG9yZVxcbi8vIGxvbmcgZGlzdGFuY2VzIGZvciBsb25nIHNlZ21lbnRzLiBVc2UgdGhpcyB2YWx1ZSB0byB1bnNjYWxlIHRoZSBkaXN0YW5jZS5cXG4jZGVmaW5lIExJTkVfRElTVEFOQ0VfU0NBTEUgMi4wXFxuXFxuLy8gdGhlIGRpc3RhbmNlIG92ZXIgd2hpY2ggdGhlIGxpbmUgZWRnZSBmYWRlcyBvdXQuXFxuLy8gUmV0aW5hIGRldmljZXMgbmVlZCBhIHNtYWxsZXIgZGlzdGFuY2UgdG8gYXZvaWQgYWxpYXNpbmcuXFxuI2RlZmluZSBBTlRJQUxJQVNJTkcgMS4wIC8gREVWSUNFX1BJWEVMX1JBVElPIC8gMi4wXFxuXFxuYXR0cmlidXRlIHZlYzQgYV9wb3Nfbm9ybWFsO1xcbmF0dHJpYnV0ZSB2ZWM0IGFfZGF0YTtcXG5cXG51bmlmb3JtIG1hdDQgdV9tYXRyaXg7XFxudW5pZm9ybSBtZWRpdW1wIGZsb2F0IHVfcmF0aW87XFxudW5pZm9ybSB2ZWMyIHVfZ2xfdW5pdHNfdG9fcGl4ZWxzO1xcblxcbnZhcnlpbmcgdmVjMiB2X25vcm1hbDtcXG52YXJ5aW5nIHZlYzIgdl93aWR0aDI7XFxudmFyeWluZyBmbG9hdCB2X2xpbmVzb2ZhcjtcXG52YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCBnYXB3aWR0aFxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXFxuXFxuICAgIHZlYzIgYV9leHRydWRlID0gYV9kYXRhLnh5IC0gMTI4LjA7XFxuICAgIGZsb2F0IGFfZGlyZWN0aW9uID0gbW9kKGFfZGF0YS56LCA0LjApIC0gMS4wO1xcbiAgICBmbG9hdCBhX2xpbmVzb2ZhciA9IChmbG9vcihhX2RhdGEueiAvIDQuMCkgKyBhX2RhdGEudyAqIDY0LjApICogTElORV9ESVNUQU5DRV9TQ0FMRTtcXG5cXG4gICAgdmVjMiBwb3MgPSBhX3Bvc19ub3JtYWwueHk7XFxuXFxuICAgIC8vIHggaXMgMSBpZiBpdCdzIGEgcm91bmQgY2FwLCAwIG90aGVyd2lzZVxcbiAgICAvLyB5IGlzIDEgaWYgdGhlIG5vcm1hbCBwb2ludHMgdXAsIGFuZCAtMSBpZiBpdCBwb2ludHMgZG93blxcbiAgICBtZWRpdW1wIHZlYzIgbm9ybWFsID0gYV9wb3Nfbm9ybWFsLnp3O1xcbiAgICB2X25vcm1hbCA9IG5vcm1hbDtcXG5cXG4gICAgLy8gdGhlc2UgdHJhbnNmb3JtYXRpb25zIHVzZWQgdG8gYmUgYXBwbGllZCBpbiB0aGUgSlMgYW5kIG5hdGl2ZSBjb2RlIGJhc2VzLlxcbiAgICAvLyBtb3ZlZCB0aGVtIGludG8gdGhlIHNoYWRlciBmb3IgY2xhcml0eSBhbmQgc2ltcGxpY2l0eS5cXG4gICAgZ2Fwd2lkdGggPSBnYXB3aWR0aCAvIDIuMDtcXG4gICAgZmxvYXQgaGFsZndpZHRoID0gd2lkdGggLyAyLjA7XFxuICAgIG9mZnNldCA9IC0xLjAgKiBvZmZzZXQ7XFxuXFxuICAgIGZsb2F0IGluc2V0ID0gZ2Fwd2lkdGggKyAoZ2Fwd2lkdGggPiAwLjAgPyBBTlRJQUxJQVNJTkcgOiAwLjApO1xcbiAgICBmbG9hdCBvdXRzZXQgPSBnYXB3aWR0aCArIGhhbGZ3aWR0aCAqIChnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkgKyBBTlRJQUxJQVNJTkc7XFxuXFxuICAgIC8vIFNjYWxlIHRoZSBleHRydXNpb24gdmVjdG9yIGRvd24gdG8gYSBub3JtYWwgYW5kIHRoZW4gdXAgYnkgdGhlIGxpbmUgd2lkdGhcXG4gICAgLy8gb2YgdGhpcyB2ZXJ0ZXguXFxuICAgIG1lZGl1bXAgdmVjMiBkaXN0ID0gb3V0c2V0ICogYV9leHRydWRlICogc2NhbGU7XFxuXFxuICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IHdoZW4gZHJhd2luZyBhIGxpbmUgdGhhdCBpcyB0byB0aGUgc2lkZSBvZiB0aGUgYWN0dWFsIGxpbmUuXFxuICAgIC8vIFdlIGRvIHRoaXMgYnkgY3JlYXRpbmcgYSB2ZWN0b3IgdGhhdCBwb2ludHMgdG93YXJkcyB0aGUgZXh0cnVkZSwgYnV0IHJvdGF0ZVxcbiAgICAvLyBpdCB3aGVuIHdlJ3JlIGRyYXdpbmcgcm91bmQgZW5kIHBvaW50cyAoYV9kaXJlY3Rpb24gPSAtMSBvciAxKSBzaW5jZSB0aGVpclxcbiAgICAvLyBleHRydWRlIHZlY3RvciBwb2ludHMgaW4gYW5vdGhlciBkaXJlY3Rpb24uXFxuICAgIG1lZGl1bXAgZmxvYXQgdSA9IDAuNSAqIGFfZGlyZWN0aW9uO1xcbiAgICBtZWRpdW1wIGZsb2F0IHQgPSAxLjAgLSBhYnModSk7XFxuICAgIG1lZGl1bXAgdmVjMiBvZmZzZXQyID0gb2Zmc2V0ICogYV9leHRydWRlICogc2NhbGUgKiBub3JtYWwueSAqIG1hdDIodCwgLXUsIHUsIHQpO1xcblxcbiAgICB2ZWM0IHByb2plY3RlZF9leHRydWRlID0gdV9tYXRyaXggKiB2ZWM0KGRpc3QgLyB1X3JhdGlvLCAwLjAsIDAuMCk7XFxuICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiB2ZWM0KHBvcyArIG9mZnNldDIgLyB1X3JhdGlvLCAwLjAsIDEuMCkgKyBwcm9qZWN0ZWRfZXh0cnVkZTtcXG5cXG4gICAgLy8gY2FsY3VsYXRlIGhvdyBtdWNoIHRoZSBwZXJzcGVjdGl2ZSB2aWV3IHNxdWlzaGVzIG9yIHN0cmV0Y2hlcyB0aGUgZXh0cnVkZVxcbiAgICBmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlID0gbGVuZ3RoKGRpc3QpO1xcbiAgICBmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlID0gbGVuZ3RoKHByb2plY3RlZF9leHRydWRlLnh5IC8gZ2xfUG9zaXRpb24udyAqIHVfZ2xfdW5pdHNfdG9fcGl4ZWxzKTtcXG4gICAgdl9nYW1tYV9zY2FsZSA9IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUgLyBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlO1xcblxcbiAgICB2X2xpbmVzb2ZhciA9IGFfbGluZXNvZmFyO1xcbiAgICB2X3dpZHRoMiA9IHZlYzIob3V0c2V0LCBpbnNldCk7XFxufVxcblwifSxsaW5lU0RGOntcbmZyYWdtZW50U291cmNlOlwiXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTtcXG51bmlmb3JtIGZsb2F0IHVfc2RmZ2FtbWE7XFxudW5pZm9ybSBmbG9hdCB1X21peDtcXG5cXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyB2ZWMyIHZfd2lkdGgyO1xcbnZhcnlpbmcgdmVjMiB2X3RleF9hO1xcbnZhcnlpbmcgdmVjMiB2X3RleF9iO1xcbnZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcXG5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHdpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcXG5cXG52b2lkIG1haW4oKSB7XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpc3RhbmNlIG9mIHRoZSBwaXhlbCBmcm9tIHRoZSBsaW5lIGluIHBpeGVscy5cXG4gICAgZmxvYXQgZGlzdCA9IGxlbmd0aCh2X25vcm1hbCkgKiB2X3dpZHRoMi5zO1xcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGFudGlhbGlhc2luZyBmYWRlIGZhY3Rvci4gVGhpcyBpcyBlaXRoZXIgd2hlbiBmYWRpbmcgaW5cXG4gICAgLy8gdGhlIGxpbmUgaW4gY2FzZSBvZiBhbiBvZmZzZXQgbGluZSAodl93aWR0aDIudCkgb3Igd2hlbiBmYWRpbmcgb3V0XFxuICAgIC8vICh2X3dpZHRoMi5zKVxcbiAgICBmbG9hdCBibHVyMiA9IChibHVyICsgMS4wIC8gREVWSUNFX1BJWEVMX1JBVElPKSAqIHZfZ2FtbWFfc2NhbGU7XFxuICAgIGZsb2F0IGFscGhhID0gY2xhbXAobWluKGRpc3QgLSAodl93aWR0aDIudCAtIGJsdXIyKSwgdl93aWR0aDIucyAtIGRpc3QpIC8gYmx1cjIsIDAuMCwgMS4wKTtcXG5cXG4gICAgZmxvYXQgc2RmZGlzdF9hID0gdGV4dHVyZTJEKHVfaW1hZ2UsIHZfdGV4X2EpLmE7XFxuICAgIGZsb2F0IHNkZmRpc3RfYiA9IHRleHR1cmUyRCh1X2ltYWdlLCB2X3RleF9iKS5hO1xcbiAgICBmbG9hdCBzZGZkaXN0ID0gbWl4KHNkZmRpc3RfYSwgc2RmZGlzdF9iLCB1X21peCk7XFxuICAgIGFscGhhICo9IHNtb290aHN0ZXAoMC41IC0gdV9zZGZnYW1tYSAvIGZsb29yd2lkdGgsIDAuNSArIHVfc2RmZ2FtbWEgLyBmbG9vcndpZHRoLCBzZGZkaXN0KTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3IgKiAoYWxwaGEgKiBvcGFjaXR5KTtcXG5cXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XFxuXCIsdmVydGV4U291cmNlOlwiLy8gZmxvb3IoMTI3IC8gMikgPT0gNjMuMFxcbi8vIHRoZSBtYXhpbXVtIGFsbG93ZWQgbWl0ZXIgbGltaXQgaXMgMi4wIGF0IHRoZSBtb21lbnQuIHRoZSBleHRydWRlIG5vcm1hbCBpc1xcbi8vIHN0b3JlZCBpbiBhIGJ5dGUgKC0xMjguLjEyNykuIHdlIHNjYWxlIHJlZ3VsYXIgbm9ybWFscyB1cCB0byBsZW5ndGggNjMsIGJ1dFxcbi8vIHRoZXJlIGFyZSBhbHNvIFxcXCJzcGVjaWFsXFxcIiBub3JtYWxzIHRoYXQgaGF2ZSBhIGJpZ2dlciBsZW5ndGggKG9mIHVwIHRvIDEyNiBpblxcbi8vIHRoaXMgY2FzZSkuXFxuLy8gI2RlZmluZSBzY2FsZSA2My4wXFxuI2RlZmluZSBzY2FsZSAwLjAxNTg3MzAxNlxcblxcbi8vIFdlIHNjYWxlIHRoZSBkaXN0YW5jZSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBidWZmZXJzIHNvIHRoYXQgd2UgY2FuIHN0b3JlXFxuLy8gbG9uZyBkaXN0YW5jZXMgZm9yIGxvbmcgc2VnbWVudHMuIFVzZSB0aGlzIHZhbHVlIHRvIHVuc2NhbGUgdGhlIGRpc3RhbmNlLlxcbiNkZWZpbmUgTElORV9ESVNUQU5DRV9TQ0FMRSAyLjBcXG5cXG4vLyB0aGUgZGlzdGFuY2Ugb3ZlciB3aGljaCB0aGUgbGluZSBlZGdlIGZhZGVzIG91dC5cXG4vLyBSZXRpbmEgZGV2aWNlcyBuZWVkIGEgc21hbGxlciBkaXN0YW5jZSB0byBhdm9pZCBhbGlhc2luZy5cXG4jZGVmaW5lIEFOVElBTElBU0lORyAxLjAgLyBERVZJQ0VfUElYRUxfUkFUSU8gLyAyLjBcXG5cXG5hdHRyaWJ1dGUgdmVjNCBhX3Bvc19ub3JtYWw7XFxuYXR0cmlidXRlIHZlYzQgYV9kYXRhO1xcblxcbnVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9yYXRpbztcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuc2NhbGVfYTtcXG51bmlmb3JtIGZsb2F0IHVfdGV4X3lfYTtcXG51bmlmb3JtIHZlYzIgdV9wYXR0ZXJuc2NhbGVfYjtcXG51bmlmb3JtIGZsb2F0IHVfdGV4X3lfYjtcXG51bmlmb3JtIHZlYzIgdV9nbF91bml0c190b19waXhlbHM7XFxuXFxudmFyeWluZyB2ZWMyIHZfbm9ybWFsO1xcbnZhcnlpbmcgdmVjMiB2X3dpZHRoMjtcXG52YXJ5aW5nIHZlYzIgdl90ZXhfYTtcXG52YXJ5aW5nIHZlYzIgdl90ZXhfYjtcXG52YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBnYXB3aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcXG5cXG4gICAgdmVjMiBhX2V4dHJ1ZGUgPSBhX2RhdGEueHkgLSAxMjguMDtcXG4gICAgZmxvYXQgYV9kaXJlY3Rpb24gPSBtb2QoYV9kYXRhLnosIDQuMCkgLSAxLjA7XFxuICAgIGZsb2F0IGFfbGluZXNvZmFyID0gKGZsb29yKGFfZGF0YS56IC8gNC4wKSArIGFfZGF0YS53ICogNjQuMCkgKiBMSU5FX0RJU1RBTkNFX1NDQUxFO1xcblxcbiAgICB2ZWMyIHBvcyA9IGFfcG9zX25vcm1hbC54eTtcXG5cXG4gICAgLy8geCBpcyAxIGlmIGl0J3MgYSByb3VuZCBjYXAsIDAgb3RoZXJ3aXNlXFxuICAgIC8vIHkgaXMgMSBpZiB0aGUgbm9ybWFsIHBvaW50cyB1cCwgYW5kIC0xIGlmIGl0IHBvaW50cyBkb3duXFxuICAgIG1lZGl1bXAgdmVjMiBub3JtYWwgPSBhX3Bvc19ub3JtYWwuenc7XFxuICAgIHZfbm9ybWFsID0gbm9ybWFsO1xcblxcbiAgICAvLyB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgdXNlZCB0byBiZSBhcHBsaWVkIGluIHRoZSBKUyBhbmQgbmF0aXZlIGNvZGUgYmFzZXMuXFxuICAgIC8vIG1vdmVkIHRoZW0gaW50byB0aGUgc2hhZGVyIGZvciBjbGFyaXR5IGFuZCBzaW1wbGljaXR5LlxcbiAgICBnYXB3aWR0aCA9IGdhcHdpZHRoIC8gMi4wO1xcbiAgICBmbG9hdCBoYWxmd2lkdGggPSB3aWR0aCAvIDIuMDtcXG4gICAgb2Zmc2V0ID0gLTEuMCAqIG9mZnNldDtcXG5cXG4gICAgZmxvYXQgaW5zZXQgPSBnYXB3aWR0aCArIChnYXB3aWR0aCA+IDAuMCA/IEFOVElBTElBU0lORyA6IDAuMCk7XFxuICAgIGZsb2F0IG91dHNldCA9IGdhcHdpZHRoICsgaGFsZndpZHRoICogKGdhcHdpZHRoID4gMC4wID8gMi4wIDogMS4wKSArIEFOVElBTElBU0lORztcXG5cXG4gICAgLy8gU2NhbGUgdGhlIGV4dHJ1c2lvbiB2ZWN0b3IgZG93biB0byBhIG5vcm1hbCBhbmQgdGhlbiB1cCBieSB0aGUgbGluZSB3aWR0aFxcbiAgICAvLyBvZiB0aGlzIHZlcnRleC5cXG4gICAgbWVkaXVtcCB2ZWMyIGRpc3QgPW91dHNldCAqIGFfZXh0cnVkZSAqIHNjYWxlO1xcblxcbiAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCB3aGVuIGRyYXdpbmcgYSBsaW5lIHRoYXQgaXMgdG8gdGhlIHNpZGUgb2YgdGhlIGFjdHVhbCBsaW5lLlxcbiAgICAvLyBXZSBkbyB0aGlzIGJ5IGNyZWF0aW5nIGEgdmVjdG9yIHRoYXQgcG9pbnRzIHRvd2FyZHMgdGhlIGV4dHJ1ZGUsIGJ1dCByb3RhdGVcXG4gICAgLy8gaXQgd2hlbiB3ZSdyZSBkcmF3aW5nIHJvdW5kIGVuZCBwb2ludHMgKGFfZGlyZWN0aW9uID0gLTEgb3IgMSkgc2luY2UgdGhlaXJcXG4gICAgLy8gZXh0cnVkZSB2ZWN0b3IgcG9pbnRzIGluIGFub3RoZXIgZGlyZWN0aW9uLlxcbiAgICBtZWRpdW1wIGZsb2F0IHUgPSAwLjUgKiBhX2RpcmVjdGlvbjtcXG4gICAgbWVkaXVtcCBmbG9hdCB0ID0gMS4wIC0gYWJzKHUpO1xcbiAgICBtZWRpdW1wIHZlYzIgb2Zmc2V0MiA9IG9mZnNldCAqIGFfZXh0cnVkZSAqIHNjYWxlICogbm9ybWFsLnkgKiBtYXQyKHQsIC11LCB1LCB0KTtcXG5cXG4gICAgdmVjNCBwcm9qZWN0ZWRfZXh0cnVkZSA9IHVfbWF0cml4ICogdmVjNChkaXN0IC8gdV9yYXRpbywgMC4wLCAwLjApO1xcbiAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogdmVjNChwb3MgKyBvZmZzZXQyIC8gdV9yYXRpbywgMC4wLCAxLjApICsgcHJvamVjdGVkX2V4dHJ1ZGU7XFxuXFxuICAgIC8vIGNhbGN1bGF0ZSBob3cgbXVjaCB0aGUgcGVyc3BlY3RpdmUgdmlldyBzcXVpc2hlcyBvciBzdHJldGNoZXMgdGhlIGV4dHJ1ZGVcXG4gICAgZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZSA9IGxlbmd0aChkaXN0KTtcXG4gICAgZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZSA9IGxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eSAvIGdsX1Bvc2l0aW9uLncgKiB1X2dsX3VuaXRzX3RvX3BpeGVscyk7XFxuICAgIHZfZ2FtbWFfc2NhbGUgPSBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlIC8gZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZTtcXG5cXG4gICAgdl90ZXhfYSA9IHZlYzIoYV9saW5lc29mYXIgKiB1X3BhdHRlcm5zY2FsZV9hLnggLyBmbG9vcndpZHRoLCBub3JtYWwueSAqIHVfcGF0dGVybnNjYWxlX2EueSArIHVfdGV4X3lfYSk7XFxuICAgIHZfdGV4X2IgPSB2ZWMyKGFfbGluZXNvZmFyICogdV9wYXR0ZXJuc2NhbGVfYi54IC8gZmxvb3J3aWR0aCwgbm9ybWFsLnkgKiB1X3BhdHRlcm5zY2FsZV9iLnkgKyB1X3RleF95X2IpO1xcblxcbiAgICB2X3dpZHRoMiA9IHZlYzIob3V0c2V0LCBpbnNldCk7XFxufVxcblwifSxyYXN0ZXI6e2ZyYWdtZW50U291cmNlOlwidW5pZm9ybSBmbG9hdCB1X2ZhZGVfdDtcXG51bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTtcXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMDtcXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMTtcXG52YXJ5aW5nIHZlYzIgdl9wb3MwO1xcbnZhcnlpbmcgdmVjMiB2X3BvczE7XFxuXFxudW5pZm9ybSBmbG9hdCB1X2JyaWdodG5lc3NfbG93O1xcbnVuaWZvcm0gZmxvYXQgdV9icmlnaHRuZXNzX2hpZ2g7XFxuXFxudW5pZm9ybSBmbG9hdCB1X3NhdHVyYXRpb25fZmFjdG9yO1xcbnVuaWZvcm0gZmxvYXQgdV9jb250cmFzdF9mYWN0b3I7XFxudW5pZm9ybSB2ZWMzIHVfc3Bpbl93ZWlnaHRzO1xcblxcbnZvaWQgbWFpbigpIHtcXG5cXG4gICAgLy8gcmVhZCBhbmQgY3Jvc3MtZmFkZSBjb2xvcnMgZnJvbSB0aGUgbWFpbiBhbmQgcGFyZW50IHRpbGVzXFxuICAgIHZlYzQgY29sb3IwID0gdGV4dHVyZTJEKHVfaW1hZ2UwLCB2X3BvczApO1xcbiAgICB2ZWM0IGNvbG9yMSA9IHRleHR1cmUyRCh1X2ltYWdlMSwgdl9wb3MxKTtcXG4gICAgaWYgKGNvbG9yMC5hID4gMC4wKSB7XFxuICAgICAgICBjb2xvcjAucmdiID0gY29sb3IwLnJnYiAvIGNvbG9yMC5hO1xcbiAgICB9XFxuICAgIGlmIChjb2xvcjEuYSA+IDAuMCkge1xcbiAgICAgICAgY29sb3IxLnJnYiA9IGNvbG9yMS5yZ2IgLyBjb2xvcjEuYTtcXG4gICAgfVxcbiAgICB2ZWM0IGNvbG9yID0gbWl4KGNvbG9yMCwgY29sb3IxLCB1X2ZhZGVfdCk7XFxuICAgIGNvbG9yLmEgKj0gdV9vcGFjaXR5O1xcbiAgICB2ZWMzIHJnYiA9IGNvbG9yLnJnYjtcXG5cXG4gICAgLy8gc3BpblxcbiAgICByZ2IgPSB2ZWMzKFxcbiAgICAgICAgZG90KHJnYiwgdV9zcGluX3dlaWdodHMueHl6KSxcXG4gICAgICAgIGRvdChyZ2IsIHVfc3Bpbl93ZWlnaHRzLnp4eSksXFxuICAgICAgICBkb3QocmdiLCB1X3NwaW5fd2VpZ2h0cy55engpKTtcXG5cXG4gICAgLy8gc2F0dXJhdGlvblxcbiAgICBmbG9hdCBhdmVyYWdlID0gKGNvbG9yLnIgKyBjb2xvci5nICsgY29sb3IuYikgLyAzLjA7XFxuICAgIHJnYiArPSAoYXZlcmFnZSAtIHJnYikgKiB1X3NhdHVyYXRpb25fZmFjdG9yO1xcblxcbiAgICAvLyBjb250cmFzdFxcbiAgICByZ2IgPSAocmdiIC0gMC41KSAqIHVfY29udHJhc3RfZmFjdG9yICsgMC41O1xcblxcbiAgICAvLyBicmlnaHRuZXNzXFxuICAgIHZlYzMgdV9oaWdoX3ZlYyA9IHZlYzModV9icmlnaHRuZXNzX2xvdywgdV9icmlnaHRuZXNzX2xvdywgdV9icmlnaHRuZXNzX2xvdyk7XFxuICAgIHZlYzMgdV9sb3dfdmVjID0gdmVjMyh1X2JyaWdodG5lc3NfaGlnaCwgdV9icmlnaHRuZXNzX2hpZ2gsIHVfYnJpZ2h0bmVzc19oaWdoKTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtaXgodV9oaWdoX3ZlYywgdV9sb3dfdmVjLCByZ2IpICogY29sb3IuYSwgY29sb3IuYSk7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcInVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIHZlYzIgdV90bF9wYXJlbnQ7XFxudW5pZm9ybSBmbG9hdCB1X3NjYWxlX3BhcmVudDtcXG51bmlmb3JtIGZsb2F0IHVfYnVmZmVyX3NjYWxlO1xcblxcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfdGV4dHVyZV9wb3M7XFxuXFxudmFyeWluZyB2ZWMyIHZfcG9zMDtcXG52YXJ5aW5nIHZlYzIgdl9wb3MxO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MsIDAsIDEpO1xcbiAgICAvLyBXZSBhcmUgdXNpbmcgSW50MTYgZm9yIHRleHR1cmUgcG9zaXRpb24gY29vcmRpbmF0ZXMgdG8gZ2l2ZSB1cyBlbm91Z2ggcHJlY2lzaW9uIGZvclxcbiAgICAvLyBmcmFjdGlvbmFsIGNvb3JkaW5hdGVzLiBXZSB1c2UgODE5MiB0byBzY2FsZSB0aGUgdGV4dHVyZSBjb29yZGluYXRlcyBpbiB0aGUgYnVmZmVyXFxuICAgIC8vIGFzIGFuIGFyYml0cmFyaWx5IGhpZ2ggbnVtYmVyIHRvIHByZXNlcnZlIGFkZXF1YXRlIHByZWNpc2lvbiB3aGVuIHJlbmRlcmluZy5cXG4gICAgLy8gVGhpcyBpcyBhbHNvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBFWFRFTlQgd2UgYXJlIHVzaW5nIGZvciBvdXIgdGlsZSBidWZmZXIgcG9zIGNvb3JkaW5hdGVzLFxcbiAgICAvLyBzbyBtYXRoIGZvciBtb2RpZnlpbmcgZWl0aGVyIGlzIGNvbnNpc3RlbnQuXFxuICAgIHZfcG9zMCA9ICgoKGFfdGV4dHVyZV9wb3MgLyA4MTkyLjApIC0gMC41KSAvIHVfYnVmZmVyX3NjYWxlICkgKyAwLjU7XFxuICAgIHZfcG9zMSA9ICh2X3BvczAgKiB1X3NjYWxlX3BhcmVudCkgKyB1X3RsX3BhcmVudDtcXG59XFxuXCJ9LHN5bWJvbEljb246e2ZyYWdtZW50U291cmNlOlwidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO1xcbnVuaWZvcm0gc2FtcGxlcjJEIHVfZmFkZXRleHR1cmU7XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG52YXJ5aW5nIHZlYzIgdl90ZXg7XFxudmFyeWluZyB2ZWMyIHZfZmFkZV90ZXg7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG4gICAgbG93cCBmbG9hdCBhbHBoYSA9IHRleHR1cmUyRCh1X2ZhZGV0ZXh0dXJlLCB2X2ZhZGVfdGV4KS5hICogb3BhY2l0eTtcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXgpICogYWxwaGE7XFxuXFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVxcblwiLHZlcnRleFNvdXJjZTpcImNvbnN0IGZsb2F0IFBJID0gMy4xNDE1OTI2NTM1ODk3OTM7XFxuXFxuYXR0cmlidXRlIHZlYzQgYV9wb3Nfb2Zmc2V0O1xcbmF0dHJpYnV0ZSB2ZWM0IGFfZGF0YTtcXG5hdHRyaWJ1dGUgdmVjMyBhX3Byb2plY3RlZF9wb3M7XFxuXFxudW5pZm9ybSBib29sIHVfaXNfc2l6ZV96b29tX2NvbnN0YW50O1xcbnVuaWZvcm0gYm9vbCB1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDtcXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZV90OyAvLyB1c2VkIHRvIGludGVycG9sYXRlIGJldHdlZW4gem9vbSBzdG9wcyB3aGVuIHNpemUgaXMgYSBjb21wb3NpdGUgZnVuY3Rpb25cXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZTsgLy8gdXNlZCB3aGVuIHNpemUgaXMgYm90aCB6b29tIGFuZCBmZWF0dXJlIGNvbnN0YW50XFxudW5pZm9ybSBoaWdocCBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7XFxudW5pZm9ybSBoaWdocCBmbG9hdCB1X3BpdGNoO1xcbnVuaWZvcm0gYm9vbCB1X3JvdGF0ZV9zeW1ib2w7XFxudW5pZm9ybSBoaWdocCBmbG9hdCB1X2FzcGVjdF9yYXRpbztcXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY29sbGlzaW9uX3lfc3RyZXRjaDtcXG5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcblxcbnVuaWZvcm0gbWF0NCB1X21hdHJpeDtcXG51bmlmb3JtIG1hdDQgdV9sYWJlbF9wbGFuZV9tYXRyaXg7XFxudW5pZm9ybSBtYXQ0IHVfZ2xfY29vcmRfbWF0cml4O1xcblxcbnVuaWZvcm0gYm9vbCB1X2lzX3RleHQ7XFxudW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7XFxuXFxudW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTtcXG5cXG52YXJ5aW5nIHZlYzIgdl90ZXg7XFxudmFyeWluZyB2ZWMyIHZfZmFkZV90ZXg7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5cXG4gICAgdmVjMiBhX3BvcyA9IGFfcG9zX29mZnNldC54eTtcXG4gICAgdmVjMiBhX29mZnNldCA9IGFfcG9zX29mZnNldC56dztcXG5cXG4gICAgdmVjMiBhX3RleCA9IGFfZGF0YS54eTtcXG4gICAgdmVjMiBhX3NpemUgPSBhX2RhdGEuenc7XFxuXFxuICAgIGhpZ2hwIHZlYzIgYW5nbGVfbGFiZWxtaW56b29tID0gdW5wYWNrX2Zsb2F0KGFfcHJvamVjdGVkX3Bvc1syXSk7XFxuICAgIGhpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGUgPSAtYW5nbGVfbGFiZWxtaW56b29tWzBdIC8gMjU1LjAgKiAyLjAgKiBQSTtcXG4gICAgbWVkaXVtcCBmbG9hdCBhX2xhYmVsbWluem9vbSA9IGFuZ2xlX2xhYmVsbWluem9vbVsxXTtcXG5cXG4gICAgZmxvYXQgc2l6ZTtcXG4gICAgaWYgKCF1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtcXG4gICAgICAgIHNpemUgPSBtaXgoYV9zaXplWzBdLCBhX3NpemVbMV0sIHVfc2l6ZV90KSAvIDEwLjA7XFxuICAgIH0gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7XFxuICAgICAgICBzaXplID0gYV9zaXplWzBdIC8gMTAuMDtcXG4gICAgfSBlbHNlIGlmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtcXG4gICAgICAgIHNpemUgPSB1X3NpemU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBzaXplID0gdV9zaXplO1xcbiAgICB9XFxuXFxuICAgIHZlYzQgcHJvamVjdGVkUG9pbnQgPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MsIDAsIDEpO1xcbiAgICBoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlID0gcHJvamVjdGVkUG9pbnQudztcXG4gICAgLy8gU2VlIGNvbW1lbnRzIGluIHN5bWJvbF9zZGYudmVydGV4XFxuICAgIGhpZ2hwIGZsb2F0IGRpc3RhbmNlX3JhdGlvID0gdV9waXRjaF93aXRoX21hcCA/XFxuICAgICAgICBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlIC8gdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcXG4gICAgICAgIHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSAvIGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2U7XFxuICAgIGhpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3JhdGlvID0gMC41ICsgMC41ICogZGlzdGFuY2VfcmF0aW87XFxuXFxuICAgIHNpemUgKj0gcGVyc3BlY3RpdmVfcmF0aW87XFxuXFxuICAgIGZsb2F0IGZvbnRTY2FsZSA9IHVfaXNfdGV4dCA/IHNpemUgLyAyNC4wIDogc2l6ZTtcXG5cXG4gICAgaGlnaHAgZmxvYXQgc3ltYm9sX3JvdGF0aW9uID0gMC4wO1xcbiAgICBpZiAodV9yb3RhdGVfc3ltYm9sKSB7XFxuICAgICAgICAvLyBTZWUgY29tbWVudHMgaW4gc3ltYm9sX3NkZi52ZXJ0ZXhcXG4gICAgICAgIHZlYzQgb2Zmc2V0UHJvamVjdGVkUG9pbnQgPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MgKyB2ZWMyKDEsIDApLCAwLCAxKTtcXG5cXG4gICAgICAgIHZlYzIgYSA9IHByb2plY3RlZFBvaW50Lnh5IC8gcHJvamVjdGVkUG9pbnQudztcXG4gICAgICAgIHZlYzIgYiA9IG9mZnNldFByb2plY3RlZFBvaW50Lnh5IC8gb2Zmc2V0UHJvamVjdGVkUG9pbnQudztcXG5cXG4gICAgICAgIHN5bWJvbF9yb3RhdGlvbiA9IGF0YW4oKGIueSAtIGEueSkgLyB1X2FzcGVjdF9yYXRpbywgYi54IC0gYS54KTtcXG4gICAgfVxcblxcbiAgICBoaWdocCBmbG9hdCBhbmdsZV9zaW4gPSBzaW4oc2VnbWVudF9hbmdsZSArIHN5bWJvbF9yb3RhdGlvbik7XFxuICAgIGhpZ2hwIGZsb2F0IGFuZ2xlX2NvcyA9IGNvcyhzZWdtZW50X2FuZ2xlICsgc3ltYm9sX3JvdGF0aW9uKTtcXG4gICAgbWF0MiByb3RhdGlvbl9tYXRyaXggPSBtYXQyKGFuZ2xlX2NvcywgLTEuMCAqIGFuZ2xlX3NpbiwgYW5nbGVfc2luLCBhbmdsZV9jb3MpO1xcblxcbiAgICB2ZWM0IHByb2plY3RlZF9wb3MgPSB1X2xhYmVsX3BsYW5lX21hdHJpeCAqIHZlYzQoYV9wcm9qZWN0ZWRfcG9zLnh5LCAwLjAsIDEuMCk7XFxuICAgIGdsX1Bvc2l0aW9uID0gdV9nbF9jb29yZF9tYXRyaXggKiB2ZWM0KHByb2plY3RlZF9wb3MueHkgLyBwcm9qZWN0ZWRfcG9zLncgKyByb3RhdGlvbl9tYXRyaXggKiAoYV9vZmZzZXQgLyA2NC4wICogZm9udFNjYWxlKSwgMC4wLCAxLjApO1xcblxcbiAgICB2X3RleCA9IGFfdGV4IC8gdV90ZXhzaXplO1xcbiAgICAvLyBTZWUgY29tbWVudHMgaW4gc3ltYm9sX3NkZi52ZXJ0ZXhcXG4gICAgaGlnaHAgZmxvYXQgaW5jaWRlbmNlX3N0cmV0Y2ggID0gY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZSAvICh1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UgKiBjb3ModV9waXRjaCkpO1xcbiAgICBoaWdocCBmbG9hdCBjb2xsaXNpb25fYWRqdXN0bWVudCA9IG1heCgxLjAsIGluY2lkZW5jZV9zdHJldGNoIC8gdV9jb2xsaXNpb25feV9zdHJldGNoKTtcXG5cXG4gICAgaGlnaHAgZmxvYXQgY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvID0gMS4wICsgMC41KigoY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZSAvIHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSkgLSAxLjApO1xcbiAgICBoaWdocCBmbG9hdCBwZXJzcGVjdGl2ZV96b29tX2FkanVzdCA9IGZsb29yKGxvZzIoY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvICogY29sbGlzaW9uX2FkanVzdG1lbnQpICogMTAuMCk7XFxuICAgIHZfZmFkZV90ZXggPSB2ZWMyKChhX2xhYmVsbWluem9vbSArIHBlcnNwZWN0aXZlX3pvb21fYWRqdXN0KSAvIDI1NS4wLCAwLjApO1xcbn1cXG5cIn0sc3ltYm9sU0RGOntmcmFnbWVudFNvdXJjZTpcIiNkZWZpbmUgU0RGX1BYIDguMFxcbiNkZWZpbmUgRURHRV9HQU1NQSAwLjEwNS9ERVZJQ0VfUElYRUxfUkFUSU9cXG5cXG51bmlmb3JtIGJvb2wgdV9pc19oYWxvO1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGhhbG9fY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTtcXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ZhZGV0ZXh0dXJlO1xcbnVuaWZvcm0gaGlnaHAgZmxvYXQgdV9nYW1tYV9zY2FsZTtcXG51bmlmb3JtIGJvb2wgdV9pc190ZXh0O1xcblxcbnZhcnlpbmcgdmVjNCB2X2RhdGEwO1xcbnZhcnlpbmcgdmVjMiB2X2RhdGExO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxuXFxuICAgIHZlYzIgdGV4ID0gdl9kYXRhMC54eTtcXG4gICAgdmVjMiBmYWRlX3RleCA9IHZfZGF0YTAuenc7XFxuICAgIGZsb2F0IGdhbW1hX3NjYWxlID0gdl9kYXRhMS54O1xcbiAgICBmbG9hdCBzaXplID0gdl9kYXRhMS55O1xcblxcbiAgICBmbG9hdCBmb250U2NhbGUgPSB1X2lzX3RleHQgPyBzaXplIC8gMjQuMCA6IHNpemU7XFxuXFxuICAgIGxvd3AgdmVjNCBjb2xvciA9IGZpbGxfY29sb3I7XFxuICAgIGhpZ2hwIGZsb2F0IGdhbW1hID0gRURHRV9HQU1NQSAvIChmb250U2NhbGUgKiB1X2dhbW1hX3NjYWxlKTtcXG4gICAgbG93cCBmbG9hdCBidWZmID0gKDI1Ni4wIC0gNjQuMCkgLyAyNTYuMDtcXG4gICAgaWYgKHVfaXNfaGFsbykge1xcbiAgICAgICAgY29sb3IgPSBoYWxvX2NvbG9yO1xcbiAgICAgICAgZ2FtbWEgPSAoaGFsb19ibHVyICogMS4xOSAvIFNERl9QWCArIEVER0VfR0FNTUEpIC8gKGZvbnRTY2FsZSAqIHVfZ2FtbWFfc2NhbGUpO1xcbiAgICAgICAgYnVmZiA9ICg2LjAgLSBoYWxvX3dpZHRoIC8gZm9udFNjYWxlKSAvIFNERl9QWDtcXG4gICAgfVxcblxcbiAgICBsb3dwIGZsb2F0IGRpc3QgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB0ZXgpLmE7XFxuICAgIGxvd3AgZmxvYXQgZmFkZV9hbHBoYSA9IHRleHR1cmUyRCh1X2ZhZGV0ZXh0dXJlLCBmYWRlX3RleCkuYTtcXG4gICAgaGlnaHAgZmxvYXQgZ2FtbWFfc2NhbGVkID0gZ2FtbWEgKiBnYW1tYV9zY2FsZTtcXG4gICAgaGlnaHAgZmxvYXQgYWxwaGEgPSBzbW9vdGhzdGVwKGJ1ZmYgLSBnYW1tYV9zY2FsZWQsIGJ1ZmYgKyBnYW1tYV9zY2FsZWQsIGRpc3QpICogZmFkZV9hbHBoYTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3IgKiAoYWxwaGEgKiBvcGFjaXR5KTtcXG5cXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XFxuXCIsdmVydGV4U291cmNlOlwiY29uc3QgZmxvYXQgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MztcXG5cXG5hdHRyaWJ1dGUgdmVjNCBhX3Bvc19vZmZzZXQ7XFxuYXR0cmlidXRlIHZlYzQgYV9kYXRhO1xcbmF0dHJpYnV0ZSB2ZWMzIGFfcHJvamVjdGVkX3BvcztcXG5cXG4vLyBjb250ZW50cyBvZiBhX3NpemUgdmFyeSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBwcm9wZXJ0eSB2YWx1ZVxcbi8vIHVzZWQgZm9yIHt0ZXh0LGljb259LXNpemUuXFxuLy8gRm9yIGNvbnN0YW50cywgYV9zaXplIGlzIGRpc2FibGVkLlxcbi8vIEZvciBzb3VyY2UgZnVuY3Rpb25zLCB3ZSBiaW5kIG9ubHkgb25lIHZhbHVlIHBlciB2ZXJ0ZXg6IHRoZSB2YWx1ZSBvZiB7dGV4dCxpY29ufS1zaXplIGV2YWx1YXRlZCBmb3IgdGhlIGN1cnJlbnQgZmVhdHVyZS5cXG4vLyBGb3IgY29tcG9zaXRlIGZ1bmN0aW9uczpcXG4vLyBbIHRleHQtc2l6ZShsb3dlclpvb21TdG9wLCBmZWF0dXJlKSxcXG4vLyAgIHRleHQtc2l6ZSh1cHBlclpvb21TdG9wLCBmZWF0dXJlKSBdXFxudW5pZm9ybSBib29sIHVfaXNfc2l6ZV96b29tX2NvbnN0YW50O1xcbnVuaWZvcm0gYm9vbCB1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDtcXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZV90OyAvLyB1c2VkIHRvIGludGVycG9sYXRlIGJldHdlZW4gem9vbSBzdG9wcyB3aGVuIHNpemUgaXMgYSBjb21wb3NpdGUgZnVuY3Rpb25cXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZTsgLy8gdXNlZCB3aGVuIHNpemUgaXMgYm90aCB6b29tIGFuZCBmZWF0dXJlIGNvbnN0YW50XFxuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxuXFxudW5pZm9ybSBtYXQ0IHVfbWF0cml4O1xcbnVuaWZvcm0gbWF0NCB1X2xhYmVsX3BsYW5lX21hdHJpeDtcXG51bmlmb3JtIG1hdDQgdV9nbF9jb29yZF9tYXRyaXg7XFxuXFxudW5pZm9ybSBib29sIHVfaXNfdGV4dDtcXG51bmlmb3JtIGJvb2wgdV9waXRjaF93aXRoX21hcDtcXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcGl0Y2g7XFxudW5pZm9ybSBib29sIHVfcm90YXRlX3N5bWJvbDtcXG51bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYXNwZWN0X3JhdGlvO1xcbnVuaWZvcm0gaGlnaHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO1xcbnVuaWZvcm0gaGlnaHAgZmxvYXQgdV9jb2xsaXNpb25feV9zdHJldGNoO1xcblxcbnVuaWZvcm0gdmVjMiB1X3RleHNpemU7XFxuXFxudmFyeWluZyB2ZWM0IHZfZGF0YTA7XFxudmFyeWluZyB2ZWMyIHZfZGF0YTE7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXFxuICAgICNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiAgICAjcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcXG4gICAgI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX2JsdXJcXG5cXG4gICAgdmVjMiBhX3BvcyA9IGFfcG9zX29mZnNldC54eTtcXG4gICAgdmVjMiBhX29mZnNldCA9IGFfcG9zX29mZnNldC56dztcXG5cXG4gICAgdmVjMiBhX3RleCA9IGFfZGF0YS54eTtcXG4gICAgdmVjMiBhX3NpemUgPSBhX2RhdGEuenc7XFxuXFxuICAgIGhpZ2hwIHZlYzIgYW5nbGVfbGFiZWxtaW56b29tID0gdW5wYWNrX2Zsb2F0KGFfcHJvamVjdGVkX3Bvc1syXSk7XFxuICAgIGhpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGUgPSAtYW5nbGVfbGFiZWxtaW56b29tWzBdIC8gMjU1LjAgKiAyLjAgKiBQSTtcXG4gICAgbWVkaXVtcCBmbG9hdCBhX2xhYmVsbWluem9vbSA9IGFuZ2xlX2xhYmVsbWluem9vbVsxXTtcXG4gICAgZmxvYXQgc2l6ZTtcXG5cXG4gICAgaWYgKCF1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtcXG4gICAgICAgIHNpemUgPSBtaXgoYV9zaXplWzBdLCBhX3NpemVbMV0sIHVfc2l6ZV90KSAvIDEwLjA7XFxuICAgIH0gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7XFxuICAgICAgICBzaXplID0gYV9zaXplWzBdIC8gMTAuMDtcXG4gICAgfSBlbHNlIGlmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtcXG4gICAgICAgIHNpemUgPSB1X3NpemU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBzaXplID0gdV9zaXplO1xcbiAgICB9XFxuXFxuICAgIHZlYzQgcHJvamVjdGVkUG9pbnQgPSB1X21hdHJpeCAqIHZlYzQoYV9wb3MsIDAsIDEpO1xcbiAgICBoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlID0gcHJvamVjdGVkUG9pbnQudztcXG4gICAgLy8gSWYgdGhlIGxhYmVsIGlzIHBpdGNoZWQgd2l0aCB0aGUgbWFwLCBsYXlvdXQgaXMgZG9uZSBpbiBwaXRjaGVkIHNwYWNlLFxcbiAgICAvLyB3aGljaCBtYWtlcyBsYWJlbHMgaW4gdGhlIGRpc3RhbmNlIHNtYWxsZXIgcmVsYXRpdmUgdG8gdmlld3BvcnQgc3BhY2UuXFxuICAgIC8vIFdlIGNvdW50ZXJhY3QgcGFydCBvZiB0aGF0IGVmZmVjdCBieSBtdWx0aXBseWluZyBieSB0aGUgcGVyc3BlY3RpdmUgcmF0aW8uXFxuICAgIC8vIElmIHRoZSBsYWJlbCBpc24ndCBwaXRjaGVkIHdpdGggdGhlIG1hcCwgd2UgZG8gbGF5b3V0IGluIHZpZXdwb3J0IHNwYWNlLFxcbiAgICAvLyB3aGljaCBtYWtlcyBsYWJlbHMgaW4gdGhlIGRpc3RhbmNlIGxhcmdlciByZWxhdGl2ZSB0byB0aGUgZmVhdHVyZXMgYXJvdW5kXFxuICAgIC8vIHRoZW0uIFdlIGNvdW50ZXJhY3QgcGFydCBvZiB0aGF0IGVmZmVjdCBieSBkaXZpZGluZyBieSB0aGUgcGVyc3BlY3RpdmUgcmF0aW8uXFxuICAgIGhpZ2hwIGZsb2F0IGRpc3RhbmNlX3JhdGlvID0gdV9waXRjaF93aXRoX21hcCA/XFxuICAgICAgICBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlIC8gdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcXG4gICAgICAgIHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSAvIGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2U7XFxuICAgIGhpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3JhdGlvID0gMC41ICsgMC41ICogZGlzdGFuY2VfcmF0aW87XFxuXFxuICAgIHNpemUgKj0gcGVyc3BlY3RpdmVfcmF0aW87XFxuXFxuICAgIGZsb2F0IGZvbnRTY2FsZSA9IHVfaXNfdGV4dCA/IHNpemUgLyAyNC4wIDogc2l6ZTtcXG5cXG4gICAgaGlnaHAgZmxvYXQgc3ltYm9sX3JvdGF0aW9uID0gMC4wO1xcbiAgICBpZiAodV9yb3RhdGVfc3ltYm9sKSB7XFxuICAgICAgICAvLyBQb2ludCBsYWJlbHMgd2l0aCAncm90YXRpb24tYWxpZ25tZW50OiBtYXAnIGFyZSBob3Jpem9udGFsIHdpdGggcmVzcGVjdCB0byB0aWxlIHVuaXRzXFxuICAgICAgICAvLyBUbyBmaWd1cmUgb3V0IHRoYXQgYW5nbGUgaW4gcHJvamVjdGVkIHNwYWNlLCB3ZSBkcmF3IGEgc2hvcnQgaG9yaXpvbnRhbCBsaW5lIGluIHRpbGVcXG4gICAgICAgIC8vIHNwYWNlLCBwcm9qZWN0IGl0LCBhbmQgbWVhc3VyZSBpdHMgYW5nbGUgaW4gcHJvamVjdGVkIHNwYWNlLlxcbiAgICAgICAgdmVjNCBvZmZzZXRQcm9qZWN0ZWRQb2ludCA9IHVfbWF0cml4ICogdmVjNChhX3BvcyArIHZlYzIoMSwgMCksIDAsIDEpO1xcblxcbiAgICAgICAgdmVjMiBhID0gcHJvamVjdGVkUG9pbnQueHkgLyBwcm9qZWN0ZWRQb2ludC53O1xcbiAgICAgICAgdmVjMiBiID0gb2Zmc2V0UHJvamVjdGVkUG9pbnQueHkgLyBvZmZzZXRQcm9qZWN0ZWRQb2ludC53O1xcblxcbiAgICAgICAgc3ltYm9sX3JvdGF0aW9uID0gYXRhbigoYi55IC0gYS55KSAvIHVfYXNwZWN0X3JhdGlvLCBiLnggLSBhLngpO1xcbiAgICB9XFxuXFxuICAgIGhpZ2hwIGZsb2F0IGFuZ2xlX3NpbiA9IHNpbihzZWdtZW50X2FuZ2xlICsgc3ltYm9sX3JvdGF0aW9uKTtcXG4gICAgaGlnaHAgZmxvYXQgYW5nbGVfY29zID0gY29zKHNlZ21lbnRfYW5nbGUgKyBzeW1ib2xfcm90YXRpb24pO1xcbiAgICBtYXQyIHJvdGF0aW9uX21hdHJpeCA9IG1hdDIoYW5nbGVfY29zLCAtMS4wICogYW5nbGVfc2luLCBhbmdsZV9zaW4sIGFuZ2xlX2Nvcyk7XFxuXFxuICAgIHZlYzQgcHJvamVjdGVkX3BvcyA9IHVfbGFiZWxfcGxhbmVfbWF0cml4ICogdmVjNChhX3Byb2plY3RlZF9wb3MueHksIDAuMCwgMS4wKTtcXG4gICAgZ2xfUG9zaXRpb24gPSB1X2dsX2Nvb3JkX21hdHJpeCAqIHZlYzQocHJvamVjdGVkX3Bvcy54eSAvIHByb2plY3RlZF9wb3MudyArIHJvdGF0aW9uX21hdHJpeCAqIChhX29mZnNldCAvIDY0LjAgKiBmb250U2NhbGUpLCAwLjAsIDEuMCk7XFxuICAgIGZsb2F0IGdhbW1hX3NjYWxlID0gZ2xfUG9zaXRpb24udztcXG5cXG4gICAgdmVjMiB0ZXggPSBhX3RleCAvIHVfdGV4c2l6ZTtcXG4gICAgLy8gaW5jaWRlbmNlX3N0cmV0Y2ggaXMgdGhlIHJhdGlvIG9mIGhvdyBtdWNoIHkgc3BhY2UgYSBsYWJlbCB0YWtlcyB1cCBvbiBhIHRpbGUgd2hpbGUgZHJhd24gcGVycGVuZGljdWxhciB0byB0aGUgdmlld3BvcnQgdnNcXG4gICAgLy8gIGhvdyBtdWNoIHNwYWNlIGl0IHdvdWxkIHRha2UgdXAgaWYgaXQgd2VyZSBkcmF3biBmbGF0IG9uIHRoZSB0aWxlXFxuICAgIC8vIFVzaW5nIGxhdyBvZiBzaW5lcywgY2FtZXJhX3RvX2FuY2hvci9zaW4oZ3JvdW5kX2FuZ2xlKSA9IGNhbWVyYV90b19jZW50ZXIvc2luKGluY2lkZW5jZV9hbmdsZSlcXG4gICAgLy8gc2luKGluY2lkZW5jZV9hbmdsZSkgPSAxL2luY2lkZW5jZV9zdHJldGNoXFxuICAgIC8vIEluY2lkZW5jZSBhbmdsZSA5MCAtPiBoZWFkIG9uLCBzaW4oaW5jaWRlbmNlX2FuZ2xlKSA9IDEsIG5vIGluY2lkZW5jZSBzdHJldGNoXFxuICAgIC8vIEluY2lkZW5jZSBhbmdsZSAxIC0+IHZlcnkgb2JsaXF1ZSwgc2luKGluY2lkZW5jZV9hbmdsZSkgPX4gMCwgbG90cyBvZiBpbmNpZGVuY2Ugc3RyZXRjaFxcbiAgICAvLyBncm91bmRfYW5nbGUgPSB1X3BpdGNoICsgUEkvMiAtPiBzaW4oZ3JvdW5kX2FuZ2xlKSA9IGNvcyh1X3BpdGNoKVxcbiAgICAvLyBUaGlzIDJEIGNhbGN1bGF0aW9uIGlzIG9ubHkgZXhhY3RseSBjb3JyZWN0IHdoZW4gZ2xfUG9zaXRpb24ueCBpcyBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCxcXG4gICAgLy8gIGJ1dCBpdCdzIGEgY2xvc2UgZW5vdWdoIGFwcHJveGltYXRpb24gZm9yIG91ciBwdXJwb3Nlc1xcbiAgICBoaWdocCBmbG9hdCBpbmNpZGVuY2Vfc3RyZXRjaCAgPSBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlIC8gKHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSAqIGNvcyh1X3BpdGNoKSk7XFxuICAgIC8vIGluY2lkZW5jZV9zdHJldGNoIG9ubHkgYXBwbGllcyB0byB0aGUgeS1heGlzLCBidXQgd2l0aG91dCByZS1jYWxjdWxhdGluZyB0aGUgY29sbGlzaW9uIHRpbGUsIHdlIGNhbid0XFxuICAgIC8vIGFkanVzdCB0aGUgc2l6ZSBvZiBvbmx5IG9uZSBheGlzLiBTbywgd2UgZG8gYSBjcnVkZSBhcHByb3hpbWF0aW9uIGF0IHBsYWNlbWVudCB0aW1lIHRvIGdldCB0aGUgYXNwZWN0IHJhdGlvXFxuICAgIC8vIGFib3V0IHJpZ2h0LCBhbmQgdGhlbiBkbyB0aGUgcmVzdCBvZiB0aGUgYWRqdXN0bWVudCBoZXJlOiB0aGVyZSB3aWxsIGJlIHNvbWUgZXh0cmEgcGFkZGluZyBvbiB0aGUgeC1heGlzLFxcbiAgICAvLyBidXQgaG9wZWZ1bGx5IG5vdCB0b28gbXVjaC5cXG4gICAgLy8gTmV2ZXIgbWFrZSB0aGUgYWRqdXN0bWVudCBsZXNzIHRoYW4gMS4wOiBpbnN0ZWFkIG9mIGFsbG93aW5nIGNvbGxpc2lvbnMgb24gdGhlIHgtYXhpcywgYmUgY29uc2VydmF0aXZlIG9uXFxuICAgIC8vIHRoZSB5LWF4aXMuXFxuICAgIGhpZ2hwIGZsb2F0IGNvbGxpc2lvbl9hZGp1c3RtZW50ID0gbWF4KDEuMCwgaW5jaWRlbmNlX3N0cmV0Y2ggLyB1X2NvbGxpc2lvbl95X3N0cmV0Y2gpO1xcblxcbiAgICAvLyBGbG9vciB0byAxLzEwdGggem9vbSB0byBkb2RnZSBwcmVjaXNpb24gaXNzdWVzIHRoYXQgY2FuIGNhdXNlIHBhcnRpYWxseSBoaWRkZW4gbGFiZWxzXFxuICAgIGhpZ2hwIGZsb2F0IGNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbyA9IDEuMCArIDAuNSooKGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UgLyB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpIC0gMS4wKTtcXG4gICAgaGlnaHAgZmxvYXQgcGVyc3BlY3RpdmVfem9vbV9hZGp1c3QgPSBmbG9vcihsb2cyKGNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbyAqIGNvbGxpc2lvbl9hZGp1c3RtZW50KSAqIDEwLjApO1xcbiAgICB2ZWMyIGZhZGVfdGV4ID0gdmVjMigoYV9sYWJlbG1pbnpvb20gKyBwZXJzcGVjdGl2ZV96b29tX2FkanVzdCkgLyAyNTUuMCwgMC4wKTtcXG5cXG4gICAgdl9kYXRhMCA9IHZlYzQodGV4LngsIHRleC55LCBmYWRlX3RleC54LCBmYWRlX3RleC55KTtcXG4gICAgdl9kYXRhMSA9IHZlYzIoZ2FtbWFfc2NhbGUsIHNpemUpO1xcbn1cXG5cIn19LHJlPS8jcHJhZ21hIG1hcGJveDogKFtcXHddKykgKFtcXHddKykgKFtcXHddKykgKFtcXHddKykvZyxsb29wPWZ1bmN0aW9uKGUpe3ZhciBuPXNoYWRlcnNbZV0sYT17fTtuLmZyYWdtZW50U291cmNlPW4uZnJhZ21lbnRTb3VyY2UucmVwbGFjZShyZSxmdW5jdGlvbihlLG4sbyx0LGkpe3JldHVybiBhW2ldPSEwLFwiZGVmaW5lXCI9PT1uP1wiXFxuI2lmbmRlZiBIQVNfVU5JRk9STV91X1wiK2krXCJcXG52YXJ5aW5nIFwiK28rXCIgXCIrdCtcIiBcIitpK1wiO1xcbiNlbHNlXFxudW5pZm9ybSBcIitvK1wiIFwiK3QrXCIgdV9cIitpK1wiO1xcbiNlbmRpZlxcblwiOlwiXFxuI2lmZGVmIEhBU19VTklGT1JNX3VfXCIraStcIlxcbiAgICBcIitvK1wiIFwiK3QrXCIgXCIraStcIiA9IHVfXCIraStcIjtcXG4jZW5kaWZcXG5cIn0pLG4udmVydGV4U291cmNlPW4udmVydGV4U291cmNlLnJlcGxhY2UocmUsZnVuY3Rpb24oZSxuLG8sdCxpKXt2YXIgcj1cImZsb2F0XCI9PT10P1widmVjMlwiOlwidmVjNFwiO3JldHVybiBhW2ldP1wiZGVmaW5lXCI9PT1uP1wiXFxuI2lmbmRlZiBIQVNfVU5JRk9STV91X1wiK2krXCJcXG51bmlmb3JtIGxvd3AgZmxvYXQgYV9cIitpK1wiX3Q7XFxuYXR0cmlidXRlIFwiK28rXCIgXCIrcitcIiBhX1wiK2krXCI7XFxudmFyeWluZyBcIitvK1wiIFwiK3QrXCIgXCIraStcIjtcXG4jZWxzZVxcbnVuaWZvcm0gXCIrbytcIiBcIit0K1wiIHVfXCIraStcIjtcXG4jZW5kaWZcXG5cIjpcIlxcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV9cIitpK1wiXFxuICAgIFwiK2krXCIgPSB1bnBhY2tfbWl4X1wiK3IrXCIoYV9cIitpK1wiLCBhX1wiK2krXCJfdCk7XFxuI2Vsc2VcXG4gICAgXCIrbytcIiBcIit0K1wiIFwiK2krXCIgPSB1X1wiK2krXCI7XFxuI2VuZGlmXFxuXCI6XCJkZWZpbmVcIj09PW4/XCJcXG4jaWZuZGVmIEhBU19VTklGT1JNX3VfXCIraStcIlxcbnVuaWZvcm0gbG93cCBmbG9hdCBhX1wiK2krXCJfdDtcXG5hdHRyaWJ1dGUgXCIrbytcIiBcIityK1wiIGFfXCIraStcIjtcXG4jZWxzZVxcbnVuaWZvcm0gXCIrbytcIiBcIit0K1wiIHVfXCIraStcIjtcXG4jZW5kaWZcXG5cIjpcIlxcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV9cIitpK1wiXFxuICAgIFwiK28rXCIgXCIrdCtcIiBcIitpK1wiID0gdW5wYWNrX21peF9cIityK1wiKGFfXCIraStcIiwgYV9cIitpK1wiX3QpO1xcbiNlbHNlXFxuICAgIFwiK28rXCIgXCIrdCtcIiBcIitpK1wiID0gdV9cIitpK1wiO1xcbiNlbmRpZlxcblwifSl9O2Zvcih2YXIgcHJvZ3JhbU5hbWUgaW4gc2hhZGVycylsb29wKHByb2dyYW1OYW1lKTttb2R1bGUuZXhwb3J0cz1zaGFkZXJzO1xufSx7fV0sODc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIEltYWdlU291cmNlPV9kZXJlcV8oXCIuL2ltYWdlX3NvdXJjZVwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uL3V0aWwvd2luZG93XCIpLENhbnZhc1NvdXJjZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBpKGksYSxlLHMpe3QuY2FsbCh0aGlzLGksYSxlLHMpLHRoaXMub3B0aW9ucz1hLHRoaXMuYW5pbWF0ZT12b2lkIDA9PT1hLmFuaW1hdGV8fGEuYW5pbWF0ZX1yZXR1cm4gdCYmKGkuX19wcm90b19fPXQpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWksaS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3RoaXMuY2FudmFzPXRoaXMuY2FudmFzfHx3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLmNhbnZhcyk7dmFyIHQ9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCh0aGlzLm9wdGlvbnMuY29udGV4dFR5cGUpO2lmKCF0KXJldHVybiB0aGlzLmZpcmUoXCJlcnJvclwiLG5ldyBFcnJvcihcIkNhbnZhcyBjb250ZXh0IG5vdCBmb3VuZC5cIikpO2lmKHRoaXMuY29udGV4dD10LHRoaXMud2lkdGg9dGhpcy5jYW52YXMud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5jYW52YXMuaGVpZ2h0LHRoaXMuX2hhc0ludmFsaWREaW1lbnNpb25zKCkpcmV0dXJuIHRoaXMuZmlyZShcImVycm9yXCIsbmV3IEVycm9yKFwiQ2FudmFzIGRpbWVuc2lvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLlwiKSk7dmFyIGk7dGhpcy5wbGF5PWZ1bmN0aW9uKCl7dm9pZCAwPT09aSYmKGk9dGhpcy5tYXAuc3R5bGUuYW5pbWF0aW9uTG9vcC5zZXQoMS8wKSx0aGlzLm1hcC5fcmVyZW5kZXIoKSl9LHRoaXMucGF1c2U9ZnVuY3Rpb24oKXt2b2lkIDAhPT1pJiYoaT10aGlzLm1hcC5zdHlsZS5hbmltYXRpb25Mb29wLmNhbmNlbChpKSl9LHRoaXMuX2ZpbmlzaExvYWRpbmcoKX0saS5wcm90b3R5cGUuZ2V0Q2FudmFzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FudmFzfSxpLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcD10LHRoaXMubG9hZCgpLHRoaXMuY2FudmFzJiZ0aGlzLmFuaW1hdGUmJnRoaXMucGxheSgpfSxpLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbigpe3RoaXMucGF1c2UoKX0saS5wcm90b3R5cGUucmVhZENhbnZhcz1mdW5jdGlvbih0KXt2YXIgaT10aGlzO2lmKHRoaXMuY29udGV4dCBpbnN0YW5jZW9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCl0aGlzLmNhbnZhc0RhdGE9dGhpcy5jb250ZXh0LmdldEltYWdlRGF0YSgwLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7ZWxzZSBpZih0aGlzLmNvbnRleHQgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpe3ZhciBhPXRoaXMuY29udGV4dCxlPW5ldyBVaW50OEFycmF5KHRoaXMud2lkdGgqdGhpcy5oZWlnaHQqNCk7YS5yZWFkUGl4ZWxzKDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LGEuUkdCQSxhLlVOU0lHTkVEX0JZVEUsZSksdGhpcy5zZWNvbmRhcnlDb250ZXh0fHwodGhpcy5zZWNvbmRhcnlDb250ZXh0PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLmdldENvbnRleHQoXCIyZFwiKSksdGhpcy5jYW52YXNEYXRhJiYhdHx8KHRoaXMuY2FudmFzRGF0YT10aGlzLnNlY29uZGFyeUNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKTtmb3IodmFyIHM9dGhpcy5oZWlnaHQtMSxuPTA7cz49MDtzLS0sbisrKWkuY2FudmFzRGF0YS5kYXRhLnNldChlLnN1YmFycmF5KHMqaS53aWR0aCo0LChzKzEpKmkud2lkdGgqNCksbippLndpZHRoKjQpfX0saS5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe3ZhciB0PSExO2lmKHRoaXMuY2FudmFzLndpZHRoIT09dGhpcy53aWR0aCYmKHRoaXMud2lkdGg9dGhpcy5jYW52YXMud2lkdGgsdD0hMCksdGhpcy5jYW52YXMuaGVpZ2h0IT09dGhpcy5oZWlnaHQmJih0aGlzLmhlaWdodD10aGlzLmNhbnZhcy5oZWlnaHQsdD0hMCksIXRoaXMuX2hhc0ludmFsaWREaW1lbnNpb25zKCkmJjAhPT1PYmplY3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGgpe2lmKCh0aGlzLmFuaW1hdGV8fCF0aGlzLmNhbnZhc0RhdGF8fHQpJiZ0aGlzLnJlYWRDYW52YXModCksIXRoaXMuY2FudmFzRGF0YSlyZXR1cm4gdm9pZCB0aGlzLmZpcmUoXCJlcnJvclwiLG5ldyBFcnJvcihcIkNvdWxkIG5vdCByZWFkIGNhbnZhcyBkYXRhLlwiKSk7dGhpcy5fcHJlcGFyZUltYWdlKHRoaXMubWFwLnBhaW50ZXIuZ2wsdGhpcy5jYW52YXNEYXRhLHQpfX0saS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJjYW52YXNcIixjYW52YXM6dGhpcy5jYW52YXMsY29vcmRpbmF0ZXM6dGhpcy5jb29yZGluYXRlc319LGkucHJvdG90eXBlLl9oYXNJbnZhbGlkRGltZW5zaW9ucz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGk9MCxhPVt0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHRdO2k8YS5sZW5ndGg7aSs9MSl7dmFyIGU9YVtpXTtpZihpc05hTihlKXx8ZTw9MClyZXR1cm4hMH1yZXR1cm4hMX0saX0oSW1hZ2VTb3VyY2UpO21vZHVsZS5leHBvcnRzPUNhbnZhc1NvdXJjZTtcbn0se1wiLi4vdXRpbC93aW5kb3dcIjoyMDQsXCIuL2ltYWdlX3NvdXJjZVwiOjkxfV0sODg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcmVzb2x2ZVVSTCh0KXt2YXIgZT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7cmV0dXJuIGUuaHJlZj10LGUuaHJlZn12YXIgRXZlbnRlZD1fZGVyZXFfKFwiLi4vdXRpbC9ldmVudGVkXCIpLHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uL3V0aWwvd2luZG93XCIpLEVYVEVOVD1fZGVyZXFfKFwiLi4vZGF0YS9leHRlbnRcIiksUmVzb3VyY2VUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2FqYXhcIikuUmVzb3VyY2VUeXBlLGJyb3dzZXI9X2RlcmVxXyhcIi4uL3V0aWwvYnJvd3NlclwiKSxHZW9KU09OU291cmNlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxvLHIsaSl7dC5jYWxsKHRoaXMpLHRoaXMuaWQ9ZSx0aGlzLnR5cGU9XCJnZW9qc29uXCIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTE4LHRoaXMudGlsZVNpemU9NTEyLHRoaXMuaXNUaWxlQ2xpcHBlZD0hMCx0aGlzLnJlcGFyc2VPdmVyc2NhbGVkPSEwLHRoaXMuZGlzcGF0Y2hlcj1yLHRoaXMuc2V0RXZlbnRlZFBhcmVudChpKSx0aGlzLl9kYXRhPW8uZGF0YSx0aGlzLl9vcHRpb25zPXV0aWwuZXh0ZW5kKHt9LG8pLHZvaWQgMCE9PW8ubWF4em9vbSYmKHRoaXMubWF4em9vbT1vLm1heHpvb20pLG8udHlwZSYmKHRoaXMudHlwZT1vLnR5cGUpO3ZhciBhPUVYVEVOVC90aGlzLnRpbGVTaXplO3RoaXMud29ya2VyT3B0aW9ucz11dGlsLmV4dGVuZCh7c291cmNlOnRoaXMuaWQsY2x1c3RlcjpvLmNsdXN0ZXJ8fCExLGdlb2pzb25WdE9wdGlvbnM6e2J1ZmZlcjoodm9pZCAwIT09by5idWZmZXI/by5idWZmZXI6MTI4KSphLHRvbGVyYW5jZToodm9pZCAwIT09by50b2xlcmFuY2U/by50b2xlcmFuY2U6LjM3NSkqYSxleHRlbnQ6RVhURU5ULG1heFpvb206dGhpcy5tYXh6b29tfSxzdXBlcmNsdXN0ZXJPcHRpb25zOnttYXhab29tOnZvaWQgMCE9PW8uY2x1c3Rlck1heFpvb20/TWF0aC5taW4oby5jbHVzdGVyTWF4Wm9vbSx0aGlzLm1heHpvb20tMSk6dGhpcy5tYXh6b29tLTEsZXh0ZW50OkVYVEVOVCxyYWRpdXM6KG8uY2x1c3RlclJhZGl1c3x8NTApKmEsbG9nOiExfX0sby53b3JrZXJPcHRpb25zKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5maXJlKFwiZGF0YWxvYWRpbmdcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIn0pLHRoaXMuX3VwZGF0ZVdvcmtlckRhdGEoZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4gdm9pZCB0LmZpcmUoXCJlcnJvclwiLHtlcnJvcjplfSk7dC5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwibWV0YWRhdGFcIn0pfSl9LGUucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCl9LGUucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fZGF0YT10LHRoaXMuZmlyZShcImRhdGFsb2FkaW5nXCIse2RhdGFUeXBlOlwic291cmNlXCJ9KSx0aGlzLl91cGRhdGVXb3JrZXJEYXRhKGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIGUuZmlyZShcImVycm9yXCIse2Vycm9yOnR9KTtlLmZpcmUoXCJkYXRhXCIse2RhdGFUeXBlOlwic291cmNlXCIsc291cmNlRGF0YVR5cGU6XCJjb250ZW50XCJ9KX0pLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGVXb3JrZXJEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbz11dGlsLmV4dGVuZCh7fSx0aGlzLndvcmtlck9wdGlvbnMpLHI9dGhpcy5fZGF0YTtcInN0cmluZ1wiPT10eXBlb2Ygcj9vLnJlcXVlc3Q9dGhpcy5tYXAuX3RyYW5zZm9ybVJlcXVlc3QocmVzb2x2ZVVSTChyKSxSZXNvdXJjZVR5cGUuU291cmNlKTpvLmRhdGE9SlNPTi5zdHJpbmdpZnkociksdGhpcy53b3JrZXJJRD10aGlzLmRpc3BhdGNoZXIuc2VuZCh0aGlzLnR5cGUrXCIubG9hZERhdGFcIixvLGZ1bmN0aW9uKG8pe2UuX2xvYWRlZD0hMCx0KG8pfSx0aGlzLndvcmtlcklEKX0sZS5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzLHI9dC53b3JrZXJJRCYmXCJleHBpcmVkXCIhPT10LnN0YXRlP1wicmVsb2FkVGlsZVwiOlwibG9hZFRpbGVcIixpPXt0eXBlOnRoaXMudHlwZSx1aWQ6dC51aWQsY29vcmQ6dC5jb29yZCx6b29tOnQuY29vcmQueixtYXhab29tOnRoaXMubWF4em9vbSx0aWxlU2l6ZTp0aGlzLnRpbGVTaXplLHNvdXJjZTp0aGlzLmlkLHBpeGVsUmF0aW86YnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLG92ZXJzY2FsaW5nOnQuY29vcmQuej50aGlzLm1heHpvb20/TWF0aC5wb3coMix0LmNvb3JkLnotdGhpcy5tYXh6b29tKToxLGFuZ2xlOnRoaXMubWFwLnRyYW5zZm9ybS5hbmdsZSxwaXRjaDp0aGlzLm1hcC50cmFuc2Zvcm0ucGl0Y2gsY2FtZXJhVG9DZW50ZXJEaXN0YW5jZTp0aGlzLm1hcC50cmFuc2Zvcm0uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSxjYW1lcmFUb1RpbGVEaXN0YW5jZTp0aGlzLm1hcC50cmFuc2Zvcm0uY2FtZXJhVG9UaWxlRGlzdGFuY2UodCksc2hvd0NvbGxpc2lvbkJveGVzOnRoaXMubWFwLnNob3dDb2xsaXNpb25Cb3hlc307dC53b3JrZXJJRD10aGlzLmRpc3BhdGNoZXIuc2VuZChyLGksZnVuY3Rpb24ocixpKXtpZih0LnVubG9hZFZlY3RvckRhdGEoKSwhdC5hYm9ydGVkKXJldHVybiByP2Uocik6KHQubG9hZFZlY3RvckRhdGEoaSxvLm1hcC5wYWludGVyKSx0LnJlZG9XaGVuRG9uZSYmKHQucmVkb1doZW5Eb25lPSExLHQucmVkb1BsYWNlbWVudChvKSksZShudWxsKSl9LHRoaXMud29ya2VySUQpfSxlLnByb3RvdHlwZS5hYm9ydFRpbGU9ZnVuY3Rpb24odCl7dC5hYm9ydGVkPSEwfSxlLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe3QudW5sb2FkVmVjdG9yRGF0YSgpLHRoaXMuZGlzcGF0Y2hlci5zZW5kKFwicmVtb3ZlVGlsZVwiLHt1aWQ6dC51aWQsdHlwZTp0aGlzLnR5cGUsc291cmNlOnRoaXMuaWR9LGZ1bmN0aW9uKCl7fSx0LndvcmtlcklEKX0sZS5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwicmVtb3ZlU291cmNlXCIse3R5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSxmdW5jdGlvbigpe30pfSxlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdXRpbC5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyx7dHlwZTp0aGlzLnR5cGUsZGF0YTp0aGlzLl9kYXRhfSl9LGV9KEV2ZW50ZWQpO21vZHVsZS5leHBvcnRzPUdlb0pTT05Tb3VyY2U7XG59LHtcIi4uL2RhdGEvZXh0ZW50XCI6NDgsXCIuLi91dGlsL2FqYXhcIjoyMDEsXCIuLi91dGlsL2Jyb3dzZXJcIjoyMDIsXCIuLi91dGlsL2V2ZW50ZWRcIjoyMTAsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuLi91dGlsL3dpbmRvd1wiOjIwNH1dLDg5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGxvYWRHZW9KU09OVGlsZShlLHIpe3ZhciB0PWUuc291cmNlLG89ZS5jb29yZDtpZighdGhpcy5fZ2VvSlNPTkluZGV4ZXNbdF0pcmV0dXJuIHIobnVsbCxudWxsKTt2YXIgbj10aGlzLl9nZW9KU09OSW5kZXhlc1t0XS5nZXRUaWxlKE1hdGgubWluKG8ueixlLm1heFpvb20pLG8ueCxvLnkpO2lmKCFuKXJldHVybiByKG51bGwsbnVsbCk7dmFyIHU9bmV3IEdlb0pTT05XcmFwcGVyKG4uZmVhdHVyZXMpLGk9dnRwYmYodSk7MD09PWkuYnl0ZU9mZnNldCYmaS5ieXRlTGVuZ3RoPT09aS5idWZmZXIuYnl0ZUxlbmd0aHx8KGk9bmV3IFVpbnQ4QXJyYXkoaSkpLHIobnVsbCx7dmVjdG9yVGlsZTp1LHJhd0RhdGE6aS5idWZmZXJ9KX12YXIgYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLHJld2luZD1fZGVyZXFfKFwiZ2VvanNvbi1yZXdpbmRcIiksR2VvSlNPTldyYXBwZXI9X2RlcmVxXyhcIi4vZ2VvanNvbl93cmFwcGVyXCIpLHZ0cGJmPV9kZXJlcV8oXCJ2dC1wYmZcIiksc3VwZXJjbHVzdGVyPV9kZXJlcV8oXCJzdXBlcmNsdXN0ZXJcIiksZ2VvanNvbnZ0PV9kZXJlcV8oXCJnZW9qc29uLXZ0XCIpLFZlY3RvclRpbGVXb3JrZXJTb3VyY2U9X2RlcmVxXyhcIi4vdmVjdG9yX3RpbGVfd29ya2VyX3NvdXJjZVwiKSxHZW9KU09OV29ya2VyU291cmNlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocix0LG8pe2UuY2FsbCh0aGlzLHIsdCxsb2FkR2VvSlNPTlRpbGUpLG8mJih0aGlzLmxvYWRHZW9KU09OPW8pLHRoaXMuX2dlb0pTT05JbmRleGVzPXt9fXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkRGF0YT1mdW5jdGlvbihlLHIpe3ZhciB0PXRoaXM7dGhpcy5sb2FkR2VvSlNPTihlLGZ1bmN0aW9uKG8sbil7aWYob3x8IW4pcmV0dXJuIHIobyk7aWYoXCJvYmplY3RcIiE9dHlwZW9mIG4pcmV0dXJuIHIobmV3IEVycm9yKFwiSW5wdXQgZGF0YSBpcyBub3QgYSB2YWxpZCBHZW9KU09OIG9iamVjdC5cIikpO3Jld2luZChuLCEwKTt0cnl7dC5fZ2VvSlNPTkluZGV4ZXNbZS5zb3VyY2VdPWUuY2x1c3Rlcj9zdXBlcmNsdXN0ZXIoZS5zdXBlcmNsdXN0ZXJPcHRpb25zKS5sb2FkKG4uZmVhdHVyZXMpOmdlb2pzb252dChuLGUuZ2VvanNvblZ0T3B0aW9ucyl9Y2F0Y2gobyl7cmV0dXJuIHIobyl9dC5sb2FkZWRbZS5zb3VyY2VdPXt9LHIobnVsbCl9KX0sci5wcm90b3R5cGUucmVsb2FkVGlsZT1mdW5jdGlvbihyLHQpe3ZhciBvPXRoaXMubG9hZGVkW3Iuc291cmNlXSxuPXIudWlkO3JldHVybiBvJiZvW25dP2UucHJvdG90eXBlLnJlbG9hZFRpbGUuY2FsbCh0aGlzLHIsdCk6dGhpcy5sb2FkVGlsZShyLHQpfSxyLnByb3RvdHlwZS5sb2FkR2VvSlNPTj1mdW5jdGlvbihlLHIpe2lmKGUucmVxdWVzdClhamF4LmdldEpTT04oZS5yZXF1ZXN0LHIpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUuZGF0YSlyZXR1cm4gcihuZXcgRXJyb3IoXCJJbnB1dCBkYXRhIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04gb2JqZWN0LlwiKSk7dHJ5e3JldHVybiByKG51bGwsSlNPTi5wYXJzZShlLmRhdGEpKX1jYXRjaChlKXtyZXR1cm4gcihuZXcgRXJyb3IoXCJJbnB1dCBkYXRhIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04gb2JqZWN0LlwiKSl9fX0sci5wcm90b3R5cGUucmVtb3ZlU291cmNlPWZ1bmN0aW9uKGUpe3RoaXMuX2dlb0pTT05JbmRleGVzW2Uuc291cmNlXSYmZGVsZXRlIHRoaXMuX2dlb0pTT05JbmRleGVzW2Uuc291cmNlXX0scn0oVmVjdG9yVGlsZVdvcmtlclNvdXJjZSk7bW9kdWxlLmV4cG9ydHM9R2VvSlNPTldvcmtlclNvdXJjZTtcbn0se1wiLi4vdXRpbC9hamF4XCI6MjAxLFwiLi9nZW9qc29uX3dyYXBwZXJcIjo5MCxcIi4vdmVjdG9yX3RpbGVfd29ya2VyX3NvdXJjZVwiOjEwMyxcImdlb2pzb24tcmV3aW5kXCI6MTMsXCJnZW9qc29uLXZ0XCI6MTcsXCJzdXBlcmNsdXN0ZXJcIjozMixcInZ0LXBiZlwiOjM3fV0sOTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLHRvR2VvSlNPTj1fZGVyZXFfKFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiKS5WZWN0b3JUaWxlRmVhdHVyZS5wcm90b3R5cGUudG9HZW9KU09OLEVYVEVOVD1fZGVyZXFfKFwiLi4vZGF0YS9leHRlbnRcIiksRmVhdHVyZVdyYXBwZXI9ZnVuY3Rpb24oZSl7dGhpcy5fZmVhdHVyZT1lLHRoaXMuZXh0ZW50PUVYVEVOVCx0aGlzLnR5cGU9ZS50eXBlLHRoaXMucHJvcGVydGllcz1lLnRhZ3MsXCJpZFwiaW4gZSYmIWlzTmFOKGUuaWQpJiYodGhpcy5pZD1wYXJzZUludChlLmlkLDEwKSl9O0ZlYXR1cmVXcmFwcGVyLnByb3RvdHlwZS5sb2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKDE9PT10aGlzLl9mZWF0dXJlLnR5cGUpe2Zvcih2YXIgdD1bXSxyPTAsbz1lLl9mZWF0dXJlLmdlb21ldHJ5O3I8by5sZW5ndGg7cis9MSl7dmFyIGE9b1tyXTt0LnB1c2goW25ldyBQb2ludChhWzBdLGFbMV0pXSl9cmV0dXJuIHR9Zm9yKHZhciBpPVtdLHA9MCxuPWUuX2ZlYXR1cmUuZ2VvbWV0cnk7cDxuLmxlbmd0aDtwKz0xKXtmb3IodmFyIHM9bltwXSx1PVtdLGg9MCxmPXM7aDxmLmxlbmd0aDtoKz0xKXt2YXIgbD1mW2hdO3UucHVzaChuZXcgUG9pbnQobFswXSxsWzFdKSl9aS5wdXNoKHUpfXJldHVybiBpfSxGZWF0dXJlV3JhcHBlci5wcm90b3R5cGUudG9HZW9KU09OPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdG9HZW9KU09OLmNhbGwodGhpcyxlLHQscil9O3ZhciBHZW9KU09OV3JhcHBlcj1mdW5jdGlvbihlKXt0aGlzLmxheWVycz17X2dlb2pzb25UaWxlTGF5ZXI6dGhpc30sdGhpcy5uYW1lPVwiX2dlb2pzb25UaWxlTGF5ZXJcIix0aGlzLmV4dGVudD1FWFRFTlQsdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5fZmVhdHVyZXM9ZX07R2VvSlNPTldyYXBwZXIucHJvdG90eXBlLmZlYXR1cmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBGZWF0dXJlV3JhcHBlcih0aGlzLl9mZWF0dXJlc1tlXSl9LG1vZHVsZS5leHBvcnRzPUdlb0pTT05XcmFwcGVyO1xufSx7XCIuLi9kYXRhL2V4dGVudFwiOjQ4LFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjIsXCJAbWFwYm94L3ZlY3Rvci10aWxlXCI6Nn1dLDkxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksd2luZG93PV9kZXJlcV8oXCIuLi91dGlsL3dpbmRvd1wiKSxUaWxlQ29vcmQ9X2RlcmVxXyhcIi4vdGlsZV9jb29yZFwiKSxMbmdMYXQ9X2RlcmVxXyhcIi4uL2dlby9sbmdfbGF0XCIpLFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLEV2ZW50ZWQ9X2RlcmVxXyhcIi4uL3V0aWwvZXZlbnRlZFwiKSxhamF4PV9kZXJlcV8oXCIuLi91dGlsL2FqYXhcIiksYnJvd3Nlcj1fZGVyZXFfKFwiLi4vdXRpbC9icm93c2VyXCIpLEVYVEVOVD1fZGVyZXFfKFwiLi4vZGF0YS9leHRlbnRcIiksUmFzdGVyQm91bmRzQXJyYXk9X2RlcmVxXyhcIi4uL2RhdGEvcmFzdGVyX2JvdW5kc19hcnJheVwiKSxWZXJ0ZXhCdWZmZXI9X2RlcmVxXyhcIi4uL2dsL3ZlcnRleF9idWZmZXJcIiksVmVydGV4QXJyYXlPYmplY3Q9X2RlcmVxXyhcIi4uL3JlbmRlci92ZXJ0ZXhfYXJyYXlfb2JqZWN0XCIpLEltYWdlU291cmNlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLG8saSl7ZS5jYWxsKHRoaXMpLHRoaXMuaWQ9dCx0aGlzLmRpc3BhdGNoZXI9byx0aGlzLmNvb3JkaW5hdGVzPXIuY29vcmRpbmF0ZXMsdGhpcy50eXBlPVwiaW1hZ2VcIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy50aWxlcz17fSx0aGlzLnNldEV2ZW50ZWRQYXJlbnQoaSksdGhpcy5vcHRpb25zPXIsdGhpcy50ZXh0dXJlTG9hZGVkPSExfXJldHVybiBlJiYodC5fX3Byb3RvX189ZSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmZpcmUoXCJkYXRhbG9hZGluZ1wiLHtkYXRhVHlwZTpcInNvdXJjZVwifSksdGhpcy51cmw9dGhpcy5vcHRpb25zLnVybCxhamF4LmdldEltYWdlKHRoaXMubWFwLl90cmFuc2Zvcm1SZXF1ZXN0KHRoaXMudXJsLGFqYXguUmVzb3VyY2VUeXBlLkltYWdlKSxmdW5jdGlvbih0LHIpe3Q/ZS5maXJlKFwiZXJyb3JcIix7ZXJyb3I6dH0pOnImJihlLmltYWdlPWJyb3dzZXIuZ2V0SW1hZ2VEYXRhKHIpLGUuX2ZpbmlzaExvYWRpbmcoKSl9KX0sdC5wcm90b3R5cGUuX2ZpbmlzaExvYWRpbmc9ZnVuY3Rpb24oKXt0aGlzLm1hcCYmKHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcyksdGhpcy5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwibWV0YWRhdGFcIn0pKX0sdC5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24oZSl7dGhpcy5tYXA9ZSx0aGlzLmxvYWQoKX0sdC5wcm90b3R5cGUuc2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24oZSl7dGhpcy5jb29yZGluYXRlcz1lO3ZhciB0PXRoaXMubWFwLHI9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhbnNmb3JtLmxvY2F0aW9uQ29vcmRpbmF0ZShMbmdMYXQuY29udmVydChlKSkuem9vbVRvKDApfSksbz10aGlzLmNlbnRlckNvb3JkPXV0aWwuZ2V0Q29vcmRpbmF0ZXNDZW50ZXIocik7by5jb2x1bW49TWF0aC5mbG9vcihvLmNvbHVtbiksby5yb3c9TWF0aC5mbG9vcihvLnJvdyksdGhpcy5jb29yZD1uZXcgVGlsZUNvb3JkKG8uem9vbSxvLmNvbHVtbixvLnJvdyksdGhpcy5taW56b29tPXRoaXMubWF4em9vbT1vLnpvb207dmFyIGk9ci5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9ZS56b29tVG8oby56b29tKTtyZXR1cm4gbmV3IFBvaW50KE1hdGgucm91bmQoKHQuY29sdW1uLW8uY29sdW1uKSpFWFRFTlQpLE1hdGgucm91bmQoKHQucm93LW8ucm93KSpFWFRFTlQpKX0pO3JldHVybiB0aGlzLl9ib3VuZHNBcnJheT1uZXcgUmFzdGVyQm91bmRzQXJyYXksdGhpcy5fYm91bmRzQXJyYXkuZW1wbGFjZUJhY2soaVswXS54LGlbMF0ueSwwLDApLHRoaXMuX2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGlbMV0ueCxpWzFdLnksRVhURU5ULDApLHRoaXMuX2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGlbM10ueCxpWzNdLnksMCxFWFRFTlQpLHRoaXMuX2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGlbMl0ueCxpWzJdLnksRVhURU5ULEVYVEVOVCksdGhpcy5ib3VuZHNCdWZmZXImJih0aGlzLmJvdW5kc0J1ZmZlci5kZXN0cm95KCksZGVsZXRlIHRoaXMuYm91bmRzQnVmZmVyKSx0aGlzLmZpcmUoXCJkYXRhXCIse2RhdGFUeXBlOlwic291cmNlXCIsc291cmNlRGF0YVR5cGU6XCJjb250ZW50XCJ9KSx0aGlzfSx0LnByb3RvdHlwZS5wcmVwYXJlPWZ1bmN0aW9uKCl7MCE9PU9iamVjdC5rZXlzKHRoaXMudGlsZXMpLmxlbmd0aCYmdGhpcy5pbWFnZSYmdGhpcy5fcHJlcGFyZUltYWdlKHRoaXMubWFwLnBhaW50ZXIuZ2wsdGhpcy5pbWFnZSl9LHQucHJvdG90eXBlLl9wcmVwYXJlSW1hZ2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXRoaXM7dGhpcy5ib3VuZHNCdWZmZXJ8fCh0aGlzLmJvdW5kc0J1ZmZlcj1uZXcgVmVydGV4QnVmZmVyKGUsdGhpcy5fYm91bmRzQXJyYXkpKSx0aGlzLmJvdW5kc1ZBT3x8KHRoaXMuYm91bmRzVkFPPW5ldyBWZXJ0ZXhBcnJheU9iamVjdCksdGhpcy50ZXh0dXJlTG9hZGVkP3I/ZS50ZXhJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLGUuUkdCQSxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLHQpOih0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxWaWRlb0VsZW1lbnR8fHQgaW5zdGFuY2VvZiB3aW5kb3cuSW1hZ2VEYXRhKSYmKGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksZS50ZXhTdWJJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLDAsMCxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLHQpKToodGhpcy50ZXh0dXJlTG9hZGVkPSEwLHRoaXMudGV4dHVyZT1lLmNyZWF0ZVRleHR1cmUoKSxlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCx0aGlzLnRleHR1cmUpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX1dSQVBfUyxlLkNMQU1QX1RPX0VER0UpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX1dSQVBfVCxlLkNMQU1QX1RPX0VER0UpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX01JTl9GSUxURVIsZS5MSU5FQVIpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX01BR19GSUxURVIsZS5MSU5FQVIpLGUudGV4SW1hZ2UyRChlLlRFWFRVUkVfMkQsMCxlLlJHQkEsZS5SR0JBLGUuVU5TSUdORURfQllURSx0KSk7Zm9yKHZhciBpIGluIG8udGlsZXMpe3ZhciBhPW8udGlsZXNbaV07XCJsb2FkZWRcIiE9PWEuc3RhdGUmJihhLnN0YXRlPVwibG9hZGVkXCIsYS50ZXh0dXJlPW8udGV4dHVyZSl9fSx0LnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHQpe3RoaXMuY29vcmQmJnRoaXMuY29vcmQudG9TdHJpbmcoKT09PWUuY29vcmQudG9TdHJpbmcoKT8odGhpcy50aWxlc1tTdHJpbmcoZS5jb29yZC53KV09ZSxlLmJ1Y2tldHM9e30sdChudWxsKSk6KGUuc3RhdGU9XCJlcnJvcmVkXCIsdChudWxsKSl9LHQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwiaW1hZ2VcIix1cmw6dGhpcy5vcHRpb25zLnVybCxjb29yZGluYXRlczp0aGlzLmNvb3JkaW5hdGVzfX0sdH0oRXZlbnRlZCk7bW9kdWxlLmV4cG9ydHM9SW1hZ2VTb3VyY2U7XG59LHtcIi4uL2RhdGEvZXh0ZW50XCI6NDgsXCIuLi9kYXRhL3Jhc3Rlcl9ib3VuZHNfYXJyYXlcIjo1NCxcIi4uL2dlby9sbmdfbGF0XCI6NTgsXCIuLi9nbC92ZXJ0ZXhfYnVmZmVyXCI6NjIsXCIuLi9yZW5kZXIvdmVydGV4X2FycmF5X29iamVjdFwiOjg0LFwiLi4vdXRpbC9hamF4XCI6MjAxLFwiLi4vdXRpbC9icm93c2VyXCI6MjAyLFwiLi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vdXRpbC93aW5kb3dcIjoyMDQsXCIuL3RpbGVfY29vcmRcIjoxMDEsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDkyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLGJyb3dzZXI9X2RlcmVxXyhcIi4uL3V0aWwvYnJvd3NlclwiKSxub3JtYWxpemVVUkw9X2RlcmVxXyhcIi4uL3V0aWwvbWFwYm94XCIpLm5vcm1hbGl6ZVNvdXJjZVVSTDttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyLGUsbyl7dmFyIHU9ZnVuY3Rpb24ocixlKXtpZihyKXJldHVybiBvKHIpO2lmKGUpe3ZhciB1PXV0aWwucGljayhlLFtcInRpbGVzXCIsXCJtaW56b29tXCIsXCJtYXh6b29tXCIsXCJhdHRyaWJ1dGlvblwiLFwibWFwYm94X2xvZ29cIixcImJvdW5kc1wiXSk7ZS52ZWN0b3JfbGF5ZXJzJiYodS52ZWN0b3JMYXllcnM9ZS52ZWN0b3JfbGF5ZXJzLHUudmVjdG9yTGF5ZXJJZHM9dS52ZWN0b3JMYXllcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmlkfSkpLG8obnVsbCx1KX19O3IudXJsP2FqYXguZ2V0SlNPTihlKG5vcm1hbGl6ZVVSTChyLnVybCksYWpheC5SZXNvdXJjZVR5cGUuU291cmNlKSx1KTpicm93c2VyLmZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIHUobnVsbCxyKX0pfTtcbn0se1wiLi4vdXRpbC9hamF4XCI6MjAxLFwiLi4vdXRpbC9icm93c2VyXCI6MjAyLFwiLi4vdXRpbC9tYXBib3hcIjoyMTcsXCIuLi91dGlsL3V0aWxcIjoyMjN9XSw5MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRVhURU5UPV9kZXJlcV8oXCIuLi9kYXRhL2V4dGVudFwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHQqKEVYVEVOVC8oZS50aWxlU2l6ZSpNYXRoLnBvdygyLHItZS5jb29yZC56KSkpfTtcbn0se1wiLi4vZGF0YS9leHRlbnRcIjo0OH1dLDk0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHNvcnRUaWxlc0luKGUscil7dmFyIG89ZS5jb29yZCx0PXIuY29vcmQ7cmV0dXJuIG8uei10Lnp8fG8ueS10Lnl8fG8udy10Lnd8fG8ueC10Lnh9ZnVuY3Rpb24gbWVyZ2VSZW5kZXJlZEZlYXR1cmVMYXllcnMoZSl7Zm9yKHZhciByPXt9LG89e30sdD0wLG49ZTt0PG4ubGVuZ3RoO3QrPTEpe3ZhciB1PW5bdF0sYT11LnF1ZXJ5UmVzdWx0cyxkPXUud3JhcHBlZFRpbGVJRCxzPW9bZF09b1tkXXx8e307Zm9yKHZhciBpIGluIGEpZm9yKHZhciBsPWFbaV0sYz1zW2ldPXNbaV18fHt9LGY9cltpXT1yW2ldfHxbXSx2PTAseT1sO3Y8eS5sZW5ndGg7dis9MSl7dmFyIHA9eVt2XTtjW3AuZmVhdHVyZUluZGV4XXx8KGNbcC5mZWF0dXJlSW5kZXhdPSEwLGYucHVzaChwLmZlYXR1cmUpKX19cmV0dXJuIHJ9dmFyIFRpbGVDb29yZD1fZGVyZXFfKFwiLi90aWxlX2Nvb3JkXCIpO2V4cG9ydHMucmVuZGVyZWQ9ZnVuY3Rpb24oZSxyLG8sdCxuLHUpe3ZhciBhPWUudGlsZXNJbihvKTthLnNvcnQoc29ydFRpbGVzSW4pO2Zvcih2YXIgZD1bXSxzPTAsaT1hO3M8aS5sZW5ndGg7cys9MSl7dmFyIGw9aVtzXTtkLnB1c2goe3dyYXBwZWRUaWxlSUQ6bC5jb29yZC53cmFwcGVkKCkuaWQscXVlcnlSZXN1bHRzOmwudGlsZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXMocixsLnF1ZXJ5R2VvbWV0cnksbC5zY2FsZSx0LHUpfSl9cmV0dXJuIG1lcmdlUmVuZGVyZWRGZWF0dXJlTGF5ZXJzKGQpfSxleHBvcnRzLnNvdXJjZT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgbz1lLmdldFJlbmRlcmFibGVJZHMoKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIGUuZ2V0VGlsZUJ5SUQocil9KSx0PVtdLG49e30sdT0wO3U8by5sZW5ndGg7dSsrKXt2YXIgYT1vW3VdLGQ9bmV3IFRpbGVDb29yZChNYXRoLm1pbihhLnNvdXJjZU1heFpvb20sYS5jb29yZC56KSxhLmNvb3JkLngsYS5jb29yZC55LDApLmlkO25bZF18fChuW2RdPSEwLGEucXVlcnlTb3VyY2VGZWF0dXJlcyh0LHIpKX1yZXR1cm4gdH07XG59LHtcIi4vdGlsZV9jb29yZFwiOjEwMX1dLDk1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLEV2ZW50ZWQ9X2RlcmVxXyhcIi4uL3V0aWwvZXZlbnRlZFwiKSxsb2FkVGlsZUpTT049X2RlcmVxXyhcIi4vbG9hZF90aWxlanNvblwiKSxub3JtYWxpemVVUkw9X2RlcmVxXyhcIi4uL3V0aWwvbWFwYm94XCIpLm5vcm1hbGl6ZVRpbGVVUkwsVGlsZUJvdW5kcz1fZGVyZXFfKFwiLi90aWxlX2JvdW5kc1wiKSxSYXN0ZXJUaWxlU291cmNlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxpLHIsbyl7ZS5jYWxsKHRoaXMpLHRoaXMuaWQ9dCx0aGlzLmRpc3BhdGNoZXI9cix0aGlzLnNldEV2ZW50ZWRQYXJlbnQobyksdGhpcy50eXBlPVwicmFzdGVyXCIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTIyLHRoaXMucm91bmRab29tPSEwLHRoaXMuc2NoZW1lPVwieHl6XCIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5fbG9hZGVkPSExLHRoaXMuX29wdGlvbnM9dXRpbC5leHRlbmQoe30saSksdXRpbC5leHRlbmQodGhpcyx1dGlsLnBpY2soaSxbXCJ1cmxcIixcInNjaGVtZVwiLFwidGlsZVNpemVcIl0pKX1yZXR1cm4gZSYmKHQuX19wcm90b19fPWUpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5maXJlKFwiZGF0YWxvYWRpbmdcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIn0pLGxvYWRUaWxlSlNPTih0aGlzLl9vcHRpb25zLHRoaXMubWFwLl90cmFuc2Zvcm1SZXF1ZXN0LGZ1bmN0aW9uKHQsaSl7dD9lLmZpcmUoXCJlcnJvclwiLHQpOmkmJih1dGlsLmV4dGVuZChlLGkpLGkuYm91bmRzJiYoZS50aWxlQm91bmRzPW5ldyBUaWxlQm91bmRzKGkuYm91bmRzLGUubWluem9vbSxlLm1heHpvb20pKSxlLmZpcmUoXCJkYXRhXCIse2RhdGFUeXBlOlwic291cmNlXCIsc291cmNlRGF0YVR5cGU6XCJtZXRhZGF0YVwifSksZS5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwiY29udGVudFwifSkpfSl9LHQucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKGUpe3RoaXMubWFwPWUsdGhpcy5sb2FkKCl9LHQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB1dGlsLmV4dGVuZCh7fSx0aGlzLl9vcHRpb25zKX0sdC5wcm90b3R5cGUuaGFzVGlsZT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy50aWxlQm91bmRzfHx0aGlzLnRpbGVCb3VuZHMuY29udGFpbnMoZSx0aGlzLm1heHpvb20pfSx0LnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMscj1ub3JtYWxpemVVUkwoZS5jb29yZC51cmwodGhpcy50aWxlcyxudWxsLHRoaXMuc2NoZW1lKSx0aGlzLnVybCx0aGlzLnRpbGVTaXplKTtlLnJlcXVlc3Q9YWpheC5nZXRJbWFnZSh0aGlzLm1hcC5fdHJhbnNmb3JtUmVxdWVzdChyLGFqYXguUmVzb3VyY2VUeXBlLlRpbGUpLGZ1bmN0aW9uKHIsbyl7aWYoZGVsZXRlIGUucmVxdWVzdCxlLmFib3J0ZWQpaS5zdGF0ZT1cInVubG9hZGVkXCIsdChudWxsKTtlbHNlIGlmKHIpaS5zdGF0ZT1cImVycm9yZWRcIix0KHIpO2Vsc2UgaWYobyl7aS5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJmUuc2V0RXhwaXJ5RGF0YShvKSxkZWxldGUgby5jYWNoZUNvbnRyb2wsZGVsZXRlIG8uZXhwaXJlczt2YXIgYT1pLm1hcC5wYWludGVyLmdsO2UudGV4dHVyZT1pLm1hcC5wYWludGVyLmdldFRpbGVUZXh0dXJlKG8ud2lkdGgpLGUudGV4dHVyZT8oYS5iaW5kVGV4dHVyZShhLlRFWFRVUkVfMkQsZS50ZXh0dXJlKSxhLnRleFN1YkltYWdlMkQoYS5URVhUVVJFXzJELDAsMCwwLGEuUkdCQSxhLlVOU0lHTkVEX0JZVEUsbykpOihlLnRleHR1cmU9YS5jcmVhdGVUZXh0dXJlKCksYS5iaW5kVGV4dHVyZShhLlRFWFRVUkVfMkQsZS50ZXh0dXJlKSxhLnRleFBhcmFtZXRlcmkoYS5URVhUVVJFXzJELGEuVEVYVFVSRV9NSU5fRklMVEVSLGEuTElORUFSX01JUE1BUF9ORUFSRVNUKSxhLnRleFBhcmFtZXRlcmkoYS5URVhUVVJFXzJELGEuVEVYVFVSRV9NQUdfRklMVEVSLGEuTElORUFSKSxhLnRleFBhcmFtZXRlcmkoYS5URVhUVVJFXzJELGEuVEVYVFVSRV9XUkFQX1MsYS5DTEFNUF9UT19FREdFKSxhLnRleFBhcmFtZXRlcmkoYS5URVhUVVJFXzJELGEuVEVYVFVSRV9XUkFQX1QsYS5DTEFNUF9UT19FREdFKSxhLnBpeGVsU3RvcmVpKGEuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCEwKSxpLm1hcC5wYWludGVyLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyYmYS50ZXhQYXJhbWV0ZXJmKGEuVEVYVFVSRV8yRCxpLm1hcC5wYWludGVyLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxpLm1hcC5wYWludGVyLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY01heCksYS50ZXhJbWFnZTJEKGEuVEVYVFVSRV8yRCwwLGEuUkdCQSxhLlJHQkEsYS5VTlNJR05FRF9CWVRFLG8pLGUudGV4dHVyZS5zaXplPW8ud2lkdGgpLGEuZ2VuZXJhdGVNaXBtYXAoYS5URVhUVVJFXzJEKSxlLnN0YXRlPVwibG9hZGVkXCIsdChudWxsKX19KX0sdC5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKGUpe2UucmVxdWVzdCYmKGUucmVxdWVzdC5hYm9ydCgpLGRlbGV0ZSBlLnJlcXVlc3QpfSx0LnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKGUpe2UudGV4dHVyZSYmdGhpcy5tYXAucGFpbnRlci5zYXZlVGlsZVRleHR1cmUoZS50ZXh0dXJlKX0sdH0oRXZlbnRlZCk7bW9kdWxlLmV4cG9ydHM9UmFzdGVyVGlsZVNvdXJjZTtcbn0se1wiLi4vdXRpbC9hamF4XCI6MjAxLFwiLi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiLi4vdXRpbC9tYXBib3hcIjoyMTcsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuL2xvYWRfdGlsZWpzb25cIjo5MixcIi4vdGlsZV9ib3VuZHNcIjoxMDB9XSw5NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLEV2ZW50ZWQ9X2RlcmVxXyhcIi4uL3V0aWwvZXZlbnRlZFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uL3V0aWwvd2luZG93XCIpLHBsdWdpblJlcXVlc3RlZD0hMSxwbHVnaW5CbG9iVVJMPW51bGw7bW9kdWxlLmV4cG9ydHMuZXZlbnRlZD1uZXcgRXZlbnRlZCxtb2R1bGUuZXhwb3J0cy5yZWdpc3RlckZvclBsdWdpbkF2YWlsYWJpbGl0eT1mdW5jdGlvbihlKXtyZXR1cm4gcGx1Z2luQmxvYlVSTD9lKHtwbHVnaW5CbG9iVVJMOnBsdWdpbkJsb2JVUkwsZXJyb3JDYWxsYmFjazptb2R1bGUuZXhwb3J0cy5lcnJvckNhbGxiYWNrfSk6bW9kdWxlLmV4cG9ydHMuZXZlbnRlZC5vbmNlKFwicGx1Z2luQXZhaWxhYmxlXCIsZSksZX0sbW9kdWxlLmV4cG9ydHMuY3JlYXRlQmxvYlVSTD1mdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IHdpbmRvdy5CbG9iKFtlLmRhdGFdLHt0eXBlOlwidGV4dC9qYXZhc2NyaXB0XCJ9KSl9LG1vZHVsZS5leHBvcnRzLmNsZWFyUlRMVGV4dFBsdWdpbj1mdW5jdGlvbigpe3BsdWdpblJlcXVlc3RlZD0hMSxwbHVnaW5CbG9iVVJMPW51bGx9LG1vZHVsZS5leHBvcnRzLnNldFJUTFRleHRQbHVnaW49ZnVuY3Rpb24oZSxsKXtpZihwbHVnaW5SZXF1ZXN0ZWQpdGhyb3cgbmV3IEVycm9yKFwic2V0UlRMVGV4dFBsdWdpbiBjYW5ub3QgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLlwiKTtwbHVnaW5SZXF1ZXN0ZWQ9ITAsbW9kdWxlLmV4cG9ydHMuZXJyb3JDYWxsYmFjaz1sLGFqYXguZ2V0QXJyYXlCdWZmZXIoe3VybDplfSxmdW5jdGlvbihlLHQpe2U/bChlKTp0JiYocGx1Z2luQmxvYlVSTD1tb2R1bGUuZXhwb3J0cy5jcmVhdGVCbG9iVVJMKHQpLG1vZHVsZS5leHBvcnRzLmV2ZW50ZWQuZmlyZShcInBsdWdpbkF2YWlsYWJsZVwiLHtwbHVnaW5CbG9iVVJMOnBsdWdpbkJsb2JVUkwsZXJyb3JDYWxsYmFjazpsfSkpfSl9LG1vZHVsZS5leHBvcnRzLmFwcGx5QXJhYmljU2hhcGluZz1udWxsLG1vZHVsZS5leHBvcnRzLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dD1udWxsO1xufSx7XCIuLi91dGlsL2FqYXhcIjoyMDEsXCIuLi91dGlsL2V2ZW50ZWRcIjoyMTAsXCIuLi91dGlsL3dpbmRvd1wiOjIwNH1dLDk3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksc291cmNlVHlwZXM9e3ZlY3RvcjpfZGVyZXFfKFwiLi4vc291cmNlL3ZlY3Rvcl90aWxlX3NvdXJjZVwiKSxyYXN0ZXI6X2RlcmVxXyhcIi4uL3NvdXJjZS9yYXN0ZXJfdGlsZV9zb3VyY2VcIiksZ2VvanNvbjpfZGVyZXFfKFwiLi4vc291cmNlL2dlb2pzb25fc291cmNlXCIpLHZpZGVvOl9kZXJlcV8oXCIuLi9zb3VyY2UvdmlkZW9fc291cmNlXCIpLGltYWdlOl9kZXJlcV8oXCIuLi9zb3VyY2UvaW1hZ2Vfc291cmNlXCIpLGNhbnZhczpfZGVyZXFfKFwiLi4vc291cmNlL2NhbnZhc19zb3VyY2VcIil9O2V4cG9ydHMuY3JlYXRlPWZ1bmN0aW9uKGUscixvLHUpe3ZhciBzPW5ldyBzb3VyY2VUeXBlc1tyLnR5cGVdKGUscixvLHUpO2lmKHMuaWQhPT1lKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFNvdXJjZSBpZCB0byBiZSBcIitlK1wiIGluc3RlYWQgb2YgXCIrcy5pZCk7cmV0dXJuIHV0aWwuYmluZEFsbChbXCJsb2FkXCIsXCJhYm9ydFwiLFwidW5sb2FkXCIsXCJzZXJpYWxpemVcIixcInByZXBhcmVcIl0scyksc30sZXhwb3J0cy5nZXRUeXBlPWZ1bmN0aW9uKGUpe3JldHVybiBzb3VyY2VUeXBlc1tlXX0sZXhwb3J0cy5zZXRUeXBlPWZ1bmN0aW9uKGUscil7c291cmNlVHlwZXNbZV09cn07XG59LHtcIi4uL3NvdXJjZS9jYW52YXNfc291cmNlXCI6ODcsXCIuLi9zb3VyY2UvZ2VvanNvbl9zb3VyY2VcIjo4OCxcIi4uL3NvdXJjZS9pbWFnZV9zb3VyY2VcIjo5MSxcIi4uL3NvdXJjZS9yYXN0ZXJfdGlsZV9zb3VyY2VcIjo5NSxcIi4uL3NvdXJjZS92ZWN0b3JfdGlsZV9zb3VyY2VcIjoxMDIsXCIuLi9zb3VyY2UvdmlkZW9fc291cmNlXCI6MTA0LFwiLi4vdXRpbC91dGlsXCI6MjIzfV0sOTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY29vcmRpbmF0ZVRvVGlsZVBvaW50KGUsdCxvKXt2YXIgaT1vLnpvb21UbyhNYXRoLm1pbihlLnosdCkpO3JldHVybiBuZXcgUG9pbnQoKGkuY29sdW1uLShlLngrZS53Kk1hdGgucG93KDIsZS56KSkpKkVYVEVOVCwoaS5yb3ctZS55KSpFWFRFTlQpfWZ1bmN0aW9uIGNvbXBhcmVLZXlab29tKGUsdCl7cmV0dXJuIGUlMzItdCUzMn1mdW5jdGlvbiBpc1Jhc3RlclR5cGUoZSl7cmV0dXJuXCJyYXN0ZXJcIj09PWV8fFwiaW1hZ2VcIj09PWV8fFwidmlkZW9cIj09PWV9dmFyIGNyZWF0ZVNvdXJjZT1fZGVyZXFfKFwiLi9zb3VyY2VcIikuY3JlYXRlLFRpbGU9X2RlcmVxXyhcIi4vdGlsZVwiKSxFdmVudGVkPV9kZXJlcV8oXCIuLi91dGlsL2V2ZW50ZWRcIiksVGlsZUNvb3JkPV9kZXJlcV8oXCIuL3RpbGVfY29vcmRcIiksQ2FjaGU9X2RlcmVxXyhcIi4uL3V0aWwvbHJ1X2NhY2hlXCIpLENvb3JkaW5hdGU9X2RlcmVxXyhcIi4uL2dlby9jb29yZGluYXRlXCIpLHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxFWFRFTlQ9X2RlcmVxXyhcIi4uL2RhdGEvZXh0ZW50XCIpLFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLFNvdXJjZUNhY2hlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxvLGkpe3ZhciByPXRoaXM7ZS5jYWxsKHRoaXMpLHRoaXMuaWQ9dCx0aGlzLmRpc3BhdGNoZXI9aSx0aGlzLm9uKFwiZGF0YVwiLGZ1bmN0aW9uKGUpe1wic291cmNlXCI9PT1lLmRhdGFUeXBlJiZcIm1ldGFkYXRhXCI9PT1lLnNvdXJjZURhdGFUeXBlJiYoci5fc291cmNlTG9hZGVkPSEwKSxyLl9zb3VyY2VMb2FkZWQmJiFyLl9wYXVzZWQmJlwic291cmNlXCI9PT1lLmRhdGFUeXBlJiZcImNvbnRlbnRcIj09PWUuc291cmNlRGF0YVR5cGUmJihyLnJlbG9hZCgpLHIudHJhbnNmb3JtJiZyLnVwZGF0ZShyLnRyYW5zZm9ybSkpfSksdGhpcy5vbihcImVycm9yXCIsZnVuY3Rpb24oKXtyLl9zb3VyY2VFcnJvcmVkPSEwfSksdGhpcy5fc291cmNlPWNyZWF0ZVNvdXJjZSh0LG8saSx0aGlzKSx0aGlzLl90aWxlcz17fSx0aGlzLl9jYWNoZT1uZXcgQ2FjaGUoMCx0aGlzLl91bmxvYWRUaWxlLmJpbmQodGhpcykpLHRoaXMuX3RpbWVycz17fSx0aGlzLl9jYWNoZVRpbWVycz17fSx0aGlzLl9tYXhUaWxlQ2FjaGVTaXplPW51bGwsdGhpcy5faXNJZFJlbmRlcmFibGU9dGhpcy5faXNJZFJlbmRlcmFibGUuYmluZCh0aGlzKX1yZXR1cm4gZSYmKHQuX19wcm90b19fPWUpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24oZSl7dGhpcy5tYXA9ZSx0aGlzLl9tYXhUaWxlQ2FjaGVTaXplPWU/ZS5fbWF4VGlsZUNhY2hlU2l6ZTpudWxsLHRoaXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLm9uQWRkJiZ0aGlzLl9zb3VyY2Uub25BZGQoZSl9LHQucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKGUpe3RoaXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLm9uUmVtb3ZlJiZ0aGlzLl9zb3VyY2Uub25SZW1vdmUoZSl9LHQucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5fc291cmNlRXJyb3JlZClyZXR1cm4hMDtpZighdGhpcy5fc291cmNlTG9hZGVkKXJldHVybiExO2Zvcih2YXIgdCBpbiBlLl90aWxlcyl7dmFyIG89ZS5fdGlsZXNbdF07aWYoXCJsb2FkZWRcIiE9PW8uc3RhdGUmJlwiZXJyb3JlZFwiIT09by5zdGF0ZSlyZXR1cm4hMX1yZXR1cm4hMH0sdC5wcm90b3R5cGUuZ2V0U291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NvdXJjZX0sdC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLl9wYXVzZWQ9ITB9LHQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe2lmKHRoaXMuX3BhdXNlZCl7dmFyIGU9dGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU7dGhpcy5fcGF1c2VkPSExLHRoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lPSExLGUmJnRoaXMucmVsb2FkKCksdGhpcy50cmFuc2Zvcm0mJnRoaXMudXBkYXRlKHRoaXMudHJhbnNmb3JtKX19LHQucHJvdG90eXBlLl9sb2FkVGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9zb3VyY2UubG9hZFRpbGUoZSx0KX0sdC5wcm90b3R5cGUuX3VubG9hZFRpbGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fc291cmNlLnVubG9hZFRpbGUpcmV0dXJuIHRoaXMuX3NvdXJjZS51bmxvYWRUaWxlKGUpfSx0LnByb3RvdHlwZS5fYWJvcnRUaWxlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3NvdXJjZS5hYm9ydFRpbGUpcmV0dXJuIHRoaXMuX3NvdXJjZS5hYm9ydFRpbGUoZSl9LHQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3VyY2Uuc2VyaWFsaXplKCl9LHQucHJvdG90eXBlLnByZXBhcmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLl9zb3VyY2UucHJlcGFyZSYmdGhpcy5fc291cmNlLnByZXBhcmUoKTtmb3IodmFyIG8gaW4gdC5fdGlsZXMpdC5fdGlsZXNbb10udXBsb2FkKGUpfSx0LnByb3RvdHlwZS5nZXRJZHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdGlsZXMpLm1hcChOdW1iZXIpLnNvcnQoY29tcGFyZUtleVpvb20pfSx0LnByb3RvdHlwZS5nZXRSZW5kZXJhYmxlSWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SWRzKCkuZmlsdGVyKHRoaXMuX2lzSWRSZW5kZXJhYmxlKX0sdC5wcm90b3R5cGUuX2lzSWRSZW5kZXJhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl90aWxlc1tlXS5oYXNEYXRhKCkmJiF0aGlzLl9jb3ZlcmVkVGlsZXNbZV19LHQucHJvdG90eXBlLnJlbG9hZD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5fcGF1c2VkKXJldHVybiB2b2lkKHRoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lPSEwKTt0aGlzLl9jYWNoZS5yZXNldCgpO2Zvcih2YXIgdCBpbiBlLl90aWxlcyllLl9yZWxvYWRUaWxlKHQsXCJyZWxvYWRpbmdcIil9LHQucHJvdG90eXBlLl9yZWxvYWRUaWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG89dGhpcy5fdGlsZXNbZV07byYmKFwibG9hZGluZ1wiIT09by5zdGF0ZSYmKG8uc3RhdGU9dCksdGhpcy5fbG9hZFRpbGUobyx0aGlzLl90aWxlTG9hZGVkLmJpbmQodGhpcyxvLGUsdCkpKX0sdC5wcm90b3R5cGUuX3RpbGVMb2FkZWQ9ZnVuY3Rpb24oZSx0LG8saSl7aWYoaSlyZXR1cm4gZS5zdGF0ZT1cImVycm9yZWRcIix2b2lkKDQwNCE9PWkuc3RhdHVzP3RoaXMuX3NvdXJjZS5maXJlKFwiZXJyb3JcIix7dGlsZTplLGVycm9yOml9KTp0aGlzLnVwZGF0ZSh0aGlzLnRyYW5zZm9ybSkpO2UudGltZUFkZGVkPShuZXcgRGF0ZSkuZ2V0VGltZSgpLFwiZXhwaXJlZFwiPT09byYmKGUucmVmcmVzaGVkVXBvbkV4cGlyYXRpb249ITApLHRoaXMuX3NldFRpbGVSZWxvYWRUaW1lcih0LGUpLHRoaXMuX3NvdXJjZS5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHRpbGU6ZSxjb29yZDplLmNvb3JkfSksdGhpcy5tYXAmJih0aGlzLm1hcC5wYWludGVyLnRpbGVFeHRlbnRWQU8udmFvPW51bGwpfSx0LnByb3RvdHlwZS5nZXRUaWxlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFRpbGVCeUlEKGUuaWQpfSx0LnByb3RvdHlwZS5nZXRUaWxlQnlJRD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdGlsZXNbZV19LHQucHJvdG90eXBlLmdldFpvb209ZnVuY3Rpb24oZSl7cmV0dXJuIGUuem9vbStlLnNjYWxlWm9vbShlLnRpbGVTaXplL3RoaXMuX3NvdXJjZS50aWxlU2l6ZSl9LHQucHJvdG90eXBlLl9maW5kTG9hZGVkQ2hpbGRyZW49ZnVuY3Rpb24oZSx0LG8pe3ZhciBpPXRoaXMscj0hMTtmb3IodmFyIHMgaW4gaS5fdGlsZXMpe3ZhciBhPWkuX3RpbGVzW3NdO2lmKCEob1tzXXx8IWEuaGFzRGF0YSgpfHxhLmNvb3JkLno8PWUuenx8YS5jb29yZC56PnQpKXt2YXIgbj1NYXRoLnBvdygyLE1hdGgubWluKGEuY29vcmQueixpLl9zb3VyY2UubWF4em9vbSktTWF0aC5taW4oZS56LGkuX3NvdXJjZS5tYXh6b29tKSk7aWYoTWF0aC5mbG9vcihhLmNvb3JkLngvbik9PT1lLngmJk1hdGguZmxvb3IoYS5jb29yZC55L24pPT09ZS55KWZvcihvW3NdPSEwLHI9ITA7YSYmYS5jb29yZC56LTE+ZS56Oyl7dmFyIGQ9YS5jb29yZC5wYXJlbnQoaS5fc291cmNlLm1heHpvb20pO2lmKCFkKWJyZWFrO2E9aS5fdGlsZXNbZC5pZF0sYSYmYS5oYXNEYXRhKCkmJihkZWxldGUgb1tzXSxvW2QuaWRdPSEwKX19fXJldHVybiByfSx0LnByb3RvdHlwZS5maW5kTG9hZGVkUGFyZW50PWZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIGk9dGhpcyxyPWUuei0xO3I+PXQ7ci0tKXt2YXIgcz1lLnBhcmVudChpLl9zb3VyY2UubWF4em9vbSk7aWYoIXMpcmV0dXJuO2U9czt2YXIgYT1TdHJpbmcoZS5pZCksbj1pLl90aWxlc1thXTtpZihuJiZuLmhhc0RhdGEoKSlyZXR1cm4gb1thXT0hMCxuO2lmKGkuX2NhY2hlLmhhcyhhKSlyZXR1cm4gb1thXT0hMCxpLl9jYWNoZS5nZXRXaXRob3V0UmVtb3ZpbmcoYSl9fSx0LnByb3RvdHlwZS51cGRhdGVDYWNoZVNpemU9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5jZWlsKGUud2lkdGgvZS50aWxlU2l6ZSkrMSxvPU1hdGguY2VpbChlLmhlaWdodC9lLnRpbGVTaXplKSsxLGk9dCpvLHI9TWF0aC5mbG9vcig1KmkpLHM9XCJudW1iZXJcIj09dHlwZW9mIHRoaXMuX21heFRpbGVDYWNoZVNpemU/TWF0aC5taW4odGhpcy5fbWF4VGlsZUNhY2hlU2l6ZSxyKTpyO3RoaXMuX2NhY2hlLnNldE1heFNpemUocyl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgbz10aGlzO2lmKHRoaXMudHJhbnNmb3JtPWUsdGhpcy5fc291cmNlTG9hZGVkJiYhdGhpcy5fcGF1c2VkKXt0aGlzLnVwZGF0ZUNhY2hlU2l6ZShlKSx0aGlzLl9jb3ZlcmVkVGlsZXM9e307dmFyIGk7dGhpcy51c2VkP3RoaXMuX3NvdXJjZS5jb29yZD9pPWUuZ2V0VmlzaWJsZVdyYXBwZWRDb29yZGluYXRlcyh0aGlzLl9zb3VyY2UuY29vcmQpOihpPWUuY292ZXJpbmdUaWxlcyh7dGlsZVNpemU6dGhpcy5fc291cmNlLnRpbGVTaXplLG1pbnpvb206dGhpcy5fc291cmNlLm1pbnpvb20sbWF4em9vbTp0aGlzLl9zb3VyY2UubWF4em9vbSxyb3VuZFpvb206dGhpcy5fc291cmNlLnJvdW5kWm9vbSxyZXBhcnNlT3ZlcnNjYWxlZDp0aGlzLl9zb3VyY2UucmVwYXJzZU92ZXJzY2FsZWR9KSx0aGlzLl9zb3VyY2UuaGFzVGlsZSYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIG8uX3NvdXJjZS5oYXNUaWxlKGUpfSkpKTppPVtdO3ZhciByPSh0aGlzLl9zb3VyY2Uucm91bmRab29tP01hdGgucm91bmQ6TWF0aC5mbG9vcikodGhpcy5nZXRab29tKGUpKSxzPU1hdGgubWF4KHItdC5tYXhPdmVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSksYT1NYXRoLm1heChyK3QubWF4VW5kZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxuPXRoaXMuX3VwZGF0ZVJldGFpbmVkVGlsZXMoaSxyKSxkPXt9O2lmKGlzUmFzdGVyVHlwZSh0aGlzLl9zb3VyY2UudHlwZSkpZm9yKHZhciBoPU9iamVjdC5rZXlzKG4pLHU9MDt1PGgubGVuZ3RoO3UrKyl7dmFyIGM9aFt1XSxsPVRpbGVDb29yZC5mcm9tSUQoK2MpLF89by5fdGlsZXNbY107aWYoXyYmKHZvaWQgMD09PV8uZmFkZUVuZFRpbWV8fF8uZmFkZUVuZFRpbWU+PURhdGUubm93KCkpKXtvLl9maW5kTG9hZGVkQ2hpbGRyZW4obCxhLG4pJiYobltjXT0hMCk7dmFyIG09by5maW5kTG9hZGVkUGFyZW50KGwscyxkKTttJiZvLl9hZGRUaWxlKG0uY29vcmQpfX12YXIgcDtmb3IocCBpbiBkKW5bcF18fChvLl9jb3ZlcmVkVGlsZXNbcF09ITApO2ZvcihwIGluIGQpbltwXT0hMDtmb3IodmFyIGY9dXRpbC5rZXlzRGlmZmVyZW5jZSh0aGlzLl90aWxlcyxuKSxUPTA7VDxmLmxlbmd0aDtUKyspby5fcmVtb3ZlVGlsZShmW1RdKX19LHQucHJvdG90eXBlLl91cGRhdGVSZXRhaW5lZFRpbGVzPWZ1bmN0aW9uKGUsbyl7dmFyIGkscixzLGEsbj10aGlzLGQ9e30saD17fSx1PU1hdGgubWF4KG8tdC5tYXhPdmVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7cj1lW2ldLHM9bi5fYWRkVGlsZShyKTt2YXIgYz0hMTtpZihzLmhhc0RhdGEoKSlkW3IuaWRdPSEwO2Vsc2V7Yz1zLndhc1JlcXVlc3RlZCgpLGRbci5pZF09ITAsYT0hMDtpZihvKzE+bi5fc291cmNlLm1heHpvb20pe3ZhciBsPXIuY2hpbGRyZW4obi5fc291cmNlLm1heHpvb20pWzBdLF89bi5nZXRUaWxlKGwpO18mJl8uaGFzRGF0YSgpP2RbbC5pZF09ITA6YT0hMX1lbHNlIGZvcih2YXIgbT1yLmNoaWxkcmVuKG4uX3NvdXJjZS5tYXh6b29tKSxwPTA7cDxtLmxlbmd0aDtwKyspe3ZhciBmPW1bcF0sVD1mP24uZ2V0VGlsZShmKTpudWxsO1QmJlQuaGFzRGF0YSgpP2RbZi5pZF09ITA6YT0hMX1pZighYSlmb3IodmFyIHY9by0xO3Y+PXU7LS12KXt2YXIgeT1yLnNjYWxlZFRvKHYsbi5fc291cmNlLm1heHpvb20pO2lmKGhbeS5pZF0pYnJlYWs7aWYoaFt5LmlkXT0hMCxzPW4uZ2V0VGlsZSh5KSwhcyYmYyYmKHM9bi5fYWRkVGlsZSh5KSkscyYmKGRbeS5pZF09ITAsYz1zLndhc1JlcXVlc3RlZCgpLHMuaGFzRGF0YSgpKSlicmVha319fXJldHVybiBkfSx0LnByb3RvdHlwZS5fYWRkVGlsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90aWxlc1tlLmlkXTtpZih0KXJldHVybiB0Oyh0PXRoaXMuX2NhY2hlLmdldChlLmlkKSkmJih0LnJlZG9QbGFjZW1lbnQodGhpcy5fc291cmNlKSx0aGlzLl9jYWNoZVRpbWVyc1tlLmlkXSYmKGNsZWFyVGltZW91dCh0aGlzLl9jYWNoZVRpbWVyc1tlLmlkXSksZGVsZXRlIHRoaXMuX2NhY2hlVGltZXJzW2UuaWRdLHRoaXMuX3NldFRpbGVSZWxvYWRUaW1lcihlLmlkLHQpKSk7dmFyIG89Qm9vbGVhbih0KTtpZighbyl7dmFyIGk9ZS56LHI9aT50aGlzLl9zb3VyY2UubWF4em9vbT9NYXRoLnBvdygyLGktdGhpcy5fc291cmNlLm1heHpvb20pOjE7dD1uZXcgVGlsZShlLHRoaXMuX3NvdXJjZS50aWxlU2l6ZSpyLHRoaXMuX3NvdXJjZS5tYXh6b29tKSx0aGlzLl9sb2FkVGlsZSh0LHRoaXMuX3RpbGVMb2FkZWQuYmluZCh0aGlzLHQsZS5pZCx0LnN0YXRlKSl9cmV0dXJuIHQ/KHQudXNlcysrLHRoaXMuX3RpbGVzW2UuaWRdPXQsb3x8dGhpcy5fc291cmNlLmZpcmUoXCJkYXRhbG9hZGluZ1wiLHt0aWxlOnQsY29vcmQ6dC5jb29yZCxkYXRhVHlwZTpcInNvdXJjZVwifSksdCk6bnVsbH0sdC5wcm90b3R5cGUuX3NldFRpbGVSZWxvYWRUaW1lcj1mdW5jdGlvbihlLHQpe3ZhciBvPXRoaXMsaT10LmdldEV4cGlyeVRpbWVvdXQoKTtpJiYodGhpcy5fdGltZXJzW2VdPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvLl9yZWxvYWRUaWxlKGUsXCJleHBpcmVkXCIpLGRlbGV0ZSBvLl90aW1lcnNbZV19LGkpKX0sdC5wcm90b3R5cGUuX3NldENhY2hlSW52YWxpZGF0aW9uVGltZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbz10aGlzLGk9dC5nZXRFeHBpcnlUaW1lb3V0KCk7aSYmKHRoaXMuX2NhY2hlVGltZXJzW2VdPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvLl9jYWNoZS5yZW1vdmUoZSksZGVsZXRlIG8uX2NhY2hlVGltZXJzW2VdfSxpKSl9LHQucHJvdG90eXBlLl9yZW1vdmVUaWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3RpbGVzW2VdO2lmKHQmJih0LnVzZXMtLSxkZWxldGUgdGhpcy5fdGlsZXNbZV0sdGhpcy5fdGltZXJzW2VdJiYoY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyc1tlXSksZGVsZXRlIHRoaXMuX3RpbWVyc1tlXSksISh0LnVzZXM+MCkpKWlmKHQuc3RvcFBsYWNlbWVudFRocm90dGxlcigpLHQuaGFzRGF0YSgpKXt2YXIgbz10LmNvb3JkLndyYXBwZWQoKS5pZDt0aGlzLl9jYWNoZS5hZGQobyx0KSx0aGlzLl9zZXRDYWNoZUludmFsaWRhdGlvblRpbWVyKG8sdCl9ZWxzZSB0LmFib3J0ZWQ9ITAsdGhpcy5fYWJvcnRUaWxlKHQpLHRoaXMuX3VubG9hZFRpbGUodCl9LHQucHJvdG90eXBlLmNsZWFyVGlsZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lPSExLHRoaXMuX3BhdXNlZD0hMTtmb3IodmFyIHQgaW4gZS5fdGlsZXMpZS5fcmVtb3ZlVGlsZSh0KTt0aGlzLl9jYWNoZS5yZXNldCgpfSx0LnByb3RvdHlwZS50aWxlc0luPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLG89W10saT10aGlzLmdldElkcygpLHI9MS8wLHM9MS8wLGE9LTEvMCxuPS0xLzAsZD1lWzBdLnpvb20saD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgdT1lW2hdO3I9TWF0aC5taW4ocix1LmNvbHVtbikscz1NYXRoLm1pbihzLHUucm93KSxhPU1hdGgubWF4KGEsdS5jb2x1bW4pLG49TWF0aC5tYXgobix1LnJvdyl9Zm9yKHZhciBjPTA7YzxpLmxlbmd0aDtjKyspe3ZhciBsPXQuX3RpbGVzW2lbY11dLF89VGlsZUNvb3JkLmZyb21JRChpW2NdKSxtPVtjb29yZGluYXRlVG9UaWxlUG9pbnQoXyxsLnNvdXJjZU1heFpvb20sbmV3IENvb3JkaW5hdGUocixzLGQpKSxjb29yZGluYXRlVG9UaWxlUG9pbnQoXyxsLnNvdXJjZU1heFpvb20sbmV3IENvb3JkaW5hdGUoYSxuLGQpKV07aWYobVswXS54PEVYVEVOVCYmbVswXS55PEVYVEVOVCYmbVsxXS54Pj0wJiZtWzFdLnk+PTApe2Zvcih2YXIgcD1bXSxmPTA7ZjxlLmxlbmd0aDtmKyspcC5wdXNoKGNvb3JkaW5hdGVUb1RpbGVQb2ludChfLGwuc291cmNlTWF4Wm9vbSxlW2ZdKSk7by5wdXNoKHt0aWxlOmwsY29vcmQ6XyxxdWVyeUdlb21ldHJ5OltwXSxzY2FsZTpNYXRoLnBvdygyLHQudHJhbnNmb3JtLnpvb20tbC5jb29yZC56KX0pfX1yZXR1cm4gb30sdC5wcm90b3R5cGUucmVkb1BsYWNlbWVudD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9dGhpcy5nZXRJZHMoKSxvPTA7bzx0Lmxlbmd0aDtvKyspe2UuZ2V0VGlsZUJ5SUQodFtvXSkucmVkb1BsYWNlbWVudChlLl9zb3VyY2UpfX0sdC5wcm90b3R5cGUuZ2V0VmlzaWJsZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLmdldFJlbmRlcmFibGVJZHMoKS5tYXAoVGlsZUNvb3JkLmZyb21JRCksbz0wLGk9dDtvPGkubGVuZ3RoO28rPTEpe3ZhciByPWlbb107ci5wb3NNYXRyaXg9ZS50cmFuc2Zvcm0uY2FsY3VsYXRlUG9zTWF0cml4KHIsZS5fc291cmNlLm1heHpvb20pfXJldHVybiB0fSx0fShFdmVudGVkKTtTb3VyY2VDYWNoZS5tYXhPdmVyem9vbWluZz0xMCxTb3VyY2VDYWNoZS5tYXhVbmRlcnpvb21pbmc9Myxtb2R1bGUuZXhwb3J0cz1Tb3VyY2VDYWNoZTtcbn0se1wiLi4vZGF0YS9leHRlbnRcIjo0OCxcIi4uL2dlby9jb29yZGluYXRlXCI6NTcsXCIuLi91dGlsL2V2ZW50ZWRcIjoyMTAsXCIuLi91dGlsL2xydV9jYWNoZVwiOjIxNixcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIi4vc291cmNlXCI6OTcsXCIuL3RpbGVcIjo5OSxcIi4vdGlsZV9jb29yZFwiOjEwMSxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sOTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxkZXNlcmlhbGl6ZUJ1Y2tldD1fZGVyZXFfKFwiLi4vZGF0YS9idWNrZXRcIikuZGVzZXJpYWxpemUsU3ltYm9sQnVja2V0PV9kZXJlcV8oXCIuLi9kYXRhL2J1Y2tldC9zeW1ib2xfYnVja2V0XCIpLEZlYXR1cmVJbmRleD1fZGVyZXFfKFwiLi4vZGF0YS9mZWF0dXJlX2luZGV4XCIpLHZ0PV9kZXJlcV8oXCJAbWFwYm94L3ZlY3Rvci10aWxlXCIpLFByb3RvYnVmPV9kZXJlcV8oXCJwYmZcIiksR2VvSlNPTkZlYXR1cmU9X2RlcmVxXyhcIi4uL3V0aWwvdmVjdG9ydGlsZV90b19nZW9qc29uXCIpLGZlYXR1cmVGaWx0ZXI9X2RlcmVxXyhcIi4uL3N0eWxlLXNwZWMvZmVhdHVyZV9maWx0ZXJcIiksQ29sbGlzaW9uVGlsZT1fZGVyZXFfKFwiLi4vc3ltYm9sL2NvbGxpc2lvbl90aWxlXCIpLENvbGxpc2lvbkJveEFycmF5PV9kZXJlcV8oXCIuLi9zeW1ib2wvY29sbGlzaW9uX2JveFwiKSxUaHJvdHRsZXI9X2RlcmVxXyhcIi4uL3V0aWwvdGhyb3R0bGVyXCIpLFRleHR1cmU9X2RlcmVxXyhcIi4uL3JlbmRlci90ZXh0dXJlXCIpLENMT0NLX1NLRVdfUkVUUllfVElNRU9VVD0zZTQsVGlsZT1mdW5jdGlvbihlLHQsaSl7dGhpcy5jb29yZD1lLHRoaXMudWlkPXV0aWwudW5pcXVlSWQoKSx0aGlzLnVzZXM9MCx0aGlzLnRpbGVTaXplPXQsdGhpcy5zb3VyY2VNYXhab29tPWksdGhpcy5idWNrZXRzPXt9LHRoaXMuZXhwaXJhdGlvblRpbWU9bnVsbCx0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLnN0YXRlPVwibG9hZGluZ1wiLHRoaXMucGxhY2VtZW50VGhyb3R0bGVyPW5ldyBUaHJvdHRsZXIoMzAwLHRoaXMuX2ltbWVkaWF0ZVJlZG9QbGFjZW1lbnQuYmluZCh0aGlzKSl9O1RpbGUucHJvdG90eXBlLnJlZ2lzdGVyRmFkZUR1cmF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dCt0aGlzLnRpbWVBZGRlZDtpPERhdGUubm93KCl8fHRoaXMuZmFkZUVuZFRpbWUmJmk8dGhpcy5mYWRlRW5kVGltZXx8KHRoaXMuZmFkZUVuZFRpbWU9aSxlLnNldCh0aGlzLmZhZGVFbmRUaW1lLURhdGUubm93KCkpKX0sVGlsZS5wcm90b3R5cGUud2FzUmVxdWVzdGVkPWZ1bmN0aW9uKCl7cmV0dXJuXCJlcnJvcmVkXCI9PT10aGlzLnN0YXRlfHxcImxvYWRlZFwiPT09dGhpcy5zdGF0ZXx8XCJyZWxvYWRpbmdcIj09PXRoaXMuc3RhdGV9LFRpbGUucHJvdG90eXBlLmxvYWRWZWN0b3JEYXRhPWZ1bmN0aW9uKGUsdCl7dGhpcy5oYXNEYXRhKCkmJnRoaXMudW5sb2FkVmVjdG9yRGF0YSgpLHRoaXMuc3RhdGU9XCJsb2FkZWRcIixlJiYoZS5yYXdUaWxlRGF0YSYmKHRoaXMucmF3VGlsZURhdGE9ZS5yYXdUaWxlRGF0YSksdGhpcy5jb2xsaXNpb25Cb3hBcnJheT1uZXcgQ29sbGlzaW9uQm94QXJyYXkoZS5jb2xsaXNpb25Cb3hBcnJheSksdGhpcy5jb2xsaXNpb25UaWxlPUNvbGxpc2lvblRpbGUuZGVzZXJpYWxpemUoZS5jb2xsaXNpb25UaWxlLHRoaXMuY29sbGlzaW9uQm94QXJyYXkpLHRoaXMuZmVhdHVyZUluZGV4PUZlYXR1cmVJbmRleC5kZXNlcmlhbGl6ZShlLmZlYXR1cmVJbmRleCx0aGlzLnJhd1RpbGVEYXRhLHRoaXMuY29sbGlzaW9uVGlsZSksdGhpcy5idWNrZXRzPWRlc2VyaWFsaXplQnVja2V0KGUuYnVja2V0cyx0LnN0eWxlKSxlLmljb25BdGxhc0ltYWdlJiYodGhpcy5pY29uQXRsYXNJbWFnZT1lLmljb25BdGxhc0ltYWdlKSxlLmdseXBoQXRsYXNJbWFnZSYmKHRoaXMuZ2x5cGhBdGxhc0ltYWdlPWUuZ2x5cGhBdGxhc0ltYWdlKSl9LFRpbGUucHJvdG90eXBlLnJlbG9hZFN5bWJvbERhdGE9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO2lmKFwidW5sb2FkZWRcIiE9PXRoaXMuc3RhdGUpe3RoaXMuY29sbGlzaW9uVGlsZT1Db2xsaXNpb25UaWxlLmRlc2VyaWFsaXplKGUuY29sbGlzaW9uVGlsZSx0aGlzLmNvbGxpc2lvbkJveEFycmF5KSx0aGlzLmZlYXR1cmVJbmRleCYmdGhpcy5mZWF0dXJlSW5kZXguc2V0Q29sbGlzaW9uVGlsZSh0aGlzLmNvbGxpc2lvblRpbGUpO2Zvcih2YXIgYSBpbiBpLmJ1Y2tldHMpe3ZhciBzPWkuYnVja2V0c1thXTtzIGluc3RhbmNlb2YgU3ltYm9sQnVja2V0JiYocy5kZXN0cm95KCksZGVsZXRlIGkuYnVja2V0c1thXSl9dXRpbC5leHRlbmQodGhpcy5idWNrZXRzLGRlc2VyaWFsaXplQnVja2V0KGUuYnVja2V0cyx0KSksZS5pY29uQXRsYXNJbWFnZSYmKHRoaXMuaWNvbkF0bGFzSW1hZ2U9ZS5pY29uQXRsYXNJbWFnZSksZS5nbHlwaEF0bGFzSW1hZ2UmJih0aGlzLmdseXBoQXRsYXNJbWFnZT1lLmdseXBoQXRsYXNJbWFnZSl9fSxUaWxlLnByb3RvdHlwZS51bmxvYWRWZWN0b3JEYXRhPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztmb3IodmFyIHQgaW4gZS5idWNrZXRzKWUuYnVja2V0c1t0XS5kZXN0cm95KCk7dGhpcy5idWNrZXRzPXt9LHRoaXMuaWNvbkF0bGFzVGV4dHVyZSYmdGhpcy5pY29uQXRsYXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLmdseXBoQXRsYXNUZXh0dXJlJiZ0aGlzLmdseXBoQXRsYXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLmNvbGxpc2lvbkJveEFycmF5PW51bGwsdGhpcy5jb2xsaXNpb25UaWxlPW51bGwsdGhpcy5mZWF0dXJlSW5kZXg9bnVsbCx0aGlzLnN0YXRlPVwidW5sb2FkZWRcIn0sVGlsZS5wcm90b3R5cGUucmVkb1BsYWNlbWVudD1mdW5jdGlvbihlKXtpZihcInZlY3RvclwiPT09ZS50eXBlfHxcImdlb2pzb25cIj09PWUudHlwZSl7aWYoXCJsb2FkZWRcIiE9PXRoaXMuc3RhdGUpcmV0dXJuIHZvaWQodGhpcy5yZWRvV2hlbkRvbmU9ITApO2lmKHRoaXMuY29sbGlzaW9uVGlsZSl7dmFyIHQ9ZS5tYXAudHJhbnNmb3JtLmNhbWVyYVRvVGlsZURpc3RhbmNlKHRoaXMpO2lmKHRoaXMuYW5nbGU9PT1lLm1hcC50cmFuc2Zvcm0uYW5nbGUmJnRoaXMucGl0Y2g9PT1lLm1hcC50cmFuc2Zvcm0ucGl0Y2gmJnRoaXMuc2hvd0NvbGxpc2lvbkJveGVzPT09ZS5tYXAuc2hvd0NvbGxpc2lvbkJveGVzKXtpZih0aGlzLmNhbWVyYVRvVGlsZURpc3RhbmNlPT09dCYmdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlPT09ZS5tYXAudHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UpcmV0dXJuO2lmKHRoaXMucGl0Y2g8MjUpcmV0dXJuIHRoaXMuY2FtZXJhVG9UaWxlRGlzdGFuY2U9dCx2b2lkKHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZT1lLm1hcC50cmFuc2Zvcm0uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSl9dGhpcy5hbmdsZT1lLm1hcC50cmFuc2Zvcm0uYW5nbGUsdGhpcy5waXRjaD1lLm1hcC50cmFuc2Zvcm0ucGl0Y2gsdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlPWUubWFwLnRyYW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLHRoaXMuY2FtZXJhVG9UaWxlRGlzdGFuY2U9dCx0aGlzLnNob3dDb2xsaXNpb25Cb3hlcz1lLm1hcC5zaG93Q29sbGlzaW9uQm94ZXMsdGhpcy5wbGFjZW1lbnRTb3VyY2U9ZSx0aGlzLnN0YXRlPVwicmVsb2FkaW5nXCIsdGhpcy5wbGFjZW1lbnRUaHJvdHRsZXIuaW52b2tlKCl9fX0sVGlsZS5wcm90b3R5cGUuX2ltbWVkaWF0ZVJlZG9QbGFjZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMucGxhY2VtZW50U291cmNlLmRpc3BhdGNoZXIuc2VuZChcInJlZG9QbGFjZW1lbnRcIix7dHlwZTp0aGlzLnBsYWNlbWVudFNvdXJjZS50eXBlLHVpZDp0aGlzLnVpZCxzb3VyY2U6dGhpcy5wbGFjZW1lbnRTb3VyY2UuaWQsYW5nbGU6dGhpcy5hbmdsZSxwaXRjaDp0aGlzLnBpdGNoLGNhbWVyYVRvQ2VudGVyRGlzdGFuY2U6dGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLGNhbWVyYVRvVGlsZURpc3RhbmNlOnRoaXMuY2FtZXJhVG9UaWxlRGlzdGFuY2Usc2hvd0NvbGxpc2lvbkJveGVzOnRoaXMuc2hvd0NvbGxpc2lvbkJveGVzfSxmdW5jdGlvbih0LGkpe1wicmVsb2FkaW5nXCI9PT1lLnN0YXRlJiYoZS5zdGF0ZT1cImxvYWRlZFwiLGUucmVsb2FkU3ltYm9sRGF0YShpLGUucGxhY2VtZW50U291cmNlLm1hcC5zdHlsZSksZS5wbGFjZW1lbnRTb3VyY2UuZmlyZShcImRhdGFcIix7dGlsZTplLGNvb3JkOmUuY29vcmQsZGF0YVR5cGU6XCJzb3VyY2VcIn0pLGUucGxhY2VtZW50U291cmNlLm1hcCYmKGUucGxhY2VtZW50U291cmNlLm1hcC5wYWludGVyLnRpbGVFeHRlbnRWQU8udmFvPW51bGwpLGUucmVkb1doZW5Eb25lJiYoZS5zdGF0ZT1cInJlbG9hZGluZ1wiLGUucmVkb1doZW5Eb25lPSExLGUuX2ltbWVkaWF0ZVJlZG9QbGFjZW1lbnQoKSkpfSx0aGlzLndvcmtlcklEKX0sVGlsZS5wcm90b3R5cGUuZ2V0QnVja2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJ1Y2tldHNbZS5pZF19LFRpbGUucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2Zvcih2YXIgaSBpbiB0LmJ1Y2tldHMpe3ZhciBhPXQuYnVja2V0c1tpXTthLnVwbG9hZGVkfHwoYS51cGxvYWQoZSksYS51cGxvYWRlZD0hMCl9dGhpcy5pY29uQXRsYXNJbWFnZSYmKHRoaXMuaWNvbkF0bGFzVGV4dHVyZT1uZXcgVGV4dHVyZShlLHRoaXMuaWNvbkF0bGFzSW1hZ2UsZS5SR0JBKSx0aGlzLmljb25BdGxhc0ltYWdlPW51bGwpLHRoaXMuZ2x5cGhBdGxhc0ltYWdlJiYodGhpcy5nbHlwaEF0bGFzVGV4dHVyZT1uZXcgVGV4dHVyZShlLHRoaXMuZ2x5cGhBdGxhc0ltYWdlLGUuQUxQSEEpLHRoaXMuZ2x5cGhBdGxhc0ltYWdlPW51bGwpfSxUaWxlLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24oZSx0LGksYSxzKXt2YXIgbz10aGlzO2lmKCF0aGlzLmZlYXR1cmVJbmRleClyZXR1cm57fTt2YXIgcj0wO2Zvcih2YXIgbCBpbiBlKXt2YXIgbj1vLmdldEJ1Y2tldChlW2xdKTtuJiYocj1NYXRoLm1heChyLGVbbF0ucXVlcnlSYWRpdXMobikpKX1yZXR1cm4gdGhpcy5mZWF0dXJlSW5kZXgucXVlcnkoe3F1ZXJ5R2VvbWV0cnk6dCxiZWFyaW5nOnMscGFyYW1zOmEsc2NhbGU6aSxhZGRpdGlvbmFsUmFkaXVzOnIsdGlsZVNpemU6dGhpcy50aWxlU2l6ZX0sZSl9LFRpbGUucHJvdG90eXBlLnF1ZXJ5U291cmNlRmVhdHVyZXM9ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO2lmKHRoaXMucmF3VGlsZURhdGEpe3RoaXMudnRMYXllcnN8fCh0aGlzLnZ0TGF5ZXJzPW5ldyB2dC5WZWN0b3JUaWxlKG5ldyBQcm90b2J1Zih0aGlzLnJhd1RpbGVEYXRhKSkubGF5ZXJzKTt2YXIgYT10P3Quc291cmNlTGF5ZXI6XCJcIixzPXRoaXMudnRMYXllcnMuX2dlb2pzb25UaWxlTGF5ZXJ8fHRoaXMudnRMYXllcnNbYV07aWYocylmb3IodmFyIG89ZmVhdHVyZUZpbHRlcih0JiZ0LmZpbHRlcikscj17ejp0aGlzLmNvb3JkLnoseDp0aGlzLmNvb3JkLngseTp0aGlzLmNvb3JkLnl9LGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIG49cy5mZWF0dXJlKGwpO2lmKG8obikpe3ZhciBoPW5ldyBHZW9KU09ORmVhdHVyZShuLGkuY29vcmQueixpLmNvb3JkLngsaS5jb29yZC55KTtoLnRpbGU9cixlLnB1c2goaCl9fX19LFRpbGUucHJvdG90eXBlLmhhc0RhdGE9ZnVuY3Rpb24oKXtyZXR1cm5cImxvYWRlZFwiPT09dGhpcy5zdGF0ZXx8XCJyZWxvYWRpbmdcIj09PXRoaXMuc3RhdGV8fFwiZXhwaXJlZFwiPT09dGhpcy5zdGF0ZX0sVGlsZS5wcm90b3R5cGUuc2V0RXhwaXJ5RGF0YT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmV4cGlyYXRpb25UaW1lO2lmKGUuY2FjaGVDb250cm9sKXt2YXIgaT11dGlsLnBhcnNlQ2FjaGVDb250cm9sKGUuY2FjaGVDb250cm9sKTtpW1wibWF4LWFnZVwiXSYmKHRoaXMuZXhwaXJhdGlvblRpbWU9RGF0ZS5ub3coKSsxZTMqaVtcIm1heC1hZ2VcIl0pfWVsc2UgZS5leHBpcmVzJiYodGhpcy5leHBpcmF0aW9uVGltZT1uZXcgRGF0ZShlLmV4cGlyZXMpLmdldFRpbWUoKSk7aWYodGhpcy5leHBpcmF0aW9uVGltZSl7dmFyIGE9RGF0ZS5ub3coKSxzPSExO2lmKHRoaXMuZXhwaXJhdGlvblRpbWU+YSlzPSExO2Vsc2UgaWYodClpZih0aGlzLmV4cGlyYXRpb25UaW1lPHQpcz0hMDtlbHNle3ZhciBvPXRoaXMuZXhwaXJhdGlvblRpbWUtdDtvP3RoaXMuZXhwaXJhdGlvblRpbWU9YStNYXRoLm1heChvLENMT0NLX1NLRVdfUkVUUllfVElNRU9VVCk6cz0hMH1lbHNlIHM9ITA7cz8odGhpcy5leHBpcmVkUmVxdWVzdENvdW50KyssdGhpcy5zdGF0ZT1cImV4cGlyZWRcIik6dGhpcy5leHBpcmVkUmVxdWVzdENvdW50PTB9fSxUaWxlLnByb3RvdHlwZS5nZXRFeHBpcnlUaW1lb3V0PWZ1bmN0aW9uKCl7aWYodGhpcy5leHBpcmF0aW9uVGltZSlyZXR1cm4gdGhpcy5leHBpcmVkUmVxdWVzdENvdW50PzFlMyooMTw8TWF0aC5taW4odGhpcy5leHBpcmVkUmVxdWVzdENvdW50LTEsMzEpKTpNYXRoLm1pbih0aGlzLmV4cGlyYXRpb25UaW1lLShuZXcgRGF0ZSkuZ2V0VGltZSgpLE1hdGgucG93KDIsMzEpLTEpfSxUaWxlLnByb3RvdHlwZS5zdG9wUGxhY2VtZW50VGhyb3R0bGVyPWZ1bmN0aW9uKCl7dGhpcy5wbGFjZW1lbnRUaHJvdHRsZXIuc3RvcCgpLFwicmVsb2FkaW5nXCI9PT10aGlzLnN0YXRlJiYodGhpcy5zdGF0ZT1cImxvYWRlZFwiKX0sbW9kdWxlLmV4cG9ydHM9VGlsZTtcbn0se1wiLi4vZGF0YS9idWNrZXRcIjo0MixcIi4uL2RhdGEvYnVja2V0L3N5bWJvbF9idWNrZXRcIjo0NyxcIi4uL2RhdGEvZmVhdHVyZV9pbmRleFwiOjQ5LFwiLi4vcmVuZGVyL3RleHR1cmVcIjo4MyxcIi4uL3N0eWxlLXNwZWMvZmVhdHVyZV9maWx0ZXJcIjoxMTAsXCIuLi9zeW1ib2wvY29sbGlzaW9uX2JveFwiOjE3MCxcIi4uL3N5bWJvbC9jb2xsaXNpb25fdGlsZVwiOjE3MixcIi4uL3V0aWwvdGhyb3R0bGVyXCI6MjIxLFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vdXRpbC92ZWN0b3J0aWxlX3RvX2dlb2pzb25cIjoyMjQsXCJAbWFwYm94L3ZlY3Rvci10aWxlXCI6NixcInBiZlwiOjI5fV0sMTAwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBMbmdMYXRCb3VuZHM9X2RlcmVxXyhcIi4uL2dlby9sbmdfbGF0X2JvdW5kc1wiKSxjbGFtcD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLmNsYW1wLFRpbGVCb3VuZHM9ZnVuY3Rpb24odCxuLG8pe3RoaXMuYm91bmRzPUxuZ0xhdEJvdW5kcy5jb252ZXJ0KHRoaXMudmFsaWRhdGVCb3VuZHModCkpLHRoaXMubWluem9vbT1ufHwwLHRoaXMubWF4em9vbT1vfHwyNH07VGlsZUJvdW5kcy5wcm90b3R5cGUudmFsaWRhdGVCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJjQ9PT10Lmxlbmd0aD9bTWF0aC5tYXgoLTE4MCx0WzBdKSxNYXRoLm1heCgtOTAsdFsxXSksTWF0aC5taW4oMTgwLHRbMl0pLE1hdGgubWluKDkwLHRbM10pXTpbLTE4MCwtOTAsMTgwLDkwXX0sVGlsZUJvdW5kcy5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCxuKXt2YXIgbz1uP01hdGgubWluKHQueixuKTp0LnosYT17bWluWDpNYXRoLmZsb29yKHRoaXMubG5nWCh0aGlzLmJvdW5kcy5nZXRXZXN0KCksbykpLG1pblk6TWF0aC5mbG9vcih0aGlzLmxhdFkodGhpcy5ib3VuZHMuZ2V0Tm9ydGgoKSxvKSksbWF4WDpNYXRoLmNlaWwodGhpcy5sbmdYKHRoaXMuYm91bmRzLmdldEVhc3QoKSxvKSksbWF4WTpNYXRoLmNlaWwodGhpcy5sYXRZKHRoaXMuYm91bmRzLmdldFNvdXRoKCksbykpfTtyZXR1cm4gdC54Pj1hLm1pblgmJnQueDxhLm1heFgmJnQueT49YS5taW5ZJiZ0Lnk8YS5tYXhZfSxUaWxlQm91bmRzLnByb3RvdHlwZS5sbmdYPWZ1bmN0aW9uKHQsbil7cmV0dXJuKHQrMTgwKSooTWF0aC5wb3coMixuKS8zNjApfSxUaWxlQm91bmRzLnByb3RvdHlwZS5sYXRZPWZ1bmN0aW9uKHQsbil7dmFyIG89Y2xhbXAoTWF0aC5zaW4oTWF0aC5QSS8xODAqdCksLS45OTk5LC45OTk5KSxhPU1hdGgucG93KDIsbikvKDIqTWF0aC5QSSk7cmV0dXJuIE1hdGgucG93KDIsbi0xKSsuNSpNYXRoLmxvZygoMStvKS8oMS1vKSkqLWF9LG1vZHVsZS5leHBvcnRzPVRpbGVCb3VuZHM7XG59LHtcIi4uL2dlby9sbmdfbGF0X2JvdW5kc1wiOjU5LFwiLi4vdXRpbC91dGlsXCI6MjIzfV0sMTAxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGVkZ2UodCxpKXtpZih0LnJvdz5pLnJvdyl7dmFyIG89dDt0PWksaT1vfXJldHVybnt4MDp0LmNvbHVtbix5MDp0LnJvdyx4MTppLmNvbHVtbix5MTppLnJvdyxkeDppLmNvbHVtbi10LmNvbHVtbixkeTppLnJvdy10LnJvd319ZnVuY3Rpb24gc2NhblNwYW5zKHQsaSxvLHIsZSl7dmFyIGg9TWF0aC5tYXgobyxNYXRoLmZsb29yKGkueTApKSxuPU1hdGgubWluKHIsTWF0aC5jZWlsKGkueTEpKTtpZih0LngwPT09aS54MCYmdC55MD09PWkueTA/dC54MCtpLmR5L3QuZHkqdC5keDxpLngxOnQueDEtaS5keS90LmR5KnQuZHg8aS54MCl7dmFyIHM9dDt0PWksaT1zfWZvcih2YXIgYT10LmR4L3QuZHksZD1pLmR4L2kuZHksbD10LmR4PjAseT1pLmR4PDAseD1oO3g8bjt4Kyspe3ZhciB1PWEqTWF0aC5tYXgoMCxNYXRoLm1pbih0LmR5LHgrbC10LnkwKSkrdC54MCxjPWQqTWF0aC5tYXgoMCxNYXRoLm1pbihpLmR5LHgreS1pLnkwKSkraS54MDtlKE1hdGguZmxvb3IoYyksTWF0aC5jZWlsKHUpLHgpfX1mdW5jdGlvbiBzY2FuVHJpYW5nbGUodCxpLG8scixlLGgpe3ZhciBuLHM9ZWRnZSh0LGkpLGE9ZWRnZShpLG8pLGQ9ZWRnZShvLHQpO3MuZHk+YS5keSYmKG49cyxzPWEsYT1uKSxzLmR5PmQuZHkmJihuPXMscz1kLGQ9biksYS5keT5kLmR5JiYobj1hLGE9ZCxkPW4pLHMuZHkmJnNjYW5TcGFucyhkLHMscixlLGgpLGEuZHkmJnNjYW5TcGFucyhkLGEscixlLGgpfWZ1bmN0aW9uIGdldFF1YWRrZXkodCxpLG8pe2Zvcih2YXIgcixlPVwiXCIsaD10O2g+MDtoLS0pcj0xPDxoLTEsZSs9KGkmcj8xOjApKyhvJnI/MjowKTtyZXR1cm4gZX12YXIgV2hvb1RTPV9kZXJlcV8oXCJAbWFwYm94L3dob290cy1qc1wiKSxDb29yZGluYXRlPV9kZXJlcV8oXCIuLi9nZW8vY29vcmRpbmF0ZVwiKSxUaWxlQ29vcmQ9ZnVuY3Rpb24odCxpLG8scil7KHZvaWQgMD09PXJ8fGlzTmFOKHIpKSYmKHI9MCksdGhpcy56PSt0LHRoaXMueD0raSx0aGlzLnk9K28sdGhpcy53PStyLChyKj0yKTwwJiYocj0tMSpyLTEpO3ZhciBlPTE8PHRoaXMuejt0aGlzLmlkPTMyKihlKmUqcitlKnRoaXMueSt0aGlzLngpK3RoaXMueix0aGlzLnBvc01hdHJpeD1udWxsfTtUaWxlQ29vcmQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueitcIi9cIit0aGlzLngrXCIvXCIrdGhpcy55fSxUaWxlQ29vcmQucHJvdG90eXBlLnRvQ29vcmRpbmF0ZT1mdW5jdGlvbih0KXt2YXIgaT1NYXRoLm1pbih0aGlzLnosdm9pZCAwPT09dD90aGlzLno6dCksbz1NYXRoLnBvdygyLGkpLHI9dGhpcy55LGU9dGhpcy54K28qdGhpcy53O3JldHVybiBuZXcgQ29vcmRpbmF0ZShlLHIsaSl9LFRpbGVDb29yZC5wcm90b3R5cGUudXJsPWZ1bmN0aW9uKHQsaSxvKXt2YXIgcj1XaG9vVFMuZ2V0VGlsZUJCb3godGhpcy54LHRoaXMueSx0aGlzLnopLGU9Z2V0UXVhZGtleSh0aGlzLnosdGhpcy54LHRoaXMueSk7cmV0dXJuIHRbKHRoaXMueCt0aGlzLnkpJXQubGVuZ3RoXS5yZXBsYWNlKFwie3ByZWZpeH1cIiwodGhpcy54JTE2KS50b1N0cmluZygxNikrKHRoaXMueSUxNikudG9TdHJpbmcoMTYpKS5yZXBsYWNlKFwie3p9XCIsU3RyaW5nKE1hdGgubWluKHRoaXMueixpfHx0aGlzLnopKSkucmVwbGFjZShcInt4fVwiLFN0cmluZyh0aGlzLngpKS5yZXBsYWNlKFwie3l9XCIsU3RyaW5nKFwidG1zXCI9PT1vP01hdGgucG93KDIsdGhpcy56KS10aGlzLnktMTp0aGlzLnkpKS5yZXBsYWNlKFwie3F1YWRrZXl9XCIsZSkucmVwbGFjZShcIntiYm94LWVwc2ctMzg1N31cIixyKX0sVGlsZUNvb3JkLnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10aGlzLno/bnVsbDp0aGlzLno+dD9uZXcgVGlsZUNvb3JkKHRoaXMuei0xLHRoaXMueCx0aGlzLnksdGhpcy53KTpuZXcgVGlsZUNvb3JkKHRoaXMuei0xLE1hdGguZmxvb3IodGhpcy54LzIpLE1hdGguZmxvb3IodGhpcy55LzIpLHRoaXMudyl9LFRpbGVDb29yZC5wcm90b3R5cGUud3JhcHBlZD1mdW5jdGlvbigpe3JldHVybiBuZXcgVGlsZUNvb3JkKHRoaXMueix0aGlzLngsdGhpcy55LDApfSxUaWxlQ29vcmQucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe2lmKHRoaXMuej49dClyZXR1cm5bbmV3IFRpbGVDb29yZCh0aGlzLnorMSx0aGlzLngsdGhpcy55LHRoaXMudyldO3ZhciBpPXRoaXMueisxLG89Mip0aGlzLngscj0yKnRoaXMueTtyZXR1cm5bbmV3IFRpbGVDb29yZChpLG8scix0aGlzLncpLG5ldyBUaWxlQ29vcmQoaSxvKzEscix0aGlzLncpLG5ldyBUaWxlQ29vcmQoaSxvLHIrMSx0aGlzLncpLG5ldyBUaWxlQ29vcmQoaSxvKzEscisxLHRoaXMudyldfSxUaWxlQ29vcmQucHJvdG90eXBlLnNjYWxlZFRvPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuej5pP25ldyBUaWxlQ29vcmQodCx0aGlzLngsdGhpcy55LHRoaXMudyk6dDw9dGhpcy56P25ldyBUaWxlQ29vcmQodCx0aGlzLng+PnRoaXMuei10LHRoaXMueT4+dGhpcy56LXQsdGhpcy53KTpuZXcgVGlsZUNvb3JkKHQsdGhpcy54PDx0LXRoaXMueix0aGlzLnk8PHQtdGhpcy56LHRoaXMudyl9LFRpbGVDb29yZC5jb3Zlcj1mdW5jdGlvbih0LGksbyxyKXtmdW5jdGlvbiBlKHQsaSxlKXt2YXIgcyxhLGQsbDtpZihlPj0wJiZlPD1oKWZvcihzPXQ7czxpO3MrKylhPU1hdGguZmxvb3Iocy9oKSxkPShzJWgraCklaCwwIT09YSYmITAhPT1yfHwobD1uZXcgVGlsZUNvb3JkKG8sZCxlLGEpLG5bbC5pZF09bCl9dm9pZCAwPT09ciYmKHI9ITApO3ZhciBoPTE8PHQsbj17fTtyZXR1cm4gc2NhblRyaWFuZ2xlKGlbMF0saVsxXSxpWzJdLDAsaCxlKSxzY2FuVHJpYW5nbGUoaVsyXSxpWzNdLGlbMF0sMCxoLGUpLE9iamVjdC5rZXlzKG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0pfSxUaWxlQ29vcmQuZnJvbUlEPWZ1bmN0aW9uKHQpe3ZhciBpPXQlMzIsbz0xPDxpLHI9KHQtaSkvMzIsZT1yJW8saD0oci1lKS9vJW8sbj1NYXRoLmZsb29yKHIvKG8qbykpO3JldHVybiBuJTIhPTAmJihuPS0xKm4tMSksbi89MixuZXcgVGlsZUNvb3JkKGksZSxoLG4pfSxtb2R1bGUuZXhwb3J0cz1UaWxlQ29vcmQ7XG59LHtcIi4uL2dlby9jb29yZGluYXRlXCI6NTcsXCJAbWFwYm94L3dob290cy1qc1wiOjEwfV0sMTAyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBFdmVudGVkPV9kZXJlcV8oXCIuLi91dGlsL2V2ZW50ZWRcIiksdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLGxvYWRUaWxlSlNPTj1fZGVyZXFfKFwiLi9sb2FkX3RpbGVqc29uXCIpLG5vcm1hbGl6ZVVSTD1fZGVyZXFfKFwiLi4vdXRpbC9tYXBib3hcIikubm9ybWFsaXplVGlsZVVSTCxUaWxlQm91bmRzPV9kZXJlcV8oXCIuL3RpbGVfYm91bmRzXCIpLFJlc291cmNlVHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLlJlc291cmNlVHlwZSxicm93c2VyPV9kZXJlcV8oXCIuLi91dGlsL2Jyb3dzZXJcIiksVmVjdG9yVGlsZVNvdXJjZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsaSxvLHIpe2lmKGUuY2FsbCh0aGlzKSx0aGlzLmlkPXQsdGhpcy5kaXNwYXRjaGVyPW8sdGhpcy50eXBlPVwidmVjdG9yXCIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTIyLHRoaXMuc2NoZW1lPVwieHl6XCIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5yZXBhcnNlT3ZlcnNjYWxlZD0hMCx0aGlzLmlzVGlsZUNsaXBwZWQ9ITAsdXRpbC5leHRlbmQodGhpcyx1dGlsLnBpY2soaSxbXCJ1cmxcIixcInNjaGVtZVwiLFwidGlsZVNpemVcIl0pKSx0aGlzLl9vcHRpb25zPXV0aWwuZXh0ZW5kKHt0eXBlOlwidmVjdG9yXCJ9LGkpLDUxMiE9PXRoaXMudGlsZVNpemUpdGhyb3cgbmV3IEVycm9yKFwidmVjdG9yIHRpbGUgc291cmNlcyBtdXN0IGhhdmUgYSB0aWxlU2l6ZSBvZiA1MTJcIik7dGhpcy5zZXRFdmVudGVkUGFyZW50KHIpfXJldHVybiBlJiYodC5fX3Byb3RvX189ZSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmZpcmUoXCJkYXRhbG9hZGluZ1wiLHtkYXRhVHlwZTpcInNvdXJjZVwifSksbG9hZFRpbGVKU09OKHRoaXMuX29wdGlvbnMsdGhpcy5tYXAuX3RyYW5zZm9ybVJlcXVlc3QsZnVuY3Rpb24odCxpKXt0P2UuZmlyZShcImVycm9yXCIsdCk6aSYmKHV0aWwuZXh0ZW5kKGUsaSksaS5ib3VuZHMmJihlLnRpbGVCb3VuZHM9bmV3IFRpbGVCb3VuZHMoaS5ib3VuZHMsZS5taW56b29tLGUubWF4em9vbSkpLGUuZmlyZShcImRhdGFcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCJ9KSxlLmZpcmUoXCJkYXRhXCIse2RhdGFUeXBlOlwic291cmNlXCIsc291cmNlRGF0YVR5cGU6XCJjb250ZW50XCJ9KSl9KX0sdC5wcm90b3R5cGUuaGFzVGlsZT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy50aWxlQm91bmRzfHx0aGlzLnRpbGVCb3VuZHMuY29udGFpbnMoZSx0aGlzLm1heHpvb20pfSx0LnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbihlKXt0aGlzLm1hcD1lLHRoaXMubG9hZCgpfSx0LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdXRpbC5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyl9LHQucHJvdG90eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShpLG8pe2lmKCFlLmFib3J0ZWQpe2lmKGkpcmV0dXJuIHQoaSk7dGhpcy5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJmUuc2V0RXhwaXJ5RGF0YShvKSxlLmxvYWRWZWN0b3JEYXRhKG8sdGhpcy5tYXAucGFpbnRlciksZS5yZWRvV2hlbkRvbmUmJihlLnJlZG9XaGVuRG9uZT0hMSxlLnJlZG9QbGFjZW1lbnQodGhpcykpLHQobnVsbCksZS5yZWxvYWRDYWxsYmFjayYmKHRoaXMubG9hZFRpbGUoZSxlLnJlbG9hZENhbGxiYWNrKSxlLnJlbG9hZENhbGxiYWNrPW51bGwpfX12YXIgbz1lLmNvb3JkLno+dGhpcy5tYXh6b29tP01hdGgucG93KDIsZS5jb29yZC56LXRoaXMubWF4em9vbSk6MSxyPW5vcm1hbGl6ZVVSTChlLmNvb3JkLnVybCh0aGlzLnRpbGVzLHRoaXMubWF4em9vbSx0aGlzLnNjaGVtZSksdGhpcy51cmwpLHM9e3JlcXVlc3Q6dGhpcy5tYXAuX3RyYW5zZm9ybVJlcXVlc3QocixSZXNvdXJjZVR5cGUuVGlsZSksdWlkOmUudWlkLGNvb3JkOmUuY29vcmQsem9vbTplLmNvb3JkLnosdGlsZVNpemU6dGhpcy50aWxlU2l6ZSpvLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkLHBpeGVsUmF0aW86YnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLG92ZXJzY2FsaW5nOm8sYW5nbGU6dGhpcy5tYXAudHJhbnNmb3JtLmFuZ2xlLHBpdGNoOnRoaXMubWFwLnRyYW5zZm9ybS5waXRjaCxjYW1lcmFUb0NlbnRlckRpc3RhbmNlOnRoaXMubWFwLnRyYW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLGNhbWVyYVRvVGlsZURpc3RhbmNlOnRoaXMubWFwLnRyYW5zZm9ybS5jYW1lcmFUb1RpbGVEaXN0YW5jZShlKSxzaG93Q29sbGlzaW9uQm94ZXM6dGhpcy5tYXAuc2hvd0NvbGxpc2lvbkJveGVzfTtlLndvcmtlcklEJiZcImV4cGlyZWRcIiE9PWUuc3RhdGU/XCJsb2FkaW5nXCI9PT1lLnN0YXRlP2UucmVsb2FkQ2FsbGJhY2s9dDp0aGlzLmRpc3BhdGNoZXIuc2VuZChcInJlbG9hZFRpbGVcIixzLGkuYmluZCh0aGlzKSxlLndvcmtlcklEKTplLndvcmtlcklEPXRoaXMuZGlzcGF0Y2hlci5zZW5kKFwibG9hZFRpbGVcIixzLGkuYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLmFib3J0VGlsZT1mdW5jdGlvbihlKXt0aGlzLmRpc3BhdGNoZXIuc2VuZChcImFib3J0VGlsZVwiLHt1aWQ6ZS51aWQsdHlwZTp0aGlzLnR5cGUsc291cmNlOnRoaXMuaWR9LHZvaWQgMCxlLndvcmtlcklEKX0sdC5wcm90b3R5cGUudW5sb2FkVGlsZT1mdW5jdGlvbihlKXtlLnVubG9hZFZlY3RvckRhdGEoKSx0aGlzLmRpc3BhdGNoZXIuc2VuZChcInJlbW92ZVRpbGVcIix7dWlkOmUudWlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSx2b2lkIDAsZS53b3JrZXJJRCl9LHR9KEV2ZW50ZWQpO21vZHVsZS5leHBvcnRzPVZlY3RvclRpbGVTb3VyY2U7XG59LHtcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4uL3V0aWwvZXZlbnRlZFwiOjIxMCxcIi4uL3V0aWwvbWFwYm94XCI6MjE3LFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi9sb2FkX3RpbGVqc29uXCI6OTIsXCIuL3RpbGVfYm91bmRzXCI6MTAwfV0sMTAzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGxvYWRWZWN0b3JUaWxlKGUscil7dmFyIG89YWpheC5nZXRBcnJheUJ1ZmZlcihlLnJlcXVlc3QsZnVuY3Rpb24oZSxvKXtlP3IoZSk6byYmcihudWxsLHt2ZWN0b3JUaWxlOm5ldyB2dC5WZWN0b3JUaWxlKG5ldyBQcm90b2J1ZihvLmRhdGEpKSxyYXdEYXRhOm8uZGF0YSxjYWNoZUNvbnRyb2w6by5jYWNoZUNvbnRyb2wsZXhwaXJlczpvLmV4cGlyZXN9KX0pO3JldHVybiBmdW5jdGlvbigpe28uYWJvcnQoKX19dmFyIGFqYXg9X2RlcmVxXyhcIi4uL3V0aWwvYWpheFwiKSx2dD1fZGVyZXFfKFwiQG1hcGJveC92ZWN0b3ItdGlsZVwiKSxQcm90b2J1Zj1fZGVyZXFfKFwicGJmXCIpLFdvcmtlclRpbGU9X2RlcmVxXyhcIi4vd29ya2VyX3RpbGVcIiksdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLFZlY3RvclRpbGVXb3JrZXJTb3VyY2U9ZnVuY3Rpb24oZSxyLG8pe3RoaXMuYWN0b3I9ZSx0aGlzLmxheWVySW5kZXg9cix0aGlzLmxvYWRWZWN0b3JEYXRhPW98fGxvYWRWZWN0b3JUaWxlLHRoaXMubG9hZGluZz17fSx0aGlzLmxvYWRlZD17fX07VmVjdG9yVGlsZVdvcmtlclNvdXJjZS5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbz10aGlzLHQ9ZS5zb3VyY2UsYT1lLnVpZDt0aGlzLmxvYWRpbmdbdF18fCh0aGlzLmxvYWRpbmdbdF09e30pO3ZhciBpPXRoaXMubG9hZGluZ1t0XVthXT1uZXcgV29ya2VyVGlsZShlKTtpLmFib3J0PXRoaXMubG9hZFZlY3RvckRhdGEoZSxmdW5jdGlvbihlLGwpe2lmKGRlbGV0ZSBvLmxvYWRpbmdbdF1bYV0sZXx8IWwpcmV0dXJuIHIoZSk7dmFyIGM9bC5yYXdEYXRhLG49e307bC5leHBpcmVzJiYobi5leHBpcmVzPWwuZXhwaXJlcyksbC5jYWNoZUNvbnRyb2wmJihuLmNhY2hlQ29udHJvbD1sLmNhY2hlQ29udHJvbCksaS52ZWN0b3JUaWxlPWwudmVjdG9yVGlsZSxpLnBhcnNlKGwudmVjdG9yVGlsZSxvLmxheWVySW5kZXgsby5hY3RvcixmdW5jdGlvbihlLG8sdCl7aWYoZXx8IW8pcmV0dXJuIHIoZSk7cihudWxsLHV0aWwuZXh0ZW5kKHtyYXdUaWxlRGF0YTpjfSxvLG4pLHQpfSksby5sb2FkZWRbdF09by5sb2FkZWRbdF18fHt9LG8ubG9hZGVkW3RdW2FdPWl9KX0sVmVjdG9yVGlsZVdvcmtlclNvdXJjZS5wcm90b3R5cGUucmVsb2FkVGlsZT1mdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG8oZSxvKXtpZih0aGlzLnJlbG9hZENhbGxiYWNrKXt2YXIgdD10aGlzLnJlbG9hZENhbGxiYWNrO2RlbGV0ZSB0aGlzLnJlbG9hZENhbGxiYWNrLHRoaXMucGFyc2UodGhpcy52ZWN0b3JUaWxlLGkubGF5ZXJJbmRleCxpLmFjdG9yLHQpfXIoZSxvKX12YXIgdD10aGlzLmxvYWRlZFtlLnNvdXJjZV0sYT1lLnVpZCxpPXRoaXM7aWYodCYmdFthXSl7dmFyIGw9dFthXTtcInBhcnNpbmdcIj09PWwuc3RhdHVzP2wucmVsb2FkQ2FsbGJhY2s9cjpcImRvbmVcIj09PWwuc3RhdHVzJiZsLnBhcnNlKGwudmVjdG9yVGlsZSx0aGlzLmxheWVySW5kZXgsdGhpcy5hY3RvcixvLmJpbmQobCkpfX0sVmVjdG9yVGlsZVdvcmtlclNvdXJjZS5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMubG9hZGluZ1tlLnNvdXJjZV0sbz1lLnVpZDtyJiZyW29dJiZyW29dLmFib3J0JiYocltvXS5hYm9ydCgpLGRlbGV0ZSByW29dKX0sVmVjdG9yVGlsZVdvcmtlclNvdXJjZS5wcm90b3R5cGUucmVtb3ZlVGlsZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLmxvYWRlZFtlLnNvdXJjZV0sbz1lLnVpZDtyJiZyW29dJiZkZWxldGUgcltvXX0sVmVjdG9yVGlsZVdvcmtlclNvdXJjZS5wcm90b3R5cGUucmVkb1BsYWNlbWVudD1mdW5jdGlvbihlLHIpe3ZhciBvPXRoaXMubG9hZGVkW2Uuc291cmNlXSx0PXRoaXMubG9hZGluZ1tlLnNvdXJjZV0sYT1lLnVpZDtpZihvJiZvW2FdKXt2YXIgaT1vW2FdLGw9aS5yZWRvUGxhY2VtZW50KGUuYW5nbGUsZS5waXRjaCxlLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsZS5jYW1lcmFUb1RpbGVEaXN0YW5jZSxlLnNob3dDb2xsaXNpb25Cb3hlcyk7bC5yZXN1bHQmJnIobnVsbCxsLnJlc3VsdCxsLnRyYW5zZmVyYWJsZXMpfWVsc2UgdCYmdFthXSYmKHRbYV0uYW5nbGU9ZS5hbmdsZSl9LG1vZHVsZS5leHBvcnRzPVZlY3RvclRpbGVXb3JrZXJTb3VyY2U7XG59LHtcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIi4vd29ya2VyX3RpbGVcIjoxMDYsXCJAbWFwYm94L3ZlY3Rvci10aWxlXCI6NixcInBiZlwiOjI5fV0sMTA0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBhamF4PV9kZXJlcV8oXCIuLi91dGlsL2FqYXhcIiksSW1hZ2VTb3VyY2U9X2RlcmVxXyhcIi4vaW1hZ2Vfc291cmNlXCIpLFZpZGVvU291cmNlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxvLGkscil7ZS5jYWxsKHRoaXMsdCxvLGksciksdGhpcy5yb3VuZFpvb209ITAsdGhpcy50eXBlPVwidmlkZW9cIix0aGlzLm9wdGlvbnM9b31yZXR1cm4gZSYmKHQuX19wcm90b19fPWUpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLm9wdGlvbnM7dGhpcy51cmxzPXQudXJscyxhamF4LmdldFZpZGVvKHQudXJscyxmdW5jdGlvbih0LG8pe2lmKHQpZS5maXJlKFwiZXJyb3JcIix7ZXJyb3I6dH0pO2Vsc2UgaWYobyl7ZS52aWRlbz1vLGUudmlkZW8ubG9vcD0hMDt2YXIgaTtlLnZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoXCJwbGF5aW5nXCIsZnVuY3Rpb24oKXtpPWUubWFwLnN0eWxlLmFuaW1hdGlvbkxvb3Auc2V0KDEvMCksZS5tYXAuX3JlcmVuZGVyKCl9KSxlLnZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoXCJwYXVzZVwiLGZ1bmN0aW9uKCl7ZS5tYXAuc3R5bGUuYW5pbWF0aW9uTG9vcC5jYW5jZWwoaSl9KSxlLm1hcCYmZS52aWRlby5wbGF5KCksZS5fZmluaXNoTG9hZGluZygpfX0pfSx0LnByb3RvdHlwZS5nZXRWaWRlbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZGVvfSx0LnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbihlKXt0aGlzLm1hcHx8KHRoaXMubWFwPWUsdGhpcy5sb2FkKCksdGhpcy52aWRlbyYmKHRoaXMudmlkZW8ucGxheSgpLHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcykpKX0sdC5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpezA9PT1PYmplY3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGh8fHRoaXMudmlkZW8ucmVhZHlTdGF0ZTwyfHx0aGlzLl9wcmVwYXJlSW1hZ2UodGhpcy5tYXAucGFpbnRlci5nbCx0aGlzLnZpZGVvKX0sdC5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJ2aWRlb1wiLHVybHM6dGhpcy51cmxzLGNvb3JkaW5hdGVzOnRoaXMuY29vcmRpbmF0ZXN9fSx0fShJbWFnZVNvdXJjZSk7bW9kdWxlLmV4cG9ydHM9VmlkZW9Tb3VyY2U7XG59LHtcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4vaW1hZ2Vfc291cmNlXCI6OTF9XSwxMDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIEFjdG9yPV9kZXJlcV8oXCIuLi91dGlsL2FjdG9yXCIpLFN0eWxlTGF5ZXJJbmRleD1fZGVyZXFfKFwiLi4vc3R5bGUvc3R5bGVfbGF5ZXJfaW5kZXhcIiksVmVjdG9yVGlsZVdvcmtlclNvdXJjZT1fZGVyZXFfKFwiLi92ZWN0b3JfdGlsZV93b3JrZXJfc291cmNlXCIpLEdlb0pTT05Xb3JrZXJTb3VyY2U9X2RlcmVxXyhcIi4vZ2VvanNvbl93b3JrZXJfc291cmNlXCIpLGdsb2JhbFJUTFRleHRQbHVnaW49X2RlcmVxXyhcIi4vcnRsX3RleHRfcGx1Z2luXCIpLFdvcmtlcj1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuc2VsZj1lLHRoaXMuYWN0b3I9bmV3IEFjdG9yKGUsdGhpcyksdGhpcy5sYXllckluZGV4ZXM9e30sdGhpcy53b3JrZXJTb3VyY2VUeXBlcz17dmVjdG9yOlZlY3RvclRpbGVXb3JrZXJTb3VyY2UsZ2VvanNvbjpHZW9KU09OV29ya2VyU291cmNlfSx0aGlzLndvcmtlclNvdXJjZXM9e30sdGhpcy5zZWxmLnJlZ2lzdGVyV29ya2VyU291cmNlPWZ1bmN0aW9uKGUsbyl7aWYoci53b3JrZXJTb3VyY2VUeXBlc1tlXSl0aHJvdyBuZXcgRXJyb3IoJ1dvcmtlciBzb3VyY2Ugd2l0aCBuYW1lIFwiJytlKydcIiBhbHJlYWR5IHJlZ2lzdGVyZWQuJyk7ci53b3JrZXJTb3VyY2VUeXBlc1tlXT1vfSx0aGlzLnNlbGYucmVnaXN0ZXJSVExUZXh0UGx1Z2luPWZ1bmN0aW9uKGUpe2lmKGdsb2JhbFJUTFRleHRQbHVnaW4uYXBwbHlBcmFiaWNTaGFwaW5nfHxnbG9iYWxSVExUZXh0UGx1Z2luLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dCl0aHJvdyBuZXcgRXJyb3IoXCJSVEwgdGV4dCBwbHVnaW4gYWxyZWFkeSByZWdpc3RlcmVkLlwiKTtnbG9iYWxSVExUZXh0UGx1Z2luLmFwcGx5QXJhYmljU2hhcGluZz1lLmFwcGx5QXJhYmljU2hhcGluZyxnbG9iYWxSVExUZXh0UGx1Z2luLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dD1lLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dH19O1dvcmtlci5wcm90b3R5cGUuc2V0TGF5ZXJzPWZ1bmN0aW9uKGUscil7dGhpcy5nZXRMYXllckluZGV4KGUpLnJlcGxhY2Uocil9LFdvcmtlci5wcm90b3R5cGUudXBkYXRlTGF5ZXJzPWZ1bmN0aW9uKGUscil7dGhpcy5nZXRMYXllckluZGV4KGUpLnVwZGF0ZShyLmxheWVycyxyLnJlbW92ZWRJZHMsci5zeW1ib2xPcmRlcil9LFdvcmtlci5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyLG8pe3RoaXMuZ2V0V29ya2VyU291cmNlKGUsci50eXBlKS5sb2FkVGlsZShyLG8pfSxXb3JrZXIucHJvdG90eXBlLnJlbG9hZFRpbGU9ZnVuY3Rpb24oZSxyLG8pe3RoaXMuZ2V0V29ya2VyU291cmNlKGUsci50eXBlKS5yZWxvYWRUaWxlKHIsbyl9LFdvcmtlci5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKGUscil7dGhpcy5nZXRXb3JrZXJTb3VyY2UoZSxyLnR5cGUpLmFib3J0VGlsZShyKX0sV29ya2VyLnByb3RvdHlwZS5yZW1vdmVUaWxlPWZ1bmN0aW9uKGUscil7dGhpcy5nZXRXb3JrZXJTb3VyY2UoZSxyLnR5cGUpLnJlbW92ZVRpbGUocil9LFdvcmtlci5wcm90b3R5cGUucmVtb3ZlU291cmNlPWZ1bmN0aW9uKGUscil7dmFyIG89dGhpcy5nZXRXb3JrZXJTb3VyY2UoZSxyLnR5cGUpO3ZvaWQgMCE9PW8ucmVtb3ZlU291cmNlJiZvLnJlbW92ZVNvdXJjZShyKX0sV29ya2VyLnByb3RvdHlwZS5yZWRvUGxhY2VtZW50PWZ1bmN0aW9uKGUscixvKXt0aGlzLmdldFdvcmtlclNvdXJjZShlLHIudHlwZSkucmVkb1BsYWNlbWVudChyLG8pfSxXb3JrZXIucHJvdG90eXBlLmxvYWRXb3JrZXJTb3VyY2U9ZnVuY3Rpb24oZSxyLG8pe3RyeXt0aGlzLnNlbGYuaW1wb3J0U2NyaXB0cyhyLnVybCksbygpfWNhdGNoKGUpe28oZSl9fSxXb3JrZXIucHJvdG90eXBlLmxvYWRSVExUZXh0UGx1Z2luPWZ1bmN0aW9uKGUscixvKXt0cnl7Z2xvYmFsUlRMVGV4dFBsdWdpbi5hcHBseUFyYWJpY1NoYXBpbmd8fGdsb2JhbFJUTFRleHRQbHVnaW4ucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0fHwodGhpcy5zZWxmLmltcG9ydFNjcmlwdHMociksZ2xvYmFsUlRMVGV4dFBsdWdpbi5hcHBseUFyYWJpY1NoYXBpbmcmJmdsb2JhbFJUTFRleHRQbHVnaW4ucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0fHxvKG5ldyBFcnJvcihcIlJUTCBUZXh0IFBsdWdpbiBmYWlsZWQgdG8gaW1wb3J0IHNjcmlwdHMgZnJvbSBcIityKSkpfWNhdGNoKGUpe28oZSl9fSxXb3JrZXIucHJvdG90eXBlLmdldExheWVySW5kZXg9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5sYXllckluZGV4ZXNbZV07cmV0dXJuIHJ8fChyPXRoaXMubGF5ZXJJbmRleGVzW2VdPW5ldyBTdHlsZUxheWVySW5kZXgpLHJ9LFdvcmtlci5wcm90b3R5cGUuZ2V0V29ya2VyU291cmNlPWZ1bmN0aW9uKGUscil7dmFyIG89dGhpcztpZih0aGlzLndvcmtlclNvdXJjZXNbZV18fCh0aGlzLndvcmtlclNvdXJjZXNbZV09e30pLCF0aGlzLndvcmtlclNvdXJjZXNbZV1bcl0pe3ZhciB0PXtzZW5kOmZ1bmN0aW9uKHIsdCxpLG4pe28uYWN0b3Iuc2VuZChyLHQsaSxuLGUpfX07dGhpcy53b3JrZXJTb3VyY2VzW2VdW3JdPW5ldyB0aGlzLndvcmtlclNvdXJjZVR5cGVzW3JdKHQsdGhpcy5nZXRMYXllckluZGV4KGUpKX1yZXR1cm4gdGhpcy53b3JrZXJTb3VyY2VzW2VdW3JdfSxtb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFdvcmtlcihlKX07XG59LHtcIi4uL3N0eWxlL3N0eWxlX2xheWVyX2luZGV4XCI6MTY0LFwiLi4vdXRpbC9hY3RvclwiOjIwMCxcIi4vZ2VvanNvbl93b3JrZXJfc291cmNlXCI6ODksXCIuL3J0bF90ZXh0X3BsdWdpblwiOjk2LFwiLi92ZWN0b3JfdGlsZV93b3JrZXJfc291cmNlXCI6MTAzfV0sMTA2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHJlY2FsY3VsYXRlTGF5ZXJzKGUsaSl7Zm9yKHZhciByPTAsdD1lLmxheWVycztyPHQubGVuZ3RoO3IrPTEpe3Rbcl0ucmVjYWxjdWxhdGUoaSl9fWZ1bmN0aW9uIHNlcmlhbGl6ZUJ1Y2tldHMoZSxpKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuaXNFbXB0eSgpfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlcmlhbGl6ZShpKX0pfXZhciBGZWF0dXJlSW5kZXg9X2RlcmVxXyhcIi4uL2RhdGEvZmVhdHVyZV9pbmRleFwiKSxDb2xsaXNpb25UaWxlPV9kZXJlcV8oXCIuLi9zeW1ib2wvY29sbGlzaW9uX3RpbGVcIiksQ29sbGlzaW9uQm94QXJyYXk9X2RlcmVxXyhcIi4uL3N5bWJvbC9jb2xsaXNpb25fYm94XCIpLERpY3Rpb25hcnlDb2Rlcj1fZGVyZXFfKFwiLi4vdXRpbC9kaWN0aW9uYXJ5X2NvZGVyXCIpLFN5bWJvbEJ1Y2tldD1fZGVyZXFfKFwiLi4vZGF0YS9idWNrZXQvc3ltYm9sX2J1Y2tldFwiKSx1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIikscmVmPV9kZXJlcV8oXCIuLi9yZW5kZXIvaW1hZ2VfYXRsYXNcIiksbWFrZUltYWdlQXRsYXM9cmVmLm1ha2VJbWFnZUF0bGFzLHJlZiQxPV9kZXJlcV8oXCIuLi9yZW5kZXIvZ2x5cGhfYXRsYXNcIiksbWFrZUdseXBoQXRsYXM9cmVmJDEubWFrZUdseXBoQXRsYXMsV29ya2VyVGlsZT1mdW5jdGlvbihlKXt0aGlzLmNvb3JkPWUuY29vcmQsdGhpcy51aWQ9ZS51aWQsdGhpcy56b29tPWUuem9vbSx0aGlzLnBpeGVsUmF0aW89ZS5waXhlbFJhdGlvLHRoaXMudGlsZVNpemU9ZS50aWxlU2l6ZSx0aGlzLnNvdXJjZT1lLnNvdXJjZSx0aGlzLm92ZXJzY2FsaW5nPWUub3ZlcnNjYWxpbmcsdGhpcy5hbmdsZT1lLmFuZ2xlLHRoaXMucGl0Y2g9ZS5waXRjaCx0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U9ZS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLHRoaXMuY2FtZXJhVG9UaWxlRGlzdGFuY2U9ZS5jYW1lcmFUb1RpbGVEaXN0YW5jZSx0aGlzLnNob3dDb2xsaXNpb25Cb3hlcz1lLnNob3dDb2xsaXNpb25Cb3hlc307V29ya2VyVGlsZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSxpLHIsdCl7ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7aWYoRClyZXR1cm4gdChEKTtpZihBJiZDKXtmb3IodmFyIGk9bmV3IENvbGxpc2lvblRpbGUodGhpcy5hbmdsZSx0aGlzLnBpdGNoLHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSx0aGlzLmNhbWVyYVRvVGlsZURpc3RhbmNlLHRoaXMuY29sbGlzaW9uQm94QXJyYXkpLHI9bWFrZUdseXBoQXRsYXMoQSksYT1tYWtlSW1hZ2VBdGxhcyhDKSxvPTAscz1lLnN5bWJvbEJ1Y2tldHM7bzxzLmxlbmd0aDtvKz0xKXt2YXIgYz1zW29dO3JlY2FsY3VsYXRlTGF5ZXJzKGMsZS56b29tKSxjLnByZXBhcmUoQSxyLnBvc2l0aW9ucyxDLGEucG9zaXRpb25zKSxjLnBsYWNlKGksZS5zaG93Q29sbGlzaW9uQm94ZXMpfXRoaXMuc3RhdHVzPVwiZG9uZVwiO3ZhciB1PVtyLmltYWdlLmRhdGEuYnVmZmVyLGEuaW1hZ2UuZGF0YS5idWZmZXJdO3QobnVsbCx7YnVja2V0czpzZXJpYWxpemVCdWNrZXRzKHV0aWwudmFsdWVzKG4pLHUpLGZlYXR1cmVJbmRleDpsLnNlcmlhbGl6ZSh1KSxjb2xsaXNpb25UaWxlOmkuc2VyaWFsaXplKHUpLGNvbGxpc2lvbkJveEFycmF5OnRoaXMuY29sbGlzaW9uQm94QXJyYXkuc2VyaWFsaXplKCksZ2x5cGhBdGxhc0ltYWdlOnIuaW1hZ2UsaWNvbkF0bGFzSW1hZ2U6YS5pbWFnZX0sdSl9fXZhciBvPXRoaXM7dGhpcy5zdGF0dXM9XCJwYXJzaW5nXCIsdGhpcy5kYXRhPWUsdGhpcy5jb2xsaXNpb25Cb3hBcnJheT1uZXcgQ29sbGlzaW9uQm94QXJyYXk7dmFyIHM9bmV3IERpY3Rpb25hcnlDb2RlcihPYmplY3Qua2V5cyhlLmxheWVycykuc29ydCgpKSxsPW5ldyBGZWF0dXJlSW5kZXgodGhpcy5jb29yZCx0aGlzLm92ZXJzY2FsaW5nKTtsLmJ1Y2tldExheWVySURzPVtdO3ZhciBuPXt9LGM9e2ZlYXR1cmVJbmRleDpsLGljb25EZXBlbmRlbmNpZXM6e30sZ2x5cGhEZXBlbmRlbmNpZXM6e319LHU9aS5mYW1pbGllc0J5U291cmNlW3RoaXMuc291cmNlXTtmb3IodmFyIGggaW4gdSl7dmFyIG09ZS5sYXllcnNbaF07aWYobSl7MT09PW0udmVyc2lvbiYmdXRpbC53YXJuT25jZSgnVmVjdG9yIHRpbGUgc291cmNlIFwiJytvLnNvdXJjZSsnXCIgbGF5ZXIgXCInK2grJ1wiIGRvZXMgbm90IHVzZSB2ZWN0b3IgdGlsZSBzcGVjIHYyIGFuZCB0aGVyZWZvcmUgbWF5IGhhdmUgc29tZSByZW5kZXJpbmcgZXJyb3JzLicpO2Zvcih2YXIgeT1zLmVuY29kZShoKSxwPVtdLGQ9MDtkPG0ubGVuZ3RoO2QrKyl7dmFyIGY9bS5mZWF0dXJlKGQpO3AucHVzaCh7ZmVhdHVyZTpmLGluZGV4OmQsc291cmNlTGF5ZXJJbmRleDp5fSl9Zm9yKHZhciBnPTAsdj11W2hdO2c8di5sZW5ndGg7Zys9MSl7dmFyIGs9dltnXSxiPWtbMF07aWYoIShiLm1pbnpvb20mJm8uem9vbTxNYXRoLmZsb29yKGIubWluem9vbSkpJiYhKGIubWF4em9vbSYmby56b29tPj1iLm1heHpvb218fGIubGF5b3V0JiZcIm5vbmVcIj09PWIubGF5b3V0LnZpc2liaWxpdHkpKXtmb3IodmFyIHg9MCxUPWs7eDxULmxlbmd0aDt4Kz0xKXtUW3hdLnJlY2FsY3VsYXRlKG8uem9vbSl9KG5bYi5pZF09Yi5jcmVhdGVCdWNrZXQoe2luZGV4OmwuYnVja2V0TGF5ZXJJRHMubGVuZ3RoLGxheWVyczprLHpvb206by56b29tLHBpeGVsUmF0aW86by5waXhlbFJhdGlvLG92ZXJzY2FsaW5nOm8ub3ZlcnNjYWxpbmcsY29sbGlzaW9uQm94QXJyYXk6by5jb2xsaXNpb25Cb3hBcnJheX0pKS5wb3B1bGF0ZShwLGMpLGwuYnVja2V0TGF5ZXJJRHMucHVzaChrLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZH0pKX19fX10aGlzLnN5bWJvbEJ1Y2tldHM9W107Zm9yKHZhciB6PWkuc3ltYm9sT3JkZXIubGVuZ3RoLTE7ej49MDt6LS0pe3ZhciBCPW5baS5zeW1ib2xPcmRlclt6XV07QiYmby5zeW1ib2xCdWNrZXRzLnB1c2goQil9dmFyIEQsQSxDLEk9dXRpbC5tYXBPYmplY3QoYy5nbHlwaERlcGVuZGVuY2llcyxmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKE51bWJlcil9KTtPYmplY3Qua2V5cyhJKS5sZW5ndGg/ci5zZW5kKFwiZ2V0R2x5cGhzXCIse3VpZDp0aGlzLnVpZCxzdGFja3M6SX0sZnVuY3Rpb24oZSxpKXtEfHwoRD1lLEE9aSxhLmNhbGwobykpfSk6QT17fTt2YXIgdz1PYmplY3Qua2V5cyhjLmljb25EZXBlbmRlbmNpZXMpO3cubGVuZ3RoP3Iuc2VuZChcImdldEltYWdlc1wiLHtpY29uczp3fSxmdW5jdGlvbihlLGkpe0R8fChEPWUsQz1pLGEuY2FsbChvKSl9KTpDPXt9LGEuY2FsbCh0aGlzKX0sV29ya2VyVGlsZS5wcm90b3R5cGUucmVkb1BsYWNlbWVudD1mdW5jdGlvbihlLGkscix0LGEpe3ZhciBvPXRoaXM7aWYodGhpcy5hbmdsZT1lLHRoaXMucGl0Y2g9aSx0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U9cix0aGlzLmNhbWVyYVRvVGlsZURpc3RhbmNlPXQsXCJkb25lXCIhPT10aGlzLnN0YXR1cylyZXR1cm57fTtmb3IodmFyIHM9bmV3IENvbGxpc2lvblRpbGUodGhpcy5hbmdsZSx0aGlzLnBpdGNoLHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSx0aGlzLmNhbWVyYVRvVGlsZURpc3RhbmNlLHRoaXMuY29sbGlzaW9uQm94QXJyYXkpLGw9MCxuPW8uc3ltYm9sQnVja2V0cztsPG4ubGVuZ3RoO2wrPTEpe3ZhciBjPW5bbF07cmVjYWxjdWxhdGVMYXllcnMoYyxvLnpvb20pLGMucGxhY2UocyxhKX12YXIgdT1bXTtyZXR1cm57cmVzdWx0OntidWNrZXRzOnNlcmlhbGl6ZUJ1Y2tldHModGhpcy5zeW1ib2xCdWNrZXRzLHUpLGNvbGxpc2lvblRpbGU6cy5zZXJpYWxpemUodSl9LHRyYW5zZmVyYWJsZXM6dX19LG1vZHVsZS5leHBvcnRzPVdvcmtlclRpbGU7XG59LHtcIi4uL2RhdGEvYnVja2V0L3N5bWJvbF9idWNrZXRcIjo0NyxcIi4uL2RhdGEvZmVhdHVyZV9pbmRleFwiOjQ5LFwiLi4vcmVuZGVyL2dseXBoX2F0bGFzXCI6NzQsXCIuLi9yZW5kZXIvaW1hZ2VfYXRsYXNcIjo3NixcIi4uL3N5bWJvbC9jb2xsaXNpb25fYm94XCI6MTcwLFwiLi4vc3ltYm9sL2NvbGxpc2lvbl90aWxlXCI6MTcyLFwiLi4vdXRpbC9kaWN0aW9uYXJ5X2NvZGVyXCI6MjA3LFwiLi4vdXRpbC91dGlsXCI6MjIzfV0sMTA3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGRlcmVmKHIsZSl7dmFyIGY9e307Zm9yKHZhciB0IGluIHIpXCJyZWZcIiE9PXQmJihmW3RdPXJbdF0pO3JldHVybiByZWZQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24ocil7ciBpbiBlJiYoZltyXT1lW3JdKX0pLGZ9ZnVuY3Rpb24gZGVyZWZMYXllcnMocil7cj1yLnNsaWNlKCk7Zm9yKHZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksZj0wO2Y8ci5sZW5ndGg7ZisrKWVbcltmXS5pZF09cltmXTtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKylcInJlZlwiaW4gclt0XSYmKHJbdF09ZGVyZWYoclt0XSxlW3JbdF0ucmVmXSkpO3JldHVybiByfXZhciByZWZQcm9wZXJ0aWVzPV9kZXJlcV8oXCIuL3V0aWwvcmVmX3Byb3BlcnRpZXNcIik7bW9kdWxlLmV4cG9ydHM9ZGVyZWZMYXllcnM7XG59LHtcIi4vdXRpbC9yZWZfcHJvcGVydGllc1wiOjEyOX1dLDEwODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBkaWZmU291cmNlcyhlLHIsbyxhKXtlPWV8fHt9LHI9cnx8e307dmFyIHM7Zm9yKHMgaW4gZSllLmhhc093blByb3BlcnR5KHMpJiYoci5oYXNPd25Qcm9wZXJ0eShzKXx8KG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnJlbW92ZVNvdXJjZSxhcmdzOltzXX0pLGFbc109ITApKTtmb3IocyBpbiByKXIuaGFzT3duUHJvcGVydHkocykmJihlLmhhc093blByb3BlcnR5KHMpP2lzRXF1YWwoZVtzXSxyW3NdKXx8KG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnJlbW92ZVNvdXJjZSxhcmdzOltzXX0pLG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLmFkZFNvdXJjZSxhcmdzOltzLHJbc11dfSksYVtzXT0hMCk6by5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMuYWRkU291cmNlLGFyZ3M6W3MscltzXV19KSl9ZnVuY3Rpb24gZGlmZkxheWVyUHJvcGVydHlDaGFuZ2VzKGUscixvLGEscyx0KXtlPWV8fHt9LHI9cnx8e307dmFyIG47Zm9yKG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYoaXNFcXVhbChlW25dLHJbbl0pfHxvLnB1c2goe2NvbW1hbmQ6dCxhcmdzOlthLG4scltuXSxzXX0pKTtmb3IobiBpbiByKXIuaGFzT3duUHJvcGVydHkobikmJiFlLmhhc093blByb3BlcnR5KG4pJiYoaXNFcXVhbChlW25dLHJbbl0pfHxvLnB1c2goe2NvbW1hbmQ6dCxhcmdzOlthLG4scltuXSxzXX0pKX1mdW5jdGlvbiBwbHVja0lkKGUpe3JldHVybiBlLmlkfWZ1bmN0aW9uIGluZGV4QnlJZChlLHIpe3JldHVybiBlW3IuaWRdPXIsZX1mdW5jdGlvbiBkaWZmTGF5ZXJzKGUscixvKXtlPWV8fFtdLHI9cnx8W107dmFyIGEscyx0LG4saSxwLG0sdT1lLm1hcChwbHVja0lkKSxsPXIubWFwKHBsdWNrSWQpLHk9ZS5yZWR1Y2UoaW5kZXhCeUlkLHt9KSxjPXIucmVkdWNlKGluZGV4QnlJZCx7fSksZD11LnNsaWNlKCksaD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihhPTAscz0wO2E8dS5sZW5ndGg7YSsrKXQ9dVthXSxjLmhhc093blByb3BlcnR5KHQpP3MrKzooby5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMucmVtb3ZlTGF5ZXIsYXJnczpbdF19KSxkLnNwbGljZShkLmluZGV4T2YodCxzKSwxKSk7Zm9yKGE9MCxzPTA7YTxsLmxlbmd0aDthKyspdD1sW2wubGVuZ3RoLTEtYV0sZFtkLmxlbmd0aC0xLWFdIT09dCYmKHkuaGFzT3duUHJvcGVydHkodCk/KG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnJlbW92ZUxheWVyLGFyZ3M6W3RdfSksZC5zcGxpY2UoZC5sYXN0SW5kZXhPZih0LGQubGVuZ3RoLXMpLDEpKTpzKysscD1kW2QubGVuZ3RoLWFdLG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLmFkZExheWVyLGFyZ3M6W2NbdF0scF19KSxkLnNwbGljZShkLmxlbmd0aC1hLDAsdCksaFt0XT0hMCk7Zm9yKGE9MDthPGwubGVuZ3RoO2ErKylpZih0PWxbYV0sbj15W3RdLGk9Y1t0XSwhaFt0XSYmIWlzRXF1YWwobixpKSlpZihpc0VxdWFsKG4uc291cmNlLGkuc291cmNlKSYmaXNFcXVhbChuW1wic291cmNlLWxheWVyXCJdLGlbXCJzb3VyY2UtbGF5ZXJcIl0pJiZpc0VxdWFsKG4udHlwZSxpLnR5cGUpKXtkaWZmTGF5ZXJQcm9wZXJ0eUNoYW5nZXMobi5sYXlvdXQsaS5sYXlvdXQsbyx0LG51bGwsb3BlcmF0aW9ucy5zZXRMYXlvdXRQcm9wZXJ0eSksZGlmZkxheWVyUHJvcGVydHlDaGFuZ2VzKG4ucGFpbnQsaS5wYWludCxvLHQsbnVsbCxvcGVyYXRpb25zLnNldFBhaW50UHJvcGVydHkpLGlzRXF1YWwobi5maWx0ZXIsaS5maWx0ZXIpfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRGaWx0ZXIsYXJnczpbdCxpLmZpbHRlcl19KSxpc0VxdWFsKG4ubWluem9vbSxpLm1pbnpvb20pJiZpc0VxdWFsKG4ubWF4em9vbSxpLm1heHpvb20pfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRMYXllclpvb21SYW5nZSxhcmdzOlt0LGkubWluem9vbSxpLm1heHpvb21dfSk7Zm9yKG0gaW4gbiluLmhhc093blByb3BlcnR5KG0pJiZcImxheW91dFwiIT09bSYmXCJwYWludFwiIT09bSYmXCJmaWx0ZXJcIiE9PW0mJlwibWV0YWRhdGFcIiE9PW0mJlwibWluem9vbVwiIT09bSYmXCJtYXh6b29tXCIhPT1tJiYoMD09PW0uaW5kZXhPZihcInBhaW50LlwiKT9kaWZmTGF5ZXJQcm9wZXJ0eUNoYW5nZXMoblttXSxpW21dLG8sdCxtLnNsaWNlKDYpLG9wZXJhdGlvbnMuc2V0UGFpbnRQcm9wZXJ0eSk6aXNFcXVhbChuW21dLGlbbV0pfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRMYXllclByb3BlcnR5LGFyZ3M6W3QsbSxpW21dXX0pKTtmb3IobSBpbiBpKWkuaGFzT3duUHJvcGVydHkobSkmJiFuLmhhc093blByb3BlcnR5KG0pJiZcImxheW91dFwiIT09bSYmXCJwYWludFwiIT09bSYmXCJmaWx0ZXJcIiE9PW0mJlwibWV0YWRhdGFcIiE9PW0mJlwibWluem9vbVwiIT09bSYmXCJtYXh6b29tXCIhPT1tJiYoMD09PW0uaW5kZXhPZihcInBhaW50LlwiKT9kaWZmTGF5ZXJQcm9wZXJ0eUNoYW5nZXMoblttXSxpW21dLG8sdCxtLnNsaWNlKDYpLG9wZXJhdGlvbnMuc2V0UGFpbnRQcm9wZXJ0eSk6aXNFcXVhbChuW21dLGlbbV0pfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRMYXllclByb3BlcnR5LGFyZ3M6W3QsbSxpW21dXX0pKX1lbHNlIG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnJlbW92ZUxheWVyLGFyZ3M6W3RdfSkscD1kW2QubGFzdEluZGV4T2YodCkrMV0sby5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMuYWRkTGF5ZXIsYXJnczpbaSxwXX0pfWZ1bmN0aW9uIGRpZmZTdHlsZXMoZSxyKXtpZighZSlyZXR1cm5be2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRTdHlsZSxhcmdzOltyXX1dO3ZhciBvPVtdO3RyeXtpZighaXNFcXVhbChlLnZlcnNpb24sci52ZXJzaW9uKSlyZXR1cm5be2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRTdHlsZSxhcmdzOltyXX1dO2lzRXF1YWwoZS5jZW50ZXIsci5jZW50ZXIpfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRDZW50ZXIsYXJnczpbci5jZW50ZXJdfSksaXNFcXVhbChlLnpvb20sci56b29tKXx8by5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMuc2V0Wm9vbSxhcmdzOltyLnpvb21dfSksaXNFcXVhbChlLmJlYXJpbmcsci5iZWFyaW5nKXx8by5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMuc2V0QmVhcmluZyxhcmdzOltyLmJlYXJpbmddfSksaXNFcXVhbChlLnBpdGNoLHIucGl0Y2gpfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRQaXRjaCxhcmdzOltyLnBpdGNoXX0pLGlzRXF1YWwoZS5zcHJpdGUsci5zcHJpdGUpfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRTcHJpdGUsYXJnczpbci5zcHJpdGVdfSksaXNFcXVhbChlLmdseXBocyxyLmdseXBocyl8fG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnNldEdseXBocyxhcmdzOltyLmdseXBoc119KSxpc0VxdWFsKGUudHJhbnNpdGlvbixyLnRyYW5zaXRpb24pfHxvLnB1c2goe2NvbW1hbmQ6b3BlcmF0aW9ucy5zZXRUcmFuc2l0aW9uLGFyZ3M6W3IudHJhbnNpdGlvbl19KSxpc0VxdWFsKGUubGlnaHQsci5saWdodCl8fG8ucHVzaCh7Y29tbWFuZDpvcGVyYXRpb25zLnNldExpZ2h0LGFyZ3M6W3IubGlnaHRdfSk7dmFyIGE9e30scz1bXTtkaWZmU291cmNlcyhlLnNvdXJjZXMsci5zb3VyY2VzLHMsYSk7dmFyIHQ9W107ZS5sYXllcnMmJmUubGF5ZXJzLmZvckVhY2goZnVuY3Rpb24oZSl7YVtlLnNvdXJjZV0/by5wdXNoKHtjb21tYW5kOm9wZXJhdGlvbnMucmVtb3ZlTGF5ZXIsYXJnczpbZS5pZF19KTp0LnB1c2goZSl9KSxvPW8uY29uY2F0KHMpLGRpZmZMYXllcnModCxyLmxheWVycyxvKX1jYXRjaChlKXtjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gY29tcHV0ZSBzdHlsZSBkaWZmOlwiLGUpLG89W3tjb21tYW5kOm9wZXJhdGlvbnMuc2V0U3R5bGUsYXJnczpbcl19XX1yZXR1cm4gb312YXIgaXNFcXVhbD1fZGVyZXFfKFwibG9kYXNoLmlzZXF1YWxcIiksb3BlcmF0aW9ucz17c2V0U3R5bGU6XCJzZXRTdHlsZVwiLGFkZExheWVyOlwiYWRkTGF5ZXJcIixyZW1vdmVMYXllcjpcInJlbW92ZUxheWVyXCIsc2V0UGFpbnRQcm9wZXJ0eTpcInNldFBhaW50UHJvcGVydHlcIixzZXRMYXlvdXRQcm9wZXJ0eTpcInNldExheW91dFByb3BlcnR5XCIsc2V0RmlsdGVyOlwic2V0RmlsdGVyXCIsYWRkU291cmNlOlwiYWRkU291cmNlXCIscmVtb3ZlU291cmNlOlwicmVtb3ZlU291cmNlXCIsc2V0TGF5ZXJab29tUmFuZ2U6XCJzZXRMYXllclpvb21SYW5nZVwiLHNldExheWVyUHJvcGVydHk6XCJzZXRMYXllclByb3BlcnR5XCIsc2V0Q2VudGVyOlwic2V0Q2VudGVyXCIsc2V0Wm9vbTpcInNldFpvb21cIixzZXRCZWFyaW5nOlwic2V0QmVhcmluZ1wiLHNldFBpdGNoOlwic2V0UGl0Y2hcIixzZXRTcHJpdGU6XCJzZXRTcHJpdGVcIixzZXRHbHlwaHM6XCJzZXRHbHlwaHNcIixzZXRUcmFuc2l0aW9uOlwic2V0VHJhbnNpdGlvblwiLHNldExpZ2h0Olwic2V0TGlnaHRcIn07bW9kdWxlLmV4cG9ydHM9ZGlmZlN0eWxlcyxtb2R1bGUuZXhwb3J0cy5vcGVyYXRpb25zPW9wZXJhdGlvbnM7XG59LHtcImxvZGFzaC5pc2VxdWFsXCI6MTIwfV0sMTA5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIFZhbGlkYXRpb25FcnJvcihyLGkpe2Zvcih2YXIgdD1bXSxvPWFyZ3VtZW50cy5sZW5ndGgtMjtvLS0gPjA7KXRbb109YXJndW1lbnRzW28rMl07dGhpcy5tZXNzYWdlPShyP3IrXCI6IFwiOlwiXCIpK2Zvcm1hdC5hcHBseShmb3JtYXQsdCksbnVsbCE9PWkmJnZvaWQgMCE9PWkmJmkuX19saW5lX18mJih0aGlzLmxpbmU9aS5fX2xpbmVfXyl9dmFyIGZvcm1hdD1fZGVyZXFfKFwidXRpbFwiKS5mb3JtYXQ7bW9kdWxlLmV4cG9ydHM9VmFsaWRhdGlvbkVycm9yO1xufSx7XCJ1dGlsXCI6MzZ9XSwxMTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGUpe3JldHVybiBuZXcgRnVuY3Rpb24oXCJmXCIsXCJ2YXIgcCA9IChmICYmIGYucHJvcGVydGllcyB8fCB7fSk7IHJldHVybiBcIitjb21waWxlKGUpKX1mdW5jdGlvbiBjb21waWxlKGUpe2lmKCFlKXJldHVyblwidHJ1ZVwiO3ZhciBpPWVbMF07cmV0dXJuIGUubGVuZ3RoPD0xP1wiYW55XCI9PT1pP1wiZmFsc2VcIjpcInRydWVcIjpcIihcIisoXCI9PVwiPT09aT9jb21waWxlQ29tcGFyaXNvbk9wKGVbMV0sZVsyXSxcIj09PVwiLCExKTpcIiE9XCI9PT1pP2NvbXBpbGVDb21wYXJpc29uT3AoZVsxXSxlWzJdLFwiIT09XCIsITEpOlwiPFwiPT09aXx8XCI+XCI9PT1pfHxcIjw9XCI9PT1pfHxcIj49XCI9PT1pP2NvbXBpbGVDb21wYXJpc29uT3AoZVsxXSxlWzJdLGksITApOlwiYW55XCI9PT1pP2NvbXBpbGVMb2dpY2FsT3AoZS5zbGljZSgxKSxcInx8XCIpOlwiYWxsXCI9PT1pP2NvbXBpbGVMb2dpY2FsT3AoZS5zbGljZSgxKSxcIiYmXCIpOlwibm9uZVwiPT09aT9jb21waWxlTmVnYXRpb24oY29tcGlsZUxvZ2ljYWxPcChlLnNsaWNlKDEpLFwifHxcIikpOlwiaW5cIj09PWk/Y29tcGlsZUluT3AoZVsxXSxlLnNsaWNlKDIpKTpcIiFpblwiPT09aT9jb21waWxlTmVnYXRpb24oY29tcGlsZUluT3AoZVsxXSxlLnNsaWNlKDIpKSk6XCJoYXNcIj09PWk/Y29tcGlsZUhhc09wKGVbMV0pOlwiIWhhc1wiPT09aT9jb21waWxlTmVnYXRpb24oY29tcGlsZUhhc09wKGVbMV0pKTpcInRydWVcIikrXCIpXCJ9ZnVuY3Rpb24gY29tcGlsZVByb3BlcnR5UmVmZXJlbmNlKGUpe3JldHVyblwiJHR5cGVcIj09PWU/XCJmLnR5cGVcIjpcIiRpZFwiPT09ZT9cImYuaWRcIjpcInBbXCIrSlNPTi5zdHJpbmdpZnkoZSkrXCJdXCJ9ZnVuY3Rpb24gY29tcGlsZUNvbXBhcmlzb25PcChlLGksbixvKXt2YXIgcj1jb21waWxlUHJvcGVydHlSZWZlcmVuY2UoZSkscD1cIiR0eXBlXCI9PT1lP3R5cGVzLmluZGV4T2YoaSk6SlNPTi5zdHJpbmdpZnkoaSk7cmV0dXJuKG8/XCJ0eXBlb2YgXCIrcitcIj09PSB0eXBlb2YgXCIrcCtcIiYmXCI6XCJcIikrcituK3B9ZnVuY3Rpb24gY29tcGlsZUxvZ2ljYWxPcChlLGkpe3JldHVybiBlLm1hcChjb21waWxlKS5qb2luKGkpfWZ1bmN0aW9uIGNvbXBpbGVJbk9wKGUsaSl7XCIkdHlwZVwiPT09ZSYmKGk9aS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVzLmluZGV4T2YoZSl9KSk7dmFyIG49SlNPTi5zdHJpbmdpZnkoaS5zb3J0KGNvbXBhcmUpKSxvPWNvbXBpbGVQcm9wZXJ0eVJlZmVyZW5jZShlKTtyZXR1cm4gaS5sZW5ndGg8PTIwMD9uK1wiLmluZGV4T2YoXCIrbytcIikgIT09IC0xXCI6XCJmdW5jdGlvbih2LCBhLCBpLCBqKSB7d2hpbGUgKGkgPD0gaikgeyB2YXIgbSA9IChpICsgaikgPj4gMTsgICAgaWYgKGFbbV0gPT09IHYpIHJldHVybiB0cnVlOyBpZiAoYVttXSA+IHYpIGogPSBtIC0gMTsgZWxzZSBpID0gbSArIDE7fXJldHVybiBmYWxzZTsgfShcIitvK1wiLCBcIituK1wiLDAsXCIrKGkubGVuZ3RoLTEpK1wiKVwifWZ1bmN0aW9uIGNvbXBpbGVIYXNPcChlKXtyZXR1cm5cIiRpZFwiPT09ZT8nXCJpZFwiIGluIGYnOkpTT04uc3RyaW5naWZ5KGUpK1wiIGluIHBcIn1mdW5jdGlvbiBjb21waWxlTmVnYXRpb24oZSl7cmV0dXJuXCIhKFwiK2UrXCIpXCJ9ZnVuY3Rpb24gY29tcGFyZShlLGkpe3JldHVybiBlPGk/LTE6ZT5pPzE6MH1tb2R1bGUuZXhwb3J0cz1jcmVhdGVGaWx0ZXI7dmFyIHR5cGVzPVtcIlVua25vd25cIixcIlBvaW50XCIsXCJMaW5lU3RyaW5nXCIsXCJQb2x5Z29uXCJdO1xufSx7fV0sMTExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHh5ejJsYWIocil7cmV0dXJuIHI+dDM/TWF0aC5wb3cociwxLzMpOnIvdDIrdDB9ZnVuY3Rpb24gbGFiMnh5eihyKXtyZXR1cm4gcj50MT9yKnIqcjp0Miooci10MCl9ZnVuY3Rpb24geHl6MnJnYihyKXtyZXR1cm4gMjU1KihyPD0uMDAzMTMwOD8xMi45MipyOjEuMDU1Kk1hdGgucG93KHIsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIHJnYjJ4eXoocil7cmV0dXJuIHIvPTI1NSxyPD0uMDQwNDU/ci8xMi45MjpNYXRoLnBvdygocisuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIHJnYlRvTGFiKHIpe3ZhciB0PXJnYjJ4eXooclswXSksYT1yZ2IyeHl6KHJbMV0pLG49cmdiMnh5eihyWzJdKSxiPXh5ejJsYWIoKC40MTI0NTY0KnQrLjM1NzU3NjEqYSsuMTgwNDM3NSpuKS9Ybiksbz14eXoybGFiKCguMjEyNjcyOSp0Ky43MTUxNTIyKmErLjA3MjE3NSpuKS9Zbik7cmV0dXJuWzExNipvLTE2LDUwMCooYi1vKSwyMDAqKG8teHl6MmxhYigoLjAxOTMzMzkqdCsuMTE5MTkyKmErLjk1MDMwNDEqbikvWm4pKSxyWzNdXX1mdW5jdGlvbiBsYWJUb1JnYihyKXt2YXIgdD0oclswXSsxNikvMTE2LGE9aXNOYU4oclsxXSk/dDp0K3JbMV0vNTAwLG49aXNOYU4oclsyXSk/dDp0LXJbMl0vMjAwO3JldHVybiB0PVluKmxhYjJ4eXoodCksYT1YbipsYWIyeHl6KGEpLG49Wm4qbGFiMnh5eihuKSxbeHl6MnJnYigzLjI0MDQ1NDIqYS0xLjUzNzEzODUqdC0uNDk4NTMxNCpuKSx4eXoycmdiKC0uOTY5MjY2KmErMS44NzYwMTA4KnQrLjA0MTU1NipuKSx4eXoycmdiKC4wNTU2NDM0KmEtLjIwNDAyNTkqdCsxLjA1NzIyNTIqbiksclszXV19ZnVuY3Rpb24gcmdiVG9IY2wocil7dmFyIHQ9cmdiVG9MYWIociksYT10WzBdLG49dFsxXSxiPXRbMl0sbz1NYXRoLmF0YW4yKGIsbikqcmFkMmRlZztyZXR1cm5bbzwwP28rMzYwOm8sTWF0aC5zcXJ0KG4qbitiKmIpLGEsclszXV19ZnVuY3Rpb24gaGNsVG9SZ2Iocil7dmFyIHQ9clswXSpkZWcycmFkLGE9clsxXTtyZXR1cm4gbGFiVG9SZ2IoW3JbMl0sTWF0aC5jb3ModCkqYSxNYXRoLnNpbih0KSphLHJbM11dKX12YXIgWG49Ljk1MDQ3LFluPTEsWm49MS4wODg4Myx0MD00LzI5LHQxPTYvMjksdDI9Myp0MSp0MSx0Mz10MSp0MSp0MSxkZWcycmFkPU1hdGguUEkvMTgwLHJhZDJkZWc9MTgwL01hdGguUEk7bW9kdWxlLmV4cG9ydHM9e2xhYjp7Zm9yd2FyZDpyZ2JUb0xhYixyZXZlcnNlOmxhYlRvUmdifSxoY2w6e2ZvcndhcmQ6cmdiVG9IY2wscmV2ZXJzZTpoY2xUb1JnYn19O1xufSx7fV0sMTEyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGlkZW50aXR5RnVuY3Rpb24odCl7cmV0dXJuIHR9ZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb24odCxlKXt2YXIgbyxuPVwiY29sb3JcIj09PWUudHlwZTtpZihpc0Z1bmN0aW9uRGVmaW5pdGlvbih0KSl7dmFyIHI9dC5zdG9wcyYmXCJvYmplY3RcIj09dHlwZW9mIHQuc3RvcHNbMF1bMF0sYT1yfHx2b2lkIDAhPT10LnByb3BlcnR5LGk9cnx8IWEscz10LnR5cGV8fChcImludGVycG9sYXRlZFwiPT09ZS5mdW5jdGlvbj9cImV4cG9uZW50aWFsXCI6XCJpbnRlcnZhbFwiKTtuJiYodD1leHRlbmQoe30sdCksdC5zdG9wcyYmKHQuc3RvcHM9dC5zdG9wcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0scGFyc2VDb2xvcih0WzFdKV19KSksdC5kZWZhdWx0P3QuZGVmYXVsdD1wYXJzZUNvbG9yKHQuZGVmYXVsdCk6dC5kZWZhdWx0PXBhcnNlQ29sb3IoZS5kZWZhdWx0KSk7dmFyIHUscCxsO2lmKFwiZXhwb25lbnRpYWxcIj09PXMpdT1ldmFsdWF0ZUV4cG9uZW50aWFsRnVuY3Rpb247ZWxzZSBpZihcImludGVydmFsXCI9PT1zKXU9ZXZhbHVhdGVJbnRlcnZhbEZ1bmN0aW9uO2Vsc2UgaWYoXCJjYXRlZ29yaWNhbFwiPT09cyl7dT1ldmFsdWF0ZUNhdGVnb3JpY2FsRnVuY3Rpb24scD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgYz0wLGY9dC5zdG9wcztjPGYubGVuZ3RoO2MrPTEpe3ZhciB2PWZbY107cFt2WzBdXT12WzFdfWw9dHlwZW9mIHQuc3RvcHNbMF1bMF19ZWxzZXtpZihcImlkZW50aXR5XCIhPT1zKXRocm93IG5ldyBFcnJvcignVW5rbm93biBmdW5jdGlvbiB0eXBlIFwiJytzKydcIicpO3U9ZXZhbHVhdGVJZGVudGl0eUZ1bmN0aW9ufXZhciBkO2lmKHQuY29sb3JTcGFjZSYmXCJyZ2JcIiE9PXQuY29sb3JTcGFjZSl7aWYoIWNvbG9yU3BhY2VzW3QuY29sb3JTcGFjZV0pdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBjb2xvciBzcGFjZTogXCIrdC5jb2xvclNwYWNlKTt2YXIgeT1jb2xvclNwYWNlc1t0LmNvbG9yU3BhY2VdO3Q9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSk7Zm9yKHZhciBGPTA7Rjx0LnN0b3BzLmxlbmd0aDtGKyspdC5zdG9wc1tGXT1bdC5zdG9wc1tGXVswXSx5LmZvcndhcmQodC5zdG9wc1tGXVsxXSldO2Q9eS5yZXZlcnNlfWVsc2UgZD1pZGVudGl0eUZ1bmN0aW9uO2lmKHIpe2Zvcih2YXIgaD17fSxnPVtdLG09MDttPHQuc3RvcHMubGVuZ3RoO20rKyl7dmFyIEM9dC5zdG9wc1ttXSxTPUNbMF0uem9vbTt2b2lkIDA9PT1oW1NdJiYoaFtTXT17em9vbTpTLHR5cGU6dC50eXBlLHByb3BlcnR5OnQucHJvcGVydHksZGVmYXVsdDp0LmRlZmF1bHQsc3RvcHM6W119LGcucHVzaChTKSksaFtTXS5zdG9wcy5wdXNoKFtDWzBdLnZhbHVlLENbMV1dKX1mb3IodmFyIFQ9W10seD0wLGI9Zzt4PGIubGVuZ3RoO3grPTEpe3ZhciBxPWJbeF07VC5wdXNoKFtoW3FdLnpvb20sY3JlYXRlRnVuY3Rpb24oaFtxXSxlKV0pfW89ZnVuY3Rpb24obyxuKXtyZXR1cm4gZChldmFsdWF0ZUV4cG9uZW50aWFsRnVuY3Rpb24oe3N0b3BzOlQsYmFzZTp0LmJhc2V9LGUsbykobyxuKSl9LG8uaXNGZWF0dXJlQ29uc3RhbnQ9ITEsby5pc1pvb21Db25zdGFudD0hMX1lbHNlIGk/KG89ZnVuY3Rpb24obyl7cmV0dXJuIGQodSh0LGUsbyxwLGwpKX0sby5pc0ZlYXR1cmVDb25zdGFudD0hMCxvLmlzWm9vbUNvbnN0YW50PSExKToobz1mdW5jdGlvbihvLG4pe3ZhciByPW5bdC5wcm9wZXJ0eV07cmV0dXJuIHZvaWQgMD09PXI/Y29hbGVzY2UodC5kZWZhdWx0LGUuZGVmYXVsdCk6ZCh1KHQsZSxyLHAsbCkpfSxvLmlzRmVhdHVyZUNvbnN0YW50PSExLG8uaXNab29tQ29uc3RhbnQ9ITApfWVsc2UgbiYmdCYmKHQ9cGFyc2VDb2xvcih0KSksbz1mdW5jdGlvbigpe3JldHVybiB0fSxvLmlzRmVhdHVyZUNvbnN0YW50PSEwLG8uaXNab29tQ29uc3RhbnQ9ITA7cmV0dXJuIG99ZnVuY3Rpb24gY29hbGVzY2UodCxlLG8pe3JldHVybiB2b2lkIDAhPT10P3Q6dm9pZCAwIT09ZT9lOnZvaWQgMCE9PW8/bzp2b2lkIDB9ZnVuY3Rpb24gZXZhbHVhdGVDYXRlZ29yaWNhbEZ1bmN0aW9uKHQsZSxvLG4scil7cmV0dXJuIGNvYWxlc2NlKHR5cGVvZiBvPT09cj9uW29dOnZvaWQgMCx0LmRlZmF1bHQsZS5kZWZhdWx0KX1mdW5jdGlvbiBldmFsdWF0ZUludGVydmFsRnVuY3Rpb24odCxlLG8pe2lmKFwibnVtYmVyXCIhPT1nZXRUeXBlKG8pKXJldHVybiBjb2FsZXNjZSh0LmRlZmF1bHQsZS5kZWZhdWx0KTt2YXIgbj10LnN0b3BzLmxlbmd0aDtpZigxPT09bilyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihvPD10LnN0b3BzWzBdWzBdKXJldHVybiB0LnN0b3BzWzBdWzFdO2lmKG8+PXQuc3RvcHNbbi0xXVswXSlyZXR1cm4gdC5zdG9wc1tuLTFdWzFdO3ZhciByPWZpbmRTdG9wTGVzc1RoYW5PckVxdWFsVG8odC5zdG9wcyxvKTtyZXR1cm4gdC5zdG9wc1tyXVsxXX1mdW5jdGlvbiBldmFsdWF0ZUV4cG9uZW50aWFsRnVuY3Rpb24odCxlLG8pe3ZhciBuPXZvaWQgMCE9PXQuYmFzZT90LmJhc2U6MTtpZihcIm51bWJlclwiIT09Z2V0VHlwZShvKSlyZXR1cm4gY29hbGVzY2UodC5kZWZhdWx0LGUuZGVmYXVsdCk7dmFyIHI9dC5zdG9wcy5sZW5ndGg7aWYoMT09PXIpcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYobzw9dC5zdG9wc1swXVswXSlyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihvPj10LnN0b3BzW3ItMV1bMF0pcmV0dXJuIHQuc3RvcHNbci0xXVsxXTt2YXIgYT1maW5kU3RvcExlc3NUaGFuT3JFcXVhbFRvKHQuc3RvcHMsbyksaT1pbnRlcnBvbGF0aW9uRmFjdG9yKG8sbix0LnN0b3BzW2FdWzBdLHQuc3RvcHNbYSsxXVswXSkscz10LnN0b3BzW2FdWzFdLHU9dC5zdG9wc1thKzFdWzFdLHA9aW50ZXJwb2xhdGVbZS50eXBlXXx8aWRlbnRpdHlGdW5jdGlvbjtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBzP2Z1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9YXJndW1lbnRzLmxlbmd0aDtlLS07KXRbZV09YXJndW1lbnRzW2VdO3ZhciBvPXMuYXBwbHkodm9pZCAwLHQpLG49dS5hcHBseSh2b2lkIDAsdCk7aWYodm9pZCAwIT09byYmdm9pZCAwIT09bilyZXR1cm4gcChvLG4saSl9OnAocyx1LGkpfWZ1bmN0aW9uIGV2YWx1YXRlSWRlbnRpdHlGdW5jdGlvbih0LGUsbyl7cmV0dXJuXCJjb2xvclwiPT09ZS50eXBlP289cGFyc2VDb2xvcihvKTpnZXRUeXBlKG8pPT09ZS50eXBlfHxcImVudW1cIj09PWUudHlwZSYmZS52YWx1ZXNbb118fChvPXZvaWQgMCksY29hbGVzY2Uobyx0LmRlZmF1bHQsZS5kZWZhdWx0KX1mdW5jdGlvbiBmaW5kU3RvcExlc3NUaGFuT3JFcXVhbFRvKHQsZSl7Zm9yKHZhciBvLG4scj10Lmxlbmd0aCxhPTAsaT1yLTEscz0wO2E8PWk7KXtpZihzPU1hdGguZmxvb3IoKGEraSkvMiksbz10W3NdWzBdLG49dFtzKzFdWzBdLGU9PT1vfHxlPm8mJmU8bilyZXR1cm4gcztvPGU/YT1zKzE6bz5lJiYoaT1zLTEpfXJldHVybiBNYXRoLm1heChzLTEsMCl9ZnVuY3Rpb24gaXNGdW5jdGlvbkRlZmluaXRpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJih0LnN0b3BzfHxcImlkZW50aXR5XCI9PT10LnR5cGUpfWZ1bmN0aW9uIGludGVycG9sYXRpb25GYWN0b3IodCxlLG8sbil7dmFyIHI9bi1vLGE9dC1vO3JldHVybiAwPT09cj8wOjE9PT1lP2EvcjooTWF0aC5wb3coZSxhKS0xKS8oTWF0aC5wb3coZSxyKS0xKX12YXIgY29sb3JTcGFjZXM9X2RlcmVxXyhcIi4vY29sb3Jfc3BhY2VzXCIpLHBhcnNlQ29sb3I9X2RlcmVxXyhcIi4uL3V0aWwvcGFyc2VfY29sb3JcIiksZXh0ZW5kPV9kZXJlcV8oXCIuLi91dGlsL2V4dGVuZFwiKSxnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLGludGVycG9sYXRlPV9kZXJlcV8oXCIuLi91dGlsL2ludGVycG9sYXRlXCIpO21vZHVsZS5leHBvcnRzPWNyZWF0ZUZ1bmN0aW9uLG1vZHVsZS5leHBvcnRzLmlzRnVuY3Rpb25EZWZpbml0aW9uPWlzRnVuY3Rpb25EZWZpbml0aW9uLG1vZHVsZS5leHBvcnRzLmludGVycG9sYXRpb25GYWN0b3I9aW50ZXJwb2xhdGlvbkZhY3Rvcixtb2R1bGUuZXhwb3J0cy5maW5kU3RvcExlc3NUaGFuT3JFcXVhbFRvPWZpbmRTdG9wTGVzc1RoYW5PckVxdWFsVG87XG59LHtcIi4uL3V0aWwvZXh0ZW5kXCI6MTI1LFwiLi4vdXRpbC9nZXRfdHlwZVwiOjEyNixcIi4uL3V0aWwvaW50ZXJwb2xhdGVcIjoxMjcsXCIuLi91dGlsL3BhcnNlX2NvbG9yXCI6MTI4LFwiLi9jb2xvcl9zcGFjZXNcIjoxMTF9XSwxMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gc3RyaW5naWZ5KHIpe3ZhciB0PXR5cGVvZiByO2lmKFwibnVtYmVyXCI9PT10fHxcImJvb2xlYW5cIj09PXR8fFwic3RyaW5nXCI9PT10fHx2b2lkIDA9PT1yfHxudWxsPT09cilyZXR1cm4gSlNPTi5zdHJpbmdpZnkocik7aWYoQXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBlPVwiW1wiLGk9MCxuPXI7aTxuLmxlbmd0aDtpKz0xKXtlKz1zdHJpbmdpZnkobltpXSkrXCIsXCJ9cmV0dXJuIGUrXCJdXCJ9Zm9yKHZhciBvPU9iamVjdC5rZXlzKHIpLnNvcnQoKSxmPVwie1wiLHU9MDt1PG8ubGVuZ3RoO3UrKylmKz1KU09OLnN0cmluZ2lmeShvW3VdKStcIjpcIitzdHJpbmdpZnkocltvW3VdXSkrXCIsXCI7cmV0dXJuIGYrXCJ9XCJ9ZnVuY3Rpb24gZ2V0S2V5KHIpe2Zvcih2YXIgdD1cIlwiLGU9MCxpPXJlZlByb3BlcnRpZXM7ZTxpLmxlbmd0aDtlKz0xKXt0Kz1cIi9cIitzdHJpbmdpZnkocltpW2VdXSl9cmV0dXJuIHR9ZnVuY3Rpb24gZ3JvdXBCeUxheW91dChyKXtmb3IodmFyIHQ9e30sZT0wO2U8ci5sZW5ndGg7ZSsrKXt2YXIgaT1nZXRLZXkocltlXSksbj10W2ldO258fChuPXRbaV09W10pLG4ucHVzaChyW2VdKX12YXIgbz1bXTtmb3IodmFyIGYgaW4gdClvLnB1c2godFtmXSk7cmV0dXJuIG99dmFyIHJlZlByb3BlcnRpZXM9X2RlcmVxXyhcIi4vdXRpbC9yZWZfcHJvcGVydGllc1wiKTttb2R1bGUuZXhwb3J0cz1ncm91cEJ5TGF5b3V0O1xufSx7XCIuL3V0aWwvcmVmX3Byb3BlcnRpZXNcIjoxMjl9XSwxMTQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZnVuY3Rpb24gY2xhbXBfY3NzX2J5dGUoZSl7cmV0dXJuIGU9TWF0aC5yb3VuZChlKSxlPDA/MDplPjI1NT8yNTU6ZX1mdW5jdGlvbiBjbGFtcF9jc3NfZmxvYXQoZSl7cmV0dXJuIGU8MD8wOmU+MT8xOmV9ZnVuY3Rpb24gcGFyc2VfY3NzX2ludChlKXtyZXR1cm4gY2xhbXBfY3NzX2J5dGUoXCIlXCI9PT1lW2UubGVuZ3RoLTFdP3BhcnNlRmxvYXQoZSkvMTAwKjI1NTpwYXJzZUludChlKSl9ZnVuY3Rpb24gcGFyc2VfY3NzX2Zsb2F0KGUpe3JldHVybiBjbGFtcF9jc3NfZmxvYXQoXCIlXCI9PT1lW2UubGVuZ3RoLTFdP3BhcnNlRmxvYXQoZSkvMTAwOnBhcnNlRmxvYXQoZSkpfWZ1bmN0aW9uIGNzc19odWVfdG9fcmdiKGUscixsKXtyZXR1cm4gbDwwP2wrPTE6bD4xJiYobC09MSksNipsPDE/ZSsoci1lKSpsKjY6MipsPDE/cjozKmw8Mj9lKyhyLWUpKigyLzMtbCkqNjplfWZ1bmN0aW9uIHBhcnNlQ1NTQ29sb3IoZSl7dmFyIHI9ZS5yZXBsYWNlKC8gL2csXCJcIikudG9Mb3dlckNhc2UoKTtpZihyIGluIGtDU1NDb2xvclRhYmxlKXJldHVybiBrQ1NTQ29sb3JUYWJsZVtyXS5zbGljZSgpO2lmKFwiI1wiPT09clswXSl7aWYoND09PXIubGVuZ3RoKXt2YXIgbD1wYXJzZUludChyLnN1YnN0cigxKSwxNik7cmV0dXJuIGw+PTAmJmw8PTQwOTU/WygzODQwJmwpPj40fCgzODQwJmwpPj44LDI0MCZsfCgyNDAmbCk+PjQsMTUmbHwoMTUmbCk8PDQsMV06bnVsbH1pZig3PT09ci5sZW5ndGgpe3ZhciBsPXBhcnNlSW50KHIuc3Vic3RyKDEpLDE2KTtyZXR1cm4gbD49MCYmbDw9MTY3NzcyMTU/WygxNjcxMTY4MCZsKT4+MTYsKDY1MjgwJmwpPj44LDI1NSZsLDFdOm51bGx9cmV0dXJuIG51bGx9dmFyIGE9ci5pbmRleE9mKFwiKFwiKSx0PXIuaW5kZXhPZihcIilcIik7aWYoLTEhPT1hJiZ0KzE9PT1yLmxlbmd0aCl7dmFyIG49ci5zdWJzdHIoMCxhKSxzPXIuc3Vic3RyKGErMSx0LShhKzEpKS5zcGxpdChcIixcIiksbz0xO3N3aXRjaChuKXtjYXNlXCJyZ2JhXCI6aWYoNCE9PXMubGVuZ3RoKXJldHVybiBudWxsO289cGFyc2VfY3NzX2Zsb2F0KHMucG9wKCkpO2Nhc2VcInJnYlwiOnJldHVybiAzIT09cy5sZW5ndGg/bnVsbDpbcGFyc2VfY3NzX2ludChzWzBdKSxwYXJzZV9jc3NfaW50KHNbMV0pLHBhcnNlX2Nzc19pbnQoc1syXSksb107Y2FzZVwiaHNsYVwiOmlmKDQhPT1zLmxlbmd0aClyZXR1cm4gbnVsbDtvPXBhcnNlX2Nzc19mbG9hdChzLnBvcCgpKTtjYXNlXCJoc2xcIjppZigzIT09cy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGk9KHBhcnNlRmxvYXQoc1swXSklMzYwKzM2MCklMzYwLzM2MCx1PXBhcnNlX2Nzc19mbG9hdChzWzFdKSxnPXBhcnNlX2Nzc19mbG9hdChzWzJdKSxkPWc8PS41P2cqKHUrMSk6Zyt1LWcqdSxjPTIqZy1kO3JldHVybltjbGFtcF9jc3NfYnl0ZSgyNTUqY3NzX2h1ZV90b19yZ2IoYyxkLGkrMS8zKSksY2xhbXBfY3NzX2J5dGUoMjU1KmNzc19odWVfdG9fcmdiKGMsZCxpKSksY2xhbXBfY3NzX2J5dGUoMjU1KmNzc19odWVfdG9fcmdiKGMsZCxpLTEvMykpLG9dO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXJldHVybiBudWxsfXZhciBrQ1NTQ29sb3JUYWJsZT17dHJhbnNwYXJlbnQ6WzAsMCwwLDBdLGFsaWNlYmx1ZTpbMjQwLDI0OCwyNTUsMV0sYW50aXF1ZXdoaXRlOlsyNTAsMjM1LDIxNSwxXSxhcXVhOlswLDI1NSwyNTUsMV0sYXF1YW1hcmluZTpbMTI3LDI1NSwyMTIsMV0sYXp1cmU6WzI0MCwyNTUsMjU1LDFdLGJlaWdlOlsyNDUsMjQ1LDIyMCwxXSxiaXNxdWU6WzI1NSwyMjgsMTk2LDFdLGJsYWNrOlswLDAsMCwxXSxibGFuY2hlZGFsbW9uZDpbMjU1LDIzNSwyMDUsMV0sYmx1ZTpbMCwwLDI1NSwxXSxibHVldmlvbGV0OlsxMzgsNDMsMjI2LDFdLGJyb3duOlsxNjUsNDIsNDIsMV0sYnVybHl3b29kOlsyMjIsMTg0LDEzNSwxXSxjYWRldGJsdWU6Wzk1LDE1OCwxNjAsMV0sY2hhcnRyZXVzZTpbMTI3LDI1NSwwLDFdLGNob2NvbGF0ZTpbMjEwLDEwNSwzMCwxXSxjb3JhbDpbMjU1LDEyNyw4MCwxXSxjb3JuZmxvd2VyYmx1ZTpbMTAwLDE0OSwyMzcsMV0sY29ybnNpbGs6WzI1NSwyNDgsMjIwLDFdLGNyaW1zb246WzIyMCwyMCw2MCwxXSxjeWFuOlswLDI1NSwyNTUsMV0sZGFya2JsdWU6WzAsMCwxMzksMV0sZGFya2N5YW46WzAsMTM5LDEzOSwxXSxkYXJrZ29sZGVucm9kOlsxODQsMTM0LDExLDFdLGRhcmtncmF5OlsxNjksMTY5LDE2OSwxXSxkYXJrZ3JlZW46WzAsMTAwLDAsMV0sZGFya2dyZXk6WzE2OSwxNjksMTY5LDFdLGRhcmtraGFraTpbMTg5LDE4MywxMDcsMV0sZGFya21hZ2VudGE6WzEzOSwwLDEzOSwxXSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3LDFdLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMCwxXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0LDFdLGRhcmtyZWQ6WzEzOSwwLDAsMV0sZGFya3NhbG1vbjpbMjMzLDE1MCwxMjIsMV0sZGFya3NlYWdyZWVuOlsxNDMsMTg4LDE0MywxXSxkYXJrc2xhdGVibHVlOls3Miw2MSwxMzksMV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzksMV0sZGFya3NsYXRlZ3JleTpbNDcsNzksNzksMV0sZGFya3R1cnF1b2lzZTpbMCwyMDYsMjA5LDFdLGRhcmt2aW9sZXQ6WzE0OCwwLDIxMSwxXSxkZWVwcGluazpbMjU1LDIwLDE0NywxXSxkZWVwc2t5Ymx1ZTpbMCwxOTEsMjU1LDFdLGRpbWdyYXk6WzEwNSwxMDUsMTA1LDFdLGRpbWdyZXk6WzEwNSwxMDUsMTA1LDFdLGRvZGdlcmJsdWU6WzMwLDE0NCwyNTUsMV0sZmlyZWJyaWNrOlsxNzgsMzQsMzQsMV0sZmxvcmFsd2hpdGU6WzI1NSwyNTAsMjQwLDFdLGZvcmVzdGdyZWVuOlszNCwxMzksMzQsMV0sZnVjaHNpYTpbMjU1LDAsMjU1LDFdLGdhaW5zYm9ybzpbMjIwLDIyMCwyMjAsMV0sZ2hvc3R3aGl0ZTpbMjQ4LDI0OCwyNTUsMV0sZ29sZDpbMjU1LDIxNSwwLDFdLGdvbGRlbnJvZDpbMjE4LDE2NSwzMiwxXSxncmF5OlsxMjgsMTI4LDEyOCwxXSxncmVlbjpbMCwxMjgsMCwxXSxncmVlbnllbGxvdzpbMTczLDI1NSw0NywxXSxncmV5OlsxMjgsMTI4LDEyOCwxXSxob25leWRldzpbMjQwLDI1NSwyNDAsMV0saG90cGluazpbMjU1LDEwNSwxODAsMV0saW5kaWFucmVkOlsyMDUsOTIsOTIsMV0saW5kaWdvOls3NSwwLDEzMCwxXSxpdm9yeTpbMjU1LDI1NSwyNDAsMV0sa2hha2k6WzI0MCwyMzAsMTQwLDFdLGxhdmVuZGVyOlsyMzAsMjMwLDI1MCwxXSxsYXZlbmRlcmJsdXNoOlsyNTUsMjQwLDI0NSwxXSxsYXduZ3JlZW46WzEyNCwyNTIsMCwxXSxsZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1LDFdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzAsMV0sbGlnaHRjb3JhbDpbMjQwLDEyOCwxMjgsMV0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NSwxXSxsaWdodGdvbGRlbnJvZHllbGxvdzpbMjUwLDI1MCwyMTAsMV0sbGlnaHRncmF5OlsyMTEsMjExLDIxMSwxXSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NCwxXSxsaWdodGdyZXk6WzIxMSwyMTEsMjExLDFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTMsMV0sbGlnaHRzYWxtb246WzI1NSwxNjAsMTIyLDFdLGxpZ2h0c2VhZ3JlZW46WzMyLDE3OCwxNzAsMV0sbGlnaHRza3libHVlOlsxMzUsMjA2LDI1MCwxXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTMsMV0sbGlnaHRzbGF0ZWdyZXk6WzExOSwxMzYsMTUzLDFdLGxpZ2h0c3RlZWxibHVlOlsxNzYsMTk2LDIyMiwxXSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjQsMV0sbGltZTpbMCwyNTUsMCwxXSxsaW1lZ3JlZW46WzUwLDIwNSw1MCwxXSxsaW5lbjpbMjUwLDI0MCwyMzAsMV0sbWFnZW50YTpbMjU1LDAsMjU1LDFdLG1hcm9vbjpbMTI4LDAsMCwxXSxtZWRpdW1hcXVhbWFyaW5lOlsxMDIsMjA1LDE3MCwxXSxtZWRpdW1ibHVlOlswLDAsMjA1LDFdLG1lZGl1bW9yY2hpZDpbMTg2LDg1LDIxMSwxXSxtZWRpdW1wdXJwbGU6WzE0NywxMTIsMjE5LDFdLG1lZGl1bXNlYWdyZWVuOls2MCwxNzksMTEzLDFdLG1lZGl1bXNsYXRlYmx1ZTpbMTIzLDEwNCwyMzgsMV0sbWVkaXVtc3ByaW5nZ3JlZW46WzAsMjUwLDE1NCwxXSxtZWRpdW10dXJxdW9pc2U6WzcyLDIwOSwyMDQsMV0sbWVkaXVtdmlvbGV0cmVkOlsxOTksMjEsMTMzLDFdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyLDFdLG1pbnRjcmVhbTpbMjQ1LDI1NSwyNTAsMV0sbWlzdHlyb3NlOlsyNTUsMjI4LDIyNSwxXSxtb2NjYXNpbjpbMjU1LDIyOCwxODEsMV0sbmF2YWpvd2hpdGU6WzI1NSwyMjIsMTczLDFdLG5hdnk6WzAsMCwxMjgsMV0sb2xkbGFjZTpbMjUzLDI0NSwyMzAsMV0sb2xpdmU6WzEyOCwxMjgsMCwxXSxvbGl2ZWRyYWI6WzEwNywxNDIsMzUsMV0sb3JhbmdlOlsyNTUsMTY1LDAsMV0sb3JhbmdlcmVkOlsyNTUsNjksMCwxXSxvcmNoaWQ6WzIxOCwxMTIsMjE0LDFdLHBhbGVnb2xkZW5yb2Q6WzIzOCwyMzIsMTcwLDFdLHBhbGVncmVlbjpbMTUyLDI1MSwxNTIsMV0scGFsZXR1cnF1b2lzZTpbMTc1LDIzOCwyMzgsMV0scGFsZXZpb2xldHJlZDpbMjE5LDExMiwxNDcsMV0scGFwYXlhd2hpcDpbMjU1LDIzOSwyMTMsMV0scGVhY2hwdWZmOlsyNTUsMjE4LDE4NSwxXSxwZXJ1OlsyMDUsMTMzLDYzLDFdLHBpbms6WzI1NSwxOTIsMjAzLDFdLHBsdW06WzIyMSwxNjAsMjIxLDFdLHBvd2RlcmJsdWU6WzE3NiwyMjQsMjMwLDFdLHB1cnBsZTpbMTI4LDAsMTI4LDFdLHJlYmVjY2FwdXJwbGU6WzEwMiw1MSwxNTMsMV0scmVkOlsyNTUsMCwwLDFdLHJvc3licm93bjpbMTg4LDE0MywxNDMsMV0scm95YWxibHVlOls2NSwxMDUsMjI1LDFdLHNhZGRsZWJyb3duOlsxMzksNjksMTksMV0sc2FsbW9uOlsyNTAsMTI4LDExNCwxXSxzYW5keWJyb3duOlsyNDQsMTY0LDk2LDFdLHNlYWdyZWVuOls0NiwxMzksODcsMV0sc2Vhc2hlbGw6WzI1NSwyNDUsMjM4LDFdLHNpZW5uYTpbMTYwLDgyLDQ1LDFdLHNpbHZlcjpbMTkyLDE5MiwxOTIsMV0sc2t5Ymx1ZTpbMTM1LDIwNiwyMzUsMV0sc2xhdGVibHVlOlsxMDYsOTAsMjA1LDFdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDQsMV0sc2xhdGVncmV5OlsxMTIsMTI4LDE0NCwxXSxzbm93OlsyNTUsMjUwLDI1MCwxXSxzcHJpbmdncmVlbjpbMCwyNTUsMTI3LDFdLHN0ZWVsYmx1ZTpbNzAsMTMwLDE4MCwxXSx0YW46WzIxMCwxODAsMTQwLDFdLHRlYWw6WzAsMTI4LDEyOCwxXSx0aGlzdGxlOlsyMTYsMTkxLDIxNiwxXSx0b21hdG86WzI1NSw5OSw3MSwxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDgsMV0sdmlvbGV0OlsyMzgsMTMwLDIzOCwxXSx3aGVhdDpbMjQ1LDIyMiwxNzksMV0sd2hpdGU6WzI1NSwyNTUsMjU1LDFdLHdoaXRlc21va2U6WzI0NSwyNDUsMjQ1LDFdLHllbGxvdzpbMjU1LDI1NSwwLDFdLHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwLDFdfTt0cnl7ZXhwb3J0cy5wYXJzZUNTU0NvbG9yPXBhcnNlQ1NTQ29sb3J9Y2F0Y2goZSl7fVxufSx7fV0sMTE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZShyKXtyZXR1cm4hIXImJlwib2JqZWN0XCI9PXR5cGVvZiByfWZ1bmN0aW9uIGFycmF5U29tZShyLGUpe2Zvcih2YXIgYT0tMSx0PXIubGVuZ3RoOysrYTx0OylpZihlKHJbYV0sYSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBiYXNlSXNFcXVhbChyLGUsYSx0LG8sbil7cmV0dXJuIHI9PT1lfHwobnVsbD09cnx8bnVsbD09ZXx8IWlzT2JqZWN0KHIpJiYhaXNPYmplY3RMaWtlKGUpP3IhPT1yJiZlIT09ZTpiYXNlSXNFcXVhbERlZXAocixlLGJhc2VJc0VxdWFsLGEsdCxvLG4pKX1mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAocixlLGEsdCxvLG4sdSl7dmFyIGM9aXNBcnJheShyKSxzPWlzQXJyYXkoZSksaT1hcnJheVRhZyxnPWFycmF5VGFnO2N8fChpPW9ialRvU3RyaW5nLmNhbGwociksaT09YXJnc1RhZz9pPW9iamVjdFRhZzppIT1vYmplY3RUYWcmJihjPWlzVHlwZWRBcnJheShyKSkpLHN8fChnPW9ialRvU3RyaW5nLmNhbGwoZSksZz09YXJnc1RhZz9nPW9iamVjdFRhZzpnIT1vYmplY3RUYWcmJihzPWlzVHlwZWRBcnJheShlKSkpO3ZhciBiPWk9PW9iamVjdFRhZyxsPWc9PW9iamVjdFRhZyxmPWk9PWc7aWYoZiYmIWMmJiFiKXJldHVybiBlcXVhbEJ5VGFnKHIsZSxpKTtpZighbyl7dmFyIHk9YiYmaGFzT3duUHJvcGVydHkuY2FsbChyLFwiX193cmFwcGVkX19cIiksVD1sJiZoYXNPd25Qcm9wZXJ0eS5jYWxsKGUsXCJfX3dyYXBwZWRfX1wiKTtpZih5fHxUKXJldHVybiBhKHk/ci52YWx1ZSgpOnIsVD9lLnZhbHVlKCk6ZSx0LG8sbix1KX1pZighZilyZXR1cm4hMTtufHwobj1bXSksdXx8KHU9W10pO2Zvcih2YXIgaj1uLmxlbmd0aDtqLS07KWlmKG5bal09PXIpcmV0dXJuIHVbal09PWU7bi5wdXNoKHIpLHUucHVzaChlKTt2YXIgcD0oYz9lcXVhbEFycmF5czplcXVhbE9iamVjdHMpKHIsZSxhLHQsbyxuLHUpO3JldHVybiBuLnBvcCgpLHUucG9wKCkscH1mdW5jdGlvbiBlcXVhbEFycmF5cyhyLGUsYSx0LG8sbix1KXt2YXIgYz0tMSxzPXIubGVuZ3RoLGk9ZS5sZW5ndGg7aWYocyE9aSYmIShvJiZpPnMpKXJldHVybiExO2Zvcig7KytjPHM7KXt2YXIgZz1yW2NdLGI9ZVtjXSxsPXQ/dChvP2I6ZyxvP2c6YixjKTp2b2lkIDA7aWYodm9pZCAwIT09bCl7aWYobCljb250aW51ZTtyZXR1cm4hMX1pZihvKXtpZighYXJyYXlTb21lKGUsZnVuY3Rpb24ocil7cmV0dXJuIGc9PT1yfHxhKGcscix0LG8sbix1KX0pKXJldHVybiExfWVsc2UgaWYoZyE9PWImJiFhKGcsYix0LG8sbix1KSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBlcXVhbEJ5VGFnKHIsZSxhKXtzd2l0Y2goYSl7Y2FzZSBib29sVGFnOmNhc2UgZGF0ZVRhZzpyZXR1cm4rcj09K2U7Y2FzZSBlcnJvclRhZzpyZXR1cm4gci5uYW1lPT1lLm5hbWUmJnIubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgbnVtYmVyVGFnOnJldHVybiByIT0rcj9lIT0rZTpyPT0rZTtjYXNlIHJlZ2V4cFRhZzpjYXNlIHN0cmluZ1RhZzpyZXR1cm4gcj09ZStcIlwifXJldHVybiExfWZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhyLGUsYSx0LG8sbix1KXt2YXIgYz1rZXlzKHIpLHM9Yy5sZW5ndGg7aWYocyE9a2V5cyhlKS5sZW5ndGgmJiFvKXJldHVybiExO2Zvcih2YXIgaT1zO2ktLTspe3ZhciBnPWNbaV07aWYoIShvP2cgaW4gZTpoYXNPd25Qcm9wZXJ0eS5jYWxsKGUsZykpKXJldHVybiExfWZvcih2YXIgYj1vOysraTxzOyl7Zz1jW2ldO3ZhciBsPXJbZ10sZj1lW2ddLHk9dD90KG8/ZjpsLG8/bDpmLGcpOnZvaWQgMDtpZighKHZvaWQgMD09PXk/YShsLGYsdCxvLG4sdSk6eSkpcmV0dXJuITE7Ynx8KGI9XCJjb25zdHJ1Y3RvclwiPT1nKX1pZighYil7dmFyIFQ9ci5jb25zdHJ1Y3RvcixqPWUuY29uc3RydWN0b3I7aWYoVCE9aiYmXCJjb25zdHJ1Y3RvclwiaW4gciYmXCJjb25zdHJ1Y3RvclwiaW4gZSYmIShcImZ1bmN0aW9uXCI9PXR5cGVvZiBUJiZUIGluc3RhbmNlb2YgVCYmXCJmdW5jdGlvblwiPT10eXBlb2YgaiYmaiBpbnN0YW5jZW9mIGopKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGlzT2JqZWN0KHIpe3ZhciBlPXR5cGVvZiByO3JldHVybiEhciYmKFwib2JqZWN0XCI9PWV8fFwiZnVuY3Rpb25cIj09ZSl9dmFyIGlzQXJyYXk9X2RlcmVxXyhcImxvZGFzaC5pc2FycmF5XCIpLGlzVHlwZWRBcnJheT1fZGVyZXFfKFwibG9kYXNoLmlzdHlwZWRhcnJheVwiKSxrZXlzPV9kZXJlcV8oXCJsb2Rhc2gua2V5c1wiKSxhcmdzVGFnPVwiW29iamVjdCBBcmd1bWVudHNdXCIsYXJyYXlUYWc9XCJbb2JqZWN0IEFycmF5XVwiLGJvb2xUYWc9XCJbb2JqZWN0IEJvb2xlYW5dXCIsZGF0ZVRhZz1cIltvYmplY3QgRGF0ZV1cIixlcnJvclRhZz1cIltvYmplY3QgRXJyb3JdXCIsbnVtYmVyVGFnPVwiW29iamVjdCBOdW1iZXJdXCIsb2JqZWN0VGFnPVwiW29iamVjdCBPYmplY3RdXCIscmVnZXhwVGFnPVwiW29iamVjdCBSZWdFeHBdXCIsc3RyaW5nVGFnPVwiW29iamVjdCBTdHJpbmddXCIsb2JqZWN0UHJvdG89T2JqZWN0LnByb3RvdHlwZSxoYXNPd25Qcm9wZXJ0eT1vYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eSxvYmpUb1N0cmluZz1vYmplY3RQcm90by50b1N0cmluZzttb2R1bGUuZXhwb3J0cz1iYXNlSXNFcXVhbDtcbn0se1wibG9kYXNoLmlzYXJyYXlcIjoxMTksXCJsb2Rhc2guaXN0eXBlZGFycmF5XCI6MTIxLFwibG9kYXNoLmtleXNcIjoxMjJ9XSwxMTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZnVuY3Rpb24gYmluZENhbGxiYWNrKG4sdCxyKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXJldHVybiBpZGVudGl0eTtpZih2b2lkIDA9PT10KXJldHVybiBuO3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBuLmNhbGwodCxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLGUsdSl7cmV0dXJuIG4uY2FsbCh0LHIsZSx1KX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihyLGUsdSxjKXtyZXR1cm4gbi5jYWxsKHQscixlLHUsYyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24ocixlLHUsYyxpKXtyZXR1cm4gbi5jYWxsKHQscixlLHUsYyxpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBpZGVudGl0eShuKXtyZXR1cm4gbn1tb2R1bGUuZXhwb3J0cz1iaW5kQ2FsbGJhY2s7XG59LHt9XSwxMTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHQpe3JldHVybiEhdCYmXCJvYmplY3RcIj09dHlwZW9mIHR9ZnVuY3Rpb24gZ2V0TmF0aXZlKHQsbyl7dmFyIGU9bnVsbD09dD92b2lkIDA6dFtvXTtyZXR1cm4gaXNOYXRpdmUoZSk/ZTp2b2lkIDB9ZnVuY3Rpb24gaXNGdW5jdGlvbih0KXtyZXR1cm4gaXNPYmplY3QodCkmJm9ialRvU3RyaW5nLmNhbGwodCk9PWZ1bmNUYWd9ZnVuY3Rpb24gaXNPYmplY3QodCl7dmFyIG89dHlwZW9mIHQ7cmV0dXJuISF0JiYoXCJvYmplY3RcIj09b3x8XCJmdW5jdGlvblwiPT1vKX1mdW5jdGlvbiBpc05hdGl2ZSh0KXtyZXR1cm4gbnVsbCE9dCYmKGlzRnVuY3Rpb24odCk/cmVJc05hdGl2ZS50ZXN0KGZuVG9TdHJpbmcuY2FsbCh0KSk6aXNPYmplY3RMaWtlKHQpJiZyZUlzSG9zdEN0b3IudGVzdCh0KSl9dmFyIGZ1bmNUYWc9XCJbb2JqZWN0IEZ1bmN0aW9uXVwiLHJlSXNIb3N0Q3Rvcj0vXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvLG9iamVjdFByb3RvPU9iamVjdC5wcm90b3R5cGUsZm5Ub1N0cmluZz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsaGFzT3duUHJvcGVydHk9b2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHksb2JqVG9TdHJpbmc9b2JqZWN0UHJvdG8udG9TdHJpbmcscmVJc05hdGl2ZT1SZWdFeHAoXCJeXCIrZm5Ub1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcIlxcXFwkJlwiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLFwiJDEuKj9cIikrXCIkXCIpO21vZHVsZS5leHBvcnRzPWdldE5hdGl2ZTtcbn0se31dLDExODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBpc0FyZ3VtZW50cyh0KXtyZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodCkmJmhhc093blByb3BlcnR5LmNhbGwodCxcImNhbGxlZVwiKSYmKCFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsXCJjYWxsZWVcIil8fG9iamVjdFRvU3RyaW5nLmNhbGwodCk9PWFyZ3NUYWcpfWZ1bmN0aW9uIGlzQXJyYXlMaWtlKHQpe3JldHVybiBudWxsIT10JiZpc0xlbmd0aCh0Lmxlbmd0aCkmJiFpc0Z1bmN0aW9uKHQpfWZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHQpe3JldHVybiBpc09iamVjdExpa2UodCkmJmlzQXJyYXlMaWtlKHQpfWZ1bmN0aW9uIGlzRnVuY3Rpb24odCl7dmFyIGU9aXNPYmplY3QodCk/b2JqZWN0VG9TdHJpbmcuY2FsbCh0KTpcIlwiO3JldHVybiBlPT1mdW5jVGFnfHxlPT1nZW5UYWd9ZnVuY3Rpb24gaXNMZW5ndGgodCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9TUFYX1NBRkVfSU5URUdFUn1mdW5jdGlvbiBpc09iamVjdCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4hIXQmJihcIm9iamVjdFwiPT1lfHxcImZ1bmN0aW9uXCI9PWUpfWZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh0KXtyZXR1cm4hIXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0fXZhciBNQVhfU0FGRV9JTlRFR0VSPTkwMDcxOTkyNTQ3NDA5OTEsYXJnc1RhZz1cIltvYmplY3QgQXJndW1lbnRzXVwiLGZ1bmNUYWc9XCJbb2JqZWN0IEZ1bmN0aW9uXVwiLGdlblRhZz1cIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCIsb2JqZWN0UHJvdG89T2JqZWN0LnByb3RvdHlwZSxoYXNPd25Qcm9wZXJ0eT1vYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eSxvYmplY3RUb1N0cmluZz1vYmplY3RQcm90by50b1N0cmluZyxwcm9wZXJ0eUlzRW51bWVyYWJsZT1vYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTttb2R1bGUuZXhwb3J0cz1pc0FyZ3VtZW50cztcbn0se31dLDExOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBpc09iamVjdExpa2UodCl7cmV0dXJuISF0JiZcIm9iamVjdFwiPT10eXBlb2YgdH1mdW5jdGlvbiBnZXROYXRpdmUodCxyKXt2YXIgZT1udWxsPT10P3ZvaWQgMDp0W3JdO3JldHVybiBpc05hdGl2ZShlKT9lOnZvaWQgMH1mdW5jdGlvbiBpc0xlbmd0aCh0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1NQVhfU0FGRV9JTlRFR0VSfWZ1bmN0aW9uIGlzRnVuY3Rpb24odCl7cmV0dXJuIGlzT2JqZWN0KHQpJiZvYmpUb1N0cmluZy5jYWxsKHQpPT1mdW5jVGFnfWZ1bmN0aW9uIGlzT2JqZWN0KHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiEhdCYmKFwib2JqZWN0XCI9PXJ8fFwiZnVuY3Rpb25cIj09cil9ZnVuY3Rpb24gaXNOYXRpdmUodCl7cmV0dXJuIG51bGwhPXQmJihpc0Z1bmN0aW9uKHQpP3JlSXNOYXRpdmUudGVzdChmblRvU3RyaW5nLmNhbGwodCkpOmlzT2JqZWN0TGlrZSh0KSYmcmVJc0hvc3RDdG9yLnRlc3QodCkpfXZhciBhcnJheVRhZz1cIltvYmplY3QgQXJyYXldXCIsZnVuY1RhZz1cIltvYmplY3QgRnVuY3Rpb25dXCIscmVJc0hvc3RDdG9yPS9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC8sb2JqZWN0UHJvdG89T2JqZWN0LnByb3RvdHlwZSxmblRvU3RyaW5nPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxoYXNPd25Qcm9wZXJ0eT1vYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eSxvYmpUb1N0cmluZz1vYmplY3RQcm90by50b1N0cmluZyxyZUlzTmF0aXZlPVJlZ0V4cChcIl5cIitmblRvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLFwiXFxcXCQmXCIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csXCIkMS4qP1wiKStcIiRcIiksbmF0aXZlSXNBcnJheT1nZXROYXRpdmUoQXJyYXksXCJpc0FycmF5XCIpLE1BWF9TQUZFX0lOVEVHRVI9OTAwNzE5OTI1NDc0MDk5MSxpc0FycmF5PW5hdGl2ZUlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiBpc09iamVjdExpa2UodCkmJmlzTGVuZ3RoKHQubGVuZ3RoKSYmb2JqVG9TdHJpbmcuY2FsbCh0KT09YXJyYXlUYWd9O21vZHVsZS5leHBvcnRzPWlzQXJyYXk7XG59LHt9XSwxMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuZnVuY3Rpb24gaXNFcXVhbChhLGwsaSxlKXtpPVwiZnVuY3Rpb25cIj09dHlwZW9mIGk/YmluZENhbGxiYWNrKGksZSwzKTp2b2lkIDA7dmFyIHM9aT9pKGEsbCk6dm9pZCAwO3JldHVybiB2b2lkIDA9PT1zP2Jhc2VJc0VxdWFsKGEsbCxpKTohIXN9dmFyIGJhc2VJc0VxdWFsPV9kZXJlcV8oXCJsb2Rhc2guX2Jhc2Vpc2VxdWFsXCIpLGJpbmRDYWxsYmFjaz1fZGVyZXFfKFwibG9kYXNoLl9iaW5kY2FsbGJhY2tcIik7bW9kdWxlLmV4cG9ydHM9aXNFcXVhbDtcbn0se1wibG9kYXNoLl9iYXNlaXNlcXVhbFwiOjExNSxcImxvZGFzaC5fYmluZGNhbGxiYWNrXCI6MTE2fV0sMTIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbmZ1bmN0aW9uIGlzTGVuZ3RoKGEpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBhJiZhPi0xJiZhJTE9PTAmJmE8PU1BWF9TQUZFX0lOVEVHRVJ9ZnVuY3Rpb24gaXNPYmplY3RMaWtlKGEpe3JldHVybiEhYSYmXCJvYmplY3RcIj09dHlwZW9mIGF9ZnVuY3Rpb24gaXNUeXBlZEFycmF5KGEpe3JldHVybiBpc09iamVjdExpa2UoYSkmJmlzTGVuZ3RoKGEubGVuZ3RoKSYmISF0eXBlZEFycmF5VGFnc1tvYmplY3RUb1N0cmluZy5jYWxsKGEpXX12YXIgTUFYX1NBRkVfSU5URUdFUj05MDA3MTk5MjU0NzQwOTkxLGFyZ3NUYWc9XCJbb2JqZWN0IEFyZ3VtZW50c11cIixhcnJheVRhZz1cIltvYmplY3QgQXJyYXldXCIsYm9vbFRhZz1cIltvYmplY3QgQm9vbGVhbl1cIixkYXRlVGFnPVwiW29iamVjdCBEYXRlXVwiLGVycm9yVGFnPVwiW29iamVjdCBFcnJvcl1cIixmdW5jVGFnPVwiW29iamVjdCBGdW5jdGlvbl1cIixtYXBUYWc9XCJbb2JqZWN0IE1hcF1cIixudW1iZXJUYWc9XCJbb2JqZWN0IE51bWJlcl1cIixvYmplY3RUYWc9XCJbb2JqZWN0IE9iamVjdF1cIixyZWdleHBUYWc9XCJbb2JqZWN0IFJlZ0V4cF1cIixzZXRUYWc9XCJbb2JqZWN0IFNldF1cIixzdHJpbmdUYWc9XCJbb2JqZWN0IFN0cmluZ11cIix3ZWFrTWFwVGFnPVwiW29iamVjdCBXZWFrTWFwXVwiLGFycmF5QnVmZmVyVGFnPVwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIixkYXRhVmlld1RhZz1cIltvYmplY3QgRGF0YVZpZXddXCIsZmxvYXQzMlRhZz1cIltvYmplY3QgRmxvYXQzMkFycmF5XVwiLGZsb2F0NjRUYWc9XCJbb2JqZWN0IEZsb2F0NjRBcnJheV1cIixpbnQ4VGFnPVwiW29iamVjdCBJbnQ4QXJyYXldXCIsaW50MTZUYWc9XCJbb2JqZWN0IEludDE2QXJyYXldXCIsaW50MzJUYWc9XCJbb2JqZWN0IEludDMyQXJyYXldXCIsdWludDhUYWc9XCJbb2JqZWN0IFVpbnQ4QXJyYXldXCIsdWludDhDbGFtcGVkVGFnPVwiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV1cIix1aW50MTZUYWc9XCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiLHVpbnQzMlRhZz1cIltvYmplY3QgVWludDMyQXJyYXldXCIsdHlwZWRBcnJheVRhZ3M9e307dHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ109dHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ109dHlwZWRBcnJheVRhZ3NbaW50OFRhZ109dHlwZWRBcnJheVRhZ3NbaW50MTZUYWddPXR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXT10eXBlZEFycmF5VGFnc1t1aW50OFRhZ109dHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXT10eXBlZEFycmF5VGFnc1t1aW50MTZUYWddPXR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ109ITAsdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ109dHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddPXR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXT10eXBlZEFycmF5VGFnc1tib29sVGFnXT10eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ109dHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ109dHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddPXR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddPXR5cGVkQXJyYXlUYWdzW21hcFRhZ109dHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXT10eXBlZEFycmF5VGFnc1tvYmplY3RUYWddPXR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ109dHlwZWRBcnJheVRhZ3Nbc2V0VGFnXT10eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddPXR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddPSExO3ZhciBvYmplY3RQcm90bz1PYmplY3QucHJvdG90eXBlLG9iamVjdFRvU3RyaW5nPW9iamVjdFByb3RvLnRvU3RyaW5nO21vZHVsZS5leHBvcnRzPWlzVHlwZWRBcnJheTtcbn0se31dLDEyMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfX1mdW5jdGlvbiBpc0FycmF5TGlrZShlKXtyZXR1cm4gbnVsbCE9ZSYmaXNMZW5ndGgoZ2V0TGVuZ3RoKGUpKX1mdW5jdGlvbiBpc0luZGV4KGUsdCl7cmV0dXJuIGU9XCJudW1iZXJcIj09dHlwZW9mIGV8fHJlSXNVaW50LnRlc3QoZSk/K2U6LTEsdD1udWxsPT10P01BWF9TQUZFX0lOVEVHRVI6dCxlPi0xJiZlJTE9PTAmJmU8dH1mdW5jdGlvbiBpc0xlbmd0aChlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmZT4tMSYmZSUxPT0wJiZlPD1NQVhfU0FGRV9JTlRFR0VSfWZ1bmN0aW9uIHNoaW1LZXlzKGUpe2Zvcih2YXIgdD1rZXlzSW4oZSkscj10Lmxlbmd0aCxuPXImJmUubGVuZ3RoLHM9ISFuJiZpc0xlbmd0aChuKSYmKGlzQXJyYXkoZSl8fGlzQXJndW1lbnRzKGUpKSxvPS0xLGk9W107KytvPHI7KXt2YXIgdT10W29dOyhzJiZpc0luZGV4KHUsbil8fGhhc093blByb3BlcnR5LmNhbGwoZSx1KSkmJmkucHVzaCh1KX1yZXR1cm4gaX1mdW5jdGlvbiBpc09iamVjdChlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWZ1bmN0aW9uIGtleXNJbihlKXtpZihudWxsPT1lKXJldHVybltdO2lzT2JqZWN0KGUpfHwoZT1PYmplY3QoZSkpO3ZhciB0PWUubGVuZ3RoO3Q9dCYmaXNMZW5ndGgodCkmJihpc0FycmF5KGUpfHxpc0FyZ3VtZW50cyhlKSkmJnR8fDA7Zm9yKHZhciByPWUuY29uc3RydWN0b3Isbj0tMSxzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHImJnIucHJvdG90eXBlPT09ZSxvPUFycmF5KHQpLGk9dD4wOysrbjx0OylvW25dPW4rXCJcIjtmb3IodmFyIHUgaW4gZSlpJiZpc0luZGV4KHUsdCl8fFwiY29uc3RydWN0b3JcIj09dSYmKHN8fCFoYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdSkpfHxvLnB1c2godSk7cmV0dXJuIG99dmFyIGdldE5hdGl2ZT1fZGVyZXFfKFwibG9kYXNoLl9nZXRuYXRpdmVcIiksaXNBcmd1bWVudHM9X2RlcmVxXyhcImxvZGFzaC5pc2FyZ3VtZW50c1wiKSxpc0FycmF5PV9kZXJlcV8oXCJsb2Rhc2guaXNhcnJheVwiKSxyZUlzVWludD0vXlxcZCskLyxvYmplY3RQcm90bz1PYmplY3QucHJvdG90eXBlLGhhc093blByb3BlcnR5PW9iamVjdFByb3RvLmhhc093blByb3BlcnR5LG5hdGl2ZUtleXM9Z2V0TmF0aXZlKE9iamVjdCxcImtleXNcIiksTUFYX1NBRkVfSU5URUdFUj05MDA3MTk5MjU0NzQwOTkxLGdldExlbmd0aD1iYXNlUHJvcGVydHkoXCJsZW5ndGhcIiksa2V5cz1uYXRpdmVLZXlzP2Z1bmN0aW9uKGUpe3ZhciB0PW51bGw9PWU/dm9pZCAwOmUuY29uc3RydWN0b3I7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5wcm90b3R5cGU9PT1lfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZpc0FycmF5TGlrZShlKT9zaGltS2V5cyhlKTppc09iamVjdChlKT9uYXRpdmVLZXlzKGUpOltdfTpzaGltS2V5czttb2R1bGUuZXhwb3J0cz1rZXlzO1xufSx7XCJsb2Rhc2guX2dldG5hdGl2ZVwiOjExNyxcImxvZGFzaC5pc2FyZ3VtZW50c1wiOjExOCxcImxvZGFzaC5pc2FycmF5XCI6MTE5fV0sMTIzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO21vZHVsZS5leHBvcnRzPV9kZXJlcV8oXCIuL3Y4Lmpzb25cIik7XG59LHtcIi4vdjguanNvblwiOjEyNH1dLDEyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cz17XCIkdmVyc2lvblwiOjgsXCIkcm9vdFwiOntcInZlcnNpb25cIjp7XCJyZXF1aXJlZFwiOnRydWUsXCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjpbOF19LFwibmFtZVwiOntcInR5cGVcIjpcInN0cmluZ1wifSxcIm1ldGFkYXRhXCI6e1widHlwZVwiOlwiKlwifSxcImNlbnRlclwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCJ9LFwiem9vbVwiOntcInR5cGVcIjpcIm51bWJlclwifSxcImJlYXJpbmdcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwicGVyaW9kXCI6MzYwLFwidW5pdHNcIjpcImRlZ3JlZXNcIn0sXCJwaXRjaFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJ1bml0c1wiOlwiZGVncmVlc1wifSxcImxpZ2h0XCI6e1widHlwZVwiOlwibGlnaHRcIn0sXCJzb3VyY2VzXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwic291cmNlc1wifSxcInNwcml0ZVwiOntcInR5cGVcIjpcInN0cmluZ1wifSxcImdseXBoc1wiOntcInR5cGVcIjpcInN0cmluZ1wifSxcInRyYW5zaXRpb25cIjp7XCJ0eXBlXCI6XCJ0cmFuc2l0aW9uXCJ9LFwibGF5ZXJzXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJsYXllclwifX0sXCJzb3VyY2VzXCI6e1wiKlwiOntcInR5cGVcIjpcInNvdXJjZVwifX0sXCJzb3VyY2VcIjpbXCJzb3VyY2VfdGlsZVwiLFwic291cmNlX2dlb2pzb25cIixcInNvdXJjZV92aWRlb1wiLFwic291cmNlX2ltYWdlXCIsXCJzb3VyY2VfY2FudmFzXCJdLFwic291cmNlX3RpbGVcIjp7XCJ0eXBlXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmVjdG9yXCI6e30sXCJyYXN0ZXJcIjp7fX19LFwidXJsXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwidGlsZXNcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcInN0cmluZ1wifSxcImJvdW5kc1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjo0LFwiZGVmYXVsdFwiOlstMTgwLC04NS4wNTExLDE4MCw4NS4wNTExXX0sXCJtaW56b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MH0sXCJtYXh6b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MjJ9LFwidGlsZVNpemVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjo1MTIsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwiKlwiOntcInR5cGVcIjpcIipcIn19LFwic291cmNlX2dlb2pzb25cIjp7XCJ0eXBlXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiZ2VvanNvblwiOnt9fX0sXCJkYXRhXCI6e1widHlwZVwiOlwiKlwifSxcIm1heHpvb21cIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxOH0sXCJidWZmZXJcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxMjgsXCJtYXhpbXVtXCI6NTEyLFwibWluaW11bVwiOjB9LFwidG9sZXJhbmNlXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MC4zNzV9LFwiY2x1c3RlclwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZX0sXCJjbHVzdGVyUmFkaXVzXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6NTAsXCJtaW5pbXVtXCI6MH0sXCJjbHVzdGVyTWF4Wm9vbVwiOntcInR5cGVcIjpcIm51bWJlclwifX0sXCJzb3VyY2VfdmlkZW9cIjp7XCJ0eXBlXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmlkZW9cIjp7fX19LFwidXJsc1wiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwic3RyaW5nXCJ9LFwiY29vcmRpbmF0ZXNcIjp7XCJyZXF1aXJlZFwiOnRydWUsXCJ0eXBlXCI6XCJhcnJheVwiLFwibGVuZ3RoXCI6NCxcInZhbHVlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcImxlbmd0aFwiOjIsXCJ2YWx1ZVwiOlwibnVtYmVyXCJ9fX0sXCJzb3VyY2VfaW1hZ2VcIjp7XCJ0eXBlXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiaW1hZ2VcIjp7fX19LFwidXJsXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwic3RyaW5nXCJ9LFwiY29vcmRpbmF0ZXNcIjp7XCJyZXF1aXJlZFwiOnRydWUsXCJ0eXBlXCI6XCJhcnJheVwiLFwibGVuZ3RoXCI6NCxcInZhbHVlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcImxlbmd0aFwiOjIsXCJ2YWx1ZVwiOlwibnVtYmVyXCJ9fX0sXCJzb3VyY2VfY2FudmFzXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcImNhbnZhc1wiOnt9fX0sXCJjb29yZGluYXRlc1wiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImFycmF5XCIsXCJsZW5ndGhcIjo0LFwidmFsdWVcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwibGVuZ3RoXCI6MixcInZhbHVlXCI6XCJudW1iZXJcIn19LFwiYW5pbWF0ZVwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpcInRydWVcIn0sXCJjYW52YXNcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIixcInJlcXVpcmVkXCI6dHJ1ZX0sXCJjb250ZXh0VHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIjJkXCI6e30sXCJ3ZWJnbFwiOnt9LFwiZXhwZXJpbWVudGFsLXdlYmdsXCI6e30sXCJ3ZWJnbDJcIjp7fX19fSxcImxheWVyXCI6e1wiaWRcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIixcInJlcXVpcmVkXCI6dHJ1ZX0sXCJ0eXBlXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiZmlsbFwiOnt9LFwibGluZVwiOnt9LFwic3ltYm9sXCI6e30sXCJjaXJjbGVcIjp7fSxcImZpbGwtZXh0cnVzaW9uXCI6e30sXCJyYXN0ZXJcIjp7fSxcImJhY2tncm91bmRcIjp7fX19LFwibWV0YWRhdGFcIjp7XCJ0eXBlXCI6XCIqXCJ9LFwicmVmXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwic291cmNlXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwic291cmNlLWxheWVyXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwibWluem9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjR9LFwibWF4em9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjR9LFwiZmlsdGVyXCI6e1widHlwZVwiOlwiZmlsdGVyXCJ9LFwibGF5b3V0XCI6e1widHlwZVwiOlwibGF5b3V0XCJ9LFwicGFpbnRcIjp7XCJ0eXBlXCI6XCJwYWludFwifSxcInBhaW50LipcIjp7XCJ0eXBlXCI6XCJwYWludFwifX0sXCJsYXlvdXRcIjpbXCJsYXlvdXRfZmlsbFwiLFwibGF5b3V0X2xpbmVcIixcImxheW91dF9jaXJjbGVcIixcImxheW91dF9maWxsLWV4dHJ1c2lvblwiLFwibGF5b3V0X3N5bWJvbFwiLFwibGF5b3V0X3Jhc3RlclwiLFwibGF5b3V0X2JhY2tncm91bmRcIl0sXCJsYXlvdXRfYmFja2dyb3VuZFwiOntcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwifX0sXCJsYXlvdXRfZmlsbFwiOntcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwifX0sXCJsYXlvdXRfY2lyY2xlXCI6e1widmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCJ9fSxcImxheW91dF9maWxsLWV4dHJ1c2lvblwiOntcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwifX0sXCJsYXlvdXRfbGluZVwiOntcImxpbmUtY2FwXCI6e1widHlwZVwiOlwiZW51bVwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ2YWx1ZXNcIjp7XCJidXR0XCI6e30sXCJyb3VuZFwiOnt9LFwic3F1YXJlXCI6e319LFwiZGVmYXVsdFwiOlwiYnV0dFwifSxcImxpbmUtam9pblwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wiYmV2ZWxcIjp7fSxcInJvdW5kXCI6e30sXCJtaXRlclwiOnt9fSxcImRlZmF1bHRcIjpcIm1pdGVyXCJ9LFwibGluZS1taXRlci1saW1pdFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcImxpbmUtam9pblwiOlwibWl0ZXJcIn1dfSxcImxpbmUtcm91bmQtbGltaXRcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLjA1LFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOlt7XCJsaW5lLWpvaW5cIjpcInJvdW5kXCJ9XX0sXCJ2aXNpYmlsaXR5XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmlzaWJsZVwiOnt9LFwibm9uZVwiOnt9fSxcImRlZmF1bHRcIjpcInZpc2libGVcIn19LFwibGF5b3V0X3N5bWJvbFwiOntcInN5bWJvbC1wbGFjZW1lbnRcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcInBvaW50XCI6e30sXCJsaW5lXCI6e319LFwiZGVmYXVsdFwiOlwicG9pbnRcIn0sXCJzeW1ib2wtc3BhY2luZ1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjI1MCxcIm1pbmltdW1cIjoxLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOlt7XCJzeW1ib2wtcGxhY2VtZW50XCI6XCJsaW5lXCJ9XX0sXCJzeW1ib2wtYXZvaWQtZWRnZXNcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcImRlZmF1bHRcIjpmYWxzZX0sXCJpY29uLWFsbG93LW92ZXJsYXBcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcImRlZmF1bHRcIjpmYWxzZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJpY29uLWlnbm9yZS1wbGFjZW1lbnRcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcImRlZmF1bHRcIjpmYWxzZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJpY29uLW9wdGlvbmFsXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIixcInRleHQtZmllbGRcIl19LFwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fSxcImF1dG9cIjp7fX0sXCJkZWZhdWx0XCI6XCJhdXRvXCIsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl19LFwiaWNvbi1zaXplXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ1bml0c1wiOlwiZmFjdG9yIG9mIHRoZSBvcmlnaW5hbCBpY29uIHNpemVcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJpY29uLXRleHQtZml0XCI6e1widHlwZVwiOlwiZW51bVwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ2YWx1ZXNcIjp7XCJub25lXCI6e30sXCJ3aWR0aFwiOnt9LFwiaGVpZ2h0XCI6e30sXCJib3RoXCI6e319LFwiZGVmYXVsdFwiOlwibm9uZVwiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCIsXCJ0ZXh0LWZpZWxkXCJdfSxcImljb24tdGV4dC1maXQtcGFkZGluZ1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjo0LFwiZGVmYXVsdFwiOlswLDAsMCwwXSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCIsXCJ0ZXh0LWZpZWxkXCIse1wiaWNvbi10ZXh0LWZpdFwiOltcImJvdGhcIixcIndpZHRoXCIsXCJoZWlnaHRcIl19XX0sXCJpY29uLWltYWdlXCI6e1widHlwZVwiOlwic3RyaW5nXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRva2Vuc1wiOnRydWV9LFwiaWNvbi1yb3RhdGVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwicGVyaW9kXCI6MzYwLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ1bml0c1wiOlwiZGVncmVlc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24tcGFkZGluZ1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjIsXCJtaW5pbXVtXCI6MCxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24ta2VlcC11cHJpZ2h0XCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIix7XCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiOlwibWFwXCJ9LHtcInN5bWJvbC1wbGFjZW1lbnRcIjpcImxpbmVcIn1dfSxcImljb24tb2Zmc2V0XCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJpY29uLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wiY2VudGVyXCI6e30sXCJsZWZ0XCI6e30sXCJyaWdodFwiOnt9LFwidG9wXCI6e30sXCJib3R0b21cIjp7fSxcInRvcC1sZWZ0XCI6e30sXCJ0b3AtcmlnaHRcIjp7fSxcImJvdHRvbS1sZWZ0XCI6e30sXCJib3R0b20tcmlnaHRcIjp7fX0sXCJkZWZhdWx0XCI6XCJjZW50ZXJcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJpY29uLXBpdGNoLWFsaWdubWVudFwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9LFwiYXV0b1wiOnt9fSxcImRlZmF1bHRcIjpcImF1dG9cIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXX0sXCJ0ZXh0LXBpdGNoLWFsaWdubWVudFwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9LFwiYXV0b1wiOnt9fSxcImRlZmF1bHRcIjpcImF1dG9cIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9LFwiYXV0b1wiOnt9fSxcImRlZmF1bHRcIjpcImF1dG9cIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LWZpZWxkXCI6e1widHlwZVwiOlwic3RyaW5nXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcImRlZmF1bHRcIjpcIlwiLFwidG9rZW5zXCI6dHJ1ZX0sXCJ0ZXh0LWZvbnRcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcInN0cmluZ1wiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6W1wiT3BlbiBTYW5zIFJlZ3VsYXJcIixcIkFyaWFsIFVuaWNvZGUgTVMgUmVndWxhclwiXSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LXNpemVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxNixcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcInBpeGVsc1wiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1tYXgtd2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxMCxcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcImVtc1wiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1saW5lLWhlaWdodFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEuMixcInVuaXRzXCI6XCJlbXNcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdfSxcInRleHQtbGV0dGVyLXNwYWNpbmdcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwidW5pdHNcIjpcImVtc1wiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1qdXN0aWZ5XCI6e1widHlwZVwiOlwiZW51bVwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ2YWx1ZXNcIjp7XCJsZWZ0XCI6e30sXCJjZW50ZXJcIjp7fSxcInJpZ2h0XCI6e319LFwiZGVmYXVsdFwiOlwiY2VudGVyXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcImNlbnRlclwiOnt9LFwibGVmdFwiOnt9LFwicmlnaHRcIjp7fSxcInRvcFwiOnt9LFwiYm90dG9tXCI6e30sXCJ0b3AtbGVmdFwiOnt9LFwidG9wLXJpZ2h0XCI6e30sXCJib3R0b20tbGVmdFwiOnt9LFwiYm90dG9tLXJpZ2h0XCI6e319LFwiZGVmYXVsdFwiOlwiY2VudGVyXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1tYXgtYW5nbGVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjo0NSxcInVuaXRzXCI6XCJkZWdyZWVzXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiLHtcInN5bWJvbC1wbGFjZW1lbnRcIjpcImxpbmVcIn1dfSxcInRleHQtcm90YXRlXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcInBlcmlvZFwiOjM2MCxcInVuaXRzXCI6XCJkZWdyZWVzXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LXBhZGRpbmdcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoyLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LWtlZXAtdXByaWdodFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOnRydWUsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIix7XCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiOlwibWFwXCJ9LHtcInN5bWJvbC1wbGFjZW1lbnRcIjpcImxpbmVcIn1dfSxcInRleHQtdHJhbnNmb3JtXCI6e1widHlwZVwiOlwiZW51bVwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ2YWx1ZXNcIjp7XCJub25lXCI6e30sXCJ1cHBlcmNhc2VcIjp7fSxcImxvd2VyY2FzZVwiOnt9fSxcImRlZmF1bHRcIjpcIm5vbmVcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXX0sXCJ0ZXh0LW9mZnNldFwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJ1bml0c1wiOlwiZW1zXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1hbGxvdy1vdmVybGFwXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1pZ25vcmUtcGxhY2VtZW50XCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1vcHRpb25hbFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOmZhbHNlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCIsXCJpY29uLWltYWdlXCJdfSxcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwifX0sXCJsYXlvdXRfcmFzdGVyXCI6e1widmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCJ9fSxcImZpbHRlclwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwiKlwifSxcImZpbHRlcl9vcGVyYXRvclwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIj09XCI6e30sXCIhPVwiOnt9LFwiPlwiOnt9LFwiPj1cIjp7fSxcIjxcIjp7fSxcIjw9XCI6e30sXCJpblwiOnt9LFwiIWluXCI6e30sXCJhbGxcIjp7fSxcImFueVwiOnt9LFwibm9uZVwiOnt9LFwiaGFzXCI6e30sXCIhaGFzXCI6e319fSxcImdlb21ldHJ5X3R5cGVcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJQb2ludFwiOnt9LFwiTGluZVN0cmluZ1wiOnt9LFwiUG9seWdvblwiOnt9fX0sXCJmdW5jdGlvblwiOntcInN0b3BzXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJmdW5jdGlvbl9zdG9wXCJ9LFwiYmFzZVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MH0sXCJwcm9wZXJ0eVwiOntcInR5cGVcIjpcInN0cmluZ1wiLFwiZGVmYXVsdFwiOlwiJHpvb21cIn0sXCJ0eXBlXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiaWRlbnRpdHlcIjp7fSxcImV4cG9uZW50aWFsXCI6e30sXCJpbnRlcnZhbFwiOnt9LFwiY2F0ZWdvcmljYWxcIjp7fX0sXCJkZWZhdWx0XCI6XCJleHBvbmVudGlhbFwifSxcImNvbG9yU3BhY2VcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJyZ2JcIjp7fSxcImxhYlwiOnt9LFwiaGNsXCI6e319LFwiZGVmYXVsdFwiOlwicmdiXCJ9LFwiZGVmYXVsdFwiOntcInR5cGVcIjpcIipcIixcInJlcXVpcmVkXCI6ZmFsc2V9fSxcImZ1bmN0aW9uX3N0b3BcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjIsXCJ2YWx1ZVwiOltcIm51bWJlclwiLFwiY29sb3JcIl0sXCJsZW5ndGhcIjoyfSxcImxpZ2h0XCI6e1wiYW5jaG9yXCI6e1widHlwZVwiOlwiZW51bVwiLFwiZGVmYXVsdFwiOlwidmlld3BvcnRcIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6ZmFsc2UsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCJ9LFwicG9zaXRpb25cIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwiZGVmYXVsdFwiOlsxLjE1LDIxMCwzMF0sXCJsZW5ndGhcIjozLFwidmFsdWVcIjpcIm51bWJlclwiLFwidHJhbnNpdGlvblwiOnRydWUsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6ZmFsc2V9LFwiY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZGVmYXVsdFwiOlwiI2ZmZmZmZlwiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOmZhbHNlLFwidHJhbnNpdGlvblwiOnRydWV9LFwiaW50ZW5zaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MC41LFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjpmYWxzZSxcInRyYW5zaXRpb25cIjp0cnVlfX0sXCJwYWludFwiOltcInBhaW50X2ZpbGxcIixcInBhaW50X2xpbmVcIixcInBhaW50X2NpcmNsZVwiLFwicGFpbnRfZmlsbC1leHRydXNpb25cIixcInBhaW50X3N5bWJvbFwiLFwicGFpbnRfcmFzdGVyXCIsXCJwYWludF9iYWNrZ3JvdW5kXCJdLFwicGFpbnRfZmlsbFwiOntcImZpbGwtYW50aWFsaWFzXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6dHJ1ZX0sXCJmaWxsLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWV9LFwiZmlsbC1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbe1wiIVwiOlwiZmlsbC1wYXR0ZXJuXCJ9XX0sXCJmaWxsLW91dGxpbmUtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImZpbGwtcGF0dGVyblwifSx7XCJmaWxsLWFudGlhbGlhc1wiOnRydWV9XX0sXCJmaWxsLXRyYW5zbGF0ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIn0sXCJmaWxsLXRyYW5zbGF0ZS1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1wiZmlsbC10cmFuc2xhdGVcIl19LFwiZmlsbC1wYXR0ZXJuXCI6e1widHlwZVwiOlwic3RyaW5nXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfX0sXCJwYWludF9maWxsLWV4dHJ1c2lvblwiOntcImZpbGwtZXh0cnVzaW9uLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjpmYWxzZSxcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlfSxcImZpbGwtZXh0cnVzaW9uLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOlt7XCIhXCI6XCJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJuXCJ9XX0sXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGVcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIm51bWJlclwiLFwibGVuZ3RoXCI6MixcImRlZmF1bHRcIjpbMCwwXSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcFwiLFwicmVxdWlyZXNcIjpbXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGVcIl19LFwiZmlsbC1leHRydXNpb24tcGF0dGVyblwiOntcInR5cGVcIjpcInN0cmluZ1wiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHRcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcInVuaXRzXCI6XCJtZXRlcnNcIixcInRyYW5zaXRpb25cIjp0cnVlfSxcImZpbGwtZXh0cnVzaW9uLWJhc2VcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjo2NTUzNSxcInVuaXRzXCI6XCJtZXRlcnNcIixcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHRcIl19fSxcInBhaW50X2xpbmVcIjp7XCJsaW5lLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWV9LFwibGluZS1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbe1wiIVwiOlwibGluZS1wYXR0ZXJuXCJ9XX0sXCJsaW5lLXRyYW5zbGF0ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIn0sXCJsaW5lLXRyYW5zbGF0ZS1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1wibGluZS10cmFuc2xhdGVcIl19LFwibGluZS13aWR0aFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwibGluZS1nYXAtd2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wifSxcImxpbmUtb2Zmc2V0XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwibGluZS1ibHVyXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcIm1pbmltdW1cIjowLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIn0sXCJsaW5lLWRhc2hhcnJheVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcIm1pbmltdW1cIjowLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwibGluZSB3aWR0aHNcIixcInJlcXVpcmVzXCI6W3tcIiFcIjpcImxpbmUtcGF0dGVyblwifV19LFwibGluZS1wYXR0ZXJuXCI6e1widHlwZVwiOlwic3RyaW5nXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfX0sXCJwYWludF9jaXJjbGVcIjp7XCJjaXJjbGUtcmFkaXVzXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6NSxcIm1pbmltdW1cIjowLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIn0sXCJjaXJjbGUtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZGVmYXVsdFwiOlwiIzAwMDAwMFwiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJjaXJjbGUtYmx1clwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfSxcImNpcmNsZS1vcGFjaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfSxcImNpcmNsZS10cmFuc2xhdGVcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIm51bWJlclwiLFwibGVuZ3RoXCI6MixcImRlZmF1bHRcIjpbMCwwXSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1wiY2lyY2xlLXRyYW5zbGF0ZVwiXX0sXCJjaXJjbGUtcGl0Y2gtc2NhbGVcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIn0sXCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50XCI6e1widHlwZVwiOlwiZW51bVwiLFwiZnVuY3Rpb25cIjpcInBpZWNld2lzZS1jb25zdGFudFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ2YWx1ZXNcIjp7XCJtYXBcIjp7fSxcInZpZXdwb3J0XCI6e319LFwiZGVmYXVsdFwiOlwidmlld3BvcnRcIn0sXCJjaXJjbGUtc3Ryb2tlLXdpZHRoXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcIm1pbmltdW1cIjowLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJwcm9wZXJ0eS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIn0sXCJjaXJjbGUtc3Ryb2tlLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWV9LFwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfX0sXCJwYWludF9zeW1ib2xcIjp7XCJpY29uLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl19LFwiaWNvbi1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24taGFsby1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCJyZ2JhKDAsIDAsIDAsIDApXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24taGFsby13aWR0aFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl19LFwiaWNvbi1oYWxvLWJsdXJcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24tdHJhbnNsYXRlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdfSxcImljb24tdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcFwiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCIsXCJpY29uLXRyYW5zbGF0ZVwiXX0sXCJ0ZXh0LW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdfSxcInRleHQtaGFsby1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCJyZ2JhKDAsIDAsIDAsIDApXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdfSxcInRleHQtaGFsby13aWR0aFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwicHJvcGVydHktZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl19LFwidGV4dC1oYWxvLWJsdXJcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInByb3BlcnR5LWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdfSxcInRleHQtdHJhbnNsYXRlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdfSxcInRleHQtdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcImZ1bmN0aW9uXCI6XCJwaWVjZXdpc2UtY29uc3RhbnRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcFwiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCIsXCJ0ZXh0LXRyYW5zbGF0ZVwiXX19LFwicGFpbnRfcmFzdGVyXCI6e1wicmFzdGVyLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWV9LFwicmFzdGVyLWh1ZS1yb3RhdGVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwicGVyaW9kXCI6MzYwLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJkZWdyZWVzXCJ9LFwicmFzdGVyLWJyaWdodG5lc3MtbWluXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJmdW5jdGlvblwiOlwiaW50ZXJwb2xhdGVkXCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlfSxcInJhc3Rlci1icmlnaHRuZXNzLW1heFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJyYXN0ZXItc2F0dXJhdGlvblwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6LTEsXCJtYXhpbXVtXCI6MSxcImZ1bmN0aW9uXCI6XCJpbnRlcnBvbGF0ZWRcIixcInpvb20tZnVuY3Rpb25cIjp0cnVlLFwidHJhbnNpdGlvblwiOnRydWV9LFwicmFzdGVyLWNvbnRyYXN0XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcIm1pbmltdW1cIjotMSxcIm1heGltdW1cIjoxLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjMwMCxcIm1pbmltdW1cIjowLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJtaWxsaXNlY29uZHNcIn19LFwicGFpbnRfYmFja2dyb3VuZFwiOntcImJhY2tncm91bmQtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZGVmYXVsdFwiOlwiIzAwMDAwMFwiLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImJhY2tncm91bmQtcGF0dGVyblwifV19LFwiYmFja2dyb3VuZC1wYXR0ZXJuXCI6e1widHlwZVwiOlwic3RyaW5nXCIsXCJmdW5jdGlvblwiOlwicGllY2V3aXNlLWNvbnN0YW50XCIsXCJ6b29tLWZ1bmN0aW9uXCI6dHJ1ZSxcInRyYW5zaXRpb25cIjp0cnVlfSxcImJhY2tncm91bmQtb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwiZnVuY3Rpb25cIjpcImludGVycG9sYXRlZFwiLFwiem9vbS1mdW5jdGlvblwiOnRydWUsXCJ0cmFuc2l0aW9uXCI6dHJ1ZX19LFwidHJhbnNpdGlvblwiOntcImR1cmF0aW9uXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MzAwLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwibWlsbGlzZWNvbmRzXCJ9LFwiZGVsYXlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwibWlsbGlzZWNvbmRzXCJ9fX1cbn0se31dLDEyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoLTE7ZS0tID4wOyl0W2VdPWFyZ3VtZW50c1tlKzFdO2Zvcih2YXIgbj0wLG89dDtuPG8ubGVuZ3RoO24rPTEpe3ZhciBhPW9bbl07Zm9yKHZhciBmIGluIGEpcltmXT1hW2ZdfXJldHVybiByfTtcbn0se31dLDEyNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIE51bWJlcj9cIm51bWJlclwiOm4gaW5zdGFuY2VvZiBTdHJpbmc/XCJzdHJpbmdcIjpuIGluc3RhbmNlb2YgQm9vbGVhbj9cImJvb2xlYW5cIjpBcnJheS5pc0FycmF5KG4pP1wiYXJyYXlcIjpudWxsPT09bj9cIm51bGxcIjp0eXBlb2Ygbn07XG59LHt9XSwxMjc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gaW50ZXJwb2xhdGUodCxlLG4pe3JldHVybiB0KigxLW4pK2Uqbn1tb2R1bGUuZXhwb3J0cz1pbnRlcnBvbGF0ZSxpbnRlcnBvbGF0ZS5udW1iZXI9aW50ZXJwb2xhdGUsaW50ZXJwb2xhdGUudmVjMj1mdW5jdGlvbih0LGUsbil7cmV0dXJuW2ludGVycG9sYXRlKHRbMF0sZVswXSxuKSxpbnRlcnBvbGF0ZSh0WzFdLGVbMV0sbildfSxpbnRlcnBvbGF0ZS5jb2xvcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuW2ludGVycG9sYXRlKHRbMF0sZVswXSxuKSxpbnRlcnBvbGF0ZSh0WzFdLGVbMV0sbiksaW50ZXJwb2xhdGUodFsyXSxlWzJdLG4pLGludGVycG9sYXRlKHRbM10sZVszXSxuKV19LGludGVycG9sYXRlLmFycmF5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gaW50ZXJwb2xhdGUodCxlW3JdLG4pfSl9O1xufSx7fV0sMTI4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBwYXJzZUNvbG9yU3RyaW5nPV9kZXJlcV8oXCJjc3Njb2xvcnBhcnNlclwiKS5wYXJzZUNTU0NvbG9yO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiByKXt2YXIgZT1wYXJzZUNvbG9yU3RyaW5nKHIpO2lmKCFlKXJldHVybjtyZXR1cm5bZVswXS8yNTUqZVszXSxlWzFdLzI1NSplWzNdLGVbMl0vMjU1KmVbM10sZVszXV19cmV0dXJuIEFycmF5LmlzQXJyYXkocik/cjp2b2lkIDB9O1xufSx7XCJjc3Njb2xvcnBhcnNlclwiOjExNH1dLDEyOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1bXCJ0eXBlXCIsXCJzb3VyY2VcIixcInNvdXJjZS1sYXllclwiLFwibWluem9vbVwiLFwibWF4em9vbVwiLFwiZmlsdGVyXCIsXCJsYXlvdXRcIl07XG59LHt9XSwxMzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIG4gaW5zdGFuY2VvZiBOdW1iZXJ8fG4gaW5zdGFuY2VvZiBTdHJpbmd8fG4gaW5zdGFuY2VvZiBCb29sZWFuP24udmFsdWVPZigpOm59O1xufSx7fV0sMTMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBWYWxpZGF0aW9uRXJyb3I9X2RlcmVxXyhcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIiksZ2V0VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9nZXRfdHlwZVwiKSxleHRlbmQ9X2RlcmVxXyhcIi4uL3V0aWwvZXh0ZW5kXCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciByPV9kZXJlcV8oXCIuL3ZhbGlkYXRlX2Z1bmN0aW9uXCIpLHQ9X2RlcmVxXyhcIi4vdmFsaWRhdGVfb2JqZWN0XCIpLGk9e1wiKlwiOmZ1bmN0aW9uKCl7cmV0dXJuW119LGFycmF5Ol9kZXJlcV8oXCIuL3ZhbGlkYXRlX2FycmF5XCIpLGJvb2xlYW46X2RlcmVxXyhcIi4vdmFsaWRhdGVfYm9vbGVhblwiKSxudW1iZXI6X2RlcmVxXyhcIi4vdmFsaWRhdGVfbnVtYmVyXCIpLGNvbG9yOl9kZXJlcV8oXCIuL3ZhbGlkYXRlX2NvbG9yXCIpLGNvbnN0YW50czpfZGVyZXFfKFwiLi92YWxpZGF0ZV9jb25zdGFudHNcIiksZW51bTpfZGVyZXFfKFwiLi92YWxpZGF0ZV9lbnVtXCIpLGZpbHRlcjpfZGVyZXFfKFwiLi92YWxpZGF0ZV9maWx0ZXJcIiksZnVuY3Rpb246X2RlcmVxXyhcIi4vdmFsaWRhdGVfZnVuY3Rpb25cIiksbGF5ZXI6X2RlcmVxXyhcIi4vdmFsaWRhdGVfbGF5ZXJcIiksb2JqZWN0Ol9kZXJlcV8oXCIuL3ZhbGlkYXRlX29iamVjdFwiKSxzb3VyY2U6X2RlcmVxXyhcIi4vdmFsaWRhdGVfc291cmNlXCIpLGxpZ2h0Ol9kZXJlcV8oXCIuL3ZhbGlkYXRlX2xpZ2h0XCIpLHN0cmluZzpfZGVyZXFfKFwiLi92YWxpZGF0ZV9zdHJpbmdcIil9LGE9ZS52YWx1ZSxuPWUudmFsdWVTcGVjLHU9ZS5rZXksbz1lLnN0eWxlU3BlYyxsPWUuc3R5bGU7aWYoXCJzdHJpbmdcIj09PWdldFR5cGUoYSkmJlwiQFwiPT09YVswXSl7aWYoby4kdmVyc2lvbj43KXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKHUsYSxcImNvbnN0YW50cyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhcyBvZiB2OFwiKV07aWYoIShhIGluIGwuY29uc3RhbnRzKSlyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcih1LGEsJ2NvbnN0YW50IFwiJXNcIiBub3QgZm91bmQnLGEpXTtlPWV4dGVuZCh7fSxlLHt2YWx1ZTpsLmNvbnN0YW50c1thXX0pfXJldHVybiBuLmZ1bmN0aW9uJiZcIm9iamVjdFwiPT09Z2V0VHlwZShhKT9yKGUpOm4udHlwZSYmaVtuLnR5cGVdP2lbbi50eXBlXShlKTp0KGV4dGVuZCh7fSxlLHt2YWx1ZVNwZWM6bi50eXBlP29bbi50eXBlXTpufSkpfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZXh0ZW5kXCI6MTI1LFwiLi4vdXRpbC9nZXRfdHlwZVwiOjEyNixcIi4vdmFsaWRhdGVfYXJyYXlcIjoxMzIsXCIuL3ZhbGlkYXRlX2Jvb2xlYW5cIjoxMzMsXCIuL3ZhbGlkYXRlX2NvbG9yXCI6MTM0LFwiLi92YWxpZGF0ZV9jb25zdGFudHNcIjoxMzUsXCIuL3ZhbGlkYXRlX2VudW1cIjoxMzYsXCIuL3ZhbGlkYXRlX2ZpbHRlclwiOjEzNyxcIi4vdmFsaWRhdGVfZnVuY3Rpb25cIjoxMzgsXCIuL3ZhbGlkYXRlX2xheWVyXCI6MTQwLFwiLi92YWxpZGF0ZV9saWdodFwiOjE0MixcIi4vdmFsaWRhdGVfbnVtYmVyXCI6MTQzLFwiLi92YWxpZGF0ZV9vYmplY3RcIjoxNDQsXCIuL3ZhbGlkYXRlX3NvdXJjZVwiOjE0NyxcIi4vdmFsaWRhdGVfc3RyaW5nXCI6MTQ4fV0sMTMyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLHZhbGlkYXRlPV9kZXJlcV8oXCIuL3ZhbGlkYXRlXCIpLFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1lLnZhbHVlLHQ9ZS52YWx1ZVNwZWMsYT1lLnN0eWxlLG49ZS5zdHlsZVNwZWMsbD1lLmtleSxpPWUuYXJyYXlFbGVtZW50VmFsaWRhdG9yfHx2YWxpZGF0ZTtpZihcImFycmF5XCIhPT1nZXRUeXBlKHIpKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKGwscixcImFycmF5IGV4cGVjdGVkLCAlcyBmb3VuZFwiLGdldFR5cGUocikpXTtpZih0Lmxlbmd0aCYmci5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihsLHIsXCJhcnJheSBsZW5ndGggJWQgZXhwZWN0ZWQsIGxlbmd0aCAlZCBmb3VuZFwiLHQubGVuZ3RoLHIubGVuZ3RoKV07aWYodFtcIm1pbi1sZW5ndGhcIl0mJnIubGVuZ3RoPHRbXCJtaW4tbGVuZ3RoXCJdKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKGwscixcImFycmF5IGxlbmd0aCBhdCBsZWFzdCAlZCBleHBlY3RlZCwgbGVuZ3RoICVkIGZvdW5kXCIsdFtcIm1pbi1sZW5ndGhcIl0sci5sZW5ndGgpXTt2YXIgbz17dHlwZTp0LnZhbHVlfTtuLiR2ZXJzaW9uPDcmJihvLmZ1bmN0aW9uPXQuZnVuY3Rpb24pLFwib2JqZWN0XCI9PT1nZXRUeXBlKHQudmFsdWUpJiYobz10LnZhbHVlKTtmb3IodmFyIHU9W10sZD0wO2Q8ci5sZW5ndGg7ZCsrKXU9dS5jb25jYXQoaSh7YXJyYXk6cixhcnJheUluZGV4OmQsdmFsdWU6cltkXSx2YWx1ZVNwZWM6byxzdHlsZTphLHN0eWxlU3BlYzpuLGtleTpsK1wiW1wiK2QrXCJdXCJ9KSk7cmV0dXJuIHV9O1xufSx7XCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCI6MTA5LFwiLi4vdXRpbC9nZXRfdHlwZVwiOjEyNixcIi4vdmFsaWRhdGVcIjoxMzF9XSwxMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIGdldFR5cGU9X2RlcmVxXyhcIi4uL3V0aWwvZ2V0X3R5cGVcIiksVmFsaWRhdGlvbkVycm9yPV9kZXJlcV8oXCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciByPWUudmFsdWUsbz1lLmtleSx0PWdldFR5cGUocik7cmV0dXJuXCJib29sZWFuXCIhPT10P1tuZXcgVmFsaWRhdGlvbkVycm9yKG8scixcImJvb2xlYW4gZXhwZWN0ZWQsICVzIGZvdW5kXCIsdCldOltdfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjZ9XSwxMzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKSxnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLHBhcnNlQ1NTQ29sb3I9X2RlcmVxXyhcImNzc2NvbG9ycGFyc2VyXCIpLnBhcnNlQ1NTQ29sb3I7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24ocil7dmFyIGU9ci5rZXksbz1yLnZhbHVlLHQ9Z2V0VHlwZShvKTtyZXR1cm5cInN0cmluZ1wiIT09dD9bbmV3IFZhbGlkYXRpb25FcnJvcihlLG8sXCJjb2xvciBleHBlY3RlZCwgJXMgZm91bmRcIix0KV06bnVsbD09PXBhcnNlQ1NTQ29sb3Iobyk/W25ldyBWYWxpZGF0aW9uRXJyb3IoZSxvLCdjb2xvciBleHBlY3RlZCwgXCIlc1wiIGZvdW5kJyxvKV06W119O1xufSx7XCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCI6MTA5LFwiLi4vdXRpbC9nZXRfdHlwZVwiOjEyNixcImNzc2NvbG9ycGFyc2VyXCI6MTE0fV0sMTM1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBWYWxpZGF0aW9uRXJyb3I9X2RlcmVxXyhcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIiksZ2V0VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9nZXRfdHlwZVwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXt2YXIgZT1yLmtleSx0PXIudmFsdWU7aWYoci5zdHlsZVNwZWMuJHZlcnNpb24+NylyZXR1cm4gdD9bbmV3IFZhbGlkYXRpb25FcnJvcihlLHQsXCJjb25zdGFudHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYXMgb2YgdjhcIildOltdO3ZhciBhPWdldFR5cGUodCk7aWYoXCJvYmplY3RcIiE9PWEpcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IoZSx0LFwib2JqZWN0IGV4cGVjdGVkLCAlcyBmb3VuZFwiLGEpXTt2YXIgbz1bXTtmb3IodmFyIG4gaW4gdClcIkBcIiE9PW5bMF0mJm8ucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGUrXCIuXCIrbix0W25dLCdjb25zdGFudHMgbXVzdCBzdGFydCB3aXRoIFwiQFwiJykpO3JldHVybiBvfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjZ9XSwxMzY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKSx1bmJ1bmRsZT1fZGVyZXFfKFwiLi4vdXRpbC91bmJ1bmRsZV9qc29ubGludFwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1lLmtleSxuPWUudmFsdWUsdT1lLnZhbHVlU3BlYyxvPVtdO3JldHVybiBBcnJheS5pc0FycmF5KHUudmFsdWVzKT8tMT09PXUudmFsdWVzLmluZGV4T2YodW5idW5kbGUobikpJiZvLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihyLG4sXCJleHBlY3RlZCBvbmUgb2YgWyVzXSwgJXMgZm91bmRcIix1LnZhbHVlcy5qb2luKFwiLCBcIiksbikpOi0xPT09T2JqZWN0LmtleXModS52YWx1ZXMpLmluZGV4T2YodW5idW5kbGUobikpJiZvLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihyLG4sXCJleHBlY3RlZCBvbmUgb2YgWyVzXSwgJXMgZm91bmRcIixPYmplY3Qua2V5cyh1LnZhbHVlcykuam9pbihcIiwgXCIpLG4pKSxvfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvdW5idW5kbGVfanNvbmxpbnRcIjoxMzB9XSwxMzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKSx2YWxpZGF0ZUVudW09X2RlcmVxXyhcIi4vdmFsaWRhdGVfZW51bVwiKSxnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLHVuYnVuZGxlPV9kZXJlcV8oXCIuLi91dGlsL3VuYnVuZGxlX2pzb25saW50XCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGUocil7dmFyIHQsYT1yLnZhbHVlLG49ci5rZXksbD1yLnN0eWxlU3BlYyxzPVtdO2lmKFwiYXJyYXlcIiE9PWdldFR5cGUoYSkpcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IobixhLFwiYXJyYXkgZXhwZWN0ZWQsICVzIGZvdW5kXCIsZ2V0VHlwZShhKSldO2lmKGEubGVuZ3RoPDEpcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IobixhLFwiZmlsdGVyIGFycmF5IG11c3QgaGF2ZSBhdCBsZWFzdCAxIGVsZW1lbnRcIildO3N3aXRjaChzPXMuY29uY2F0KHZhbGlkYXRlRW51bSh7a2V5Om4rXCJbMF1cIix2YWx1ZTphWzBdLHZhbHVlU3BlYzpsLmZpbHRlcl9vcGVyYXRvcixzdHlsZTpyLnN0eWxlLHN0eWxlU3BlYzpyLnN0eWxlU3BlY30pKSx1bmJ1bmRsZShhWzBdKSl7Y2FzZVwiPFwiOmNhc2VcIjw9XCI6Y2FzZVwiPlwiOmNhc2VcIj49XCI6YS5sZW5ndGg+PTImJlwiJHR5cGVcIj09PXVuYnVuZGxlKGFbMV0pJiZzLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihuLGEsJ1wiJHR5cGVcIiBjYW5ub3QgYmUgdXNlIHdpdGggb3BlcmF0b3IgXCIlc1wiJyxhWzBdKSk7Y2FzZVwiPT1cIjpjYXNlXCIhPVwiOjMhPT1hLmxlbmd0aCYmcy5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IobixhLCdmaWx0ZXIgYXJyYXkgZm9yIG9wZXJhdG9yIFwiJXNcIiBtdXN0IGhhdmUgMyBlbGVtZW50cycsYVswXSkpO2Nhc2VcImluXCI6Y2FzZVwiIWluXCI6YS5sZW5ndGg+PTImJlwic3RyaW5nXCIhPT0odD1nZXRUeXBlKGFbMV0pKSYmcy5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IobitcIlsxXVwiLGFbMV0sXCJzdHJpbmcgZXhwZWN0ZWQsICVzIGZvdW5kXCIsdCkpO2Zvcih2YXIgbz0yO288YS5sZW5ndGg7bysrKXQ9Z2V0VHlwZShhW29dKSxcIiR0eXBlXCI9PT11bmJ1bmRsZShhWzFdKT9zPXMuY29uY2F0KHZhbGlkYXRlRW51bSh7a2V5Om4rXCJbXCIrbytcIl1cIix2YWx1ZTphW29dLHZhbHVlU3BlYzpsLmdlb21ldHJ5X3R5cGUsc3R5bGU6ci5zdHlsZSxzdHlsZVNwZWM6ci5zdHlsZVNwZWN9KSk6XCJzdHJpbmdcIiE9PXQmJlwibnVtYmVyXCIhPT10JiZcImJvb2xlYW5cIiE9PXQmJnMucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKG4rXCJbXCIrbytcIl1cIixhW29dLFwic3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4gZXhwZWN0ZWQsICVzIGZvdW5kXCIsdCkpO2JyZWFrO2Nhc2VcImFueVwiOmNhc2VcImFsbFwiOmNhc2VcIm5vbmVcIjpmb3IodmFyIGk9MTtpPGEubGVuZ3RoO2krKylzPXMuY29uY2F0KGUoe2tleTpuK1wiW1wiK2krXCJdXCIsdmFsdWU6YVtpXSxzdHlsZTpyLnN0eWxlLHN0eWxlU3BlYzpyLnN0eWxlU3BlY30pKTticmVhaztjYXNlXCJoYXNcIjpjYXNlXCIhaGFzXCI6dD1nZXRUeXBlKGFbMV0pLDIhPT1hLmxlbmd0aD9zLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihuLGEsJ2ZpbHRlciBhcnJheSBmb3IgXCIlc1wiIG9wZXJhdG9yIG11c3QgaGF2ZSAyIGVsZW1lbnRzJyxhWzBdKSk6XCJzdHJpbmdcIiE9PXQmJnMucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKG4rXCJbMV1cIixhWzFdLFwic3RyaW5nIGV4cGVjdGVkLCAlcyBmb3VuZFwiLHQpKX1yZXR1cm4gc307XG59LHtcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIjoxMDksXCIuLi91dGlsL2dldF90eXBlXCI6MTI2LFwiLi4vdXRpbC91bmJ1bmRsZV9qc29ubGludFwiOjEzMCxcIi4vdmFsaWRhdGVfZW51bVwiOjEzNn1dLDEzODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgVmFsaWRhdGlvbkVycm9yPV9kZXJlcV8oXCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCIpLGdldFR5cGU9X2RlcmVxXyhcIi4uL3V0aWwvZ2V0X3R5cGVcIiksdmFsaWRhdGU9X2RlcmVxXyhcIi4vdmFsaWRhdGVcIiksdmFsaWRhdGVPYmplY3Q9X2RlcmVxXyhcIi4vdmFsaWRhdGVfb2JqZWN0XCIpLHZhbGlkYXRlQXJyYXk9X2RlcmVxXyhcIi4vdmFsaWRhdGVfYXJyYXlcIiksdmFsaWRhdGVOdW1iZXI9X2RlcmVxXyhcIi4vdmFsaWRhdGVfbnVtYmVyXCIpLHVuYnVuZGxlPV9kZXJlcV8oXCIuLi91dGlsL3VuYnVuZGxlX2pzb25saW50XCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7aWYoXCJpZGVudGl0eVwiPT09cClyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLCdpZGVudGl0eSBmdW5jdGlvbiBtYXkgbm90IGhhdmUgYSBcInN0b3BzXCIgcHJvcGVydHknKV07dmFyIHQ9W10sYT1lLnZhbHVlO3JldHVybiB0PXQuY29uY2F0KHZhbGlkYXRlQXJyYXkoe2tleTplLmtleSx2YWx1ZTphLHZhbHVlU3BlYzplLnZhbHVlU3BlYyxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlYyxhcnJheUVsZW1lbnRWYWxpZGF0b3I6cn0pKSxcImFycmF5XCI9PT1nZXRUeXBlKGEpJiYwPT09YS5sZW5ndGgmJnQucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGUua2V5LGEsXCJhcnJheSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN0b3BcIikpLHR9ZnVuY3Rpb24gcihlKXt2YXIgdD1bXSxyPWUudmFsdWUsbz1lLmtleTtpZihcImFycmF5XCIhPT1nZXRUeXBlKHIpKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKG8scixcImFycmF5IGV4cGVjdGVkLCAlcyBmb3VuZFwiLGdldFR5cGUocikpXTtpZigyIT09ci5sZW5ndGgpcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IobyxyLFwiYXJyYXkgbGVuZ3RoICVkIGV4cGVjdGVkLCBsZW5ndGggJWQgZm91bmRcIiwyLHIubGVuZ3RoKV07aWYoYyl7aWYoXCJvYmplY3RcIiE9PWdldFR5cGUoclswXSkpcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IobyxyLFwib2JqZWN0IGV4cGVjdGVkLCAlcyBmb3VuZFwiLGdldFR5cGUoclswXSkpXTtpZih2b2lkIDA9PT1yWzBdLnpvb20pcmV0dXJuW25ldyBWYWxpZGF0aW9uRXJyb3IobyxyLFwib2JqZWN0IHN0b3Aga2V5IG11c3QgaGF2ZSB6b29tXCIpXTtpZih2b2lkIDA9PT1yWzBdLnZhbHVlKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKG8scixcIm9iamVjdCBzdG9wIGtleSBtdXN0IGhhdmUgdmFsdWVcIildO2lmKGwmJmw+dW5idW5kbGUoclswXS56b29tKSlyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihvLHJbMF0uem9vbSxcInN0b3Agem9vbSB2YWx1ZXMgbXVzdCBhcHBlYXIgaW4gYXNjZW5kaW5nIG9yZGVyXCIpXTt1bmJ1bmRsZShyWzBdLnpvb20pIT09bCYmKGw9dW5idW5kbGUoclswXS56b29tKSxpPXZvaWQgMCxzPXt9KSx0PXQuY29uY2F0KHZhbGlkYXRlT2JqZWN0KHtrZXk6bytcIlswXVwiLHZhbHVlOnJbMF0sdmFsdWVTcGVjOnt6b29tOnt9fSxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7em9vbTp2YWxpZGF0ZU51bWJlcix2YWx1ZTphfX0pKX1lbHNlIHQ9dC5jb25jYXQoYSh7a2V5Om8rXCJbMF1cIix2YWx1ZTpyWzBdLHZhbHVlU3BlYzp7fSxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlY30pKTtyZXR1cm4gdC5jb25jYXQodmFsaWRhdGUoe2tleTpvK1wiWzFdXCIsdmFsdWU6clsxXSx2YWx1ZVNwZWM6dSxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlY30pKX1mdW5jdGlvbiBhKGUpe3ZhciB0PWdldFR5cGUoZS52YWx1ZSkscj11bmJ1bmRsZShlLnZhbHVlKTtpZihuKXtpZih0IT09bilyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLFwiJXMgc3RvcCBkb21haW4gdHlwZSBtdXN0IG1hdGNoIHByZXZpb3VzIHN0b3AgZG9tYWluIHR5cGUgJXNcIix0LG4pXX1lbHNlIG49dDtpZihcIm51bWJlclwiIT09dCYmXCJzdHJpbmdcIiE9PXQmJlwiYm9vbGVhblwiIT09dClyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLFwic3RvcCBkb21haW4gdmFsdWUgbXVzdCBiZSBhIG51bWJlciwgc3RyaW5nLCBvciBib29sZWFuXCIpXTtpZihcIm51bWJlclwiIT09dCYmXCJjYXRlZ29yaWNhbFwiIT09cCl7dmFyIGE9XCJudW1iZXIgZXhwZWN0ZWQsICVzIGZvdW5kXCI7cmV0dXJuIHVbXCJwcm9wZXJ0eS1mdW5jdGlvblwiXSYmdm9pZCAwPT09cCYmKGErPSdcXG5JZiB5b3UgaW50ZW5kZWQgdG8gdXNlIGEgY2F0ZWdvcmljYWwgZnVuY3Rpb24sIHNwZWNpZnkgYFwidHlwZVwiOiBcImNhdGVnb3JpY2FsXCJgLicpLFtuZXcgVmFsaWRhdGlvbkVycm9yKGUua2V5LGUudmFsdWUsYSx0KV19cmV0dXJuXCJjYXRlZ29yaWNhbFwiIT09cHx8XCJudW1iZXJcIiE9PXR8fGlzRmluaXRlKHIpJiZNYXRoLmZsb29yKHIpPT09cj9cImNhdGVnb3JpY2FsXCIhPT1wJiZcIm51bWJlclwiPT09dCYmdm9pZCAwIT09aSYmcjxpP1tuZXcgVmFsaWRhdGlvbkVycm9yKGUua2V5LGUudmFsdWUsXCJzdG9wIGRvbWFpbiB2YWx1ZXMgbXVzdCBhcHBlYXIgaW4gYXNjZW5kaW5nIG9yZGVyXCIpXTooaT1yLFwiY2F0ZWdvcmljYWxcIj09PXAmJnIgaW4gcz9bbmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLFwic3RvcCBkb21haW4gdmFsdWVzIG11c3QgYmUgdW5pcXVlXCIpXTooc1tyXT0hMCxbXSkpOltuZXcgVmFsaWRhdGlvbkVycm9yKGUua2V5LGUudmFsdWUsXCJpbnRlZ2VyIGV4cGVjdGVkLCBmb3VuZCAlc1wiLHIpXX1mdW5jdGlvbiBvKGUpe3JldHVybiB2YWxpZGF0ZSh7a2V5OmUua2V5LHZhbHVlOmUudmFsdWUsdmFsdWVTcGVjOnUsc3R5bGU6ZS5zdHlsZSxzdHlsZVNwZWM6ZS5zdHlsZVNwZWN9KX12YXIgbixpLGwsdT1lLnZhbHVlU3BlYyxwPXVuYnVuZGxlKGUudmFsdWUudHlwZSkscz17fSx5PVwiY2F0ZWdvcmljYWxcIiE9PXAmJnZvaWQgMD09PWUudmFsdWUucHJvcGVydHksZD0heSxjPVwiYXJyYXlcIj09PWdldFR5cGUoZS52YWx1ZS5zdG9wcykmJlwiYXJyYXlcIj09PWdldFR5cGUoZS52YWx1ZS5zdG9wc1swXSkmJlwib2JqZWN0XCI9PT1nZXRUeXBlKGUudmFsdWUuc3RvcHNbMF1bMF0pLHY9dmFsaWRhdGVPYmplY3Qoe2tleTplLmtleSx2YWx1ZTplLnZhbHVlLHZhbHVlU3BlYzplLnN0eWxlU3BlYy5mdW5jdGlvbixzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7c3RvcHM6dCxkZWZhdWx0Om99fSk7cmV0dXJuXCJpZGVudGl0eVwiPT09cCYmeSYmdi5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IoZS5rZXksZS52YWx1ZSwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSBcInByb3BlcnR5XCInKSksXCJpZGVudGl0eVwiPT09cHx8ZS52YWx1ZS5zdG9wc3x8di5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IoZS5rZXksZS52YWx1ZSwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSBcInN0b3BzXCInKSksXCJleHBvbmVudGlhbFwiPT09cCYmXCJwaWVjZXdpc2UtY29uc3RhbnRcIj09PWUudmFsdWVTcGVjLmZ1bmN0aW9uJiZ2LnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLFwiZXhwb25lbnRpYWwgZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWRcIikpLGUuc3R5bGVTcGVjLiR2ZXJzaW9uPj04JiYoZCYmIWUudmFsdWVTcGVjW1wicHJvcGVydHktZnVuY3Rpb25cIl0/di5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IoZS5rZXksZS52YWx1ZSxcInByb3BlcnR5IGZ1bmN0aW9ucyBub3Qgc3VwcG9ydGVkXCIpKTp5JiYhZS52YWx1ZVNwZWNbXCJ6b29tLWZ1bmN0aW9uXCJdJiZ2LnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLFwiem9vbSBmdW5jdGlvbnMgbm90IHN1cHBvcnRlZFwiKSkpLFwiY2F0ZWdvcmljYWxcIiE9PXAmJiFjfHx2b2lkIDAhPT1lLnZhbHVlLnByb3BlcnR5fHx2LnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihlLmtleSxlLnZhbHVlLCdcInByb3BlcnR5XCIgcHJvcGVydHkgaXMgcmVxdWlyZWQnKSksdn07XG59LHtcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIjoxMDksXCIuLi91dGlsL2dldF90eXBlXCI6MTI2LFwiLi4vdXRpbC91bmJ1bmRsZV9qc29ubGludFwiOjEzMCxcIi4vdmFsaWRhdGVcIjoxMzEsXCIuL3ZhbGlkYXRlX2FycmF5XCI6MTMyLFwiLi92YWxpZGF0ZV9udW1iZXJcIjoxNDMsXCIuL3ZhbGlkYXRlX29iamVjdFwiOjE0NH1dLDEzOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgVmFsaWRhdGlvbkVycm9yPV9kZXJlcV8oXCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCIpLHZhbGlkYXRlU3RyaW5nPV9kZXJlcV8oXCIuL3ZhbGlkYXRlX3N0cmluZ1wiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXt2YXIgZT1yLnZhbHVlLHQ9ci5rZXksYT12YWxpZGF0ZVN0cmluZyhyKTtyZXR1cm4gYS5sZW5ndGg/YTooLTE9PT1lLmluZGV4T2YoXCJ7Zm9udHN0YWNrfVwiKSYmYS5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IodCxlLCdcImdseXBoc1wiIHVybCBtdXN0IGluY2x1ZGUgYSBcIntmb250c3RhY2t9XCIgdG9rZW4nKSksLTE9PT1lLmluZGV4T2YoXCJ7cmFuZ2V9XCIpJiZhLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcih0LGUsJ1wiZ2x5cGhzXCIgdXJsIG11c3QgaW5jbHVkZSBhIFwie3JhbmdlfVwiIHRva2VuJykpLGEpfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4vdmFsaWRhdGVfc3RyaW5nXCI6MTQ4fV0sMTQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBWYWxpZGF0aW9uRXJyb3I9X2RlcmVxXyhcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIiksdW5idW5kbGU9X2RlcmVxXyhcIi4uL3V0aWwvdW5idW5kbGVfanNvbmxpbnRcIiksdmFsaWRhdGVPYmplY3Q9X2RlcmVxXyhcIi4vdmFsaWRhdGVfb2JqZWN0XCIpLHZhbGlkYXRlRmlsdGVyPV9kZXJlcV8oXCIuL3ZhbGlkYXRlX2ZpbHRlclwiKSx2YWxpZGF0ZVBhaW50UHJvcGVydHk9X2RlcmVxXyhcIi4vdmFsaWRhdGVfcGFpbnRfcHJvcGVydHlcIiksdmFsaWRhdGVMYXlvdXRQcm9wZXJ0eT1fZGVyZXFfKFwiLi92YWxpZGF0ZV9sYXlvdXRfcHJvcGVydHlcIiksZXh0ZW5kPV9kZXJlcV8oXCIuLi91dGlsL2V4dGVuZFwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1bXSx0PWUudmFsdWUsYT1lLmtleSxpPWUuc3R5bGUsbD1lLnN0eWxlU3BlYzt0LnR5cGV8fHQucmVmfHxyLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihhLHQsJ2VpdGhlciBcInR5cGVcIiBvciBcInJlZlwiIGlzIHJlcXVpcmVkJykpO3ZhciB1PXVuYnVuZGxlKHQudHlwZSksbj11bmJ1bmRsZSh0LnJlZik7aWYodC5pZClmb3IodmFyIG89dW5idW5kbGUodC5pZCkscz0wO3M8ZS5hcnJheUluZGV4O3MrKyl7dmFyIGQ9aS5sYXllcnNbc107dW5idW5kbGUoZC5pZCk9PT1vJiZyLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihhLHQuaWQsJ2R1cGxpY2F0ZSBsYXllciBpZCBcIiVzXCIsIHByZXZpb3VzbHkgdXNlZCBhdCBsaW5lICVkJyx0LmlkLGQuaWQuX19saW5lX18pKX1pZihcInJlZlwiaW4gdCl7W1widHlwZVwiLFwic291cmNlXCIsXCJzb3VyY2UtbGF5ZXJcIixcImZpbHRlclwiLFwibGF5b3V0XCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZSBpbiB0JiZyLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihhLHRbZV0sJ1wiJXNcIiBpcyBwcm9oaWJpdGVkIGZvciByZWYgbGF5ZXJzJyxlKSl9KTt2YXIgeTtpLmxheWVycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3VuYnVuZGxlKGUuaWQpPT09biYmKHk9ZSl9KSx5P3kucmVmP3IucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGEsdC5yZWYsXCJyZWYgY2Fubm90IHJlZmVyZW5jZSBhbm90aGVyIHJlZiBsYXllclwiKSk6dT11bmJ1bmRsZSh5LnR5cGUpOnIucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGEsdC5yZWYsJ3JlZiBsYXllciBcIiVzXCIgbm90IGZvdW5kJyxuKSl9ZWxzZSBpZihcImJhY2tncm91bmRcIiE9PXUpaWYodC5zb3VyY2Upe3ZhciBjPWkuc291cmNlcyYmaS5zb3VyY2VzW3Quc291cmNlXSxwPWMmJnVuYnVuZGxlKGMudHlwZSk7Yz9cInZlY3RvclwiPT09cCYmXCJyYXN0ZXJcIj09PXU/ci5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IoYSx0LnNvdXJjZSwnbGF5ZXIgXCIlc1wiIHJlcXVpcmVzIGEgcmFzdGVyIHNvdXJjZScsdC5pZCkpOlwicmFzdGVyXCI9PT1wJiZcInJhc3RlclwiIT09dT9yLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihhLHQuc291cmNlLCdsYXllciBcIiVzXCIgcmVxdWlyZXMgYSB2ZWN0b3Igc291cmNlJyx0LmlkKSk6XCJ2ZWN0b3JcIiE9PXB8fHRbXCJzb3VyY2UtbGF5ZXJcIl18fHIucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGEsdCwnbGF5ZXIgXCIlc1wiIG11c3Qgc3BlY2lmeSBhIFwic291cmNlLWxheWVyXCInLHQuaWQpKTpyLnB1c2gobmV3IFZhbGlkYXRpb25FcnJvcihhLHQuc291cmNlLCdzb3VyY2UgXCIlc1wiIG5vdCBmb3VuZCcsdC5zb3VyY2UpKX1lbHNlIHIucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKGEsdCwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSBcInNvdXJjZVwiJykpO3JldHVybiByPXIuY29uY2F0KHZhbGlkYXRlT2JqZWN0KHtrZXk6YSx2YWx1ZTp0LHZhbHVlU3BlYzpsLmxheWVyLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOmUuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOntcIipcIjpmdW5jdGlvbigpe3JldHVybltdfSxmaWx0ZXI6dmFsaWRhdGVGaWx0ZXIsbGF5b3V0OmZ1bmN0aW9uKGUpe3JldHVybiB2YWxpZGF0ZU9iamVjdCh7bGF5ZXI6dCxrZXk6ZS5rZXksdmFsdWU6ZS52YWx1ZSxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7XCIqXCI6ZnVuY3Rpb24oZSl7cmV0dXJuIHZhbGlkYXRlTGF5b3V0UHJvcGVydHkoZXh0ZW5kKHtsYXllclR5cGU6dX0sZSkpfX19KX0scGFpbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHZhbGlkYXRlT2JqZWN0KHtsYXllcjp0LGtleTplLmtleSx2YWx1ZTplLnZhbHVlLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOmUuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOntcIipcIjpmdW5jdGlvbihlKXtyZXR1cm4gdmFsaWRhdGVQYWludFByb3BlcnR5KGV4dGVuZCh7bGF5ZXJUeXBlOnV9LGUpKX19fSl9fX0pKX07XG59LHtcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIjoxMDksXCIuLi91dGlsL2V4dGVuZFwiOjEyNSxcIi4uL3V0aWwvdW5idW5kbGVfanNvbmxpbnRcIjoxMzAsXCIuL3ZhbGlkYXRlX2ZpbHRlclwiOjEzNyxcIi4vdmFsaWRhdGVfbGF5b3V0X3Byb3BlcnR5XCI6MTQxLFwiLi92YWxpZGF0ZV9vYmplY3RcIjoxNDQsXCIuL3ZhbGlkYXRlX3BhaW50X3Byb3BlcnR5XCI6MTQ1fV0sMTQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB2YWxpZGF0ZVByb3BlcnR5PV9kZXJlcV8oXCIuL3ZhbGlkYXRlX3Byb3BlcnR5XCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHIpe3JldHVybiB2YWxpZGF0ZVByb3BlcnR5KHIsXCJsYXlvdXRcIil9O1xufSx7XCIuL3ZhbGlkYXRlX3Byb3BlcnR5XCI6MTQ2fV0sMTQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBWYWxpZGF0aW9uRXJyb3I9X2RlcmVxXyhcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIiksZ2V0VHlwZT1fZGVyZXFfKFwiLi4vdXRpbC9nZXRfdHlwZVwiKSx2YWxpZGF0ZT1fZGVyZXFfKFwiLi92YWxpZGF0ZVwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLHI9ZS5zdHlsZVNwZWMsYT1yLmxpZ2h0LGk9ZS5zdHlsZSxuPVtdLG89Z2V0VHlwZSh0KTtpZih2b2lkIDA9PT10KXJldHVybiBuO2lmKFwib2JqZWN0XCIhPT1vKXJldHVybiBuPW4uY29uY2F0KFtuZXcgVmFsaWRhdGlvbkVycm9yKFwibGlnaHRcIix0LFwib2JqZWN0IGV4cGVjdGVkLCAlcyBmb3VuZFwiLG8pXSk7Zm9yKHZhciBsIGluIHQpe3ZhciBjPWwubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7bj1jJiZhW2NbMV1dJiZhW2NbMV1dLnRyYW5zaXRpb24/bi5jb25jYXQodmFsaWRhdGUoe2tleTpsLHZhbHVlOnRbbF0sdmFsdWVTcGVjOnIudHJhbnNpdGlvbixzdHlsZTppLHN0eWxlU3BlYzpyfSkpOmFbbF0/bi5jb25jYXQodmFsaWRhdGUoe2tleTpsLHZhbHVlOnRbbF0sdmFsdWVTcGVjOmFbbF0sc3R5bGU6aSxzdHlsZVNwZWM6cn0pKTpuLmNvbmNhdChbbmV3IFZhbGlkYXRpb25FcnJvcihsLHRbbF0sJ3Vua25vd24gcHJvcGVydHkgXCIlc1wiJyxsKV0pfXJldHVybiBufTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjYsXCIuL3ZhbGlkYXRlXCI6MTMxfV0sMTQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1lLmtleSxpPWUudmFsdWUsbT1lLnZhbHVlU3BlYyxhPWdldFR5cGUoaSk7cmV0dXJuXCJudW1iZXJcIiE9PWE/W25ldyBWYWxpZGF0aW9uRXJyb3IocixpLFwibnVtYmVyIGV4cGVjdGVkLCAlcyBmb3VuZFwiLGEpXTpcIm1pbmltdW1cImluIG0mJmk8bS5taW5pbXVtP1tuZXcgVmFsaWRhdGlvbkVycm9yKHIsaSxcIiVzIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAlc1wiLGksbS5taW5pbXVtKV06XCJtYXhpbXVtXCJpbiBtJiZpPm0ubWF4aW11bT9bbmV3IFZhbGlkYXRpb25FcnJvcihyLGksXCIlcyBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgJXNcIixpLG0ubWF4aW11bSldOltdfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjZ9XSwxNDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKSxnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLHZhbGlkYXRlU3BlYz1fZGVyZXFfKFwiLi92YWxpZGF0ZVwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1lLmtleSx0PWUudmFsdWUsaT1lLnZhbHVlU3BlY3x8e30sYT1lLm9iamVjdEVsZW1lbnRWYWxpZGF0b3JzfHx7fSxvPWUuc3R5bGUsbD1lLnN0eWxlU3BlYyxuPVtdLHU9Z2V0VHlwZSh0KTtpZihcIm9iamVjdFwiIT09dSlyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihyLHQsXCJvYmplY3QgZXhwZWN0ZWQsICVzIGZvdW5kXCIsdSldO2Zvcih2YXIgZCBpbiB0KXt2YXIgcD1kLnNwbGl0KFwiLlwiKVswXSxzPWlbcF18fGlbXCIqXCJdLGM9dm9pZCAwO2lmKGFbcF0pYz1hW3BdO2Vsc2UgaWYoaVtwXSljPXZhbGlkYXRlU3BlYztlbHNlIGlmKGFbXCIqXCJdKWM9YVtcIipcIl07ZWxzZXtpZighaVtcIipcIl0pe24ucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKHIsdFtkXSwndW5rbm93biBwcm9wZXJ0eSBcIiVzXCInLGQpKTtjb250aW51ZX1jPXZhbGlkYXRlU3BlY31uPW4uY29uY2F0KGMoe2tleToocj9yK1wiLlwiOnIpK2QsdmFsdWU6dFtkXSx2YWx1ZVNwZWM6cyxzdHlsZTpvLHN0eWxlU3BlYzpsLG9iamVjdDp0LG9iamVjdEtleTpkfSkpfWZvcih2YXIgdiBpbiBpKWlbdl0ucmVxdWlyZWQmJnZvaWQgMD09PWlbdl0uZGVmYXVsdCYmdm9pZCAwPT09dFt2XSYmbi5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3Iocix0LCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwiJXNcIicsdikpO3JldHVybiBufTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjYsXCIuL3ZhbGlkYXRlXCI6MTMxfV0sMTQ1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB2YWxpZGF0ZVByb3BlcnR5PV9kZXJlcV8oXCIuL3ZhbGlkYXRlX3Byb3BlcnR5XCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHIpe3JldHVybiB2YWxpZGF0ZVByb3BlcnR5KHIsXCJwYWludFwiKX07XG59LHtcIi4vdmFsaWRhdGVfcHJvcGVydHlcIjoxNDZ9XSwxNDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHZhbGlkYXRlPV9kZXJlcV8oXCIuL3ZhbGlkYXRlXCIpLFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKSxnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5rZXksaT1lLnN0eWxlLGE9ZS5zdHlsZVNwZWMsbj1lLnZhbHVlLG89ZS5vYmplY3RLZXksbD1hW3QrXCJfXCIrZS5sYXllclR5cGVdO2lmKCFsKXJldHVybltdO3ZhciB5PW8ubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7aWYoXCJwYWludFwiPT09dCYmeSYmbFt5WzFdXSYmbFt5WzFdXS50cmFuc2l0aW9uKXJldHVybiB2YWxpZGF0ZSh7a2V5OnIsdmFsdWU6bix2YWx1ZVNwZWM6YS50cmFuc2l0aW9uLHN0eWxlOmksc3R5bGVTcGVjOmF9KTt2YXIgcD1lLnZhbHVlU3BlY3x8bFtvXTtpZighcClyZXR1cm5bbmV3IFZhbGlkYXRpb25FcnJvcihyLG4sJ3Vua25vd24gcHJvcGVydHkgXCIlc1wiJyxvKV07dmFyIHM7aWYoXCJzdHJpbmdcIj09PWdldFR5cGUobikmJnBbXCJwcm9wZXJ0eS1mdW5jdGlvblwiXSYmIXAudG9rZW5zJiYocz0vXnsoW159XSspfSQvLmV4ZWMobikpKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKHIsbiwnXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJwb2xhdGlvbiBzeW50YXhcXG5Vc2UgYW4gaWRlbnRpdHkgcHJvcGVydHkgZnVuY3Rpb24gaW5zdGVhZDogYHsgXCJ0eXBlXCI6IFwiaWRlbnRpdHlcIiwgXCJwcm9wZXJ0eVwiOiAlc2AgfWAuJyxvLEpTT04uc3RyaW5naWZ5KHNbMV0pKV07dmFyIHU9W107cmV0dXJuXCJzeW1ib2xcIj09PWUubGF5ZXJUeXBlJiZcInRleHQtZmllbGRcIj09PW8mJmkmJiFpLmdseXBocyYmdS5wdXNoKG5ldyBWYWxpZGF0aW9uRXJyb3IocixuLCd1c2Ugb2YgXCJ0ZXh0LWZpZWxkXCIgcmVxdWlyZXMgYSBzdHlsZSBcImdseXBoc1wiIHByb3BlcnR5JykpLHUuY29uY2F0KHZhbGlkYXRlKHtrZXk6ZS5rZXksdmFsdWU6bix2YWx1ZVNwZWM6cCxzdHlsZTppLHN0eWxlU3BlYzphfSkpfTtcbn0se1wiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiOjEwOSxcIi4uL3V0aWwvZ2V0X3R5cGVcIjoxMjYsXCIuL3ZhbGlkYXRlXCI6MTMxfV0sMTQ3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBWYWxpZGF0aW9uRXJyb3I9X2RlcmVxXyhcIi4uL2Vycm9yL3ZhbGlkYXRpb25fZXJyb3JcIiksdW5idW5kbGU9X2RlcmVxXyhcIi4uL3V0aWwvdW5idW5kbGVfanNvbmxpbnRcIiksdmFsaWRhdGVPYmplY3Q9X2RlcmVxXyhcIi4vdmFsaWRhdGVfb2JqZWN0XCIpLHZhbGlkYXRlRW51bT1fZGVyZXFfKFwiLi92YWxpZGF0ZV9lbnVtXCIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciBhPWUudmFsdWUsdD1lLmtleSxyPWUuc3R5bGVTcGVjLGw9ZS5zdHlsZTtpZighYS50eXBlKXJldHVybltuZXcgVmFsaWRhdGlvbkVycm9yKHQsYSwnXCJ0eXBlXCIgaXMgcmVxdWlyZWQnKV07dmFyIHU9dW5idW5kbGUoYS50eXBlKSxpPVtdO3N3aXRjaCh1KXtjYXNlXCJ2ZWN0b3JcIjpjYXNlXCJyYXN0ZXJcIjppZihpPWkuY29uY2F0KHZhbGlkYXRlT2JqZWN0KHtrZXk6dCx2YWx1ZTphLHZhbHVlU3BlYzpyLnNvdXJjZV90aWxlLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOnJ9KSksXCJ1cmxcImluIGEpZm9yKHZhciBzIGluIGEpW1widHlwZVwiLFwidXJsXCIsXCJ0aWxlU2l6ZVwiXS5pbmRleE9mKHMpPDAmJmkucHVzaChuZXcgVmFsaWRhdGlvbkVycm9yKHQrXCIuXCIrcyxhW3NdLCdhIHNvdXJjZSB3aXRoIGEgXCJ1cmxcIiBwcm9wZXJ0eSBtYXkgbm90IGluY2x1ZGUgYSBcIiVzXCIgcHJvcGVydHknLHMpKTtyZXR1cm4gaTtjYXNlXCJnZW9qc29uXCI6cmV0dXJuIHZhbGlkYXRlT2JqZWN0KHtrZXk6dCx2YWx1ZTphLHZhbHVlU3BlYzpyLnNvdXJjZV9nZW9qc29uLHN0eWxlOmwsc3R5bGVTcGVjOnJ9KTtjYXNlXCJ2aWRlb1wiOnJldHVybiB2YWxpZGF0ZU9iamVjdCh7a2V5OnQsdmFsdWU6YSx2YWx1ZVNwZWM6ci5zb3VyY2VfdmlkZW8sc3R5bGU6bCxzdHlsZVNwZWM6cn0pO2Nhc2VcImltYWdlXCI6cmV0dXJuIHZhbGlkYXRlT2JqZWN0KHtrZXk6dCx2YWx1ZTphLHZhbHVlU3BlYzpyLnNvdXJjZV9pbWFnZSxzdHlsZTpsLHN0eWxlU3BlYzpyfSk7Y2FzZVwiY2FudmFzXCI6cmV0dXJuIHZhbGlkYXRlT2JqZWN0KHtrZXk6dCx2YWx1ZTphLHZhbHVlU3BlYzpyLnNvdXJjZV9jYW52YXMsc3R5bGU6bCxzdHlsZVNwZWM6cn0pO2RlZmF1bHQ6cmV0dXJuIHZhbGlkYXRlRW51bSh7a2V5OnQrXCIudHlwZVwiLHZhbHVlOmEudHlwZSx2YWx1ZVNwZWM6e3ZhbHVlczpbXCJ2ZWN0b3JcIixcInJhc3RlclwiLFwiZ2VvanNvblwiLFwidmlkZW9cIixcImltYWdlXCIsXCJjYW52YXNcIl19LHN0eWxlOmwsc3R5bGVTcGVjOnJ9KX19O1xufSx7XCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCI6MTA5LFwiLi4vdXRpbC91bmJ1bmRsZV9qc29ubGludFwiOjEzMCxcIi4vdmFsaWRhdGVfZW51bVwiOjEzNixcIi4vdmFsaWRhdGVfb2JqZWN0XCI6MTQ0fV0sMTQ4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBnZXRUeXBlPV9kZXJlcV8oXCIuLi91dGlsL2dldF90eXBlXCIpLFZhbGlkYXRpb25FcnJvcj1fZGVyZXFfKFwiLi4vZXJyb3IvdmFsaWRhdGlvbl9lcnJvclwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXt2YXIgZT1yLnZhbHVlLHQ9ci5rZXksaT1nZXRUeXBlKGUpO3JldHVyblwic3RyaW5nXCIhPT1pP1tuZXcgVmFsaWRhdGlvbkVycm9yKHQsZSxcInN0cmluZyBleHBlY3RlZCwgJXMgZm91bmRcIixpKV06W119O1xufSx7XCIuLi9lcnJvci92YWxpZGF0aW9uX2Vycm9yXCI6MTA5LFwiLi4vdXRpbC9nZXRfdHlwZVwiOjEyNn1dLDE0OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB2YWxpZGF0ZVN0eWxlTWluKGUsYSl7YT1hfHxsYXRlc3RTdHlsZVNwZWM7dmFyIHQ9W107cmV0dXJuIHQ9dC5jb25jYXQodmFsaWRhdGUoe2tleTpcIlwiLHZhbHVlOmUsdmFsdWVTcGVjOmEuJHJvb3Qsc3R5bGVTcGVjOmEsc3R5bGU6ZSxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7Z2x5cGhzOnZhbGlkYXRlR2x5cGhzVVJMLFwiKlwiOmZ1bmN0aW9uKCl7cmV0dXJuW119fX0pKSxhLiR2ZXJzaW9uPjcmJmUuY29uc3RhbnRzJiYodD10LmNvbmNhdCh2YWxpZGF0ZUNvbnN0YW50cyh7a2V5OlwiY29uc3RhbnRzXCIsdmFsdWU6ZS5jb25zdGFudHMsc3R5bGU6ZSxzdHlsZVNwZWM6YX0pKSksc29ydEVycm9ycyh0KX1mdW5jdGlvbiBzb3J0RXJyb3JzKGUpe3JldHVybltdLmNvbmNhdChlKS5zb3J0KGZ1bmN0aW9uKGUsYSl7cmV0dXJuIGUubGluZS1hLmxpbmV9KX1mdW5jdGlvbiB3cmFwQ2xlYW5FcnJvcnMoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHNvcnRFcnJvcnMoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX12YXIgdmFsaWRhdGVDb25zdGFudHM9X2RlcmVxXyhcIi4vdmFsaWRhdGUvdmFsaWRhdGVfY29uc3RhbnRzXCIpLHZhbGlkYXRlPV9kZXJlcV8oXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlXCIpLGxhdGVzdFN0eWxlU3BlYz1fZGVyZXFfKFwiLi9yZWZlcmVuY2UvbGF0ZXN0XCIpLHZhbGlkYXRlR2x5cGhzVVJMPV9kZXJlcV8oXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX2dseXBoc191cmxcIik7dmFsaWRhdGVTdHlsZU1pbi5zb3VyY2U9d3JhcENsZWFuRXJyb3JzKF9kZXJlcV8oXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX3NvdXJjZVwiKSksdmFsaWRhdGVTdHlsZU1pbi5saWdodD13cmFwQ2xlYW5FcnJvcnMoX2RlcmVxXyhcIi4vdmFsaWRhdGUvdmFsaWRhdGVfbGlnaHRcIikpLHZhbGlkYXRlU3R5bGVNaW4ubGF5ZXI9d3JhcENsZWFuRXJyb3JzKF9kZXJlcV8oXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX2xheWVyXCIpKSx2YWxpZGF0ZVN0eWxlTWluLmZpbHRlcj13cmFwQ2xlYW5FcnJvcnMoX2RlcmVxXyhcIi4vdmFsaWRhdGUvdmFsaWRhdGVfZmlsdGVyXCIpKSx2YWxpZGF0ZVN0eWxlTWluLnBhaW50UHJvcGVydHk9d3JhcENsZWFuRXJyb3JzKF9kZXJlcV8oXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX3BhaW50X3Byb3BlcnR5XCIpKSx2YWxpZGF0ZVN0eWxlTWluLmxheW91dFByb3BlcnR5PXdyYXBDbGVhbkVycm9ycyhfZGVyZXFfKFwiLi92YWxpZGF0ZS92YWxpZGF0ZV9sYXlvdXRfcHJvcGVydHlcIikpLG1vZHVsZS5leHBvcnRzPXZhbGlkYXRlU3R5bGVNaW47XG59LHtcIi4vcmVmZXJlbmNlL2xhdGVzdFwiOjEyMyxcIi4vdmFsaWRhdGUvdmFsaWRhdGVcIjoxMzEsXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX2NvbnN0YW50c1wiOjEzNSxcIi4vdmFsaWRhdGUvdmFsaWRhdGVfZmlsdGVyXCI6MTM3LFwiLi92YWxpZGF0ZS92YWxpZGF0ZV9nbHlwaHNfdXJsXCI6MTM5LFwiLi92YWxpZGF0ZS92YWxpZGF0ZV9sYXllclwiOjE0MCxcIi4vdmFsaWRhdGUvdmFsaWRhdGVfbGF5b3V0X3Byb3BlcnR5XCI6MTQxLFwiLi92YWxpZGF0ZS92YWxpZGF0ZV9saWdodFwiOjE0MixcIi4vdmFsaWRhdGUvdmFsaWRhdGVfcGFpbnRfcHJvcGVydHlcIjoxNDUsXCIuL3ZhbGlkYXRlL3ZhbGlkYXRlX3NvdXJjZVwiOjE0N31dLDE1MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgQW5pbWF0aW9uTG9vcD1mdW5jdGlvbigpe3RoaXMubj0wLHRoaXMudGltZXM9W119O0FuaW1hdGlvbkxvb3AucHJvdG90eXBlLnN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aW1lcz10aGlzLnRpbWVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC50aW1lPj0obmV3IERhdGUpLmdldFRpbWUoKX0pLCF0aGlzLnRpbWVzLmxlbmd0aH0sQW5pbWF0aW9uTG9vcC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVzLnB1c2goe2lkOnRoaXMubix0aW1lOnQrKG5ldyBEYXRlKS5nZXRUaW1lKCl9KSx0aGlzLm4rK30sQW5pbWF0aW9uTG9vcC5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKHQpe3RoaXMudGltZXM9dGhpcy50aW1lcy5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIGkuaWQhPT10fSl9LG1vZHVsZS5leHBvcnRzPUFuaW1hdGlvbkxvb3A7XG59LHt9XSwxNTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHN0eWxlU3BlYz1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9yZWZlcmVuY2UvbGF0ZXN0XCIpLHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxFdmVudGVkPV9kZXJlcV8oXCIuLi91dGlsL2V2ZW50ZWRcIiksdmFsaWRhdGVTdHlsZT1fZGVyZXFfKFwiLi92YWxpZGF0ZV9zdHlsZVwiKSxTdHlsZURlY2xhcmF0aW9uPV9kZXJlcV8oXCIuL3N0eWxlX2RlY2xhcmF0aW9uXCIpLFN0eWxlVHJhbnNpdGlvbj1fZGVyZXFfKFwiLi9zdHlsZV90cmFuc2l0aW9uXCIpLFRSQU5TSVRJT05fU1VGRklYPVwiLXRyYW5zaXRpb25cIixwcm9wZXJ0aWVzPVtcImFuY2hvclwiLFwiY29sb3JcIixcInBvc2l0aW9uXCIsXCJpbnRlbnNpdHlcIl0sc3BlY2lmaWNhdGlvbnM9c3R5bGVTcGVjLmxpZ2h0LExpZ2h0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoaSl7dC5jYWxsKHRoaXMpLHRoaXMuc2V0KGkpfXJldHVybiB0JiYoaS5fX3Byb3RvX189dCksaS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksaS5wcm90b3R5cGUuY29uc3RydWN0b3I9aSxpLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztpZighdGhpcy5fdmFsaWRhdGUodmFsaWRhdGVTdHlsZS5saWdodCx0KSl7dGhpcy5fZGVjbGFyYXRpb25zPXt9LHRoaXMuX3RyYW5zaXRpb25zPXt9LHRoaXMuX3RyYW5zaXRpb25PcHRpb25zPXt9LHRoaXMuY2FsY3VsYXRlZD17fSx0PXV0aWwuZXh0ZW5kKHthbmNob3I6c3BlY2lmaWNhdGlvbnMuYW5jaG9yLmRlZmF1bHQsY29sb3I6c3BlY2lmaWNhdGlvbnMuY29sb3IuZGVmYXVsdCxwb3NpdGlvbjpzcGVjaWZpY2F0aW9ucy5wb3NpdGlvbi5kZWZhdWx0LGludGVuc2l0eTpzcGVjaWZpY2F0aW9ucy5pbnRlbnNpdHkuZGVmYXVsdH0sdCk7Zm9yKHZhciBlPTAsbz1wcm9wZXJ0aWVzO2U8by5sZW5ndGg7ZSs9MSl7dmFyIG49b1tlXTtpLl9kZWNsYXJhdGlvbnNbbl09bmV3IFN0eWxlRGVjbGFyYXRpb24oc3BlY2lmaWNhdGlvbnNbbl0sdFtuXSl9cmV0dXJuIHRoaXN9fSxpLnByb3RvdHlwZS5nZXRMaWdodD1mdW5jdGlvbigpe3JldHVybnthbmNob3I6dGhpcy5nZXRMaWdodFByb3BlcnR5KFwiYW5jaG9yXCIpLGNvbG9yOnRoaXMuZ2V0TGlnaHRQcm9wZXJ0eShcImNvbG9yXCIpLHBvc2l0aW9uOnRoaXMuZ2V0TGlnaHRQcm9wZXJ0eShcInBvc2l0aW9uXCIpLGludGVuc2l0eTp0aGlzLmdldExpZ2h0UHJvcGVydHkoXCJpbnRlbnNpdHlcIil9fSxpLnByb3RvdHlwZS5nZXRMaWdodFByb3BlcnR5PWZ1bmN0aW9uKHQpe3JldHVybiB1dGlsLmVuZHNXaXRoKHQsVFJBTlNJVElPTl9TVUZGSVgpP3RoaXMuX3RyYW5zaXRpb25PcHRpb25zW3RdOnRoaXMuX2RlY2xhcmF0aW9uc1t0XSYmdGhpcy5fZGVjbGFyYXRpb25zW3RdLnZhbHVlfSxpLnByb3RvdHlwZS5nZXRMaWdodFZhbHVlPWZ1bmN0aW9uKHQsaSl7aWYoXCJwb3NpdGlvblwiPT09dCl7dmFyIGU9dGhpcy5fdHJhbnNpdGlvbnNbdF0uY2FsY3VsYXRlKGkpLG89dXRpbC5zcGhlcmljYWxUb0NhcnRlc2lhbihlKTtyZXR1cm57eDpvWzBdLHk6b1sxXSx6Om9bMl19fXJldHVybiB0aGlzLl90cmFuc2l0aW9uc1t0XS5jYWxjdWxhdGUoaSl9LGkucHJvdG90eXBlLnNldExpZ2h0PWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7aWYoIXRoaXMuX3ZhbGlkYXRlKHZhbGlkYXRlU3R5bGUubGlnaHQsdCkpZm9yKHZhciBlIGluIHQpe3ZhciBvPXRbZV07dXRpbC5lbmRzV2l0aChlLFRSQU5TSVRJT05fU1VGRklYKT9pLl90cmFuc2l0aW9uT3B0aW9uc1tlXT1vOm51bGw9PT1vfHx2b2lkIDA9PT1vP2RlbGV0ZSBpLl9kZWNsYXJhdGlvbnNbZV06aS5fZGVjbGFyYXRpb25zW2VdPW5ldyBTdHlsZURlY2xhcmF0aW9uKHNwZWNpZmljYXRpb25zW2VdLG8pfX0saS5wcm90b3R5cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztmb3IodmFyIGUgaW4gaS5fZGVjbGFyYXRpb25zKWkuY2FsY3VsYXRlZFtlXT1pLmdldExpZ2h0VmFsdWUoZSx7em9vbTp0fSl9LGkucHJvdG90eXBlLl9hcHBseUxpZ2h0RGVjbGFyYXRpb249ZnVuY3Rpb24odCxpLGUsbyxuKXt2YXIgcj1lLnRyYW5zaXRpb24/dGhpcy5fdHJhbnNpdGlvbnNbdF06dm9pZCAwLGE9c3BlY2lmaWNhdGlvbnNbdF07aWYobnVsbCE9PWkmJnZvaWQgMCE9PWl8fChpPW5ldyBTdHlsZURlY2xhcmF0aW9uKGEsYS5kZWZhdWx0KSksIXJ8fHIuZGVjbGFyYXRpb24uanNvbiE9PWkuanNvbil7dmFyIHM9dXRpbC5leHRlbmQoe2R1cmF0aW9uOjMwMCxkZWxheTowfSxvLHRoaXMuZ2V0TGlnaHRQcm9wZXJ0eSh0K1RSQU5TSVRJT05fU1VGRklYKSksbD10aGlzLl90cmFuc2l0aW9uc1t0XT1uZXcgU3R5bGVUcmFuc2l0aW9uKGEsaSxyLHMpO2wuaW5zdGFudCgpfHwobC5sb29wSUQ9bi5zZXQobC5lbmRUaW1lLURhdGUubm93KCkpKSxyJiZuLmNhbmNlbChyLmxvb3BJRCl9fSxpLnByb3RvdHlwZS51cGRhdGVMaWdodFRyYW5zaXRpb25zPWZ1bmN0aW9uKHQsaSxlKXt2YXIgbyxuPXRoaXM7Zm9yKG8gaW4gbi5fZGVjbGFyYXRpb25zKW4uX2FwcGx5TGlnaHREZWNsYXJhdGlvbihvLG4uX2RlY2xhcmF0aW9uc1tvXSx0LGksZSl9LGkucHJvdG90eXBlLl92YWxpZGF0ZT1mdW5jdGlvbih0LGkpe3JldHVybiB2YWxpZGF0ZVN0eWxlLmVtaXRFcnJvcnModGhpcyx0LmNhbGwodmFsaWRhdGVTdHlsZSx1dGlsLmV4dGVuZCh7dmFsdWU6aSxzdHlsZTp7Z2x5cGhzOiEwLHNwcml0ZTohMH0sc3R5bGVTcGVjOnN0eWxlU3BlY30pKSl9LGl9KEV2ZW50ZWQpO21vZHVsZS5leHBvcnRzPUxpZ2h0O1xufSx7XCIuLi9zdHlsZS1zcGVjL3JlZmVyZW5jZS9sYXRlc3RcIjoxMjMsXCIuLi91dGlsL2V2ZW50ZWRcIjoyMTAsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuL3N0eWxlX2RlY2xhcmF0aW9uXCI6MTU3LFwiLi9zdHlsZV90cmFuc2l0aW9uXCI6MTY1LFwiLi92YWxpZGF0ZV9zdHlsZVwiOjE2Nn1dLDE1MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgcmVmPV9kZXJlcV8oXCIuLi91dGlsL21hcGJveFwiKSxub3JtYWxpemVHbHlwaHNVUkw9cmVmLm5vcm1hbGl6ZUdseXBoc1VSTCxhamF4PV9kZXJlcV8oXCIuLi91dGlsL2FqYXhcIikscGFyc2VHbHlwaFBCRj1fZGVyZXFfKFwiLi9wYXJzZV9nbHlwaF9wYmZcIik7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLGEsbCxwKXt2YXIgaT0yNTYqcixzPWkrMjU1LHQ9bChub3JtYWxpemVHbHlwaHNVUkwoYSkucmVwbGFjZShcIntmb250c3RhY2t9XCIsZSkucmVwbGFjZShcIntyYW5nZX1cIixpK1wiLVwiK3MpLGFqYXguUmVzb3VyY2VUeXBlLkdseXBocyk7YWpheC5nZXRBcnJheUJ1ZmZlcih0LGZ1bmN0aW9uKGUscil7aWYoZSlwKGUpO2Vsc2UgaWYocil7Zm9yKHZhciBhPXt9LGw9MCxpPXBhcnNlR2x5cGhQQkYoci5kYXRhKTtsPGkubGVuZ3RoO2wrPTEpe3ZhciBzPWlbbF07YVtzLmlkXT1zfXAobnVsbCxhKX19KX07XG59LHtcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4uL3V0aWwvbWFwYm94XCI6MjE3LFwiLi9wYXJzZV9nbHlwaF9wYmZcIjoxNTR9XSwxNTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIGFqYXg9X2RlcmVxXyhcIi4uL3V0aWwvYWpheFwiKSxicm93c2VyPV9kZXJlcV8oXCIuLi91dGlsL2Jyb3dzZXJcIikscmVmPV9kZXJlcV8oXCIuLi91dGlsL21hcGJveFwiKSxub3JtYWxpemVTcHJpdGVVUkw9cmVmLm5vcm1hbGl6ZVNwcml0ZVVSTCxyZWYkMT1fZGVyZXFfKFwiLi4vdXRpbC9pbWFnZVwiKSxSR0JBSW1hZ2U9cmVmJDEuUkdCQUltYWdlO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUscixpKXtmdW5jdGlvbiBhKCl7aWYodSlpKHUpO2Vsc2UgaWYodCYmbyl7dmFyIGU9YnJvd3Nlci5nZXRJbWFnZURhdGEobykscj17fTtmb3IodmFyIGEgaW4gdCl7dmFyIG49dFthXSxsPW4ud2lkdGgsZz1uLmhlaWdodCx4PW4ueCxmPW4ueSxtPW4uc2RmLHA9bi5waXhlbFJhdGlvLHM9UkdCQUltYWdlLmNyZWF0ZSh7d2lkdGg6bCxoZWlnaHQ6Z30pO1JHQkFJbWFnZS5jb3B5KGUscyx7eDp4LHk6Zn0se3g6MCx5OjB9LHt3aWR0aDpsLGhlaWdodDpnfSksclthXT17ZGF0YTpzLHBpeGVsUmF0aW86cCxzZGY6bX19aShudWxsLHIpfX1pZighZSlyZXR1cm4gdm9pZCBpKG51bGwse30pO3ZhciB0LG8sdSxuPWJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbz4xP1wiQDJ4XCI6XCJcIjthamF4LmdldEpTT04ocihub3JtYWxpemVTcHJpdGVVUkwoZSxuLFwiLmpzb25cIiksYWpheC5SZXNvdXJjZVR5cGUuU3ByaXRlSlNPTiksZnVuY3Rpb24oZSxyKXt1fHwodT1lLHQ9cixhKCkpfSksYWpheC5nZXRJbWFnZShyKG5vcm1hbGl6ZVNwcml0ZVVSTChlLG4sXCIucG5nXCIpLGFqYXguUmVzb3VyY2VUeXBlLlNwcml0ZUltYWdlKSxmdW5jdGlvbihlLHIpe3V8fCh1PWUsbz1yLGEoKSl9KX07XG59LHtcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4uL3V0aWwvaW1hZ2VcIjoyMTMsXCIuLi91dGlsL21hcGJveFwiOjIxN31dLDE1NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByZWFkRm9udHN0YWNrcyhlLGEscil7MT09PWUmJnIucmVhZE1lc3NhZ2UocmVhZEZvbnRzdGFjayxhKX1mdW5jdGlvbiByZWFkRm9udHN0YWNrKGUsYSxyKXtpZigzPT09ZSl7dmFyIHQ9ci5yZWFkTWVzc2FnZShyZWFkR2x5cGgse30pLGQ9dC5pZCxpPXQuYml0bWFwLG49dC53aWR0aCxvPXQuaGVpZ2h0LGg9dC5sZWZ0LHM9dC50b3AscD10LmFkdmFuY2U7YS5wdXNoKHtpZDpkLGJpdG1hcDpBbHBoYUltYWdlLmNyZWF0ZSh7d2lkdGg6bisyKmJvcmRlcixoZWlnaHQ6bysyKmJvcmRlcn0saSksbWV0cmljczp7d2lkdGg6bixoZWlnaHQ6byxsZWZ0OmgsdG9wOnMsYWR2YW5jZTpwfX0pfX1mdW5jdGlvbiByZWFkR2x5cGgoZSxhLHIpezE9PT1lP2EuaWQ9ci5yZWFkVmFyaW50KCk6Mj09PWU/YS5iaXRtYXA9ci5yZWFkQnl0ZXMoKTozPT09ZT9hLndpZHRoPXIucmVhZFZhcmludCgpOjQ9PT1lP2EuaGVpZ2h0PXIucmVhZFZhcmludCgpOjU9PT1lP2EubGVmdD1yLnJlYWRTVmFyaW50KCk6Nj09PWU/YS50b3A9ci5yZWFkU1ZhcmludCgpOjc9PT1lJiYoYS5hZHZhbmNlPXIucmVhZFZhcmludCgpKX12YXIgcmVmPV9kZXJlcV8oXCIuLi91dGlsL2ltYWdlXCIpLEFscGhhSW1hZ2U9cmVmLkFscGhhSW1hZ2UsUHJvdG9idWY9X2RlcmVxXyhcInBiZlwiKSxib3JkZXI9Mzttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb3RvYnVmKGUpLnJlYWRGaWVsZHMocmVhZEZvbnRzdGFja3MsW10pfSxtb2R1bGUuZXhwb3J0cy5HTFlQSF9QQkZfQk9SREVSPWJvcmRlcjtcbn0se1wiLi4vdXRpbC9pbWFnZVwiOjIxMyxcInBiZlwiOjI5fV0sMTU1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGdldE1heGltdW1QYWludFZhbHVlKHQsYSxlKXtyZXR1cm4gYS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQodCk/YS5wYWludFt0XTplLnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoYS5pZCkucGFpbnRQcm9wZXJ0eVN0YXRpc3RpY3NbdF0ubWF4fWZ1bmN0aW9uIHRyYW5zbGF0ZURpc3RhbmNlKHQpe3JldHVybiBNYXRoLnNxcnQodFswXSp0WzBdK3RbMV0qdFsxXSl9ZnVuY3Rpb24gdHJhbnNsYXRlKHQsYSxlLG4scil7aWYoIWFbMF0mJiFhWzFdKXJldHVybiB0O3ZhciBpPVBvaW50LmNvbnZlcnQoYSk7XCJ2aWV3cG9ydFwiPT09ZSYmaS5fcm90YXRlKC1uKTtmb3IodmFyIHU9W10scz0wO3M8dC5sZW5ndGg7cysrKXtmb3IodmFyIG89dFtzXSxsPVtdLG09MDttPG8ubGVuZ3RoO20rKylsLnB1c2gob1ttXS5zdWIoaS5fbXVsdChyKSkpO3UucHVzaChsKX1yZXR1cm4gdX12YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIik7bW9kdWxlLmV4cG9ydHM9e2dldE1heGltdW1QYWludFZhbHVlOmdldE1heGltdW1QYWludFZhbHVlLHRyYW5zbGF0ZURpc3RhbmNlOnRyYW5zbGF0ZURpc3RhbmNlLHRyYW5zbGF0ZTp0cmFuc2xhdGV9O1xufSx7XCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDE1NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRXZlbnRlZD1fZGVyZXFfKFwiLi4vdXRpbC9ldmVudGVkXCIpLFN0eWxlTGF5ZXI9X2RlcmVxXyhcIi4vc3R5bGVfbGF5ZXJcIiksbG9hZFNwcml0ZT1fZGVyZXFfKFwiLi9sb2FkX3Nwcml0ZVwiKSxJbWFnZU1hbmFnZXI9X2RlcmVxXyhcIi4uL3JlbmRlci9pbWFnZV9tYW5hZ2VyXCIpLEdseXBoTWFuYWdlcj1fZGVyZXFfKFwiLi4vcmVuZGVyL2dseXBoX21hbmFnZXJcIiksTGlnaHQ9X2RlcmVxXyhcIi4vbGlnaHRcIiksTGluZUF0bGFzPV9kZXJlcV8oXCIuLi9yZW5kZXIvbGluZV9hdGxhc1wiKSx1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLG1hcGJveD1fZGVyZXFfKFwiLi4vdXRpbC9tYXBib3hcIiksYnJvd3Nlcj1fZGVyZXFfKFwiLi4vdXRpbC9icm93c2VyXCIpLERpc3BhdGNoZXI9X2RlcmVxXyhcIi4uL3V0aWwvZGlzcGF0Y2hlclwiKSxBbmltYXRpb25Mb29wPV9kZXJlcV8oXCIuL2FuaW1hdGlvbl9sb29wXCIpLHZhbGlkYXRlU3R5bGU9X2RlcmVxXyhcIi4vdmFsaWRhdGVfc3R5bGVcIiksZ2V0U291cmNlVHlwZT1fZGVyZXFfKFwiLi4vc291cmNlL3NvdXJjZVwiKS5nZXRUeXBlLHNldFNvdXJjZVR5cGU9X2RlcmVxXyhcIi4uL3NvdXJjZS9zb3VyY2VcIikuc2V0VHlwZSxRdWVyeUZlYXR1cmVzPV9kZXJlcV8oXCIuLi9zb3VyY2UvcXVlcnlfZmVhdHVyZXNcIiksU291cmNlQ2FjaGU9X2RlcmVxXyhcIi4uL3NvdXJjZS9zb3VyY2VfY2FjaGVcIiksc3R5bGVTcGVjPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL3JlZmVyZW5jZS9sYXRlc3RcIiksTWFwYm94R0xGdW5jdGlvbj1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9mdW5jdGlvblwiKSxnZXRXb3JrZXJQb29sPV9kZXJlcV8oXCIuLi91dGlsL2dsb2JhbF93b3JrZXJfcG9vbFwiKSxkZXJlZj1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9kZXJlZlwiKSxkaWZmPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL2RpZmZcIikscnRsVGV4dFBsdWdpbj1fZGVyZXFfKFwiLi4vc291cmNlL3J0bF90ZXh0X3BsdWdpblwiKSxzdXBwb3J0ZWREaWZmT3BlcmF0aW9ucz11dGlsLnBpY2soZGlmZi5vcGVyYXRpb25zLFtcImFkZExheWVyXCIsXCJyZW1vdmVMYXllclwiLFwic2V0UGFpbnRQcm9wZXJ0eVwiLFwic2V0TGF5b3V0UHJvcGVydHlcIixcInNldEZpbHRlclwiLFwiYWRkU291cmNlXCIsXCJyZW1vdmVTb3VyY2VcIixcInNldExheWVyWm9vbVJhbmdlXCIsXCJzZXRMaWdodFwiLFwic2V0VHJhbnNpdGlvblwiXSksaWdub3JlZERpZmZPcGVyYXRpb25zPXV0aWwucGljayhkaWZmLm9wZXJhdGlvbnMsW1wic2V0Q2VudGVyXCIsXCJzZXRab29tXCIsXCJzZXRCZWFyaW5nXCIsXCJzZXRQaXRjaFwiXSksU3R5bGU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsYSl7dmFyIGk9dGhpcztlLmNhbGwodGhpcyksYT11dGlsLmV4dGVuZCh7dmFsaWRhdGU6XCJzdHJpbmdcIiE9dHlwZW9mIHR8fCFtYXBib3guaXNNYXBib3hVUkwodCl9LGEpO3ZhciBvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkubWFwP2kubWFwLl90cmFuc2Zvcm1SZXF1ZXN0KGUsdCk6e3VybDplfX07dGhpcy5tYXA9cix0aGlzLmFuaW1hdGlvbkxvb3A9ciYmci5hbmltYXRpb25Mb29wfHxuZXcgQW5pbWF0aW9uTG9vcCx0aGlzLmRpc3BhdGNoZXI9bmV3IERpc3BhdGNoZXIoZ2V0V29ya2VyUG9vbCgpLHRoaXMpLHRoaXMuaW1hZ2VNYW5hZ2VyPW5ldyBJbWFnZU1hbmFnZXIsdGhpcy5nbHlwaE1hbmFnZXI9bmV3IEdseXBoTWFuYWdlcihvLGEubG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5KSx0aGlzLmxpbmVBdGxhcz1uZXcgTGluZUF0bGFzKDI1Niw1MTIpLHRoaXMuX2xheWVycz17fSx0aGlzLl9vcmRlcj1bXSx0aGlzLnNvdXJjZUNhY2hlcz17fSx0aGlzLnpvb21IaXN0b3J5PXt9LHRoaXMuX2xvYWRlZD0hMSx1dGlsLmJpbmRBbGwoW1wiX3JlZG9QbGFjZW1lbnRcIl0sdGhpcyksdGhpcy5fcmVzZXRVcGRhdGVzKCksdGhpcy5zZXRFdmVudGVkUGFyZW50KHIpLHRoaXMuZmlyZShcImRhdGFsb2FkaW5nXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pO3ZhciBzPXRoaXM7dGhpcy5fcnRsVGV4dFBsdWdpbkNhbGxiYWNrPXJ0bFRleHRQbHVnaW4ucmVnaXN0ZXJGb3JQbHVnaW5BdmFpbGFiaWxpdHkoZnVuY3Rpb24oZSl7cy5kaXNwYXRjaGVyLmJyb2FkY2FzdChcImxvYWRSVExUZXh0UGx1Z2luXCIsZS5wbHVnaW5CbG9iVVJMLGUuZXJyb3JDYWxsYmFjayk7Zm9yKHZhciB0IGluIHMuc291cmNlQ2FjaGVzKXMuc291cmNlQ2FjaGVzW3RdLnJlbG9hZCgpfSk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZihlKWkuZmlyZShcImVycm9yXCIse2Vycm9yOmV9KTtlbHNlIGlmKHQpe2lmKGEudmFsaWRhdGUmJnZhbGlkYXRlU3R5bGUuZW1pdEVycm9ycyhpLHZhbGlkYXRlU3R5bGUodCkpKXJldHVybjtpLl9sb2FkZWQ9ITAsaS5zdHlsZXNoZWV0PXQsaS51cGRhdGVDbGFzc2VzKCk7Zm9yKHZhciByIGluIHQuc291cmNlcylpLmFkZFNvdXJjZShyLHQuc291cmNlc1tyXSxhKTtsb2FkU3ByaXRlKHQuc3ByaXRlLG8sZnVuY3Rpb24oZSx0KXtpZihlKWkuZmlyZShcImVycm9yXCIsZSk7ZWxzZSBpZih0KWZvcih2YXIgciBpbiB0KWkuaW1hZ2VNYW5hZ2VyLmFkZEltYWdlKHIsdFtyXSk7aS5pbWFnZU1hbmFnZXIuc2V0TG9hZGVkKCEwKX0pLGkuZ2x5cGhNYW5hZ2VyLnNldFVSTCh0LmdseXBocyksaS5fcmVzb2x2ZSgpLGkuZmlyZShcImRhdGFcIix7ZGF0YVR5cGU6XCJzdHlsZVwifSksaS5maXJlKFwic3R5bGUubG9hZFwiKX19O1wic3RyaW5nXCI9PXR5cGVvZiB0P2FqYXguZ2V0SlNPTihvKG1hcGJveC5ub3JtYWxpemVTdHlsZVVSTCh0KSxhamF4LlJlc291cmNlVHlwZS5TdHlsZSksbik6YnJvd3Nlci5mcmFtZShmdW5jdGlvbigpe3JldHVybiBuKG51bGwsdCl9KSx0aGlzLm9uKFwiZGF0YVwiLGZ1bmN0aW9uKGUpe2lmKFwic291cmNlXCI9PT1lLmRhdGFUeXBlJiZcIm1ldGFkYXRhXCI9PT1lLnNvdXJjZURhdGFUeXBlKXt2YXIgdD1pLnNvdXJjZUNhY2hlc1tlLnNvdXJjZUlkXTtpZih0KXt2YXIgcj10LmdldFNvdXJjZSgpO2lmKHImJnIudmVjdG9yTGF5ZXJJZHMpZm9yKHZhciBhIGluIGkuX2xheWVycyl7dmFyIG89aS5fbGF5ZXJzW2FdO28uc291cmNlPT09ci5pZCYmaS5fdmFsaWRhdGVMYXllcihvKX19fX0pfXJldHVybiBlJiYodC5fX3Byb3RvX189ZSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5fdmFsaWRhdGVMYXllcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNvdXJjZUNhY2hlc1tlLnNvdXJjZV07aWYodCl7dmFyIHI9ZS5zb3VyY2VMYXllcjtpZihyKXt2YXIgYT10LmdldFNvdXJjZSgpOyhcImdlb2pzb25cIj09PWEudHlwZXx8YS52ZWN0b3JMYXllcklkcyYmLTE9PT1hLnZlY3RvckxheWVySWRzLmluZGV4T2YocikpJiZ0aGlzLmZpcmUoXCJlcnJvclwiLHtlcnJvcjpuZXcgRXJyb3IoJ1NvdXJjZSBsYXllciBcIicrcisnXCIgZG9lcyBub3QgZXhpc3Qgb24gc291cmNlIFwiJythLmlkKydcIiBhcyBzcGVjaWZpZWQgYnkgc3R5bGUgbGF5ZXIgXCInK2UuaWQrJ1wiJyl9KX19fSx0LnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLl9sb2FkZWQpcmV0dXJuITE7aWYoT2JqZWN0LmtleXModGhpcy5fdXBkYXRlZFNvdXJjZXMpLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHQgaW4gZS5zb3VyY2VDYWNoZXMpaWYoIWUuc291cmNlQ2FjaGVzW3RdLmxvYWRlZCgpKXJldHVybiExO3JldHVybiEhdGhpcy5pbWFnZU1hbmFnZXIuaXNMb2FkZWQoKX0sdC5wcm90b3R5cGUuX3Jlc29sdmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZGVyZWYodGhpcy5zdHlsZXNoZWV0LmxheWVycyk7dGhpcy5fb3JkZXI9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9KSx0aGlzLl9sYXllcnM9e307Zm9yKHZhciByPTAsYT10O3I8YS5sZW5ndGg7cis9MSl7dmFyIGk9YVtyXTtpPVN0eWxlTGF5ZXIuY3JlYXRlKGkpLGkuc2V0RXZlbnRlZFBhcmVudChlLHtsYXllcjp7aWQ6aS5pZH19KSxlLl9sYXllcnNbaS5pZF09aX10aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwic2V0TGF5ZXJzXCIsdGhpcy5fc2VyaWFsaXplTGF5ZXJzKHRoaXMuX29yZGVyKSksdGhpcy5saWdodD1uZXcgTGlnaHQodGhpcy5zdHlsZXNoZWV0LmxpZ2h0KX0sdC5wcm90b3R5cGUuX3NlcmlhbGl6ZUxheWVycz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGF5ZXJzW2VdLnNlcmlhbGl6ZSgpfSl9LHQucHJvdG90eXBlLl9hcHBseUNsYXNzZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO2lmKHRoaXMuX2xvYWRlZCl7ZT1lfHxbXSx0PXR8fHt0cmFuc2l0aW9uOiEwfTt2YXIgYT10aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbnx8e30saT10aGlzLl91cGRhdGVkQWxsUGFpbnRQcm9wcz90aGlzLl9sYXllcnM6dGhpcy5fdXBkYXRlZFBhaW50UHJvcHM7Zm9yKHZhciBvIGluIGkpe3ZhciBzPXIuX2xheWVyc1tvXSxuPXIuX3VwZGF0ZWRQYWludFByb3BzW29dO2lmKHIuX3VwZGF0ZWRBbGxQYWludFByb3BzfHxuLmFsbClzLnVwZGF0ZVBhaW50VHJhbnNpdGlvbnMoZSx0LGEsci5hbmltYXRpb25Mb29wLHIuem9vbUhpc3RvcnkpO2Vsc2UgZm9yKHZhciBsIGluIG4pci5fbGF5ZXJzW29dLnVwZGF0ZVBhaW50VHJhbnNpdGlvbihsLGUsdCxhLHIuYW5pbWF0aW9uTG9vcCxyLnpvb21IaXN0b3J5KX10aGlzLmxpZ2h0LnVwZGF0ZUxpZ2h0VHJhbnNpdGlvbnModCxhLHRoaXMuYW5pbWF0aW9uTG9vcCl9fSx0LnByb3RvdHlwZS5fcmVjYWxjdWxhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLl9sb2FkZWQpe2Zvcih2YXIgciBpbiB0LnNvdXJjZUNhY2hlcyl0LnNvdXJjZUNhY2hlc1tyXS51c2VkPSExO3RoaXMuX3VwZGF0ZVpvb21IaXN0b3J5KGUpO2Zvcih2YXIgYT0wLGk9dC5fb3JkZXI7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdLHM9dC5fbGF5ZXJzW29dO3MucmVjYWxjdWxhdGUoZSksIXMuaXNIaWRkZW4oZSkmJnMuc291cmNlJiYodC5zb3VyY2VDYWNoZXNbcy5zb3VyY2VdLnVzZWQ9ITApfXRoaXMubGlnaHQucmVjYWxjdWxhdGUoZSk7TWF0aC5mbG9vcih0aGlzLnopIT09TWF0aC5mbG9vcihlKSYmdGhpcy5hbmltYXRpb25Mb29wLnNldCgzMDApLHRoaXMuej1lfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVpvb21IaXN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuem9vbUhpc3Rvcnk7dm9pZCAwPT09dC5sYXN0SW50ZWdlclpvb20mJih0Lmxhc3RJbnRlZ2VyWm9vbT1NYXRoLmZsb29yKGUpLHQubGFzdEludGVnZXJab29tVGltZT0wLHQubGFzdFpvb209ZSksTWF0aC5mbG9vcih0Lmxhc3Rab29tKTxNYXRoLmZsb29yKGUpPyh0Lmxhc3RJbnRlZ2VyWm9vbT1NYXRoLmZsb29yKGUpLHQubGFzdEludGVnZXJab29tVGltZT1EYXRlLm5vdygpKTpNYXRoLmZsb29yKHQubGFzdFpvb20pPk1hdGguZmxvb3IoZSkmJih0Lmxhc3RJbnRlZ2VyWm9vbT1NYXRoLmZsb29yKGUrMSksdC5sYXN0SW50ZWdlclpvb21UaW1lPURhdGUubm93KCkpLHQubGFzdFpvb209ZX0sdC5wcm90b3R5cGUuX2NoZWNrTG9hZGVkPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoXCJTdHlsZSBpcyBub3QgZG9uZSBsb2FkaW5nXCIpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO2lmKHRoaXMuX2NoYW5nZWQpe3ZhciBhPU9iamVjdC5rZXlzKHRoaXMuX3VwZGF0ZWRMYXllcnMpLGk9T2JqZWN0LmtleXModGhpcy5fcmVtb3ZlZExheWVycyk7KGEubGVuZ3RofHxpLmxlbmd0aHx8dGhpcy5fdXBkYXRlZFN5bWJvbE9yZGVyKSYmdGhpcy5fdXBkYXRlV29ya2VyTGF5ZXJzKGEsaSk7Zm9yKHZhciBvIGluIHIuX3VwZGF0ZWRTb3VyY2VzKXt2YXIgcz1yLl91cGRhdGVkU291cmNlc1tvXTtcInJlbG9hZFwiPT09cz9yLl9yZWxvYWRTb3VyY2Uobyk6XCJjbGVhclwiPT09cyYmci5fY2xlYXJTb3VyY2Uobyl9dGhpcy5fYXBwbHlDbGFzc2VzKGUsdCksdGhpcy5fcmVzZXRVcGRhdGVzKCksdGhpcy5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInN0eWxlXCJ9KX19LHQucHJvdG90eXBlLl91cGRhdGVXb3JrZXJMYXllcnM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLGE9dGhpcy5fdXBkYXRlZFN5bWJvbE9yZGVyP3RoaXMuX29yZGVyLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm5cInN5bWJvbFwiPT09ci5fbGF5ZXJzW2VdLnR5cGV9KTpudWxsO3RoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJ1cGRhdGVMYXllcnNcIix7bGF5ZXJzOnRoaXMuX3NlcmlhbGl6ZUxheWVycyhlKSxyZW1vdmVkSWRzOnQsc3ltYm9sT3JkZXI6YX0pfSx0LnByb3RvdHlwZS5fcmVzZXRVcGRhdGVzPWZ1bmN0aW9uKCl7dGhpcy5fY2hhbmdlZD0hMSx0aGlzLl91cGRhdGVkTGF5ZXJzPXt9LHRoaXMuX3JlbW92ZWRMYXllcnM9e30sdGhpcy5fdXBkYXRlZFN5bWJvbE9yZGVyPSExLHRoaXMuX3VwZGF0ZWRTb3VyY2VzPXt9LHRoaXMuX3VwZGF0ZWRQYWludFByb3BzPXt9LHRoaXMuX3VwZGF0ZWRBbGxQYWludFByb3BzPSExfSx0LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMuX2NoZWNrTG9hZGVkKCksdmFsaWRhdGVTdHlsZS5lbWl0RXJyb3JzKHRoaXMsdmFsaWRhdGVTdHlsZShlKSkpcmV0dXJuITE7ZT11dGlsLmNsb25lKGUpLGUubGF5ZXJzPWRlcmVmKGUubGF5ZXJzKTt2YXIgcj1kaWZmKHRoaXMuc2VyaWFsaXplKCksZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiEoZS5jb21tYW5kIGluIGlnbm9yZWREaWZmT3BlcmF0aW9ucyl9KTtpZigwPT09ci5sZW5ndGgpcmV0dXJuITE7dmFyIGE9ci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIShlLmNvbW1hbmQgaW4gc3VwcG9ydGVkRGlmZk9wZXJhdGlvbnMpfSk7aWYoYS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoXCJVbmltcGxlbWVudGVkOiBcIithLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21tYW5kfSkuam9pbihcIiwgXCIpK1wiLlwiKTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe1wic2V0VHJhbnNpdGlvblwiIT09ZS5jb21tYW5kJiZ0W2UuY29tbWFuZF0uYXBwbHkodCxlLmFyZ3MpfSksdGhpcy5zdHlsZXNoZWV0PWUsITB9LHQucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5pbWFnZU1hbmFnZXIuZ2V0SW1hZ2UoZSkpcmV0dXJuIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOm5ldyBFcnJvcihcIkFuIGltYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLlwiKX0pO3RoaXMuaW1hZ2VNYW5hZ2VyLmFkZEltYWdlKGUsdCksdGhpcy5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInN0eWxlXCJ9KX0sdC5wcm90b3R5cGUucmVtb3ZlSW1hZ2U9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuaW1hZ2VNYW5hZ2VyLmdldEltYWdlKGUpKXJldHVybiB0aGlzLmZpcmUoXCJlcnJvclwiLHtlcnJvcjpuZXcgRXJyb3IoXCJObyBpbWFnZSB3aXRoIHRoaXMgbmFtZSBleGlzdHMuXCIpfSk7dGhpcy5pbWFnZU1hbmFnZXIucmVtb3ZlSW1hZ2UoZSksdGhpcy5maXJlKFwiZGF0YVwiLHtkYXRhVHlwZTpcInN0eWxlXCJ9KX0sdC5wcm90b3R5cGUuYWRkU291cmNlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT10aGlzO2lmKHRoaXMuX2NoZWNrTG9hZGVkKCksdm9pZCAwIT09dGhpcy5zb3VyY2VDYWNoZXNbZV0pdGhyb3cgbmV3IEVycm9yKFwiVGhlcmUgaXMgYWxyZWFkeSBhIHNvdXJjZSB3aXRoIHRoaXMgSURcIik7aWYoIXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdHlwZSBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWQsIGJ1dCB0aGUgb25seSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgd2VyZSBnaXZlbjogXCIrT2JqZWN0LmtleXModCkuam9pbihcIiwgXCIpK1wiLlwiKTtpZighKFtcInZlY3RvclwiLFwicmFzdGVyXCIsXCJnZW9qc29uXCIsXCJ2aWRlb1wiLFwiaW1hZ2VcIixcImNhbnZhc1wiXS5pbmRleE9mKHQudHlwZSk+PTAmJnRoaXMuX3ZhbGlkYXRlKHZhbGlkYXRlU3R5bGUuc291cmNlLFwic291cmNlcy5cIitlLHQsbnVsbCxyKSkpe3ZhciBpPXRoaXMuc291cmNlQ2FjaGVzW2VdPW5ldyBTb3VyY2VDYWNoZShlLHQsdGhpcy5kaXNwYXRjaGVyKTtpLnN0eWxlPXRoaXMsaS5zZXRFdmVudGVkUGFyZW50KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm57aXNTb3VyY2VMb2FkZWQ6YS5sb2FkZWQoKSxzb3VyY2U6aS5zZXJpYWxpemUoKSxzb3VyY2VJZDplfX0pLGkub25BZGQodGhpcy5tYXApLHRoaXMuX2NoYW5nZWQ9ITB9fSx0LnByb3RvdHlwZS5yZW1vdmVTb3VyY2U9ZnVuY3Rpb24oZSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDA9PT10aGlzLnNvdXJjZUNhY2hlc1tlXSl0aHJvdyBuZXcgRXJyb3IoXCJUaGVyZSBpcyBubyBzb3VyY2Ugd2l0aCB0aGlzIElEXCIpO3ZhciB0PXRoaXMuc291cmNlQ2FjaGVzW2VdO2RlbGV0ZSB0aGlzLnNvdXJjZUNhY2hlc1tlXSxkZWxldGUgdGhpcy5fdXBkYXRlZFNvdXJjZXNbZV0sdC5maXJlKFwiZGF0YVwiLHtzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCIsZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VJZDplfSksdC5zZXRFdmVudGVkUGFyZW50KG51bGwpLHQuY2xlYXJUaWxlcygpLHQub25SZW1vdmUmJnQub25SZW1vdmUodGhpcy5tYXApLHRoaXMuX2NoYW5nZWQ9ITB9LHQucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zb3VyY2VDYWNoZXNbZV0mJnRoaXMuc291cmNlQ2FjaGVzW2VdLmdldFNvdXJjZSgpfSx0LnByb3RvdHlwZS5hZGRMYXllcj1mdW5jdGlvbihlLHQscil7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgYT1lLmlkO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlLnNvdXJjZSYmKHRoaXMuYWRkU291cmNlKGEsZS5zb3VyY2UpLGU9dXRpbC5jbG9uZShlKSxlPXV0aWwuZXh0ZW5kKGUse3NvdXJjZTphfSkpLCF0aGlzLl92YWxpZGF0ZSh2YWxpZGF0ZVN0eWxlLmxheWVyLFwibGF5ZXJzLlwiK2EsZSx7YXJyYXlJbmRleDotMX0scikpe3ZhciBpPVN0eWxlTGF5ZXIuY3JlYXRlKGUpO3RoaXMuX3ZhbGlkYXRlTGF5ZXIoaSksaS5zZXRFdmVudGVkUGFyZW50KHRoaXMse2xheWVyOntpZDphfX0pO3ZhciBvPXQ/dGhpcy5fb3JkZXIuaW5kZXhPZih0KTp0aGlzLl9vcmRlci5sZW5ndGg7aWYodGhpcy5fb3JkZXIuc3BsaWNlKG8sMCxhKSx0aGlzLl9sYXllcnNbYV09aSx0aGlzLl9yZW1vdmVkTGF5ZXJzW2FdJiZpLnNvdXJjZSl7dmFyIHM9dGhpcy5fcmVtb3ZlZExheWVyc1thXTtkZWxldGUgdGhpcy5fcmVtb3ZlZExheWVyc1thXSxzLnR5cGUhPT1pLnR5cGU/dGhpcy5fdXBkYXRlZFNvdXJjZXNbaS5zb3VyY2VdPVwiY2xlYXJcIjoodGhpcy5fdXBkYXRlZFNvdXJjZXNbaS5zb3VyY2VdPVwicmVsb2FkXCIsdGhpcy5zb3VyY2VDYWNoZXNbaS5zb3VyY2VdLnBhdXNlKCkpfXRoaXMuX3VwZGF0ZUxheWVyKGkpLFwic3ltYm9sXCI9PT1pLnR5cGUmJih0aGlzLl91cGRhdGVkU3ltYm9sT3JkZXI9ITApLHRoaXMudXBkYXRlQ2xhc3NlcyhhKX19LHQucHJvdG90eXBlLm1vdmVMYXllcj1mdW5jdGlvbihlLHQpe3RoaXMuX2NoZWNrTG9hZGVkKCksdGhpcy5fY2hhbmdlZD0hMDt2YXIgcj10aGlzLl9sYXllcnNbZV07aWYoIXIpcmV0dXJuIHZvaWQgdGhpcy5maXJlKFwiZXJyb3JcIix7ZXJyb3I6bmV3IEVycm9yKFwiVGhlIGxheWVyICdcIitlK1wiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBtb3ZlZC5cIil9KTt2YXIgYT10aGlzLl9vcmRlci5pbmRleE9mKGUpO3RoaXMuX29yZGVyLnNwbGljZShhLDEpO3ZhciBpPXQ/dGhpcy5fb3JkZXIuaW5kZXhPZih0KTp0aGlzLl9vcmRlci5sZW5ndGg7dGhpcy5fb3JkZXIuc3BsaWNlKGksMCxlKSxcInN5bWJvbFwiPT09ci50eXBlJiYodGhpcy5fdXBkYXRlZFN5bWJvbE9yZGVyPSEwLHIuc291cmNlJiYhdGhpcy5fdXBkYXRlZFNvdXJjZXNbci5zb3VyY2VdJiYodGhpcy5fdXBkYXRlZFNvdXJjZXNbci5zb3VyY2VdPVwicmVsb2FkXCIsdGhpcy5zb3VyY2VDYWNoZXNbci5zb3VyY2VdLnBhdXNlKCkpKX0sdC5wcm90b3R5cGUucmVtb3ZlTGF5ZXI9ZnVuY3Rpb24oZSl7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgdD10aGlzLl9sYXllcnNbZV07aWYoIXQpcmV0dXJuIHZvaWQgdGhpcy5maXJlKFwiZXJyb3JcIix7ZXJyb3I6bmV3IEVycm9yKFwiVGhlIGxheWVyICdcIitlK1wiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSByZW1vdmVkLlwiKX0pO3Quc2V0RXZlbnRlZFBhcmVudChudWxsKTt2YXIgcj10aGlzLl9vcmRlci5pbmRleE9mKGUpO3RoaXMuX29yZGVyLnNwbGljZShyLDEpLFwic3ltYm9sXCI9PT10LnR5cGUmJih0aGlzLl91cGRhdGVkU3ltYm9sT3JkZXI9ITApLHRoaXMuX2NoYW5nZWQ9ITAsdGhpcy5fcmVtb3ZlZExheWVyc1tlXT10LGRlbGV0ZSB0aGlzLl9sYXllcnNbZV0sZGVsZXRlIHRoaXMuX3VwZGF0ZWRMYXllcnNbZV0sZGVsZXRlIHRoaXMuX3VwZGF0ZWRQYWludFByb3BzW2VdfSx0LnByb3RvdHlwZS5nZXRMYXllcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdfSx0LnByb3RvdHlwZS5zZXRMYXllclpvb21SYW5nZT1mdW5jdGlvbihlLHQscil7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgYT10aGlzLmdldExheWVyKGUpO2lmKCFhKXJldHVybiB2b2lkIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOm5ldyBFcnJvcihcIlRoZSBsYXllciAnXCIrZStcIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgaGF2ZSB6b29tIGV4dGVudC5cIil9KTthLm1pbnpvb209PT10JiZhLm1heHpvb209PT1yfHwobnVsbCE9dCYmKGEubWluem9vbT10KSxudWxsIT1yJiYoYS5tYXh6b29tPXIpLHRoaXMuX3VwZGF0ZUxheWVyKGEpKX0sdC5wcm90b3R5cGUuc2V0RmlsdGVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgcj10aGlzLmdldExheWVyKGUpO2lmKCFyKXJldHVybiB2b2lkIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOm5ldyBFcnJvcihcIlRoZSBsYXllciAnXCIrZStcIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgZmlsdGVyZWQuXCIpfSk7bnVsbCE9PXQmJnZvaWQgMCE9PXQmJnRoaXMuX3ZhbGlkYXRlKHZhbGlkYXRlU3R5bGUuZmlsdGVyLFwibGF5ZXJzLlwiK3IuaWQrXCIuZmlsdGVyXCIsdCl8fHV0aWwuZGVlcEVxdWFsKHIuZmlsdGVyLHQpfHwoci5maWx0ZXI9dXRpbC5jbG9uZSh0KSx0aGlzLl91cGRhdGVMYXllcihyKSl9LHQucHJvdG90eXBlLmdldEZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdXRpbC5jbG9uZSh0aGlzLmdldExheWVyKGUpLmZpbHRlcil9LHQucHJvdG90eXBlLnNldExheW91dFByb3BlcnR5PWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBhPXRoaXMuZ2V0TGF5ZXIoZSk7aWYoIWEpcmV0dXJuIHZvaWQgdGhpcy5maXJlKFwiZXJyb3JcIix7ZXJyb3I6bmV3IEVycm9yKFwiVGhlIGxheWVyICdcIitlK1wiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQuXCIpfSk7dXRpbC5kZWVwRXF1YWwoYS5nZXRMYXlvdXRQcm9wZXJ0eSh0KSxyKXx8KGEuc2V0TGF5b3V0UHJvcGVydHkodCxyKSx0aGlzLl91cGRhdGVMYXllcihhKSl9LHQucHJvdG90eXBlLmdldExheW91dFByb3BlcnR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0TGF5ZXIoZSkuZ2V0TGF5b3V0UHJvcGVydHkodCl9LHQucHJvdG90eXBlLnNldFBhaW50UHJvcGVydHk9ZnVuY3Rpb24oZSx0LHIsYSl7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgaT10aGlzLmdldExheWVyKGUpO2lmKCFpKXJldHVybiB2b2lkIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOm5ldyBFcnJvcihcIlRoZSBsYXllciAnXCIrZStcIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgc3R5bGVkLlwiKX0pO2lmKCF1dGlsLmRlZXBFcXVhbChpLmdldFBhaW50UHJvcGVydHkodCxhKSxyKSl7dmFyIG89aS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQodCk7aS5zZXRQYWludFByb3BlcnR5KHQscixhKTshKHImJk1hcGJveEdMRnVuY3Rpb24uaXNGdW5jdGlvbkRlZmluaXRpb24ocikmJlwiJHpvb21cIiE9PXIucHJvcGVydHkmJnZvaWQgMCE9PXIucHJvcGVydHkpJiZvfHx0aGlzLl91cGRhdGVMYXllcihpKSx0aGlzLnVwZGF0ZUNsYXNzZXMoZSx0KX19LHQucHJvdG90eXBlLmdldFBhaW50UHJvcGVydHk9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmdldExheWVyKGUpLmdldFBhaW50UHJvcGVydHkodCxyKX0sdC5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiB1dGlsLmV4dGVuZCh7ZHVyYXRpb246MzAwLGRlbGF5OjB9LHRoaXMuc3R5bGVzaGVldCYmdGhpcy5zdHlsZXNoZWV0LnRyYW5zaXRpb24pfSx0LnByb3RvdHlwZS51cGRhdGVDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fY2hhbmdlZD0hMCxlKXt2YXIgcj10aGlzLl91cGRhdGVkUGFpbnRQcm9wcztyW2VdfHwocltlXT17fSkscltlXVt0fHxcImFsbFwiXT0hMH1lbHNlIHRoaXMuX3VwZGF0ZWRBbGxQYWludFByb3BzPSEwfSx0LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB1dGlsLmZpbHRlck9iamVjdCh7dmVyc2lvbjp0aGlzLnN0eWxlc2hlZXQudmVyc2lvbixuYW1lOnRoaXMuc3R5bGVzaGVldC5uYW1lLG1ldGFkYXRhOnRoaXMuc3R5bGVzaGVldC5tZXRhZGF0YSxsaWdodDp0aGlzLnN0eWxlc2hlZXQubGlnaHQsY2VudGVyOnRoaXMuc3R5bGVzaGVldC5jZW50ZXIsem9vbTp0aGlzLnN0eWxlc2hlZXQuem9vbSxiZWFyaW5nOnRoaXMuc3R5bGVzaGVldC5iZWFyaW5nLHBpdGNoOnRoaXMuc3R5bGVzaGVldC5waXRjaCxzcHJpdGU6dGhpcy5zdHlsZXNoZWV0LnNwcml0ZSxnbHlwaHM6dGhpcy5zdHlsZXNoZWV0LmdseXBocyx0cmFuc2l0aW9uOnRoaXMuc3R5bGVzaGVldC50cmFuc2l0aW9uLHNvdXJjZXM6dXRpbC5tYXBPYmplY3QodGhpcy5zb3VyY2VDYWNoZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWFsaXplKCl9KSxsYXllcnM6dGhpcy5fb3JkZXIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9sYXllcnNbdF0uc2VyaWFsaXplKCl9KX0sZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9KX0sdC5wcm90b3R5cGUuX3VwZGF0ZUxheWVyPWZ1bmN0aW9uKGUpe3RoaXMuX3VwZGF0ZWRMYXllcnNbZS5pZF09ITAsZS5zb3VyY2UmJiF0aGlzLl91cGRhdGVkU291cmNlc1tlLnNvdXJjZV0mJih0aGlzLl91cGRhdGVkU291cmNlc1tlLnNvdXJjZV09XCJyZWxvYWRcIix0aGlzLnNvdXJjZUNhY2hlc1tlLnNvdXJjZV0ucGF1c2UoKSksdGhpcy5fY2hhbmdlZD0hMH0sdC5wcm90b3R5cGUuX2ZsYXR0ZW5SZW5kZXJlZEZlYXR1cmVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLHI9W10sYT10aGlzLl9vcmRlci5sZW5ndGgtMTthPj0wO2EtLSlmb3IodmFyIGk9dC5fb3JkZXJbYV0sbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEpe3ZhciBuPXNbb10sbD1uW2ldO2lmKGwpZm9yKHZhciB1PTAsZD1sO3U8ZC5sZW5ndGg7dSs9MSl7dmFyIGg9ZFt1XTtyLnB1c2goaCl9fXJldHVybiByfSx0LnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGk9dGhpczt0JiZ0LmZpbHRlciYmdGhpcy5fdmFsaWRhdGUodmFsaWRhdGVTdHlsZS5maWx0ZXIsXCJxdWVyeVJlbmRlcmVkRmVhdHVyZXMuZmlsdGVyXCIsdC5maWx0ZXIpO3ZhciBvPXt9O2lmKHQmJnQubGF5ZXJzKXtpZighQXJyYXkuaXNBcnJheSh0LmxheWVycykpcmV0dXJuIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOlwicGFyYW1ldGVycy5sYXllcnMgbXVzdCBiZSBhbiBBcnJheS5cIn0pLFtdO2Zvcih2YXIgcz0wLG49dC5sYXllcnM7czxuLmxlbmd0aDtzKz0xKXt2YXIgbD1uW3NdLHU9aS5fbGF5ZXJzW2xdO2lmKCF1KXJldHVybiBpLmZpcmUoXCJlcnJvclwiLHtlcnJvcjpcIlRoZSBsYXllciAnXCIrbCtcIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgcXVlcmllZCBmb3IgZmVhdHVyZXMuXCJ9KSxbXTtvW3Uuc291cmNlXT0hMH19dmFyIGQ9W107Zm9yKHZhciBoIGluIGkuc291cmNlQ2FjaGVzKWlmKCF0LmxheWVyc3x8b1toXSl7dmFyIGM9UXVlcnlGZWF0dXJlcy5yZW5kZXJlZChpLnNvdXJjZUNhY2hlc1toXSxpLl9sYXllcnMsZSx0LHIsYSk7ZC5wdXNoKGMpfXJldHVybiB0aGlzLl9mbGF0dGVuUmVuZGVyZWRGZWF0dXJlcyhkKX0sdC5wcm90b3R5cGUucXVlcnlTb3VyY2VGZWF0dXJlcz1mdW5jdGlvbihlLHQpe3QmJnQuZmlsdGVyJiZ0aGlzLl92YWxpZGF0ZSh2YWxpZGF0ZVN0eWxlLmZpbHRlcixcInF1ZXJ5U291cmNlRmVhdHVyZXMuZmlsdGVyXCIsdC5maWx0ZXIpO3ZhciByPXRoaXMuc291cmNlQ2FjaGVzW2VdO3JldHVybiByP1F1ZXJ5RmVhdHVyZXMuc291cmNlKHIsdCk6W119LHQucHJvdG90eXBlLmFkZFNvdXJjZVR5cGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBnZXRTb3VyY2VUeXBlKGUpP3IobmV3IEVycm9yKCdBIHNvdXJjZSB0eXBlIGNhbGxlZCBcIicrZSsnXCIgYWxyZWFkeSBleGlzdHMuJykpOihzZXRTb3VyY2VUeXBlKGUsdCksdC53b3JrZXJTb3VyY2VVUkw/dm9pZCB0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwibG9hZFdvcmtlclNvdXJjZVwiLHtuYW1lOmUsdXJsOnQud29ya2VyU291cmNlVVJMfSxyKTpyKG51bGwsbnVsbCkpfSx0LnByb3RvdHlwZS5nZXRMaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpZ2h0LmdldExpZ2h0KCl9LHQucHJvdG90eXBlLnNldExpZ2h0PWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgcj10aGlzLmxpZ2h0LmdldExpZ2h0KCksYT0hMTtmb3IodmFyIGkgaW4gZSlpZighdXRpbC5kZWVwRXF1YWwoZVtpXSxyW2ldKSl7YT0hMDticmVha31pZihhKXt2YXIgbz10aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbnx8e307dGhpcy5saWdodC5zZXRMaWdodChlKSx0aGlzLmxpZ2h0LnVwZGF0ZUxpZ2h0VHJhbnNpdGlvbnModHx8e3RyYW5zaXRpb246ITB9LG8sdGhpcy5hbmltYXRpb25Mb29wKX19LHQucHJvdG90eXBlLl92YWxpZGF0ZT1mdW5jdGlvbihlLHQscixhLGkpe3JldHVybighaXx8ITEhPT1pLnZhbGlkYXRlKSYmdmFsaWRhdGVTdHlsZS5lbWl0RXJyb3JzKHRoaXMsZS5jYWxsKHZhbGlkYXRlU3R5bGUsdXRpbC5leHRlbmQoe2tleTp0LHN0eWxlOnRoaXMuc2VyaWFsaXplKCksdmFsdWU6cixzdHlsZVNwZWM6c3R5bGVTcGVjfSxhKSkpfSx0LnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztydGxUZXh0UGx1Z2luLmV2ZW50ZWQub2ZmKFwicGx1Z2luQXZhaWxhYmxlXCIsdGhpcy5fcnRsVGV4dFBsdWdpbkNhbGxiYWNrKTtmb3IodmFyIHQgaW4gZS5zb3VyY2VDYWNoZXMpZS5zb3VyY2VDYWNoZXNbdF0uY2xlYXJUaWxlcygpO3RoaXMuZGlzcGF0Y2hlci5yZW1vdmUoKX0sdC5wcm90b3R5cGUuX2NsZWFyU291cmNlPWZ1bmN0aW9uKGUpe3RoaXMuc291cmNlQ2FjaGVzW2VdLmNsZWFyVGlsZXMoKX0sdC5wcm90b3R5cGUuX3JlbG9hZFNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLnNvdXJjZUNhY2hlc1tlXS5yZXN1bWUoKSx0aGlzLnNvdXJjZUNhY2hlc1tlXS5yZWxvYWQoKX0sdC5wcm90b3R5cGUuX3VwZGF0ZVNvdXJjZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztmb3IodmFyIHIgaW4gdC5zb3VyY2VDYWNoZXMpdC5zb3VyY2VDYWNoZXNbcl0udXBkYXRlKGUpfSx0LnByb3RvdHlwZS5fcmVkb1BsYWNlbWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7Zm9yKHZhciB0IGluIGUuc291cmNlQ2FjaGVzKWUuc291cmNlQ2FjaGVzW3RdLnJlZG9QbGFjZW1lbnQoKX0sdC5wcm90b3R5cGUuZ2V0SW1hZ2VzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLmltYWdlTWFuYWdlci5nZXRJbWFnZXModC5pY29ucyxyKX0sdC5wcm90b3R5cGUuZ2V0R2x5cGhzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLmdseXBoTWFuYWdlci5nZXRHbHlwaHModC5zdGFja3Mscil9LHR9KEV2ZW50ZWQpO21vZHVsZS5leHBvcnRzPVN0eWxlO1xufSx7XCIuLi9yZW5kZXIvZ2x5cGhfbWFuYWdlclwiOjc1LFwiLi4vcmVuZGVyL2ltYWdlX21hbmFnZXJcIjo3NyxcIi4uL3JlbmRlci9saW5lX2F0bGFzXCI6NzgsXCIuLi9zb3VyY2UvcXVlcnlfZmVhdHVyZXNcIjo5NCxcIi4uL3NvdXJjZS9ydGxfdGV4dF9wbHVnaW5cIjo5NixcIi4uL3NvdXJjZS9zb3VyY2VcIjo5NyxcIi4uL3NvdXJjZS9zb3VyY2VfY2FjaGVcIjo5OCxcIi4uL3N0eWxlLXNwZWMvZGVyZWZcIjoxMDcsXCIuLi9zdHlsZS1zcGVjL2RpZmZcIjoxMDgsXCIuLi9zdHlsZS1zcGVjL2Z1bmN0aW9uXCI6MTEyLFwiLi4vc3R5bGUtc3BlYy9yZWZlcmVuY2UvbGF0ZXN0XCI6MTIzLFwiLi4vdXRpbC9hamF4XCI6MjAxLFwiLi4vdXRpbC9icm93c2VyXCI6MjAyLFwiLi4vdXRpbC9kaXNwYXRjaGVyXCI6MjA4LFwiLi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiLi4vdXRpbC9nbG9iYWxfd29ya2VyX3Bvb2xcIjoyMTIsXCIuLi91dGlsL21hcGJveFwiOjIxNyxcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIi4vYW5pbWF0aW9uX2xvb3BcIjoxNTAsXCIuL2xpZ2h0XCI6MTUxLFwiLi9sb2FkX3Nwcml0ZVwiOjE1MyxcIi4vc3R5bGVfbGF5ZXJcIjoxNTgsXCIuL3ZhbGlkYXRlX3N0eWxlXCI6MTY2fV0sMTU3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBjcmVhdGVGdW5jdGlvbj1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9mdW5jdGlvblwiKSx1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksU3R5bGVEZWNsYXJhdGlvbj1mdW5jdGlvbih0LGkpe3ZhciBvPXRoaXM7aWYodGhpcy52YWx1ZT11dGlsLmNsb25lKGkpLHRoaXMuaXNGdW5jdGlvbj1jcmVhdGVGdW5jdGlvbi5pc0Z1bmN0aW9uRGVmaW5pdGlvbihpKSx0aGlzLmpzb249SlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSksdGhpcy5taW5pbXVtPXQubWluaW11bSx0aGlzLmZ1bmN0aW9uPWNyZWF0ZUZ1bmN0aW9uKHRoaXMudmFsdWUsdCksdGhpcy5pc0ZlYXR1cmVDb25zdGFudD10aGlzLmZ1bmN0aW9uLmlzRmVhdHVyZUNvbnN0YW50LHRoaXMuaXNab29tQ29uc3RhbnQ9dGhpcy5mdW5jdGlvbi5pc1pvb21Db25zdGFudCx0aGlzLmlzRmVhdHVyZUNvbnN0YW50fHx0aGlzLmlzWm9vbUNvbnN0YW50KXtpZighdGhpcy5pc1pvb21Db25zdGFudCl7dGhpcy5zdG9wWm9vbUxldmVscz1bXTtmb3IodmFyIG49MCxzPW8udmFsdWUuc3RvcHM7bjxzLmxlbmd0aDtuKz0xKXt2YXIgZT1zW25dO28uc3RvcFpvb21MZXZlbHMuaW5kZXhPZihlWzBdKTwwJiZvLnN0b3Bab29tTGV2ZWxzLnB1c2goZVswXSl9fX1lbHNle3RoaXMuc3RvcFpvb21MZXZlbHM9W107Zm9yKHZhciBhPVtdLHU9MCxsPW8udmFsdWUuc3RvcHM7dTxsLmxlbmd0aDt1Kz0xKXt2YXIgcj1sW3VdLGM9clswXS56b29tO28uc3RvcFpvb21MZXZlbHMuaW5kZXhPZihjKTwwJiYoby5zdG9wWm9vbUxldmVscy5wdXNoKGMpLGEucHVzaChbYyxhLmxlbmd0aF0pKX10aGlzLl9mdW5jdGlvbkludGVycG9sYXRpb25UPWNyZWF0ZUZ1bmN0aW9uKHt0eXBlOlwiZXhwb25lbnRpYWxcIixzdG9wczphLGJhc2U6aS5iYXNlfSx7dHlwZTpcIm51bWJlclwifSl9fTtTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS5jYWxjdWxhdGU9ZnVuY3Rpb24odCxpKXt2YXIgbz10aGlzLmZ1bmN0aW9uKHQmJnQuem9vbSxpfHx7fSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMubWluaW11bSYmbzx0aGlzLm1pbmltdW0/dGhpcy5taW5pbXVtOm99LFN0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLmNhbGN1bGF0ZUludGVycG9sYXRpb25UPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzRmVhdHVyZUNvbnN0YW50fHx0aGlzLmlzWm9vbUNvbnN0YW50PzA6dGhpcy5fZnVuY3Rpb25JbnRlcnBvbGF0aW9uVCh0JiZ0Lnpvb20se30pfSxtb2R1bGUuZXhwb3J0cz1TdHlsZURlY2xhcmF0aW9uO1xufSx7XCIuLi9zdHlsZS1zcGVjL2Z1bmN0aW9uXCI6MTEyLFwiLi4vdXRpbC91dGlsXCI6MjIzfV0sMTU4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGdldERlY2xhcmF0aW9uVmFsdWUodCl7cmV0dXJuIHQudmFsdWV9dmFyIHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxTdHlsZVRyYW5zaXRpb249X2RlcmVxXyhcIi4vc3R5bGVfdHJhbnNpdGlvblwiKSxTdHlsZURlY2xhcmF0aW9uPV9kZXJlcV8oXCIuL3N0eWxlX2RlY2xhcmF0aW9uXCIpLHN0eWxlU3BlYz1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9yZWZlcmVuY2UvbGF0ZXN0XCIpLHZhbGlkYXRlU3R5bGU9X2RlcmVxXyhcIi4vdmFsaWRhdGVfc3R5bGVcIikscGFyc2VDb2xvcj1fZGVyZXFfKFwiLi8uLi9zdHlsZS1zcGVjL3V0aWwvcGFyc2VfY29sb3JcIiksRXZlbnRlZD1fZGVyZXFfKFwiLi4vdXRpbC9ldmVudGVkXCIpLFRSQU5TSVRJT05fU1VGRklYPVwiLXRyYW5zaXRpb25cIixTdHlsZUxheWVyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoaSl7dmFyIGU9dGhpczt0LmNhbGwodGhpcyksdGhpcy5pZD1pLmlkLHRoaXMubWV0YWRhdGE9aS5tZXRhZGF0YSx0aGlzLnR5cGU9aS50eXBlLHRoaXMubWluem9vbT1pLm1pbnpvb20sdGhpcy5tYXh6b29tPWkubWF4em9vbSxcImJhY2tncm91bmRcIiE9PWkudHlwZSYmKHRoaXMuc291cmNlPWkuc291cmNlLHRoaXMuc291cmNlTGF5ZXI9aVtcInNvdXJjZS1sYXllclwiXSx0aGlzLmZpbHRlcj1pLmZpbHRlciksdGhpcy5wYWludD17fSx0aGlzLmxheW91dD17fSx0aGlzLl9wYWludFNwZWNpZmljYXRpb25zPXN0eWxlU3BlY1tcInBhaW50X1wiK3RoaXMudHlwZV0sdGhpcy5fbGF5b3V0U3BlY2lmaWNhdGlvbnM9c3R5bGVTcGVjW1wibGF5b3V0X1wiK3RoaXMudHlwZV0sdGhpcy5fcGFpbnRUcmFuc2l0aW9ucz17fSx0aGlzLl9wYWludFRyYW5zaXRpb25PcHRpb25zPXt9LHRoaXMuX3BhaW50RGVjbGFyYXRpb25zPXt9LHRoaXMuX2xheW91dERlY2xhcmF0aW9ucz17fSx0aGlzLl9sYXlvdXRGdW5jdGlvbnM9e307dmFyIGEsbyxuPXt2YWxpZGF0ZTohMX07Zm9yKHZhciByIGluIGkpe3ZhciBzPXIubWF0Y2goL15wYWludCg/OlxcLiguKikpPyQvKTtpZihzKXt2YXIgbD1zWzFdfHxcIlwiO2ZvcihhIGluIGlbcl0pZS5zZXRQYWludFByb3BlcnR5KGEsaVtyXVthXSxsLG4pfX1mb3IobyBpbiBpLmxheW91dCllLnNldExheW91dFByb3BlcnR5KG8saS5sYXlvdXRbb10sbik7Zm9yKGEgaW4gZS5fcGFpbnRTcGVjaWZpY2F0aW9ucyllLnBhaW50W2FdPWUuZ2V0UGFpbnRWYWx1ZShhKTtmb3IobyBpbiBlLl9sYXlvdXRTcGVjaWZpY2F0aW9ucyllLl91cGRhdGVMYXlvdXRWYWx1ZShvKX1yZXR1cm4gdCYmKGkuX19wcm90b19fPXQpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWksaS5wcm90b3R5cGUuc2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24odCxpLGUpe2lmKG51bGw9PWkpZGVsZXRlIHRoaXMuX2xheW91dERlY2xhcmF0aW9uc1t0XTtlbHNle3ZhciBhPVwibGF5ZXJzLlwiK3RoaXMuaWQrXCIubGF5b3V0LlwiK3Q7aWYodGhpcy5fdmFsaWRhdGUodmFsaWRhdGVTdHlsZS5sYXlvdXRQcm9wZXJ0eSxhLHQsaSxlKSlyZXR1cm47dGhpcy5fbGF5b3V0RGVjbGFyYXRpb25zW3RdPW5ldyBTdHlsZURlY2xhcmF0aW9uKHRoaXMuX2xheW91dFNwZWNpZmljYXRpb25zW3RdLGkpfXRoaXMuX3VwZGF0ZUxheW91dFZhbHVlKHQpfSxpLnByb3RvdHlwZS5nZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF5b3V0RGVjbGFyYXRpb25zW3RdJiZ0aGlzLl9sYXlvdXREZWNsYXJhdGlvbnNbdF0udmFsdWV9LGkucHJvdG90eXBlLmdldExheW91dFZhbHVlPWZ1bmN0aW9uKHQsaSxlKXt2YXIgYT10aGlzLl9sYXlvdXRTcGVjaWZpY2F0aW9uc1t0XSxvPXRoaXMuX2xheW91dERlY2xhcmF0aW9uc1t0XTtyZXR1cm4gbz9vLmNhbGN1bGF0ZShpLGUpOmEuZGVmYXVsdH0saS5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGksZSxhKXt2YXIgbz1cImxheWVycy5cIit0aGlzLmlkKyhlPydbXCJwYWludC4nK2UrJ1wiXS4nOlwiLnBhaW50LlwiKSt0O2lmKHV0aWwuZW5kc1dpdGgodCxUUkFOU0lUSU9OX1NVRkZJWCkpaWYodGhpcy5fcGFpbnRUcmFuc2l0aW9uT3B0aW9uc1tlfHxcIlwiXXx8KHRoaXMuX3BhaW50VHJhbnNpdGlvbk9wdGlvbnNbZXx8XCJcIl09e30pLG51bGw9PT1pfHx2b2lkIDA9PT1pKWRlbGV0ZSB0aGlzLl9wYWludFRyYW5zaXRpb25PcHRpb25zW2V8fFwiXCJdW3RdO2Vsc2V7aWYodGhpcy5fdmFsaWRhdGUodmFsaWRhdGVTdHlsZS5wYWludFByb3BlcnR5LG8sdCxpLGEpKXJldHVybjt0aGlzLl9wYWludFRyYW5zaXRpb25PcHRpb25zW2V8fFwiXCJdW3RdPWl9ZWxzZSBpZih0aGlzLl9wYWludERlY2xhcmF0aW9uc1tlfHxcIlwiXXx8KHRoaXMuX3BhaW50RGVjbGFyYXRpb25zW2V8fFwiXCJdPXt9KSxudWxsPT09aXx8dm9pZCAwPT09aSlkZWxldGUgdGhpcy5fcGFpbnREZWNsYXJhdGlvbnNbZXx8XCJcIl1bdF07ZWxzZXtpZih0aGlzLl92YWxpZGF0ZSh2YWxpZGF0ZVN0eWxlLnBhaW50UHJvcGVydHksbyx0LGksYSkpcmV0dXJuO3RoaXMuX3BhaW50RGVjbGFyYXRpb25zW2V8fFwiXCJdW3RdPW5ldyBTdHlsZURlY2xhcmF0aW9uKHRoaXMuX3BhaW50U3BlY2lmaWNhdGlvbnNbdF0saSl9fSxpLnByb3RvdHlwZS5nZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9aXx8XCJcIix1dGlsLmVuZHNXaXRoKHQsVFJBTlNJVElPTl9TVUZGSVgpP3RoaXMuX3BhaW50VHJhbnNpdGlvbk9wdGlvbnNbaV0mJnRoaXMuX3BhaW50VHJhbnNpdGlvbk9wdGlvbnNbaV1bdF06dGhpcy5fcGFpbnREZWNsYXJhdGlvbnNbaV0mJnRoaXMuX3BhaW50RGVjbGFyYXRpb25zW2ldW3RdJiZ0aGlzLl9wYWludERlY2xhcmF0aW9uc1tpXVt0XS52YWx1ZX0saS5wcm90b3R5cGUuZ2V0UGFpbnRWYWx1ZT1mdW5jdGlvbih0LGksZSl7dmFyIGE9dGhpcy5fcGFpbnRTcGVjaWZpY2F0aW9uc1t0XSxvPXRoaXMuX3BhaW50VHJhbnNpdGlvbnNbdF07cmV0dXJuIG8/by5jYWxjdWxhdGUoaSxlKTpcImNvbG9yXCI9PT1hLnR5cGUmJmEuZGVmYXVsdD9wYXJzZUNvbG9yKGEuZGVmYXVsdCk6YS5kZWZhdWx0fSxpLnByb3RvdHlwZS5nZXRQYWludFZhbHVlU3RvcFpvb21MZXZlbHM9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fcGFpbnRUcmFuc2l0aW9uc1t0XTtyZXR1cm4gaT9pLmRlY2xhcmF0aW9uLnN0b3Bab29tTGV2ZWxzOltdfSxpLnByb3RvdHlwZS5nZXRMYXlvdXRWYWx1ZVN0b3Bab29tTGV2ZWxzPWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX2xheW91dERlY2xhcmF0aW9uc1t0XTtyZXR1cm4gaT9pLnN0b3Bab29tTGV2ZWxzOltdfSxpLnByb3RvdHlwZS5nZXRQYWludEludGVycG9sYXRpb25UPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuX3BhaW50VHJhbnNpdGlvbnNbdF0uZGVjbGFyYXRpb24uY2FsY3VsYXRlSW50ZXJwb2xhdGlvblQoaSl9LGkucHJvdG90eXBlLmdldExheW91dEludGVycG9sYXRpb25UPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuX2xheW91dERlY2xhcmF0aW9uc1t0XS5jYWxjdWxhdGVJbnRlcnBvbGF0aW9uVChpKX0saS5wcm90b3R5cGUuaXNQYWludFZhbHVlRmVhdHVyZUNvbnN0YW50PWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX3BhaW50VHJhbnNpdGlvbnNbdF07cmV0dXJuIWl8fGkuZGVjbGFyYXRpb24uaXNGZWF0dXJlQ29uc3RhbnR9LGkucHJvdG90eXBlLmlzTGF5b3V0VmFsdWVGZWF0dXJlQ29uc3RhbnQ9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbGF5b3V0RGVjbGFyYXRpb25zW3RdO3JldHVybiFpfHxpLmlzRmVhdHVyZUNvbnN0YW50fSxpLnByb3RvdHlwZS5pc1BhaW50VmFsdWVab29tQ29uc3RhbnQ9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fcGFpbnRUcmFuc2l0aW9uc1t0XTtyZXR1cm4haXx8aS5kZWNsYXJhdGlvbi5pc1pvb21Db25zdGFudH0saS5wcm90b3R5cGUuaXNMYXlvdXRWYWx1ZVpvb21Db25zdGFudD1mdW5jdGlvbih0KXt2YXIgaT10aGlzLl9sYXlvdXREZWNsYXJhdGlvbnNbdF07cmV0dXJuIWl8fGkuaXNab29tQ29uc3RhbnR9LGkucHJvdG90eXBlLmlzSGlkZGVuPWZ1bmN0aW9uKHQpe3JldHVybiEhKHRoaXMubWluem9vbSYmdDx0aGlzLm1pbnpvb20pfHwoISEodGhpcy5tYXh6b29tJiZ0Pj10aGlzLm1heHpvb20pfHxcIm5vbmVcIj09PXRoaXMubGF5b3V0LnZpc2liaWxpdHkpfSxpLnByb3RvdHlwZS51cGRhdGVQYWludFRyYW5zaXRpb25zPWZ1bmN0aW9uKHQsaSxlLGEsbyl7Zm9yKHZhciBuPXRoaXMscj11dGlsLmV4dGVuZCh7fSx0aGlzLl9wYWludERlY2xhcmF0aW9uc1tcIlwiXSkscz0wO3M8dC5sZW5ndGg7cysrKXV0aWwuZXh0ZW5kKHIsbi5fcGFpbnREZWNsYXJhdGlvbnNbdFtzXV0pO3ZhciBsO2ZvcihsIGluIHIpbi5fYXBwbHlQYWludERlY2xhcmF0aW9uKGwscltsXSxpLGUsYSxvKTtmb3IobCBpbiBuLl9wYWludFRyYW5zaXRpb25zKWwgaW4gcnx8bi5fYXBwbHlQYWludERlY2xhcmF0aW9uKGwsbnVsbCxpLGUsYSxvKX0saS5wcm90b3R5cGUudXBkYXRlUGFpbnRUcmFuc2l0aW9uPWZ1bmN0aW9uKHQsaSxlLGEsbyxuKXtmb3IodmFyIHI9dGhpcyxzPXRoaXMuX3BhaW50RGVjbGFyYXRpb25zW1wiXCJdW3RdLGw9MDtsPGkubGVuZ3RoO2wrKyl7dmFyIHU9ci5fcGFpbnREZWNsYXJhdGlvbnNbaVtsXV07dSYmdVt0XSYmKHM9dVt0XSl9dGhpcy5fYXBwbHlQYWludERlY2xhcmF0aW9uKHQscyxlLGEsbyxuKX0saS5wcm90b3R5cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztmb3IodmFyIGUgaW4gaS5fcGFpbnRUcmFuc2l0aW9ucylpLnBhaW50W2VdPWkuZ2V0UGFpbnRWYWx1ZShlLHt6b29tOnR9KTtmb3IodmFyIGEgaW4gaS5fbGF5b3V0RnVuY3Rpb25zKWkubGF5b3V0W2FdPWkuZ2V0TGF5b3V0VmFsdWUoYSx7em9vbTp0fSl9LGkucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsaT17aWQ6dGhpcy5pZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5zb3VyY2UsXCJzb3VyY2UtbGF5ZXJcIjp0aGlzLnNvdXJjZUxheWVyLG1ldGFkYXRhOnRoaXMubWV0YWRhdGEsbWluem9vbTp0aGlzLm1pbnpvb20sbWF4em9vbTp0aGlzLm1heHpvb20sZmlsdGVyOnRoaXMuZmlsdGVyLGxheW91dDp1dGlsLm1hcE9iamVjdCh0aGlzLl9sYXlvdXREZWNsYXJhdGlvbnMsZ2V0RGVjbGFyYXRpb25WYWx1ZSl9O2Zvcih2YXIgZSBpbiB0Ll9wYWludERlY2xhcmF0aW9ucyl7aVtcIlwiPT09ZT9cInBhaW50XCI6XCJwYWludC5cIitlXT11dGlsLm1hcE9iamVjdCh0Ll9wYWludERlY2xhcmF0aW9uc1tlXSxnZXREZWNsYXJhdGlvblZhbHVlKX1yZXR1cm4gdXRpbC5maWx0ZXJPYmplY3QoaSxmdW5jdGlvbih0LGkpe3JldHVybiB2b2lkIDAhPT10JiYhKFwibGF5b3V0XCI9PT1pJiYhT2JqZWN0LmtleXModCkubGVuZ3RoKX0pfSxpLnByb3RvdHlwZS5fYXBwbHlQYWludERlY2xhcmF0aW9uPWZ1bmN0aW9uKHQsaSxlLGEsbyxuKXt2YXIgcj1lLnRyYW5zaXRpb24/dGhpcy5fcGFpbnRUcmFuc2l0aW9uc1t0XTp2b2lkIDAscz10aGlzLl9wYWludFNwZWNpZmljYXRpb25zW3RdO2lmKG51bGwhPT1pJiZ2b2lkIDAhPT1pfHwoaT1uZXcgU3R5bGVEZWNsYXJhdGlvbihzLHMuZGVmYXVsdCkpLCFyfHxyLmRlY2xhcmF0aW9uLmpzb24hPT1pLmpzb24pe3ZhciBsPXV0aWwuZXh0ZW5kKHtkdXJhdGlvbjozMDAsZGVsYXk6MH0sYSx0aGlzLmdldFBhaW50UHJvcGVydHkodCtUUkFOU0lUSU9OX1NVRkZJWCkpLHU9dGhpcy5fcGFpbnRUcmFuc2l0aW9uc1t0XT1uZXcgU3R5bGVUcmFuc2l0aW9uKHMsaSxyLGwsbik7dS5pbnN0YW50KCl8fCh1Lmxvb3BJRD1vLnNldCh1LmVuZFRpbWUtRGF0ZS5ub3coKSkpLHImJm8uY2FuY2VsKHIubG9vcElEKX19LGkucHJvdG90eXBlLl91cGRhdGVMYXlvdXRWYWx1ZT1mdW5jdGlvbih0KXt2YXIgaT10aGlzLl9sYXlvdXREZWNsYXJhdGlvbnNbdF07aSYmaS5pc0Z1bmN0aW9uP3RoaXMuX2xheW91dEZ1bmN0aW9uc1t0XT0hMDooZGVsZXRlIHRoaXMuX2xheW91dEZ1bmN0aW9uc1t0XSx0aGlzLmxheW91dFt0XT10aGlzLmdldExheW91dFZhbHVlKHQpKX0saS5wcm90b3R5cGUuX3ZhbGlkYXRlPWZ1bmN0aW9uKHQsaSxlLGEsbyl7cmV0dXJuKCFvfHwhMSE9PW8udmFsaWRhdGUpJiZ2YWxpZGF0ZVN0eWxlLmVtaXRFcnJvcnModGhpcyx0LmNhbGwodmFsaWRhdGVTdHlsZSx7a2V5OmksbGF5ZXJUeXBlOnRoaXMudHlwZSxvYmplY3RLZXk6ZSx2YWx1ZTphLHN0eWxlU3BlYzpzdHlsZVNwZWMsc3R5bGU6e2dseXBoczohMCxzcHJpdGU6ITB9fSkpfSxpLnByb3RvdHlwZS5oYXMzRFBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4hMX0saX0oRXZlbnRlZCk7bW9kdWxlLmV4cG9ydHM9U3R5bGVMYXllcjt2YXIgc3ViY2xhc3Nlcz17Y2lyY2xlOl9kZXJlcV8oXCIuL3N0eWxlX2xheWVyL2NpcmNsZV9zdHlsZV9sYXllclwiKSxmaWxsOl9kZXJlcV8oXCIuL3N0eWxlX2xheWVyL2ZpbGxfc3R5bGVfbGF5ZXJcIiksXCJmaWxsLWV4dHJ1c2lvblwiOl9kZXJlcV8oXCIuL3N0eWxlX2xheWVyL2ZpbGxfZXh0cnVzaW9uX3N0eWxlX2xheWVyXCIpLGxpbmU6X2RlcmVxXyhcIi4vc3R5bGVfbGF5ZXIvbGluZV9zdHlsZV9sYXllclwiKSxzeW1ib2w6X2RlcmVxXyhcIi4vc3R5bGVfbGF5ZXIvc3ltYm9sX3N0eWxlX2xheWVyXCIpLGJhY2tncm91bmQ6U3R5bGVMYXllcixyYXN0ZXI6U3R5bGVMYXllcn07U3R5bGVMYXllci5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzdWJjbGFzc2VzW3QudHlwZV0odCl9O1xufSx7XCIuLi9zdHlsZS1zcGVjL3JlZmVyZW5jZS9sYXRlc3RcIjoxMjMsXCIuLi91dGlsL2V2ZW50ZWRcIjoyMTAsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuLy4uL3N0eWxlLXNwZWMvdXRpbC9wYXJzZV9jb2xvclwiOjEyOCxcIi4vc3R5bGVfZGVjbGFyYXRpb25cIjoxNTcsXCIuL3N0eWxlX2xheWVyL2NpcmNsZV9zdHlsZV9sYXllclwiOjE1OSxcIi4vc3R5bGVfbGF5ZXIvZmlsbF9leHRydXNpb25fc3R5bGVfbGF5ZXJcIjoxNjAsXCIuL3N0eWxlX2xheWVyL2ZpbGxfc3R5bGVfbGF5ZXJcIjoxNjEsXCIuL3N0eWxlX2xheWVyL2xpbmVfc3R5bGVfbGF5ZXJcIjoxNjIsXCIuL3N0eWxlX2xheWVyL3N5bWJvbF9zdHlsZV9sYXllclwiOjE2MyxcIi4vc3R5bGVfdHJhbnNpdGlvblwiOjE2NSxcIi4vdmFsaWRhdGVfc3R5bGVcIjoxNjZ9XSwxNTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFN0eWxlTGF5ZXI9X2RlcmVxXyhcIi4uL3N0eWxlX2xheWVyXCIpLENpcmNsZUJ1Y2tldD1fZGVyZXFfKFwiLi4vLi4vZGF0YS9idWNrZXQvY2lyY2xlX2J1Y2tldFwiKSxyZWY9X2RlcmVxXyhcIi4uLy4uL3V0aWwvaW50ZXJzZWN0aW9uX3Rlc3RzXCIpLG11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpUG9pbnQ9cmVmLm11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpUG9pbnQscmVmJDE9X2RlcmVxXyhcIi4uL3F1ZXJ5X3V0aWxzXCIpLGdldE1heGltdW1QYWludFZhbHVlPXJlZiQxLmdldE1heGltdW1QYWludFZhbHVlLHRyYW5zbGF0ZURpc3RhbmNlPXJlZiQxLnRyYW5zbGF0ZURpc3RhbmNlLHRyYW5zbGF0ZT1yZWYkMS50cmFuc2xhdGUsQ2lyY2xlU3R5bGVMYXllcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGUmJih0Ll9fcHJvdG9fXz1lKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IENpcmNsZUJ1Y2tldChlKX0sdC5wcm90b3R5cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGdldE1heGltdW1QYWludFZhbHVlKFwiY2lyY2xlLXJhZGl1c1wiLHRoaXMsZSkrdHJhbnNsYXRlRGlzdGFuY2UodGhpcy5wYWludFtcImNpcmNsZS10cmFuc2xhdGVcIl0pfSx0LnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKGUsdCxyLGksYSxuKXt2YXIgdT10cmFuc2xhdGUoZSx0aGlzLmdldFBhaW50VmFsdWUoXCJjaXJjbGUtdHJhbnNsYXRlXCIse3pvb206aX0sdC5wcm9wZXJ0aWVzKSx0aGlzLmdldFBhaW50VmFsdWUoXCJjaXJjbGUtdHJhbnNsYXRlLWFuY2hvclwiLHt6b29tOml9LHQucHJvcGVydGllcyksYSxuKSxsPXRoaXMuZ2V0UGFpbnRWYWx1ZShcImNpcmNsZS1yYWRpdXNcIix7em9vbTppfSx0LnByb3BlcnRpZXMpKm47cmV0dXJuIG11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpUG9pbnQodSxyLGwpfSx0fShTdHlsZUxheWVyKTttb2R1bGUuZXhwb3J0cz1DaXJjbGVTdHlsZUxheWVyO1xufSx7XCIuLi8uLi9kYXRhL2J1Y2tldC9jaXJjbGVfYnVja2V0XCI6NDMsXCIuLi8uLi91dGlsL2ludGVyc2VjdGlvbl90ZXN0c1wiOjIxNCxcIi4uL3F1ZXJ5X3V0aWxzXCI6MTU1LFwiLi4vc3R5bGVfbGF5ZXJcIjoxNTh9XSwxNjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFN0eWxlTGF5ZXI9X2RlcmVxXyhcIi4uL3N0eWxlX2xheWVyXCIpLEZpbGxFeHRydXNpb25CdWNrZXQ9X2RlcmVxXyhcIi4uLy4uL2RhdGEvYnVja2V0L2ZpbGxfZXh0cnVzaW9uX2J1Y2tldFwiKSxyZWY9X2RlcmVxXyhcIi4uLy4uL3V0aWwvaW50ZXJzZWN0aW9uX3Rlc3RzXCIpLG11bHRpUG9seWdvbkludGVyc2VjdHNNdWx0aVBvbHlnb249cmVmLm11bHRpUG9seWdvbkludGVyc2VjdHNNdWx0aVBvbHlnb24scmVmJDE9X2RlcmVxXyhcIi4uL3F1ZXJ5X3V0aWxzXCIpLHRyYW5zbGF0ZURpc3RhbmNlPXJlZiQxLnRyYW5zbGF0ZURpc3RhbmNlLHRyYW5zbGF0ZT1yZWYkMS50cmFuc2xhdGUsRmlsbEV4dHJ1c2lvblN0eWxlTGF5ZXI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXRQYWludFZhbHVlPWZ1bmN0aW9uKGUscixpKXt2YXIgbz10LnByb3RvdHlwZS5nZXRQYWludFZhbHVlLmNhbGwodGhpcyxlLHIsaSk7cmV0dXJuXCJmaWxsLWV4dHJ1c2lvbi1jb2xvclwiPT09ZSYmbyYmKG9bM109MSksb30sZS5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRmlsbEV4dHJ1c2lvbkJ1Y2tldCh0KX0sZS5wcm90b3R5cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdHJhbnNsYXRlRGlzdGFuY2UodGhpcy5wYWludFtcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZVwiXSl9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsaSxvLG4pe3ZhciBsPXRyYW5zbGF0ZSh0LHRoaXMuZ2V0UGFpbnRWYWx1ZShcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZVwiLHt6b29tOml9LGUucHJvcGVydGllcyksdGhpcy5nZXRQYWludFZhbHVlKFwiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvclwiLHt6b29tOml9LGUucHJvcGVydGllcyksbyxuKTtyZXR1cm4gbXVsdGlQb2x5Z29uSW50ZXJzZWN0c011bHRpUG9seWdvbihsLHIpfSxlLnByb3RvdHlwZS5oYXMzRFBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMucGFpbnRbXCJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5XCJdJiZcIm5vbmVcIiE9PXRoaXMubGF5b3V0LnZpc2liaWxpdHl9LGV9KFN0eWxlTGF5ZXIpO21vZHVsZS5leHBvcnRzPUZpbGxFeHRydXNpb25TdHlsZUxheWVyO1xufSx7XCIuLi8uLi9kYXRhL2J1Y2tldC9maWxsX2V4dHJ1c2lvbl9idWNrZXRcIjo0NSxcIi4uLy4uL3V0aWwvaW50ZXJzZWN0aW9uX3Rlc3RzXCI6MjE0LFwiLi4vcXVlcnlfdXRpbHNcIjoxNTUsXCIuLi9zdHlsZV9sYXllclwiOjE1OH1dLDE2MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgU3R5bGVMYXllcj1fZGVyZXFfKFwiLi4vc3R5bGVfbGF5ZXJcIiksRmlsbEJ1Y2tldD1fZGVyZXFfKFwiLi4vLi4vZGF0YS9idWNrZXQvZmlsbF9idWNrZXRcIikscmVmPV9kZXJlcV8oXCIuLi8uLi91dGlsL2ludGVyc2VjdGlvbl90ZXN0c1wiKSxtdWx0aVBvbHlnb25JbnRlcnNlY3RzTXVsdGlQb2x5Z29uPXJlZi5tdWx0aVBvbHlnb25JbnRlcnNlY3RzTXVsdGlQb2x5Z29uLHJlZiQxPV9kZXJlcV8oXCIuLi9xdWVyeV91dGlsc1wiKSx0cmFuc2xhdGVEaXN0YW5jZT1yZWYkMS50cmFuc2xhdGVEaXN0YW5jZSx0cmFuc2xhdGU9cmVmJDEudHJhbnNsYXRlLEZpbGxTdHlsZUxheWVyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0UGFpbnRWYWx1ZT1mdW5jdGlvbihlLG8sbCl7dmFyIGk9dGhpcztpZihcImZpbGwtb3V0bGluZS1jb2xvclwiPT09ZSl7aWYodm9pZCAwPT09dGhpcy5nZXRQYWludFByb3BlcnR5KFwiZmlsbC1vdXRsaW5lLWNvbG9yXCIpKXJldHVybiB0LnByb3RvdHlwZS5nZXRQYWludFZhbHVlLmNhbGwodGhpcyxcImZpbGwtY29sb3JcIixvLGwpO2Zvcih2YXIgcj10aGlzLl9wYWludFRyYW5zaXRpb25zW1wiZmlsbC1vdXRsaW5lLWNvbG9yXCJdO3I7KXtpZighKHImJnIuZGVjbGFyYXRpb24mJnIuZGVjbGFyYXRpb24udmFsdWUpKXJldHVybiB0LnByb3RvdHlwZS5nZXRQYWludFZhbHVlLmNhbGwoaSxcImZpbGwtY29sb3JcIixvLGwpO3I9ci5vbGRUcmFuc2l0aW9ufX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0UGFpbnRWYWx1ZS5jYWxsKHRoaXMsZSxvLGwpfSxlLnByb3RvdHlwZS5nZXRQYWludFZhbHVlU3RvcFpvb21MZXZlbHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJmaWxsLW91dGxpbmUtY29sb3JcIj09PWUmJnZvaWQgMD09PXRoaXMuZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT90LnByb3RvdHlwZS5nZXRQYWludFZhbHVlU3RvcFpvb21MZXZlbHMuY2FsbCh0aGlzLFwiZmlsbC1jb2xvclwiKTp0LnByb3RvdHlwZS5nZXRQYWludFZhbHVlU3RvcFpvb21MZXZlbHMuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5nZXRQYWludEludGVycG9sYXRpb25UPWZ1bmN0aW9uKGUsbyl7cmV0dXJuXCJmaWxsLW91dGxpbmUtY29sb3JcIj09PWUmJnZvaWQgMD09PXRoaXMuZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT90LnByb3RvdHlwZS5nZXRQYWludEludGVycG9sYXRpb25ULmNhbGwodGhpcyxcImZpbGwtY29sb3JcIixvKTp0LnByb3RvdHlwZS5nZXRQYWludEludGVycG9sYXRpb25ULmNhbGwodGhpcyxlLG8pfSxlLnByb3RvdHlwZS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJmaWxsLW91dGxpbmUtY29sb3JcIj09PWUmJnZvaWQgMD09PXRoaXMuZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT90LnByb3RvdHlwZS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQuY2FsbCh0aGlzLFwiZmlsbC1jb2xvclwiKTp0LnByb3RvdHlwZS5pc1BhaW50VmFsdWVGZWF0dXJlQ29uc3RhbnQuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pc1BhaW50VmFsdWVab29tQ29uc3RhbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJmaWxsLW91dGxpbmUtY29sb3JcIj09PWUmJnZvaWQgMD09PXRoaXMuZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT90LnByb3RvdHlwZS5pc1BhaW50VmFsdWVab29tQ29uc3RhbnQuY2FsbCh0aGlzLFwiZmlsbC1jb2xvclwiKTp0LnByb3RvdHlwZS5pc1BhaW50VmFsdWVab29tQ29uc3RhbnQuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGaWxsQnVja2V0KHQpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1mdW5jdGlvbigpe3JldHVybiB0cmFuc2xhdGVEaXN0YW5jZSh0aGlzLnBhaW50W1wiZmlsbC10cmFuc2xhdGVcIl0pfSxlLnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKHQsZSxvLGwsaSxyKXt2YXIgbj10cmFuc2xhdGUodCx0aGlzLmdldFBhaW50VmFsdWUoXCJmaWxsLXRyYW5zbGF0ZVwiLHt6b29tOmx9LGUucHJvcGVydGllcyksdGhpcy5nZXRQYWludFZhbHVlKFwiZmlsbC10cmFuc2xhdGUtYW5jaG9yXCIse3pvb206bH0sZS5wcm9wZXJ0aWVzKSxpLHIpO3JldHVybiBtdWx0aVBvbHlnb25JbnRlcnNlY3RzTXVsdGlQb2x5Z29uKG4sbyl9LGV9KFN0eWxlTGF5ZXIpO21vZHVsZS5leHBvcnRzPUZpbGxTdHlsZUxheWVyO1xufSx7XCIuLi8uLi9kYXRhL2J1Y2tldC9maWxsX2J1Y2tldFwiOjQ0LFwiLi4vLi4vdXRpbC9pbnRlcnNlY3Rpb25fdGVzdHNcIjoyMTQsXCIuLi9xdWVyeV91dGlsc1wiOjE1NSxcIi4uL3N0eWxlX2xheWVyXCI6MTU4fV0sMTYyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGdldExpbmVXaWR0aChlLHQpe3JldHVybiB0PjA/dCsyKmU6ZX1mdW5jdGlvbiBvZmZzZXRMaW5lKGUsdCl7Zm9yKHZhciBpPVtdLHI9bmV3IFBvaW50KDAsMCksbj0wO248ZS5sZW5ndGg7bisrKXtmb3IodmFyIGE9ZVtuXSx1PVtdLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvLTFdLGw9YVtvXSxwPWFbbysxXSxmPTA9PT1vP3I6bC5zdWIocykuX3VuaXQoKS5fcGVycCgpLGM9bz09PWEubGVuZ3RoLTE/cjpwLnN1YihsKS5fdW5pdCgpLl9wZXJwKCkseT1mLl9hZGQoYykuX3VuaXQoKSxoPXkueCpjLngreS55KmMueTt5Ll9tdWx0KDEvaCksdS5wdXNoKHkuX211bHQodCkuX2FkZChsKSl9aS5wdXNoKHUpfXJldHVybiBpfXZhciBQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxTdHlsZUxheWVyPV9kZXJlcV8oXCIuLi9zdHlsZV9sYXllclwiKSxMaW5lQnVja2V0PV9kZXJlcV8oXCIuLi8uLi9kYXRhL2J1Y2tldC9saW5lX2J1Y2tldFwiKSxyZWY9X2RlcmVxXyhcIi4uLy4uL3V0aWwvaW50ZXJzZWN0aW9uX3Rlc3RzXCIpLG11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpTGluZT1yZWYubXVsdGlQb2x5Z29uSW50ZXJzZWN0c0J1ZmZlcmVkTXVsdGlMaW5lLHJlZiQxPV9kZXJlcV8oXCIuLi9xdWVyeV91dGlsc1wiKSxnZXRNYXhpbXVtUGFpbnRWYWx1ZT1yZWYkMS5nZXRNYXhpbXVtUGFpbnRWYWx1ZSx0cmFuc2xhdGVEaXN0YW5jZT1yZWYkMS50cmFuc2xhdGVEaXN0YW5jZSx0cmFuc2xhdGU9cmVmJDEudHJhbnNsYXRlLExpbmVTdHlsZUxheWVyPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZSYmKHQuX19wcm90b19fPWUpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTGluZUJ1Y2tldChlKX0sdC5wcm90b3R5cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxpPWdldExpbmVXaWR0aChnZXRNYXhpbXVtUGFpbnRWYWx1ZShcImxpbmUtd2lkdGhcIix0aGlzLHQpLGdldE1heGltdW1QYWludFZhbHVlKFwibGluZS1nYXAtd2lkdGhcIix0aGlzLHQpKSxyPWdldE1heGltdW1QYWludFZhbHVlKFwibGluZS1vZmZzZXRcIix0aGlzLHQpO3JldHVybiBpLzIrTWF0aC5hYnMocikrdHJhbnNsYXRlRGlzdGFuY2UodGhpcy5wYWludFtcImxpbmUtdHJhbnNsYXRlXCJdKX0sdC5wcm90b3R5cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlvbihlLHQsaSxyLG4sYSl7dmFyIHU9dHJhbnNsYXRlKGUsdGhpcy5nZXRQYWludFZhbHVlKFwibGluZS10cmFuc2xhdGVcIix7em9vbTpyfSx0LnByb3BlcnRpZXMpLHRoaXMuZ2V0UGFpbnRWYWx1ZShcImxpbmUtdHJhbnNsYXRlLWFuY2hvclwiLHt6b29tOnJ9LHQucHJvcGVydGllcyksbixhKSxvPWEvMipnZXRMaW5lV2lkdGgodGhpcy5nZXRQYWludFZhbHVlKFwibGluZS13aWR0aFwiLHt6b29tOnJ9LHQucHJvcGVydGllcyksdGhpcy5nZXRQYWludFZhbHVlKFwibGluZS1nYXAtd2lkdGhcIix7em9vbTpyfSx0LnByb3BlcnRpZXMpKSxzPXRoaXMuZ2V0UGFpbnRWYWx1ZShcImxpbmUtb2Zmc2V0XCIse3pvb206cn0sdC5wcm9wZXJ0aWVzKTtyZXR1cm4gcyYmKGk9b2Zmc2V0TGluZShpLHMqYSkpLG11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpTGluZSh1LGksbyl9LHR9KFN0eWxlTGF5ZXIpO21vZHVsZS5leHBvcnRzPUxpbmVTdHlsZUxheWVyO1xufSx7XCIuLi8uLi9kYXRhL2J1Y2tldC9saW5lX2J1Y2tldFwiOjQ2LFwiLi4vLi4vdXRpbC9pbnRlcnNlY3Rpb25fdGVzdHNcIjoyMTQsXCIuLi9xdWVyeV91dGlsc1wiOjE1NSxcIi4uL3N0eWxlX2xheWVyXCI6MTU4LFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjJ9XSwxNjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFN0eWxlTGF5ZXI9X2RlcmVxXyhcIi4uL3N0eWxlX2xheWVyXCIpLFN5bWJvbEJ1Y2tldD1fZGVyZXFfKFwiLi4vLi4vZGF0YS9idWNrZXQvc3ltYm9sX2J1Y2tldFwiKSxTeW1ib2xTdHlsZUxheWVyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0TGF5b3V0VmFsdWU9ZnVuY3Rpb24oZSxyLG8pe3ZhciBuPXQucHJvdG90eXBlLmdldExheW91dFZhbHVlLmNhbGwodGhpcyxlLHIsbyk7aWYoXCJhdXRvXCIhPT1uKXJldHVybiBuO3N3aXRjaChlKXtjYXNlXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiOmNhc2VcImljb24tcm90YXRpb24tYWxpZ25tZW50XCI6cmV0dXJuXCJsaW5lXCI9PT10aGlzLmdldExheW91dFZhbHVlKFwic3ltYm9sLXBsYWNlbWVudFwiLHIsbyk/XCJtYXBcIjpcInZpZXdwb3J0XCI7Y2FzZVwidGV4dC1waXRjaC1hbGlnbm1lbnRcIjpyZXR1cm4gdGhpcy5nZXRMYXlvdXRWYWx1ZShcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIscixvKTtjYXNlXCJpY29uLXBpdGNoLWFsaWdubWVudFwiOnJldHVybiB0aGlzLmdldExheW91dFZhbHVlKFwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIixyLG8pO2RlZmF1bHQ6cmV0dXJuIG59fSxlLnByb3RvdHlwZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBTeW1ib2xCdWNrZXQodCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZX0oU3R5bGVMYXllcik7bW9kdWxlLmV4cG9ydHM9U3ltYm9sU3R5bGVMYXllcjtcbn0se1wiLi4vLi4vZGF0YS9idWNrZXQvc3ltYm9sX2J1Y2tldFwiOjQ3LFwiLi4vc3R5bGVfbGF5ZXJcIjoxNTh9XSwxNjQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFN0eWxlTGF5ZXI9X2RlcmVxXyhcIi4vc3R5bGVfbGF5ZXJcIiksdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLGZlYXR1cmVGaWx0ZXI9X2RlcmVxXyhcIi4uL3N0eWxlLXNwZWMvZmVhdHVyZV9maWx0ZXJcIiksZ3JvdXBCeUxheW91dD1fZGVyZXFfKFwiLi4vc3R5bGUtc3BlYy9ncm91cF9ieV9sYXlvdXRcIiksU3R5bGVMYXllckluZGV4PWZ1bmN0aW9uKGUpe2UmJnRoaXMucmVwbGFjZShlKX07U3R5bGVMYXllckluZGV4LnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7dGhpcy5zeW1ib2xPcmRlcj1bXTtmb3IodmFyIHQ9MCxpPWU7dDxpLmxlbmd0aDt0Kz0xKXt2YXIgYT1pW3RdO1wic3ltYm9sXCI9PT1hLnR5cGUmJnIuc3ltYm9sT3JkZXIucHVzaChhLmlkKX10aGlzLl9sYXllckNvbmZpZ3M9e30sdGhpcy5fbGF5ZXJzPXt9LHRoaXMudXBkYXRlKGUsW10pfSxTdHlsZUxheWVySW5kZXgucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHIsdCl7Zm9yKHZhciBpPXRoaXMsYT0wLGw9ZTthPGwubGVuZ3RoO2ErPTEpe3ZhciB5PWxbYV07aS5fbGF5ZXJDb25maWdzW3kuaWRdPXk7dmFyIHM9aS5fbGF5ZXJzW3kuaWRdPVN0eWxlTGF5ZXIuY3JlYXRlKHkpO3MudXBkYXRlUGFpbnRUcmFuc2l0aW9ucyh7fSx7dHJhbnNpdGlvbjohMX0pLHMuZmlsdGVyPWZlYXR1cmVGaWx0ZXIocy5maWx0ZXIpfWZvcih2YXIgbz0wLHU9cjtvPHUubGVuZ3RoO28rPTEpe3ZhciBuPXVbb107ZGVsZXRlIGkuX2xheWVyQ29uZmlnc1tuXSxkZWxldGUgaS5fbGF5ZXJzW25dfXQmJih0aGlzLnN5bWJvbE9yZGVyPXQpLHRoaXMuZmFtaWxpZXNCeVNvdXJjZT17fTtmb3IodmFyIGY9Z3JvdXBCeUxheW91dCh1dGlsLnZhbHVlcyh0aGlzLl9sYXllckNvbmZpZ3MpKSxwPTAsZD1mO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGg9ZFtwXSxjPWgubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBpLl9sYXllcnNbZS5pZF19KSx2PWNbMF07aWYoIXYubGF5b3V0fHxcIm5vbmVcIiE9PXYubGF5b3V0LnZpc2liaWxpdHkpe3ZhciBfPXYuc291cmNlfHxcIlwiLGc9aS5mYW1pbGllc0J5U291cmNlW19dO2d8fChnPWkuZmFtaWxpZXNCeVNvdXJjZVtfXT17fSk7dmFyIEw9di5zb3VyY2VMYXllcnx8XCJfZ2VvanNvblRpbGVMYXllclwiLG09Z1tMXTttfHwobT1nW0xdPVtdKSxtLnB1c2goYyl9fX0sbW9kdWxlLmV4cG9ydHM9U3R5bGVMYXllckluZGV4O1xufSx7XCIuLi9zdHlsZS1zcGVjL2ZlYXR1cmVfZmlsdGVyXCI6MTEwLFwiLi4vc3R5bGUtc3BlYy9ncm91cF9ieV9sYXlvdXRcIjoxMTMsXCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuL3N0eWxlX2xheWVyXCI6MTU4fV0sMTY1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGludGVycFpvb21UcmFuc2l0aW9uZWQodCxpLGUpe2lmKHZvaWQgMCE9PXQmJnZvaWQgMCE9PWkpcmV0dXJue2Zyb206dC50byxmcm9tU2NhbGU6dC50b1NjYWxlLHRvOmkudG8sdG9TY2FsZTppLnRvU2NhbGUsdDplfX12YXIgdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLGludGVycG9sYXRlPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL3V0aWwvaW50ZXJwb2xhdGVcIiksZmFrZVpvb21IaXN0b3J5PXtsYXN0SW50ZWdlclpvb206MCxsYXN0SW50ZWdlclpvb21UaW1lOjAsbGFzdFpvb206MH0sU3R5bGVUcmFuc2l0aW9uPWZ1bmN0aW9uKHQsaSxlLG8sYSl7dGhpcy5kZWNsYXJhdGlvbj1pLHRoaXMuc3RhcnRUaW1lPXRoaXMuZW5kVGltZT0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLm9sZFRyYW5zaXRpb249ZSx0aGlzLmR1cmF0aW9uPW8uZHVyYXRpb258fDAsdGhpcy5kZWxheT1vLmRlbGF5fHwwLHRoaXMuem9vbVRyYW5zaXRpb25lZD1cInBpZWNld2lzZS1jb25zdGFudFwiPT09dC5mdW5jdGlvbiYmdC50cmFuc2l0aW9uLHRoaXMuaW50ZXJwPXRoaXMuem9vbVRyYW5zaXRpb25lZD9pbnRlcnBab29tVHJhbnNpdGlvbmVkOmludGVycG9sYXRlW3QudHlwZV0sdGhpcy56b29tSGlzdG9yeT1hfHxmYWtlWm9vbUhpc3RvcnksdGhpcy5pbnN0YW50KCl8fCh0aGlzLmVuZFRpbWU9dGhpcy5zdGFydFRpbWUrdGhpcy5kdXJhdGlvbit0aGlzLmRlbGF5KSxlJiZlLmVuZFRpbWU8PXRoaXMuc3RhcnRUaW1lJiZkZWxldGUgZS5vbGRUcmFuc2l0aW9ufTtTdHlsZVRyYW5zaXRpb24ucHJvdG90eXBlLmluc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5vbGRUcmFuc2l0aW9ufHwhdGhpcy5pbnRlcnB8fDA9PT10aGlzLmR1cmF0aW9uJiYwPT09dGhpcy5kZWxheX0sU3R5bGVUcmFuc2l0aW9uLnByb3RvdHlwZS5jYWxjdWxhdGU9ZnVuY3Rpb24odCxpLGUpe3ZhciBvPXRoaXMuX2NhbGN1bGF0ZVRhcmdldFZhbHVlKHQsaSk7aWYodGhpcy5pbnN0YW50KCkpcmV0dXJuIG87aWYoKGU9ZXx8RGF0ZS5ub3coKSk+PXRoaXMuZW5kVGltZSlyZXR1cm4gbzt2YXIgYT10aGlzLm9sZFRyYW5zaXRpb24uY2FsY3VsYXRlKHQsaSx0aGlzLnN0YXJ0VGltZSksbj11dGlsLmVhc2VDdWJpY0luT3V0KChlLXRoaXMuc3RhcnRUaW1lLXRoaXMuZGVsYXkpL3RoaXMuZHVyYXRpb24pO3JldHVybiB0aGlzLmludGVycChhLG8sbil9LFN0eWxlVHJhbnNpdGlvbi5wcm90b3R5cGUuX2NhbGN1bGF0ZVRhcmdldFZhbHVlPWZ1bmN0aW9uKHQsaSl7aWYoIXRoaXMuem9vbVRyYW5zaXRpb25lZClyZXR1cm4gdGhpcy5kZWNsYXJhdGlvbi5jYWxjdWxhdGUodCxpKTt2YXIgZT10Lnpvb20sbz10aGlzLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbSxhPWU+bz8yOi41LG49dGhpcy5kZWNsYXJhdGlvbi5jYWxjdWxhdGUoe3pvb206ZT5vP2UtMTplKzF9LGkpLHI9dGhpcy5kZWNsYXJhdGlvbi5jYWxjdWxhdGUoe3pvb206ZX0saSkscz1NYXRoLm1pbigoRGF0ZS5ub3coKS10aGlzLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbVRpbWUpL3RoaXMuZHVyYXRpb24sMSksbD1NYXRoLmFicyhlLW8pLHU9aW50ZXJwb2xhdGUocywxLGwpO3JldHVybiB2b2lkIDAhPT1uJiZ2b2lkIDAhPT1yP3tmcm9tOm4sZnJvbVNjYWxlOmEsdG86cix0b1NjYWxlOjEsdDp1fTp2b2lkIDB9LG1vZHVsZS5leHBvcnRzPVN0eWxlVHJhbnNpdGlvbjtcbn0se1wiLi4vc3R5bGUtc3BlYy91dGlsL2ludGVycG9sYXRlXCI6MTI3LFwiLi4vdXRpbC91dGlsXCI6MjIzfV0sMTY2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO21vZHVsZS5leHBvcnRzPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL3ZhbGlkYXRlX3N0eWxlLm1pblwiKSxtb2R1bGUuZXhwb3J0cy5lbWl0RXJyb3JzPWZ1bmN0aW9uKHIsZSl7aWYoZSYmZS5sZW5ndGgpe2Zvcih2YXIgdD0wLG89ZTt0PG8ubGVuZ3RoO3QrPTEpe3ZhciBzPW9bdF0saT1zLm1lc3NhZ2U7ci5maXJlKFwiZXJyb3JcIix7ZXJyb3I6bmV3IEVycm9yKGkpfSl9cmV0dXJuITB9cmV0dXJuITF9O1xufSx7XCIuLi9zdHlsZS1zcGVjL3ZhbGlkYXRlX3N0eWxlLm1pblwiOjE0OX1dLDE2NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIiksQW5jaG9yPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG8obyxlLG4scil7dC5jYWxsKHRoaXMsbyxlKSx0aGlzLmFuZ2xlPW4sdm9pZCAwIT09ciYmKHRoaXMuc2VnbWVudD1yKX1yZXR1cm4gdCYmKG8uX19wcm90b19fPXQpLG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLG8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW8sby5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8odGhpcy54LHRoaXMueSx0aGlzLmFuZ2xlLHRoaXMuc2VnbWVudCl9LG99KFBvaW50KTttb2R1bGUuZXhwb3J0cz1BbmNob3I7XG59LHtcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sMTY4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNoZWNrTWF4QW5nbGUoZSx0LGEscixuKXtpZih2b2lkIDA9PT10LnNlZ21lbnQpcmV0dXJuITA7Zm9yKHZhciBpPXQscz10LnNlZ21lbnQrMSxmPTA7Zj4tYS8yOyl7aWYoLS1zPDApcmV0dXJuITE7Zi09ZVtzXS5kaXN0KGkpLGk9ZVtzXX1mKz1lW3NdLmRpc3QoZVtzKzFdKSxzKys7Zm9yKHZhciBsPVtdLG89MDtmPGEvMjspe3ZhciB1PWVbcy0xXSxjPWVbc10sZz1lW3MrMV07aWYoIWcpcmV0dXJuITE7dmFyIGg9dS5hbmdsZVRvKGMpLWMuYW5nbGVUbyhnKTtmb3IoaD1NYXRoLmFicygoaCszKk1hdGguUEkpJSgyKk1hdGguUEkpLU1hdGguUEkpLGwucHVzaCh7ZGlzdGFuY2U6ZixhbmdsZURlbHRhOmh9KSxvKz1oO2YtbFswXS5kaXN0YW5jZT5yOylvLT1sLnNoaWZ0KCkuYW5nbGVEZWx0YTtpZihvPm4pcmV0dXJuITE7cysrLGYrPWMuZGlzdChnKX1yZXR1cm4hMH1tb2R1bGUuZXhwb3J0cz1jaGVja01heEFuZ2xlO1xufSx7fV0sMTY5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNsaXBMaW5lKG4seCx5LG8sZSl7Zm9yKHZhciByPVtdLHQ9MDt0PG4ubGVuZ3RoO3QrKylmb3IodmFyIGk9blt0XSx1PXZvaWQgMCxkPTA7ZDxpLmxlbmd0aC0xO2QrKyl7dmFyIFA9aVtkXSx3PWlbZCsxXTtQLng8eCYmdy54PHh8fChQLng8eD9QPW5ldyBQb2ludCh4LFAueSsody55LVAueSkqKCh4LVAueCkvKHcueC1QLngpKSkuX3JvdW5kKCk6dy54PHgmJih3PW5ldyBQb2ludCh4LFAueSsody55LVAueSkqKCh4LVAueCkvKHcueC1QLngpKSkuX3JvdW5kKCkpLFAueTx5JiZ3Lnk8eXx8KFAueTx5P1A9bmV3IFBvaW50KFAueCsody54LVAueCkqKCh5LVAueSkvKHcueS1QLnkpKSx5KS5fcm91bmQoKTp3Lnk8eSYmKHc9bmV3IFBvaW50KFAueCsody54LVAueCkqKCh5LVAueSkvKHcueS1QLnkpKSx5KS5fcm91bmQoKSksUC54Pj1vJiZ3Lng+PW98fChQLng+PW8/UD1uZXcgUG9pbnQobyxQLnkrKHcueS1QLnkpKigoby1QLngpLyh3LngtUC54KSkpLl9yb3VuZCgpOncueD49byYmKHc9bmV3IFBvaW50KG8sUC55Kyh3LnktUC55KSooKG8tUC54KS8ody54LVAueCkpKS5fcm91bmQoKSksUC55Pj1lJiZ3Lnk+PWV8fChQLnk+PWU/UD1uZXcgUG9pbnQoUC54Kyh3LngtUC54KSooKGUtUC55KS8ody55LVAueSkpLGUpLl9yb3VuZCgpOncueT49ZSYmKHc9bmV3IFBvaW50KFAueCsody54LVAueCkqKChlLVAueSkvKHcueS1QLnkpKSxlKS5fcm91bmQoKSksdSYmUC5lcXVhbHModVt1Lmxlbmd0aC0xXSl8fCh1PVtQXSxyLnB1c2godSkpLHUucHVzaCh3KSkpKSl9cmV0dXJuIHJ9dmFyIFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpO21vZHVsZS5leHBvcnRzPWNsaXBMaW5lO1xufSx7XCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDE3MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgY3JlYXRlU3RydWN0QXJyYXlUeXBlPV9kZXJlcV8oXCIuLi91dGlsL3N0cnVjdF9hcnJheVwiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxDb2xsaXNpb25Cb3hBcnJheT1jcmVhdGVTdHJ1Y3RBcnJheVR5cGUoe21lbWJlcnM6W3t0eXBlOlwiSW50MTZcIixuYW1lOlwiYW5jaG9yUG9pbnRYXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwiYW5jaG9yUG9pbnRZXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwib2Zmc2V0WFwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcIm9mZnNldFlcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJ4MVwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcInkxXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwieDJcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJ5MlwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwidW5hZGp1c3RlZE1heFNjYWxlXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJtYXhTY2FsZVwifSx7dHlwZTpcIlVpbnQzMlwiLG5hbWU6XCJmZWF0dXJlSW5kZXhcIn0se3R5cGU6XCJVaW50MTZcIixuYW1lOlwic291cmNlTGF5ZXJJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJidWNrZXRJbmRleFwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcImJib3gwXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwiYmJveDFcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJiYm94MlwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcImJib3gzXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJwbGFjZW1lbnRTY2FsZVwifV19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29sbGlzaW9uQm94QXJyYXkucHJvdG90eXBlLlN0cnVjdFR5cGUucHJvdG90eXBlLFwiYW5jaG9yUG9pbnRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLmFuY2hvclBvaW50WCx0aGlzLmFuY2hvclBvaW50WSl9fSksbW9kdWxlLmV4cG9ydHM9Q29sbGlzaW9uQm94QXJyYXk7XG59LHtcIi4uL3V0aWwvc3RydWN0X2FycmF5XCI6MjIwLFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjJ9XSwxNzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIENvbGxpc2lvbkZlYXR1cmU9ZnVuY3Rpb24odCxlLGksbyxhLG4scyxsLHIsZCx1KXt2YXIgaD1zLnRvcCpsLXIsZj1zLmJvdHRvbSpsK3IseD1zLmxlZnQqbC1yLG09cy5yaWdodCpsK3I7aWYodGhpcy5ib3hTdGFydEluZGV4PXQubGVuZ3RoLGQpe3ZhciBfPWYtaCxiPW0teDtpZihfPjApaWYoXz1NYXRoLm1heCgxMCpsLF8pLHUpe3ZhciB2PWVbaS5zZWdtZW50KzFdLnN1YihlW2kuc2VnbWVudF0pLl91bml0KCkuX211bHQoYiksYz1baS5zdWIodiksaS5hZGQodildO3RoaXMuX2FkZExpbmVDb2xsaXNpb25Cb3hlcyh0LGMsaSwwLGIsXyxvLGEsbil9ZWxzZSB0aGlzLl9hZGRMaW5lQ29sbGlzaW9uQm94ZXModCxlLGksaS5zZWdtZW50LGIsXyxvLGEsbil9ZWxzZSB0LmVtcGxhY2VCYWNrKGkueCxpLnksMCwwLHgsaCxtLGYsMS8wLDEvMCxvLGEsbiwwLDAsMCwwLDApO3RoaXMuYm94RW5kSW5kZXg9dC5sZW5ndGh9O0NvbGxpc2lvbkZlYXR1cmUucHJvdG90eXBlLl9hZGRMaW5lQ29sbGlzaW9uQm94ZXM9ZnVuY3Rpb24odCxlLGksbyxhLG4scyxsLHIpe3ZhciBkPW4vMix1PU1hdGguZmxvb3IoYS9kKSxoPU1hdGguZmxvb3IodS8yKSxmPS1uLzIseD1pLG09bysxLF89ZixiPS1hLzIsdj1iLWEvODtkb3tpZigtLW08MCl7aWYoXz5iKXJldHVybjttPTA7YnJlYWt9Xy09ZVttXS5kaXN0KHgpLHg9ZVttXX13aGlsZShfPnYpO2Zvcih2YXIgYz1lW21dLmRpc3QoZVttKzFdKSxnPS1oO2c8dStoO2crKyl7dmFyIHA9ZypkLEM9YitwO2lmKHA8MCYmKEMrPXApLHA+YSYmKEMrPXAtYSksIShDPF8pKXtmb3IoO18rYzxDOyl7aWYoXys9YywrK20rMT49ZS5sZW5ndGgpcmV0dXJuO2M9ZVttXS5kaXN0KGVbbSsxXSl9dmFyIE09Qy1fLHk9ZVttXSxCPWVbbSsxXSxrPUIuc3ViKHkpLl91bml0KCkuX211bHQoTSkuX2FkZCh5KS5fcm91bmQoKSxGPU1hdGgubWF4KE1hdGguYWJzKEMtZiktZC8yLDApLEw9YS8yL0Y7KGc8MHx8Zz49dSkmJihMPU1hdGgubWluKEwsLjk5KSksdC5lbXBsYWNlQmFjayhrLngsay55LGsueC1pLngsay55LWkueSwtbi8yLC1uLzIsbi8yLG4vMixMLEwscyxsLHIsMCwwLDAsMCwwKX19fSxtb2R1bGUuZXhwb3J0cz1Db2xsaXNpb25GZWF0dXJlO1xufSx7fV0sMTcyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxFWFRFTlQ9X2RlcmVxXyhcIi4uL2RhdGEvZXh0ZW50XCIpLEdyaWQ9X2RlcmVxXyhcImdyaWQtaW5kZXhcIiksaW50ZXJzZWN0aW9uVGVzdHM9X2RlcmVxXyhcIi4uL3V0aWwvaW50ZXJzZWN0aW9uX3Rlc3RzXCIpLENvbGxpc2lvblRpbGU9ZnVuY3Rpb24oZSx0LGksYSxyLG8sbil7dm9pZCAwPT09byYmKG89bmV3IEdyaWQoRVhURU5ULDEyLDYpKSx2b2lkIDA9PT1uJiYobj1uZXcgR3JpZChFWFRFTlQsMTIsMCkpLHRoaXMuYW5nbGU9ZSx0aGlzLnBpdGNoPXQsdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlPWksdGhpcy5jYW1lcmFUb1RpbGVEaXN0YW5jZT1hLHRoaXMuZ3JpZD1vLHRoaXMuaWdub3JlZEdyaWQ9bix0aGlzLnBlcnNwZWN0aXZlUmF0aW89MSsuNSooYS9pLTEpLHRoaXMubWluU2NhbGU9LjUvdGhpcy5wZXJzcGVjdGl2ZVJhdGlvLHRoaXMubWF4U2NhbGU9Mi90aGlzLnBlcnNwZWN0aXZlUmF0aW87dmFyIHM9TWF0aC5zaW4odGhpcy5hbmdsZSksbD1NYXRoLmNvcyh0aGlzLmFuZ2xlKTt0aGlzLnJvdGF0aW9uTWF0cml4PVtsLC1zLHMsbF0sdGhpcy5yZXZlcnNlUm90YXRpb25NYXRyaXg9W2wscywtcyxsXSx0aGlzLnlTdHJldGNoPU1hdGgubWF4KDEsYS8oaSpNYXRoLmNvcyh0LzE4MCpNYXRoLlBJKSkpLHRoaXMuY29sbGlzaW9uQm94QXJyYXk9ciwwPT09ci5sZW5ndGgmJihyLmVtcGxhY2VCYWNrKCksci5lbXBsYWNlQmFjaygwLDAsMCwwLDAsLUVYVEVOVCwwLEVYVEVOVCwxLzAsMS8wLDAsMCwwLDAsMCwwLDAsMCwwKSxyLmVtcGxhY2VCYWNrKEVYVEVOVCwwLDAsMCwwLC1FWFRFTlQsMCxFWFRFTlQsMS8wLDEvMCwwLDAsMCwwLDAsMCwwLDAsMCksci5lbXBsYWNlQmFjaygwLDAsMCwwLC1FWFRFTlQsMCxFWFRFTlQsMCwxLzAsMS8wLDAsMCwwLDAsMCwwLDAsMCwwKSxyLmVtcGxhY2VCYWNrKDAsRVhURU5ULDAsMCwtRVhURU5ULDAsRVhURU5ULDAsMS8wLDEvMCwwLDAsMCwwLDAsMCwwLDAsMCkpLHRoaXMudGVtcENvbGxpc2lvbkJveD1yLmdldCgwKSx0aGlzLmVkZ2VzPVtyLmdldCgxKSxyLmdldCgyKSxyLmdldCgzKSxyLmdldCg0KV19O0NvbGxpc2lvblRpbGUuZGVzZXJpYWxpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IENvbGxpc2lvblRpbGUoZS5hbmdsZSxlLnBpdGNoLGUuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSxlLmNhbWVyYVRvVGlsZURpc3RhbmNlLHQsbmV3IEdyaWQoZS5ncmlkKSxuZXcgR3JpZChlLmlnbm9yZWRHcmlkKSl9LENvbGxpc2lvblRpbGUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdyaWQudG9BcnJheUJ1ZmZlcigpLGk9dGhpcy5pZ25vcmVkR3JpZC50b0FycmF5QnVmZmVyKCk7cmV0dXJuIGUmJihlLnB1c2godCksZS5wdXNoKGkpKSx7YW5nbGU6dGhpcy5hbmdsZSxwaXRjaDp0aGlzLnBpdGNoLGNhbWVyYVRvQ2VudGVyRGlzdGFuY2U6dGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLGNhbWVyYVRvVGlsZURpc3RhbmNlOnRoaXMuY2FtZXJhVG9UaWxlRGlzdGFuY2UsZ3JpZDp0LGlnbm9yZWRHcmlkOml9fSxDb2xsaXNpb25UaWxlLnByb3RvdHlwZS5wbGFjZUNvbGxpc2lvbkZlYXR1cmU9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgYT10aGlzLHI9dGhpcy5jb2xsaXNpb25Cb3hBcnJheSxvPXRoaXMubWluU2NhbGUsbj10aGlzLnJvdGF0aW9uTWF0cml4LHM9dGhpcy55U3RyZXRjaCxsPWUuYm94U3RhcnRJbmRleDtsPGUuYm94RW5kSW5kZXg7bCsrKXt2YXIgYz1yLmdldChsKSxoPWMuYW5jaG9yUG9pbnQuX21hdE11bHQobikseD1oLngsbT1oLnkscD14K2MueDEqYS5wZXJzcGVjdGl2ZVJhdGlvLHk9bStjLnkxKnMqYS5wZXJzcGVjdGl2ZVJhdGlvLGc9eCtjLngyKmEucGVyc3BlY3RpdmVSYXRpbyxkPW0rYy55MipzKmEucGVyc3BlY3RpdmVSYXRpbztjLmJib3gwPXAsYy5iYm94MT15LGMuYmJveDI9ZyxjLmJib3gzPWQ7dmFyIFQ9bmV3IFBvaW50KGMub2Zmc2V0WCxjLm9mZnNldFkpLl9tYXRNdWx0KG4pLHU9VC54KlQueCx2PVQueSpULnksTT12KnMqcyxmPU1hdGguc3FydCgodStNKS8odSt2KSl8fDE7aWYoYy5tYXhTY2FsZT1jLnVuYWRqdXN0ZWRNYXhTY2FsZSpmLCF0KWZvcih2YXIgRT1hLmdyaWQucXVlcnkocCx5LGcsZCksUz0wO1M8RS5sZW5ndGg7UysrKXt2YXIgUD1yLmdldChFW1NdKSxiPVAuYW5jaG9yUG9pbnQuX21hdE11bHQobik7aWYoKG89YS5nZXRQbGFjZW1lbnRTY2FsZShvLGgsYyxiLFApKT49YS5tYXhTY2FsZSlyZXR1cm4gb31pZihpKXt2YXIgTj12b2lkIDA7aWYoYS5hbmdsZSl7dmFyIEM9YS5yZXZlcnNlUm90YXRpb25NYXRyaXgsdz1uZXcgUG9pbnQoYy54MSxjLnkxKS5tYXRNdWx0KEMpLFg9bmV3IFBvaW50KGMueDIsYy55MSkubWF0TXVsdChDKSxCPW5ldyBQb2ludChjLngxLGMueTIpLm1hdE11bHQoQyksRz1uZXcgUG9pbnQoYy54MixjLnkyKS5tYXRNdWx0KEMpO049YS50ZW1wQ29sbGlzaW9uQm94LE4uYW5jaG9yUG9pbnRYPWMuYW5jaG9yUG9pbnQueCxOLmFuY2hvclBvaW50WT1jLmFuY2hvclBvaW50LnksTi54MT1NYXRoLm1pbih3LngsWC54LEIueCxHLngpLE4ueTE9TWF0aC5taW4ody55LFgueCxCLngsRy54KSxOLngyPU1hdGgubWF4KHcueCxYLngsQi54LEcueCksTi55Mj1NYXRoLm1heCh3LnksWC54LEIueCxHLngpLE4ubWF4U2NhbGU9Yy5tYXhTY2FsZX1lbHNlIE49Yztmb3IodmFyIFI9MDtSPHRoaXMuZWRnZXMubGVuZ3RoO1IrKyl7dmFyIHE9YS5lZGdlc1tSXTtpZigobz1hLmdldFBsYWNlbWVudFNjYWxlKG8sYy5hbmNob3JQb2ludCxOLHEuYW5jaG9yUG9pbnQscSkpPj1hLm1heFNjYWxlKXJldHVybiBvfX19cmV0dXJuIG99LENvbGxpc2lvblRpbGUucHJvdG90eXBlLnF1ZXJ5UmVuZGVyZWRTeW1ib2xzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9e30sYT1bXTtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmdyaWQua2V5cy5sZW5ndGgmJjA9PT10aGlzLmlnbm9yZWRHcmlkLmtleXMubGVuZ3RoKXJldHVybiBhO2Zvcih2YXIgcj10aGlzLmNvbGxpc2lvbkJveEFycmF5LG89dGhpcy5yb3RhdGlvbk1hdHJpeCxuPXRoaXMueVN0cmV0Y2gscz1bXSxsPTEvMCxjPTEvMCxoPS0xLzAseD0tMS8wLG09MDttPGUubGVuZ3RoO20rKylmb3IodmFyIHA9ZVttXSx5PTA7eTxwLmxlbmd0aDt5Kyspe3ZhciBnPXBbeV0ubWF0TXVsdChvKTtsPU1hdGgubWluKGwsZy54KSxjPU1hdGgubWluKGMsZy55KSxoPU1hdGgubWF4KGgsZy54KSx4PU1hdGgubWF4KHgsZy55KSxzLnB1c2goZyl9Zm9yKHZhciBkPXRoaXMuZ3JpZC5xdWVyeShsLGMsaCx4KSxUPXRoaXMuaWdub3JlZEdyaWQucXVlcnkobCxjLGgseCksdT0wO3U8VC5sZW5ndGg7dSsrKWQucHVzaChUW3VdKTtmb3IodmFyIHY9dC90aGlzLnBlcnNwZWN0aXZlUmF0aW8sTT1NYXRoLnBvdygyLE1hdGguY2VpbChNYXRoLmxvZyh2KS9NYXRoLkxOMioxMCkvMTApLGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIEU9ci5nZXQoZFtmXSksUz1FLnNvdXJjZUxheWVySW5kZXgsUD1FLmZlYXR1cmVJbmRleDtpZih2b2lkIDA9PT1pW1NdJiYoaVtTXT17fSksIWlbU11bUF0mJiEoTTxFLnBsYWNlbWVudFNjYWxlfHxNPkUubWF4U2NhbGUpKXt2YXIgYj1FLmFuY2hvclBvaW50Lm1hdE11bHQobyksTj1iLngrRS54MS92LEM9Yi55K0UueTEvdipuLHc9Yi54K0UueDIvdixYPWIueStFLnkyL3YqbixCPVtuZXcgUG9pbnQoTixDKSxuZXcgUG9pbnQodyxDKSxuZXcgUG9pbnQodyxYKSxuZXcgUG9pbnQoTixYKV07aW50ZXJzZWN0aW9uVGVzdHMucG9seWdvbkludGVyc2VjdHNQb2x5Z29uKHMsQikmJihpW1NdW1BdPSEwLGEucHVzaChkW2ZdKSl9fXJldHVybiBhfSxDb2xsaXNpb25UaWxlLnByb3RvdHlwZS5nZXRQbGFjZW1lbnRTY2FsZT1mdW5jdGlvbihlLHQsaSxhLHIpe3ZhciBvPXQueC1hLngsbj10LnktYS55LHM9KHIueDEtaS54MikvbyxsPShyLngyLWkueDEpL28sYz0oci55MS1pLnkyKSp0aGlzLnlTdHJldGNoL24saD0oci55Mi1pLnkxKSp0aGlzLnlTdHJldGNoL247KGlzTmFOKHMpfHxpc05hTihsKSkmJihzPWw9MSksKGlzTmFOKGMpfHxpc05hTihoKSkmJihjPWg9MSk7dmFyIHg9TWF0aC5taW4oTWF0aC5tYXgocyxsKSxNYXRoLm1heChjLGgpKSxtPXIubWF4U2NhbGUscD1pLm1heFNjYWxlO3JldHVybiB4Pm0mJih4PW0pLHg+cCYmKHg9cCkseD5lJiZ4Pj1yLnBsYWNlbWVudFNjYWxlJiYoZT14KSxlfSxDb2xsaXNpb25UaWxlLnByb3RvdHlwZS5pbnNlcnRDb2xsaXNpb25GZWF0dXJlPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIGE9dGhpcyxyPWk/dGhpcy5pZ25vcmVkR3JpZDp0aGlzLmdyaWQsbz10aGlzLmNvbGxpc2lvbkJveEFycmF5LG49ZS5ib3hTdGFydEluZGV4O248ZS5ib3hFbmRJbmRleDtuKyspe3ZhciBzPW8uZ2V0KG4pO3MucGxhY2VtZW50U2NhbGU9dCx0PGEubWF4U2NhbGUmJigxPT09YS5wZXJzcGVjdGl2ZVJhdGlvfHxzLm1heFNjYWxlPj0xKSYmci5pbnNlcnQobixzLmJib3gwLHMuYmJveDEscy5iYm94MixzLmJib3gzKX19LG1vZHVsZS5leHBvcnRzPUNvbGxpc2lvblRpbGU7XG59LHtcIi4uL2RhdGEvZXh0ZW50XCI6NDgsXCIuLi91dGlsL2ludGVyc2VjdGlvbl90ZXN0c1wiOjIxNCxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyLFwiZ3JpZC1pbmRleFwiOjIyfV0sMTczOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGdldEFuY2hvcnMoZSxyLHQsbixhLGwsbyxpLGMpe3ZhciBoPW4/LjYqbCpvOjAscz1NYXRoLm1heChuP24ucmlnaHQtbi5sZWZ0OjAsYT9hLnJpZ2h0LWEubGVmdDowKSx1PTA9PT1lWzBdLnh8fGVbMF0ueD09PWN8fDA9PT1lWzBdLnl8fGVbMF0ueT09PWM7ci1zKm88ci80JiYocj1zKm8rci80KTt2YXIgZz0yKmw7cmV0dXJuIHJlc2FtcGxlKGUsdT9yLzIqaSVyOihzLzIrZykqbyppJXIscixoLHQscypvLHUsITEsYyl9ZnVuY3Rpb24gcmVzYW1wbGUoZSxyLHQsbixhLGwsbyxpLGMpe2Zvcih2YXIgaD1sLzIscz0wLHU9MDt1PGUubGVuZ3RoLTE7dSsrKXMrPWVbdV0uZGlzdChlW3UrMV0pO2Zvcih2YXIgZz0wLHA9ci10LHg9W10sZj0wO2Y8ZS5sZW5ndGgtMTtmKyspe2Zvcih2YXIgdj1lW2ZdLG09ZVtmKzFdLHk9di5kaXN0KG0pLEE9bS5hbmdsZVRvKHYpO3ArdDxnK3k7KXtwKz10O3ZhciBkPShwLWcpL3ksaz1pbnRlcnBvbGF0ZSh2LngsbS54LGQpLHE9aW50ZXJwb2xhdGUodi55LG0ueSxkKTtpZihrPj0wJiZrPGMmJnE+PTAmJnE8YyYmcC1oPj0wJiZwK2g8PXMpe3ZhciBNPW5ldyBBbmNob3IoayxxLEEsZik7TS5fcm91bmQoKSxuJiYhY2hlY2tNYXhBbmdsZShlLE0sbCxuLGEpfHx4LnB1c2goTSl9fWcrPXl9cmV0dXJuIGl8fHgubGVuZ3RofHxvfHwoeD1yZXNhbXBsZShlLGcvMix0LG4sYSxsLG8sITAsYykpLHh9dmFyIGludGVycG9sYXRlPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL3V0aWwvaW50ZXJwb2xhdGVcIiksQW5jaG9yPV9kZXJlcV8oXCIuLi9zeW1ib2wvYW5jaG9yXCIpLGNoZWNrTWF4QW5nbGU9X2RlcmVxXyhcIi4vY2hlY2tfbWF4X2FuZ2xlXCIpO21vZHVsZS5leHBvcnRzPWdldEFuY2hvcnM7XG59LHtcIi4uL3N0eWxlLXNwZWMvdXRpbC9pbnRlcnBvbGF0ZVwiOjEyNyxcIi4uL3N5bWJvbC9hbmNob3JcIjoxNjcsXCIuL2NoZWNrX21heF9hbmdsZVwiOjE2OH1dLDE3NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe2cucHVzaChlW3RdKSxsKyt9ZnVuY3Rpb24gcihlLHQscil7dmFyIG49dVtlXTtyZXR1cm4gZGVsZXRlIHVbZV0sdVt0XT1uLGdbbl0uZ2VvbWV0cnlbMF0ucG9wKCksZ1tuXS5nZW9tZXRyeVswXT1nW25dLmdlb21ldHJ5WzBdLmNvbmNhdChyWzBdKSxufWZ1bmN0aW9uIG4oZSx0LHIpe3ZhciBuPWlbdF07cmV0dXJuIGRlbGV0ZSBpW3RdLGlbZV09bixnW25dLmdlb21ldHJ5WzBdLnNoaWZ0KCksZ1tuXS5nZW9tZXRyeVswXT1yWzBdLmNvbmNhdChnW25dLmdlb21ldHJ5WzBdKSxufWZ1bmN0aW9uIG8oZSx0LHIpe3ZhciBuPXI/dFswXVt0WzBdLmxlbmd0aC0xXTp0WzBdWzBdO3JldHVybiBlK1wiOlwiK24ueCtcIjpcIituLnl9Zm9yKHZhciBpPXt9LHU9e30sZz1bXSxsPTAsbT0wO208ZS5sZW5ndGg7bSsrKXt2YXIgeT1lW21dLGM9eS5nZW9tZXRyeSxmPXkudGV4dDtpZihmKXt2YXIgYT1vKGYsYykscz1vKGYsYywhMCk7aWYoYSBpbiB1JiZzIGluIGkmJnVbYV0hPT1pW3NdKXt2YXIgdj1uKGEscyxjKSxkPXIoYSxzLGdbdl0uZ2VvbWV0cnkpO2RlbGV0ZSBpW2FdLGRlbGV0ZSB1W3NdLHVbbyhmLGdbZF0uZ2VvbWV0cnksITApXT1kLGdbdl0uZ2VvbWV0cnk9bnVsbH1lbHNlIGEgaW4gdT9yKGEscyxjKTpzIGluIGk/bihhLHMsYyk6KHQobSksaVthXT1sLTEsdVtzXT1sLTEpfWVsc2UgdChtKX1yZXR1cm4gZy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2VvbWV0cnl9KX07XG59LHt9XSwxNzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZ2V0TGFiZWxQbGFuZU1hdHJpeChlLHQsYSxuLHIpe3ZhciBpPW1hdDQuaWRlbnRpdHkobmV3IEZsb2F0MzJBcnJheSgxNikpO3JldHVybiB0PyhtYXQ0LmlkZW50aXR5KGkpLG1hdDQuc2NhbGUoaSxpLFsxL3IsMS9yLDFdKSxhfHxtYXQ0LnJvdGF0ZVooaSxpLG4uYW5nbGUpKToobWF0NC5zY2FsZShpLGksW24ud2lkdGgvMiwtbi5oZWlnaHQvMiwxXSksbWF0NC50cmFuc2xhdGUoaSxpLFsxLC0xLDBdKSxtYXQ0Lm11bHRpcGx5KGksaSxlKSksaX1mdW5jdGlvbiBnZXRHbENvb3JkTWF0cml4KGUsdCxhLG4scil7dmFyIGk9bWF0NC5pZGVudGl0eShuZXcgRmxvYXQzMkFycmF5KDE2KSk7cmV0dXJuIHQ/KG1hdDQubXVsdGlwbHkoaSxpLGUpLG1hdDQuc2NhbGUoaSxpLFtyLHIsMV0pLGF8fG1hdDQucm90YXRlWihpLGksLW4uYW5nbGUpKToobWF0NC5zY2FsZShpLGksWzEsLTEsMV0pLG1hdDQudHJhbnNsYXRlKGksaSxbLTEsLTEsMF0pLG1hdDQuc2NhbGUoaSxpLFsyL24ud2lkdGgsMi9uLmhlaWdodCwxXSkpLGl9ZnVuY3Rpb24gcHJvamVjdChlLHQpe3ZhciBhPVtlLngsZS55LDAsMV07dmVjNC50cmFuc2Zvcm1NYXQ0KGEsYSx0KTt2YXIgbj1hWzNdO3JldHVybntwb2ludDpuZXcgUG9pbnQoYVswXS9uLGFbMV0vbiksc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhOm59fWZ1bmN0aW9uIGlzVmlzaWJsZShlLHQsYSxuKXt2YXIgcj1lWzBdL2VbM10saT1lWzFdL2VbM107cmV0dXJuIHI+PS1hWzBdJiZyPD1hWzBdJiZpPj0tYVsxXSYmaTw9YVsxXSYmbi5mcmFtZUhpc3RvcnkuaXNWaXNpYmxlKHQpfWZ1bmN0aW9uIHVwZGF0ZUxpbmVMYWJlbHMoZSx0LGEsbixyLGksbyxsLHMscCl7dmFyIG09bj9lLnRleHRTaXplRGF0YTplLmljb25TaXplRGF0YSxjPXN5bWJvbFNpemUuZXZhbHVhdGVTaXplRm9yWm9vbShtLGEudHJhbnNmb3JtLHAsbiksdT1bMjU2L2Eud2lkdGgqMisxLDI1Ni9hLmhlaWdodCoyKzFdLHk9bj9lLnRleHQuZHluYW1pY0xheW91dFZlcnRleEFycmF5OmUuaWNvbi5keW5hbWljTGF5b3V0VmVydGV4QXJyYXk7eS5jbGVhcigpO2Zvcih2YXIgZz1lLmxpbmVWZXJ0ZXhBcnJheSxkPW4/ZS5wbGFjZWRHbHlwaEFycmF5OmUucGxhY2VkSWNvbkFycmF5LGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGg9ZC5nZXQoZikseD1baC5hbmNob3JYLGguYW5jaG9yWSwwLDFdO2lmKHZlYzQudHJhbnNmb3JtTWF0NCh4LHgsdCksaXNWaXNpYmxlKHgsaC5wbGFjZW1lbnRab29tLHUsYSkpe3ZhciB2PXhbM10sYj0xKy41Kih2L2EudHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UtMSksTD1zeW1ib2xTaXplLmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUobSxjLGgpLEE9bz9MKmI6TC9iLEc9bmV3IFBvaW50KGguYW5jaG9yWCxoLmFuY2hvclkpLFM9cHJvamVjdChHLHIpLnBvaW50LFA9e30sRD1wbGFjZUdseXBoc0Fsb25nTGluZShoLEEsITEsbCx0LHIsaSxlLmdseXBoT2Zmc2V0QXJyYXksZyx5LFMsRyxQKTsoRC5ub3RFbm91Z2hSb29tfHxELm5lZWRzRmxpcHBpbmcmJnBsYWNlR2x5cGhzQWxvbmdMaW5lKGgsQSwhMCxsLHQscixpLGUuZ2x5cGhPZmZzZXRBcnJheSxnLHksUyxHLFApLm5vdEVub3VnaFJvb20pJiZoaWRlR2x5cGhzKGgubnVtR2x5cGhzLHkpfWVsc2UgaGlkZUdseXBocyhoLm51bUdseXBocyx5KX1uP2UudGV4dC5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoeS5zZXJpYWxpemUoKSk6ZS5pY29uLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh5LnNlcmlhbGl6ZSgpKX1mdW5jdGlvbiBwbGFjZUdseXBoc0Fsb25nTGluZShlLHQsYSxuLHIsaSxvLGwscyxwLG0sYyx1KXt2YXIgeSxnPXQvMjQsZD1lLmxpbmVPZmZzZXRYKnQsZj1lLmxpbmVPZmZzZXRZKnQ7aWYoZS5udW1HbHlwaHM+MSl7dmFyIGg9ZS5nbHlwaFN0YXJ0SW5kZXgrZS5udW1HbHlwaHMseD1sLmdldChlLmdseXBoU3RhcnRJbmRleCkub2Zmc2V0WCx2PWwuZ2V0KGgtMSkub2Zmc2V0WCxiPWUubGluZVN0YXJ0SW5kZXgsTD1lLmxpbmVTdGFydEluZGV4K2UubGluZUxlbmd0aCxBPXBsYWNlR2x5cGhBbG9uZ0xpbmUoZyp4LGQsZixhLG0sYyxlLnNlZ21lbnQsYixMLHMsaSx1KTtpZighQSlyZXR1cm57bm90RW5vdWdoUm9vbTohMH07dmFyIEc9cGxhY2VHbHlwaEFsb25nTGluZShnKnYsZCxmLGEsbSxjLGUuc2VnbWVudCxiLEwscyxpLHUpO2lmKCFHKXJldHVybntub3RFbm91Z2hSb29tOiEwfTt2YXIgUz1wcm9qZWN0KEEucG9pbnQsbykucG9pbnQsUD1wcm9qZWN0KEcucG9pbnQsbykucG9pbnQ7aWYobiYmIWEmJihlLnZlcnRpY2FsP1MueTxQLnk6Uy54PlAueCkpcmV0dXJue25lZWRzRmxpcHBpbmc6ITB9O3k9W0FdO2Zvcih2YXIgRD1lLmdseXBoU3RhcnRJbmRleCsxO0Q8aC0xO0QrKyl7dmFyIEk9bC5nZXQoRCk7eS5wdXNoKHBsYWNlR2x5cGhBbG9uZ0xpbmUoZypJLm9mZnNldFgsZCxmLGEsbSxjLGUuc2VnbWVudCxiLEwscyxpLHUpKX15LnB1c2goRyl9ZWxzZXtpZihuJiYhYSl7dmFyIE09cHJvamVjdChjLHIpLnBvaW50LGo9cy5nZXQoZS5saW5lU3RhcnRJbmRleCtlLnNlZ21lbnQrMSksdz1wcm9qZWN0KGosciksRj13LnNpZ25lZERpc3RhbmNlRnJvbUNhbWVyYT4wP3cucG9pbnQ6cHJvamVjdFRydW5jYXRlZExpbmVTZWdtZW50KGMsbmV3IFBvaW50KGoueCxqLnkpLE0sMSxyKTtpZihlLnZlcnRpY2FsP0YueT5NLnk6Ri54PE0ueClyZXR1cm57bmVlZHNGbGlwcGluZzohMH19dmFyIHo9bC5nZXQoZS5nbHlwaFN0YXJ0SW5kZXgpLF89cGxhY2VHbHlwaEFsb25nTGluZShnKnoub2Zmc2V0WCxkLGYsYSxtLGMsZS5zZWdtZW50LGUubGluZVN0YXJ0SW5kZXgsZS5saW5lU3RhcnRJbmRleCtlLmxpbmVMZW5ndGgscyxpLHUpO2lmKCFfKXJldHVybntub3RFbm91Z2hSb29tOiEwfTt5PVtfXX1mb3IodmFyIFY9ZS5wbGFjZW1lbnRab29tLEM9MCxYPXk7QzxYLmxlbmd0aDtDKz0xKXt2YXIgRT1YW0NdO2FkZER5bmFtaWNBdHRyaWJ1dGVzKHAsRS5wb2ludCxFLmFuZ2xlLFYpfXJldHVybnt9fWZ1bmN0aW9uIHByb2plY3RUcnVuY2F0ZWRMaW5lU2VnbWVudChlLHQsYSxuLHIpe3ZhciBpPXByb2plY3QoZS5hZGQoZS5zdWIodCkuX3VuaXQoKSkscikucG9pbnQsbz1hLnN1YihpKTtyZXR1cm4gYS5hZGQoby5fbXVsdChuL28ubWFnKCkpKX1mdW5jdGlvbiBwbGFjZUdseXBoQWxvbmdMaW5lKGUsdCxhLG4scixpLG8sbCxzLHAsbSxjKXt2YXIgdT1uP2UtdDplK3QseT11PjA/MTotMSxnPTA7biYmKHkqPS0xLGc9TWF0aC5QSSkseTwwJiYoZys9TWF0aC5QSSk7Zm9yKHZhciBkPXk+MD9sK286bCtvKzEsZj1yLGg9cix4PTAsdj0wLGI9TWF0aC5hYnModSk7eCt2PD1iOyl7aWYoKGQrPXkpPGx8fGQ+PXMpcmV0dXJuIG51bGw7aWYoaD1mLHZvaWQgMD09PShmPWNbZF0pKXt2YXIgTD1wcm9qZWN0KHAuZ2V0KGQpLG0pO2lmKEwuc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPjApZj1jW2RdPUwucG9pbnQ7ZWxzZXtmPXByb2plY3RUcnVuY2F0ZWRMaW5lU2VnbWVudCgwPT09eD9pOm5ldyBQb2ludChwLmdldChkLXkpLngscC5nZXQoZC15KS55KSxuZXcgUG9pbnQocC5nZXQoZCkueCxwLmdldChkKS55KSxoLGIteCsxLG0pfX14Kz12LHY9aC5kaXN0KGYpfXZhciBBPShiLXgpL3YsRz1mLnN1YihoKSxTPUcubXVsdChBKS5fYWRkKGgpO3JldHVybiBTLl9hZGQoRy5fdW5pdCgpLl9wZXJwKCkuX211bHQoYSp5KSkse3BvaW50OlMsYW5nbGU6ZytNYXRoLmF0YW4yKGYueS1oLnksZi54LWgueCl9fWZ1bmN0aW9uIGhpZGVHbHlwaHMoZSx0KXtmb3IodmFyIGE9MDthPGU7YSsrKWFkZER5bmFtaWNBdHRyaWJ1dGVzKHQsb2Zmc2NyZWVuUG9pbnQsMCwyNSl9dmFyIFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLHJlZj1fZGVyZXFfKFwiQG1hcGJveC9nbC1tYXRyaXhcIiksbWF0ND1yZWYubWF0NCx2ZWM0PXJlZi52ZWM0LHN5bWJvbFNpemU9X2RlcmVxXyhcIi4vc3ltYm9sX3NpemVcIikscmVmJDE9X2RlcmVxXyhcIi4uL2RhdGEvYnVja2V0L3N5bWJvbF9idWNrZXRcIiksYWRkRHluYW1pY0F0dHJpYnV0ZXM9cmVmJDEuYWRkRHluYW1pY0F0dHJpYnV0ZXM7bW9kdWxlLmV4cG9ydHM9e3VwZGF0ZUxpbmVMYWJlbHM6dXBkYXRlTGluZUxhYmVscyxnZXRMYWJlbFBsYW5lTWF0cml4OmdldExhYmVsUGxhbmVNYXRyaXgsZ2V0R2xDb29yZE1hdHJpeDpnZXRHbENvb3JkTWF0cml4fTt2YXIgb2Zmc2NyZWVuUG9pbnQ9bmV3IFBvaW50KC0xLzAsLTEvMCk7XG59LHtcIi4uL2RhdGEvYnVja2V0L3N5bWJvbF9idWNrZXRcIjo0NyxcIi4vc3ltYm9sX3NpemVcIjoxNzgsXCJAbWFwYm94L2dsLW1hdHJpeFwiOjEsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDE3NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBnZXRJY29uUXVhZHModCxlLGksbyxuLGEscil7dmFyIHUsbCxkLGYsYz1lLmltYWdlLGg9aS5sYXlvdXQseD1lLnRvcC0xL2MucGl4ZWxSYXRpbyxnPWUubGVmdC0xL2MucGl4ZWxSYXRpbyxwPWUuYm90dG9tKzEvYy5waXhlbFJhdGlvLHM9ZS5yaWdodCsxL2MucGl4ZWxSYXRpbztpZihcIm5vbmVcIiE9PWhbXCJpY29uLXRleHQtZml0XCJdJiZuKXt2YXIgUD1zLWcsXz1wLXgsdz1oW1widGV4dC1zaXplXCJdLzI0LG09bi5sZWZ0KncseT1uLnJpZ2h0KncsTT1uLnRvcCp3LHY9bi5ib3R0b20qdyxSPXktbSxiPXYtTSxHPWhbXCJpY29uLXRleHQtZml0LXBhZGRpbmdcIl1bMF0sQj1oW1wiaWNvbi10ZXh0LWZpdC1wYWRkaW5nXCJdWzFdLEk9aFtcImljb24tdGV4dC1maXQtcGFkZGluZ1wiXVsyXSxMPWhbXCJpY29uLXRleHQtZml0LXBhZGRpbmdcIl1bM10sUT1cIndpZHRoXCI9PT1oW1wiaWNvbi10ZXh0LWZpdFwiXT8uNSooYi1fKTowLE89XCJoZWlnaHRcIj09PWhbXCJpY29uLXRleHQtZml0XCJdPy41KihSLVApOjAsQT1cIndpZHRoXCI9PT1oW1wiaWNvbi10ZXh0LWZpdFwiXXx8XCJib3RoXCI9PT1oW1wiaWNvbi10ZXh0LWZpdFwiXT9SOlAsRD1cImhlaWdodFwiPT09aFtcImljb24tdGV4dC1maXRcIl18fFwiYm90aFwiPT09aFtcImljb24tdGV4dC1maXRcIl0/YjpfO3U9bmV3IFBvaW50KG0rTy1MLE0rUS1HKSxsPW5ldyBQb2ludChtK08rQitBLE0rUS1HKSxkPW5ldyBQb2ludChtK08rQitBLE0rUStJK0QpLGY9bmV3IFBvaW50KG0rTy1MLE0rUStJK0QpfWVsc2UgdT1uZXcgUG9pbnQoZyx4KSxsPW5ldyBQb2ludChzLHgpLGQ9bmV3IFBvaW50KHMscCksZj1uZXcgUG9pbnQoZyxwKTt2YXIgRT1pLmdldExheW91dFZhbHVlKFwiaWNvbi1yb3RhdGVcIixhLHIpKk1hdGguUEkvMTgwO2lmKEUpe3ZhciBGPU1hdGguc2luKEUpLEg9TWF0aC5jb3MoRSksVj1bSCwtRixGLEhdO3UuX21hdE11bHQoViksbC5fbWF0TXVsdChWKSxmLl9tYXRNdWx0KFYpLGQuX21hdE11bHQoVil9cmV0dXJuW3t0bDp1LHRyOmwsYmw6ZixicjpkLHRleDp7eDpjLnRleHR1cmVSZWN0LngtMSx5OmMudGV4dHVyZVJlY3QueS0xLHc6Yy50ZXh0dXJlUmVjdC53KzIsaDpjLnRleHR1cmVSZWN0LmgrMn0sd3JpdGluZ01vZGU6dm9pZCAwLGdseXBoT2Zmc2V0OlswLDBdfV19ZnVuY3Rpb24gZ2V0R2x5cGhRdWFkcyh0LGUsaSxvLG4sYSxyKXtmb3IodmFyIHU9aS5nZXRMYXlvdXRWYWx1ZShcInRleHQtcm90YXRlXCIsbixhKSpNYXRoLlBJLzE4MCxsPWkuZ2V0TGF5b3V0VmFsdWUoXCJ0ZXh0LW9mZnNldFwiLG4sYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiAyNCp0fSksZD1lLnBvc2l0aW9uZWRHbHlwaHMsZj1bXSxjPTA7YzxkLmxlbmd0aDtjKyspe3ZhciBoPWRbY10seD1yW2guZ2x5cGhdO2lmKHgpe3ZhciBnPXgucmVjdDtpZihnKXt2YXIgcD1HTFlQSF9QQkZfQk9SREVSKzEscz14Lm1ldHJpY3MuYWR2YW5jZS8yLFA9bz9baC54K3MsaC55XTpbMCwwXSxfPW8/WzAsMF06W2gueCtzK2xbMF0saC55K2xbMV1dLHc9eC5tZXRyaWNzLmxlZnQtcC1zK19bMF0sbT0teC5tZXRyaWNzLnRvcC1wK19bMV0seT13K2cudyxNPW0rZy5oLHY9bmV3IFBvaW50KHcsbSksUj1uZXcgUG9pbnQoeSxtKSxiPW5ldyBQb2ludCh3LE0pLEc9bmV3IFBvaW50KHksTSk7aWYobyYmaC52ZXJ0aWNhbCl7dmFyIEI9bmV3IFBvaW50KC1zLHMpLEk9LU1hdGguUEkvMixMPW5ldyBQb2ludCg1LDApO3YuX3JvdGF0ZUFyb3VuZChJLEIpLl9hZGQoTCksUi5fcm90YXRlQXJvdW5kKEksQikuX2FkZChMKSxiLl9yb3RhdGVBcm91bmQoSSxCKS5fYWRkKEwpLEcuX3JvdGF0ZUFyb3VuZChJLEIpLl9hZGQoTCl9aWYodSl7dmFyIFE9TWF0aC5zaW4odSksTz1NYXRoLmNvcyh1KSxBPVtPLC1RLFEsT107di5fbWF0TXVsdChBKSxSLl9tYXRNdWx0KEEpLGIuX21hdE11bHQoQSksRy5fbWF0TXVsdChBKX1mLnB1c2goe3RsOnYsdHI6UixibDpiLGJyOkcsdGV4Omcsd3JpdGluZ01vZGU6ZS53cml0aW5nTW9kZSxnbHlwaE9mZnNldDpQfSl9fX1yZXR1cm4gZn12YXIgUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIikscmVmPV9kZXJlcV8oXCIuLi9zdHlsZS9wYXJzZV9nbHlwaF9wYmZcIiksR0xZUEhfUEJGX0JPUkRFUj1yZWYuR0xZUEhfUEJGX0JPUkRFUjttb2R1bGUuZXhwb3J0cz17Z2V0SWNvblF1YWRzOmdldEljb25RdWFkcyxnZXRHbHlwaFF1YWRzOmdldEdseXBoUXVhZHN9O1xufSx7XCIuLi9zdHlsZS9wYXJzZV9nbHlwaF9wYmZcIjoxNTQsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDE3NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBicmVha0xpbmVzKGUsdCl7Zm9yKHZhciBhPVtdLHI9MCxpPTAsbj10O2k8bi5sZW5ndGg7aSs9MSl7dmFyIGw9bltpXTthLnB1c2goZS5zdWJzdHJpbmcocixsKSkscj1sfXJldHVybiByPGUubGVuZ3RoJiZhLnB1c2goZS5zdWJzdHJpbmcocixlLmxlbmd0aCkpLGF9ZnVuY3Rpb24gc2hhcGVUZXh0KGUsdCxhLHIsaSxuLGwsYyxvLHMpe3ZhciBoPWUudHJpbSgpO3M9PT1Xcml0aW5nTW9kZS52ZXJ0aWNhbCYmKGg9dmVydGljYWxpemVQdW5jdHVhdGlvbihoKSk7dmFyIGcsdT1bXSxwPXtwb3NpdGlvbmVkR2x5cGhzOnUsdGV4dDpoLHRvcDpjWzFdLGJvdHRvbTpjWzFdLGxlZnQ6Y1swXSxyaWdodDpjWzBdLHdyaXRpbmdNb2RlOnN9LGI9cnRsVGV4dFBsdWdpbi5wcm9jZXNzQmlkaXJlY3Rpb25hbFRleHQ7cmV0dXJuIGc9Yj9iKGgsZGV0ZXJtaW5lTGluZUJyZWFrcyhoLGwsYSx0KSk6YnJlYWtMaW5lcyhoLGRldGVybWluZUxpbmVCcmVha3MoaCxsLGEsdCkpLHNoYXBlTGluZXMocCx0LGcscixpLG4scyxsLG8pLCEhdS5sZW5ndGgmJnB9ZnVuY3Rpb24gZGV0ZXJtaW5lQXZlcmFnZUxpbmVXaWR0aChlLHQsYSxyKXtmb3IodmFyIGk9MCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBsPXJbZS5jaGFyQ29kZUF0KG4pXTtsJiYoaSs9bC5tZXRyaWNzLmFkdmFuY2UrdCl9cmV0dXJuIGkvTWF0aC5tYXgoMSxNYXRoLmNlaWwoaS9hKSl9ZnVuY3Rpb24gY2FsY3VsYXRlQmFkbmVzcyhlLHQsYSxyKXt2YXIgaT1NYXRoLnBvdyhlLXQsMik7cmV0dXJuIHI/ZTx0P2kvMjoyKmk6aStNYXRoLmFicyhhKSphfWZ1bmN0aW9uIGNhbGN1bGF0ZVBlbmFsdHkoZSx0KXt2YXIgYT0wO3JldHVybiAxMD09PWUmJihhLT0xZTQpLDQwIT09ZSYmNjUyODghPT1lfHwoYSs9NTApLDQxIT09dCYmNjUyODkhPT10fHwoYSs9NTApLGF9ZnVuY3Rpb24gZXZhbHVhdGVCcmVhayhlLHQsYSxyLGksbil7Zm9yKHZhciBsPW51bGwsYz1jYWxjdWxhdGVCYWRuZXNzKHQsYSxpLG4pLG89MCxzPXI7bzxzLmxlbmd0aDtvKz0xKXt2YXIgaD1zW29dLGc9dC1oLngsdT1jYWxjdWxhdGVCYWRuZXNzKGcsYSxpLG4pK2guYmFkbmVzczt1PD1jJiYobD1oLGM9dSl9cmV0dXJue2luZGV4OmUseDp0LHByaW9yQnJlYWs6bCxiYWRuZXNzOmN9fWZ1bmN0aW9uIGxlYXN0QmFkQnJlYWtzKGUpe3JldHVybiBlP2xlYXN0QmFkQnJlYWtzKGUucHJpb3JCcmVhaykuY29uY2F0KGUuaW5kZXgpOltdfWZ1bmN0aW9uIGRldGVybWluZUxpbmVCcmVha3MoZSx0LGEscil7aWYoIWEpcmV0dXJuW107aWYoIWUpcmV0dXJuW107Zm9yKHZhciBpPVtdLG49ZGV0ZXJtaW5lQXZlcmFnZUxpbmVXaWR0aChlLHQsYSxyKSxsPTAsYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgbz1lLmNoYXJDb2RlQXQoYykscz1yW29dO3MmJiF3aGl0ZXNwYWNlW29dJiYobCs9cy5tZXRyaWNzLmFkdmFuY2UrdCksYzxlLmxlbmd0aC0xJiYoYnJlYWthYmxlW29dfHxzY3JpcHREZXRlY3Rpb24uY2hhckFsbG93c0lkZW9ncmFwaGljQnJlYWtpbmcobykpJiZpLnB1c2goZXZhbHVhdGVCcmVhayhjKzEsbCxuLGksY2FsY3VsYXRlUGVuYWx0eShvLGUuY2hhckNvZGVBdChjKzEpKSwhMSkpfXJldHVybiBsZWFzdEJhZEJyZWFrcyhldmFsdWF0ZUJyZWFrKGUubGVuZ3RoLGwsbixpLDAsITApKX1mdW5jdGlvbiBnZXRBbmNob3JBbGlnbm1lbnQoZSl7dmFyIHQ9LjUsYT0uNTtzd2l0Y2goZSl7Y2FzZVwicmlnaHRcIjpjYXNlXCJ0b3AtcmlnaHRcIjpjYXNlXCJib3R0b20tcmlnaHRcIjp0PTE7YnJlYWs7Y2FzZVwibGVmdFwiOmNhc2VcInRvcC1sZWZ0XCI6Y2FzZVwiYm90dG9tLWxlZnRcIjp0PTB9c3dpdGNoKGUpe2Nhc2VcImJvdHRvbVwiOmNhc2VcImJvdHRvbS1yaWdodFwiOmNhc2VcImJvdHRvbS1sZWZ0XCI6YT0xO2JyZWFrO2Nhc2VcInRvcFwiOmNhc2VcInRvcC1yaWdodFwiOmNhc2VcInRvcC1sZWZ0XCI6YT0wfXJldHVybntob3Jpem9udGFsQWxpZ246dCx2ZXJ0aWNhbEFsaWduOmF9fWZ1bmN0aW9uIHNoYXBlTGluZXMoZSx0LGEscixpLG4sbCxjLG8pe2Zvcih2YXIgcz0wLGg9LTE3LGc9MCx1PWUucG9zaXRpb25lZEdseXBocyxwPVwicmlnaHRcIj09PW4/MTpcImxlZnRcIj09PW4/MDouNSxiPTAsdj1hO2I8di5sZW5ndGg7Yis9MSl7dmFyIGQ9dltiXTtpZihkPWQudHJpbSgpLGQubGVuZ3RoKXtmb3IodmFyIGY9dS5sZW5ndGgsaz0wO2s8ZC5sZW5ndGg7aysrKXt2YXIgbT1kLmNoYXJDb2RlQXQoaykseD10W21dO3gmJihzY3JpcHREZXRlY3Rpb24uY2hhckhhc1VwcmlnaHRWZXJ0aWNhbE9yaWVudGF0aW9uKG0pJiZsIT09V3JpdGluZ01vZGUuaG9yaXpvbnRhbD8odS5wdXNoKHtnbHlwaDptLHg6cyx5OjAsdmVydGljYWw6ITB9KSxzKz1vK2MpOih1LnB1c2goe2dseXBoOm0seDpzLHk6aCx2ZXJ0aWNhbDohMX0pLHMrPXgubWV0cmljcy5hZHZhbmNlK2MpKX1pZih1Lmxlbmd0aCE9PWYpe3ZhciBBPXMtYztnPU1hdGgubWF4KEEsZyksanVzdGlmeUxpbmUodSx0LGYsdS5sZW5ndGgtMSxwKX1zPTAsaCs9cn1lbHNlIGgrPXJ9dmFyIEI9Z2V0QW5jaG9yQWxpZ25tZW50KGkpLHk9Qi5ob3Jpem9udGFsQWxpZ24sdz1CLnZlcnRpY2FsQWxpZ247YWxpZ24odSxwLHksdyxnLHIsYS5sZW5ndGgpO3ZhciB6PWEubGVuZ3RoKnI7ZS50b3ArPS13KnosZS5ib3R0b209ZS50b3AreixlLmxlZnQrPS15KmcsZS5yaWdodD1lLmxlZnQrZ31mdW5jdGlvbiBqdXN0aWZ5TGluZShlLHQsYSxyLGkpe2lmKGkpe3ZhciBuPXRbZVtyXS5nbHlwaF07aWYobilmb3IodmFyIGw9bi5tZXRyaWNzLmFkdmFuY2UsYz0oZVtyXS54K2wpKmksbz1hO288PXI7bysrKWVbb10ueC09Y319ZnVuY3Rpb24gYWxpZ24oZSx0LGEscixpLG4sbCl7Zm9yKHZhciBjPSh0LWEpKmksbz0oLXIqbCsuNSkqbixzPTA7czxlLmxlbmd0aDtzKyspZVtzXS54Kz1jLGVbc10ueSs9b31mdW5jdGlvbiBzaGFwZUljb24oZSx0LGEpe3ZhciByPWdldEFuY2hvckFsaWdubWVudChhKSxpPXIuaG9yaXpvbnRhbEFsaWduLG49ci52ZXJ0aWNhbEFsaWduLGw9dFswXSxjPXRbMV0sbz1sLWUuZGlzcGxheVNpemVbMF0qaSxzPW8rZS5kaXNwbGF5U2l6ZVswXSxoPWMtZS5kaXNwbGF5U2l6ZVsxXSpuO3JldHVybntpbWFnZTplLHRvcDpoLGJvdHRvbTpoK2UuZGlzcGxheVNpemVbMV0sbGVmdDpvLHJpZ2h0OnN9fXZhciBzY3JpcHREZXRlY3Rpb249X2RlcmVxXyhcIi4uL3V0aWwvc2NyaXB0X2RldGVjdGlvblwiKSx2ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uPV9kZXJlcV8oXCIuLi91dGlsL3ZlcnRpY2FsaXplX3B1bmN0dWF0aW9uXCIpLHJ0bFRleHRQbHVnaW49X2RlcmVxXyhcIi4uL3NvdXJjZS9ydGxfdGV4dF9wbHVnaW5cIiksV3JpdGluZ01vZGU9e2hvcml6b250YWw6MSx2ZXJ0aWNhbDoyfTttb2R1bGUuZXhwb3J0cz17c2hhcGVUZXh0OnNoYXBlVGV4dCxzaGFwZUljb246c2hhcGVJY29uLFdyaXRpbmdNb2RlOldyaXRpbmdNb2RlfTt2YXIgd2hpdGVzcGFjZT17fTt3aGl0ZXNwYWNlWzldPSEwLHdoaXRlc3BhY2VbMTBdPSEwLHdoaXRlc3BhY2VbMTFdPSEwLHdoaXRlc3BhY2VbMTJdPSEwLHdoaXRlc3BhY2VbMTNdPSEwLHdoaXRlc3BhY2VbMzJdPSEwO3ZhciBicmVha2FibGU9e307YnJlYWthYmxlWzEwXT0hMCxicmVha2FibGVbMzJdPSEwLGJyZWFrYWJsZVszOF09ITAsYnJlYWthYmxlWzQwXT0hMCxicmVha2FibGVbNDFdPSEwLGJyZWFrYWJsZVs0M109ITAsYnJlYWthYmxlWzQ1XT0hMCxicmVha2FibGVbNDddPSEwLGJyZWFrYWJsZVsxNzNdPSEwLGJyZWFrYWJsZVsxODNdPSEwLGJyZWFrYWJsZVs4MjAzXT0hMCxicmVha2FibGVbODIwOF09ITAsYnJlYWthYmxlWzgyMTFdPSEwLGJyZWFrYWJsZVs4MjMxXT0hMDtcbn0se1wiLi4vc291cmNlL3J0bF90ZXh0X3BsdWdpblwiOjk2LFwiLi4vdXRpbC9zY3JpcHRfZGV0ZWN0aW9uXCI6MjE4LFwiLi4vdXRpbC92ZXJ0aWNhbGl6ZV9wdW5jdHVhdGlvblwiOjIyNX1dLDE3ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBldmFsdWF0ZVNpemVGb3JGZWF0dXJlKGUsbyx0KXt2YXIgaT1vO3JldHVybiBlLmlzRmVhdHVyZUNvbnN0YW50P2kudVNpemU6ZS5pc1pvb21Db25zdGFudD90Lmxvd2VyU2l6ZS8xMDppbnRlcnBvbGF0ZS5udW1iZXIodC5sb3dlclNpemUvMTAsdC51cHBlclNpemUvMTAsaS51U2l6ZVQpfWZ1bmN0aW9uIGV2YWx1YXRlU2l6ZUZvclpvb20oZSxvLHQsaSl7dmFyIGE9e307aWYoZS5pc1pvb21Db25zdGFudHx8ZS5pc0ZlYXR1cmVDb25zdGFudClpZihlLmlzRmVhdHVyZUNvbnN0YW50JiYhZS5pc1pvb21Db25zdGFudCl7dmFyIG47aWYoXCJpbnRlcnZhbFwiPT09ZS5mdW5jdGlvblR5cGUpbj10LmdldExheW91dFZhbHVlKGk/XCJ0ZXh0LXNpemVcIjpcImljb24tc2l6ZVwiLHt6b29tOm8uem9vbX0pO2Vsc2V7dmFyIHI9XCJpbnRlcnZhbFwiPT09ZS5mdW5jdGlvblR5cGU/MDppbnRlcnBvbGF0aW9uRmFjdG9yKG8uem9vbSxlLmZ1bmN0aW9uQmFzZSxlLmNvdmVyaW5nWm9vbVJhbmdlWzBdLGUuY292ZXJpbmdab29tUmFuZ2VbMV0pLHU9ZS5jb3ZlcmluZ1N0b3BWYWx1ZXNbMF0sbD1lLmNvdmVyaW5nU3RvcFZhbHVlc1sxXTtuPXUrKGwtdSkqdXRpbC5jbGFtcChyLDAsMSl9YS51U2l6ZT1ufWVsc2UgZS5pc0ZlYXR1cmVDb25zdGFudCYmZS5pc1pvb21Db25zdGFudCYmKGEudVNpemU9ZS5sYXlvdXRTaXplKTtlbHNle3ZhciBzPWludGVycG9sYXRpb25GYWN0b3Ioby56b29tLGUuZnVuY3Rpb25CYXNlLGUuY292ZXJpbmdab29tUmFuZ2VbMF0sZS5jb3ZlcmluZ1pvb21SYW5nZVsxXSk7YS51U2l6ZVQ9dXRpbC5jbGFtcChzLDAsMSl9cmV0dXJuIGF9dmFyIGludGVycG9sYXRlPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL3V0aWwvaW50ZXJwb2xhdGVcIikscmVmPV9kZXJlcV8oXCIuLi9zdHlsZS1zcGVjL2Z1bmN0aW9uXCIpLGludGVycG9sYXRpb25GYWN0b3I9cmVmLmludGVycG9sYXRpb25GYWN0b3IsdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpO21vZHVsZS5leHBvcnRzPXtldmFsdWF0ZVNpemVGb3JGZWF0dXJlOmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUsZXZhbHVhdGVTaXplRm9yWm9vbTpldmFsdWF0ZVNpemVGb3Jab29tfTtcbn0se1wiLi4vc3R5bGUtc3BlYy9mdW5jdGlvblwiOjExMixcIi4uL3N0eWxlLXNwZWMvdXRpbC9pbnRlcnBvbGF0ZVwiOjEyNyxcIi4uL3V0aWwvdXRpbFwiOjIyM31dLDE3OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgcnRsVGV4dFBsdWdpbj1fZGVyZXFfKFwiLi4vc291cmNlL3J0bF90ZXh0X3BsdWdpblwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlLHIsdCxhKXt2YXIgbD1yLmdldExheW91dFZhbHVlKFwidGV4dC10cmFuc2Zvcm1cIix0LGEpO3JldHVyblwidXBwZXJjYXNlXCI9PT1sP2U9ZS50b0xvY2FsZVVwcGVyQ2FzZSgpOlwibG93ZXJjYXNlXCI9PT1sJiYoZT1lLnRvTG9jYWxlTG93ZXJDYXNlKCkpLHJ0bFRleHRQbHVnaW4uYXBwbHlBcmFiaWNTaGFwaW5nJiYoZT1ydGxUZXh0UGx1Z2luLmFwcGx5QXJhYmljU2hhcGluZyhlKSksZX07XG59LHtcIi4uL3NvdXJjZS9ydGxfdGV4dF9wbHVnaW5cIjo5Nn1dLDE4MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRE9NPV9kZXJlcV8oXCIuLi91dGlsL2RvbVwiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxoYW5kbGVycz17c2Nyb2xsWm9vbTpfZGVyZXFfKFwiLi9oYW5kbGVyL3Njcm9sbF96b29tXCIpLGJveFpvb206X2RlcmVxXyhcIi4vaGFuZGxlci9ib3hfem9vbVwiKSxkcmFnUm90YXRlOl9kZXJlcV8oXCIuL2hhbmRsZXIvZHJhZ19yb3RhdGVcIiksZHJhZ1BhbjpfZGVyZXFfKFwiLi9oYW5kbGVyL2RyYWdfcGFuXCIpLGtleWJvYXJkOl9kZXJlcV8oXCIuL2hhbmRsZXIva2V5Ym9hcmRcIiksZG91YmxlQ2xpY2tab29tOl9kZXJlcV8oXCIuL2hhbmRsZXIvZGJsY2xpY2tfem9vbVwiKSx0b3VjaFpvb21Sb3RhdGU6X2RlcmVxXyhcIi4vaGFuZGxlci90b3VjaF96b29tX3JvdGF0ZVwiKX07bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe2goXCJtb3VzZW91dFwiLGUpfWZ1bmN0aW9uIG8odCl7ZS5zdG9wKCksTD1ET00ubW91c2VQb3MoZyx0KSxoKFwibW91c2Vkb3duXCIsdCksRT0hMH1mdW5jdGlvbiByKHQpe3ZhciBuPWUuZHJhZ1JvdGF0ZSYmZS5kcmFnUm90YXRlLmlzQWN0aXZlKCk7cCYmIW4mJmgoXCJjb250ZXh0bWVudVwiLHApLHA9bnVsbCxFPSExLGgoXCJtb3VzZXVwXCIsdCl9ZnVuY3Rpb24gYSh0KXtpZighKGUuZHJhZ1BhbiYmZS5kcmFnUGFuLmlzQWN0aXZlKCl8fGUuZHJhZ1JvdGF0ZSYmZS5kcmFnUm90YXRlLmlzQWN0aXZlKCkpKXtmb3IodmFyIG49dC50b0VsZW1lbnR8fHQudGFyZ2V0O24mJm4hPT1nOyluPW4ucGFyZW50Tm9kZTtuPT09ZyYmaChcIm1vdXNlbW92ZVwiLHQpfX1mdW5jdGlvbiB1KHQpe2Uuc3RvcCgpLGYoXCJ0b3VjaHN0YXJ0XCIsdCksIXQudG91Y2hlc3x8dC50b3VjaGVzLmxlbmd0aD4xfHwoYj8oY2xlYXJUaW1lb3V0KGIpLGI9bnVsbCxoKFwiZGJsY2xpY2tcIix0KSk6Yj1zZXRUaW1lb3V0KGwsMzAwKSl9ZnVuY3Rpb24gaShlKXtmKFwidG91Y2htb3ZlXCIsZSl9ZnVuY3Rpb24gYyhlKXtmKFwidG91Y2hlbmRcIixlKX1mdW5jdGlvbiBkKGUpe2YoXCJ0b3VjaGNhbmNlbFwiLGUpfWZ1bmN0aW9uIGwoKXtiPW51bGx9ZnVuY3Rpb24gcyhlKXtET00ubW91c2VQb3MoZyxlKS5lcXVhbHMoTCkmJmgoXCJjbGlja1wiLGUpfWZ1bmN0aW9uIG0oZSl7aChcImRibGNsaWNrXCIsZSksZS5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIHYodCl7dmFyIG49ZS5kcmFnUm90YXRlJiZlLmRyYWdSb3RhdGUuaXNBY3RpdmUoKTtFfHxuP0UmJihwPXQpOmgoXCJjb250ZXh0bWVudVwiLHQpLHQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBoKHQsbil7dmFyIG89RE9NLm1vdXNlUG9zKGcsbik7cmV0dXJuIGUuZmlyZSh0LHtsbmdMYXQ6ZS51bnByb2plY3QobykscG9pbnQ6byxvcmlnaW5hbEV2ZW50Om59KX1mdW5jdGlvbiBmKHQsbil7dmFyIG89RE9NLnRvdWNoUG9zKGcsbikscj1vLnJlZHVjZShmdW5jdGlvbihlLHQsbixvKXtyZXR1cm4gZS5hZGQodC5kaXYoby5sZW5ndGgpKX0sbmV3IFBvaW50KDAsMCkpO3JldHVybiBlLmZpcmUodCx7bG5nTGF0OmUudW5wcm9qZWN0KHIpLHBvaW50OnIsbG5nTGF0czpvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS51bnByb2plY3QodCl9LHRoaXMpLHBvaW50czpvLG9yaWdpbmFsRXZlbnQ6bn0pfXZhciBnPWUuZ2V0Q2FudmFzQ29udGFpbmVyKCkscD1udWxsLEU9ITEsTD1udWxsLGI9bnVsbDtmb3IodmFyIHEgaW4gaGFuZGxlcnMpZVtxXT1uZXcgaGFuZGxlcnNbcV0oZSx0KSx0LmludGVyYWN0aXZlJiZ0W3FdJiZlW3FdLmVuYWJsZSh0W3FdKTtnLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLG4sITEpLGcuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLG8sITEpLGcuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixyLCExKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixhLCExKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsdSwhMSksZy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIixjLCExKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIixpLCExKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGNhbmNlbFwiLGQsITEpLGcuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIscywhMSksZy5hZGRFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIixtLCExKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLHYsITEpfTtcbn0se1wiLi4vdXRpbC9kb21cIjoyMDksXCIuL2hhbmRsZXIvYm94X3pvb21cIjoxODksXCIuL2hhbmRsZXIvZGJsY2xpY2tfem9vbVwiOjE5MCxcIi4vaGFuZGxlci9kcmFnX3BhblwiOjE5MSxcIi4vaGFuZGxlci9kcmFnX3JvdGF0ZVwiOjE5MixcIi4vaGFuZGxlci9rZXlib2FyZFwiOjE5MyxcIi4vaGFuZGxlci9zY3JvbGxfem9vbVwiOjE5NCxcIi4vaGFuZGxlci90b3VjaF96b29tX3JvdGF0ZVwiOjE5NSxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sMTgxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksaW50ZXJwb2xhdGU9X2RlcmVxXyhcIi4uL3N0eWxlLXNwZWMvdXRpbC9pbnRlcnBvbGF0ZVwiKSxicm93c2VyPV9kZXJlcV8oXCIuLi91dGlsL2Jyb3dzZXJcIiksTG5nTGF0PV9kZXJlcV8oXCIuLi9nZW8vbG5nX2xhdFwiKSxMbmdMYXRCb3VuZHM9X2RlcmVxXyhcIi4uL2dlby9sbmdfbGF0X2JvdW5kc1wiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxFdmVudGVkPV9kZXJlcV8oXCIuLi91dGlsL2V2ZW50ZWRcIiksQ2FtZXJhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxpKXt0LmNhbGwodGhpcyksdGhpcy5tb3Zpbmc9ITEsdGhpcy50cmFuc2Zvcm09ZSx0aGlzLl9iZWFyaW5nU25hcD1pLmJlYXJpbmdTbmFwfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXRDZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uY2VudGVyfSxlLnByb3RvdHlwZS5zZXRDZW50ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5qdW1wVG8oe2NlbnRlcjp0fSxlKX0sZS5wcm90b3R5cGUucGFuQnk9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0PVBvaW50LmNvbnZlcnQodCkubXVsdCgtMSksdGhpcy5wYW5Ubyh0aGlzLnRyYW5zZm9ybS5jZW50ZXIsdXRpbC5leHRlbmQoe29mZnNldDp0fSxlKSxpKX0sZS5wcm90b3R5cGUucGFuVG89ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmVhc2VUbyh1dGlsLmV4dGVuZCh7Y2VudGVyOnR9LGUpLGkpfSxlLnByb3RvdHlwZS5nZXRab29tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLnpvb219LGUucHJvdG90eXBlLnNldFpvb209ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5qdW1wVG8oe3pvb206dH0sZSksdGhpc30sZS5wcm90b3R5cGUuem9vbVRvPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5lYXNlVG8odXRpbC5leHRlbmQoe3pvb206dH0sZSksaSl9LGUucHJvdG90eXBlLnpvb21Jbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnpvb21Ubyh0aGlzLmdldFpvb20oKSsxLHQsZSksdGhpc30sZS5wcm90b3R5cGUuem9vbU91dD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnpvb21Ubyh0aGlzLmdldFpvb20oKS0xLHQsZSksdGhpc30sZS5wcm90b3R5cGUuZ2V0QmVhcmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5iZWFyaW5nfSxlLnByb3RvdHlwZS5zZXRCZWFyaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuanVtcFRvKHtiZWFyaW5nOnR9LGUpLHRoaXN9LGUucHJvdG90eXBlLnJvdGF0ZVRvPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5lYXNlVG8odXRpbC5leHRlbmQoe2JlYXJpbmc6dH0sZSksaSl9LGUucHJvdG90eXBlLnJlc2V0Tm9ydGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yb3RhdGVUbygwLHV0aWwuZXh0ZW5kKHtkdXJhdGlvbjoxZTN9LHQpLGUpLHRoaXN9LGUucHJvdG90eXBlLnNuYXBUb05vcnRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYWJzKHRoaXMuZ2V0QmVhcmluZygpKTx0aGlzLl9iZWFyaW5nU25hcD90aGlzLnJlc2V0Tm9ydGgodCxlKTp0aGlzfSxlLnByb3RvdHlwZS5nZXRQaXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5waXRjaH0sZS5wcm90b3R5cGUuc2V0UGl0Y2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5qdW1wVG8oe3BpdGNoOnR9LGUpLHRoaXN9LGUucHJvdG90eXBlLmZpdEJvdW5kcz1mdW5jdGlvbih0LGUsaSl7aWYoZT11dGlsLmV4dGVuZCh7cGFkZGluZzp7dG9wOjAsYm90dG9tOjAscmlnaHQ6MCxsZWZ0OjB9LG9mZnNldDpbMCwwXSxtYXhab29tOnRoaXMudHJhbnNmb3JtLm1heFpvb219LGUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLnBhZGRpbmcpe3ZhciBvPWUucGFkZGluZztlLnBhZGRpbmc9e3RvcDpvLGJvdHRvbTpvLHJpZ2h0Om8sbGVmdDpvfX1pZighdXRpbC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoZS5wYWRkaW5nKS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTowfSksW1wiYm90dG9tXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwidG9wXCJdKSlyZXR1cm4gdXRpbC53YXJuT25jZShcIm9wdGlvbnMucGFkZGluZyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLCBvciBhbiBPYmplY3Qgd2l0aCBrZXlzICdib3R0b20nLCAnbGVmdCcsICdyaWdodCcsICd0b3AnXCIpLHRoaXM7dD1MbmdMYXRCb3VuZHMuY29udmVydCh0KTt2YXIgbj1bZS5wYWRkaW5nLmxlZnQtZS5wYWRkaW5nLnJpZ2h0LGUucGFkZGluZy50b3AtZS5wYWRkaW5nLmJvdHRvbV0scj1NYXRoLm1pbihlLnBhZGRpbmcucmlnaHQsZS5wYWRkaW5nLmxlZnQpLGE9TWF0aC5taW4oZS5wYWRkaW5nLnRvcCxlLnBhZGRpbmcuYm90dG9tKTtlLm9mZnNldD1bZS5vZmZzZXRbMF0rblswXSxlLm9mZnNldFsxXStuWzFdXTt2YXIgcz1Qb2ludC5jb252ZXJ0KGUub2Zmc2V0KSxoPXRoaXMudHJhbnNmb3JtLHA9aC5wcm9qZWN0KHQuZ2V0Tm9ydGhXZXN0KCkpLHU9aC5wcm9qZWN0KHQuZ2V0U291dGhFYXN0KCkpLGM9dS5zdWIocCksbT0oaC53aWR0aC0yKnItMipNYXRoLmFicyhzLngpKS9jLngsZj0oaC5oZWlnaHQtMiphLTIqTWF0aC5hYnMocy55KSkvYy55O3JldHVybiBmPDB8fG08MD8odXRpbC53YXJuT25jZShcIk1hcCBjYW5ub3QgZml0IHdpdGhpbiBjYW52YXMgd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLCBwYWRkaW5nLCBhbmQvb3Igb2Zmc2V0LlwiKSx0aGlzKTooZS5jZW50ZXI9aC51bnByb2plY3QocC5hZGQodSkuZGl2KDIpKSxlLnpvb209TWF0aC5taW4oaC5zY2FsZVpvb20oaC5zY2FsZSpNYXRoLm1pbihtLGYpKSxlLm1heFpvb20pLGUuYmVhcmluZz0wLGUubGluZWFyP3RoaXMuZWFzZVRvKGUsaSk6dGhpcy5mbHlUbyhlLGkpKX0sZS5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9wKCk7dmFyIGk9dGhpcy50cmFuc2Zvcm0sbz0hMSxuPSExLHI9ITE7cmV0dXJuXCJ6b29tXCJpbiB0JiZpLnpvb20hPT0rdC56b29tJiYobz0hMCxpLnpvb209K3Quem9vbSksdm9pZCAwIT09dC5jZW50ZXImJihpLmNlbnRlcj1MbmdMYXQuY29udmVydCh0LmNlbnRlcikpLFwiYmVhcmluZ1wiaW4gdCYmaS5iZWFyaW5nIT09K3QuYmVhcmluZyYmKG49ITAsaS5iZWFyaW5nPSt0LmJlYXJpbmcpLFwicGl0Y2hcImluIHQmJmkucGl0Y2ghPT0rdC5waXRjaCYmKHI9ITAsaS5waXRjaD0rdC5waXRjaCksdGhpcy5maXJlKFwibW92ZXN0YXJ0XCIsZSkuZmlyZShcIm1vdmVcIixlKSxvJiZ0aGlzLmZpcmUoXCJ6b29tc3RhcnRcIixlKS5maXJlKFwiem9vbVwiLGUpLmZpcmUoXCJ6b29tZW5kXCIsZSksbiYmdGhpcy5maXJlKFwicm90YXRlXCIsZSksciYmdGhpcy5maXJlKFwicGl0Y2hzdGFydFwiLGUpLmZpcmUoXCJwaXRjaFwiLGUpLmZpcmUoXCJwaXRjaGVuZFwiLGUpLHRoaXMuZmlyZShcIm1vdmVlbmRcIixlKX0sZS5wcm90b3R5cGUuZWFzZVRvPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLnN0b3AoKSx0PXV0aWwuZXh0ZW5kKHtvZmZzZXQ6WzAsMF0sZHVyYXRpb246NTAwLGVhc2luZzp1dGlsLmVhc2V9LHQpLCExPT09dC5hbmltYXRlJiYodC5kdXJhdGlvbj0wKSx0LnNtb290aEVhc2luZyYmMCE9PXQuZHVyYXRpb24mJih0LmVhc2luZz10aGlzLl9zbW9vdGhPdXRFYXNpbmcodC5kdXJhdGlvbikpO3ZhciBvPXRoaXMudHJhbnNmb3JtLG49dGhpcy5nZXRab29tKCkscj10aGlzLmdldEJlYXJpbmcoKSxhPXRoaXMuZ2V0UGl0Y2goKSxzPVwiem9vbVwiaW4gdD8rdC56b29tOm4saD1cImJlYXJpbmdcImluIHQ/dGhpcy5fbm9ybWFsaXplQmVhcmluZyh0LmJlYXJpbmcscik6cixwPVwicGl0Y2hcImluIHQ/K3QucGl0Y2g6YSx1PW8uY2VudGVyUG9pbnQuYWRkKFBvaW50LmNvbnZlcnQodC5vZmZzZXQpKSxjPW8ucG9pbnRMb2NhdGlvbih1KSxtPUxuZ0xhdC5jb252ZXJ0KHQuY2VudGVyfHxjKTt0aGlzLl9ub3JtYWxpemVDZW50ZXIobSk7dmFyIGYsZyxkPW8ucHJvamVjdChjKSxsPW8ucHJvamVjdChtKS5zdWIoZCksdj1vLnpvb21TY2FsZShzLW4pO3JldHVybiB0LmFyb3VuZCYmKGY9TG5nTGF0LmNvbnZlcnQodC5hcm91bmQpLGc9by5sb2NhdGlvblBvaW50KGYpKSx0aGlzLnpvb21pbmc9cyE9PW4sdGhpcy5yb3RhdGluZz1yIT09aCx0aGlzLnBpdGNoaW5nPXAhPT1hLHRoaXMuX3ByZXBhcmVFYXNlKGUsdC5ub01vdmVTdGFydCksY2xlYXJUaW1lb3V0KHRoaXMuX29uRWFzZUVuZCksdGhpcy5fZWFzZShmdW5jdGlvbih0KXtpZih0aGlzLnpvb21pbmcmJihvLnpvb209aW50ZXJwb2xhdGUobixzLHQpKSx0aGlzLnJvdGF0aW5nJiYoby5iZWFyaW5nPWludGVycG9sYXRlKHIsaCx0KSksdGhpcy5waXRjaGluZyYmKG8ucGl0Y2g9aW50ZXJwb2xhdGUoYSxwLHQpKSxmKW8uc2V0TG9jYXRpb25BdFBvaW50KGYsZyk7ZWxzZXt2YXIgaT1vLnpvb21TY2FsZShvLnpvb20tbiksYz1zPm4/TWF0aC5taW4oMix2KTpNYXRoLm1heCguNSx2KSxtPU1hdGgucG93KGMsMS10KSxiPW8udW5wcm9qZWN0KGQuYWRkKGwubXVsdCh0Km0pKS5tdWx0KGkpKTtvLnNldExvY2F0aW9uQXRQb2ludChvLnJlbmRlcldvcmxkQ29waWVzP2Iud3JhcCgpOmIsdSl9dGhpcy5fZmlyZU1vdmVFdmVudHMoZSl9LGZ1bmN0aW9uKCl7dC5kZWxheUVuZEV2ZW50cz9pLl9vbkVhc2VFbmQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBpLl9lYXNlVG9FbmQoZSl9LHQuZGVsYXlFbmRFdmVudHMpOmkuX2Vhc2VUb0VuZChlKX0sdCksdGhpc30sZS5wcm90b3R5cGUuX3ByZXBhcmVFYXNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5tb3Zpbmc9ITAsZXx8dGhpcy5maXJlKFwibW92ZXN0YXJ0XCIsdCksdGhpcy56b29taW5nJiZ0aGlzLmZpcmUoXCJ6b29tc3RhcnRcIix0KSx0aGlzLnBpdGNoaW5nJiZ0aGlzLmZpcmUoXCJwaXRjaHN0YXJ0XCIsdCl9LGUucHJvdG90eXBlLl9maXJlTW92ZUV2ZW50cz1mdW5jdGlvbih0KXt0aGlzLmZpcmUoXCJtb3ZlXCIsdCksdGhpcy56b29taW5nJiZ0aGlzLmZpcmUoXCJ6b29tXCIsdCksdGhpcy5yb3RhdGluZyYmdGhpcy5maXJlKFwicm90YXRlXCIsdCksdGhpcy5waXRjaGluZyYmdGhpcy5maXJlKFwicGl0Y2hcIix0KX0sZS5wcm90b3R5cGUuX2Vhc2VUb0VuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnpvb21pbmcsaT10aGlzLnBpdGNoaW5nO3RoaXMubW92aW5nPSExLHRoaXMuem9vbWluZz0hMSx0aGlzLnJvdGF0aW5nPSExLHRoaXMucGl0Y2hpbmc9ITEsZSYmdGhpcy5maXJlKFwiem9vbWVuZFwiLHQpLGkmJnRoaXMuZmlyZShcInBpdGNoZW5kXCIsdCksdGhpcy5maXJlKFwibW92ZWVuZFwiLHQpfSxlLnByb3RvdHlwZS5mbHlUbz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7dmFyIGU9KE0qTS16KnorKHQ/LTE6MSkqTCpMKkUqRSkvKDIqKHQ/TTp6KSpMKkUpO3JldHVybiBNYXRoLmxvZyhNYXRoLnNxcnQoZSplKzEpLWUpfWZ1bmN0aW9uIG8odCl7cmV0dXJuKE1hdGguZXhwKHQpLU1hdGguZXhwKC10KSkvMn1mdW5jdGlvbiBuKHQpe3JldHVybihNYXRoLmV4cCh0KStNYXRoLmV4cCgtdCkpLzJ9ZnVuY3Rpb24gcih0KXtyZXR1cm4gbyh0KS9uKHQpfXZhciBhPXRoaXM7dGhpcy5zdG9wKCksdD11dGlsLmV4dGVuZCh7b2Zmc2V0OlswLDBdLHNwZWVkOjEuMixjdXJ2ZToxLjQyLGVhc2luZzp1dGlsLmVhc2V9LHQpO3ZhciBzPXRoaXMudHJhbnNmb3JtLGg9dGhpcy5nZXRab29tKCkscD10aGlzLmdldEJlYXJpbmcoKSx1PXRoaXMuZ2V0UGl0Y2goKSxjPVwiem9vbVwiaW4gdD91dGlsLmNsYW1wKCt0Lnpvb20scy5taW5ab29tLHMubWF4Wm9vbSk6aCxtPVwiYmVhcmluZ1wiaW4gdD90aGlzLl9ub3JtYWxpemVCZWFyaW5nKHQuYmVhcmluZyxwKTpwLGY9XCJwaXRjaFwiaW4gdD8rdC5waXRjaDp1LGc9cy56b29tU2NhbGUoYy1oKSxkPXMuY2VudGVyUG9pbnQuYWRkKFBvaW50LmNvbnZlcnQodC5vZmZzZXQpKSxsPXMucG9pbnRMb2NhdGlvbihkKSx2PUxuZ0xhdC5jb252ZXJ0KHQuY2VudGVyfHxsKTt0aGlzLl9ub3JtYWxpemVDZW50ZXIodik7dmFyIGI9cy5wcm9qZWN0KGwpLHk9cy5wcm9qZWN0KHYpLnN1YihiKSxfPXQuY3VydmUsej1NYXRoLm1heChzLndpZHRoLHMuaGVpZ2h0KSxNPXovZyxFPXkubWFnKCk7aWYoXCJtaW5ab29tXCJpbiB0KXt2YXIgVD11dGlsLmNsYW1wKE1hdGgubWluKHQubWluWm9vbSxoLGMpLHMubWluWm9vbSxzLm1heFpvb20pLHg9ei9zLnpvb21TY2FsZShULWgpO189TWF0aC5zcXJ0KHgvRSoyKX12YXIgTD1fKl8saj1pKDApLFo9ZnVuY3Rpb24odCl7cmV0dXJuIG4oaikvbihqK18qdCl9LHc9ZnVuY3Rpb24odCl7cmV0dXJuIHoqKChuKGopKnIoaitfKnQpLW8oaikpL0wpL0V9LFA9KGkoMSktaikvXztpZihNYXRoLmFicyhFKTwxZS02fHxpc05hTihQKSl7aWYoTWF0aC5hYnMoei1NKTwxZS02KXJldHVybiB0aGlzLmVhc2VUbyh0LGUpO3ZhciBxPU08ej8tMToxO1A9TWF0aC5hYnMoTWF0aC5sb2coTS96KSkvXyx3PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LFo9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguZXhwKHEqXyp0KX19aWYoXCJkdXJhdGlvblwiaW4gdCl0LmR1cmF0aW9uPSt0LmR1cmF0aW9uO2Vsc2V7dmFyIEI9XCJzY3JlZW5TcGVlZFwiaW4gdD8rdC5zY3JlZW5TcGVlZC9fOit0LnNwZWVkO3QuZHVyYXRpb249MWUzKlAvQn1yZXR1cm4gdGhpcy56b29taW5nPSEwLHRoaXMucm90YXRpbmc9cCE9PW0sdGhpcy5waXRjaGluZz1mIT09dSx0aGlzLl9wcmVwYXJlRWFzZShlLCExKSx0aGlzLl9lYXNlKGZ1bmN0aW9uKHQpe3ZhciBpPXQqUCxvPTEvWihpKTtzLnpvb209aCtzLnNjYWxlWm9vbShvKSx0aGlzLnJvdGF0aW5nJiYocy5iZWFyaW5nPWludGVycG9sYXRlKHAsbSx0KSksdGhpcy5waXRjaGluZyYmKHMucGl0Y2g9aW50ZXJwb2xhdGUodSxmLHQpKTt2YXIgbj1zLnVucHJvamVjdChiLmFkZCh5Lm11bHQodyhpKSkpLm11bHQobykpO3Muc2V0TG9jYXRpb25BdFBvaW50KHMucmVuZGVyV29ybGRDb3BpZXM/bi53cmFwKCk6bixkKSx0aGlzLl9maXJlTW92ZUV2ZW50cyhlKX0sZnVuY3Rpb24oKXtyZXR1cm4gYS5fZWFzZVRvRW5kKGUpfSx0KSx0aGlzfSxlLnByb3RvdHlwZS5pc0Vhc2luZz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fYWJvcnRGbn0sZS5wcm90b3R5cGUuaXNNb3Zpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3Zpbmd9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWJvcnRGbiYmKHRoaXMuX2Fib3J0Rm4oKSx0aGlzLl9maW5pc2hFYXNlKCkpLHRoaXN9LGUucHJvdG90eXBlLl9lYXNlPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9maW5pc2hGbj1lLHRoaXMuX2Fib3J0Rm49YnJvd3Nlci50aW1lZChmdW5jdGlvbihlKXt0LmNhbGwodGhpcyxpLmVhc2luZyhlKSksMT09PWUmJnRoaXMuX2ZpbmlzaEVhc2UoKX0sITE9PT1pLmFuaW1hdGU/MDppLmR1cmF0aW9uLHRoaXMpfSxlLnByb3RvdHlwZS5fZmluaXNoRWFzZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9hYm9ydEZuO3ZhciB0PXRoaXMuX2ZpbmlzaEZuO2RlbGV0ZSB0aGlzLl9maW5pc2hGbix0LmNhbGwodGhpcyl9LGUucHJvdG90eXBlLl9ub3JtYWxpemVCZWFyaW5nPWZ1bmN0aW9uKHQsZSl7dD11dGlsLndyYXAodCwtMTgwLDE4MCk7dmFyIGk9TWF0aC5hYnModC1lKTtyZXR1cm4gTWF0aC5hYnModC0zNjAtZSk8aSYmKHQtPTM2MCksTWF0aC5hYnModCszNjAtZSk8aSYmKHQrPTM2MCksdH0sZS5wcm90b3R5cGUuX25vcm1hbGl6ZUNlbnRlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnRyYW5zZm9ybTtpZihlLnJlbmRlcldvcmxkQ29waWVzJiYhZS5sbmdSYW5nZSl7dmFyIGk9dC5sbmctZS5jZW50ZXIubG5nO3QubG5nKz1pPjE4MD8tMzYwOmk8LTE4MD8zNjA6MH19LGUucHJvdG90eXBlLl9zbW9vdGhPdXRFYXNpbmc9ZnVuY3Rpb24odCl7dmFyIGU9dXRpbC5lYXNlO2lmKHRoaXMuX3ByZXZFYXNlKXt2YXIgaT10aGlzLl9wcmV2RWFzZSxvPShEYXRlLm5vdygpLWkuc3RhcnQpL2kuZHVyYXRpb24sbj1pLmVhc2luZyhvKy4wMSktaS5lYXNpbmcobykscj0uMjcvTWF0aC5zcXJ0KG4qbisxZS00KSouMDEsYT1NYXRoLnNxcnQoLjA3MjktcipyKTtlPXV0aWwuYmV6aWVyKHIsYSwuMjUsMSl9cmV0dXJuIHRoaXMuX3ByZXZFYXNlPXtzdGFydDoobmV3IERhdGUpLmdldFRpbWUoKSxkdXJhdGlvbjp0LGVhc2luZzplfSxlfSxlfShFdmVudGVkKTttb2R1bGUuZXhwb3J0cz1DYW1lcmE7XG59LHtcIi4uL2dlby9sbmdfbGF0XCI6NTgsXCIuLi9nZW8vbG5nX2xhdF9ib3VuZHNcIjo1OSxcIi4uL3N0eWxlLXNwZWMvdXRpbC9pbnRlcnBvbGF0ZVwiOjEyNyxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4uL3V0aWwvZXZlbnRlZFwiOjIxMCxcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sMTgyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSxjb25maWc9X2RlcmVxXyhcIi4uLy4uL3V0aWwvY29uZmlnXCIpLEF0dHJpYnV0aW9uQ29udHJvbD1mdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dCx1dGlsLmJpbmRBbGwoW1wiX3VwZGF0ZUVkaXRMaW5rXCIsXCJfdXBkYXRlRGF0YVwiLFwiX3VwZGF0ZUNvbXBhY3RcIl0sdGhpcyl9O0F0dHJpYnV0aW9uQ29udHJvbC5wcm90b3R5cGUuZ2V0RGVmYXVsdFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuXCJib3R0b20tcmlnaHRcIn0sQXR0cmlidXRpb25Db250cm9sLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5jb21wYWN0O3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXI9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWF0dHJpYlwiKSxpJiZ0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWNvbXBhY3RcIiksdGhpcy5fdXBkYXRlQXR0cmlidXRpb25zKCksdGhpcy5fdXBkYXRlRWRpdExpbmsoKSx0aGlzLl9tYXAub24oXCJzb3VyY2VkYXRhXCIsdGhpcy5fdXBkYXRlRGF0YSksdGhpcy5fbWFwLm9uKFwibW92ZWVuZFwiLHRoaXMuX3VwZGF0ZUVkaXRMaW5rKSx2b2lkIDA9PT1pJiYodGhpcy5fbWFwLm9uKFwicmVzaXplXCIsdGhpcy5fdXBkYXRlQ29tcGFjdCksdGhpcy5fdXBkYXRlQ29tcGFjdCgpKSx0aGlzLl9jb250YWluZXJ9LEF0dHJpYnV0aW9uQ29udHJvbC5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtET00ucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwLm9mZihcInNvdXJjZWRhdGFcIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKFwibW92ZWVuZFwiLHRoaXMuX3VwZGF0ZUVkaXRMaW5rKSx0aGlzLl9tYXAub2ZmKFwicmVzaXplXCIsdGhpcy5fdXBkYXRlQ29tcGFjdCksdGhpcy5fbWFwPXZvaWQgMH0sQXR0cmlidXRpb25Db250cm9sLnByb3RvdHlwZS5fdXBkYXRlRWRpdExpbms9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9lZGl0TGluazt0fHwodD10aGlzLl9lZGl0TGluaz10aGlzLl9jb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5tYXBib3gtaW1wcm92ZS1tYXBcIikpO3ZhciBpPVt7a2V5Olwib3duZXJcIix2YWx1ZTp0aGlzLnN0eWxlT3duZXJ9LHtrZXk6XCJpZFwiLHZhbHVlOnRoaXMuc3R5bGVJZH0se2tleTpcImFjY2Vzc190b2tlblwiLHZhbHVlOmNvbmZpZy5BQ0NFU1NfVE9LRU59XTtpZih0KXt2YXIgbz1pLnJlZHVjZShmdW5jdGlvbih0LG8sZSl7cmV0dXJuIG8udmFsdWUmJih0Kz1vLmtleStcIj1cIitvLnZhbHVlKyhlPGkubGVuZ3RoLTE/XCImXCI6XCJcIikpLHR9LFwiP1wiKTt0LmhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL2ZlZWRiYWNrL1wiK28rKHRoaXMuX21hcC5faGFzaD90aGlzLl9tYXAuX2hhc2guZ2V0SGFzaFN0cmluZyghMCk6XCJcIil9fSxBdHRyaWJ1dGlvbkNvbnRyb2wucHJvdG90eXBlLl91cGRhdGVEYXRhPWZ1bmN0aW9uKHQpe3QmJlwibWV0YWRhdGFcIj09PXQuc291cmNlRGF0YVR5cGUmJih0aGlzLl91cGRhdGVBdHRyaWJ1dGlvbnMoKSx0aGlzLl91cGRhdGVFZGl0TGluaygpKX0sQXR0cmlidXRpb25Db250cm9sLnByb3RvdHlwZS5fdXBkYXRlQXR0cmlidXRpb25zPWZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwLnN0eWxlKXt2YXIgdD1bXTtpZih0aGlzLl9tYXAuc3R5bGUuc3R5bGVzaGVldCl7dmFyIGk9dGhpcy5fbWFwLnN0eWxlLnN0eWxlc2hlZXQ7dGhpcy5zdHlsZU93bmVyPWkub3duZXIsdGhpcy5zdHlsZUlkPWkuaWR9dmFyIG89dGhpcy5fbWFwLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIGUgaW4gbyl7dmFyIG49b1tlXS5nZXRTb3VyY2UoKTtuLmF0dHJpYnV0aW9uJiZ0LmluZGV4T2Yobi5hdHRyaWJ1dGlvbik8MCYmdC5wdXNoKG4uYXR0cmlidXRpb24pfXQuc29ydChmdW5jdGlvbih0LGkpe3JldHVybiB0Lmxlbmd0aC1pLmxlbmd0aH0pLHQ9dC5maWx0ZXIoZnVuY3Rpb24oaSxvKXtmb3IodmFyIGU9bysxO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uaW5kZXhPZihpKT49MClyZXR1cm4hMTtyZXR1cm4hMH0pLHRoaXMuX2NvbnRhaW5lci5pbm5lckhUTUw9dC5qb2luKFwiIHwgXCIpLHRoaXMuX2VkaXRMaW5rPW51bGx9fSxBdHRyaWJ1dGlvbkNvbnRyb2wucHJvdG90eXBlLl91cGRhdGVDb21wYWN0PWZ1bmN0aW9uKCl7dGhpcy5fbWFwLmdldENhbnZhc0NvbnRhaW5lcigpLm9mZnNldFdpZHRoPD02NDA/dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jb21wYWN0XCIpOnRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY29tcGFjdFwiKX0sbW9kdWxlLmV4cG9ydHM9QXR0cmlidXRpb25Db250cm9sO1xufSx7XCIuLi8uLi91dGlsL2NvbmZpZ1wiOjIwNixcIi4uLy4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vLi4vdXRpbC91dGlsXCI6MjIzfV0sMTgzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uLy4uL3V0aWwvd2luZG93XCIpLEZ1bGxzY3JlZW5Db250cm9sPWZ1bmN0aW9uKCl7dGhpcy5fZnVsbHNjcmVlbj0hMSx1dGlsLmJpbmRBbGwoW1wiX29uQ2xpY2tGdWxsc2NyZWVuXCIsXCJfY2hhbmdlSWNvblwiXSx0aGlzKSxcIm9uZnVsbHNjcmVlbmNoYW5nZVwiaW4gd2luZG93LmRvY3VtZW50P3RoaXMuX2Z1bGxzY3JlZW5jaGFuZ2U9XCJmdWxsc2NyZWVuY2hhbmdlXCI6XCJvbm1vemZ1bGxzY3JlZW5jaGFuZ2VcImluIHdpbmRvdy5kb2N1bWVudD90aGlzLl9mdWxsc2NyZWVuY2hhbmdlPVwibW96ZnVsbHNjcmVlbmNoYW5nZVwiOlwib253ZWJraXRmdWxsc2NyZWVuY2hhbmdlXCJpbiB3aW5kb3cuZG9jdW1lbnQ/dGhpcy5fZnVsbHNjcmVlbmNoYW5nZT1cIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIjpcIm9ubXNmdWxsc2NyZWVuY2hhbmdlXCJpbiB3aW5kb3cuZG9jdW1lbnQmJih0aGlzLl9mdWxsc2NyZWVuY2hhbmdlPVwiTVNGdWxsc2NyZWVuQ2hhbmdlXCIpLHRoaXMuX2NsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmxcIn07RnVsbHNjcmVlbkNvbnRyb2wucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXA9ZSx0aGlzLl9tYXBDb250YWluZXI9dGhpcy5fbWFwLmdldENvbnRhaW5lcigpLHRoaXMuX2NvbnRhaW5lcj1ET00uY3JlYXRlKFwiZGl2XCIsdGhpcy5fY2xhc3NOYW1lK1wiIG1hcGJveGdsLWN0cmwtZ3JvdXBcIiksdGhpcy5fY2hlY2tGdWxsc2NyZWVuU3VwcG9ydCgpP3RoaXMuX3NldHVwVUkoKToodGhpcy5fY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsdXRpbC53YXJuT25jZShcIlRoaXMgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZnVsbHNjcmVlbiBtb2RlLlwiKSksdGhpcy5fY29udGFpbmVyfSxGdWxsc2NyZWVuQ29udHJvbC5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtET00ucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwPW51bGwsd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fZnVsbHNjcmVlbmNoYW5nZSx0aGlzLl9jaGFuZ2VJY29uKX0sRnVsbHNjcmVlbkNvbnRyb2wucHJvdG90eXBlLl9jaGVja0Z1bGxzY3JlZW5TdXBwb3J0PWZ1bmN0aW9uKCl7cmV0dXJuISEod2luZG93LmRvY3VtZW50LmZ1bGxzY3JlZW5FbmFibGVkfHx3aW5kb3cuZG9jdW1lbnQubW96RnVsbFNjcmVlbkVuYWJsZWR8fHdpbmRvdy5kb2N1bWVudC5tc0Z1bGxzY3JlZW5FbmFibGVkfHx3aW5kb3cuZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQpfSxGdWxsc2NyZWVuQ29udHJvbC5wcm90b3R5cGUuX3NldHVwVUk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9mdWxsc2NyZWVuQnV0dG9uPURPTS5jcmVhdGUoXCJidXR0b25cIix0aGlzLl9jbGFzc05hbWUrXCItaWNvbiBcIit0aGlzLl9jbGFzc05hbWUrXCItZnVsbHNjcmVlblwiLHRoaXMuX2NvbnRhaW5lcik7ZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJUb2dnbGUgZnVsbHNjcmVlblwiKSxlLnR5cGU9XCJidXR0b25cIix0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuX29uQ2xpY2tGdWxsc2NyZWVuKSx3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsc2NyZWVuY2hhbmdlLHRoaXMuX2NoYW5nZUljb24pfSxGdWxsc2NyZWVuQ29udHJvbC5wcm90b3R5cGUuX2lzRnVsbHNjcmVlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mdWxsc2NyZWVufSxGdWxsc2NyZWVuQ29udHJvbC5wcm90b3R5cGUuX2NoYW5nZUljb249ZnVuY3Rpb24oKXsod2luZG93LmRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50fHx3aW5kb3cuZG9jdW1lbnQubW96RnVsbFNjcmVlbkVsZW1lbnR8fHdpbmRvdy5kb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8d2luZG93LmRvY3VtZW50Lm1zRnVsbHNjcmVlbkVsZW1lbnQpPT09dGhpcy5fbWFwQ29udGFpbmVyIT09dGhpcy5fZnVsbHNjcmVlbiYmKHRoaXMuX2Z1bGxzY3JlZW49IXRoaXMuX2Z1bGxzY3JlZW4sdGhpcy5fZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKHRoaXMuX2NsYXNzTmFtZStcIi1zaHJpbmtcIiksdGhpcy5fZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKHRoaXMuX2NsYXNzTmFtZStcIi1mdWxsc2NyZWVuXCIpKX0sRnVsbHNjcmVlbkNvbnRyb2wucHJvdG90eXBlLl9vbkNsaWNrRnVsbHNjcmVlbj1mdW5jdGlvbigpe3RoaXMuX2lzRnVsbHNjcmVlbigpP3dpbmRvdy5kb2N1bWVudC5leGl0RnVsbHNjcmVlbj93aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTp3aW5kb3cuZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbj93aW5kb3cuZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbigpOndpbmRvdy5kb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuP3dpbmRvdy5kb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuKCk6d2luZG93LmRvY3VtZW50LndlYmtpdENhbmNlbEZ1bGxTY3JlZW4mJndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk6dGhpcy5fbWFwQ29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuP3RoaXMuX21hcENvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX21hcENvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbj90aGlzLl9tYXBDb250YWluZXIubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTp0aGlzLl9tYXBDb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbj90aGlzLl9tYXBDb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX21hcENvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiYmdGhpcy5fbWFwQ29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9LG1vZHVsZS5leHBvcnRzPUZ1bGxzY3JlZW5Db250cm9sO1xufSx7XCIuLi8uLi91dGlsL2RvbVwiOjIwOSxcIi4uLy4uL3V0aWwvdXRpbFwiOjIyMyxcIi4uLy4uL3V0aWwvd2luZG93XCI6MjA0fV0sMTg0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNoZWNrR2VvbG9jYXRpb25TdXBwb3J0KHQpe3ZvaWQgMCE9PXN1cHBvcnRzR2VvbG9jYXRpb24/dChzdXBwb3J0c0dlb2xvY2F0aW9uKTp2b2lkIDAhPT13aW5kb3cubmF2aWdhdG9yLnBlcm1pc3Npb25zP3dpbmRvdy5uYXZpZ2F0b3IucGVybWlzc2lvbnMucXVlcnkoe25hbWU6XCJnZW9sb2NhdGlvblwifSkudGhlbihmdW5jdGlvbihvKXtzdXBwb3J0c0dlb2xvY2F0aW9uPVwiZGVuaWVkXCIhPT1vLnN0YXRlLHQoc3VwcG9ydHNHZW9sb2NhdGlvbil9KTooc3VwcG9ydHNHZW9sb2NhdGlvbj0hIXdpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sdChzdXBwb3J0c0dlb2xvY2F0aW9uKSl9dmFyIEV2ZW50ZWQ9X2RlcmVxXyhcIi4uLy4uL3V0aWwvZXZlbnRlZFwiKSxET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLHdpbmRvdz1fZGVyZXFfKFwiLi4vLi4vdXRpbC93aW5kb3dcIiksdXRpbD1fZGVyZXFfKFwiLi4vLi4vdXRpbC91dGlsXCIpLExuZ0xhdD1fZGVyZXFfKFwiLi4vLi4vZ2VvL2xuZ19sYXRcIiksTWFya2VyPV9kZXJlcV8oXCIuLi9tYXJrZXJcIiksZGVmYXVsdE9wdGlvbnM9e3Bvc2l0aW9uT3B0aW9uczp7ZW5hYmxlSGlnaEFjY3VyYWN5OiExLHRpbWVvdXQ6NmUzfSxmaXRCb3VuZHNPcHRpb25zOnttYXhab29tOjE1fSx0cmFja1VzZXJMb2NhdGlvbjohMSxzaG93VXNlckxvY2F0aW9uOiEwfSxjbGFzc05hbWU9XCJtYXBib3hnbC1jdHJsXCIsc3VwcG9ydHNHZW9sb2NhdGlvbixHZW9sb2NhdGVDb250cm9sPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG8obyl7dC5jYWxsKHRoaXMpLHRoaXMub3B0aW9ucz11dGlsLmV4dGVuZCh7fSxkZWZhdWx0T3B0aW9ucyxvKSx1dGlsLmJpbmRBbGwoW1wiX29uU3VjY2Vzc1wiLFwiX29uRXJyb3JcIixcIl9maW5pc2hcIixcIl9zZXR1cFVJXCIsXCJfdXBkYXRlQ2FtZXJhXCIsXCJfdXBkYXRlTWFya2VyXCIsXCJfb25DbGlja0dlb2xvY2F0ZVwiXSx0aGlzKX1yZXR1cm4gdCYmKG8uX19wcm90b19fPXQpLG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLG8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW8sby5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj1ET00uY3JlYXRlKFwiZGl2XCIsY2xhc3NOYW1lK1wiIFwiK2NsYXNzTmFtZStcIi1ncm91cFwiKSxjaGVja0dlb2xvY2F0aW9uU3VwcG9ydCh0aGlzLl9zZXR1cFVJKSx0aGlzLl9jb250YWluZXJ9LG8ucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEJiYod2luZG93Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEPXZvaWQgMCksdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlci5yZW1vdmUoKSxET00ucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwPXZvaWQgMH0sby5wcm90b3R5cGUuX29uU3VjY2Vzcz1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24pc3dpdGNoKHRoaXMuX2xhc3RLbm93blBvc2l0aW9uPXQsdGhpcy5fd2F0Y2hTdGF0ZSl7Y2FzZVwiV0FJVElOR19BQ1RJVkVcIjpjYXNlXCJBQ1RJVkVfTE9DS1wiOmNhc2VcIkFDVElWRV9FUlJPUlwiOnRoaXMuX3dhdGNoU3RhdGU9XCJBQ1RJVkVfTE9DS1wiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6Y2FzZVwiQkFDS0dST1VORF9FUlJPUlwiOnRoaXMuX3dhdGNoU3RhdGU9XCJCQUNLR1JPVU5EXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIil9dGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJlwiT0ZGXCIhPT10aGlzLl93YXRjaFN0YXRlJiZ0aGlzLl91cGRhdGVNYXJrZXIodCksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiZcIkFDVElWRV9MT0NLXCIhPT10aGlzLl93YXRjaFN0YXRlfHx0aGlzLl91cGRhdGVDYW1lcmEodCksdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX2RvdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlXCIpLHRoaXMuZmlyZShcImdlb2xvY2F0ZVwiLHQpLHRoaXMuX2ZpbmlzaCgpfSxvLnByb3RvdHlwZS5fdXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe3ZhciBvPW5ldyBMbmdMYXQodC5jb29yZHMubG9uZ2l0dWRlLHQuY29vcmRzLmxhdGl0dWRlKSxlPXQuY29vcmRzLmFjY3VyYWN5O3RoaXMuX21hcC5maXRCb3VuZHMoby50b0JvdW5kcyhlKSx0aGlzLm9wdGlvbnMuZml0Qm91bmRzT3B0aW9ucyx7Z2VvbG9jYXRlU291cmNlOiEwfSl9LG8ucHJvdG90eXBlLl91cGRhdGVNYXJrZXI9ZnVuY3Rpb24odCl7dD90aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIuc2V0TG5nTGF0KFt0LmNvb3Jkcy5sb25naXR1ZGUsdC5jb29yZHMubGF0aXR1ZGVdKS5hZGRUbyh0aGlzLl9tYXApOnRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlci5yZW1vdmUoKX0sby5wcm90b3R5cGUuX29uRXJyb3I9ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uKWlmKDE9PT10LmNvZGUpdGhpcy5fd2F0Y2hTdGF0ZT1cIk9GRlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpLHZvaWQgMCE9PXRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCYmdGhpcy5fY2xlYXJXYXRjaCgpO2Vsc2Ugc3dpdGNoKHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2VcIldBSVRJTkdfQUNUSVZFXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkFDVElWRV9FUlJPUlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpO2JyZWFrO2Nhc2VcIkFDVElWRV9MT0NLXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkFDVElWRV9FUlJPUlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkJBQ0tHUk9VTkRfRVJST1JcIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKX1cIk9GRlwiIT09dGhpcy5fd2F0Y2hTdGF0ZSYmdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX2RvdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlXCIpLHRoaXMuZmlyZShcImVycm9yXCIsdCksdGhpcy5fZmluaXNoKCl9LG8ucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl90aW1lb3V0SWQmJmNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJZD12b2lkIDB9LG8ucHJvdG90eXBlLl9zZXR1cFVJPWZ1bmN0aW9uKHQpe3ZhciBvPXRoaXM7ITEhPT10JiYodGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCl9KSx0aGlzLl9nZW9sb2NhdGVCdXR0b249RE9NLmNyZWF0ZShcImJ1dHRvblwiLGNsYXNzTmFtZStcIi1pY29uIFwiK2NsYXNzTmFtZStcIi1nZW9sb2NhdGVcIix0aGlzLl9jb250YWluZXIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi50eXBlPVwiYnV0dG9uXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIkdlb2xvY2F0ZVwiKSx0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsXCJmYWxzZVwiKSx0aGlzLl93YXRjaFN0YXRlPVwiT0ZGXCIpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiYodGhpcy5fZG90RWxlbWVudD1ET00uY3JlYXRlKFwiZGl2XCIsXCJtYXBib3hnbC11c2VyLWxvY2F0aW9uLWRvdFwiKSx0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXI9bmV3IE1hcmtlcih0aGlzLl9kb3RFbGVtZW50KSx0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl93YXRjaFN0YXRlPVwiT0ZGXCIpKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5fb25DbGlja0dlb2xvY2F0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJnRoaXMuX21hcC5vbihcIm1vdmVzdGFydFwiLGZ1bmN0aW9uKHQpe3QuZ2VvbG9jYXRlU291cmNlfHxcIkFDVElWRV9MT0NLXCIhPT1vLl93YXRjaFN0YXRlfHwoby5fd2F0Y2hTdGF0ZT1cIkJBQ0tHUk9VTkRcIixvLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksby5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmVcIiksby5maXJlKFwidHJhY2t1c2VybG9jYXRpb25lbmRcIikpfSkpfSxvLnByb3RvdHlwZS5fb25DbGlja0dlb2xvY2F0ZT1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbil7c3dpdGNoKHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2VcIk9GRlwiOnRoaXMuX3dhdGNoU3RhdGU9XCJXQUlUSU5HX0FDVElWRVwiLHRoaXMuZmlyZShcInRyYWNrdXNlcmxvY2F0aW9uc3RhcnRcIik7YnJlYWs7Y2FzZVwiV0FJVElOR19BQ1RJVkVcIjpjYXNlXCJBQ1RJVkVfTE9DS1wiOmNhc2VcIkFDVElWRV9FUlJPUlwiOmNhc2VcIkJBQ0tHUk9VTkRfRVJST1JcIjp0aGlzLl93YXRjaFN0YXRlPVwiT0ZGXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZFwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3JcIiksdGhpcy5maXJlKFwidHJhY2t1c2VybG9jYXRpb25lbmRcIik7YnJlYWs7Y2FzZVwiQkFDS0dST1VORFwiOnRoaXMuX3dhdGNoU3RhdGU9XCJBQ1RJVkVfTE9DS1wiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZFwiKSx0aGlzLl9sYXN0S25vd25Qb3NpdGlvbiYmdGhpcy5fdXBkYXRlQ2FtZXJhKHRoaXMuX2xhc3RLbm93blBvc2l0aW9uKSx0aGlzLmZpcmUoXCJ0cmFja3VzZXJsb2NhdGlvbnN0YXJ0XCIpfXN3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNlXCJXQUlUSU5HX0FDVElWRVwiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKTticmVhaztjYXNlXCJBQ1RJVkVfTE9DS1wiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpO2JyZWFrO2Nhc2VcIkFDVElWRV9FUlJPUlwiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kXCIpO2JyZWFrO2Nhc2VcIkJBQ0tHUk9VTkRfRVJST1JcIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmdcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpfVwiT0ZGXCI9PT10aGlzLl93YXRjaFN0YXRlJiZ2b2lkIDAhPT10aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ/dGhpcy5fY2xlYXJXYXRjaCgpOnZvaWQgMD09PXRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCYmKHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsXCJ0cnVlXCIpLHRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRD13aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24odGhpcy5fb25TdWNjZXNzLHRoaXMuX29uRXJyb3IsdGhpcy5vcHRpb25zLnBvc2l0aW9uT3B0aW9ucykpfWVsc2Ugd2luZG93Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24odGhpcy5fb25TdWNjZXNzLHRoaXMuX29uRXJyb3IsdGhpcy5vcHRpb25zLnBvc2l0aW9uT3B0aW9ucyksdGhpcy5fdGltZW91dElkPXNldFRpbWVvdXQodGhpcy5fZmluaXNoLDFlNCl9LG8ucHJvdG90eXBlLl9jbGVhcldhdGNoPWZ1bmN0aW9uKCl7d2luZG93Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEPXZvaWQgMCx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmdcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtcHJlc3NlZFwiLFwiZmFsc2VcIiksdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX3VwZGF0ZU1hcmtlcihudWxsKX0sb30oRXZlbnRlZCk7bW9kdWxlLmV4cG9ydHM9R2VvbG9jYXRlQ29udHJvbDtcbn0se1wiLi4vLi4vZ2VvL2xuZ19sYXRcIjo1OCxcIi4uLy4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vLi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiLi4vLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vLi4vdXRpbC93aW5kb3dcIjoyMDQsXCIuLi9tYXJrZXJcIjoxOTh9XSwxODU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIERPTT1fZGVyZXFfKFwiLi4vLi4vdXRpbC9kb21cIiksdXRpbD1fZGVyZXFfKFwiLi4vLi4vdXRpbC91dGlsXCIpLExvZ29Db250cm9sPWZ1bmN0aW9uKCl7dXRpbC5iaW5kQWxsKFtcIl91cGRhdGVMb2dvXCJdLHRoaXMpfTtMb2dvQ29udHJvbC5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24obyl7dGhpcy5fbWFwPW8sdGhpcy5fY29udGFpbmVyPURPTS5jcmVhdGUoXCJkaXZcIixcIm1hcGJveGdsLWN0cmxcIik7dmFyIHQ9RE9NLmNyZWF0ZShcImFcIixcIm1hcGJveGdsLWN0cmwtbG9nb1wiKTtyZXR1cm4gdC50YXJnZXQ9XCJfYmxhbmtcIix0LmhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiLHQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiTWFwYm94IGxvZ29cIiksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHQpLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLHRoaXMuX21hcC5vbihcInNvdXJjZWRhdGFcIix0aGlzLl91cGRhdGVMb2dvKSx0aGlzLl91cGRhdGVMb2dvKCksdGhpcy5fY29udGFpbmVyfSxMb2dvQ29udHJvbC5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtET00ucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwLm9mZihcInNvdXJjZWRhdGFcIix0aGlzLl91cGRhdGVMb2dvKX0sTG9nb0NvbnRyb2wucHJvdG90eXBlLmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVyblwiYm90dG9tLWxlZnRcIn0sTG9nb0NvbnRyb2wucHJvdG90eXBlLl91cGRhdGVMb2dvPWZ1bmN0aW9uKG8pe28mJlwibWV0YWRhdGFcIiE9PW8uc291cmNlRGF0YVR5cGV8fCh0aGlzLl9jb250YWluZXIuc3R5bGUuZGlzcGxheT10aGlzLl9sb2dvUmVxdWlyZWQoKT9cImJsb2NrXCI6XCJub25lXCIpfSxMb2dvQ29udHJvbC5wcm90b3R5cGUuX2xvZ29SZXF1aXJlZD1mdW5jdGlvbigpe2lmKHRoaXMuX21hcC5zdHlsZSl7dmFyIG89dGhpcy5fbWFwLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIHQgaW4gbyl7aWYob1t0XS5nZXRTb3VyY2UoKS5tYXBib3hfbG9nbylyZXR1cm4hMH1yZXR1cm4hMX19LG1vZHVsZS5leHBvcnRzPUxvZ29Db250cm9sO1xufSx7XCIuLi8uLi91dGlsL2RvbVwiOjIwOSxcIi4uLy4uL3V0aWwvdXRpbFwiOjIyM31dLDE4NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRE9NPV9kZXJlcV8oXCIuLi8uLi91dGlsL2RvbVwiKSx1dGlsPV9kZXJlcV8oXCIuLi8uLi91dGlsL3V0aWxcIiksRHJhZ1JvdGF0ZUhhbmRsZXI9X2RlcmVxXyhcIi4uL2hhbmRsZXIvZHJhZ19yb3RhdGVcIiksTmF2aWdhdGlvbkNvbnRyb2w9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3V0aWwuYmluZEFsbChbXCJfcm90YXRlQ29tcGFzc0Fycm93XCJdLHRoaXMpLHRoaXMuX2NvbnRhaW5lcj1ET00uY3JlYXRlKFwiZGl2XCIsXCJtYXBib3hnbC1jdHJsIG1hcGJveGdsLWN0cmwtZ3JvdXBcIiksdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCl9KSx0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKFwibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtem9vbS1pblwiLFwiWm9vbSBJblwiLGZ1bmN0aW9uKCl7cmV0dXJuIHQuX21hcC56b29tSW4oKX0pLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKFwibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtem9vbS1vdXRcIixcIlpvb20gT3V0XCIsZnVuY3Rpb24oKXtyZXR1cm4gdC5fbWFwLnpvb21PdXQoKX0pLHRoaXMuX2NvbXBhc3M9dGhpcy5fY3JlYXRlQnV0dG9uKFwibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtY29tcGFzc1wiLFwiUmVzZXQgTm9ydGhcIixmdW5jdGlvbigpe3JldHVybiB0Ll9tYXAucmVzZXROb3J0aCgpfSksdGhpcy5fY29tcGFzc0Fycm93PURPTS5jcmVhdGUoXCJzcGFuXCIsXCJtYXBib3hnbC1jdHJsLWNvbXBhc3MtYXJyb3dcIix0aGlzLl9jb21wYXNzKX07TmF2aWdhdGlvbkNvbnRyb2wucHJvdG90eXBlLl9yb3RhdGVDb21wYXNzQXJyb3c9ZnVuY3Rpb24oKXt2YXIgdD1cInJvdGF0ZShcIit0aGlzLl9tYXAudHJhbnNmb3JtLmFuZ2xlKigxODAvTWF0aC5QSSkrXCJkZWcpXCI7dGhpcy5fY29tcGFzc0Fycm93LnN0eWxlLnRyYW5zZm9ybT10fSxOYXZpZ2F0aW9uQ29udHJvbC5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD10LHRoaXMuX21hcC5vbihcInJvdGF0ZVwiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KCksdGhpcy5faGFuZGxlcj1uZXcgRHJhZ1JvdGF0ZUhhbmRsZXIodCx7YnV0dG9uOlwibGVmdFwiLGVsZW1lbnQ6dGhpcy5fY29tcGFzcyxwaXRjaFdpdGhSb3RhdGU6ITF9KSx0aGlzLl9oYW5kbGVyLmVuYWJsZSgpLHRoaXMuX2NvbnRhaW5lcn0sTmF2aWdhdGlvbkNvbnRyb2wucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7RE9NLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcC5vZmYoXCJyb3RhdGVcIix0aGlzLl9yb3RhdGVDb21wYXNzQXJyb3cpLGRlbGV0ZSB0aGlzLl9tYXAsdGhpcy5faGFuZGxlci5kaXNhYmxlKCksZGVsZXRlIHRoaXMuX2hhbmRsZXJ9LE5hdmlnYXRpb25Db250cm9sLnByb3RvdHlwZS5fY3JlYXRlQnV0dG9uPWZ1bmN0aW9uKHQsbyxyKXt2YXIgZT1ET00uY3JlYXRlKFwiYnV0dG9uXCIsdCx0aGlzLl9jb250YWluZXIpO3JldHVybiBlLnR5cGU9XCJidXR0b25cIixlLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixvKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHIpLGV9LG1vZHVsZS5leHBvcnRzPU5hdmlnYXRpb25Db250cm9sO1xufSx7XCIuLi8uLi91dGlsL2RvbVwiOjIwOSxcIi4uLy4uL3V0aWwvdXRpbFwiOjIyMyxcIi4uL2hhbmRsZXIvZHJhZ19yb3RhdGVcIjoxOTJ9XSwxODc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdXBkYXRlU2NhbGUodCxlLG8pe3ZhciBuPW8mJm8ubWF4V2lkdGh8fDEwMCxpPXQuX2NvbnRhaW5lci5jbGllbnRIZWlnaHQvMixhPWdldERpc3RhbmNlKHQudW5wcm9qZWN0KFswLGldKSx0LnVucHJvamVjdChbbixpXSkpO2lmKG8mJlwiaW1wZXJpYWxcIj09PW8udW5pdCl7dmFyIGw9My4yODA4KmE7aWYobD41MjgwKXtzZXRTY2FsZShlLG4sbC81MjgwLFwibWlcIil9ZWxzZSBzZXRTY2FsZShlLG4sbCxcImZ0XCIpfWVsc2UgaWYobyYmXCJuYXV0aWNhbFwiPT09by51bml0KXt2YXIgcj1hLzE4NTI7c2V0U2NhbGUoZSxuLHIsXCJubVwiKX1lbHNlIHNldFNjYWxlKGUsbixhLFwibVwiKX1mdW5jdGlvbiBzZXRTY2FsZSh0LGUsbyxuKXt2YXIgaT1nZXRSb3VuZE51bShvKSxhPWkvbztcIm1cIj09PW4mJmk+PTFlMyYmKGkvPTFlMyxuPVwia21cIiksdC5zdHlsZS53aWR0aD1lKmErXCJweFwiLHQuaW5uZXJIVE1MPWkrbn1mdW5jdGlvbiBnZXREaXN0YW5jZSh0LGUpe3ZhciBvPU1hdGguUEkvMTgwLG49dC5sYXQqbyxpPWUubGF0Km8sYT1NYXRoLnNpbihuKSpNYXRoLnNpbihpKStNYXRoLmNvcyhuKSpNYXRoLmNvcyhpKSpNYXRoLmNvcygoZS5sbmctdC5sbmcpKm8pO3JldHVybiA2MzcxZTMqTWF0aC5hY29zKE1hdGgubWluKGEsMSkpfWZ1bmN0aW9uIGdldFJvdW5kTnVtKHQpe3ZhciBlPU1hdGgucG93KDEwLChcIlwiK01hdGguZmxvb3IodCkpLmxlbmd0aC0xKSxvPXQvZTtyZXR1cm4gbz1vPj0xMD8xMDpvPj01PzU6bz49Mz8zOm8+PTI/MjoxLGUqb312YXIgRE9NPV9kZXJlcV8oXCIuLi8uLi91dGlsL2RvbVwiKSx1dGlsPV9kZXJlcV8oXCIuLi8uLi91dGlsL3V0aWxcIiksU2NhbGVDb250cm9sPWZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10LHV0aWwuYmluZEFsbChbXCJfb25Nb3ZlXCJdLHRoaXMpfTtTY2FsZUNvbnRyb2wucHJvdG90eXBlLmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVyblwiYm90dG9tLWxlZnRcIn0sU2NhbGVDb250cm9sLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKCl7dXBkYXRlU2NhbGUodGhpcy5fbWFwLHRoaXMuX2NvbnRhaW5lcix0aGlzLm9wdGlvbnMpfSxTY2FsZUNvbnRyb2wucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXI9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLXNjYWxlXCIsdC5nZXRDb250YWluZXIoKSksdGhpcy5fbWFwLm9uKFwibW92ZVwiLHRoaXMuX29uTW92ZSksdGhpcy5fb25Nb3ZlKCksdGhpcy5fY29udGFpbmVyfSxTY2FsZUNvbnRyb2wucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7RE9NLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcC5vZmYoXCJtb3ZlXCIsdGhpcy5fb25Nb3ZlKSx0aGlzLl9tYXA9dm9pZCAwfSxtb2R1bGUuZXhwb3J0cz1TY2FsZUNvbnRyb2w7XG59LHtcIi4uLy4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vLi4vdXRpbC91dGlsXCI6MjIzfV0sMTg4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xufSx7fV0sMTg5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLExuZ0xhdEJvdW5kcz1fZGVyZXFfKFwiLi4vLi4vZ2VvL2xuZ19sYXRfYm91bmRzXCIpLHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uLy4uL3V0aWwvd2luZG93XCIpLEJveFpvb21IYW5kbGVyPWZ1bmN0aW9uKG8pe3RoaXMuX21hcD1vLHRoaXMuX2VsPW8uZ2V0Q2FudmFzQ29udGFpbmVyKCksdGhpcy5fY29udGFpbmVyPW8uZ2V0Q29udGFpbmVyKCksdXRpbC5iaW5kQWxsKFtcIl9vbk1vdXNlRG93blwiLFwiX29uTW91c2VNb3ZlXCIsXCJfb25Nb3VzZVVwXCIsXCJfb25LZXlEb3duXCJdLHRoaXMpfTtCb3hab29tSGFuZGxlci5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSxCb3hab29tSGFuZGxlci5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2FjdGl2ZX0sQm94Wm9vbUhhbmRsZXIucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCl8fCh0aGlzLl9tYXAuZHJhZ1BhbiYmdGhpcy5fbWFwLmRyYWdQYW4uZGlzYWJsZSgpLHRoaXMuX2VsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLl9vbk1vdXNlRG93biwhMSksdGhpcy5fbWFwLmRyYWdQYW4mJnRoaXMuX21hcC5kcmFnUGFuLmVuYWJsZSgpLHRoaXMuX2VuYWJsZWQ9ITApfSxCb3hab29tSGFuZGxlci5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5fb25Nb3VzZURvd24pLHRoaXMuX2VuYWJsZWQ9ITEpfSxCb3hab29tSGFuZGxlci5wcm90b3R5cGUuX29uTW91c2VEb3duPWZ1bmN0aW9uKG8pe28uc2hpZnRLZXkmJjA9PT1vLmJ1dHRvbiYmKHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdGhpcy5fb25Nb3VzZU1vdmUsITEpLHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHRoaXMuX29uS2V5RG93biwhMSksd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsdGhpcy5fb25Nb3VzZVVwLCExKSxET00uZGlzYWJsZURyYWcoKSx0aGlzLl9zdGFydFBvcz1ET00ubW91c2VQb3ModGhpcy5fZWwsbyksdGhpcy5fYWN0aXZlPSEwKX0sQm94Wm9vbUhhbmRsZXIucHJvdG90eXBlLl9vbk1vdXNlTW92ZT1mdW5jdGlvbihvKXt2YXIgZT10aGlzLl9zdGFydFBvcyx0PURPTS5tb3VzZVBvcyh0aGlzLl9lbCxvKTt0aGlzLl9ib3h8fCh0aGlzLl9ib3g9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtYm94em9vbVwiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jcm9zc2hhaXJcIiksdGhpcy5fZmlyZUV2ZW50KFwiYm94em9vbXN0YXJ0XCIsbykpO3ZhciBuPU1hdGgubWluKGUueCx0LngpLGk9TWF0aC5tYXgoZS54LHQueCkscz1NYXRoLm1pbihlLnksdC55KSxhPU1hdGgubWF4KGUueSx0LnkpO0RPTS5zZXRUcmFuc2Zvcm0odGhpcy5fYm94LFwidHJhbnNsYXRlKFwiK24rXCJweCxcIitzK1wicHgpXCIpLHRoaXMuX2JveC5zdHlsZS53aWR0aD1pLW4rXCJweFwiLHRoaXMuX2JveC5zdHlsZS5oZWlnaHQ9YS1zK1wicHhcIn0sQm94Wm9vbUhhbmRsZXIucHJvdG90eXBlLl9vbk1vdXNlVXA9ZnVuY3Rpb24obyl7aWYoMD09PW8uYnV0dG9uKXt2YXIgZT10aGlzLl9zdGFydFBvcyx0PURPTS5tb3VzZVBvcyh0aGlzLl9lbCxvKSxuPShuZXcgTG5nTGF0Qm91bmRzKS5leHRlbmQodGhpcy5fbWFwLnVucHJvamVjdChlKSkuZXh0ZW5kKHRoaXMuX21hcC51bnByb2plY3QodCkpO3RoaXMuX2ZpbmlzaCgpLGUueD09PXQueCYmZS55PT09dC55P3RoaXMuX2ZpcmVFdmVudChcImJveHpvb21jYW5jZWxcIixvKTp0aGlzLl9tYXAuZml0Qm91bmRzKG4se2xpbmVhcjohMH0pLmZpcmUoXCJib3h6b29tZW5kXCIse29yaWdpbmFsRXZlbnQ6byxib3hab29tQm91bmRzOm59KX19LEJveFpvb21IYW5kbGVyLnByb3RvdHlwZS5fb25LZXlEb3duPWZ1bmN0aW9uKG8pezI3PT09by5rZXlDb2RlJiYodGhpcy5fZmluaXNoKCksdGhpcy5fZmlyZUV2ZW50KFwiYm94em9vbWNhbmNlbFwiLG8pKX0sQm94Wm9vbUhhbmRsZXIucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmU9ITEsd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlTW92ZSwhMSksd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdGhpcy5fb25LZXlEb3duLCExKSx3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9vbk1vdXNlVXAsITEpLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3Jvc3NoYWlyXCIpLHRoaXMuX2JveCYmKERPTS5yZW1vdmUodGhpcy5fYm94KSx0aGlzLl9ib3g9bnVsbCksRE9NLmVuYWJsZURyYWcoKX0sQm94Wm9vbUhhbmRsZXIucHJvdG90eXBlLl9maXJlRXZlbnQ9ZnVuY3Rpb24obyxlKXtyZXR1cm4gdGhpcy5fbWFwLmZpcmUobyx7b3JpZ2luYWxFdmVudDplfSl9LG1vZHVsZS5leHBvcnRzPUJveFpvb21IYW5kbGVyO1xufSx7XCIuLi8uLi9nZW8vbG5nX2xhdF9ib3VuZHNcIjo1OSxcIi4uLy4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vLi4vdXRpbC93aW5kb3dcIjoyMDR9XSwxOTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSxEb3VibGVDbGlja1pvb21IYW5kbGVyPWZ1bmN0aW9uKGwpe3RoaXMuX21hcD1sLHV0aWwuYmluZEFsbChbXCJfb25EYmxDbGlja1wiXSx0aGlzKX07RG91YmxlQ2xpY2tab29tSGFuZGxlci5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSxEb3VibGVDbGlja1pvb21IYW5kbGVyLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fbWFwLm9uKFwiZGJsY2xpY2tcIix0aGlzLl9vbkRibENsaWNrKSx0aGlzLl9lbmFibGVkPSEwKX0sRG91YmxlQ2xpY2tab29tSGFuZGxlci5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9tYXAub2ZmKFwiZGJsY2xpY2tcIix0aGlzLl9vbkRibENsaWNrKSx0aGlzLl9lbmFibGVkPSExKX0sRG91YmxlQ2xpY2tab29tSGFuZGxlci5wcm90b3R5cGUuX29uRGJsQ2xpY2s9ZnVuY3Rpb24obCl7dGhpcy5fbWFwLnpvb21Ubyh0aGlzLl9tYXAuZ2V0Wm9vbSgpKyhsLm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/LTE6MSkse2Fyb3VuZDpsLmxuZ0xhdH0sbCl9LG1vZHVsZS5leHBvcnRzPURvdWJsZUNsaWNrWm9vbUhhbmRsZXI7XG59LHtcIi4uLy4uL3V0aWwvdXRpbFwiOjIyM31dLDE5MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRE9NPV9kZXJlcV8oXCIuLi8uLi91dGlsL2RvbVwiKSx1dGlsPV9kZXJlcV8oXCIuLi8uLi91dGlsL3V0aWxcIiksd2luZG93PV9kZXJlcV8oXCIuLi8uLi91dGlsL3dpbmRvd1wiKSxpbmVydGlhTGluZWFyaXR5PS4zLGluZXJ0aWFFYXNpbmc9dXRpbC5iZXppZXIoMCwwLGluZXJ0aWFMaW5lYXJpdHksMSksaW5lcnRpYU1heFNwZWVkPTE0MDAsaW5lcnRpYURlY2VsZXJhdGlvbj0yNTAwLERyYWdQYW5IYW5kbGVyPWZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2VsPXQuZ2V0Q2FudmFzQ29udGFpbmVyKCksdXRpbC5iaW5kQWxsKFtcIl9vbkRvd25cIixcIl9vbk1vdmVcIixcIl9vblVwXCIsXCJfb25Ub3VjaEVuZFwiLFwiX29uTW91c2VVcFwiXSx0aGlzKX07RHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9hY3RpdmV9LERyYWdQYW5IYW5kbGVyLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZWwuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXRvdWNoLWRyYWctcGFuXCIpLHRoaXMuX2VsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLl9vbkRvd24pLHRoaXMuX2VsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fb25Eb3duKSx0aGlzLl9lbmFibGVkPSEwKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpJiYodGhpcy5fZWwuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLXRvdWNoLWRyYWctcGFuXCIpLHRoaXMuX2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLl9vbkRvd24pLHRoaXMuX2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fb25Eb3duKSx0aGlzLl9lbmFibGVkPSExKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLl9vbkRvd249ZnVuY3Rpb24odCl7dGhpcy5faWdub3JlRXZlbnQodCl8fHRoaXMuaXNBY3RpdmUoKXx8KHQudG91Y2hlcz8od2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUpLHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIix0aGlzLl9vblRvdWNoRW5kKSk6KHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdGhpcy5fb25Nb3ZlKSx3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9vbk1vdXNlVXApKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIix0aGlzLl9vbk1vdXNlVXApLHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9zdGFydFBvcz10aGlzLl9wb3M9RE9NLm1vdXNlUG9zKHRoaXMuX2VsLHQpLHRoaXMuX2luZXJ0aWE9W1tEYXRlLm5vdygpLHRoaXMuX3Bvc11dKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLl9vbk1vdmU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2lnbm9yZUV2ZW50KHQpKXt0aGlzLmlzQWN0aXZlKCl8fCh0aGlzLl9hY3RpdmU9ITAsdGhpcy5fbWFwLm1vdmluZz0hMCx0aGlzLl9maXJlRXZlbnQoXCJkcmFnc3RhcnRcIix0KSx0aGlzLl9maXJlRXZlbnQoXCJtb3Zlc3RhcnRcIix0KSk7dmFyIGU9RE9NLm1vdXNlUG9zKHRoaXMuX2VsLHQpLG49dGhpcy5fbWFwO24uc3RvcCgpLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpLHRoaXMuX2luZXJ0aWEucHVzaChbRGF0ZS5ub3coKSxlXSksbi50cmFuc2Zvcm0uc2V0TG9jYXRpb25BdFBvaW50KG4udHJhbnNmb3JtLnBvaW50TG9jYXRpb24odGhpcy5fcG9zKSxlKSx0aGlzLl9maXJlRXZlbnQoXCJkcmFnXCIsdCksdGhpcy5fZmlyZUV2ZW50KFwibW92ZVwiLHQpLHRoaXMuX3Bvcz1lLHQucHJldmVudERlZmF1bHQoKX19LERyYWdQYW5IYW5kbGVyLnByb3RvdHlwZS5fb25VcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuaXNBY3RpdmUoKSl7dGhpcy5fYWN0aXZlPSExLHRoaXMuX2ZpcmVFdmVudChcImRyYWdlbmRcIix0KSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKTt2YXIgbj1mdW5jdGlvbigpe2UuX21hcC5tb3Zpbmc9ITEsZS5fZmlyZUV2ZW50KFwibW92ZWVuZFwiLHQpfSxpPXRoaXMuX2luZXJ0aWE7aWYoaS5sZW5ndGg8MilyZXR1cm4gdm9pZCBuKCk7dmFyIG89aVtpLmxlbmd0aC0xXSxyPWlbMF0sYT1vWzFdLnN1YihyWzFdKSxzPShvWzBdLXJbMF0pLzFlMztpZigwPT09c3x8b1sxXS5lcXVhbHMoclsxXSkpcmV0dXJuIHZvaWQgbigpO3ZhciB1PWEubXVsdChpbmVydGlhTGluZWFyaXR5L3MpLGQ9dS5tYWcoKTtkPmluZXJ0aWFNYXhTcGVlZCYmKGQ9aW5lcnRpYU1heFNwZWVkLHUuX3VuaXQoKS5fbXVsdChkKSk7dmFyIGg9ZC8oaW5lcnRpYURlY2VsZXJhdGlvbippbmVydGlhTGluZWFyaXR5KSx2PXUubXVsdCgtaC8yKTt0aGlzLl9tYXAucGFuQnkodix7ZHVyYXRpb246MWUzKmgsZWFzaW5nOmluZXJ0aWFFYXNpbmcsbm9Nb3ZlU3RhcnQ6ITB9LHtvcmlnaW5hbEV2ZW50OnR9KX19LERyYWdQYW5IYW5kbGVyLnByb3RvdHlwZS5fb25Nb3VzZVVwPWZ1bmN0aW9uKHQpe3RoaXMuX2lnbm9yZUV2ZW50KHQpfHwodGhpcy5fb25VcCh0KSx3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMuX29uTW92ZSksd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsdGhpcy5fb25Nb3VzZVVwKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJsdXJcIix0aGlzLl9vbk1vdXNlVXApKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLl9vblRvdWNoRW5kPWZ1bmN0aW9uKHQpe3RoaXMuX2lnbm9yZUV2ZW50KHQpfHwodGhpcy5fb25VcCh0KSx3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLHRoaXMuX29uTW92ZSksd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMuX29uVG91Y2hFbmQpKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLl9maXJlRXZlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fbWFwLmZpcmUodCx7b3JpZ2luYWxFdmVudDplfSl9LERyYWdQYW5IYW5kbGVyLnByb3RvdHlwZS5faWdub3JlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO3JldHVybiEoIWUuYm94Wm9vbXx8IWUuYm94Wm9vbS5pc0FjdGl2ZSgpKXx8KCEoIWUuZHJhZ1JvdGF0ZXx8IWUuZHJhZ1JvdGF0ZS5pc0FjdGl2ZSgpKXx8KHQudG91Y2hlcz90LnRvdWNoZXMubGVuZ3RoPjE6ISF0LmN0cmxLZXl8fFwibW91c2Vtb3ZlXCIhPT10LnR5cGUmJnQuYnV0dG9uJiYwIT09dC5idXR0b24pKX0sRHJhZ1BhbkhhbmRsZXIucHJvdG90eXBlLl9kcmFpbkluZXJ0aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5faW5lcnRpYSxlPURhdGUubm93KCk7dC5sZW5ndGg+MCYmZS10WzBdWzBdPjE2MDspdC5zaGlmdCgpfSxtb2R1bGUuZXhwb3J0cz1EcmFnUGFuSGFuZGxlcjtcbn0se1wiLi4vLi4vdXRpbC9kb21cIjoyMDksXCIuLi8uLi91dGlsL3V0aWxcIjoyMjMsXCIuLi8uLi91dGlsL3dpbmRvd1wiOjIwNH1dLDE5MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRE9NPV9kZXJlcV8oXCIuLi8uLi91dGlsL2RvbVwiKSx1dGlsPV9kZXJlcV8oXCIuLi8uLi91dGlsL3V0aWxcIiksd2luZG93PV9kZXJlcV8oXCIuLi8uLi91dGlsL3dpbmRvd1wiKSxpbmVydGlhTGluZWFyaXR5PS4yNSxpbmVydGlhRWFzaW5nPXV0aWwuYmV6aWVyKDAsMCxpbmVydGlhTGluZWFyaXR5LDEpLGluZXJ0aWFNYXhTcGVlZD0xODAsaW5lcnRpYURlY2VsZXJhdGlvbj03MjAsRHJhZ1JvdGF0ZUhhbmRsZXI9ZnVuY3Rpb24odCxlKXt0aGlzLl9tYXA9dCx0aGlzLl9lbD1lLmVsZW1lbnR8fHQuZ2V0Q2FudmFzQ29udGFpbmVyKCksdGhpcy5fYnV0dG9uPWUuYnV0dG9ufHxcInJpZ2h0XCIsdGhpcy5fYmVhcmluZ1NuYXA9ZS5iZWFyaW5nU25hcHx8MCx0aGlzLl9waXRjaFdpdGhSb3RhdGU9ITEhPT1lLnBpdGNoV2l0aFJvdGF0ZSx1dGlsLmJpbmRBbGwoW1wiX29uRG93blwiLFwiX29uTW92ZVwiLFwiX29uVXBcIl0sdGhpcyl9O0RyYWdSb3RhdGVIYW5kbGVyLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2VuYWJsZWR9LERyYWdSb3RhdGVIYW5kbGVyLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fYWN0aXZlfSxEcmFnUm90YXRlSGFuZGxlci5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLl9vbkRvd24pLHRoaXMuX2VuYWJsZWQ9ITApfSxEcmFnUm90YXRlSGFuZGxlci5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5fb25Eb3duKSx0aGlzLl9lbmFibGVkPSExKX0sRHJhZ1JvdGF0ZUhhbmRsZXIucHJvdG90eXBlLl9vbkRvd249ZnVuY3Rpb24odCl7aWYoISh0aGlzLl9tYXAuYm94Wm9vbSYmdGhpcy5fbWFwLmJveFpvb20uaXNBY3RpdmUoKXx8dGhpcy5fbWFwLmRyYWdQYW4mJnRoaXMuX21hcC5kcmFnUGFuLmlzQWN0aXZlKCl8fHRoaXMuaXNBY3RpdmUoKSkpe2lmKFwicmlnaHRcIj09PXRoaXMuX2J1dHRvbil7dmFyIGU9dC5jdHJsS2V5PzA6MixpPXQuYnV0dG9uO2lmKHZvaWQgMCE9PXdpbmRvdy5JbnN0YWxsVHJpZ2dlciYmMj09PXQuYnV0dG9uJiZ0LmN0cmxLZXkmJndpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0udG9VcHBlckNhc2UoKS5pbmRleE9mKFwiTUFDXCIpPj0wJiYoaT0wKSxpIT09ZSlyZXR1cm59ZWxzZSBpZih0LmN0cmxLZXl8fDAhPT10LmJ1dHRvbilyZXR1cm47RE9NLmRpc2FibGVEcmFnKCksd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdmUse2NhcHR1cmU6ITB9KSx3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9vblVwKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIix0aGlzLl9vblVwKSx0aGlzLl9hY3RpdmU9ITEsdGhpcy5faW5lcnRpYT1bW0RhdGUubm93KCksdGhpcy5fbWFwLmdldEJlYXJpbmcoKV1dLHRoaXMuX3N0YXJ0UG9zPXRoaXMuX3Bvcz1ET00ubW91c2VQb3ModGhpcy5fZWwsdCksdGhpcy5fY2VudGVyPXRoaXMuX21hcC50cmFuc2Zvcm0uY2VudGVyUG9pbnQsdC5wcmV2ZW50RGVmYXVsdCgpfX0sRHJhZ1JvdGF0ZUhhbmRsZXIucHJvdG90eXBlLl9vbk1vdmU9ZnVuY3Rpb24odCl7dGhpcy5pc0FjdGl2ZSgpfHwodGhpcy5fYWN0aXZlPSEwLHRoaXMuX21hcC5tb3Zpbmc9ITAsdGhpcy5fZmlyZUV2ZW50KFwicm90YXRlc3RhcnRcIix0KSx0aGlzLl9maXJlRXZlbnQoXCJtb3Zlc3RhcnRcIix0KSx0aGlzLl9waXRjaFdpdGhSb3RhdGUmJnRoaXMuX2ZpcmVFdmVudChcInBpdGNoc3RhcnRcIix0KSk7dmFyIGU9dGhpcy5fbWFwO2Uuc3RvcCgpO3ZhciBpPXRoaXMuX3BvcyxuPURPTS5tb3VzZVBvcyh0aGlzLl9lbCx0KSxyPS44KihpLngtbi54KSxhPS0uNSooaS55LW4ueSksbz1lLmdldEJlYXJpbmcoKS1yLHM9ZS5nZXRQaXRjaCgpLWEsaD10aGlzLl9pbmVydGlhLF89aFtoLmxlbmd0aC0xXTt0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKSxoLnB1c2goW0RhdGUubm93KCksZS5fbm9ybWFsaXplQmVhcmluZyhvLF9bMV0pXSksZS50cmFuc2Zvcm0uYmVhcmluZz1vLHRoaXMuX3BpdGNoV2l0aFJvdGF0ZSYmKHRoaXMuX2ZpcmVFdmVudChcInBpdGNoXCIsdCksZS50cmFuc2Zvcm0ucGl0Y2g9cyksdGhpcy5fZmlyZUV2ZW50KFwicm90YXRlXCIsdCksdGhpcy5fZmlyZUV2ZW50KFwibW92ZVwiLHQpLHRoaXMuX3Bvcz1ufSxEcmFnUm90YXRlSGFuZGxlci5wcm90b3R5cGUuX29uVXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMuX29uTW92ZSx7Y2FwdHVyZTohMH0pLHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHRoaXMuX29uVXApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLHRoaXMuX29uVXApLERPTS5lbmFibGVEcmFnKCksdGhpcy5pc0FjdGl2ZSgpKXt0aGlzLl9hY3RpdmU9ITEsdGhpcy5fZmlyZUV2ZW50KFwicm90YXRlZW5kXCIsdCksdGhpcy5fZHJhaW5JbmVydGlhQnVmZmVyKCk7dmFyIGk9dGhpcy5fbWFwLG49aS5nZXRCZWFyaW5nKCkscj10aGlzLl9pbmVydGlhLGE9ZnVuY3Rpb24oKXtNYXRoLmFicyhuKTxlLl9iZWFyaW5nU25hcD9pLnJlc2V0Tm9ydGgoe25vTW92ZVN0YXJ0OiEwfSx7b3JpZ2luYWxFdmVudDp0fSk6KGUuX21hcC5tb3Zpbmc9ITEsZS5fZmlyZUV2ZW50KFwibW92ZWVuZFwiLHQpKSxlLl9waXRjaFdpdGhSb3RhdGUmJmUuX2ZpcmVFdmVudChcInBpdGNoZW5kXCIsdCl9O2lmKHIubGVuZ3RoPDIpcmV0dXJuIHZvaWQgYSgpO3ZhciBvPXJbMF0scz1yW3IubGVuZ3RoLTFdLGg9cltyLmxlbmd0aC0yXSxfPWkuX25vcm1hbGl6ZUJlYXJpbmcobixoWzFdKSxwPXNbMV0tb1sxXSx2PXA8MD8tMToxLGQ9KHNbMF0tb1swXSkvMWUzO2lmKDA9PT1wfHwwPT09ZClyZXR1cm4gdm9pZCBhKCk7dmFyIGw9TWF0aC5hYnMocCooaW5lcnRpYUxpbmVhcml0eS9kKSk7bD5pbmVydGlhTWF4U3BlZWQmJihsPWluZXJ0aWFNYXhTcGVlZCk7dmFyIHU9bC8oaW5lcnRpYURlY2VsZXJhdGlvbippbmVydGlhTGluZWFyaXR5KTtfKz12KmwqKHUvMiksTWF0aC5hYnMoaS5fbm9ybWFsaXplQmVhcmluZyhfLDApKTx0aGlzLl9iZWFyaW5nU25hcCYmKF89aS5fbm9ybWFsaXplQmVhcmluZygwLF8pKSxpLnJvdGF0ZVRvKF8se2R1cmF0aW9uOjFlMyp1LGVhc2luZzppbmVydGlhRWFzaW5nLG5vTW92ZVN0YXJ0OiEwfSx7b3JpZ2luYWxFdmVudDp0fSl9fSxEcmFnUm90YXRlSGFuZGxlci5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9tYXAuZmlyZSh0LHtvcmlnaW5hbEV2ZW50OmV9KX0sRHJhZ1JvdGF0ZUhhbmRsZXIucHJvdG90eXBlLl9kcmFpbkluZXJ0aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5faW5lcnRpYSxlPURhdGUubm93KCk7dC5sZW5ndGg+MCYmZS10WzBdWzBdPjE2MDspdC5zaGlmdCgpfSxtb2R1bGUuZXhwb3J0cz1EcmFnUm90YXRlSGFuZGxlcjtcbn0se1wiLi4vLi4vdXRpbC9kb21cIjoyMDksXCIuLi8uLi91dGlsL3V0aWxcIjoyMjMsXCIuLi8uLi91dGlsL3dpbmRvd1wiOjIwNH1dLDE5MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBlYXNlT3V0KGUpe3JldHVybiBlKigyLWUpfXZhciB1dGlsPV9kZXJlcV8oXCIuLi8uLi91dGlsL3V0aWxcIikscGFuU3RlcD0xMDAsYmVhcmluZ1N0ZXA9MTUscGl0Y2hTdGVwPTEwLEtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHV0aWwuYmluZEFsbChbXCJfb25LZXlEb3duXCJdLHRoaXMpfTtLZXlib2FyZEhhbmRsZXIucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sS2V5Ym9hcmRIYW5kbGVyLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZWwuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix0aGlzLl9vbktleURvd24sITEpLHRoaXMuX2VuYWJsZWQ9ITApfSxLZXlib2FyZEhhbmRsZXIucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpJiYodGhpcy5fZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix0aGlzLl9vbktleURvd24pLHRoaXMuX2VuYWJsZWQ9ITEpfSxLZXlib2FyZEhhbmRsZXIucHJvdG90eXBlLl9vbktleURvd249ZnVuY3Rpb24oZSl7aWYoIShlLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXkpKXt2YXIgdD0wLGE9MCxuPTAscj0wLGk9MDtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDYxOmNhc2UgMTA3OmNhc2UgMTcxOmNhc2UgMTg3OnQ9MTticmVhaztjYXNlIDE4OTpjYXNlIDEwOTpjYXNlIDE3Mzp0PS0xO2JyZWFrO2Nhc2UgMzc6ZS5zaGlmdEtleT9hPS0xOihlLnByZXZlbnREZWZhdWx0KCkscj0tMSk7YnJlYWs7Y2FzZSAzOTplLnNoaWZ0S2V5P2E9MTooZS5wcmV2ZW50RGVmYXVsdCgpLHI9MSk7YnJlYWs7Y2FzZSAzODplLnNoaWZ0S2V5P249MTooZS5wcmV2ZW50RGVmYXVsdCgpLGk9LTEpO2JyZWFrO2Nhc2UgNDA6ZS5zaGlmdEtleT9uPS0xOihpPTEsZS5wcmV2ZW50RGVmYXVsdCgpKTticmVhaztkZWZhdWx0OnJldHVybn12YXIgcz10aGlzLl9tYXAsbz1zLmdldFpvb20oKSxsPXtkdXJhdGlvbjozMDAsZGVsYXlFbmRFdmVudHM6NTAwLGVhc2luZzplYXNlT3V0LHpvb206dD9NYXRoLnJvdW5kKG8pK3QqKGUuc2hpZnRLZXk/MjoxKTpvLGJlYXJpbmc6cy5nZXRCZWFyaW5nKCkrYSpiZWFyaW5nU3RlcCxwaXRjaDpzLmdldFBpdGNoKCkrbipwaXRjaFN0ZXAsb2Zmc2V0OlstcipwYW5TdGVwLC1pKnBhblN0ZXBdLGNlbnRlcjpzLmdldENlbnRlcigpfTtzLmVhc2VUbyhsLHtvcmlnaW5hbEV2ZW50OmV9KX19LG1vZHVsZS5leHBvcnRzPUtleWJvYXJkSGFuZGxlcjtcbn0se1wiLi4vLi4vdXRpbC91dGlsXCI6MjIzfV0sMTk0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSxicm93c2VyPV9kZXJlcV8oXCIuLi8uLi91dGlsL2Jyb3dzZXJcIiksd2luZG93PV9kZXJlcV8oXCIuLi8uLi91dGlsL3dpbmRvd1wiKSx1YT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLGZpcmVmb3g9LTEhPT11YS5pbmRleE9mKFwiZmlyZWZveFwiKSxzYWZhcmk9LTEhPT11YS5pbmRleE9mKFwic2FmYXJpXCIpJiYtMT09PXVhLmluZGV4T2YoXCJjaHJvbVwiKSxTY3JvbGxab29tSGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHV0aWwuYmluZEFsbChbXCJfb25XaGVlbFwiLFwiX29uVGltZW91dFwiXSx0aGlzKX07U2Nyb2xsWm9vbUhhbmRsZXIucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sU2Nyb2xsWm9vbUhhbmRsZXIucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbihlKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZWwuYWRkRXZlbnRMaXN0ZW5lcihcIndoZWVsXCIsdGhpcy5fb25XaGVlbCwhMSksdGhpcy5fZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNld2hlZWxcIix0aGlzLl9vbldoZWVsLCExKSx0aGlzLl9lbmFibGVkPSEwLHRoaXMuX2Fyb3VuZENlbnRlcj1lJiZcImNlbnRlclwiPT09ZS5hcm91bmQpfSxTY3JvbGxab29tSGFuZGxlci5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwid2hlZWxcIix0aGlzLl9vbldoZWVsKSx0aGlzLl9lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V3aGVlbFwiLHRoaXMuX29uV2hlZWwpLHRoaXMuX2VuYWJsZWQ9ITEpfSxTY3JvbGxab29tSGFuZGxlci5wcm90b3R5cGUuX29uV2hlZWw9ZnVuY3Rpb24oZSl7dmFyIHQ9MDtcIndoZWVsXCI9PT1lLnR5cGU/KHQ9ZS5kZWx0YVksZmlyZWZveCYmZS5kZWx0YU1vZGU9PT13aW5kb3cuV2hlZWxFdmVudC5ET01fREVMVEFfUElYRUwmJih0Lz1icm93c2VyLmRldmljZVBpeGVsUmF0aW8pLGUuZGVsdGFNb2RlPT09d2luZG93LldoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkUmJih0Kj00MCkpOlwibW91c2V3aGVlbFwiPT09ZS50eXBlJiYodD0tZS53aGVlbERlbHRhWSxzYWZhcmkmJih0Lz0zKSk7dmFyIG89YnJvd3Nlci5ub3coKSxpPW8tKHRoaXMuX3RpbWV8fDApO3RoaXMuX3Bvcz1ET00ubW91c2VQb3ModGhpcy5fZWwsZSksdGhpcy5fdGltZT1vLDAhPT10JiZ0JTQuMDAwMjQ0MTQwNjI1PT0wP3RoaXMuX3R5cGU9XCJ3aGVlbFwiOjAhPT10JiZNYXRoLmFicyh0KTw0P3RoaXMuX3R5cGU9XCJ0cmFja3BhZFwiOmk+NDAwPyh0aGlzLl90eXBlPW51bGwsdGhpcy5fbGFzdFZhbHVlPXQsdGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX29uVGltZW91dCw0MCkpOnRoaXMuX3R5cGV8fCh0aGlzLl90eXBlPU1hdGguYWJzKGkqdCk8MjAwP1widHJhY2twYWRcIjpcIndoZWVsXCIsdGhpcy5fdGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSx0aGlzLl90aW1lb3V0PW51bGwsdCs9dGhpcy5fbGFzdFZhbHVlKSksZS5zaGlmdEtleSYmdCYmKHQvPTQpLHRoaXMuX3R5cGUmJnRoaXMuX3pvb20oLXQsZSksZS5wcmV2ZW50RGVmYXVsdCgpfSxTY3JvbGxab29tSGFuZGxlci5wcm90b3R5cGUuX29uVGltZW91dD1mdW5jdGlvbigpe3RoaXMuX3R5cGU9XCJ3aGVlbFwiLHRoaXMuX3pvb20oLXRoaXMuX2xhc3RWYWx1ZSl9LFNjcm9sbFpvb21IYW5kbGVyLnByb3RvdHlwZS5fem9vbT1mdW5jdGlvbihlLHQpe2lmKDAhPT1lKXt2YXIgbz10aGlzLl9tYXAsaT0yLygxK01hdGguZXhwKC1NYXRoLmFicyhlLzEwMCkpKTtlPDAmJjAhPT1pJiYoaT0xL2kpO3ZhciBsPW8uZWFzZT9vLmVhc2UudG86by50cmFuc2Zvcm0uc2NhbGUscz1vLnRyYW5zZm9ybS5zY2FsZVpvb20obCppKTtvLnpvb21UbyhzLHtkdXJhdGlvbjpcIndoZWVsXCI9PT10aGlzLl90eXBlPzIwMDowLGFyb3VuZDp0aGlzLl9hcm91bmRDZW50ZXI/by5nZXRDZW50ZXIoKTpvLnVucHJvamVjdCh0aGlzLl9wb3MpLGRlbGF5RW5kRXZlbnRzOjIwMCxzbW9vdGhFYXNpbmc6ITB9LHtvcmlnaW5hbEV2ZW50OnR9KX19LG1vZHVsZS5leHBvcnRzPVNjcm9sbFpvb21IYW5kbGVyO1xufSx7XCIuLi8uLi91dGlsL2Jyb3dzZXJcIjoyMDIsXCIuLi8uLi91dGlsL2RvbVwiOjIwOSxcIi4uLy4uL3V0aWwvdXRpbFwiOjIyMyxcIi4uLy4uL3V0aWwvd2luZG93XCI6MjA0fV0sMTk1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBET009X2RlcmVxXyhcIi4uLy4uL3V0aWwvZG9tXCIpLHV0aWw9X2RlcmVxXyhcIi4uLy4uL3V0aWwvdXRpbFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uLy4uL3V0aWwvd2luZG93XCIpLGluZXJ0aWFMaW5lYXJpdHk9LjE1LGluZXJ0aWFFYXNpbmc9dXRpbC5iZXppZXIoMCwwLGluZXJ0aWFMaW5lYXJpdHksMSksaW5lcnRpYURlY2VsZXJhdGlvbj0xMixpbmVydGlhTWF4U3BlZWQ9Mi41LHNpZ25pZmljYW50U2NhbGVUaHJlc2hvbGQ9LjE1LHNpZ25pZmljYW50Um90YXRlVGhyZXNob2xkPTEwLFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXI9ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fZWw9dC5nZXRDYW52YXNDb250YWluZXIoKSx1dGlsLmJpbmRBbGwoW1wiX29uU3RhcnRcIixcIl9vbk1vdmVcIixcIl9vbkVuZFwiXSx0aGlzKX07VG91Y2hab29tUm90YXRlSGFuZGxlci5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSxUb3VjaFpvb21Sb3RhdGVIYW5kbGVyLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VsLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC10b3VjaC16b29tLXJvdGF0ZVwiKSx0aGlzLl9lbC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLHRoaXMuX29uU3RhcnQsITEpLHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fYXJvdW5kQ2VudGVyPXQmJlwiY2VudGVyXCI9PT10LmFyb3VuZCl9LFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXIucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpJiYodGhpcy5fZWwuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLXRvdWNoLXpvb20tcm90YXRlXCIpLHRoaXMuX2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fb25TdGFydCksdGhpcy5fZW5hYmxlZD0hMSl9LFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXIucHJvdG90eXBlLmRpc2FibGVSb3RhdGlvbj1mdW5jdGlvbigpe3RoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITB9LFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXIucHJvdG90eXBlLmVuYWJsZVJvdGF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5fcm90YXRpb25EaXNhYmxlZD0hMX0sVG91Y2hab29tUm90YXRlSGFuZGxlci5wcm90b3R5cGUuX29uU3RhcnQ9ZnVuY3Rpb24odCl7aWYoMj09PXQudG91Y2hlcy5sZW5ndGgpe3ZhciBlPURPTS5tb3VzZVBvcyh0aGlzLl9lbCx0LnRvdWNoZXNbMF0pLG89RE9NLm1vdXNlUG9zKHRoaXMuX2VsLHQudG91Y2hlc1sxXSk7dGhpcy5fc3RhcnRWZWM9ZS5zdWIobyksdGhpcy5fc3RhcnRTY2FsZT10aGlzLl9tYXAudHJhbnNmb3JtLnNjYWxlLHRoaXMuX3N0YXJ0QmVhcmluZz10aGlzLl9tYXAudHJhbnNmb3JtLmJlYXJpbmcsdGhpcy5fZ2VzdHVyZUludGVudD12b2lkIDAsdGhpcy5faW5lcnRpYT1bXSx3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLHRoaXMuX29uTW92ZSwhMSksd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMuX29uRW5kLCExKX19LFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXIucHJvdG90eXBlLl9vbk1vdmU9ZnVuY3Rpb24odCl7aWYoMj09PXQudG91Y2hlcy5sZW5ndGgpe3ZhciBlPURPTS5tb3VzZVBvcyh0aGlzLl9lbCx0LnRvdWNoZXNbMF0pLG89RE9NLm1vdXNlUG9zKHRoaXMuX2VsLHQudG91Y2hlc1sxXSksaT1lLmFkZChvKS5kaXYoMiksbj1lLnN1YihvKSxhPW4ubWFnKCkvdGhpcy5fc3RhcnRWZWMubWFnKCkscj10aGlzLl9yb3RhdGlvbkRpc2FibGVkPzA6MTgwKm4uYW5nbGVXaXRoKHRoaXMuX3N0YXJ0VmVjKS9NYXRoLlBJLHM9dGhpcy5fbWFwO2lmKHRoaXMuX2dlc3R1cmVJbnRlbnQpe3ZhciBoPXtkdXJhdGlvbjowLGFyb3VuZDpzLnVucHJvamVjdChpKX07XCJyb3RhdGVcIj09PXRoaXMuX2dlc3R1cmVJbnRlbnQmJihoLmJlYXJpbmc9dGhpcy5fc3RhcnRCZWFyaW5nK3IpLFwiem9vbVwiIT09dGhpcy5fZ2VzdHVyZUludGVudCYmXCJyb3RhdGVcIiE9PXRoaXMuX2dlc3R1cmVJbnRlbnR8fChoLnpvb209cy50cmFuc2Zvcm0uc2NhbGVab29tKHRoaXMuX3N0YXJ0U2NhbGUqYSkpLHMuc3RvcCgpLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpLHRoaXMuX2luZXJ0aWEucHVzaChbRGF0ZS5ub3coKSxhLGldKSxzLmVhc2VUbyhoLHtvcmlnaW5hbEV2ZW50OnR9KX1lbHNle3ZhciB1PU1hdGguYWJzKDEtYSk+c2lnbmlmaWNhbnRTY2FsZVRocmVzaG9sZDtNYXRoLmFicyhyKT5zaWduaWZpY2FudFJvdGF0ZVRocmVzaG9sZD90aGlzLl9nZXN0dXJlSW50ZW50PVwicm90YXRlXCI6dSYmKHRoaXMuX2dlc3R1cmVJbnRlbnQ9XCJ6b29tXCIpLHRoaXMuX2dlc3R1cmVJbnRlbnQmJih0aGlzLl9zdGFydFZlYz1uLHRoaXMuX3N0YXJ0U2NhbGU9cy50cmFuc2Zvcm0uc2NhbGUsdGhpcy5fc3RhcnRCZWFyaW5nPXMudHJhbnNmb3JtLmJlYXJpbmcpfXQucHJldmVudERlZmF1bHQoKX19LFRvdWNoWm9vbVJvdGF0ZUhhbmRsZXIucHJvdG90eXBlLl9vbkVuZD1mdW5jdGlvbih0KXt3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLHRoaXMuX29uTW92ZSksd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMuX29uRW5kKSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKTt2YXIgZT10aGlzLl9pbmVydGlhLG89dGhpcy5fbWFwO2lmKGUubGVuZ3RoPDIpcmV0dXJuIHZvaWQgby5zbmFwVG9Ob3J0aCh7fSx7b3JpZ2luYWxFdmVudDp0fSk7dmFyIGk9ZVtlLmxlbmd0aC0xXSxuPWVbMF0sYT1vLnRyYW5zZm9ybS5zY2FsZVpvb20odGhpcy5fc3RhcnRTY2FsZSppWzFdKSxyPW8udHJhbnNmb3JtLnNjYWxlWm9vbSh0aGlzLl9zdGFydFNjYWxlKm5bMV0pLHM9YS1yLGg9KGlbMF0tblswXSkvMWUzLHU9aVsyXTtpZigwPT09aHx8YT09PXIpcmV0dXJuIHZvaWQgby5zbmFwVG9Ob3J0aCh7fSx7b3JpZ2luYWxFdmVudDp0fSk7dmFyIGw9cyppbmVydGlhTGluZWFyaXR5L2g7TWF0aC5hYnMobCk+aW5lcnRpYU1heFNwZWVkJiYobD1sPjA/aW5lcnRpYU1heFNwZWVkOi1pbmVydGlhTWF4U3BlZWQpO3ZhciBkPTFlMypNYXRoLmFicyhsLyhpbmVydGlhRGVjZWxlcmF0aW9uKmluZXJ0aWFMaW5lYXJpdHkpKSxjPWErbCpkLzJlMztjPDAmJihjPTApLG8uZWFzZVRvKHt6b29tOmMsZHVyYXRpb246ZCxlYXNpbmc6aW5lcnRpYUVhc2luZyxhcm91bmQ6dGhpcy5fYXJvdW5kQ2VudGVyP28uZ2V0Q2VudGVyKCk6by51bnByb2plY3QodSl9LHtvcmlnaW5hbEV2ZW50OnR9KX0sVG91Y2hab29tUm90YXRlSGFuZGxlci5wcm90b3R5cGUuX2RyYWluSW5lcnRpYUJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9pbmVydGlhLGU9RGF0ZS5ub3coKTt0Lmxlbmd0aD4yJiZlLXRbMF1bMF0+MTYwOyl0LnNoaWZ0KCl9LG1vZHVsZS5leHBvcnRzPVRvdWNoWm9vbVJvdGF0ZUhhbmRsZXI7XG59LHtcIi4uLy4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vLi4vdXRpbC93aW5kb3dcIjoyMDR9XSwxOTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIHV0aWw9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSx3aW5kb3c9X2RlcmVxXyhcIi4uL3V0aWwvd2luZG93XCIpLEhhc2g9ZnVuY3Rpb24oKXt1dGlsLmJpbmRBbGwoW1wiX29uSGFzaENoYW5nZVwiLFwiX3VwZGF0ZUhhc2hcIl0sdGhpcyl9O0hhc2gucHJvdG90eXBlLmFkZFRvPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXA9dCx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIix0aGlzLl9vbkhhc2hDaGFuZ2UsITEpLHRoaXMuX21hcC5vbihcIm1vdmVlbmRcIix0aGlzLl91cGRhdGVIYXNoKSx0aGlzfSxIYXNoLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsdGhpcy5fb25IYXNoQ2hhbmdlLCExKSx0aGlzLl9tYXAub2ZmKFwibW92ZWVuZFwiLHRoaXMuX3VwZGF0ZUhhc2gpLGRlbGV0ZSB0aGlzLl9tYXAsdGhpc30sSGFzaC5wcm90b3R5cGUuZ2V0SGFzaFN0cmluZz1mdW5jdGlvbih0KXt2YXIgYT10aGlzLl9tYXAuZ2V0Q2VudGVyKCksaD1NYXRoLnJvdW5kKDEwMCp0aGlzLl9tYXAuZ2V0Wm9vbSgpKS8xMDAsZT1NYXRoLm1heCgwLE1hdGguY2VpbChNYXRoLmxvZyhoKS9NYXRoLkxOMikpLG49TWF0aC5yb3VuZChhLmxuZypNYXRoLnBvdygxMCxlKSkvTWF0aC5wb3coMTAsZSksbz1NYXRoLnJvdW5kKGEubGF0Kk1hdGgucG93KDEwLGUpKS9NYXRoLnBvdygxMCxlKSxpPXRoaXMuX21hcC5nZXRCZWFyaW5nKCkscz10aGlzLl9tYXAuZ2V0UGl0Y2goKSxyPVwiXCI7cmV0dXJuIHIrPXQ/XCIjL1wiK24rXCIvXCIrbytcIi9cIitoOlwiI1wiK2grXCIvXCIrbytcIi9cIituLChpfHxzKSYmKHIrPVwiL1wiK01hdGgucm91bmQoMTAqaSkvMTApLHMmJihyKz1cIi9cIitNYXRoLnJvdW5kKHMpKSxyfSxIYXNoLnByb3RvdHlwZS5fb25IYXNoQ2hhbmdlPWZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZShcIiNcIixcIlwiKS5zcGxpdChcIi9cIik7cmV0dXJuIHQubGVuZ3RoPj0zJiYodGhpcy5fbWFwLmp1bXBUbyh7Y2VudGVyOlsrdFsyXSwrdFsxXV0sem9vbTordFswXSxiZWFyaW5nOisodFszXXx8MCkscGl0Y2g6Kyh0WzRdfHwwKX0pLCEwKX0sSGFzaC5wcm90b3R5cGUuX3VwZGF0ZUhhc2g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEhhc2hTdHJpbmcoKTt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoXCJcIixcIlwiLHQpfSxtb2R1bGUuZXhwb3J0cz1IYXNoO1xufSx7XCIuLi91dGlsL3V0aWxcIjoyMjMsXCIuLi91dGlsL3dpbmRvd1wiOjIwNH1dLDE5NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByZW1vdmVOb2RlKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfXZhciB1dGlsPV9kZXJlcV8oXCIuLi91dGlsL3V0aWxcIiksYnJvd3Nlcj1fZGVyZXFfKFwiLi4vdXRpbC9icm93c2VyXCIpLHdpbmRvdz1fZGVyZXFfKFwiLi4vdXRpbC93aW5kb3dcIikscmVmPV9kZXJlcV8oXCIuLi91dGlsL3dpbmRvd1wiKSxIVE1MSW1hZ2VFbGVtZW50PXJlZi5IVE1MSW1hZ2VFbGVtZW50LERPTT1fZGVyZXFfKFwiLi4vdXRpbC9kb21cIiksYWpheD1fZGVyZXFfKFwiLi4vdXRpbC9hamF4XCIpLFN0eWxlPV9kZXJlcV8oXCIuLi9zdHlsZS9zdHlsZVwiKSxBbmltYXRpb25Mb29wPV9kZXJlcV8oXCIuLi9zdHlsZS9hbmltYXRpb25fbG9vcFwiKSxQYWludGVyPV9kZXJlcV8oXCIuLi9yZW5kZXIvcGFpbnRlclwiKSxUcmFuc2Zvcm09X2RlcmVxXyhcIi4uL2dlby90cmFuc2Zvcm1cIiksSGFzaD1fZGVyZXFfKFwiLi9oYXNoXCIpLGJpbmRIYW5kbGVycz1fZGVyZXFfKFwiLi9iaW5kX2hhbmRsZXJzXCIpLENhbWVyYT1fZGVyZXFfKFwiLi9jYW1lcmFcIiksTG5nTGF0PV9kZXJlcV8oXCIuLi9nZW8vbG5nX2xhdFwiKSxMbmdMYXRCb3VuZHM9X2RlcmVxXyhcIi4uL2dlby9sbmdfbGF0X2JvdW5kc1wiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxBdHRyaWJ1dGlvbkNvbnRyb2w9X2RlcmVxXyhcIi4vY29udHJvbC9hdHRyaWJ1dGlvbl9jb250cm9sXCIpLExvZ29Db250cm9sPV9kZXJlcV8oXCIuL2NvbnRyb2wvbG9nb19jb250cm9sXCIpLGlzU3VwcG9ydGVkPV9kZXJlcV8oXCJtYXBib3gtZ2wtc3VwcG9ydGVkXCIpO19kZXJlcV8oXCIuL2V2ZW50c1wiKTt2YXIgZGVmYXVsdE1pblpvb209MCxkZWZhdWx0TWF4Wm9vbT0yMixkZWZhdWx0T3B0aW9ucz17Y2VudGVyOlswLDBdLHpvb206MCxiZWFyaW5nOjAscGl0Y2g6MCxtaW5ab29tOmRlZmF1bHRNaW5ab29tLG1heFpvb206ZGVmYXVsdE1heFpvb20saW50ZXJhY3RpdmU6ITAsc2Nyb2xsWm9vbTohMCxib3hab29tOiEwLGRyYWdSb3RhdGU6ITAsZHJhZ1BhbjohMCxrZXlib2FyZDohMCxkb3VibGVDbGlja1pvb206ITAsdG91Y2hab29tUm90YXRlOiEwLGJlYXJpbmdTbmFwOjcsaGFzaDohMSxhdHRyaWJ1dGlvbkNvbnRyb2w6ITAsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDohMSxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITEsdHJhY2tSZXNpemU6ITAscmVuZGVyV29ybGRDb3BpZXM6ITAscmVmcmVzaEV4cGlyZWRUaWxlczohMCxtYXhUaWxlQ2FjaGVTaXplOm51bGwsdHJhbnNmb3JtUmVxdWVzdDpudWxsfSxNYXA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbz10aGlzO2lmKGU9dXRpbC5leHRlbmQoe30sZGVmYXVsdE9wdGlvbnMsZSksbnVsbCE9ZS5taW5ab29tJiZudWxsIT1lLm1heFpvb20mJmUubWluWm9vbT5lLm1heFpvb20pdGhyb3cgbmV3IEVycm9yKFwibWF4Wm9vbSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5ab29tXCIpO3ZhciByPW5ldyBUcmFuc2Zvcm0oZS5taW5ab29tLGUubWF4Wm9vbSxlLnJlbmRlcldvcmxkQ29waWVzKTt0LmNhbGwodGhpcyxyLGUpLHRoaXMuX2ludGVyYWN0aXZlPWUuaW50ZXJhY3RpdmUsdGhpcy5fbWF4VGlsZUNhY2hlU2l6ZT1lLm1heFRpbGVDYWNoZVNpemUsdGhpcy5fZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdD1lLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQsdGhpcy5fcHJlc2VydmVEcmF3aW5nQnVmZmVyPWUucHJlc2VydmVEcmF3aW5nQnVmZmVyLHRoaXMuX3RyYWNrUmVzaXplPWUudHJhY2tSZXNpemUsdGhpcy5fYmVhcmluZ1NuYXA9ZS5iZWFyaW5nU25hcCx0aGlzLl9yZWZyZXNoRXhwaXJlZFRpbGVzPWUucmVmcmVzaEV4cGlyZWRUaWxlczt2YXIgaT1lLnRyYW5zZm9ybVJlcXVlc3Q7aWYodGhpcy5fdHJhbnNmb3JtUmVxdWVzdD1pP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlKXx8e3VybDp0fX06ZnVuY3Rpb24odCl7cmV0dXJue3VybDp0fX0sXCJzdHJpbmdcIj09dHlwZW9mIGUuY29udGFpbmVyKXt2YXIgcz13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZS5jb250YWluZXIpO2lmKCFzKXRocm93IG5ldyBFcnJvcihcIkNvbnRhaW5lciAnXCIrZS5jb250YWluZXIrXCInIG5vdCBmb3VuZC5cIik7dGhpcy5fY29udGFpbmVyPXN9ZWxzZSB0aGlzLl9jb250YWluZXI9ZS5jb250YWluZXI7dGhpcy5hbmltYXRpb25Mb29wPW5ldyBBbmltYXRpb25Mb29wLGUubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhlLm1heEJvdW5kcyksdXRpbC5iaW5kQWxsKFtcIl9vbldpbmRvd09ubGluZVwiLFwiX29uV2luZG93UmVzaXplXCIsXCJfY29udGV4dExvc3RcIixcIl9jb250ZXh0UmVzdG9yZWRcIixcIl91cGRhdGVcIixcIl9yZW5kZXJcIixcIl9vbkRhdGFcIixcIl9vbkRhdGFMb2FkaW5nXCJdLHRoaXMpLHRoaXMuX3NldHVwQ29udGFpbmVyKCksdGhpcy5fc2V0dXBQYWludGVyKCksdGhpcy5vbihcIm1vdmVcIix0aGlzLl91cGRhdGUuYmluZCh0aGlzLCExKSksdGhpcy5vbihcInpvb21cIix0aGlzLl91cGRhdGUuYmluZCh0aGlzLCEwKSksdGhpcy5vbihcIm1vdmVlbmRcIixmdW5jdGlvbigpe28uYW5pbWF0aW9uTG9vcC5zZXQoMzAwKSxvLl9yZXJlbmRlcigpfSksdm9pZCAwIT09d2luZG93JiYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIix0aGlzLl9vbldpbmRvd09ubGluZSwhMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0aGlzLl9vbldpbmRvd1Jlc2l6ZSwhMSkpLGJpbmRIYW5kbGVycyh0aGlzLGUpLHRoaXMuX2hhc2g9ZS5oYXNoJiYobmV3IEhhc2gpLmFkZFRvKHRoaXMpLHRoaXMuX2hhc2gmJnRoaXMuX2hhc2guX29uSGFzaENoYW5nZSgpfHx0aGlzLmp1bXBUbyh7Y2VudGVyOmUuY2VudGVyLHpvb206ZS56b29tLGJlYXJpbmc6ZS5iZWFyaW5nLHBpdGNoOmUucGl0Y2h9KSx0aGlzLl9jbGFzc2VzPVtdLHRoaXMucmVzaXplKCksZS5jbGFzc2VzJiZ0aGlzLnNldENsYXNzZXMoZS5jbGFzc2VzKSxlLnN0eWxlJiZ0aGlzLnNldFN0eWxlKGUuc3R5bGUse2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseTplLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseX0pLGUuYXR0cmlidXRpb25Db250cm9sJiZ0aGlzLmFkZENvbnRyb2wobmV3IEF0dHJpYnV0aW9uQ29udHJvbCksdGhpcy5hZGRDb250cm9sKG5ldyBMb2dvQ29udHJvbCxlLmxvZ29Qb3NpdGlvbiksdGhpcy5vbihcInN0eWxlLmxvYWRcIixmdW5jdGlvbigpe3RoaXMudHJhbnNmb3JtLnVubW9kaWZpZWQmJnRoaXMuanVtcFRvKHRoaXMuc3R5bGUuc3R5bGVzaGVldCksdGhpcy5zdHlsZS51cGRhdGUodGhpcy5fY2xhc3Nlcyx7dHJhbnNpdGlvbjohMX0pfSksdGhpcy5vbihcImRhdGFcIix0aGlzLl9vbkRhdGEpLHRoaXMub24oXCJkYXRhbG9hZGluZ1wiLHRoaXMuX29uRGF0YUxvYWRpbmcpfXQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3ZhciBvPXtzaG93VGlsZUJvdW5kYXJpZXM6e30sc2hvd0NvbGxpc2lvbkJveGVzOnt9LHNob3dPdmVyZHJhd0luc3BlY3Rvcjp7fSxyZXBhaW50Ont9LHZlcnRpY2VzOnt9fTtyZXR1cm4gZS5wcm90b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJnQuZ2V0RGVmYXVsdFBvc2l0aW9uJiYoZT10LmdldERlZmF1bHRQb3NpdGlvbigpKSx2b2lkIDA9PT1lJiYoZT1cInRvcC1yaWdodFwiKTt2YXIgbz10Lm9uQWRkKHRoaXMpLHI9dGhpcy5fY29udHJvbFBvc2l0aW9uc1tlXTtyZXR1cm4tMSE9PWUuaW5kZXhPZihcImJvdHRvbVwiKT9yLmluc2VydEJlZm9yZShvLHIuZmlyc3RDaGlsZCk6ci5hcHBlbmRDaGlsZChvKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVDb250cm9sPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm9uUmVtb3ZlKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHV0aWwud2Fybk9uY2UoXCJTdHlsZSBjbGFzc2VzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZSBvZiBNYXBib3ggR0wgSlMuXCIpLHRoaXMuX2NsYXNzZXMuaW5kZXhPZih0KT49MHx8XCJcIj09PXQ/dGhpczoodGhpcy5fY2xhc3Nlcy5wdXNoKHQpLHRoaXMuX2NsYXNzT3B0aW9ucz1lLHRoaXMuc3R5bGUmJnRoaXMuc3R5bGUudXBkYXRlQ2xhc3NlcygpLHRoaXMuX3VwZGF0ZSghMCkpfSxlLnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3V0aWwud2Fybk9uY2UoXCJTdHlsZSBjbGFzc2VzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZSBvZiBNYXBib3ggR0wgSlMuXCIpO3ZhciBvPXRoaXMuX2NsYXNzZXMuaW5kZXhPZih0KTtyZXR1cm4gbzwwfHxcIlwiPT09dD90aGlzOih0aGlzLl9jbGFzc2VzLnNwbGljZShvLDEpLHRoaXMuX2NsYXNzT3B0aW9ucz1lLHRoaXMuc3R5bGUmJnRoaXMuc3R5bGUudXBkYXRlQ2xhc3NlcygpLHRoaXMuX3VwZGF0ZSghMCkpfSxlLnByb3RvdHlwZS5zZXRDbGFzc2VzPWZ1bmN0aW9uKHQsZSl7dXRpbC53YXJuT25jZShcIlN0eWxlIGNsYXNzZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlIG9mIE1hcGJveCBHTCBKUy5cIik7Zm9yKHZhciBvPXt9LHI9MDtyPHQubGVuZ3RoO3IrKylcIlwiIT09dFtyXSYmKG9bdFtyXV09ITApO3JldHVybiB0aGlzLl9jbGFzc2VzPU9iamVjdC5rZXlzKG8pLHRoaXMuX2NsYXNzT3B0aW9ucz1lLHRoaXMuc3R5bGUmJnRoaXMuc3R5bGUudXBkYXRlQ2xhc3NlcygpLHRoaXMuX3VwZGF0ZSghMCl9LGUucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiB1dGlsLndhcm5PbmNlKFwiU3R5bGUgY2xhc3NlcyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIHJlbGVhc2Ugb2YgTWFwYm94IEdMIEpTLlwiKSx0aGlzLl9jbGFzc2VzLmluZGV4T2YodCk+PTB9LGUucHJvdG90eXBlLmdldENsYXNzZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdXRpbC53YXJuT25jZShcIlN0eWxlIGNsYXNzZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlIG9mIE1hcGJveCBHTCBKUy5cIiksdGhpcy5fY2xhc3Nlc30sZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGFpbmVyRGltZW5zaW9ucygpLGU9dFswXSxvPXRbMV07cmV0dXJuIHRoaXMuX3Jlc2l6ZUNhbnZhcyhlLG8pLHRoaXMudHJhbnNmb3JtLnJlc2l6ZShlLG8pLHRoaXMucGFpbnRlci5yZXNpemUoZSxvKSx0aGlzLmZpcmUoXCJtb3Zlc3RhcnRcIikuZmlyZShcIm1vdmVcIikuZmlyZShcInJlc2l6ZVwiKS5maXJlKFwibW92ZWVuZFwiKX0sZS5wcm90b3R5cGUuZ2V0Qm91bmRzPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IExuZ0xhdEJvdW5kcyh0aGlzLnRyYW5zZm9ybS5wb2ludExvY2F0aW9uKG5ldyBQb2ludCgwLHRoaXMudHJhbnNmb3JtLmhlaWdodCkpLHRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24obmV3IFBvaW50KHRoaXMudHJhbnNmb3JtLndpZHRoLDApKSk7cmV0dXJuKHRoaXMudHJhbnNmb3JtLmFuZ2xlfHx0aGlzLnRyYW5zZm9ybS5waXRjaCkmJih0LmV4dGVuZCh0aGlzLnRyYW5zZm9ybS5wb2ludExvY2F0aW9uKG5ldyBQb2ludCh0aGlzLnRyYW5zZm9ybS5zaXplLngsMCkpKSx0LmV4dGVuZCh0aGlzLnRyYW5zZm9ybS5wb2ludExvY2F0aW9uKG5ldyBQb2ludCgwLHRoaXMudHJhbnNmb3JtLnNpemUueSkpKSksdH0sZS5wcm90b3R5cGUuZ2V0TWF4Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLmxhdFJhbmdlJiYyPT09dGhpcy50cmFuc2Zvcm0ubGF0UmFuZ2UubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybS5sbmdSYW5nZSYmMj09PXRoaXMudHJhbnNmb3JtLmxuZ1JhbmdlLmxlbmd0aD9uZXcgTG5nTGF0Qm91bmRzKFt0aGlzLnRyYW5zZm9ybS5sbmdSYW5nZVswXSx0aGlzLnRyYW5zZm9ybS5sYXRSYW5nZVswXV0sW3RoaXMudHJhbnNmb3JtLmxuZ1JhbmdlWzFdLHRoaXMudHJhbnNmb3JtLmxhdFJhbmdlWzFdXSk6bnVsbH0sZS5wcm90b3R5cGUuc2V0TWF4Qm91bmRzPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPUxuZ0xhdEJvdW5kcy5jb252ZXJ0KHQpO3RoaXMudHJhbnNmb3JtLmxuZ1JhbmdlPVtlLmdldFdlc3QoKSxlLmdldEVhc3QoKV0sdGhpcy50cmFuc2Zvcm0ubGF0UmFuZ2U9W2UuZ2V0U291dGgoKSxlLmdldE5vcnRoKCldLHRoaXMudHJhbnNmb3JtLl9jb25zdHJhaW4oKSx0aGlzLl91cGRhdGUoKX1lbHNlIG51bGwhPT10JiZ2b2lkIDAhPT10fHwodGhpcy50cmFuc2Zvcm0ubG5nUmFuZ2U9bnVsbCx0aGlzLnRyYW5zZm9ybS5sYXRSYW5nZT1udWxsLHRoaXMuX3VwZGF0ZSgpKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuc2V0TWluWm9vbT1mdW5jdGlvbih0KXtpZigodD1udWxsPT09dHx8dm9pZCAwPT09dD9kZWZhdWx0TWluWm9vbTp0KT49ZGVmYXVsdE1pblpvb20mJnQ8PXRoaXMudHJhbnNmb3JtLm1heFpvb20pcmV0dXJuIHRoaXMudHJhbnNmb3JtLm1pblpvb209dCx0aGlzLl91cGRhdGUoKSx0aGlzLmdldFpvb20oKTx0JiZ0aGlzLnNldFpvb20odCksdGhpczt0aHJvdyBuZXcgRXJyb3IoXCJtaW5ab29tIG11c3QgYmUgYmV0d2VlbiBcIitkZWZhdWx0TWluWm9vbStcIiBhbmQgdGhlIGN1cnJlbnQgbWF4Wm9vbSwgaW5jbHVzaXZlXCIpfSxlLnByb3RvdHlwZS5nZXRNaW5ab29tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLm1pblpvb219LGUucHJvdG90eXBlLnNldE1heFpvb209ZnVuY3Rpb24odCl7aWYoKHQ9bnVsbD09PXR8fHZvaWQgMD09PXQ/ZGVmYXVsdE1heFpvb206dCk+PXRoaXMudHJhbnNmb3JtLm1pblpvb20pcmV0dXJuIHRoaXMudHJhbnNmb3JtLm1heFpvb209dCx0aGlzLl91cGRhdGUoKSx0aGlzLmdldFpvb20oKT50JiZ0aGlzLnNldFpvb20odCksdGhpczt0aHJvdyBuZXcgRXJyb3IoXCJtYXhab29tIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG1pblpvb21cIil9LGUucHJvdG90eXBlLmdldE1heFpvb209ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWF4Wm9vbX0sZS5wcm90b3R5cGUucHJvamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubG9jYXRpb25Qb2ludChMbmdMYXQuY29udmVydCh0KSl9LGUucHJvdG90eXBlLnVucHJvamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucG9pbnRMb2NhdGlvbihQb2ludC5jb252ZXJ0KHQpKX0sZS5wcm90b3R5cGUub249ZnVuY3Rpb24oZSxvLHIpe3ZhciBpPXRoaXM7aWYodm9pZCAwPT09cilyZXR1cm4gdC5wcm90b3R5cGUub24uY2FsbCh0aGlzLGUsbyk7dmFyIHM9ZnVuY3Rpb24oKXtpZihcIm1vdXNlZW50ZXJcIj09PWV8fFwibW91c2VvdmVyXCI9PT1lKXt2YXIgdD0hMTtyZXR1cm57bGF5ZXI6byxsaXN0ZW5lcjpyLGRlbGVnYXRlczp7bW91c2Vtb3ZlOmZ1bmN0aW9uKHMpe3ZhciBuPWkuZ2V0TGF5ZXIobyk/aS5xdWVyeVJlbmRlcmVkRmVhdHVyZXMocy5wb2ludCx7bGF5ZXJzOltvXX0pOltdO24ubGVuZ3RoP3R8fCh0PSEwLHIuY2FsbChpLHV0aWwuZXh0ZW5kKHtmZWF0dXJlczpufSxzLHt0eXBlOmV9KSkpOnQ9ITF9LG1vdXNlb3V0OmZ1bmN0aW9uKCl7dD0hMX19fX1pZihcIm1vdXNlbGVhdmVcIj09PWV8fFwibW91c2VvdXRcIj09PWUpe3ZhciBzPSExO3JldHVybntsYXllcjpvLGxpc3RlbmVyOnIsZGVsZWdhdGVzOnttb3VzZW1vdmU6ZnVuY3Rpb24odCl7KGkuZ2V0TGF5ZXIobyk/aS5xdWVyeVJlbmRlcmVkRmVhdHVyZXModC5wb2ludCx7bGF5ZXJzOltvXX0pOltdKS5sZW5ndGg/cz0hMDpzJiYocz0hMSxyLmNhbGwoaSx1dGlsLmV4dGVuZCh7fSx0LHt0eXBlOmV9KSkpfSxtb3VzZW91dDpmdW5jdGlvbih0KXtzJiYocz0hMSxyLmNhbGwoaSx1dGlsLmV4dGVuZCh7fSx0LHt0eXBlOmV9KSkpfX19fXZhciBuPWZ1bmN0aW9uKHQpe3ZhciBlPWkuZ2V0TGF5ZXIobyk/aS5xdWVyeVJlbmRlcmVkRmVhdHVyZXModC5wb2ludCx7bGF5ZXJzOltvXX0pOltdO2UubGVuZ3RoJiZyLmNhbGwoaSx1dGlsLmV4dGVuZCh7ZmVhdHVyZXM6ZX0sdCkpfTtyZXR1cm57bGF5ZXI6byxsaXN0ZW5lcjpyLGRlbGVnYXRlczooYT17fSxhW2VdPW4sYSl9O3ZhciBhfSgpO3RoaXMuX2RlbGVnYXRlZExpc3RlbmVycz10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnN8fHt9LHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1tlXT10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbZV18fFtdLHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1tlXS5wdXNoKHMpO2Zvcih2YXIgbiBpbiBzLmRlbGVnYXRlcylpLm9uKG4scy5kZWxlZ2F0ZXNbbl0pO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oZSxvLHIpe3ZhciBpPXRoaXM7aWYodm9pZCAwPT09cilyZXR1cm4gdC5wcm90b3R5cGUub2ZmLmNhbGwodGhpcyxlLG8pO2lmKHRoaXMuX2RlbGVnYXRlZExpc3RlbmVycyYmdGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzW2VdKWZvcih2YXIgcz10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbZV0sbj0wO248cy5sZW5ndGg7bisrKXt2YXIgYT1zW25dO2lmKGEubGF5ZXI9PT1vJiZhLmxpc3RlbmVyPT09cil7Zm9yKHZhciBoIGluIGEuZGVsZWdhdGVzKWkub2ZmKGgsYS5kZWxlZ2F0ZXNbaF0pO3JldHVybiBzLnNwbGljZShuLDEpLGl9fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoO2UtLTspdFtlXT1hcmd1bWVudHNbZV07dmFyIG8scj17fTtyZXR1cm4gMj09PXQubGVuZ3RoPyhvPWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXSk6MT09PXQubGVuZ3RoJiZmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFBvaW50fHxBcnJheS5pc0FycmF5KHQpfSh0WzBdKT9vPXRbMF06MT09PXQubGVuZ3RoJiYocj10WzBdKSx0aGlzLnN0eWxlP3RoaXMuc3R5bGUucXVlcnlSZW5kZXJlZEZlYXR1cmVzKHRoaXMuX21ha2VRdWVyeUdlb21ldHJ5KG8pLHIsdGhpcy50cmFuc2Zvcm0uem9vbSx0aGlzLnRyYW5zZm9ybS5hbmdsZSk6W119LGUucHJvdG90eXBlLl9tYWtlUXVlcnlHZW9tZXRyeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PVtQb2ludC5jb252ZXJ0KFswLDBdKSxQb2ludC5jb252ZXJ0KFt0aGlzLnRyYW5zZm9ybS53aWR0aCx0aGlzLnRyYW5zZm9ybS5oZWlnaHRdKV0pO3ZhciBvO2lmKHQgaW5zdGFuY2VvZiBQb2ludHx8XCJudW1iZXJcIj09dHlwZW9mIHRbMF0pe289W1BvaW50LmNvbnZlcnQodCldfWVsc2V7dmFyIHI9W1BvaW50LmNvbnZlcnQodFswXSksUG9pbnQuY29udmVydCh0WzFdKV07bz1bclswXSxuZXcgUG9pbnQoclsxXS54LHJbMF0ueSksclsxXSxuZXcgUG9pbnQoclswXS54LHJbMV0ueSksclswXV19cmV0dXJuIG89by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUudHJhbnNmb3JtLnBvaW50Q29vcmRpbmF0ZSh0KX0pfSxlLnByb3RvdHlwZS5xdWVyeVNvdXJjZUZlYXR1cmVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUucXVlcnlTb3VyY2VGZWF0dXJlcyh0LGUpfSxlLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbih0LGUpe2lmKCghZXx8ITEhPT1lLmRpZmYmJiFlLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSkmJnRoaXMuc3R5bGUmJnQmJiEodCBpbnN0YW5jZW9mIFN0eWxlKSYmXCJzdHJpbmdcIiE9dHlwZW9mIHQpdHJ5e3JldHVybiB0aGlzLnN0eWxlLnNldFN0YXRlKHQpJiZ0aGlzLl91cGRhdGUoITApLHRoaXN9Y2F0Y2godCl7dXRpbC53YXJuT25jZShcIlVuYWJsZSB0byBwZXJmb3JtIHN0eWxlIGRpZmY6IFwiKyh0Lm1lc3NhZ2V8fHQuZXJyb3J8fHQpK1wiLiAgUmVidWlsZGluZyB0aGUgc3R5bGUgZnJvbSBzY3JhdGNoLlwiKX1yZXR1cm4gdGhpcy5zdHlsZSYmKHRoaXMuc3R5bGUuc2V0RXZlbnRlZFBhcmVudChudWxsKSx0aGlzLnN0eWxlLl9yZW1vdmUoKSx0aGlzLm9mZihcInJvdGF0ZVwiLHRoaXMuc3R5bGUuX3JlZG9QbGFjZW1lbnQpLHRoaXMub2ZmKFwicGl0Y2hcIix0aGlzLnN0eWxlLl9yZWRvUGxhY2VtZW50KSx0aGlzLm9mZihcIm1vdmVcIix0aGlzLnN0eWxlLl9yZWRvUGxhY2VtZW50KSksdD8odGhpcy5zdHlsZT10IGluc3RhbmNlb2YgU3R5bGU/dDpuZXcgU3R5bGUodCx0aGlzLGV8fHt9KSx0aGlzLnN0eWxlLnNldEV2ZW50ZWRQYXJlbnQodGhpcyx7c3R5bGU6dGhpcy5zdHlsZX0pLHRoaXMub24oXCJyb3RhdGVcIix0aGlzLnN0eWxlLl9yZWRvUGxhY2VtZW50KSx0aGlzLm9uKFwicGl0Y2hcIix0aGlzLnN0eWxlLl9yZWRvUGxhY2VtZW50KSx0aGlzLm9uKFwibW92ZVwiLHRoaXMuc3R5bGUuX3JlZG9QbGFjZW1lbnQpLHRoaXMpOih0aGlzLnN0eWxlPW51bGwsdGhpcyl9LGUucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKCl7aWYodGhpcy5zdHlsZSlyZXR1cm4gdGhpcy5zdHlsZS5zZXJpYWxpemUoKX0sZS5wcm90b3R5cGUuaXNTdHlsZUxvYWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlP3RoaXMuc3R5bGUubG9hZGVkKCk6dXRpbC53YXJuT25jZShcIlRoZXJlIGlzIG5vIHN0eWxlIGFkZGVkIHRvIHRoZSBtYXAuXCIpfSxlLnByb3RvdHlwZS5hZGRTb3VyY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5hZGRTb3VyY2UodCxlKSx0aGlzLl91cGRhdGUoITApLHRoaXN9LGUucHJvdG90eXBlLmlzU291cmNlTG9hZGVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuc291cmNlQ2FjaGVzW3RdO3JldHVybiB2b2lkIDA9PT1lP3ZvaWQgdGhpcy5maXJlKFwiZXJyb3JcIix7ZXJyb3I6bmV3IEVycm9yKFwiVGhlcmUgaXMgbm8gc291cmNlIHdpdGggSUQgJ1wiK3QrXCInXCIpfSk6ZS5sb2FkZWQoKX0sZS5wcm90b3R5cGUuYXJlVGlsZXNMb2FkZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIGUgaW4gdCl7dmFyIG89dFtlXSxyPW8uX3RpbGVzO2Zvcih2YXIgaSBpbiByKXt2YXIgcz1yW2ldO2lmKFwibG9hZGVkXCIhPT1zLnN0YXRlJiZcImVycm9yZWRcIiE9PXMuc3RhdGUpcmV0dXJuITF9fXJldHVybiEwfSxlLnByb3RvdHlwZS5hZGRTb3VyY2VUeXBlPWZ1bmN0aW9uKHQsZSxvKXtyZXR1cm4gdGhpcy5zdHlsZS5hZGRTb3VyY2VUeXBlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVtb3ZlU291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZVNvdXJjZSh0KSx0aGlzLl91cGRhdGUoITApLHRoaXN9LGUucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRTb3VyY2UodCl9LGUucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9uKHQsZSxvKXt2b2lkIDA9PT1vJiYobz17fSk7dmFyIHI9by5waXhlbFJhdGlvO3ZvaWQgMD09PXImJihyPTEpO3ZhciBpPW8uc2RmO2lmKHZvaWQgMD09PWkmJihpPSExKSxlIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCllPWJyb3dzZXIuZ2V0SW1hZ2VEYXRhKGUpO2Vsc2UgaWYodm9pZCAwPT09ZS53aWR0aHx8dm9pZCAwPT09ZS5oZWlnaHQpcmV0dXJuIHRoaXMuZmlyZShcImVycm9yXCIse2Vycm9yOm5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIHRvIG1hcC5hZGRJbWFnZSgpLiBUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gYEhUTUxJbWFnZUVsZW1lbnRgLCBgSW1hZ2VEYXRhYCwgb3Igb2JqZWN0IHdpdGggYHdpZHRoYCwgYGhlaWdodGAsIGFuZCBgZGF0YWAgcHJvcGVydGllcyB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyBgSW1hZ2VEYXRhYFwiKX0pO3RoaXMuc3R5bGUuYWRkSW1hZ2UodCx7ZGF0YTplLHBpeGVsUmF0aW86cixzZGY6aX0pfSxlLnByb3RvdHlwZS5yZW1vdmVJbWFnZT1mdW5jdGlvbih0KXt0aGlzLnN0eWxlLnJlbW92ZUltYWdlKHQpfSxlLnByb3RvdHlwZS5sb2FkSW1hZ2U9ZnVuY3Rpb24odCxlKXthamF4LmdldEltYWdlKHRoaXMuX3RyYW5zZm9ybVJlcXVlc3QodCxhamF4LlJlc291cmNlVHlwZS5JbWFnZSksZSl9LGUucHJvdG90eXBlLmFkZExheWVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuYWRkTGF5ZXIodCxlKSx0aGlzLl91cGRhdGUoITApLHRoaXN9LGUucHJvdG90eXBlLm1vdmVMYXllcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLm1vdmVMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSghMCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3R5bGUucmVtb3ZlTGF5ZXIodCksdGhpcy5fdXBkYXRlKCEwKSx0aGlzfSxlLnByb3RvdHlwZS5nZXRMYXllcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXllcih0KX0sZS5wcm90b3R5cGUuc2V0RmlsdGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuc2V0RmlsdGVyKHQsZSksdGhpcy5fdXBkYXRlKCEwKSx0aGlzfSxlLnByb3RvdHlwZS5zZXRMYXllclpvb21SYW5nZT1mdW5jdGlvbih0LGUsbyl7cmV0dXJuIHRoaXMuc3R5bGUuc2V0TGF5ZXJab29tUmFuZ2UodCxlLG8pLHRoaXMuX3VwZGF0ZSghMCksdGhpc30sZS5wcm90b3R5cGUuZ2V0RmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldEZpbHRlcih0KX0sZS5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbyxyKXtyZXR1cm4gdGhpcy5zdHlsZS5zZXRQYWludFByb3BlcnR5KHQsZSxvLHIpLHRoaXMuX3VwZGF0ZSghMCksdGhpc30sZS5wcm90b3R5cGUuZ2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbyl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0UGFpbnRQcm9wZXJ0eSh0LGUsbyl9LGUucHJvdG90eXBlLnNldExheW91dFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxvKXtyZXR1cm4gdGhpcy5zdHlsZS5zZXRMYXlvdXRQcm9wZXJ0eSh0LGUsbyksdGhpcy5fdXBkYXRlKCEwKSx0aGlzfSxlLnByb3RvdHlwZS5nZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLmdldExheW91dFByb3BlcnR5KHQsZSl9LGUucHJvdG90eXBlLnNldExpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLnNldExpZ2h0KHQpLHRoaXMuX3VwZGF0ZSghMCksdGhpc30sZS5wcm90b3R5cGUuZ2V0TGlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMaWdodCgpfSxlLnByb3RvdHlwZS5nZXRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxlLnByb3RvdHlwZS5nZXRDYW52YXNDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FudmFzQ29udGFpbmVyfSxlLnByb3RvdHlwZS5nZXRDYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FudmFzfSxlLnByb3RvdHlwZS5fY29udGFpbmVyRGltZW5zaW9ucz1mdW5jdGlvbigpe3ZhciB0PTAsZT0wO3JldHVybiB0aGlzLl9jb250YWluZXImJih0PXRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aHx8NDAwLGU9dGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodHx8MzAwKSxbdCxlXX0sZS5wcm90b3R5cGUuX3NldHVwQ29udGFpbmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGFpbmVyO3QuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLW1hcFwiKTt2YXIgZT10aGlzLl9jYW52YXNDb250YWluZXI9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtY2FudmFzLWNvbnRhaW5lclwiLHQpO3RoaXMuX2ludGVyYWN0aXZlJiZlLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1pbnRlcmFjdGl2ZVwiKSx0aGlzLl9jYW52YXM9RE9NLmNyZWF0ZShcImNhbnZhc1wiLFwibWFwYm94Z2wtY2FudmFzXCIsZSksdGhpcy5fY2FudmFzLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcIndlYmdsY29udGV4dGxvc3RcIix0aGlzLl9jb250ZXh0TG9zdCwhMSksdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiLHRoaXMuX2NvbnRleHRSZXN0b3JlZCwhMSksdGhpcy5fY2FudmFzLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIwXCIpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJNYXBcIik7dmFyIG89dGhpcy5fY29udGFpbmVyRGltZW5zaW9ucygpO3RoaXMuX3Jlc2l6ZUNhbnZhcyhvWzBdLG9bMV0pO3ZhciByPXRoaXMuX2NvbnRyb2xDb250YWluZXI9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtY29udHJvbC1jb250YWluZXJcIix0KSxpPXRoaXMuX2NvbnRyb2xQb3NpdGlvbnM9e307W1widG9wLWxlZnRcIixcInRvcC1yaWdodFwiLFwiYm90dG9tLWxlZnRcIixcImJvdHRvbS1yaWdodFwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lbdF09RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtY3RybC1cIit0LHIpfSl9LGUucHJvdG90eXBlLl9yZXNpemVDYW52YXM9ZnVuY3Rpb24odCxlKXt2YXIgbz13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYW52YXMud2lkdGg9byp0LHRoaXMuX2NhbnZhcy5oZWlnaHQ9byplLHRoaXMuX2NhbnZhcy5zdHlsZS53aWR0aD10K1wicHhcIix0aGlzLl9jYW52YXMuc3R5bGUuaGVpZ2h0PWUrXCJweFwifSxlLnByb3RvdHlwZS5fc2V0dXBQYWludGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dXRpbC5leHRlbmQoe2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6dGhpcy5fZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dGhpcy5fcHJlc2VydmVEcmF3aW5nQnVmZmVyfSxpc1N1cHBvcnRlZC53ZWJHTENvbnRleHRBdHRyaWJ1dGVzKSxlPXRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KFwid2ViZ2xcIix0KXx8dGhpcy5fY2FudmFzLmdldENvbnRleHQoXCJleHBlcmltZW50YWwtd2ViZ2xcIix0KTtpZighZSlyZXR1cm4gdm9pZCB0aGlzLmZpcmUoXCJlcnJvclwiLHtlcnJvcjpuZXcgRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXZWJHTFwiKX0pO3RoaXMucGFpbnRlcj1uZXcgUGFpbnRlcihlLHRoaXMudHJhbnNmb3JtKX0sZS5wcm90b3R5cGUuX2NvbnRleHRMb3N0PWZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLl9mcmFtZUlkJiYoYnJvd3Nlci5jYW5jZWxGcmFtZSh0aGlzLl9mcmFtZUlkKSx0aGlzLl9mcmFtZUlkPW51bGwpLHRoaXMuZmlyZShcIndlYmdsY29udGV4dGxvc3RcIix7b3JpZ2luYWxFdmVudDp0fSl9LGUucHJvdG90eXBlLl9jb250ZXh0UmVzdG9yZWQ9ZnVuY3Rpb24odCl7dGhpcy5fc2V0dXBQYWludGVyKCksdGhpcy5yZXNpemUoKSx0aGlzLl91cGRhdGUoKSx0aGlzLmZpcmUoXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiLHtvcmlnaW5hbEV2ZW50OnR9KX0sZS5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3N0eWxlRGlydHkmJiF0aGlzLl9zb3VyY2VzRGlydHkmJiEoIXRoaXMuc3R5bGV8fCF0aGlzLnN0eWxlLmxvYWRlZCgpKX0sZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZT8odGhpcy5fc3R5bGVEaXJ0eT10aGlzLl9zdHlsZURpcnR5fHx0LHRoaXMuX3NvdXJjZXNEaXJ0eT0hMCx0aGlzLl9yZXJlbmRlcigpLHRoaXMpOnRoaXN9LGUucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZSYmdGhpcy5fc3R5bGVEaXJ0eSYmKHRoaXMuX3N0eWxlRGlydHk9ITEsdGhpcy5zdHlsZS51cGRhdGUodGhpcy5fY2xhc3Nlcyx0aGlzLl9jbGFzc09wdGlvbnMpLHRoaXMuX2NsYXNzT3B0aW9ucz1udWxsLHRoaXMuc3R5bGUuX3JlY2FsY3VsYXRlKHRoaXMudHJhbnNmb3JtLnpvb20pKSx0aGlzLnN0eWxlJiZ0aGlzLl9zb3VyY2VzRGlydHkmJih0aGlzLl9zb3VyY2VzRGlydHk9ITEsdGhpcy5zdHlsZS5fdXBkYXRlU291cmNlcyh0aGlzLnRyYW5zZm9ybSkpLHRoaXMucGFpbnRlci5yZW5kZXIodGhpcy5zdHlsZSx7c2hvd1RpbGVCb3VuZGFyaWVzOnRoaXMuc2hvd1RpbGVCb3VuZGFyaWVzLHNob3dPdmVyZHJhd0luc3BlY3Rvcjp0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3Iscm90YXRpbmc6dGhpcy5yb3RhdGluZyx6b29taW5nOnRoaXMuem9vbWluZ30pLHRoaXMuZmlyZShcInJlbmRlclwiKSx0aGlzLmxvYWRlZCgpJiYhdGhpcy5fbG9hZGVkJiYodGhpcy5fbG9hZGVkPSEwLHRoaXMuZmlyZShcImxvYWRcIikpLHRoaXMuX2ZyYW1lSWQ9bnVsbCx0aGlzLmFuaW1hdGlvbkxvb3Auc3RvcHBlZCgpfHwodGhpcy5fc3R5bGVEaXJ0eT0hMCksKHRoaXMuX3NvdXJjZXNEaXJ0eXx8dGhpcy5fcmVwYWludHx8dGhpcy5fc3R5bGVEaXJ0eSkmJnRoaXMuX3JlcmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5faGFzaCYmdGhpcy5faGFzaC5yZW1vdmUoKSxicm93c2VyLmNhbmNlbEZyYW1lKHRoaXMuX2ZyYW1lSWQpLHRoaXMuX2ZyYW1lSWQ9bnVsbCx0aGlzLnNldFN0eWxlKG51bGwpLHZvaWQgMCE9PXdpbmRvdyYmKHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy5fb25XaW5kb3dSZXNpemUsITEpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwib25saW5lXCIsdGhpcy5fb25XaW5kb3dPbmxpbmUsITEpKTt2YXIgdD10aGlzLnBhaW50ZXIuZ2wuZ2V0RXh0ZW5zaW9uKFwiV0VCR0xfbG9zZV9jb250ZXh0XCIpO3QmJnQubG9zZUNvbnRleHQoKSxyZW1vdmVOb2RlKHRoaXMuX2NhbnZhc0NvbnRhaW5lcikscmVtb3ZlTm9kZSh0aGlzLl9jb250cm9sQ29udGFpbmVyKSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLW1hcFwiKSx0aGlzLmZpcmUoXCJyZW1vdmVcIil9LGUucHJvdG90eXBlLl9yZXJlbmRlcj1mdW5jdGlvbigpe3RoaXMuc3R5bGUmJiF0aGlzLl9mcmFtZUlkJiYodGhpcy5fZnJhbWVJZD1icm93c2VyLmZyYW1lKHRoaXMuX3JlbmRlcikpfSxlLnByb3RvdHlwZS5fb25XaW5kb3dPbmxpbmU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGUoKX0sZS5wcm90b3R5cGUuX29uV2luZG93UmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5fdHJhY2tSZXNpemUmJnRoaXMuc3RvcCgpLnJlc2l6ZSgpLl91cGRhdGUoKX0sby5zaG93VGlsZUJvdW5kYXJpZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9zaG93VGlsZUJvdW5kYXJpZXN9LG8uc2hvd1RpbGVCb3VuZGFyaWVzLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zaG93VGlsZUJvdW5kYXJpZXMhPT10JiYodGhpcy5fc2hvd1RpbGVCb3VuZGFyaWVzPXQsdGhpcy5fdXBkYXRlKCkpfSxvLnNob3dDb2xsaXNpb25Cb3hlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3Nob3dDb2xsaXNpb25Cb3hlc30sby5zaG93Q29sbGlzaW9uQm94ZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcyE9PXQmJih0aGlzLl9zaG93Q29sbGlzaW9uQm94ZXM9dCx0aGlzLnN0eWxlLl9yZWRvUGxhY2VtZW50KCkpfSxvLnNob3dPdmVyZHJhd0luc3BlY3Rvci5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcn0sby5zaG93T3ZlcmRyYXdJbnNwZWN0b3Iuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3RvciE9PXQmJih0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3I9dCx0aGlzLl91cGRhdGUoKSl9LG8ucmVwYWludC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3JlcGFpbnR9LG8ucmVwYWludC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fcmVwYWludD10LHRoaXMuX3VwZGF0ZSgpfSxvLnZlcnRpY2VzLmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fdmVydGljZXN9LG8udmVydGljZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3ZlcnRpY2VzPXQsdGhpcy5fdXBkYXRlKCl9LGUucHJvdG90eXBlLl9vbkRhdGE9ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlKFwic3R5bGVcIj09PXQuZGF0YVR5cGUpLHRoaXMuZmlyZSh0LmRhdGFUeXBlK1wiZGF0YVwiLHQpfSxlLnByb3RvdHlwZS5fb25EYXRhTG9hZGluZz1mdW5jdGlvbih0KXt0aGlzLmZpcmUodC5kYXRhVHlwZStcImRhdGFsb2FkaW5nXCIsdCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLG8pLGV9KENhbWVyYSk7bW9kdWxlLmV4cG9ydHM9TWFwO1xufSx7XCIuLi9nZW8vbG5nX2xhdFwiOjU4LFwiLi4vZ2VvL2xuZ19sYXRfYm91bmRzXCI6NTksXCIuLi9nZW8vdHJhbnNmb3JtXCI6NjAsXCIuLi9yZW5kZXIvcGFpbnRlclwiOjc5LFwiLi4vc3R5bGUvYW5pbWF0aW9uX2xvb3BcIjoxNTAsXCIuLi9zdHlsZS9zdHlsZVwiOjE1NixcIi4uL3V0aWwvYWpheFwiOjIwMSxcIi4uL3V0aWwvYnJvd3NlclwiOjIwMixcIi4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vdXRpbC93aW5kb3dcIjoyMDQsXCIuL2JpbmRfaGFuZGxlcnNcIjoxODAsXCIuL2NhbWVyYVwiOjE4MSxcIi4vY29udHJvbC9hdHRyaWJ1dGlvbl9jb250cm9sXCI6MTgyLFwiLi9jb250cm9sL2xvZ29fY29udHJvbFwiOjE4NSxcIi4vZXZlbnRzXCI6MTg4LFwiLi9oYXNoXCI6MTk2LFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjIsXCJtYXBib3gtZ2wtc3VwcG9ydGVkXCI6Mjh9XSwxOTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIERPTT1fZGVyZXFfKFwiLi4vdXRpbC9kb21cIiksTG5nTGF0PV9kZXJlcV8oXCIuLi9nZW8vbG5nX2xhdFwiKSxQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSxzbWFydFdyYXA9X2RlcmVxXyhcIi4uL3V0aWwvc21hcnRfd3JhcFwiKSxyZWY9X2RlcmVxXyhcIi4uL3V0aWwvdXRpbFwiKSxiaW5kQWxsPXJlZi5iaW5kQWxsLE1hcmtlcj1mdW5jdGlvbih0LGUpe3RoaXMuX29mZnNldD1Qb2ludC5jb252ZXJ0KGUmJmUub2Zmc2V0fHxbMCwwXSksYmluZEFsbChbXCJfdXBkYXRlXCIsXCJfb25NYXBDbGlja1wiXSx0aGlzKSx0fHwodD1ET00uY3JlYXRlKFwiZGl2XCIpKSx0LmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1tYXJrZXJcIiksdGhpcy5fZWxlbWVudD10LHRoaXMuX3BvcHVwPW51bGx9O01hcmtlci5wcm90b3R5cGUuYWRkVG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVtb3ZlKCksdGhpcy5fbWFwPXQsdC5nZXRDYW52YXNDb250YWluZXIoKS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50KSx0Lm9uKFwibW92ZVwiLHRoaXMuX3VwZGF0ZSksdC5vbihcIm1vdmVlbmRcIix0aGlzLl91cGRhdGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX21hcC5vbihcImNsaWNrXCIsdGhpcy5fb25NYXBDbGljayksdGhpc30sTWFya2VyLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYodGhpcy5fbWFwLm9mZihcImNsaWNrXCIsdGhpcy5fb25NYXBDbGljayksdGhpcy5fbWFwLm9mZihcIm1vdmVcIix0aGlzLl91cGRhdGUpLHRoaXMuX21hcC5vZmYoXCJtb3ZlZW5kXCIsdGhpcy5fdXBkYXRlKSxkZWxldGUgdGhpcy5fbWFwKSxET00ucmVtb3ZlKHRoaXMuX2VsZW1lbnQpLHRoaXMuX3BvcHVwJiZ0aGlzLl9wb3B1cC5yZW1vdmUoKSx0aGlzfSxNYXJrZXIucHJvdG90eXBlLmdldExuZ0xhdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sbmdMYXR9LE1hcmtlci5wcm90b3R5cGUuc2V0TG5nTGF0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sbmdMYXQ9TG5nTGF0LmNvbnZlcnQodCksdGhpcy5fcG9zPW51bGwsdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldExuZ0xhdCh0aGlzLl9sbmdMYXQpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LE1hcmtlci5wcm90b3R5cGUuZ2V0RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSxNYXJrZXIucHJvdG90eXBlLnNldFBvcHVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb3B1cCYmKHRoaXMuX3BvcHVwLnJlbW92ZSgpLHRoaXMuX3BvcHVwPW51bGwpLHQmJihcIm9mZnNldFwiaW4gdC5vcHRpb25zfHwodC5vcHRpb25zLm9mZnNldD10aGlzLl9vZmZzZXQpLHRoaXMuX3BvcHVwPXQsdGhpcy5fcG9wdXAuc2V0TG5nTGF0KHRoaXMuX2xuZ0xhdCkpLHRoaXN9LE1hcmtlci5wcm90b3R5cGUuX29uTWFwQ2xpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dC5vcmlnaW5hbEV2ZW50LnRhcmdldCxwPXRoaXMuX2VsZW1lbnQ7dGhpcy5fcG9wdXAmJihlPT09cHx8cC5jb250YWlucyhlKSkmJnRoaXMudG9nZ2xlUG9wdXAoKX0sTWFya2VyLnByb3RvdHlwZS5nZXRQb3B1cD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cH0sTWFya2VyLnByb3RvdHlwZS50b2dnbGVQb3B1cD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BvcHVwO3JldHVybiB0Pyh0LmlzT3BlbigpP3QucmVtb3ZlKCk6dC5hZGRUbyh0aGlzLl9tYXApLHRoaXMpOnRoaXN9LE1hcmtlci5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9tYXAmJih0aGlzLl9tYXAudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzJiYodGhpcy5fbG5nTGF0PXNtYXJ0V3JhcCh0aGlzLl9sbmdMYXQsdGhpcy5fcG9zLHRoaXMuX21hcC50cmFuc2Zvcm0pKSx0aGlzLl9wb3M9dGhpcy5fbWFwLnByb2plY3QodGhpcy5fbG5nTGF0KS5fYWRkKHRoaXMuX29mZnNldCksdCYmXCJtb3ZlZW5kXCIhPT10LnR5cGV8fCh0aGlzLl9wb3M9dGhpcy5fcG9zLnJvdW5kKCkpLERPTS5zZXRUcmFuc2Zvcm0odGhpcy5fZWxlbWVudCxcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKSB0cmFuc2xhdGUoXCIrdGhpcy5fcG9zLngrXCJweCwgXCIrdGhpcy5fcG9zLnkrXCJweClcIikpfSxtb2R1bGUuZXhwb3J0cz1NYXJrZXI7XG59LHtcIi4uL2dlby9sbmdfbGF0XCI6NTgsXCIuLi91dGlsL2RvbVwiOjIwOSxcIi4uL3V0aWwvc21hcnRfd3JhcFwiOjIxOSxcIi4uL3V0aWwvdXRpbFwiOjIyMyxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sMTk5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIG5vcm1hbGl6ZU9mZnNldCh0KXtpZih0KXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl7dmFyIG89TWF0aC5yb3VuZChNYXRoLnNxcnQoLjUqTWF0aC5wb3codCwyKSkpO3JldHVybnt0b3A6bmV3IFBvaW50KDAsdCksXCJ0b3AtbGVmdFwiOm5ldyBQb2ludChvLG8pLFwidG9wLXJpZ2h0XCI6bmV3IFBvaW50KC1vLG8pLGJvdHRvbTpuZXcgUG9pbnQoMCwtdCksXCJib3R0b20tbGVmdFwiOm5ldyBQb2ludChvLC1vKSxcImJvdHRvbS1yaWdodFwiOm5ldyBQb2ludCgtbywtbyksbGVmdDpuZXcgUG9pbnQodCwwKSxyaWdodDpuZXcgUG9pbnQoLXQsMCl9fWlmKHQgaW5zdGFuY2VvZiBQb2ludHx8QXJyYXkuaXNBcnJheSh0KSl7dmFyIGU9UG9pbnQuY29udmVydCh0KTtyZXR1cm57dG9wOmUsXCJ0b3AtbGVmdFwiOmUsXCJ0b3AtcmlnaHRcIjplLGJvdHRvbTplLFwiYm90dG9tLWxlZnRcIjplLFwiYm90dG9tLXJpZ2h0XCI6ZSxsZWZ0OmUscmlnaHQ6ZX19cmV0dXJue3RvcDpQb2ludC5jb252ZXJ0KHQudG9wfHxbMCwwXSksXCJ0b3AtbGVmdFwiOlBvaW50LmNvbnZlcnQodFtcInRvcC1sZWZ0XCJdfHxbMCwwXSksXCJ0b3AtcmlnaHRcIjpQb2ludC5jb252ZXJ0KHRbXCJ0b3AtcmlnaHRcIl18fFswLDBdKSxib3R0b206UG9pbnQuY29udmVydCh0LmJvdHRvbXx8WzAsMF0pLFwiYm90dG9tLWxlZnRcIjpQb2ludC5jb252ZXJ0KHRbXCJib3R0b20tbGVmdFwiXXx8WzAsMF0pLFwiYm90dG9tLXJpZ2h0XCI6UG9pbnQuY29udmVydCh0W1wiYm90dG9tLXJpZ2h0XCJdfHxbMCwwXSksbGVmdDpQb2ludC5jb252ZXJ0KHQubGVmdHx8WzAsMF0pLHJpZ2h0OlBvaW50LmNvbnZlcnQodC5yaWdodHx8WzAsMF0pfX1yZXR1cm4gbm9ybWFsaXplT2Zmc2V0KG5ldyBQb2ludCgwLDApKX12YXIgdXRpbD1fZGVyZXFfKFwiLi4vdXRpbC91dGlsXCIpLEV2ZW50ZWQ9X2RlcmVxXyhcIi4uL3V0aWwvZXZlbnRlZFwiKSxET009X2RlcmVxXyhcIi4uL3V0aWwvZG9tXCIpLExuZ0xhdD1fZGVyZXFfKFwiLi4vZ2VvL2xuZ19sYXRcIiksUG9pbnQ9X2RlcmVxXyhcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIiksd2luZG93PV9kZXJlcV8oXCIuLi91dGlsL3dpbmRvd1wiKSxzbWFydFdyYXA9X2RlcmVxXyhcIi4uL3V0aWwvc21hcnRfd3JhcFwiKSxkZWZhdWx0T3B0aW9ucz17Y2xvc2VCdXR0b246ITAsY2xvc2VPbkNsaWNrOiEwfSxQb3B1cD1mdW5jdGlvbih0KXtmdW5jdGlvbiBvKG8pe3QuY2FsbCh0aGlzKSx0aGlzLm9wdGlvbnM9dXRpbC5leHRlbmQoT2JqZWN0LmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksbyksdXRpbC5iaW5kQWxsKFtcIl91cGRhdGVcIixcIl9vbkNsaWNrQ2xvc2VcIl0sdGhpcyl9cmV0dXJuIHQmJihvLl9fcHJvdG9fXz10KSxvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxvLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1vLG8ucHJvdG90eXBlLmFkZFRvPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9tYXAub24oXCJtb3ZlXCIsdGhpcy5fdXBkYXRlKSx0aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrJiZ0aGlzLl9tYXAub24oXCJjbGlja1wiLHRoaXMuX29uQ2xpY2tDbG9zZSksdGhpcy5fdXBkYXRlKCksdGhpc30sby5wcm90b3R5cGUuaXNPcGVuPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9tYXB9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50JiZET00ucmVtb3ZlKHRoaXMuX2NvbnRlbnQpLHRoaXMuX2NvbnRhaW5lciYmKERPTS5yZW1vdmUodGhpcy5fY29udGFpbmVyKSxkZWxldGUgdGhpcy5fY29udGFpbmVyKSx0aGlzLl9tYXAmJih0aGlzLl9tYXAub2ZmKFwibW92ZVwiLHRoaXMuX3VwZGF0ZSksdGhpcy5fbWFwLm9mZihcImNsaWNrXCIsdGhpcy5fb25DbGlja0Nsb3NlKSxkZWxldGUgdGhpcy5fbWFwKSx0aGlzLmZpcmUoXCJjbG9zZVwiKSx0aGlzfSxvLnByb3RvdHlwZS5nZXRMbmdMYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG5nTGF0fSxvLnByb3RvdHlwZS5zZXRMbmdMYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xuZ0xhdD1MbmdMYXQuY29udmVydCh0KSx0aGlzLl9wb3M9bnVsbCx0aGlzLl91cGRhdGUoKSx0aGlzfSxvLnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNldERPTUNvbnRlbnQod2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKX0sby5wcm90b3R5cGUuc2V0SFRNTD1mdW5jdGlvbih0KXt2YXIgbyxlPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJvZHlcIik7Zm9yKG4uaW5uZXJIVE1MPXQ7Oyl7aWYoIShvPW4uZmlyc3RDaGlsZCkpYnJlYWs7ZS5hcHBlbmRDaGlsZChvKX1yZXR1cm4gdGhpcy5zZXRET01Db250ZW50KGUpfSxvLnByb3RvdHlwZS5zZXRET01Db250ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jcmVhdGVDb250ZW50KCksdGhpcy5fY29udGVudC5hcHBlbmRDaGlsZCh0KSx0aGlzLl91cGRhdGUoKSx0aGlzfSxvLnByb3RvdHlwZS5fY3JlYXRlQ29udGVudD1mdW5jdGlvbigpe3RoaXMuX2NvbnRlbnQmJkRPTS5yZW1vdmUodGhpcy5fY29udGVudCksdGhpcy5fY29udGVudD1ET00uY3JlYXRlKFwiZGl2XCIsXCJtYXBib3hnbC1wb3B1cC1jb250ZW50XCIsdGhpcy5fY29udGFpbmVyKSx0aGlzLm9wdGlvbnMuY2xvc2VCdXR0b24mJih0aGlzLl9jbG9zZUJ1dHRvbj1ET00uY3JlYXRlKFwiYnV0dG9uXCIsXCJtYXBib3hnbC1wb3B1cC1jbG9zZS1idXR0b25cIix0aGlzLl9jb250ZW50KSx0aGlzLl9jbG9zZUJ1dHRvbi50eXBlPVwiYnV0dG9uXCIsdGhpcy5fY2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiQ2xvc2UgcG9wdXBcIiksdGhpcy5fY2xvc2VCdXR0b24uaW5uZXJIVE1MPVwiJiMyMTU7XCIsdGhpcy5fY2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5fb25DbGlja0Nsb3NlKSl9LG8ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXAmJnRoaXMuX2xuZ0xhdCYmdGhpcy5fY29udGVudCl7dGhpcy5fY29udGFpbmVyfHwodGhpcy5fY29udGFpbmVyPURPTS5jcmVhdGUoXCJkaXZcIixcIm1hcGJveGdsLXBvcHVwXCIsdGhpcy5fbWFwLmdldENvbnRhaW5lcigpKSx0aGlzLl90aXA9RE9NLmNyZWF0ZShcImRpdlwiLFwibWFwYm94Z2wtcG9wdXAtdGlwXCIsdGhpcy5fY29udGFpbmVyKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudCkpLHRoaXMuX21hcC50cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXMmJih0aGlzLl9sbmdMYXQ9c21hcnRXcmFwKHRoaXMuX2xuZ0xhdCx0aGlzLl9wb3MsdGhpcy5fbWFwLnRyYW5zZm9ybSkpO3ZhciB0PXRoaXMuX3Bvcz10aGlzLl9tYXAucHJvamVjdCh0aGlzLl9sbmdMYXQpLG89dGhpcy5vcHRpb25zLmFuY2hvcixlPW5vcm1hbGl6ZU9mZnNldCh0aGlzLm9wdGlvbnMub2Zmc2V0KTtpZighbyl7dmFyIG49dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRoLGk9dGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodDtvPXQueStlLmJvdHRvbS55PGk/W1widG9wXCJdOnQueT50aGlzLl9tYXAudHJhbnNmb3JtLmhlaWdodC1pP1tcImJvdHRvbVwiXTpbXSx0Lng8bi8yP28ucHVzaChcImxlZnRcIik6dC54PnRoaXMuX21hcC50cmFuc2Zvcm0ud2lkdGgtbi8yJiZvLnB1c2goXCJyaWdodFwiKSxvPTA9PT1vLmxlbmd0aD9cImJvdHRvbVwiOm8uam9pbihcIi1cIil9dmFyIHI9dC5hZGQoZVtvXSkucm91bmQoKSxzPXt0b3A6XCJ0cmFuc2xhdGUoLTUwJSwwKVwiLFwidG9wLWxlZnRcIjpcInRyYW5zbGF0ZSgwLDApXCIsXCJ0b3AtcmlnaHRcIjpcInRyYW5zbGF0ZSgtMTAwJSwwKVwiLGJvdHRvbTpcInRyYW5zbGF0ZSgtNTAlLC0xMDAlKVwiLFwiYm90dG9tLWxlZnRcIjpcInRyYW5zbGF0ZSgwLC0xMDAlKVwiLFwiYm90dG9tLXJpZ2h0XCI6XCJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpXCIsbGVmdDpcInRyYW5zbGF0ZSgwLC01MCUpXCIscmlnaHQ6XCJ0cmFuc2xhdGUoLTEwMCUsLTUwJSlcIn0scD10aGlzLl9jb250YWluZXIuY2xhc3NMaXN0O2Zvcih2YXIgYSBpbiBzKXAucmVtb3ZlKFwibWFwYm94Z2wtcG9wdXAtYW5jaG9yLVwiK2EpO3AuYWRkKFwibWFwYm94Z2wtcG9wdXAtYW5jaG9yLVwiK28pLERPTS5zZXRUcmFuc2Zvcm0odGhpcy5fY29udGFpbmVyLHNbb10rXCIgdHJhbnNsYXRlKFwiK3IueCtcInB4LFwiK3IueStcInB4KVwiKX19LG8ucHJvdG90eXBlLl9vbkNsaWNrQ2xvc2U9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSxvfShFdmVudGVkKTttb2R1bGUuZXhwb3J0cz1Qb3B1cDtcbn0se1wiLi4vZ2VvL2xuZ19sYXRcIjo1OCxcIi4uL3V0aWwvZG9tXCI6MjA5LFwiLi4vdXRpbC9ldmVudGVkXCI6MjEwLFwiLi4vdXRpbC9zbWFydF93cmFwXCI6MjE5LFwiLi4vdXRpbC91dGlsXCI6MjIzLFwiLi4vdXRpbC93aW5kb3dcIjoyMDQsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6Mn1dLDIwMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgdXRpbD1fZGVyZXFfKFwiLi91dGlsXCIpLEFjdG9yPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnRhcmdldD10LHRoaXMucGFyZW50PWUsdGhpcy5tYXBJZD1yLHRoaXMuY2FsbGJhY2tzPXt9LHRoaXMuY2FsbGJhY2tJRD0wLHV0aWwuYmluZEFsbChbXCJyZWNlaXZlXCJdLHRoaXMpLHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdGhpcy5yZWNlaXZlLCExKX07QWN0b3IucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCxlLHIsYSxpKXt2YXIgcz1yP3RoaXMubWFwSWQrXCI6XCIrdGhpcy5jYWxsYmFja0lEKys6bnVsbDtyJiYodGhpcy5jYWxsYmFja3Nbc109ciksdGhpcy50YXJnZXQucG9zdE1lc3NhZ2Uoe3RhcmdldE1hcElkOmksc291cmNlTWFwSWQ6dGhpcy5tYXBJZCx0eXBlOnQsaWQ6U3RyaW5nKHMpLGRhdGE6ZX0sYSl9LEFjdG9yLnByb3RvdHlwZS5yZWNlaXZlPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcyxhPXQuZGF0YSxpPWEuaWQ7aWYoIWEudGFyZ2V0TWFwSWR8fHRoaXMubWFwSWQ9PT1hLnRhcmdldE1hcElkKXt2YXIgcz1mdW5jdGlvbih0LGUsYSl7ci50YXJnZXQucG9zdE1lc3NhZ2Uoe3NvdXJjZU1hcElkOnIubWFwSWQsdHlwZTpcIjxyZXNwb25zZT5cIixpZDpTdHJpbmcoaSksZXJyb3I6dD9TdHJpbmcodCk6bnVsbCxkYXRhOmV9LGEpfTtpZihcIjxyZXNwb25zZT5cIj09PWEudHlwZSllPXRoaXMuY2FsbGJhY2tzW2EuaWRdLGRlbGV0ZSB0aGlzLmNhbGxiYWNrc1thLmlkXSxlJiZhLmVycm9yP2UobmV3IEVycm9yKGEuZXJyb3IpKTplJiZlKG51bGwsYS5kYXRhKTtlbHNlIGlmKHZvaWQgMCE9PWEuaWQmJnRoaXMucGFyZW50W2EudHlwZV0pdGhpcy5wYXJlbnRbYS50eXBlXShhLnNvdXJjZU1hcElkLGEuZGF0YSxzKTtlbHNlIGlmKHZvaWQgMCE9PWEuaWQmJnRoaXMucGFyZW50LmdldFdvcmtlclNvdXJjZSl7dmFyIG89YS50eXBlLnNwbGl0KFwiLlwiKSxwPXRoaXMucGFyZW50LmdldFdvcmtlclNvdXJjZShhLnNvdXJjZU1hcElkLG9bMF0pO3Bbb1sxXV0oYS5kYXRhLHMpfWVsc2UgdGhpcy5wYXJlbnRbYS50eXBlXShhLmRhdGEpfX0sQWN0b3IucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdGhpcy5yZWNlaXZlLCExKX0sbW9kdWxlLmV4cG9ydHM9QWN0b3I7XG59LHtcIi4vdXRpbFwiOjIyM31dLDIwMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBtYWtlUmVxdWVzdChlKXt2YXIgdD1uZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0O3Qub3BlbihcIkdFVFwiLGUudXJsLCEwKTtmb3IodmFyIHIgaW4gZS5oZWFkZXJzKXQuc2V0UmVxdWVzdEhlYWRlcihyLGUuaGVhZGVyc1tyXSk7cmV0dXJuIHQud2l0aENyZWRlbnRpYWxzPVwiaW5jbHVkZVwiPT09ZS5jcmVkZW50aWFscyx0fWZ1bmN0aW9uIHNhbWVPcmlnaW4oZSl7dmFyIHQ9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO3JldHVybiB0LmhyZWY9ZSx0LnByb3RvY29sPT09d2luZG93LmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZ0Lmhvc3Q9PT13aW5kb3cuZG9jdW1lbnQubG9jYXRpb24uaG9zdH12YXIgd2luZG93PV9kZXJlcV8oXCIuL3dpbmRvd1wiKSxSZXNvdXJjZVR5cGU9e1Vua25vd246XCJVbmtub3duXCIsU3R5bGU6XCJTdHlsZVwiLFNvdXJjZTpcIlNvdXJjZVwiLFRpbGU6XCJUaWxlXCIsR2x5cGhzOlwiR2x5cGhzXCIsU3ByaXRlSW1hZ2U6XCJTcHJpdGVJbWFnZVwiLFNwcml0ZUpTT046XCJTcHJpdGVKU09OXCIsSW1hZ2U6XCJJbWFnZVwifTtleHBvcnRzLlJlc291cmNlVHlwZT1SZXNvdXJjZVR5cGUsXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmZyZWV6ZSYmT2JqZWN0LmZyZWV6ZShSZXNvdXJjZVR5cGUpO3ZhciBBSkFYRXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe2UuY2FsbCh0aGlzLHQpLHRoaXMuc3RhdHVzPXJ9cmV0dXJuIGUmJih0Ll9fcHJvdG9fXz1lKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHR9KEVycm9yKTtleHBvcnRzLmdldEpTT049ZnVuY3Rpb24oZSx0KXt2YXIgcj1tYWtlUmVxdWVzdChlKTtyZXR1cm4gci5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9qc29uXCIpLHIub25lcnJvcj1mdW5jdGlvbigpe3QobmV3IEVycm9yKHIuc3RhdHVzVGV4dCkpfSxyLm9ubG9hZD1mdW5jdGlvbigpe2lmKHIuc3RhdHVzPj0yMDAmJnIuc3RhdHVzPDMwMCYmci5yZXNwb25zZSl7dmFyIGU7dHJ5e2U9SlNPTi5wYXJzZShyLnJlc3BvbnNlKX1jYXRjaChlKXtyZXR1cm4gdChlKX10KG51bGwsZSl9ZWxzZSB0KG5ldyBBSkFYRXJyb3Ioci5zdGF0dXNUZXh0LHIuc3RhdHVzKSl9LHIuc2VuZCgpLHJ9LGV4cG9ydHMuZ2V0QXJyYXlCdWZmZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj1tYWtlUmVxdWVzdChlKTtyZXR1cm4gci5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiLHIub25lcnJvcj1mdW5jdGlvbigpe3QobmV3IEVycm9yKHIuc3RhdHVzVGV4dCkpfSxyLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPXIucmVzcG9uc2U7aWYoMD09PWUuYnl0ZUxlbmd0aCYmMjAwPT09ci5zdGF0dXMpcmV0dXJuIHQobmV3IEVycm9yKFwiaHR0cCBzdGF0dXMgMjAwIHJldHVybmVkIHdpdGhvdXQgY29udGVudC5cIikpO3Iuc3RhdHVzPj0yMDAmJnIuc3RhdHVzPDMwMCYmci5yZXNwb25zZT90KG51bGwse2RhdGE6ZSxjYWNoZUNvbnRyb2w6ci5nZXRSZXNwb25zZUhlYWRlcihcIkNhY2hlLUNvbnRyb2xcIiksZXhwaXJlczpyLmdldFJlc3BvbnNlSGVhZGVyKFwiRXhwaXJlc1wiKX0pOnQobmV3IEFKQVhFcnJvcihyLnN0YXR1c1RleHQsci5zdGF0dXMpKX0sci5zZW5kKCkscn07dmFyIHRyYW5zcGFyZW50UG5nVXJsPVwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FZQUFBQWZGY1NKQUFBQUMwbEVRVlFZVjJOZ0FBSUFBQVVBQWFyVnlGRUFBQUFBU1VWT1JLNUNZSUk9XCI7ZXhwb3J0cy5nZXRJbWFnZT1mdW5jdGlvbihlLHQpe3JldHVybiBleHBvcnRzLmdldEFycmF5QnVmZmVyKGUsZnVuY3Rpb24oZSxyKXtpZihlKXQoZSk7ZWxzZSBpZihyKXt2YXIgbj1uZXcgd2luZG93LkltYWdlLG89d2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTDtuLm9ubG9hZD1mdW5jdGlvbigpe3QobnVsbCxuKSxvLnJldm9rZU9iamVjdFVSTChuLnNyYyl9O3ZhciBzPW5ldyB3aW5kb3cuQmxvYihbbmV3IFVpbnQ4QXJyYXkoci5kYXRhKV0se3R5cGU6XCJpbWFnZS9wbmdcIn0pO24uY2FjaGVDb250cm9sPXIuY2FjaGVDb250cm9sLG4uZXhwaXJlcz1yLmV4cGlyZXMsbi5zcmM9ci5kYXRhLmJ5dGVMZW5ndGg/by5jcmVhdGVPYmplY3RVUkwocyk6dHJhbnNwYXJlbnRQbmdVcmx9fSl9LGV4cG9ydHMuZ2V0VmlkZW89ZnVuY3Rpb24oZSx0KXt2YXIgcj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInZpZGVvXCIpO3Iub25sb2Fkc3RhcnQ9ZnVuY3Rpb24oKXt0KG51bGwscil9O2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiKTtzYW1lT3JpZ2luKGVbbl0pfHwoci5jcm9zc09yaWdpbj1cIkFub255bW91c1wiKSxvLnNyYz1lW25dLHIuYXBwZW5kQ2hpbGQobyl9cmV0dXJuIHJ9O1xufSx7XCIuL3dpbmRvd1wiOjIwNH1dLDIwMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgd2luZG93PV9kZXJlcV8oXCIuL3dpbmRvd1wiKSxub3c9d2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2Uubm93P3dpbmRvdy5wZXJmb3JtYW5jZS5ub3cuYmluZCh3aW5kb3cucGVyZm9ybWFuY2UpOkRhdGUubm93LmJpbmQoRGF0ZSksZnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGNhbmNlbD13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubXNDYW5jZWxBbmltYXRpb25GcmFtZTttb2R1bGUuZXhwb3J0cz17bm93Om5vdyxmcmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gZnJhbWUoZSl9LGNhbmNlbEZyYW1lOmZ1bmN0aW9uKGUpe3JldHVybiBjYW5jZWwoZSl9LHRpbWVkOmZ1bmN0aW9uKGUsbix0KXtmdW5jdGlvbiBhKCl7aWYoIWkpe3ZhciByPW5vdygpO3I+PW8rbj9lLmNhbGwodCwxKTooZS5jYWxsKHQsKHItbykvbiksZnJhbWUoYSkpfX1pZighbilyZXR1cm4gZS5jYWxsKHQsMSksbnVsbDt2YXIgaT0hMSxvPW5vdygpO3JldHVybiBmcmFtZShhKSxmdW5jdGlvbigpe2k9ITB9fSxnZXRJbWFnZURhdGE6ZnVuY3Rpb24oZSl7dmFyIG49d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksdD1uLmdldENvbnRleHQoXCIyZFwiKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyAyZCBjb250ZXh0XCIpO3JldHVybiBuLndpZHRoPWUud2lkdGgsbi5oZWlnaHQ9ZS5oZWlnaHQsdC5kcmF3SW1hZ2UoZSwwLDAsZS53aWR0aCxlLmhlaWdodCksdC5nZXRJbWFnZURhdGEoMCwwLGUud2lkdGgsZS5oZWlnaHQpfSxoYXJkd2FyZUNvbmN1cnJlbmN5OndpbmRvdy5uYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeXx8NCxnZXQgZGV2aWNlUGl4ZWxSYXRpbygpe3JldHVybiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb30sc3VwcG9ydHNXZWJwOiExfTt2YXIgd2VicEltZ1Rlc3Q9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7d2VicEltZ1Rlc3Qub25sb2FkPWZ1bmN0aW9uKCl7bW9kdWxlLmV4cG9ydHMuc3VwcG9ydHNXZWJwPSEwfSx3ZWJwSW1nVGVzdC5zcmM9XCJkYXRhOmltYWdlL3dlYnA7YmFzZTY0LFVrbEdSaDRBQUFCWFJVSlFWbEE0VEJFQUFBQXZBUUFBQUFmUS8vNzN2LytCaU9oL0FBQT1cIjtcbn0se1wiLi93aW5kb3dcIjoyMDR9XSwyMDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFdlYldvcmtpZnk9X2RlcmVxXyhcIndlYndvcmtpZnlcIiksd2luZG93PV9kZXJlcV8oXCIuLi93aW5kb3dcIiksd29ya2VyVVJMPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBXZWJXb3JraWZ5KF9kZXJlcV8oXCIuLi8uLi9zb3VyY2Uvd29ya2VyXCIpLHtiYXJlOiEwfSkpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB3aW5kb3cuV29ya2VyKHdvcmtlclVSTCl9O1xufSx7XCIuLi8uLi9zb3VyY2Uvd29ya2VyXCI6MTA1LFwiLi4vd2luZG93XCI6MjA0LFwid2Vid29ya2lmeVwiOjM5fV0sMjA0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO21vZHVsZS5leHBvcnRzPXNlbGY7XG59LHt9XSwyMDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY29tcGFyZUFyZWFzKGUscil7cmV0dXJuIHIuYXJlYS1lLmFyZWF9dmFyIHF1aWNrc2VsZWN0PV9kZXJlcV8oXCJxdWlja3NlbGVjdFwiKSxjYWxjdWxhdGVTaWduZWRBcmVhPV9kZXJlcV8oXCIuL3V0aWxcIikuY2FsY3VsYXRlU2lnbmVkQXJlYTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciBhPWUubGVuZ3RoO2lmKGE8PTEpcmV0dXJuW2VdO2Zvcih2YXIgdCx1LGM9W10saT0wO2k8YTtpKyspe3ZhciBsPWNhbGN1bGF0ZVNpZ25lZEFyZWEoZVtpXSk7MCE9PWwmJihlW2ldLmFyZWE9TWF0aC5hYnMobCksdm9pZCAwPT09dSYmKHU9bDwwKSx1PT09bDwwPyh0JiZjLnB1c2godCksdD1bZVtpXV0pOnQucHVzaChlW2ldKSl9aWYodCYmYy5wdXNoKHQpLHI+MSlmb3IodmFyIG49MDtuPGMubGVuZ3RoO24rKyljW25dLmxlbmd0aDw9cnx8KHF1aWNrc2VsZWN0KGNbbl0sciwxLGNbbl0ubGVuZ3RoLTEsY29tcGFyZUFyZWFzKSxjW25dPWNbbl0uc2xpY2UoMCxyKSk7cmV0dXJuIGN9O1xufSx7XCIuL3V0aWxcIjoyMjMsXCJxdWlja3NlbGVjdFwiOjMxfV0sMjA2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBjb25maWc9e0FQSV9VUkw6XCJodHRwczovL2FwaS5tYXBib3guY29tXCIsUkVRVUlSRV9BQ0NFU1NfVE9LRU46ITAsQUNDRVNTX1RPS0VOOm51bGx9O21vZHVsZS5leHBvcnRzPWNvbmZpZztcbn0se31dLDIwNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgRGljdGlvbmFyeUNvZGVyPWZ1bmN0aW9uKHIpe3ZhciB0PXRoaXM7dGhpcy5fc3RyaW5nVG9OdW1iZXI9e30sdGhpcy5fbnVtYmVyVG9TdHJpbmc9W107Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBpPXJbb107dC5fc3RyaW5nVG9OdW1iZXJbaV09byx0Ll9udW1iZXJUb1N0cmluZ1tvXT1pfX07RGljdGlvbmFyeUNvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3N0cmluZ1RvTnVtYmVyW3JdfSxEaWN0aW9uYXJ5Q29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fbnVtYmVyVG9TdHJpbmdbcl19LG1vZHVsZS5leHBvcnRzPURpY3Rpb25hcnlDb2Rlcjtcbn0se31dLDIwODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgdXRpbD1fZGVyZXFfKFwiLi91dGlsXCIpLEFjdG9yPV9kZXJlcV8oXCIuL2FjdG9yXCIpLERpc3BhdGNoZXI9ZnVuY3Rpb24odCxyKXt2YXIgbz10aGlzO3RoaXMud29ya2VyUG9vbD10LHRoaXMuYWN0b3JzPVtdLHRoaXMuY3VycmVudEFjdG9yPTAsdGhpcy5pZD11dGlsLnVuaXF1ZUlkKCk7Zm9yKHZhciBpPXRoaXMud29ya2VyUG9vbC5hY3F1aXJlKHRoaXMuaWQpLGU9MDtlPGkubGVuZ3RoO2UrKyl7dmFyIHM9aVtlXSxjPW5ldyBBY3RvcihzLHIsby5pZCk7Yy5uYW1lPVwiV29ya2VyIFwiK2Usby5hY3RvcnMucHVzaChjKX19O0Rpc3BhdGNoZXIucHJvdG90eXBlLmJyb2FkY2FzdD1mdW5jdGlvbih0LHIsbyl7bz1vfHxmdW5jdGlvbigpe30sdXRpbC5hc3luY0FsbCh0aGlzLmFjdG9ycyxmdW5jdGlvbihvLGkpe28uc2VuZCh0LHIsaSl9LG8pfSxEaXNwYXRjaGVyLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKHQscixvLGksZSl7cmV0dXJuKFwibnVtYmVyXCIhPXR5cGVvZiBpfHxpc05hTihpKSkmJihpPXRoaXMuY3VycmVudEFjdG9yPSh0aGlzLmN1cnJlbnRBY3RvcisxKSV0aGlzLmFjdG9ycy5sZW5ndGgpLHRoaXMuYWN0b3JzW2ldLnNlbmQodCxyLG8sZSksaX0sRGlzcGF0Y2hlci5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5hY3RvcnMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlbW92ZSgpfSksdGhpcy5hY3RvcnM9W10sdGhpcy53b3JrZXJQb29sLnJlbGVhc2UodGhpcy5pZCl9LG1vZHVsZS5leHBvcnRzPURpc3BhdGNoZXI7XG59LHtcIi4vYWN0b3JcIjoyMDAsXCIuL3V0aWxcIjoyMjN9XSwyMDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdGVzdFByb3AoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XWluIGRvY1N0eWxlKXJldHVybiBlW3RdO3JldHVybiBlWzBdfXZhciBQb2ludD1fZGVyZXFfKFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiKSx3aW5kb3c9X2RlcmVxXyhcIi4vd2luZG93XCIpO2V4cG9ydHMuY3JlYXRlPWZ1bmN0aW9uKGUsdCxvKXt2YXIgbj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gdCYmKG4uY2xhc3NOYW1lPXQpLG8mJm8uYXBwZW5kQ2hpbGQobiksbn07dmFyIGRvY1N0eWxlPXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsc2VsZWN0UHJvcD10ZXN0UHJvcChbXCJ1c2VyU2VsZWN0XCIsXCJNb3pVc2VyU2VsZWN0XCIsXCJXZWJraXRVc2VyU2VsZWN0XCIsXCJtc1VzZXJTZWxlY3RcIl0pLHVzZXJTZWxlY3Q7ZXhwb3J0cy5kaXNhYmxlRHJhZz1mdW5jdGlvbigpe3NlbGVjdFByb3AmJih1c2VyU2VsZWN0PWRvY1N0eWxlW3NlbGVjdFByb3BdLGRvY1N0eWxlW3NlbGVjdFByb3BdPVwibm9uZVwiKX0sZXhwb3J0cy5lbmFibGVEcmFnPWZ1bmN0aW9uKCl7c2VsZWN0UHJvcCYmKGRvY1N0eWxlW3NlbGVjdFByb3BdPXVzZXJTZWxlY3QpfTt2YXIgdHJhbnNmb3JtUHJvcD10ZXN0UHJvcChbXCJ0cmFuc2Zvcm1cIixcIldlYmtpdFRyYW5zZm9ybVwiXSk7ZXhwb3J0cy5zZXRUcmFuc2Zvcm09ZnVuY3Rpb24oZSx0KXtlLnN0eWxlW3RyYW5zZm9ybVByb3BdPXR9O3ZhciBzdXBwcmVzc0NsaWNrPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixzdXBwcmVzc0NsaWNrLCEwKX07ZXhwb3J0cy5zdXBwcmVzc0NsaWNrPWZ1bmN0aW9uKCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHN1cHByZXNzQ2xpY2ssITApLHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHN1cHByZXNzQ2xpY2ssITApfSwwKX0sZXhwb3J0cy5tb3VzZVBvcz1mdW5jdGlvbihlLHQpe3ZhciBvPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHQ9dC50b3VjaGVzP3QudG91Y2hlc1swXTp0LG5ldyBQb2ludCh0LmNsaWVudFgtby5sZWZ0LWUuY2xpZW50TGVmdCx0LmNsaWVudFktby50b3AtZS5jbGllbnRUb3ApfSxleHBvcnRzLnRvdWNoUG9zPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1bXSxyPVwidG91Y2hlbmRcIj09PXQudHlwZT90LmNoYW5nZWRUb3VjaGVzOnQudG91Y2hlcyxzPTA7czxyLmxlbmd0aDtzKyspbi5wdXNoKG5ldyBQb2ludChyW3NdLmNsaWVudFgtby5sZWZ0LWUuY2xpZW50TGVmdCxyW3NdLmNsaWVudFktby50b3AtZS5jbGllbnRUb3ApKTtyZXR1cm4gbn0sZXhwb3J0cy5yZW1vdmU9ZnVuY3Rpb24oZSl7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9O1xufSx7XCIuL3dpbmRvd1wiOjIwNCxcIkBtYXBib3gvcG9pbnQtZ2VvbWV0cnlcIjoyfV0sMjEwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIF9hZGRFdmVudExpc3RlbmVyKGUsdCxuKXtuW2VdPW5bZV18fFtdLG5bZV0ucHVzaCh0KX1mdW5jdGlvbiBfcmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQsbil7aWYobiYmbltlXSl7dmFyIGk9bltlXS5pbmRleE9mKHQpOy0xIT09aSYmbltlXS5zcGxpY2UoaSwxKX19dmFyIHV0aWw9X2RlcmVxXyhcIi4vdXRpbFwiKSxFdmVudGVkPWZ1bmN0aW9uKCl7fTtFdmVudGVkLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzfHx7fSxfYWRkRXZlbnRMaXN0ZW5lcihlLHQsdGhpcy5fbGlzdGVuZXJzKSx0aGlzfSxFdmVudGVkLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gX3JlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHRoaXMuX2xpc3RlbmVycyksX3JlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHRoaXMuX29uZVRpbWVMaXN0ZW5lcnMpLHRoaXN9LEV2ZW50ZWQucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fb25lVGltZUxpc3RlbmVycz10aGlzLl9vbmVUaW1lTGlzdGVuZXJzfHx7fSxfYWRkRXZlbnRMaXN0ZW5lcihlLHQsdGhpcy5fb25lVGltZUxpc3RlbmVycyksdGhpc30sRXZlbnRlZC5wcm90b3R5cGUuZmlyZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYodGhpcy5saXN0ZW5zKGUpKXt0PXV0aWwuZXh0ZW5kKHt9LHQse3R5cGU6ZSx0YXJnZXQ6dGhpc30pO2Zvcih2YXIgaT10aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVyc1tlXT90aGlzLl9saXN0ZW5lcnNbZV0uc2xpY2UoKTpbXSxzPTA7czxpLmxlbmd0aDtzKyspaVtzXS5jYWxsKG4sdCk7Zm9yKHZhciByPXRoaXMuX29uZVRpbWVMaXN0ZW5lcnMmJnRoaXMuX29uZVRpbWVMaXN0ZW5lcnNbZV0/dGhpcy5fb25lVGltZUxpc3RlbmVyc1tlXS5zbGljZSgpOltdLG89MDtvPHIubGVuZ3RoO28rKylyW29dLmNhbGwobix0KSxfcmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHJbb10sbi5fb25lVGltZUxpc3RlbmVycyk7dGhpcy5fZXZlbnRlZFBhcmVudCYmdGhpcy5fZXZlbnRlZFBhcmVudC5maXJlKGUsdXRpbC5leHRlbmQoe30sdCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLl9ldmVudGVkUGFyZW50RGF0YT90aGlzLl9ldmVudGVkUGFyZW50RGF0YSgpOnRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhKSl9ZWxzZSB1dGlsLmVuZHNXaXRoKGUsXCJlcnJvclwiKSYmY29uc29sZS5lcnJvcih0JiZ0LmVycm9yfHx0fHxcIkVtcHR5IGVycm9yIGV2ZW50XCIpO3JldHVybiB0aGlzfSxFdmVudGVkLnByb3RvdHlwZS5saXN0ZW5zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVyc1tlXSYmdGhpcy5fbGlzdGVuZXJzW2VdLmxlbmd0aD4wfHx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW2VdJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW2VdLmxlbmd0aD4wfHx0aGlzLl9ldmVudGVkUGFyZW50JiZ0aGlzLl9ldmVudGVkUGFyZW50Lmxpc3RlbnMoZSl9LEV2ZW50ZWQucHJvdG90eXBlLnNldEV2ZW50ZWRQYXJlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZXZlbnRlZFBhcmVudD1lLHRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhPXQsdGhpc30sbW9kdWxlLmV4cG9ydHM9RXZlbnRlZDtcbn0se1wiLi91dGlsXCI6MjIzfV0sMjExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNvbXBhcmVNYXgoZSx0KXtyZXR1cm4gdC5tYXgtZS5tYXh9ZnVuY3Rpb24gQ2VsbChlLHQsbixvKXt0aGlzLnA9bmV3IFBvaW50KGUsdCksdGhpcy5oPW4sdGhpcy5kPXBvaW50VG9Qb2x5Z29uRGlzdCh0aGlzLnAsbyksdGhpcy5tYXg9dGhpcy5kK3RoaXMuaCpNYXRoLlNRUlQyfWZ1bmN0aW9uIHBvaW50VG9Qb2x5Z29uRGlzdChlLHQpe2Zvcih2YXIgbj0hMSxvPTEvMCxyPTA7cjx0Lmxlbmd0aDtyKyspZm9yKHZhciBpPXRbcl0sbD0wLHU9aS5sZW5ndGgsYT11LTE7bDx1O2E9bCsrKXt2YXIgcz1pW2xdLHA9aVthXTtzLnk+ZS55IT1wLnk+ZS55JiZlLng8KHAueC1zLngpKihlLnktcy55KS8ocC55LXMueSkrcy54JiYobj0hbiksbz1NYXRoLm1pbihvLGRpc3RUb1NlZ21lbnRTcXVhcmVkKGUscyxwKSl9cmV0dXJuKG4/MTotMSkqTWF0aC5zcXJ0KG8pfWZ1bmN0aW9uIGdldENlbnRyb2lkQ2VsbChlKXtmb3IodmFyIHQ9MCxuPTAsbz0wLHI9ZVswXSxpPTAsbD1yLmxlbmd0aCx1PWwtMTtpPGw7dT1pKyspe3ZhciBhPXJbaV0scz1yW3VdLHA9YS54KnMueS1zLngqYS55O24rPShhLngrcy54KSpwLG8rPShhLnkrcy55KSpwLHQrPTMqcH1yZXR1cm4gbmV3IENlbGwobi90LG8vdCwwLGUpfXZhciBRdWV1ZT1fZGVyZXFfKFwidGlueXF1ZXVlXCIpLFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpLGRpc3RUb1NlZ21lbnRTcXVhcmVkPV9kZXJlcV8oXCIuL2ludGVyc2VjdGlvbl90ZXN0c1wiKS5kaXN0VG9TZWdtZW50U3F1YXJlZDttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09dCYmKHQ9MSksdm9pZCAwPT09biYmKG49ITEpO2Zvcih2YXIgbz0xLzAscj0xLzAsaT0tMS8wLGw9LTEvMCx1PWVbMF0sYT0wO2E8dS5sZW5ndGg7YSsrKXt2YXIgcz11W2FdOyghYXx8cy54PG8pJiYobz1zLngpLCghYXx8cy55PHIpJiYocj1zLnkpLCghYXx8cy54PmkpJiYoaT1zLngpLCghYXx8cy55PmwpJiYobD1zLnkpfXZhciBwPWktbyxoPWwtcixkPU1hdGgubWluKHAsaCkseD1kLzIseT1uZXcgUXVldWUobnVsbCxjb21wYXJlTWF4KTtpZigwPT09ZClyZXR1cm4gbmV3IFBvaW50KG8scik7Zm9yKHZhciBnPW87ZzxpO2crPWQpZm9yKHZhciBmPXI7ZjxsO2YrPWQpeS5wdXNoKG5ldyBDZWxsKGcreCxmK3gseCxlKSk7Zm9yKHZhciBtPWdldENlbnRyb2lkQ2VsbChlKSx2PXkubGVuZ3RoO3kubGVuZ3RoOyl7dmFyIGM9eS5wb3AoKTsoYy5kPm0uZHx8IW0uZCkmJihtPWMsbiYmY29uc29sZS5sb2coXCJmb3VuZCBiZXN0ICVkIGFmdGVyICVkIHByb2Jlc1wiLE1hdGgucm91bmQoMWU0KmMuZCkvMWU0LHYpKSxjLm1heC1tLmQ8PXR8fCh4PWMuaC8yLHkucHVzaChuZXcgQ2VsbChjLnAueC14LGMucC55LXgseCxlKSkseS5wdXNoKG5ldyBDZWxsKGMucC54K3gsYy5wLnkteCx4LGUpKSx5LnB1c2gobmV3IENlbGwoYy5wLngteCxjLnAueSt4LHgsZSkpLHkucHVzaChuZXcgQ2VsbChjLnAueCt4LGMucC55K3gseCxlKSksdis9NCl9cmV0dXJuIG4mJihjb25zb2xlLmxvZyhcIm51bSBwcm9iZXM6IFwiK3YpLGNvbnNvbGUubG9nKFwiYmVzdCBkaXN0YW5jZTogXCIrbS5kKSksbS5wfTtcbn0se1wiLi9pbnRlcnNlY3Rpb25fdGVzdHNcIjoyMTQsXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCI6MixcInRpbnlxdWV1ZVwiOjMzfV0sMjEyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBXb3JrZXJQb29sPV9kZXJlcV8oXCIuL3dvcmtlcl9wb29sXCIpLGdsb2JhbFdvcmtlclBvb2w7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gZ2xvYmFsV29ya2VyUG9vbHx8KGdsb2JhbFdvcmtlclBvb2w9bmV3IFdvcmtlclBvb2wpLGdsb2JhbFdvcmtlclBvb2x9O1xufSx7XCIuL3dvcmtlcl9wb29sXCI6MjI2fV0sMjEzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGNyZWF0ZUltYWdlKGUsdCxpKXt2YXIgaD1lLndpZHRoLGE9ZS5oZWlnaHQ7aWYoaSl7aWYoaS5sZW5ndGghPT1oKmEqdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm1pc21hdGNoZWQgaW1hZ2Ugc2l6ZVwiKX1lbHNlIGk9bmV3IFVpbnQ4QXJyYXkoaCphKnQpO3JldHVybnt3aWR0aDpoLGhlaWdodDphLGRhdGE6aX19ZnVuY3Rpb24gcmVzaXplSW1hZ2UoZSx0LGkpe3ZhciBoPXQud2lkdGgsYT10LmhlaWdodDtpZihoPT09ZS53aWR0aCYmYT09PWUuaGVpZ2h0KXJldHVybiBlO3ZhciByPWNyZWF0ZUltYWdlKHt3aWR0aDpoLGhlaWdodDphfSxpKTtjb3B5SW1hZ2UoZSxyLHt4OjAseTowfSx7eDowLHk6MH0se3dpZHRoOk1hdGgubWluKGUud2lkdGgsaCksaGVpZ2h0Ok1hdGgubWluKGUuaGVpZ2h0LGEpfSxpKSxlLndpZHRoPWgsZS5oZWlnaHQ9YSxlLmRhdGE9ci5kYXRhfWZ1bmN0aW9uIGNvcHlJbWFnZShlLHQsaSxoLGEscil7aWYoMD09PWEud2lkdGh8fDA9PT1hLmhlaWdodClyZXR1cm4gdDtpZihhLndpZHRoPmUud2lkdGh8fGEuaGVpZ2h0PmUuaGVpZ2h0fHxpLng+ZS53aWR0aC1hLndpZHRofHxpLnk+ZS5oZWlnaHQtYS5oZWlnaHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2Ugc291cmNlIGNvb3JkaW5hdGVzIGZvciBpbWFnZSBjb3B5XCIpO2lmKGEud2lkdGg+dC53aWR0aHx8YS5oZWlnaHQ+dC5oZWlnaHR8fGgueD50LndpZHRoLWEud2lkdGh8fGgueT50LmhlaWdodC1hLmhlaWdodCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBkZXN0aW5hdGlvbiBjb29yZGluYXRlcyBmb3IgaW1hZ2UgY29weVwiKTtmb3IodmFyIGc9ZS5kYXRhLG49dC5kYXRhLG89MDtvPGEuaGVpZ2h0O28rKylmb3IodmFyIG09KChpLnkrbykqZS53aWR0aCtpLngpKnIsYz0oKGgueStvKSp0LndpZHRoK2gueCkqcixkPTA7ZDxhLndpZHRoKnI7ZCsrKW5bYytkXT1nW20rZF07cmV0dXJuIHR9dmFyIEFscGhhSW1hZ2U9ZnVuY3Rpb24oKXt9O0FscGhhSW1hZ2UuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNyZWF0ZUltYWdlKGUsMSx0KX0sQWxwaGFJbWFnZS5yZXNpemU9ZnVuY3Rpb24oZSx0KXtyZXNpemVJbWFnZShlLHQsMSl9LEFscGhhSW1hZ2UuY29weT1mdW5jdGlvbihlLHQsaSxoLGEpe2NvcHlJbWFnZShlLHQsaSxoLGEsMSl9O3ZhciBSR0JBSW1hZ2U9ZnVuY3Rpb24oKXt9O1JHQkFJbWFnZS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY3JlYXRlSW1hZ2UoZSw0LHQpfSxSR0JBSW1hZ2UucmVzaXplPWZ1bmN0aW9uKGUsdCl7cmVzaXplSW1hZ2UoZSx0LDQpfSxSR0JBSW1hZ2UuY29weT1mdW5jdGlvbihlLHQsaSxoLGEpe2NvcHlJbWFnZShlLHQsaSxoLGEsNCl9LG1vZHVsZS5leHBvcnRzPXtBbHBoYUltYWdlOkFscGhhSW1hZ2UsUkdCQUltYWdlOlJHQkFJbWFnZX07XG59LHt9XSwyMTQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcG9seWdvbkludGVyc2VjdHNQb2x5Z29uKG4sdCl7Zm9yKHZhciBlPTA7ZTxuLmxlbmd0aDtlKyspaWYocG9seWdvbkNvbnRhaW5zUG9pbnQodCxuW2VdKSlyZXR1cm4hMDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKylpZihwb2x5Z29uQ29udGFpbnNQb2ludChuLHRbcl0pKXJldHVybiEwO3JldHVybiEhbGluZUludGVyc2VjdHNMaW5lKG4sdCl9ZnVuY3Rpb24gbXVsdGlQb2x5Z29uSW50ZXJzZWN0c0J1ZmZlcmVkTXVsdGlQb2ludChuLHQsZSl7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspZm9yKHZhciBvPW5bcl0saT0wO2k8dC5sZW5ndGg7aSsrKWZvcih2YXIgbD10W2ldLHU9MDt1PGwubGVuZ3RoO3UrKyl7dmFyIHM9bFt1XTtpZihwb2x5Z29uQ29udGFpbnNQb2ludChvLHMpKXJldHVybiEwO2lmKHBvaW50SW50ZXJzZWN0c0J1ZmZlcmVkTGluZShzLG8sZSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbXVsdGlQb2x5Z29uSW50ZXJzZWN0c011bHRpUG9seWdvbihuLHQpe2lmKDE9PT1uLmxlbmd0aCYmMT09PW5bMF0ubGVuZ3RoKXJldHVybiBtdWx0aVBvbHlnb25Db250YWluc1BvaW50KHQsblswXVswXSk7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKHZhciByPXRbZV0sbz0wO288ci5sZW5ndGg7bysrKWlmKG11bHRpUG9seWdvbkNvbnRhaW5zUG9pbnQobixyW29dKSlyZXR1cm4hMDtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7Zm9yKHZhciBsPW5baV0sdT0wO3U8bC5sZW5ndGg7dSsrKWlmKG11bHRpUG9seWdvbkNvbnRhaW5zUG9pbnQodCxsW3VdKSlyZXR1cm4hMDtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKylpZihsaW5lSW50ZXJzZWN0c0xpbmUobCx0W3NdKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBtdWx0aVBvbHlnb25JbnRlcnNlY3RzQnVmZmVyZWRNdWx0aUxpbmUobix0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWZvcih2YXIgbz10W3JdLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIGw9bltpXTtpZihsLmxlbmd0aD49Mylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKylpZihwb2x5Z29uQ29udGFpbnNQb2ludChsLG9bdV0pKXJldHVybiEwO2lmKGxpbmVJbnRlcnNlY3RzQnVmZmVyZWRMaW5lKGwsbyxlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBsaW5lSW50ZXJzZWN0c0J1ZmZlcmVkTGluZShuLHQsZSl7aWYobi5sZW5ndGg+MSl7aWYobGluZUludGVyc2VjdHNMaW5lKG4sdCkpcmV0dXJuITA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspaWYocG9pbnRJbnRlcnNlY3RzQnVmZmVyZWRMaW5lKHRbcl0sbixlKSlyZXR1cm4hMH1mb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylpZihwb2ludEludGVyc2VjdHNCdWZmZXJlZExpbmUobltvXSx0LGUpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGxpbmVJbnRlcnNlY3RzTGluZShuLHQpe2lmKDA9PT1uLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgZT0wO2U8bi5sZW5ndGgtMTtlKyspZm9yKHZhciByPW5bZV0sbz1uW2UrMV0saT0wO2k8dC5sZW5ndGgtMTtpKyspe3ZhciBsPXRbaV0sdT10W2krMV07aWYobGluZVNlZ21lbnRJbnRlcnNlY3RzTGluZVNlZ21lbnQocixvLGwsdSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbGluZVNlZ21lbnRJbnRlcnNlY3RzTGluZVNlZ21lbnQobix0LGUscil7cmV0dXJuIGlzQ291bnRlckNsb2Nrd2lzZShuLGUscikhPT1pc0NvdW50ZXJDbG9ja3dpc2UodCxlLHIpJiZpc0NvdW50ZXJDbG9ja3dpc2Uobix0LGUpIT09aXNDb3VudGVyQ2xvY2t3aXNlKG4sdCxyKX1mdW5jdGlvbiBwb2ludEludGVyc2VjdHNCdWZmZXJlZExpbmUobix0LGUpe3ZhciByPWUqZTtpZigxPT09dC5sZW5ndGgpcmV0dXJuIG4uZGlzdFNxcih0WzBdKTxyO2Zvcih2YXIgbz0xO288dC5sZW5ndGg7bysrKXtpZihkaXN0VG9TZWdtZW50U3F1YXJlZChuLHRbby0xXSx0W29dKTxyKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGRpc3RUb1NlZ21lbnRTcXVhcmVkKG4sdCxlKXt2YXIgcj10LmRpc3RTcXIoZSk7aWYoMD09PXIpcmV0dXJuIG4uZGlzdFNxcih0KTt2YXIgbz0oKG4ueC10LngpKihlLngtdC54KSsobi55LXQueSkqKGUueS10LnkpKS9yO3JldHVybiBvPDA/bi5kaXN0U3FyKHQpOm8+MT9uLmRpc3RTcXIoZSk6bi5kaXN0U3FyKGUuc3ViKHQpLl9tdWx0KG8pLl9hZGQodCkpfWZ1bmN0aW9uIG11bHRpUG9seWdvbkNvbnRhaW5zUG9pbnQobix0KXtmb3IodmFyIGUscixvLGk9ITEsbD0wO2w8bi5sZW5ndGg7bCsrKXtlPW5bbF07Zm9yKHZhciB1PTAscz1lLmxlbmd0aC0xO3U8ZS5sZW5ndGg7cz11Kyspcj1lW3VdLG89ZVtzXSxyLnk+dC55IT1vLnk+dC55JiZ0Lng8KG8ueC1yLngpKih0Lnktci55KS8oby55LXIueSkrci54JiYoaT0haSl9cmV0dXJuIGl9ZnVuY3Rpb24gcG9seWdvbkNvbnRhaW5zUG9pbnQobix0KXtmb3IodmFyIGU9ITEscj0wLG89bi5sZW5ndGgtMTtyPG4ubGVuZ3RoO289cisrKXt2YXIgaT1uW3JdLGw9bltvXTtpLnk+dC55IT1sLnk+dC55JiZ0Lng8KGwueC1pLngpKih0LnktaS55KS8obC55LWkueSkraS54JiYoZT0hZSl9cmV0dXJuIGV9dmFyIHJlZj1fZGVyZXFfKFwiLi91dGlsXCIpLGlzQ291bnRlckNsb2Nrd2lzZT1yZWYuaXNDb3VudGVyQ2xvY2t3aXNlO21vZHVsZS5leHBvcnRzPXttdWx0aVBvbHlnb25JbnRlcnNlY3RzQnVmZmVyZWRNdWx0aVBvaW50Om11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpUG9pbnQsbXVsdGlQb2x5Z29uSW50ZXJzZWN0c011bHRpUG9seWdvbjptdWx0aVBvbHlnb25JbnRlcnNlY3RzTXVsdGlQb2x5Z29uLG11bHRpUG9seWdvbkludGVyc2VjdHNCdWZmZXJlZE11bHRpTGluZTptdWx0aVBvbHlnb25JbnRlcnNlY3RzQnVmZmVyZWRNdWx0aUxpbmUscG9seWdvbkludGVyc2VjdHNQb2x5Z29uOnBvbHlnb25JbnRlcnNlY3RzUG9seWdvbixkaXN0VG9TZWdtZW50U3F1YXJlZDpkaXN0VG9TZWdtZW50U3F1YXJlZH07XG59LHtcIi4vdXRpbFwiOjIyM31dLDIxNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgdW5pY29kZUJsb2NrTG9va3VwPXtcIkxhdGluLTEgU3VwcGxlbWVudFwiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMjgmJm48PTI1NX0sQXJhYmljOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xNTM2JiZuPD0xNzkxfSxcIkFyYWJpYyBTdXBwbGVtZW50XCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTE4NzImJm48PTE5MTl9LFwiQXJhYmljIEV4dGVuZGVkLUFcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49MjIwOCYmbjw9MjMwM30sXCJIYW5ndWwgSmFtb1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj00MzUyJiZuPD00NjA3fSxcIlVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3NcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NTEyMCYmbjw9NTc1OX0sXCJVbmlmaWVkIENhbmFkaWFuIEFib3JpZ2luYWwgU3lsbGFiaWNzIEV4dGVuZGVkXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTYzMjAmJm48PTYzOTl9LFwiR2VuZXJhbCBQdW5jdHVhdGlvblwiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj04MTkyJiZuPD04MzAzfSxcIkxldHRlcmxpa2UgU3ltYm9sc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj04NDQ4JiZuPD04NTI3fSxcIk51bWJlciBGb3Jtc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj04NTI4JiZuPD04NTkxfSxcIk1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTg5NjAmJm48PTkyMTV9LFwiQ29udHJvbCBQaWN0dXJlc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj05MjE2JiZuPD05Mjc5fSxcIk9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTkyODAmJm48PTkzMTF9LFwiRW5jbG9zZWQgQWxwaGFudW1lcmljc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj05MzEyJiZuPD05NDcxfSxcIkdlb21ldHJpYyBTaGFwZXNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49OTYzMiYmbjw9OTcyN30sXCJNaXNjZWxsYW5lb3VzIFN5bWJvbHNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49OTcyOCYmbjw9OTk4M30sXCJNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIEFycm93c1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMTAwOCYmbjw9MTEyNjN9LFwiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnRcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49MTE5MDQmJm48PTEyMDMxfSxcIkthbmd4aSBSYWRpY2Fsc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMjAzMiYmbjw9MTIyNTV9LFwiSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVyc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMjI3MiYmbjw9MTIyODd9LFwiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyMjg4JiZuPD0xMjM1MX0sSGlyYWdhbmE6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyMzUyJiZuPD0xMjQ0N30sS2F0YWthbmE6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyNDQ4JiZuPD0xMjU0M30sQm9wb21vZm86ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyNTQ0JiZuPD0xMjU5MX0sXCJIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyNTkyJiZuPD0xMjY4N30sS2FuYnVuOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMjY4OCYmbjw9MTI3MDN9LFwiQm9wb21vZm8gRXh0ZW5kZWRcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49MTI3MDQmJm48PTEyNzM1fSxcIkNKSyBTdHJva2VzXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyNzM2JiZuPD0xMjc4M30sXCJLYXRha2FuYSBQaG9uZXRpYyBFeHRlbnNpb25zXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyNzg0JiZuPD0xMjc5OX0sXCJFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTEyODAwJiZuPD0xMzA1NX0sXCJDSksgQ29tcGF0aWJpbGl0eVwiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMzA1NiYmbjw9MTMzMTF9LFwiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQVwiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj0xMzMxMiYmbjw9MTk5MDN9LFwiWWlqaW5nIEhleGFncmFtIFN5bWJvbHNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49MTk5MDQmJm48PTE5OTY3fSxcIkNKSyBVbmlmaWVkIElkZW9ncmFwaHNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49MTk5NjgmJm48PTQwOTU5fSxcIllpIFN5bGxhYmxlc1wiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj00MDk2MCYmbjw9NDIxMjd9LFwiWWkgUmFkaWNhbHNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NDIxMjgmJm48PTQyMTkxfSxcIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUFcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NDMzNjAmJm48PTQzMzkxfSxcIkhhbmd1bCBTeWxsYWJsZXNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NDQwMzImJm48PTU1MjE1fSxcIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUJcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NTUyMTYmJm48PTU1Mjk1fSxcIlByaXZhdGUgVXNlIEFyZWFcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NTczNDQmJm48PTYzNzQzfSxcIkNKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NjM3NDQmJm48PTY0MjU1fSxcIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQVwiOmZ1bmN0aW9uKG4pe3JldHVybiBuPj02NDMzNiYmbjw9NjUwMjN9LFwiVmVydGljYWwgRm9ybXNcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NjUwNDAmJm48PTY1MDU1fSxcIkNKSyBDb21wYXRpYmlsaXR5IEZvcm1zXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTY1MDcyJiZuPD02NTEwM30sXCJTbWFsbCBGb3JtIFZhcmlhbnRzXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTY1MTA0JiZuPD02NTEzNX0sXCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUJcIjpmdW5jdGlvbihuKXtyZXR1cm4gbj49NjUxMzYmJm48PTY1Mjc5fSxcIkhhbGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zXCI6ZnVuY3Rpb24obil7cmV0dXJuIG4+PTY1MjgwJiZuPD02NTUxOX19O21vZHVsZS5leHBvcnRzPXVuaWNvZGVCbG9ja0xvb2t1cDtcbn0se31dLDIxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgTFJVQ2FjaGU9ZnVuY3Rpb24odCxlKXt0aGlzLm1heD10LHRoaXMub25SZW1vdmU9ZSx0aGlzLnJlc2V0KCl9O0xSVUNhY2hlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7Zm9yKHZhciBlIGluIHQuZGF0YSl0Lm9uUmVtb3ZlKHQuZGF0YVtlXSk7cmV0dXJuIHRoaXMuZGF0YT17fSx0aGlzLm9yZGVyPVtdLHRoaXN9LExSVUNhY2hlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmhhcyh0KSl0aGlzLm9yZGVyLnNwbGljZSh0aGlzLm9yZGVyLmluZGV4T2YodCksMSksdGhpcy5kYXRhW3RdPWUsdGhpcy5vcmRlci5wdXNoKHQpO2Vsc2UgaWYodGhpcy5kYXRhW3RdPWUsdGhpcy5vcmRlci5wdXNoKHQpLHRoaXMub3JkZXIubGVuZ3RoPnRoaXMubWF4KXt2YXIgcj10aGlzLmdldCh0aGlzLm9yZGVyWzBdKTtyJiZ0aGlzLm9uUmVtb3ZlKHIpfXJldHVybiB0aGlzfSxMUlVDYWNoZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluIHRoaXMuZGF0YX0sTFJVQ2FjaGUucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmRlcn0sTFJVQ2FjaGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZighdGhpcy5oYXModCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5kYXRhW3RdO3JldHVybiBkZWxldGUgdGhpcy5kYXRhW3RdLHRoaXMub3JkZXIuc3BsaWNlKHRoaXMub3JkZXIuaW5kZXhPZih0KSwxKSxlfSxMUlVDYWNoZS5wcm90b3R5cGUuZ2V0V2l0aG91dFJlbW92aW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhcyh0KT90aGlzLmRhdGFbdF06bnVsbH0sTFJVQ2FjaGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtpZighdGhpcy5oYXModCkpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5kYXRhW3RdO3JldHVybiBkZWxldGUgdGhpcy5kYXRhW3RdLHRoaXMub25SZW1vdmUoZSksdGhpcy5vcmRlci5zcGxpY2UodGhpcy5vcmRlci5pbmRleE9mKHQpLDEpLHRoaXN9LExSVUNhY2hlLnByb3RvdHlwZS5zZXRNYXhTaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7Zm9yKHRoaXMubWF4PXQ7dGhpcy5vcmRlci5sZW5ndGg+dGhpcy5tYXg7KXt2YXIgcj1lLmdldChlLm9yZGVyWzBdKTtyJiZlLm9uUmVtb3ZlKHIpfXJldHVybiB0aGlzfSxtb2R1bGUuZXhwb3J0cz1MUlVDYWNoZTtcbn0se31dLDIxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBtYWtlQVBJVVJMKHIsZSl7dmFyIHQ9cGFyc2VVcmwoY29uZmlnLkFQSV9VUkwpO2lmKHIucHJvdG9jb2w9dC5wcm90b2NvbCxyLmF1dGhvcml0eT10LmF1dGhvcml0eSxcIi9cIiE9PXQucGF0aCYmKHIucGF0aD1cIlwiK3QucGF0aCtyLnBhdGgpLCFjb25maWcuUkVRVUlSRV9BQ0NFU1NfVE9LRU4pcmV0dXJuIGZvcm1hdFVybChyKTtpZighKGU9ZXx8Y29uZmlnLkFDQ0VTU19UT0tFTikpdGhyb3cgbmV3IEVycm9yKFwiQW4gQVBJIGFjY2VzcyB0b2tlbiBpcyByZXF1aXJlZCB0byB1c2UgTWFwYm94IEdMLiBcIitoZWxwKTtpZihcInNcIj09PWVbMF0pdGhyb3cgbmV3IEVycm9yKFwiVXNlIGEgcHVibGljIGFjY2VzcyB0b2tlbiAocGsuKikgd2l0aCBNYXBib3ggR0wsIG5vdCBhIHNlY3JldCBhY2Nlc3MgdG9rZW4gKHNrLiopLiBcIitoZWxwKTtyZXR1cm4gci5wYXJhbXMucHVzaChcImFjY2Vzc190b2tlbj1cIitlKSxmb3JtYXRVcmwocil9ZnVuY3Rpb24gaXNNYXBib3hVUkwocil7cmV0dXJuIDA9PT1yLmluZGV4T2YoXCJtYXBib3g6XCIpfWZ1bmN0aW9uIHJlcGxhY2VUZW1wQWNjZXNzVG9rZW4ocil7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspMD09PXJbZV0uaW5kZXhPZihcImFjY2Vzc190b2tlbj10ay5cIikmJihyW2VdPVwiYWNjZXNzX3Rva2VuPVwiKyhjb25maWcuQUNDRVNTX1RPS0VOfHxcIlwiKSl9ZnVuY3Rpb24gcGFyc2VVcmwocil7dmFyIGU9ci5tYXRjaCh1cmxSZSk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHBhcnNlIFVSTCBvYmplY3RcIik7cmV0dXJue3Byb3RvY29sOmVbMV0sYXV0aG9yaXR5OmVbMl0scGF0aDplWzNdfHxcIi9cIixwYXJhbXM6ZVs0XT9lWzRdLnNwbGl0KFwiJlwiKTpbXX19ZnVuY3Rpb24gZm9ybWF0VXJsKHIpe3ZhciBlPXIucGFyYW1zLmxlbmd0aD9cIj9cIityLnBhcmFtcy5qb2luKFwiJlwiKTpcIlwiO3JldHVybiByLnByb3RvY29sK1wiOi8vXCIrci5hdXRob3JpdHkrci5wYXRoK2V9dmFyIGNvbmZpZz1fZGVyZXFfKFwiLi9jb25maWdcIiksYnJvd3Nlcj1fZGVyZXFfKFwiLi9icm93c2VyXCIpLGhlbHA9XCJTZWUgaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hcGktZG9jdW1lbnRhdGlvbi8jYWNjZXNzLXRva2Vuc1wiO2V4cG9ydHMuaXNNYXBib3hVUkw9aXNNYXBib3hVUkwsZXhwb3J0cy5ub3JtYWxpemVTdHlsZVVSTD1mdW5jdGlvbihyLGUpe2lmKCFpc01hcGJveFVSTChyKSlyZXR1cm4gcjt2YXIgdD1wYXJzZVVybChyKTtyZXR1cm4gdC5wYXRoPVwiL3N0eWxlcy92MVwiK3QucGF0aCxtYWtlQVBJVVJMKHQsZSl9LGV4cG9ydHMubm9ybWFsaXplR2x5cGhzVVJMPWZ1bmN0aW9uKHIsZSl7aWYoIWlzTWFwYm94VVJMKHIpKXJldHVybiByO3ZhciB0PXBhcnNlVXJsKHIpO3JldHVybiB0LnBhdGg9XCIvZm9udHMvdjFcIit0LnBhdGgsbWFrZUFQSVVSTCh0LGUpfSxleHBvcnRzLm5vcm1hbGl6ZVNvdXJjZVVSTD1mdW5jdGlvbihyLGUpe2lmKCFpc01hcGJveFVSTChyKSlyZXR1cm4gcjt2YXIgdD1wYXJzZVVybChyKTtyZXR1cm4gdC5wYXRoPVwiL3Y0L1wiK3QuYXV0aG9yaXR5K1wiLmpzb25cIix0LnBhcmFtcy5wdXNoKFwic2VjdXJlXCIpLG1ha2VBUElVUkwodCxlKX0sZXhwb3J0cy5ub3JtYWxpemVTcHJpdGVVUkw9ZnVuY3Rpb24ocixlLHQsYSl7dmFyIG89cGFyc2VVcmwocik7cmV0dXJuIGlzTWFwYm94VVJMKHIpPyhvLnBhdGg9XCIvc3R5bGVzL3YxXCIrby5wYXRoK1wiL3Nwcml0ZVwiK2UrdCxtYWtlQVBJVVJMKG8sYSkpOihvLnBhdGgrPVwiXCIrZSt0LGZvcm1hdFVybChvKSl9O3ZhciBpbWFnZUV4dGVuc2lvblJlPS8oXFwuKHBuZ3xqcGcpXFxkKikoPz0kKS87ZXhwb3J0cy5ub3JtYWxpemVUaWxlVVJMPWZ1bmN0aW9uKHIsZSx0KXtpZighZXx8IWlzTWFwYm94VVJMKGUpKXJldHVybiByO3ZhciBhPXBhcnNlVXJsKHIpLG89YnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvPj0yfHw1MTI9PT10P1wiQDJ4XCI6XCJcIixwPWJyb3dzZXIuc3VwcG9ydHNXZWJwP1wiLndlYnBcIjpcIiQxXCI7cmV0dXJuIGEucGF0aD1hLnBhdGgucmVwbGFjZShpbWFnZUV4dGVuc2lvblJlLFwiXCIrbytwKSxyZXBsYWNlVGVtcEFjY2Vzc1Rva2VuKGEucGFyYW1zKSxmb3JtYXRVcmwoYSl9O3ZhciB1cmxSZT0vXihcXHcrKTpcXC9cXC8oW15cXC8/XSopKFxcL1teP10rKT9cXD8/KC4rKT8vO1xufSx7XCIuL2Jyb3dzZXJcIjoyMDIsXCIuL2NvbmZpZ1wiOjIwNn1dLDIxODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgaXNDaGFyPV9kZXJlcV8oXCIuL2lzX2NoYXJfaW5fdW5pY29kZV9ibG9ja1wiKTttb2R1bGUuZXhwb3J0cy5hbGxvd3NJZGVvZ3JhcGhpY0JyZWFraW5nPWZ1bmN0aW9uKGEpe2Zvcih2YXIgaT0wLHI9YTtpPHIubGVuZ3RoO2krPTEpe3ZhciBzPXJbaV07aWYoIWV4cG9ydHMuY2hhckFsbG93c0lkZW9ncmFwaGljQnJlYWtpbmcocy5jaGFyQ29kZUF0KDApKSlyZXR1cm4hMX1yZXR1cm4hMH0sbW9kdWxlLmV4cG9ydHMuYWxsb3dzVmVydGljYWxXcml0aW5nTW9kZT1mdW5jdGlvbihhKXtmb3IodmFyIGk9MCxyPWE7aTxyLmxlbmd0aDtpKz0xKXt2YXIgcz1yW2ldO2lmKGV4cG9ydHMuY2hhckhhc1VwcmlnaHRWZXJ0aWNhbE9yaWVudGF0aW9uKHMuY2hhckNvZGVBdCgwKSkpcmV0dXJuITB9cmV0dXJuITF9LG1vZHVsZS5leHBvcnRzLmFsbG93c0xldHRlclNwYWNpbmc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBpPTAscj1hO2k8ci5sZW5ndGg7aSs9MSl7dmFyIHM9cltpXTtpZighZXhwb3J0cy5jaGFyQWxsb3dzTGV0dGVyU3BhY2luZyhzLmNoYXJDb2RlQXQoMCkpKXJldHVybiExfXJldHVybiEwfSxtb2R1bGUuZXhwb3J0cy5jaGFyQWxsb3dzTGV0dGVyU3BhY2luZz1mdW5jdGlvbihhKXtyZXR1cm4haXNDaGFyLkFyYWJpYyhhKSYmKCFpc0NoYXJbXCJBcmFiaWMgU3VwcGxlbWVudFwiXShhKSYmKCFpc0NoYXJbXCJBcmFiaWMgRXh0ZW5kZWQtQVwiXShhKSYmKCFpc0NoYXJbXCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUFcIl0oYSkmJiFpc0NoYXJbXCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUJcIl0oYSkpKSl9LG1vZHVsZS5leHBvcnRzLmNoYXJBbGxvd3NJZGVvZ3JhcGhpY0JyZWFraW5nPWZ1bmN0aW9uKGEpe3JldHVybiEoYTwxMTkwNCkmJighIWlzQ2hhcltcIkJvcG9tb2ZvIEV4dGVuZGVkXCJdKGEpfHwoISFpc0NoYXIuQm9wb21vZm8oYSl8fCghIWlzQ2hhcltcIkNKSyBDb21wYXRpYmlsaXR5IEZvcm1zXCJdKGEpfHwoISFpc0NoYXJbXCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzXCJdKGEpfHwoISFpc0NoYXJbXCJDSksgQ29tcGF0aWJpbGl0eVwiXShhKXx8KCEhaXNDaGFyW1wiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnRcIl0oYSl8fCghIWlzQ2hhcltcIkNKSyBTdHJva2VzXCJdKGEpfHwoISFpc0NoYXJbXCJDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb25cIl0oYSl8fCghIWlzQ2hhcltcIkNKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEFcIl0oYSl8fCghIWlzQ2hhcltcIkNKSyBVbmlmaWVkIElkZW9ncmFwaHNcIl0oYSl8fCghIWlzQ2hhcltcIkVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHNcIl0oYSl8fCghIWlzQ2hhcltcIkhhbGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zXCJdKGEpfHwoISFpc0NoYXIuSGlyYWdhbmEoYSl8fCghIWlzQ2hhcltcIklkZW9ncmFwaGljIERlc2NyaXB0aW9uIENoYXJhY3RlcnNcIl0oYSl8fCghIWlzQ2hhcltcIkthbmd4aSBSYWRpY2Fsc1wiXShhKXx8KCEhaXNDaGFyW1wiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9uc1wiXShhKXx8KCEhaXNDaGFyLkthdGFrYW5hKGEpfHwoISFpc0NoYXJbXCJWZXJ0aWNhbCBGb3Jtc1wiXShhKXx8KCEhaXNDaGFyW1wiWWkgUmFkaWNhbHNcIl0oYSl8fCEhaXNDaGFyW1wiWWkgU3lsbGFibGVzXCJdKGEpKSkpKSkpKSkpKSkpKSkpKSkpKX0sZXhwb3J0cy5jaGFySGFzVXByaWdodFZlcnRpY2FsT3JpZW50YXRpb249ZnVuY3Rpb24oYSl7cmV0dXJuIDc0Nj09PWF8fDc0Nz09PWF8fCEoYTw0MzUyKSYmKCEhaXNDaGFyW1wiQm9wb21vZm8gRXh0ZW5kZWRcIl0oYSl8fCghIWlzQ2hhci5Cb3BvbW9mbyhhKXx8KCEoIWlzQ2hhcltcIkNKSyBDb21wYXRpYmlsaXR5IEZvcm1zXCJdKGEpfHxhPj02NTA5NyYmYTw9NjUxMDMpfHwoISFpc0NoYXJbXCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzXCJdKGEpfHwoISFpc0NoYXJbXCJDSksgQ29tcGF0aWJpbGl0eVwiXShhKXx8KCEhaXNDaGFyW1wiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnRcIl0oYSl8fCghIWlzQ2hhcltcIkNKSyBTdHJva2VzXCJdKGEpfHwoISghaXNDaGFyW1wiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uXCJdKGEpfHxhPj0xMjI5NiYmYTw9MTIzMDV8fGE+PTEyMzA4JiZhPD0xMjMxOXx8MTIzMzY9PT1hKXx8KCEhaXNDaGFyW1wiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQVwiXShhKXx8KCEhaXNDaGFyW1wiQ0pLIFVuaWZpZWQgSWRlb2dyYXBoc1wiXShhKXx8KCEhaXNDaGFyW1wiRW5jbG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRoc1wiXShhKXx8KCEhaXNDaGFyW1wiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtb1wiXShhKXx8KCEhaXNDaGFyW1wiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQVwiXShhKXx8KCEhaXNDaGFyW1wiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQlwiXShhKXx8KCEhaXNDaGFyW1wiSGFuZ3VsIEphbW9cIl0oYSl8fCghIWlzQ2hhcltcIkhhbmd1bCBTeWxsYWJsZXNcIl0oYSl8fCghIWlzQ2hhci5IaXJhZ2FuYShhKXx8KCEhaXNDaGFyW1wiSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVyc1wiXShhKXx8KCEhaXNDaGFyLkthbmJ1bihhKXx8KCEhaXNDaGFyW1wiS2FuZ3hpIFJhZGljYWxzXCJdKGEpfHwoISFpc0NoYXJbXCJLYXRha2FuYSBQaG9uZXRpYyBFeHRlbnNpb25zXCJdKGEpfHwoISghaXNDaGFyLkthdGFrYW5hKGEpfHwxMjU0MD09PWEpfHwoISghaXNDaGFyW1wiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXNcIl0oYSl8fDY1Mjg4PT09YXx8NjUyODk9PT1hfHw2NTI5Mz09PWF8fGE+PTY1MzA2JiZhPD02NTMxMHx8NjUzMzk9PT1hfHw2NTM0MT09PWF8fDY1MzQzPT09YXx8YT49NjUzNzEmJmE8PTY1NTAzfHw2NTUwNz09PWF8fGE+PTY1NTEyJiZhPD02NTUxOSl8fCghKCFpc0NoYXJbXCJTbWFsbCBGb3JtIFZhcmlhbnRzXCJdKGEpfHxhPj02NTExMiYmYTw9NjUxMTh8fGE+PTY1MTIzJiZhPD02NTEyNil8fCghIWlzQ2hhcltcIlVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3NcIl0oYSl8fCghIWlzQ2hhcltcIlVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MgRXh0ZW5kZWRcIl0oYSl8fCghIWlzQ2hhcltcIlZlcnRpY2FsIEZvcm1zXCJdKGEpfHwoISFpc0NoYXJbXCJZaWppbmcgSGV4YWdyYW0gU3ltYm9sc1wiXShhKXx8KCEhaXNDaGFyW1wiWWkgU3lsbGFibGVzXCJdKGEpfHwhIWlzQ2hhcltcIllpIFJhZGljYWxzXCJdKGEpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSl9LGV4cG9ydHMuY2hhckhhc05ldXRyYWxWZXJ0aWNhbE9yaWVudGF0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiEoIWlzQ2hhcltcIkxhdGluLTEgU3VwcGxlbWVudFwiXShhKXx8MTY3IT09YSYmMTY5IT09YSYmMTc0IT09YSYmMTc3IT09YSYmMTg4IT09YSYmMTg5IT09YSYmMTkwIT09YSYmMjE1IT09YSYmMjQ3IT09YSl8fCghKCFpc0NoYXJbXCJHZW5lcmFsIFB1bmN0dWF0aW9uXCJdKGEpfHw4MjE0IT09YSYmODIyNCE9PWEmJjgyMjUhPT1hJiY4MjQwIT09YSYmODI0MSE9PWEmJjgyNTEhPT1hJiY4MjUyIT09YSYmODI1OCE9PWEmJjgyNjMhPT1hJiY4MjY0IT09YSYmODI2NSE9PWEmJjgyNzMhPT1hKXx8KCEhaXNDaGFyW1wiTGV0dGVybGlrZSBTeW1ib2xzXCJdKGEpfHwoISFpc0NoYXJbXCJOdW1iZXIgRm9ybXNcIl0oYSl8fCghKCFpc0NoYXJbXCJNaXNjZWxsYW5lb3VzIFRlY2huaWNhbFwiXShhKXx8IShhPj04OTYwJiZhPD04OTY3fHxhPj04OTcyJiZhPD04OTkxfHxhPj04OTk2JiZhPD05ZTN8fDkwMDM9PT1hfHxhPj05MDg1JiZhPD05MTE0fHxhPj05MTUwJiZhPD05MTY1fHw5MTY3PT09YXx8YT49OTE2OSYmYTw9OTE3OXx8YT49OTE4NiYmYTw9OTIxNSkpfHwoISghaXNDaGFyW1wiQ29udHJvbCBQaWN0dXJlc1wiXShhKXx8OTI1MT09PWEpfHwoISFpc0NoYXJbXCJPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25pdGlvblwiXShhKXx8KCEhaXNDaGFyW1wiRW5jbG9zZWQgQWxwaGFudW1lcmljc1wiXShhKXx8KCEhaXNDaGFyW1wiR2VvbWV0cmljIFNoYXBlc1wiXShhKXx8KCEoIWlzQ2hhcltcIk1pc2NlbGxhbmVvdXMgU3ltYm9sc1wiXShhKXx8YT49OTc1NCYmYTw9OTc1OSl8fCghKCFpc0NoYXJbXCJNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIEFycm93c1wiXShhKXx8IShhPj0xMTAyNiYmYTw9MTEwNTV8fGE+PTExMDg4JiZhPD0xMTA5N3x8YT49MTExOTImJmE8PTExMjQzKSl8fCghIWlzQ2hhcltcIkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvblwiXShhKXx8KCEhaXNDaGFyLkthdGFrYW5hKGEpfHwoISFpc0NoYXJbXCJQcml2YXRlIFVzZSBBcmVhXCJdKGEpfHwoISFpc0NoYXJbXCJDSksgQ29tcGF0aWJpbGl0eSBGb3Jtc1wiXShhKXx8KCEhaXNDaGFyW1wiU21hbGwgRm9ybSBWYXJpYW50c1wiXShhKXx8KCEhaXNDaGFyW1wiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXNcIl0oYSl8fCg4NzM0PT09YXx8ODc1Nj09PWF8fDg3NTc9PT1hfHxhPj05OTg0JiZhPD0xMDA4N3x8YT49MTAxMDImJmE8PTEwMTMxfHw2NTUzMj09PWF8fDY1NTMzPT09YSkpKSkpKSkpKSkpKSkpKSkpfSxleHBvcnRzLmNoYXJIYXNSb3RhdGVkVmVydGljYWxPcmllbnRhdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4hKGV4cG9ydHMuY2hhckhhc1VwcmlnaHRWZXJ0aWNhbE9yaWVudGF0aW9uKGEpfHxleHBvcnRzLmNoYXJIYXNOZXV0cmFsVmVydGljYWxPcmllbnRhdGlvbihhKSl9O1xufSx7XCIuL2lzX2NoYXJfaW5fdW5pY29kZV9ibG9ja1wiOjIxNX1dLDIxOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgTG5nTGF0PV9kZXJlcV8oXCIuLi9nZW8vbG5nX2xhdFwiKTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihuLHQsbCl7aWYobj1uZXcgTG5nTGF0KG4ubG5nLG4ubGF0KSx0KXt2YXIgYT1uZXcgTG5nTGF0KG4ubG5nLTM2MCxuLmxhdCksaT1uZXcgTG5nTGF0KG4ubG5nKzM2MCxuLmxhdCksbz1sLmxvY2F0aW9uUG9pbnQobikuZGlzdFNxcih0KTtsLmxvY2F0aW9uUG9pbnQoYSkuZGlzdFNxcih0KTxvP249YTpsLmxvY2F0aW9uUG9pbnQoaSkuZGlzdFNxcih0KTxvJiYobj1pKX1mb3IoO01hdGguYWJzKG4ubG5nLWwuY2VudGVyLmxuZyk+MTgwOyl7dmFyIGU9bC5sb2NhdGlvblBvaW50KG4pO2lmKGUueD49MCYmZS55Pj0wJiZlLng8PWwud2lkdGgmJmUueTw9bC5oZWlnaHQpYnJlYWs7bi5sbmc+bC5jZW50ZXIubG5nP24ubG5nLT0zNjA6bi5sbmcrPTM2MH1yZXR1cm4gbn07XG59LHtcIi4uL2dlby9sbmdfbGF0XCI6NTh9XSwyMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gY3JlYXRlU3RydWN0QXJyYXlUeXBlKHQpe3ZhciByPUpTT04uc3RyaW5naWZ5KHQpO2lmKHN0cnVjdEFycmF5VHlwZUNhY2hlW3JdKXJldHVybiBzdHJ1Y3RBcnJheVR5cGVDYWNoZVtyXTt2YXIgZT12b2lkIDA9PT10LmFsaWdubWVudD8xOnQuYWxpZ25tZW50LGk9MCxuPTAsYT1bXCJVaW50OFwiXSxzPXQubWVtYmVycy5tYXAoZnVuY3Rpb24odCl7YS5pbmRleE9mKHQudHlwZSk8MCYmYS5wdXNoKHQudHlwZSk7dmFyIHI9c2l6ZU9mKHQudHlwZSkscz1pPWFsaWduKGksTWF0aC5tYXgoZSxyKSksbz10LmNvbXBvbmVudHN8fDE7cmV0dXJuIG49TWF0aC5tYXgobixyKSxpKz1yKm8se25hbWU6dC5uYW1lLHR5cGU6dC50eXBlLGNvbXBvbmVudHM6byxvZmZzZXQ6c319KSxvPWFsaWduKGksTWF0aC5tYXgobixlKSkscD1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihyLl9fcHJvdG9fXz10KSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHJ9KFN0cnVjdCk7cC5wcm90b3R5cGUuYWxpZ25tZW50PWUscC5wcm90b3R5cGUuc2l6ZT1vO2Zvcih2YXIgeT0wLGM9czt5PGMubGVuZ3RoO3krPTEpZm9yKHZhciBoPWNbeV0sdT0wO3U8aC5jb21wb25lbnRzO3UrKyl7dmFyIGY9aC5uYW1lO2lmKGguY29tcG9uZW50cz4xJiYoZis9dSksZiBpbiBwLnByb3RvdHlwZSl0aHJvdyBuZXcgRXJyb3IoZitcIiBpcyBhIHJlc2VydmVkIG5hbWUgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGEgbWVtYmVyIG5hbWUuXCIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShwLnByb3RvdHlwZSxmLGNyZWF0ZUFjY2Vzc29ycyhoLHUpKX12YXIgbT1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihyLl9fcHJvdG9fXz10KSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHJ9KFN0cnVjdEFycmF5KTtyZXR1cm4gbS5wcm90b3R5cGUubWVtYmVycz1zLG0ucHJvdG90eXBlLlN0cnVjdFR5cGU9cCxtLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9byxtLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1jcmVhdGVFbXBsYWNlQmFjayhzLG8pLG0ucHJvdG90eXBlLl91c2VkVHlwZXM9YSxzdHJ1Y3RBcnJheVR5cGVDYWNoZVtyXT1tLG19ZnVuY3Rpb24gYWxpZ24odCxyKXtyZXR1cm4gTWF0aC5jZWlsKHQvcikqcn1mdW5jdGlvbiBzaXplT2YodCl7cmV0dXJuIHZpZXdUeXBlc1t0XS5CWVRFU19QRVJfRUxFTUVOVH1mdW5jdGlvbiBnZXRBcnJheVZpZXdOYW1lKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gY3JlYXRlRW1wbGFjZUJhY2sodCxyKXtmb3IodmFyIGU9W10saT1bXSxuPVwidmFyIGkgPSB0aGlzLmxlbmd0aDtcXG50aGlzLnJlc2l6ZSh0aGlzLmxlbmd0aCArIDEpO1xcblwiLGE9MCxzPXQ7YTxzLmxlbmd0aDthKz0xKXt2YXIgbz1zW2FdLHA9c2l6ZU9mKG8udHlwZSk7ZS5pbmRleE9mKHApPDAmJihlLnB1c2gocCksbis9XCJ2YXIgb1wiK3AudG9GaXhlZCgwKStcIiA9IGkgKiBcIisoci9wKS50b0ZpeGVkKDApK1wiO1xcblwiKTtmb3IodmFyIHk9MDt5PG8uY29tcG9uZW50czt5Kyspe3ZhciBjPVwidlwiK2kubGVuZ3RoLGg9XCJvXCIrcC50b0ZpeGVkKDApK1wiICsgXCIrKG8ub2Zmc2V0L3AreSkudG9GaXhlZCgwKTtuKz1cInRoaXMuXCIrZ2V0QXJyYXlWaWV3TmFtZShvLnR5cGUpK1wiW1wiK2grXCJdID0gXCIrYytcIjtcXG5cIixpLnB1c2goYyl9fXJldHVybiBuKz1cInJldHVybiBpO1wiLG5ldyBGdW5jdGlvbihpLnRvU3RyaW5nKCksbil9ZnVuY3Rpb24gY3JlYXRlTWVtYmVyQ29tcG9uZW50U3RyaW5nKHQscil7dmFyIGU9XCJ0aGlzLl9wb3NcIitzaXplT2YodC50eXBlKS50b0ZpeGVkKDApLGk9KHQub2Zmc2V0L3NpemVPZih0LnR5cGUpK3IpLnRvRml4ZWQoMCksbj1lK1wiICsgXCIraTtyZXR1cm5cInRoaXMuX3N0cnVjdEFycmF5LlwiK2dldEFycmF5Vmlld05hbWUodC50eXBlKStcIltcIituK1wiXVwifWZ1bmN0aW9uIGNyZWF0ZUFjY2Vzc29ycyh0LHIpe3ZhciBlPWNyZWF0ZU1lbWJlckNvbXBvbmVudFN0cmluZyh0LHIpO3JldHVybntnZXQ6bmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiK2UrXCI7XCIpLHNldDpuZXcgRnVuY3Rpb24oXCJ4XCIsZStcIiA9IHg7XCIpfX1tb2R1bGUuZXhwb3J0cz1jcmVhdGVTdHJ1Y3RBcnJheVR5cGU7dmFyIHZpZXdUeXBlcz17SW50ODpJbnQ4QXJyYXksVWludDg6VWludDhBcnJheSxJbnQxNjpJbnQxNkFycmF5LFVpbnQxNjpVaW50MTZBcnJheSxJbnQzMjpJbnQzMkFycmF5LFVpbnQzMjpVaW50MzJBcnJheSxGbG9hdDMyOkZsb2F0MzJBcnJheX0sU3RydWN0PWZ1bmN0aW9uKHQscil7dGhpcy5fc3RydWN0QXJyYXk9dCx0aGlzLl9wb3MxPXIqdGhpcy5zaXplLHRoaXMuX3BvczI9dGhpcy5fcG9zMS8yLHRoaXMuX3BvczQ9dGhpcy5fcG9zMS80LHRoaXMuX3Bvczg9dGhpcy5fcG9zMS84fSxERUZBVUxUX0NBUEFDSVRZPTEyOCxSRVNJWkVfTVVMVElQTElFUj01LFN0cnVjdEFycmF5PWZ1bmN0aW9uKHQpe3RoaXMuaXNUcmFuc2ZlcnJlZD0hMSx2b2lkIDAhPT10Pyh0aGlzLmFycmF5QnVmZmVyPXQuYXJyYXlCdWZmZXIsdGhpcy5sZW5ndGg9dC5sZW5ndGgsdGhpcy5jYXBhY2l0eT10aGlzLmFycmF5QnVmZmVyLmJ5dGVMZW5ndGgvdGhpcy5ieXRlc1BlckVsZW1lbnQsdGhpcy5fcmVmcmVzaFZpZXdzKCkpOih0aGlzLmNhcGFjaXR5PS0xLHRoaXMucmVzaXplKDApKX07U3RydWN0QXJyYXkuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue21lbWJlcnM6dGhpcy5wcm90b3R5cGUubWVtYmVycyxhbGlnbm1lbnQ6dGhpcy5wcm90b3R5cGUuU3RydWN0VHlwZS5wcm90b3R5cGUuYWxpZ25tZW50fX0sU3RydWN0QXJyYXkucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdHJpbSgpLHQmJih0aGlzLmlzVHJhbnNmZXJyZWQ9ITAsdC5wdXNoKHRoaXMuYXJyYXlCdWZmZXIpKSx7bGVuZ3RoOnRoaXMubGVuZ3RoLGFycmF5QnVmZmVyOnRoaXMuYXJyYXlCdWZmZXJ9fSxTdHJ1Y3RBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdGhpcy5TdHJ1Y3RUeXBlKHRoaXMsdCl9LFN0cnVjdEFycmF5LnByb3RvdHlwZS5fdHJpbT1mdW5jdGlvbigpe3RoaXMubGVuZ3RoIT09dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9dGhpcy5sZW5ndGgsdGhpcy5hcnJheUJ1ZmZlcj10aGlzLmFycmF5QnVmZmVyLnNsaWNlKDAsdGhpcy5sZW5ndGgqdGhpcy5ieXRlc1BlckVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWaWV3cygpKX0sU3RydWN0QXJyYXkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5sZW5ndGg9MH0sU3RydWN0QXJyYXkucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtpZih0aGlzLmxlbmd0aD10LHQ+dGhpcy5jYXBhY2l0eSl7dGhpcy5jYXBhY2l0eT1NYXRoLm1heCh0LE1hdGguZmxvb3IodGhpcy5jYXBhY2l0eSpSRVNJWkVfTVVMVElQTElFUiksREVGQVVMVF9DQVBBQ0lUWSksdGhpcy5hcnJheUJ1ZmZlcj1uZXcgQXJyYXlCdWZmZXIodGhpcy5jYXBhY2l0eSp0aGlzLmJ5dGVzUGVyRWxlbWVudCk7dmFyIHI9dGhpcy51aW50ODt0aGlzLl9yZWZyZXNoVmlld3MoKSxyJiZ0aGlzLnVpbnQ4LnNldChyKX19LFN0cnVjdEFycmF5LnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMscj0wLGU9dC5fdXNlZFR5cGVzO3I8ZS5sZW5ndGg7cis9MSl7dmFyIGk9ZVtyXTt0W2dldEFycmF5Vmlld05hbWUoaSldPW5ldyB2aWV3VHlwZXNbaV0odC5hcnJheUJ1ZmZlcil9fSxTdHJ1Y3RBcnJheS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLGk9W10sbj10O248cjtuKyspe3ZhciBhPWUuZ2V0KG4pO2kucHVzaChhKX1yZXR1cm4gaX07dmFyIHN0cnVjdEFycmF5VHlwZUNhY2hlPXt9O1xufSx7fV0sMjIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBicm93c2VyPV9kZXJlcV8oXCIuL2Jyb3dzZXJcIiksVGhyb3R0bGVyPWZ1bmN0aW9uKHQsbyl7dGhpcy5mcmVxdWVuY3k9dCx0aGlzLnRocm90dGxlZEZ1bmN0aW9uPW8sdGhpcy5sYXN0SW52b2NhdGlvbj0wfTtUaHJvdHRsZXIucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoIXRoaXMucGVuZGluZ0ludm9jYXRpb24pe3ZhciBvPTA9PT10aGlzLmxhc3RJbnZvY2F0aW9uPzA6dGhpcy5sYXN0SW52b2NhdGlvbit0aGlzLmZyZXF1ZW5jeS1icm93c2VyLm5vdygpO288PTA/KHRoaXMubGFzdEludm9jYXRpb249YnJvd3Nlci5ub3coKSx0aGlzLnRocm90dGxlZEZ1bmN0aW9uKCkpOnRoaXMucGVuZGluZ0ludm9jYXRpb249c2V0VGltZW91dChmdW5jdGlvbigpe3QucGVuZGluZ0ludm9jYXRpb249dm9pZCAwLHQubGFzdEludm9jYXRpb249YnJvd3Nlci5ub3coKSx0LnRocm90dGxlZEZ1bmN0aW9uKCl9LG8pfX0sVGhyb3R0bGVyLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5wZW5kaW5nSW52b2NhdGlvbiYmKGNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmdJbnZvY2F0aW9uKSx0aGlzLnBlbmRpbmdJbnZvY2F0aW9uPXZvaWQgMCl9LG1vZHVsZS5leHBvcnRzPVRocm90dGxlcjtcbn0se1wiLi9icm93c2VyXCI6MjAyfV0sMjIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHJlc29sdmVUb2tlbnMoZSxuKXtyZXR1cm4gbi5yZXBsYWNlKC97KFtee31dKyl9L2csZnVuY3Rpb24obixyKXtyZXR1cm4gciBpbiBlP1N0cmluZyhlW3JdKTpcIlwifSl9bW9kdWxlLmV4cG9ydHM9cmVzb2x2ZVRva2Vucztcbn0se31dLDIyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgVW5pdEJlemllcj1fZGVyZXFfKFwiQG1hcGJveC91bml0YmV6aWVyXCIpLENvb3JkaW5hdGU9X2RlcmVxXyhcIi4uL2dlby9jb29yZGluYXRlXCIpLFBvaW50PV9kZXJlcV8oXCJAbWFwYm94L3BvaW50LWdlb21ldHJ5XCIpO2V4cG9ydHMuZWFzZUN1YmljSW5PdXQ9ZnVuY3Rpb24ocil7aWYocjw9MClyZXR1cm4gMDtpZihyPj0xKXJldHVybiAxO3ZhciBlPXIqcix0PWUqcjtyZXR1cm4gNCoocjwuNT90OjMqKHItZSkrdC0uNzUpfSxleHBvcnRzLmJlemllcj1mdW5jdGlvbihyLGUsdCxuKXt2YXIgbz1uZXcgVW5pdEJlemllcihyLGUsdCxuKTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG8uc29sdmUocil9fSxleHBvcnRzLmVhc2U9ZXhwb3J0cy5iZXppZXIoLjI1LC4xLC4yNSwxKSxleHBvcnRzLmNsYW1wPWZ1bmN0aW9uKHIsZSx0KXtyZXR1cm4gTWF0aC5taW4odCxNYXRoLm1heChlLHIpKX0sZXhwb3J0cy53cmFwPWZ1bmN0aW9uKHIsZSx0KXt2YXIgbj10LWUsbz0oKHItZSklbituKSVuK2U7cmV0dXJuIG89PT1lP3Q6b30sZXhwb3J0cy5hc3luY0FsbD1mdW5jdGlvbihyLGUsdCl7aWYoIXIubGVuZ3RoKXJldHVybiB0KG51bGwsW10pO3ZhciBuPXIubGVuZ3RoLG89bmV3IEFycmF5KHIubGVuZ3RoKSxhPW51bGw7ci5mb3JFYWNoKGZ1bmN0aW9uKHIsaSl7ZShyLGZ1bmN0aW9uKHIsZSl7ciYmKGE9ciksb1tpXT1lLDA9PS0tbiYmdChhLG8pfSl9KX0sZXhwb3J0cy52YWx1ZXM9ZnVuY3Rpb24ocil7dmFyIGU9W107Zm9yKHZhciB0IGluIHIpZS5wdXNoKHJbdF0pO3JldHVybiBlfSxleHBvcnRzLmtleXNEaWZmZXJlbmNlPWZ1bmN0aW9uKHIsZSl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHIpbiBpbiBlfHx0LnB1c2gobik7cmV0dXJuIHR9LGV4cG9ydHMuZXh0ZW5kPWZ1bmN0aW9uKHIpe2Zvcih2YXIgZT1bXSx0PWFyZ3VtZW50cy5sZW5ndGgtMTt0LS0gPjA7KWVbdF09YXJndW1lbnRzW3QrMV07Zm9yKHZhciBuPTAsbz1lO248by5sZW5ndGg7bis9MSl7dmFyIGE9b1tuXTtmb3IodmFyIGkgaW4gYSlyW2ldPWFbaV19cmV0dXJuIHJ9LGV4cG9ydHMucGljaz1mdW5jdGlvbihyLGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPWVbbl07byBpbiByJiYodFtvXT1yW29dKX1yZXR1cm4gdH07dmFyIGlkPTE7ZXhwb3J0cy51bmlxdWVJZD1mdW5jdGlvbigpe3JldHVybiBpZCsrfSxleHBvcnRzLmJpbmRBbGw9ZnVuY3Rpb24ocixlKXtyLmZvckVhY2goZnVuY3Rpb24ocil7ZVtyXSYmKGVbcl09ZVtyXS5iaW5kKGUpKX0pfSxleHBvcnRzLmdldENvb3JkaW5hdGVzQ2VudGVyPWZ1bmN0aW9uKHIpe2Zvcih2YXIgZT0xLzAsdD0xLzAsbj0tMS8wLG89LTEvMCxhPTA7YTxyLmxlbmd0aDthKyspZT1NYXRoLm1pbihlLHJbYV0uY29sdW1uKSx0PU1hdGgubWluKHQsclthXS5yb3cpLG49TWF0aC5tYXgobixyW2FdLmNvbHVtbiksbz1NYXRoLm1heChvLHJbYV0ucm93KTt2YXIgaT1uLWUsdT1vLXQscz1NYXRoLm1heChpLHUpLGM9TWF0aC5tYXgoMCxNYXRoLmZsb29yKC1NYXRoLmxvZyhzKS9NYXRoLkxOMikpO3JldHVybiBuZXcgQ29vcmRpbmF0ZSgoZStuKS8yLCh0K28pLzIsMCkuem9vbVRvKGMpfSxleHBvcnRzLmVuZHNXaXRoPWZ1bmN0aW9uKHIsZSl7cmV0dXJuLTEhPT1yLmluZGV4T2YoZSxyLmxlbmd0aC1lLmxlbmd0aCl9LGV4cG9ydHMubWFwT2JqZWN0PWZ1bmN0aW9uKHIsZSx0KXt2YXIgbj10aGlzLG89e307Zm9yKHZhciBhIGluIHIpb1thXT1lLmNhbGwodHx8bixyW2FdLGEscik7cmV0dXJuIG99LGV4cG9ydHMuZmlsdGVyT2JqZWN0PWZ1bmN0aW9uKHIsZSx0KXt2YXIgbj10aGlzLG89e307Zm9yKHZhciBhIGluIHIpZS5jYWxsKHR8fG4sclthXSxhLHIpJiYob1thXT1yW2FdKTtyZXR1cm4gb30sZXhwb3J0cy5kZWVwRXF1YWw9ZnVuY3Rpb24ocixlKXtpZihBcnJheS5pc0FycmF5KHIpKXtpZighQXJyYXkuaXNBcnJheShlKXx8ci5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKylpZighZXhwb3J0cy5kZWVwRXF1YWwoclt0XSxlW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1pZihcIm9iamVjdFwiPT10eXBlb2YgciYmbnVsbCE9PXImJm51bGwhPT1lKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSlyZXR1cm4hMTtpZihPYmplY3Qua2V5cyhyKS5sZW5ndGghPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuIGluIHIpaWYoIWV4cG9ydHMuZGVlcEVxdWFsKHJbbl0sZVtuXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHI9PT1lfSxleHBvcnRzLmNsb25lPWZ1bmN0aW9uKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpP3IubWFwKGV4cG9ydHMuY2xvbmUpOlwib2JqZWN0XCI9PXR5cGVvZiByJiZyP2V4cG9ydHMubWFwT2JqZWN0KHIsZXhwb3J0cy5jbG9uZSk6cn0sZXhwb3J0cy5hcnJheXNJbnRlcnNlY3Q9ZnVuY3Rpb24ocixlKXtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKylpZihlLmluZGV4T2Yoclt0XSk+PTApcmV0dXJuITA7cmV0dXJuITF9O3ZhciB3YXJuT25jZUhpc3Rvcnk9e307ZXhwb3J0cy53YXJuT25jZT1mdW5jdGlvbihyKXt3YXJuT25jZUhpc3Rvcnlbcl18fChcInVuZGVmaW5lZFwiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKHIpLHdhcm5PbmNlSGlzdG9yeVtyXT0hMCl9LGV4cG9ydHMuaXNDb3VudGVyQ2xvY2t3aXNlPWZ1bmN0aW9uKHIsZSx0KXtyZXR1cm4odC55LXIueSkqKGUueC1yLngpPihlLnktci55KSoodC54LXIueCl9LGV4cG9ydHMuY2FsY3VsYXRlU2lnbmVkQXJlYT1mdW5jdGlvbihyKXtmb3IodmFyIGU9MCx0PTAsbj1yLmxlbmd0aCxvPW4tMSxhPXZvaWQgMCxpPXZvaWQgMDt0PG47bz10KyspYT1yW3RdLGk9cltvXSxlKz0oaS54LWEueCkqKGEueStpLnkpO3JldHVybiBlfSxleHBvcnRzLmlzQ2xvc2VkUG9seWdvbj1mdW5jdGlvbihyKXtpZihyLmxlbmd0aDw0KXJldHVybiExO3ZhciBlPXJbMF0sdD1yW3IubGVuZ3RoLTFdO3JldHVybiEoTWF0aC5hYnMoZS54LXQueCk+MHx8TWF0aC5hYnMoZS55LXQueSk+MCkmJk1hdGguYWJzKGV4cG9ydHMuY2FsY3VsYXRlU2lnbmVkQXJlYShyKSk+LjAxfSxleHBvcnRzLnNwaGVyaWNhbFRvQ2FydGVzaWFuPWZ1bmN0aW9uKHIpe3ZhciBlPXJbMF0sdD1yWzFdLG49clsyXTtyZXR1cm4gdCs9OTAsdCo9TWF0aC5QSS8xODAsbio9TWF0aC5QSS8xODAsW2UqTWF0aC5jb3ModCkqTWF0aC5zaW4obiksZSpNYXRoLnNpbih0KSpNYXRoLnNpbihuKSxlKk1hdGguY29zKG4pXX0sZXhwb3J0cy5wYXJzZUNhY2hlQ29udHJvbD1mdW5jdGlvbihyKXt2YXIgZT0vKD86XnwoPzpcXHMqXFwsXFxzKikpKFteXFx4MDAtXFx4MjBcXChcXCk8PkBcXCw7XFw6XFxcXFwiXFwvXFxbXFxdXFw/XFw9XFx7XFx9XFx4N0ZdKykoPzpcXD0oPzooW15cXHgwMC1cXHgyMFxcKFxcKTw+QFxcLDtcXDpcXFxcXCJcXC9cXFtcXF1cXD9cXD1cXHtcXH1cXHg3Rl0rKXwoPzpcXFwiKCg/OlteXCJcXFxcXXxcXFxcLikqKVxcXCIpKSk/L2csdD17fTtpZihyLnJlcGxhY2UoZSxmdW5jdGlvbihyLGUsbixvKXt2YXIgYT1ufHxvO3JldHVybiB0W2VdPSFhfHxhLnRvTG93ZXJDYXNlKCksXCJcIn0pLHRbXCJtYXgtYWdlXCJdKXt2YXIgbj1wYXJzZUludCh0W1wibWF4LWFnZVwiXSwxMCk7aXNOYU4obik/ZGVsZXRlIHRbXCJtYXgtYWdlXCJdOnRbXCJtYXgtYWdlXCJdPW59cmV0dXJuIHR9O1xufSx7XCIuLi9nZW8vY29vcmRpbmF0ZVwiOjU3LFwiQG1hcGJveC9wb2ludC1nZW9tZXRyeVwiOjIsXCJAbWFwYm94L3VuaXRiZXppZXJcIjo1fV0sMjI0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO3ZhciBGZWF0dXJlPWZ1bmN0aW9uKGUsdCxyLG8pe3RoaXMudHlwZT1cIkZlYXR1cmVcIix0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZT1lLGUuX3o9dCxlLl94PXIsZS5feT1vLHRoaXMucHJvcGVydGllcz1lLnByb3BlcnRpZXMsbnVsbCE9ZS5pZCYmKHRoaXMuaWQ9ZS5pZCl9LHByb3RvdHlwZUFjY2Vzc29ycz17Z2VvbWV0cnk6e319O3Byb3RvdHlwZUFjY2Vzc29ycy5nZW9tZXRyeS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fZ2VvbWV0cnkmJih0aGlzLl9nZW9tZXRyeT10aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS50b0dlb0pTT04odGhpcy5fdmVjdG9yVGlsZUZlYXR1cmUuX3gsdGhpcy5fdmVjdG9yVGlsZUZlYXR1cmUuX3ksdGhpcy5fdmVjdG9yVGlsZUZlYXR1cmUuX3opLmdlb21ldHJ5KSx0aGlzLl9nZW9tZXRyeX0scHJvdG90eXBlQWNjZXNzb3JzLmdlb21ldHJ5LnNldD1mdW5jdGlvbihlKXt0aGlzLl9nZW9tZXRyeT1lfSxGZWF0dXJlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9e2dlb21ldHJ5OnRoaXMuZ2VvbWV0cnl9O2Zvcih2YXIgciBpbiBlKVwiX2dlb21ldHJ5XCIhPT1yJiZcIl92ZWN0b3JUaWxlRmVhdHVyZVwiIT09ciYmKHRbcl09ZVtyXSk7cmV0dXJuIHR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZlYXR1cmUucHJvdG90eXBlLHByb3RvdHlwZUFjY2Vzc29ycyksbW9kdWxlLmV4cG9ydHM9RmVhdHVyZTtcbn0se31dLDIyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjt2YXIgc2NyaXB0RGV0ZWN0aW9uPV9kZXJlcV8oXCIuL3NjcmlwdF9kZXRlY3Rpb25cIik7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBvPVwiXCIsZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgcj10LmNoYXJDb2RlQXQoZSsxKXx8bnVsbCxsPXQuY2hhckNvZGVBdChlLTEpfHxudWxsOyghcnx8IXNjcmlwdERldGVjdGlvbi5jaGFySGFzUm90YXRlZFZlcnRpY2FsT3JpZW50YXRpb24ocil8fG1vZHVsZS5leHBvcnRzLmxvb2t1cFt0W2UrMV1dKSYmKCFsfHwhc2NyaXB0RGV0ZWN0aW9uLmNoYXJIYXNSb3RhdGVkVmVydGljYWxPcmllbnRhdGlvbihsKXx8bW9kdWxlLmV4cG9ydHMubG9va3VwW3RbZS0xXV0pJiZtb2R1bGUuZXhwb3J0cy5sb29rdXBbdFtlXV0/bys9bW9kdWxlLmV4cG9ydHMubG9va3VwW3RbZV1dOm8rPXRbZV19cmV0dXJuIG99LG1vZHVsZS5leHBvcnRzLmxvb2t1cD17XCIhXCI6XCLvuJVcIixcIiNcIjpcIu+8g1wiLCQ6XCLvvIRcIixcIiVcIjpcIu+8hVwiLFwiJlwiOlwi77yGXCIsXCIoXCI6XCLvuLVcIixcIilcIjpcIu+4tlwiLFwiKlwiOlwi77yKXCIsXCIrXCI6XCLvvItcIixcIixcIjpcIu+4kFwiLFwiLVwiOlwi77iyXCIsXCIuXCI6XCLjg7tcIixcIi9cIjpcIu+8j1wiLFwiOlwiOlwi77iTXCIsXCI7XCI6XCLvuJRcIixcIjxcIjpcIu+4v1wiLFwiPVwiOlwi77ydXCIsXCI+XCI6XCLvuYBcIixcIj9cIjpcIu+4llwiLFwiQFwiOlwi77ygXCIsXCJbXCI6XCLvuYdcIixcIlxcXFxcIjpcIu+8vFwiLFwiXVwiOlwi77mIXCIsXCJeXCI6XCLvvL5cIixfOlwi77izXCIsXCJgXCI6XCLvvYBcIixcIntcIjpcIu+4t1wiLFwifFwiOlwi4oCVXCIsXCJ9XCI6XCLvuLhcIixcIn5cIjpcIu+9nlwiLFwiwqJcIjpcIu+/oFwiLFwiwqNcIjpcIu+/oVwiLFwiwqVcIjpcIu+/pVwiLFwiwqZcIjpcIu+/pFwiLFwiwqxcIjpcIu+/olwiLFwiwq9cIjpcIu+/o1wiLFwi4oCTXCI6XCLvuLJcIixcIuKAlFwiOlwi77ixXCIsXCLigJhcIjpcIu+5g1wiLFwi4oCZXCI6XCLvuYRcIixcIuKAnFwiOlwi77mBXCIsXCLigJ1cIjpcIu+5glwiLFwi4oCmXCI6XCLvuJlcIixcIuKAp1wiOlwi44O7XCIsXCLigqlcIjpcIu+/plwiLFwi44CBXCI6XCLvuJFcIixcIuOAglwiOlwi77iSXCIsXCLjgIhcIjpcIu+4v1wiLFwi44CJXCI6XCLvuYBcIixcIuOAilwiOlwi77i9XCIsXCLjgItcIjpcIu+4vlwiLFwi44CMXCI6XCLvuYFcIixcIuOAjVwiOlwi77mCXCIsXCLjgI5cIjpcIu+5g1wiLFwi44CPXCI6XCLvuYRcIixcIuOAkFwiOlwi77i7XCIsXCLjgJFcIjpcIu+4vFwiLFwi44CUXCI6XCLvuLlcIixcIuOAlVwiOlwi77i6XCIsXCLjgJZcIjpcIu+4l1wiLFwi44CXXCI6XCLvuJhcIixcIu+8gVwiOlwi77iVXCIsXCLvvIhcIjpcIu+4tVwiLFwi77yJXCI6XCLvuLZcIixcIu+8jFwiOlwi77iQXCIsXCLvvI1cIjpcIu+4slwiLFwi77yOXCI6XCLjg7tcIixcIu+8mlwiOlwi77iTXCIsXCLvvJtcIjpcIu+4lFwiLFwi77ycXCI6XCLvuL9cIixcIu+8nlwiOlwi77mAXCIsXCLvvJ9cIjpcIu+4llwiLFwi77y7XCI6XCLvuYdcIixcIu+8vVwiOlwi77mIXCIsXCLvvL9cIjpcIu+4s1wiLFwi772bXCI6XCLvuLdcIixcIu+9nFwiOlwi4oCVXCIsXCLvvZ1cIjpcIu+4uFwiLFwi772fXCI6XCLvuLVcIixcIu+9oFwiOlwi77i2XCIsXCLvvaFcIjpcIu+4klwiLFwi772iXCI6XCLvuYFcIixcIu+9o1wiOlwi77mCXCJ9O1xufSx7XCIuL3NjcmlwdF9kZXRlY3Rpb25cIjoyMTh9XSwyMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIFdlYldvcmtlcj1fZGVyZXFfKFwiLi93ZWJfd29ya2VyXCIpLFdvcmtlclBvb2w9ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT17fX07V29ya2VyUG9vbC5wcm90b3R5cGUuYWNxdWlyZT1mdW5jdGlvbihyKXt2YXIgZT10aGlzO2lmKCF0aGlzLndvcmtlcnMpe3ZhciBvPV9kZXJlcV8oXCIuLi9cIikud29ya2VyQ291bnQ7Zm9yKHRoaXMud29ya2Vycz1bXTt0aGlzLndvcmtlcnMubGVuZ3RoPG87KWUud29ya2Vycy5wdXNoKG5ldyBXZWJXb3JrZXIpfXJldHVybiB0aGlzLmFjdGl2ZVtyXT0hMCx0aGlzLndvcmtlcnMuc2xpY2UoKX0sV29ya2VyUG9vbC5wcm90b3R5cGUucmVsZWFzZT1mdW5jdGlvbihyKXtkZWxldGUgdGhpcy5hY3RpdmVbcl0sMD09PU9iamVjdC5rZXlzKHRoaXMuYWN0aXZlKS5sZW5ndGgmJih0aGlzLndvcmtlcnMuZm9yRWFjaChmdW5jdGlvbihyKXtyLnRlcm1pbmF0ZSgpfSksdGhpcy53b3JrZXJzPW51bGwpfSxtb2R1bGUuZXhwb3J0cz1Xb3JrZXJQb29sO1xufSx7XCIuLi9cIjo2MyxcIi4vd2ViX3dvcmtlclwiOjIwM31dfSx7fSxbNjNdKSg2Mylcbn0pO1xuXG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hcGJveC1nbC5qcy5tYXBcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9tYXBib3gtZ2wvZGlzdC9tYXBib3gtZ2wuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3\n");
-
-/***/ }),
-/* 4 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("/* WEBPACK VAR INJECTION */(function(process, global, setImmediate) {/*!\n * Vue.js v2.5.2\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n/* */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind, faster than native\n */\nfunction bind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n // record original fn length\n boundFn._length = fn.length;\n return boundFn\n}\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\nvar emptyObject = Object.freeze({});\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.functionalContext = undefined;\n this.functionalOptions = undefined;\n this.functionalScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode, deep) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.isCloned = true;\n if (deep && vnode.children) {\n cloned.children = cloneVNodes(vnode.children);\n }\n return cloned\n}\n\nfunction cloneVNodes (vnodes, deep) {\n var len = vnodes.length;\n var res = new Array(len);\n for (var i = 0; i < len; i++) {\n res[i] = cloneVNode(vnodes[i], deep);\n }\n return res\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);[\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n]\n.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\nvar observerState = {\n shouldConvert: true\n};\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n observerState.shouldConvert &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (hasOwn(target, key)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this) : parentVal\n )\n }\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn.call(this, parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n var lower = key.toLowerCase();\n if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + key\n );\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production' && inject) {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // handle boolean props\n if (isType(Boolean, prop.type)) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldConvert = observerState.shouldConvert;\n observerState.shouldConvert = true;\n observe(value);\n observerState.shouldConvert = prevShouldConvert;\n }\n if (process.env.NODE_ENV !== 'production') {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isType (type, fn) {\n if (!Array.isArray(fn)) {\n return getType(fn) === getType(type)\n }\n for (var i = 0, len = fn.length; i < len; i++) {\n if (getType(fn[i]) === getType(type)) {\n return true\n }\n }\n /* istanbul ignore next */\n return false\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if (inBrowser && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both micro and macro tasks.\n// In < 2.4 we used micro tasks everywhere, but there are some scenarios where\n// micro tasks have too high a priority and fires in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using macro tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use micro task by default, but expose a way to force macro task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) Task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine MicroTask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a Task instead of a MicroTask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' &&\n Proxy.toString().match(/native code/);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (arguments.length === 1) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n var defaultSlot = [];\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.functionalContext === context) &&\n data && data.slot != null\n ) {\n var name = child.data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children);\n } else {\n slot.push(child);\n }\n } else {\n defaultSlot.push(child);\n }\n }\n // ignore whitespace\n if (!defaultSlot.every(isWhitespace)) {\n slots.default = defaultSlot;\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return node.isComment || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n vm._watcher = new Watcher(vm, updateComponent, noop);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = (parentVnode.data && parentVnode.data.attrs) || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n observerState.shouldConvert = false;\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n props[key] = validateProp(key, vm.$options.props, propsData, vm);\n }\n observerState.shouldConvert = true;\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n if (listeners) {\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n }\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options\n) {\n this.vm = vm;\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nvar seenObjects = new _Set();\nfunction traverse (val) {\n seenObjects.clear();\n _traverse(val, seenObjects);\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n observerState.shouldConvert = isRoot;\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n observerState.shouldConvert = true;\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n keyOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(keyOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n observerState.shouldConvert = false;\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n observerState.shouldConvert = true;\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && provideKey in source._provided) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n return scopedSlotFn(props) || fallback\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes && process.env.NODE_ENV !== 'production') {\n slotNodes._rendered && warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n slotNodes._rendered = true;\n }\n return slotNodes || fallback\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInAlias,\n eventKeyName\n) {\n var keyCodes = config.keyCodes[key] || builtInAlias;\n if (keyCodes) {\n if (Array.isArray(keyCodes)) {\n return keyCodes.indexOf(eventKeyCode) === -1\n } else {\n return keyCodes !== eventKeyCode\n }\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n // static trees can be rendered once and cached on the contructor options\n // so every instance shares the same cached trees\n var renderFns = this.$options.staticRenderFns;\n var cached = renderFns.cached || (renderFns.cached = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree by doing a shallow clone.\n if (tree && !isInFor) {\n return Array.isArray(tree)\n ? cloneVNodes(tree)\n : cloneVNode(tree)\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = renderFns[index].call(this._renderProxy, null, this);\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm = Object.create(parent);\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode) {\n vnode.functionalScopeId = options._scopeId;\n vnode.functionalContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n vnode.functionalContext = contextVm;\n vnode.functionalOptions = options;\n if (data.slot) {\n (vnode.data || (vnode.data = {})).slot = data.slot;\n }\n }\n\n return vnode\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n// hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n } else if (vnode.data.keepAlive) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // merge component management hooks onto the placeholder node\n mergeHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var vnodeComponentOptions = vnode.componentOptions;\n var options = {\n _isComponent: true,\n parent: parent,\n propsData: vnodeComponentOptions.propsData,\n _componentTag: vnodeComponentOptions.tag,\n _parentVnode: vnode,\n _parentListeners: vnodeComponentOptions.listeners,\n _renderChildren: vnodeComponentOptions.children,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnodeComponentOptions.Ctor(options)\n}\n\nfunction mergeHooks (data) {\n if (!data.hook) {\n data.hook = {};\n }\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var fromParent = data.hook[key];\n var ours = componentVNodeHooks[key];\n data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n }\n}\n\nfunction mergeHook$1 (one, two) {\n return function (a, b, c, d) {\n one(a, b, c, d);\n two(a, b, c, d);\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (isDef(vnode)) {\n if (ns) { applyNS(vnode, ns); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (vm._isMounted) {\n // if the parent didn't update, the slot nodes will be the ones from\n // last render. They need to be cloned to ensure \"freshness\" for this render.\n for (var key in vm.$slots) {\n var slot = vm.$slots[key];\n if (slot._rendered) {\n vm.$slots[key] = cloneVNodes(slot, true /* deep */);\n }\n }\n }\n\n vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$1 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$1++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n opts.parent = options.parent;\n opts.propsData = options.propsData;\n opts._parentVnode = options._parentVnode;\n opts._parentListeners = options._parentListeners;\n opts._renderChildren = options._renderChildren;\n opts._componentTag = options._componentTag;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue$3 (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue$3)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue$3);\nstateMixin(Vue$3);\neventsMixin(Vue$3);\nlifecycleMixin(Vue$3);\nrenderMixin(Vue$3);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production') {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if (type === 'component' && config.isReservedTag(id)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + id\n );\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && cached$$1 !== current) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n watch: {\n include: function include (val) {\n pruneCache(this, function (name) { return matches(val, name); });\n },\n exclude: function exclude (val) {\n pruneCache(this, function (name) { return !matches(val, name); });\n }\n },\n\n render: function render () {\n var vnode = getFirstComponentChild(this.$slots.default);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n if (name && (\n (this.include && !matches(this.include, name)) ||\n (this.exclude && matches(this.exclude, name))\n )) {\n return vnode\n }\n\n var ref = this;\n var cache = ref.cache;\n var keys = ref.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue$3);\n\nObject.defineProperty(Vue$3.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue$3.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\nVue$3.version = '2.5.2';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setAttribute (node, key, val) {\n node.setAttribute(key, val);\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetAttribute: setAttribute\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!key) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n var inPre = 0;\n function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n inPre++;\n }\n if (\n !inPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(tag)\n : ignore === tag\n })\n ) &&\n config.isUnknownElement(tag)\n ) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n inPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.functionalScopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.functionalContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n } else {\n vnodeToMove = oldCh[idxInOld];\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !vnodeToMove) {\n warn(\n 'It seems there are duplicate keys that is causing an update error. ' +\n 'Make sure each v-for item has a unique key.'\n );\n }\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var bailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue) {\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.elm = elm;\n vnode.isAsyncPlaceholder = true;\n return true\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode)) {\n return false\n }\n }\n vnode.elm = elm;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !bailed\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !bailed\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n for (var key in data) {\n if (!isRenderedModule(key)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode) {\n if (isDef(vnode.tag)) {\n return (\n vnode.tag.indexOf('vue-component') === 0 ||\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n if (isDef(vnode.parent)) {\n // component root element replaced.\n // update parent placeholder node element, recursively\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE9 || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers && modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n // check capture modifier\n if (modifiers && modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers && modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers && modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n var events;\n if (modifiers && modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n var newHandler = { value: value, modifiers: modifiers };\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\n\n\nfunction parseModel (val) {\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + value + \"=$$a.concat([$$v]))}\" +\n \"else{$$i>-1&&(\" + value + \"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isDirty(elm, checkVal) ||\n isInputChanged(elm, checkVal)\n ))\n}\n\nfunction isDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isInputChanged (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers) && modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (isDef(modifiers) && modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n addTransitionClass(el, toClass);\n removeTransitionClass(el, startClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n addTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar model$1 = {\n inserted: function inserted (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n if (!isAndroid) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n }\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (value === oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: model$1,\n show: show\n};\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$options._renderChildren;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue$3.config.mustUseProp = mustUseProp;\nVue$3.config.isReservedTag = isReservedTag;\nVue$3.config.isReservedAttr = isReservedAttr;\nVue$3.config.getTagNamespace = getTagNamespace;\nVue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue$3.options.directives, platformDirectives);\nextend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\nVue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nVue$3.nextTick(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue$3);\n } else if (process.env.NODE_ENV !== 'production' && isChrome) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n config.productionTip !== false &&\n inBrowser && typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n}, 0);\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nfunction shouldDecode (content, encoded) {\n var div = document.createElement('div');\n div.innerHTML = \"<div a=\\\"\" + content + \"\\\"/>\";\n return div.innerHTML.indexOf(encoded) > 0\n}\n\n// #3663\n// IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? shouldDecode('\\n', '&#10;') : false;\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push(JSON.stringify(text.slice(lastIndex)));\n }\n return tokens.join('+')\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var expression = parseText(staticClass, options.delimiters);\n if (expression) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var expression = parseText(staticStyle, options.delimiters);\n if (expression) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\nvar comment = /^<!--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd));\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(lastTag, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!--([\\s\\S]*?)-->/g, '$1')\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n attrs[i] = {\n name: args[1],\n value: decodeAttr(\n value,\n options.shouldDecodeNewlines\n )\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /(.*?)\\s+(?:in|of)\\s+(.*)/;\nvar forIteratorRE = /\\((\\{[^}]*\\}|[^,]*),([^,]*)(?:,([^,]*))?\\)/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(he.decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function endPre (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldKeepComment: options.comments,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n // element-scope stuff\n processElement(element, options);\n }\n\n function checkRootConstraints (el) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n endPre(element);\n }\n // apply post-transforms\n for (var i$1 = 0; i$1 < postTransforms.length; i$1++) {\n postTransforms[i$1](element, options);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n endPre(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var expression;\n if (!inVPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: expression,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n },\n comment: function comment (text) {\n currentParent.children.push({\n type: 3,\n text: text,\n isComment: true\n });\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (element, options) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !element.attrsList.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production' && el.tag === 'template') {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) {\n process.env.NODE_ENV !== 'production' && warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n return\n }\n el.for = inMatch[2].trim();\n var alias = inMatch[1].trim();\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n el.alias = iteratorMatch[1].trim();\n el.iterator1 = iteratorMatch[2].trim();\n if (iteratorMatch[3]) {\n el.iterator2 = iteratorMatch[3].trim();\n }\n } else {\n el.alias = alias;\n }\n }\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n el.slotScope = slotScope;\n }\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (!el.slotScope) {\n addAttr(el, 'slot', slotTarget);\n }\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var expression = parseText(value, delimiters);\n if (expression) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\n/**\n * Expand input[v-model] with dyanmic type bindings into v-if-else chains\n * Turn this:\n * <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n * <input v-else :type=\"type\" v-model=\"data[type]\">\n */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (map['v-model'] && (map['v-bind:type'] || map[':type'])) {\n var typeBinding = getBindingAttr(el, 'type');\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nfunction addRawAttr (el, name, value) {\n el.attrsMap[name] = value;\n el.attrsList.push({ name: name, value: value });\n}\n\nvar model$2 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$2\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/;\n\n// keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n var handler = events[name];\n // #5330: warn click.right, since right clicks do not actually fire click events.\n if (process.env.NODE_ENV !== 'production' &&\n name === 'click' &&\n handler && handler.modifiers && handler.modifiers.right\n ) {\n warn(\n \"Use \\\"contextmenu\\\" instead of \\\"click.right\\\" since right clicks \" +\n \"do not actually fire \\\"click\\\" events.\"\n );\n }\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, handler)) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n return isMethodPath || isFunctionExpression\n ? handler.value\n : (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? handler.value + '($event)'\n : isFunctionExpression\n ? (\"(\" + (handler.value) + \")($event)\")\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var code = keyCodes[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(code)) + \",\" +\n \"$event.key)\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data = el.plain ? undefined : genData$2(el, state);\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, state.warn)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n slots,\n state\n) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n return genScopedSlot(key, slots[key], state)\n }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (\n key,\n el,\n state\n) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el, state)\n }\n var fn = \"function(\" + (String(el.slotScope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if\n ? ((el.if) + \"?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n return (\"{key:\" + key + \",fn:\" + fn + \"}\")\n}\n\nfunction genForScopedSlot (\n key,\n el,\n state\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el, state)) +\n '})'\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return (altGenElement || genElement)(el$1, state)\n }\n var normalizationType = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// check valid identifier for v-for\nvar identRE = /[A-Za-z_$][\\w$]*/;\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (ident, type, text, errors) {\n if (typeof ident === 'string' && !identRE.test(ident)) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim())\n );\n } else {\n errors.push(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\"\n );\n }\n }\n}\n\n/* */\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n optimize(ast, options);\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue$3.prototype.$mount;\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue$3.compile = compileToFunctions;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Vue$3);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1), __webpack_require__(0), __webpack_require__(5).setImmediate))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmVzbS5qcz9lZmViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0JBQStCO0FBQ3JELHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsaUNBQWlDLEVBQUU7QUFDckYsQ0FBQzs7QUFF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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCLFNBQVMscUJBQXFCOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxPQUFPO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyx1QkFBdUI7QUFDekQsaUNBQWlDLHNCQUFzQjtBQUN2RDtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEMsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixZQUFZO0FBQzlCLFdBQVc7QUFDWDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLFNBQVM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVCQUF1QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlCQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvQkFBb0IsRUFBRTs7QUFFcEQ7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlCQUF5QjtBQUMxQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyQkFBMkI7QUFDOUMscUJBQXFCLCtCQUErQjtBQUNwRDtBQUNBO0FBQ0EsR0FBRztBQUNILHlCQUF5QjtBQUN6QjtBQUNBLHNCQUFzQixpQ0FBaUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0JBQW9CO0FBQ3pDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsT0FBTztBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdDQUFnQyxPQUFPO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0Esb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSx3Q0FBd0MsMkJBQTJCLEVBQUU7QUFDckUsS0FBSztBQUNMO0FBQ0Esd0NBQXdDLDRCQUE0QixFQUFFO0FBQ3RFO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGVBQWU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBLGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLHNCQUFzQjs7QUFFckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUF5QztBQUN6QztBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELG1CQUFtQjtBQUMzRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFD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OztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsdUNBQXVDLFNBQVM7QUFDaEQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdCQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNEJBQTRCLEVBQUU7QUFDM0UsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsK0JBQStCLEVBQUU7QUFDOUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxhQUFhOztBQUUzRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMscUNBQXFDOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsdUNBQXVDLEVBQUU7QUFDcEY7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLDJDQUEyQyxFQUFFO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLE9BQU87QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyw4QkFBOEIsRUFBRTtBQUNyRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2Qyx1Q0FBdUMsRUFBRTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4QztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQSwwRUFBMEUsMEJBQTBCLEVBQUU7QUFDdEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGdCQUFnQjtBQUN4RDtBQUNBO0FBQ0EsZ0VBQWdFLHNCQUFzQixFQUFFO0FBQ3hGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHdCQUF3QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1QkFBdUI7QUFDbEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QseUJBQXlCLEVBQUU7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTs7QUFFQSxzQkFBc0IsRUFBRSxjQUFjLEVBQUU7QUFDeEMsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtB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QTs7QUFFQTtBQUNBLGtCQUFrQixtRUFBbUU7QUFDckY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkMsc0JBQXNCLGFBQWE7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0NBQWtDLFVBQVU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MsVUFBVTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEdBQUcsSUFBSTs7QUFFakM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsMEJBQTBCO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw4QkFBOEI7QUFDdkM7QUFDQSx1REFBdUQsNkRBQTZEO0FBQ3BILFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkJBQTZCO0FBQ3BEO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLG1CQUFtQixFQUFFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHFCQUFxQixFQUFFO0FBQ3JFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBWdWUuanMgdjIuNS4yXG4gKiAoYykgMjAxNC0yMDE3IEV2YW4gWW91XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xuXG4vLyB0aGVzZSBoZWxwZXJzIHByb2R1Y2VzIGJldHRlciB2bSBjb2RlIGluIEpTIGVuZ2luZXMgZHVlIHRvIHRoZWlyXG4vLyBleHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nXG5mdW5jdGlvbiBpc1VuZGVmICh2KSB7XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09PSB0cnVlXG59XG5cbmZ1bmN0aW9uIGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNlXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbidcbiAgKVxufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVjayAtIHRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1pdGl2ZSB2YWx1ZXMgd2hlbiB3ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFudCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHJhdyB0eXBlIHN0cmluZyBvZiBhIHZhbHVlIGUuZy4gW29iamVjdCBPYmplY3RdXG4gKi9cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiB0b1Jhd1R5cGUgKHZhbHVlKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNoZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAodikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsIGlzIGEgdmFsaWQgYXJyYXkgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRBcnJheUluZGV4ICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KFN0cmluZyh2YWwpKTtcbiAgcmV0dXJuIG4gPj0gMCAmJiBNYXRoLmZsb29yKG4pID09PSBuICYmIGlzRmluaXRlKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAgOiB0eXBlb2YgdmFsID09PSAnb2JqZWN0J1xuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAgICA6IFN0cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIGlucHV0IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAodmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuXG59XG5cbi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFrZU1hcCAoXG4gIHN0cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xuICB9XG4gIHJldHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVpbHQtaW4gdGFnLlxuICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnLCB0cnVlKTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIGF0dHJpYnV0ZSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZS5cbiAqL1xudmFyIGlzUmVzZXJ2ZWRBdHRyaWJ1dGUgPSBtYWtlTWFwKCdrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcycpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvXFxCKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJy0kMScpLnRvTG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kLCBmYXN0ZXIgdGhhbiBuYXRpdmVcbiAqL1xuZnVuY3Rpb24gYmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG4gIC8vIHJlY29yZCBvcmlnaW5hbCBmbiBsZW5ndGhcbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4gYm91bmRGblxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8gYSByZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBzdGFydCkge1xuICBzdGFydCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBzdGFydDtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJldFtpXSA9IGxpc3RbaSArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogTWl4IHByb3BlcnRpZXMgaW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJheSBvZiBPYmplY3RzIGludG8gYSBzaW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVjdCAoYXJyKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVyYXRpb24uXG4gKiBTdHViYmluZyBhcmdzIHRvIG1ha2UgRmxvdyBoYXBweSB3aXRob3V0IGxlYXZpbmcgdXNlbGVzcyB0cmFuc3BpbGVkIGNvZGVcbiAqIHdpdGggLi4ucmVzdCAoaHR0cHM6Ly9mbG93Lm9yZy9ibG9nLzIwMTcvMDUvMDcvU3RyaWN0LUZ1bmN0aW9uLUNhbGwtQXJpdHkvKVxuICovXG5mdW5jdGlvbiBub29wIChhLCBiLCBjKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyoqXG4gKiBSZXR1cm4gc2FtZSB2YWx1ZVxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0YXRpYyBrZXlzIHN0cmluZyBmcm9tIGNvbXBpbGVyIG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVsZXMpIHtcbiAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAgcmV0dXJuIGtleXMuY29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBpc0FycmF5QSA9IEFycmF5LmlzQXJyYXkoYSk7XG4gICAgICB2YXIgaXNBcnJheUIgPSBBcnJheS5pc0FycmF5KGIpO1xuICAgICAgaWYgKGlzQXJyYXlBICYmIGlzQXJyYXlCKSB7XG4gICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeShmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGUsIGJbaV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFpc0FycmF5QSAmJiAhaXNBcnJheUIpIHtcbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICAgIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICByZXR1cm4ga2V5c0EubGVuZ3RoID09PSBrZXlzQi5sZW5ndGggJiYga2V5c0EuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBsb29zZUluZGV4T2YgKGFyciwgdmFsKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxvb3NlRXF1YWwoYXJyW2ldLCB2YWwpKSB7IHJldHVybiBpIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBFbnN1cmUgYSBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBvbmNlLlxuICovXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgU1NSX0FUVFIgPSAnZGF0YS1zZXJ2ZXItcmVuZGVyZWQnO1xuXG52YXIgQVNTRVRfVFlQRVMgPSBbXG4gICdjb21wb25lbnQnLFxuICAnZGlyZWN0aXZlJyxcbiAgJ2ZpbHRlcidcbl07XG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MgPSBbXG4gICdiZWZvcmVDcmVhdGUnLFxuICAnY3JlYXRlZCcsXG4gICdiZWZvcmVNb3VudCcsXG4gICdtb3VudGVkJyxcbiAgJ2JlZm9yZVVwZGF0ZScsXG4gICd1cGRhdGVkJyxcbiAgJ2JlZm9yZURlc3Ryb3knLFxuICAnZGVzdHJveWVkJyxcbiAgJ2FjdGl2YXRlZCcsXG4gICdkZWFjdGl2YXRlZCcsXG4gICdlcnJvckNhcHR1cmVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdhcm4gaGFuZGxlciBmb3Igd2F0Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSByZWdpc3RlcmVkIGFzIGFcbiAgICogY29tcG9uZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgY29tcG9uZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkQXR0cjogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24gZWxlbWVudC5cbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxlbWVudDogbm8sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIGdldFRhZ05hbWVzcGFjZTogbm9vcCxcblxuICAvKipcbiAgICogUGFyc2UgdGhlIHJlYWwgdGFnIG5hbWUgZm9yIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNlUGxhdGZvcm1UYWdOYW1lOiBpZGVudGl0eSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIG11c3QgYmUgYm91bmQgdXNpbmcgcHJvcGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgbXVzdFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciBsZWdhY3kgcmVhc29uc1xuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBMSUZFQ1lDTEVfSE9PS1Ncbn0pO1xuXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gY2FuIHdlIHVzZSBfX3Byb3RvX18/XG52YXIgaGFzUHJvdG8gPSAnX19wcm90b19fJyBpbiB7fTtcblxuLy8gQnJvd3NlciBlbnZpcm9ubWVudCBzbmlmZmluZ1xudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIFVBID0gaW5Ccm93c2VyICYmIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG52YXIgaXNJRSA9IFVBICYmIC9tc2llfHRyaWRlbnQvLnRlc3QoVUEpO1xudmFyIGlzSUU5ID0gVUEgJiYgVUEuaW5kZXhPZignbXNpZSA5LjAnKSA+IDA7XG52YXIgaXNFZGdlID0gVUEgJiYgVUEuaW5kZXhPZignZWRnZS8nKSA+IDA7XG52YXIgaXNBbmRyb2lkID0gVUEgJiYgVUEuaW5kZXhPZignYW5kcm9pZCcpID4gMDtcbnZhciBpc0lPUyA9IFVBICYmIC9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChVQSk7XG52YXIgaXNDaHJvbWUgPSBVQSAmJiAvY2hyb21lXFwvXFxkKy8udGVzdChVQSkgJiYgIWlzRWRnZTtcblxuLy8gRmlyZWZveCBoYXMgYSBcIndhdGNoXCIgZnVuY3Rpb24gb24gT2JqZWN0LnByb3RvdHlwZS4uLlxudmFyIG5hdGl2ZVdhdGNoID0gKHt9KS53YXRjaDtcblxudmFyIHN1cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuaWYgKGluQnJvd3Nlcikge1xuICB0cnkge1xuICAgIHZhciBvcHRzID0ge307XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdHMsICdwYXNzaXZlJywgKHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgc3VwcG9ydHNQYXNzaXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbi8vIHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2dWUgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0IFZVRV9FTlZcbnZhciBfaXNTZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfaXNTZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghaW5Ccm93c2VyICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLyAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRba2V5XSA9PT0gdHJ1ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGtleSkge1xuICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9KCkpO1xufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7XG52YXIgZ2VuZXJhdGVDb21wb25lbnRUcmFjZSA9IChub29wKTsgLy8gd29yayBhcm91bmQgZmxvdyBjaGVja1xudmFyIGZvcm1hdENvbXBvbmVudE5hbWUgPSAobm9vcCk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBoYXNDb25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xuICB2YXIgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1fXS9nLCAnJyk7IH07XG5cbiAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgdmFyIHRyYWNlID0gdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnO1xuXG4gICAgaWYgKGNvbmZpZy53YXJuSGFuZGxlcikge1xuICAgICAgY29uZmlnLndhcm5IYW5kbGVyLmNhbGwobnVsbCwgbXNnLCB2bSwgdHJhY2UpO1xuICAgIH0gZWxzZSBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIltWdWUgd2Fybl06IFwiICsgbXNnICsgdHJhY2UpKTtcbiAgICB9XG4gIH07XG5cbiAgdGlwID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbVnVlIHRpcF06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICBmb3JtYXRDb21wb25lbnROYW1lID0gZnVuY3Rpb24gKHZtLCBpbmNsdWRlRmlsZSkge1xuICAgIGlmICh2bS4kcm9vdCA9PT0gdm0pIHtcbiAgICAgIHJldHVybiAnPFJvb3Q+J1xuICAgIH1cbiAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiB2bSA9PT0gJ2Z1bmN0aW9uJyAmJiB2bS5jaWQgIT0gbnVsbFxuICAgICAgPyB2bS5vcHRpb25zXG4gICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICA/IHZtLiRvcHRpb25zIHx8IHZtLmNvbnN0cnVjdG9yLm9wdGlvbnNcbiAgICAgICAgOiB2bSB8fCB7fTtcbiAgICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSB8fCBvcHRpb25zLl9jb21wb25lbnRUYWc7XG4gICAgdmFyIGZpbGUgPSBvcHRpb25zLl9fZmlsZTtcbiAgICBpZiAoIW5hbWUgJiYgZmlsZSkge1xuICAgICAgdmFyIG1hdGNoID0gZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7XG4gICAgICBuYW1lID0gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChuYW1lID8gKFwiPFwiICsgKGNsYXNzaWZ5KG5hbWUpKSArIFwiPlwiKSA6IFwiPEFub255bW91cz5cIikgK1xuICAgICAgKGZpbGUgJiYgaW5jbHVkZUZpbGUgIT09IGZhbHNlID8gKFwiIGF0IFwiICsgZmlsZSkgOiAnJylcbiAgICApXG4gIH07XG5cbiAgdmFyIHJlcGVhdCA9IGZ1bmN0aW9uIChzdHIsIG4pIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAgIGlmIChuICUgMiA9PT0gMSkgeyByZXMgKz0gc3RyOyB9XG4gICAgICBpZiAobiA+IDEpIHsgc3RyICs9IHN0cjsgfVxuICAgICAgbiA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9O1xuXG4gIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cblxudmFyIHVpZCA9IDA7XG5cbi8qKlxuICogQSBkZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxlXG4gKiBkaXJlY3RpdmVzIHN1YnNjcmliaW5nIHRvIGl0LlxuICovXG52YXIgRGVwID0gZnVuY3Rpb24gRGVwICgpIHtcbiAgdGhpcy5pZCA9IHVpZCsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5cbkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5zdWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERlcC50YXJnZXQpIHtcbiAgICBEZXAudGFyZ2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVwLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUgdGhlIHN1YnNjcmliZXIgbGlzdCBmaXJzdFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHN1YnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgc3Vic1tpXS51cGRhdGUoKTtcbiAgfVxufTtcblxuLy8gdGhlIGN1cnJlbnQgdGFyZ2V0IHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkLlxuLy8gdGhpcyBpcyBnbG9iYWxseSB1bmlxdWUgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvbmx5IG9uZVxuLy8gd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQgYXQgYW55IHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVsbDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0IChfdGFyZ2V0KSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7IHRhcmdldFN0YWNrLnB1c2goRGVwLnRhcmdldCk7IH1cbiAgRGVwLnRhcmdldCA9IF90YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHBvcFRhcmdldCAoKSB7XG4gIERlcC50YXJnZXQgPSB0YXJnZXRTdGFjay5wb3AoKTtcbn1cblxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25lbnRPcHRpb25zLFxuICBhc3luY0ZhY3Rvcnlcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFsQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5mdW5jdGlvbmFsT3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5mdW5jdGlvbmFsU2NvcGVJZCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbiAgdGhpcy5hc3luY0ZhY3RvcnkgPSBhc3luY0ZhY3Rvcnk7XG4gIHRoaXMuYXN5bmNNZXRhID0gdW5kZWZpbmVkO1xuICB0aGlzLmlzQXN5bmNQbGFjZWhvbGRlciA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuLy8gREVQUkVDQVRFRDogYWxpYXMgZm9yIGNvbXBvbmVudEluc3RhbmNlIGZvciBiYWNrd2FyZHMgY29tcGF0LlxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnByb3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVk5vZGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGNyZWF0ZUVtcHR5Vk5vZGUgPSBmdW5jdGlvbiAodGV4dCkge1xuICBpZiAoIHRleHQgPT09IHZvaWQgMCApIHRleHQgPSAnJztcblxuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSB0ZXh0O1xuICBub2RlLmlzQ29tbWVudCA9IHRydWU7XG4gIHJldHVybiBub2RlXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUgKHZhbCkge1xuICByZXR1cm4gbmV3IFZOb2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFN0cmluZyh2YWwpKVxufVxuXG4vLyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9uZVxuLy8gdXNlZCBmb3Igc3RhdGljIG5vZGVzIGFuZCBzbG90IG5vZGVzIGJlY2F1c2UgdGhleSBtYXkgYmUgcmV1c2VkIGFjcm9zc1xuLy8gbXVsdGlwbGUgcmVuZGVycywgY2xvbmluZyB0aGVtIGF2b2lkcyBlcnJvcnMgd2hlbiBET00gbWFuaXB1bGF0aW9ucyByZWx5XG4vLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuZnVuY3Rpb24gY2xvbmVWTm9kZSAodm5vZGUsIGRlZXApIHtcbiAgdmFyIGNsb25lZCA9IG5ldyBWTm9kZShcbiAgICB2bm9kZS50YWcsXG4gICAgdm5vZGUuZGF0YSxcbiAgICB2bm9kZS5jaGlsZHJlbixcbiAgICB2bm9kZS50ZXh0LFxuICAgIHZub2RlLmVsbSxcbiAgICB2bm9kZS5jb250ZXh0LFxuICAgIHZub2RlLmNvbXBvbmVudE9wdGlvbnMsXG4gICAgdm5vZGUuYXN5bmNGYWN0b3J5XG4gICk7XG4gIGNsb25lZC5ucyA9IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVudCA9IHZub2RlLmlzQ29tbWVudDtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgaWYgKGRlZXAgJiYgdm5vZGUuY2hpbGRyZW4pIHtcbiAgICBjbG9uZWQuY2hpbGRyZW4gPSBjbG9uZVZOb2Rlcyh2bm9kZS5jaGlsZHJlbik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZFxufVxuXG5mdW5jdGlvbiBjbG9uZVZOb2RlcyAodm5vZGVzLCBkZWVwKSB7XG4gIHZhciBsZW4gPSB2bm9kZXMubGVuZ3RoO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXNbaV0gPSBjbG9uZVZOb2RlKHZub2Rlc1tpXSwgZGVlcCk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWljYWxseSBhY2Nlc3NpbmcgbWV0aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3JlYXRlKGFycmF5UHJvdG8pO1tcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl1cbi5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBvcmlnaW5hbCA9IGFycmF5UHJvdG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9kLCBmdW5jdGlvbiBtdXRhdG9yICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9iID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgIGNhc2UgJ3Vuc2hpZnQnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzcGxpY2UnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQpOyB9XG4gICAgLy8gbm90aWZ5IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBCeSBkZWZhdWx0LCB3aGVuIGEgcmVhY3RpdmUgcHJvcGVydHkgaXMgc2V0LCB0aGUgbmV3IHZhbHVlIGlzXG4gKiBhbHNvIGNvbnZlcnRlZCB0byBiZWNvbWUgcmVhY3RpdmUuIEhvd2V2ZXIgd2hlbiBwYXNzaW5nIGRvd24gcHJvcHMsXG4gKiB3ZSBkb24ndCB3YW50IHRvIGZvcmNlIGNvbnZlcnNpb24gYmVjYXVzZSB0aGUgdmFsdWUgbWF5IGJlIGEgbmVzdGVkIHZhbHVlXG4gKiB1bmRlciBhIGZyb3plbiBkYXRhIHN0cnVjdHVyZS4gQ29udmVydGluZyBpdCB3b3VsZCBkZWZlYXQgdGhlIG9wdGltaXphdGlvbi5cbiAqL1xudmFyIG9ic2VydmVyU3RhdGUgPSB7XG4gIHNob3VsZENvbnZlcnQ6IHRydWVcbn07XG5cbi8qKlxuICogT2JzZXJ2ZXIgY2xhc3MgdGhhdCBhcmUgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGFyZ2V0XG4gKiBvYmplY3QncyBwcm9wZXJ0eSBrZXlzIGludG8gZ2V0dGVyL3NldHRlcnMgdGhhdFxuICogY29sbGVjdCBkZXBlbmRlbmNpZXMgYW5kIGRpc3BhdGNoZXMgdXBkYXRlcy5cbiAqL1xudmFyIE9ic2VydmVyID0gZnVuY3Rpb24gT2JzZXJ2ZXIgKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7XG4gIHRoaXMudm1Db3VudCA9IDA7XG4gIGRlZih2YWx1ZSwgJ19fb2JfXycsIHRoaXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgYXVnbWVudCA9IGhhc1Byb3RvXG4gICAgICA/IHByb3RvQXVnbWVudFxuICAgICAgOiBjb3B5QXVnbWVudDtcbiAgICBhdWdtZW50KHZhbHVlLCBhcnJheU1ldGhvZHMsIGFycmF5S2V5cyk7XG4gICAgdGhpcy5vYnNlcnZlQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud2Fsayh2YWx1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIGVhY2ggcHJvcGVydHkgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBnZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAqIHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZlKG9iaiwga2V5c1tpXSwgb2JqW2tleXNbaV1dKTtcbiAgfVxufTtcblxuLyoqXG4gKiBPYnNlcnZlIGEgbGlzdCBvZiBBcnJheSBpdGVtcy5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmVBcnJheSA9IGZ1bmN0aW9uIG9ic2VydmVBcnJheSAoaXRlbXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvYnNlcnZlKGl0ZW1zW2ldKTtcbiAgfVxufTtcblxuLy8gaGVscGVyc1xuXG4vKipcbiAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNpbmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNyYztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xuICogaGlkZGVuIHByb3BlcnRpZXMuXG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb3B5QXVnbWVudCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIGEgdmFsdWUsXG4gKiByZXR1cm5zIHRoZSBuZXcgb2JzZXJ2ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9ic2VydmVkLFxuICogb3IgdGhlIGV4aXN0aW5nIG9ic2VydmVyIGlmIHRoZSB2YWx1ZSBhbHJlYWR5IGhhcyBvbmUuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmUgKHZhbHVlLCBhc1Jvb3REYXRhKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxvd1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcblxuICB2YXIgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUodmFsKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdldHRlciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGN1c3RvbVNldHRlcikge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBhZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBkYXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFjdGl2ZShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVybiB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2UgaWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAgICByZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBkZXBlbmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9wZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAgZm9yICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRlcC5kZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJyYXkoZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3JpdGluZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJnZSBhIHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBzdHJhdHMuZWwgPSBzdHJhdHMucHJvcHNEYXRhID0gZnVuY3Rpb24gKHBhcmVudCwgY2hpbGQsIHZtLCBrZXkpIHtcbiAgICBpZiAoIXZtKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIm9wdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW5zdGFuY2UgXCIgK1xuICAgICAgICAnY3JlYXRpb24gd2l0aCB0aGUgYG5ld2Aga2V5d29yZC4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFN0cmF0KHBhcmVudCwgY2hpbGQpXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIHR3byBkYXRhIG9iamVjdHMgdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YSAodG8sIGZyb20pIHtcbiAgaWYgKCFmcm9tKSB7IHJldHVybiB0byB9XG4gIHZhciBrZXksIHRvVmFsLCBmcm9tVmFsO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyb20pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIHRvVmFsID0gdG9ba2V5XTtcbiAgICBmcm9tVmFsID0gZnJvbVtrZXldO1xuICAgIGlmICghaGFzT3duKHRvLCBrZXkpKSB7XG4gICAgICBzZXQodG8sIGtleSwgZnJvbVZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHRvVmFsKSAmJiBpc1BsYWluT2JqZWN0KGZyb21WYWwpKSB7XG4gICAgICBtZXJnZURhdGEodG9WYWwsIGZyb21WYWwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBEYXRhXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YU9yRm4gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICAvLyBpbiBhIFZ1ZS5leHRlbmQgbWVyZ2UsIGJvdGggc2hvdWxkIGJlIGZ1bmN0aW9uc1xuICAgIGlmICghY2hpbGRWYWwpIHtcbiAgICAgIHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgaWYgKCFwYXJlbnRWYWwpIHtcbiAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgIH1cbiAgICAvLyB3aGVuIHBhcmVudFZhbCAmIGNoaWxkVmFsIGFyZSBib3RoIHByZXNlbnQsXG4gICAgLy8gd2UgbmVlZCB0byByZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlXG4gICAgLy8gbWVyZ2VkIHJlc3VsdCBvZiBib3RoIGZ1bmN0aW9ucy4uLiBubyBuZWVkIHRvXG4gICAgLy8gY2hlY2sgaWYgcGFyZW50VmFsIGlzIGEgZnVuY3Rpb24gaGVyZSBiZWNhdXNlXG4gICAgLy8gaXQgaGFzIHRvIGJlIGEgZnVuY3Rpb24gdG8gcGFzcyBwcmV2aW91cyBtZXJnZXMuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbiAoKSB7XG4gICAgICByZXR1cm4gbWVyZ2VEYXRhKFxuICAgICAgICB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbicgPyBjaGlsZFZhbC5jYWxsKHRoaXMpIDogY2hpbGRWYWwsXG4gICAgICAgIHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbicgPyBwYXJlbnRWYWwuY2FsbCh0aGlzKSA6IHBhcmVudFZhbFxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJlbnRWYWwgfHwgY2hpbGRWYWwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkSW5zdGFuY2VEYXRhRm4gKCkge1xuICAgICAgLy8gaW5zdGFuY2UgbWVyZ2VcbiAgICAgIHZhciBpbnN0YW5jZURhdGEgPSB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtKVxuICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtKVxuICAgICAgICA6IHBhcmVudFZhbDtcbiAgICAgIGlmIChpbnN0YW5jZURhdGEpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGF0YShpbnN0YW5jZURhdGEsIGRlZmF1bHREYXRhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHREYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnN0cmF0cy5kYXRhID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICBpZiAoY2hpbGRWYWwgJiYgdHlwZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIHJldHVybiBtZXJnZURhdGFPckZuLmNhbGwodGhpcywgcGFyZW50VmFsLCBjaGlsZFZhbClcbiAgfVxuXG4gIHJldHVybiBtZXJnZURhdGFPckZuKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKVxufTtcblxuLyoqXG4gKiBIb29rcyBhbmQgcHJvcHMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSG9vayAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWxcbikge1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IHBhcmVudFZhbFxuICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgIDogW2NoaWxkVmFsXVxuICAgIDogcGFyZW50VmFsXG59XG5cbkxJRkVDWUNMRV9IT09LUy5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gIHN0cmF0c1tob29rXSA9IG1lcmdlSG9vaztcbn0pO1xuXG4vKipcbiAqIEFzc2V0c1xuICpcbiAqIFdoZW4gYSB2bSBpcyBwcmVzZW50IChpbnN0YW5jZSBjcmVhdGlvbiksIHdlIG5lZWQgdG8gZG9cbiAqIGEgdGhyZWUtd2F5IG1lcmdlIGJldHdlZW4gY29uc3RydWN0b3Igb3B0aW9ucywgaW5zdGFuY2VcbiAqIG9wdGlvbnMgYW5kIHBhcmVudCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBtZXJnZUFzc2V0cyAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCk7XG4gIGlmIChjaGlsZFZhbCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gICAgcmV0dXJuIGV4dGVuZChyZXMsIGNoaWxkVmFsKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXNcbiAgfVxufVxuXG5BU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIHN0cmF0c1t0eXBlICsgJ3MnXSA9IG1lcmdlQXNzZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hlcnMuXG4gKlxuICogV2F0Y2hlcnMgaGFzaGVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICogYW5vdGhlciwgc28gd2UgbWVyZ2UgdGhlbSBhcyBhcnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIC8vIHdvcmsgYXJvdW5kIEZpcmVmb3gncyBPYmplY3QucHJvdG90eXBlLndhdGNoLi4uXG4gIGlmIChwYXJlbnRWYWwgPT09IG5hdGl2ZVdhdGNoKSB7IHBhcmVudFZhbCA9IHVuZGVmaW5lZDsgfVxuICBpZiAoY2hpbGRWYWwgPT09IG5hdGl2ZVdhdGNoKSB7IGNoaWxkVmFsID0gdW5kZWZpbmVkOyB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKSB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkkMSBpbiBjaGlsZFZhbCkge1xuICAgIHZhciBwYXJlbnQgPSByZXRba2V5JDFdO1xuICAgIHZhciBjaGlsZCA9IGNoaWxkVmFsW2tleSQxXTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5JDFdID0gcGFyZW50XG4gICAgICA/IHBhcmVudC5jb25jYXQoY2hpbGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGQpID8gY2hpbGQgOiBbY2hpbGRdO1xuICB9XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hlcy5cbiAqL1xuc3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5pbmplY3QgPVxuc3RyYXRzLmNvbXB1dGVkID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgaWYgKGNoaWxkVmFsICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRPYmplY3RUeXBlKGtleSwgY2hpbGRWYWwsIHZtKTtcbiAgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgaWYgKGNoaWxkVmFsKSB7IGV4dGVuZChyZXQsIGNoaWxkVmFsKTsgfVxuICByZXR1cm4gcmV0XG59O1xuc3RyYXRzLnByb3ZpZGUgPSBtZXJnZURhdGFPckZuO1xuXG4vKipcbiAqIERlZmF1bHQgc3RyYXRlZ3kuXG4gKi9cbnZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICByZXR1cm4gY2hpbGRWYWwgPT09IHVuZGVmaW5lZFxuICAgID8gcGFyZW50VmFsXG4gICAgOiBjaGlsZFZhbFxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBjb21wb25lbnQgbmFtZXNcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLmNvbXBvbmVudHMpIHtcbiAgICB2YXIgbG93ZXIgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoaXNCdWlsdEluVGFnKGxvd2VyKSB8fCBjb25maWcuaXNSZXNlcnZlZFRhZyhsb3dlcikpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgICAnaWQ6ICcgKyBrZXlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIGFsbCBwcm9wcyBvcHRpb24gc3ludGF4IGFyZSBub3JtYWxpemVkIGludG8gdGhlXG4gKiBPYmplY3QtYmFzZWQgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyAob3B0aW9ucywgdm0pIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1lID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gXFxcInByb3BzXFxcIjogZXhwZWN0ZWQgYW4gQXJyYXkgb3IgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKHByb3BzKSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICBvcHRpb25zLnByb3BzID0gcmVzO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhbGwgaW5qZWN0aW9ucyBpbnRvIE9iamVjdC1iYXNlZCBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSW5qZWN0IChvcHRpb25zLCB2bSkge1xuICB2YXIgaW5qZWN0ID0gb3B0aW9ucy5pbmplY3Q7XG4gIHZhciBub3JtYWxpemVkID0gb3B0aW9ucy5pbmplY3QgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5qZWN0KSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5qZWN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBub3JtYWxpemVkW2luamVjdFtpXV0gPSB7IGZyb206IGluamVjdFtpXSB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGluamVjdCkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gaW5qZWN0KSB7XG4gICAgICB2YXIgdmFsID0gaW5qZWN0W2tleV07XG4gICAgICBub3JtYWxpemVkW2tleV0gPSBpc1BsYWluT2JqZWN0KHZhbClcbiAgICAgICAgPyBleHRlbmQoeyBmcm9tOiBrZXkgfSwgdmFsKVxuICAgICAgICA6IHsgZnJvbTogdmFsIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaW5qZWN0KSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJpbmplY3RcXFwiOiBleHBlY3RlZCBhbiBBcnJheSBvciBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUoaW5qZWN0KSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAgdmFyIGRpcnMgPSBvcHRpb25zLmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGRpcnMpIHtcbiAgICAgIHZhciBkZWYgPSBkaXJzW2tleV07XG4gICAgICBpZiAodHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6IGRlZiwgdXBkYXRlOiBkZWYgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0T2JqZWN0VHlwZSAobmFtZSwgdmFsdWUsIHZtKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gXFxcIlwiICsgbmFtZSArIFwiXFxcIjogZXhwZWN0ZWQgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKHZhbHVlKSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5oZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hpbGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkLCB2bSk7XG4gIG5vcm1hbGl6ZUluamVjdChjaGlsZCwgdm0pO1xuICBub3JtYWxpemVEaXJlY3RpdmVzKGNoaWxkKTtcbiAgdmFyIGV4dGVuZHNGcm9tID0gY2hpbGQuZXh0ZW5kcztcbiAgaWYgKGV4dGVuZHNGcm9tKSB7XG4gICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtcbiAgfVxuICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtcbiAgICB9XG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xuICB9XG4gIGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG4gICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdlRmllbGQgKGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdDtcbiAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0sIGtleSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFzc2V0LlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5lZWQgYWNjZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxuICB3YXJuTWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBvcHRpb25zW3R5cGVdO1xuICAvLyBjaGVjayBsb2NhbCByZWdpc3RyYXRpb24gdmFyaWF0aW9ucyBmaXJzdFxuICBpZiAoaGFzT3duKGFzc2V0cywgaWQpKSB7IHJldHVybiBhc3NldHNbaWRdIH1cbiAgdmFyIGNhbWVsaXplZElkID0gY2FtZWxpemUoaWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgY2FtZWxpemVkSWQpKSB7IHJldHVybiBhc3NldHNbY2FtZWxpemVkSWRdIH1cbiAgdmFyIFBhc2NhbENhc2VJZCA9IGNhcGl0YWxpemUoY2FtZWxpemVkSWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgUGFzY2FsQ2FzZUlkKSkgeyByZXR1cm4gYXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxuICAvLyBmYWxsYmFjayB0byBwcm90b3R5cGUgY2hhaW5cbiAgdmFyIHJlcyA9IGFzc2V0c1tpZF0gfHwgYXNzZXRzW2NhbWVsaXplZElkXSB8fCBhc3NldHNbUGFzY2FsQ2FzZUlkXTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJlc29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24ocHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gaGFuZGxlIGJvb2xlYW4gcHJvcHNcbiAgaWYgKGlzVHlwZShCb29sZWFuLCBwcm9wLnR5cGUpKSB7XG4gICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNUeXBlKFN0cmluZywgcHJvcC50eXBlKSAmJiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2bSwgcHJvcCwga2V5KTtcbiAgICAvLyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNoIGNvcHksXG4gICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91bGRDb252ZXJ0ID0gb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0O1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gcHJldlNob3VsZENvbnZlcnQ7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRQcm9wKHByb3AsIGtleSwgdmFsdWUsIHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3BEZWZhdWx0VmFsdWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tZmFjdG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNPYmplY3QoZGVmKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBwcm9wIFwiJyArIGtleSArICdcIjogJyArXG4gICAgICAnUHJvcHMgd2l0aCB0eXBlIE9iamVjdC9BcnJheSBtdXN0IHVzZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4gICAgICAndG8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlLicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gdGhlIHJhdyBwcm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRlcixcbiAgLy8gcmV0dXJuIHByZXZpb3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2F0Y2hlciB0cmlnZ2VyXG4gIGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgJiZcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG4gICAgdm0uX3Byb3BzW2tleV0gIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0uX3Byb3BzW2tleV1cbiAgfVxuICAvLyBjYWxsIGZhY3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5jdGlvbiB0eXBlc1xuICAvLyBhIHZhbHVlIGlzIEZ1bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMgZnVuY3Rpb24gZXZlbiBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYmIGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1bmN0aW9uJ1xuICAgID8gZGVmLmNhbGwodm0pXG4gICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3NlcnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxuICBwcm9wLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgdm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChwcm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuICAgIHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8fCB0eXBlID09PSB0cnVlO1xuICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkrKykge1xuICAgICAgdmFyIGFzc2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0pO1xuICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGFzc2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwgJycpO1xuICAgICAgdmFsaWQgPSBhc3NlcnRlZFR5cGUudmFsaWQ7XG4gICAgfVxuICB9XG4gIGlmICghdmFsaWQpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFxcXCJcIiArIG5hbWUgKyBcIlxcXCIuXCIgK1xuICAgICAgXCIgRXhwZWN0ZWQgXCIgKyAoZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbignLCAnKSkgK1xuICAgICAgXCIsIGdvdCBcIiArICh0b1Jhd1R5cGUodmFsdWUpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIHZhciB2YWxpZGF0b3IgPSBwcm9wLnZhbGlkYXRvcjtcbiAgaWYgKHZhbGlkYXRvcikge1xuICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHNpbXBsZUNoZWNrUkUgPSAvXihTdHJpbmd8TnVtYmVyfEJvb2xlYW58RnVuY3Rpb258U3ltYm9sKSQvO1xuXG5mdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkge1xuICB2YXIgdmFsaWQ7XG4gIHZhciBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBpZiAoc2ltcGxlQ2hlY2tSRS50ZXN0KGV4cGVjdGVkVHlwZSkpIHtcbiAgICB2YXIgdCA9IHR5cGVvZiB2YWx1ZTtcbiAgICB2YWxpZCA9IHQgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIC8vIGZvciBwcmltaXRpdmUgd3JhcHBlciBvYmplY3RzXG4gICAgaWYgKCF2YWxpZCAmJiB0ID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xuICAgIHZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogdmFsaWQsXG4gICAgZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBlcyxcbiAqIGJlY2F1c2UgYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVubmluZ1xuICogYWNyb3NzIGRpZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlIChmbikge1xuICB2YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59XG5cbmZ1bmN0aW9uIGlzVHlwZSAodHlwZSwgZm4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZuKSkge1xuICAgIHJldHVybiBnZXRUeXBlKGZuKSA9PT0gZ2V0VHlwZSh0eXBlKVxuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBmbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChnZXRUeXBlKGZuW2ldKSA9PT0gZ2V0VHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBoYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAodm0pIHtcbiAgICB2YXIgY3VyID0gdm07XG4gICAgd2hpbGUgKChjdXIgPSBjdXIuJHBhcmVudCkpIHtcbiAgICAgIHZhciBob29rcyA9IGN1ci4kb3B0aW9ucy5lcnJvckNhcHR1cmVkO1xuICAgICAgaWYgKGhvb2tzKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBob29rc1tpXS5jYWxsKGN1ciwgZXJyLCB2bSwgaW5mbykgPT09IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHsgcmV0dXJuIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBnbG9iYWxIYW5kbGVFcnJvcihlLCBjdXIsICdlcnJvckNhcHR1cmVkIGhvb2snKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2xvYmFsSGFuZGxlRXJyb3IoZXJyLCB2bSwgaW5mbyk7XG59XG5cbmZ1bmN0aW9uIGdsb2JhbEhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjb25maWcuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCwgZXJyLCB2bSwgaW5mbylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dFcnJvcihlLCBudWxsLCAnY29uZmlnLmVycm9ySGFuZGxlcicpO1xuICAgIH1cbiAgfVxuICBsb2dFcnJvcihlcnIsIHZtLCBpbmZvKTtcbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGluQnJvd3NlciAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLyogICovXG4vKiBnbG9iYWxzIE1lc3NhZ2VDaGFubmVsICovXG5cbnZhciBjYWxsYmFja3MgPSBbXTtcbnZhciBwZW5kaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsdXNoQ2FsbGJhY2tzICgpIHtcbiAgcGVuZGluZyA9IGZhbHNlO1xuICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb3BpZXNbaV0oKTtcbiAgfVxufVxuXG4vLyBIZXJlIHdlIGhhdmUgYXN5bmMgZGVmZXJyaW5nIHdyYXBwZXJzIHVzaW5nIGJvdGggbWljcm8gYW5kIG1hY3JvIHRhc2tzLlxuLy8gSW4gPCAyLjQgd2UgdXNlZCBtaWNybyB0YXNrcyBldmVyeXdoZXJlLCBidXQgdGhlcmUgYXJlIHNvbWUgc2NlbmFyaW9zIHdoZXJlXG4vLyBtaWNybyB0YXNrcyBoYXZlIHRvbyBoaWdoIGEgcHJpb3JpdHkgYW5kIGZpcmVzIGluIGJldHdlZW4gc3VwcG9zZWRseVxuLy8gc2VxdWVudGlhbCBldmVudHMgKGUuZy4gIzQ1MjEsICM2NjkwKSBvciBldmVuIGJldHdlZW4gYnViYmxpbmcgb2YgdGhlIHNhbWVcbi8vIGV2ZW50ICgjNjU2NikuIEhvd2V2ZXIsIHVzaW5nIG1hY3JvIHRhc2tzIGV2ZXJ5d2hlcmUgYWxzbyBoYXMgc3VidGxlIHByb2JsZW1zXG4vLyB3aGVuIHN0YXRlIGlzIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHJlcGFpbnQgKGUuZy4gIzY4MTMsIG91dC1pbiB0cmFuc2l0aW9ucykuXG4vLyBIZXJlIHdlIHVzZSBtaWNybyB0YXNrIGJ5IGRlZmF1bHQsIGJ1dCBleHBvc2UgYSB3YXkgdG8gZm9yY2UgbWFjcm8gdGFzayB3aGVuXG4vLyBuZWVkZWQgKGUuZy4gaW4gZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgYnkgdi1vbikuXG52YXIgbWljcm9UaW1lckZ1bmM7XG52YXIgbWFjcm9UaW1lckZ1bmM7XG52YXIgdXNlTWFjcm9UYXNrID0gZmFsc2U7XG5cbi8vIERldGVybWluZSAobWFjcm8pIFRhc2sgZGVmZXIgaW1wbGVtZW50YXRpb24uXG4vLyBUZWNobmljYWxseSBzZXRJbW1lZGlhdGUgc2hvdWxkIGJlIHRoZSBpZGVhbCBjaG9pY2UsIGJ1dCBpdCdzIG9ubHkgYXZhaWxhYmxlXG4vLyBpbiBJRS4gVGhlIG9ubHkgcG9seWZpbGwgdGhhdCBjb25zaXN0ZW50bHkgcXVldWVzIHRoZSBjYWxsYmFjayBhZnRlciBhbGwgRE9NXG4vLyBldmVudHMgdHJpZ2dlcmVkIGluIHRoZSBzYW1lIGxvb3AgaXMgYnkgdXNpbmcgTWVzc2FnZUNoYW5uZWwuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShzZXRJbW1lZGlhdGUpKSB7XG4gIG1hY3JvVGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHNldEltbWVkaWF0ZShmbHVzaENhbGxiYWNrcyk7XG4gIH07XG59IGVsc2UgaWYgKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICBpc05hdGl2ZShNZXNzYWdlQ2hhbm5lbCkgfHxcbiAgLy8gUGhhbnRvbUpTXG4gIE1lc3NhZ2VDaGFubmVsLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3JdJ1xuKSkge1xuICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICB2YXIgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZmx1c2hDYWxsYmFja3M7XG4gIG1hY3JvVGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHBvcnQucG9zdE1lc3NhZ2UoMSk7XG4gIH07XG59IGVsc2Uge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBtYWNyb1RpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBzZXRUaW1lb3V0KGZsdXNoQ2FsbGJhY2tzLCAwKTtcbiAgfTtcbn1cblxuLy8gRGV0ZXJtaW5lIE1pY3JvVGFzayBkZWZlciBpbXBsZW1lbnRhdGlvbi5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0LCAkZmxvdy1kaXNhYmxlLWxpbmUgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgbWljcm9UaW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcC50aGVuKGZsdXNoQ2FsbGJhY2tzKTtcbiAgICAvLyBpbiBwcm9ibGVtYXRpYyBVSVdlYlZpZXdzLCBQcm9taXNlLnRoZW4gZG9lc24ndCBjb21wbGV0ZWx5IGJyZWFrLCBidXRcbiAgICAvLyBpdCBjYW4gZ2V0IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0aGVcbiAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRoZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgIC8vIG5lZWRzIHRvIGRvIHNvbWUgb3RoZXIgd29yaywgZS5nLiBoYW5kbGUgYSB0aW1lci4gVGhlcmVmb3JlIHdlIGNhblxuICAgIC8vIFwiZm9yY2VcIiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRpbWVyLlxuICAgIGlmIChpc0lPUykgeyBzZXRUaW1lb3V0KG5vb3ApOyB9XG4gIH07XG59IGVsc2Uge1xuICAvLyBmYWxsYmFjayB0byBtYWNyb1xuICBtaWNyb1RpbWVyRnVuYyA9IG1hY3JvVGltZXJGdW5jO1xufVxuXG4vKipcbiAqIFdyYXAgYSBmdW5jdGlvbiBzbyB0aGF0IGlmIGFueSBjb2RlIGluc2lkZSB0cmlnZ2VycyBzdGF0ZSBjaGFuZ2UsXG4gKiB0aGUgY2hhbmdlcyBhcmUgcXVldWVkIHVzaW5nIGEgVGFzayBpbnN0ZWFkIG9mIGEgTWljcm9UYXNrLlxuICovXG5mdW5jdGlvbiB3aXRoTWFjcm9UYXNrIChmbikge1xuICByZXR1cm4gZm4uX3dpdGhUYXNrIHx8IChmbi5fd2l0aFRhc2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdXNlTWFjcm9UYXNrID0gdHJ1ZTtcbiAgICB2YXIgcmVzID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB1c2VNYWNyb1Rhc2sgPSBmYWxzZTtcbiAgICByZXR1cm4gcmVzXG4gIH0pXG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrIChjYiwgY3R4KSB7XG4gIHZhciBfcmVzb2x2ZTtcbiAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCBjdHgsICduZXh0VGljaycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgIF9yZXNvbHZlKGN0eCk7XG4gICAgfVxuICB9KTtcbiAgaWYgKCFwZW5kaW5nKSB7XG4gICAgcGVuZGluZyA9IHRydWU7XG4gICAgaWYgKHVzZU1hY3JvVGFzaykge1xuICAgICAgbWFjcm9UaW1lckZ1bmMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWljcm9UaW1lckZ1bmMoKTtcbiAgICB9XG4gIH1cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSlcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1lYXN1cmVzKG5hbWUpO1xuICAgIH07XG4gIH1cbn1cblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBpbml0UHJveHk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAgJ3JlZmVyZW5jZWQgZHVyaW5nIHJlbmRlci4gTWFrZSBzdXJlIHRoYXQgdGhpcyBwcm9wZXJ0eSBpcyByZWFjdGl2ZSwgJyArXG4gICAgICAnZWl0aGVyIGluIHRoZSBkYXRhIG9wdGlvbiwgb3IgZm9yIGNsYXNzLWJhc2VkIGNvbXBvbmVudHMsIGJ5ICcgK1xuICAgICAgJ2luaXRpYWxpemluZyB0aGUgcHJvcGVydHkuICcgK1xuICAgICAgJ1NlZTogaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUvcmVhY3Rpdml0eS5odG1sI0RlY2xhcmluZy1SZWFjdGl2ZS1Qcm9wZXJ0aWVzLicsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIFByb3h5LnRvU3RyaW5nKCkubWF0Y2goL25hdGl2ZSBjb2RlLyk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YSxleGFjdCcpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkgfHwga2V5LmNoYXJBdCgwKSA9PT0gJ18nO1xuICAgICAgaWYgKCFoYXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0W2tleV1cbiAgICB9XG4gIH07XG5cbiAgaW5pdFByb3h5ID0gZnVuY3Rpb24gaW5pdFByb3h5ICh2bSkge1xuICAgIGlmIChoYXNQcm94eSkge1xuICAgICAgLy8gZGV0ZXJtaW5lIHdoaWNoIHByb3h5IGhhbmRsZXIgdG8gdXNlXG4gICAgICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuICAgICAgdmFyIGhhbmRsZXJzID0gb3B0aW9ucy5yZW5kZXIgJiYgb3B0aW9ucy5yZW5kZXIuX3dpdGhTdHJpcHBlZFxuICAgICAgICA/IGdldEhhbmRsZXJcbiAgICAgICAgOiBoYXNIYW5kbGVyO1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gbmV3IFByb3h5KHZtLCBoYW5kbGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAgIHZhciBjbG9uZWQgPSBmbnMuc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xvbmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNsb25lZFtpXS5hcHBseShudWxsLCBhcmd1bWVudHMkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGtleUluTG93ZXJDYXNlID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgIT09IGtleUluTG93ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJzLCBrZXlJbkxvd2VyQ2FzZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAgICAgXCJQcm9wIFxcXCJcIiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBjb21wb25lbnQgXCIgK1xuICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0b3IpKSArIFwiLCBidXQgdGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAgIFwiIFxcXCJcIiArIGtleSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtcbiAgICAgICAgICAgIFwicHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFsZW50cyB3aGVuIHVzaW5nIGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNoLFxuICBrZXksXG4gIGFsdEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkpIHtcbiAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtrZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBhbHRLZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8gVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBub3JtYWxpemF0aW9uIGJ5XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQgY29tcGlsZSB0aW1lLlxuLy9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlvbiBjYW4gYmUgY29tcGxldGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVuZGVyIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUgYXJlXG4vLyB0d28gY2FzZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5cbi8vIDEuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEgZnVuY3Rpb25hbCBjb21wb25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBhIHNpbmdsZSByb290LiBJbiB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkIC0gaWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3aG9sZVxuLy8gdGhpbmcgd2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9ubHkgMS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbHJlYWR5IG5vcm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxkcmVuKVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVkIEFycmF5cyxcbi8vIGUuZy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUgY2hpbGRyZW4gaXMgcHJvdmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucyAvIEpTWC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8gaXMgbmVlZGVkIHRvIGNhdGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1ZXMuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlzUHJpbWl0aXZlKGNoaWxkcmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4gICAgOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxkcmVuKGNoaWxkcmVuKVxuICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9kZSAobm9kZSkge1xuICByZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBpc0ZhbHNlKG5vZGUuaXNDb21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxkcmVuIChjaGlsZHJlbiwgbmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwgYywgbGFzdEluZGV4LCBsYXN0O1xuICBmb3IgKGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGlzVW5kZWYoYykgfHwgdHlwZW9mIGMgPT09ICdib29sZWFuJykgeyBjb250aW51ZSB9XG4gICAgbGFzdEluZGV4ID0gcmVzLmxlbmd0aCAtIDE7XG4gICAgbGFzdCA9IHJlc1tsYXN0SW5kZXhdO1xuICAgIC8vICBuZXN0ZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgaWYgKGMubGVuZ3RoID4gMCkge1xuICAgICAgICBjID0gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpO1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIGlmIChpc1RleHROb2RlKGNbMF0pICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyAoY1swXSkudGV4dCk7XG4gICAgICAgICAgYy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgYyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xuICAgICAgaWYgKGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICAvLyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgU1NSIGh5ZHJhdGlvbiBiZWNhdXNlIHRleHQgbm9kZXMgYXJlXG4gICAgICAgIC8vIGVzc2VudGlhbGx5IG1lcmdlZCB3aGVuIHJlbmRlcmVkIHRvIEhUTUwgc3RyaW5nc1xuICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tsYXN0SW5kZXhdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMudGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkZWZhdWx0IGtleSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtlbHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxuICAgICAgICBpZiAoaXNUcnVlKGNoaWxkcmVuLl9pc1ZMaXN0KSAmJlxuICAgICAgICAgIGlzRGVmKGMudGFnKSAmJlxuICAgICAgICAgIGlzVW5kZWYoYy5rZXkpICYmXG4gICAgICAgICAgaXNEZWYobmVzdGVkSW5kZXgpKSB7XG4gICAgICAgICAgYy5rZXkgPSBcIl9fdmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnN1cmVDdG9yIChjb21wLCBiYXNlKSB7XG4gIGlmIChcbiAgICBjb21wLl9fZXNNb2R1bGUgfHxcbiAgICAoaGFzU3ltYm9sICYmIGNvbXBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ01vZHVsZScpXG4gICkge1xuICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXApXG4gICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyIChcbiAgZmFjdG9yeSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIHZhciBub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICBub2RlLmFzeW5jRmFjdG9yeSA9IGZhY3Rvcnk7XG4gIG5vZGUuYXN5bmNNZXRhID0geyBkYXRhOiBkYXRhLCBjb250ZXh0OiBjb250ZXh0LCBjaGlsZHJlbjogY2hpbGRyZW4sIHRhZzogdGFnIH07XG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAoXG4gIGZhY3RvcnksXG4gIGJhc2VDdG9yLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmVycm9yKSAmJiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5lcnJvckNvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3RvcnkubG9hZGluZykgJiYgaXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkuY29udGV4dHMpKSB7XG4gICAgLy8gYWxyZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjb250ZXh0cyA9IGZhY3RvcnkuY29udGV4dHMgPSBbY29udGV4dF07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuXG4gICAgdmFyIGZvcmNlUmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjb250ZXh0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29udGV4dHNbaV0uJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7XG4gICAgICAvLyBjYWNoZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3VyZUN0b3IocmVzLCBiYXNlQ3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYgdGhpcyBpcyBub3QgYSBzeW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3luYykge1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24gPyAoXCJcXG5SZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gKCkgPT4gUHJvbWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYocmVzLmNvbXBvbmVudCkgJiYgdHlwZW9mIHJlcy5jb21wb25lbnQudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXMuY29tcG9uZW50LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoaXNEZWYocmVzLmVycm9yKSkge1xuICAgICAgICAgIGZhY3RvcnkuZXJyb3JDb21wID0gZW5zdXJlQ3RvcihyZXMuZXJyb3IsIGJhc2VDdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihyZXMubG9hZGluZykpIHtcbiAgICAgICAgICBmYWN0b3J5LmxvYWRpbmdDb21wID0gZW5zdXJlQ3RvcihyZXMubG9hZGluZywgYmFzZUN0b3IpO1xuICAgICAgICAgIGlmIChyZXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSAmJiBpc1VuZGVmKGZhY3RvcnkuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICAgICAgICAgICAgPyAoXCJ0aW1lb3V0IChcIiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZhbHNlO1xuICAgIC8vIHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAgIDogZmFjdG9yeS5yZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpc0FzeW5jUGxhY2Vob2xkZXIgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXNDb21tZW50ICYmIG5vZGUuYXN5bmNGYWN0b3J5XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENoaWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIChpc0RlZihjLmNvbXBvbmVudE9wdGlvbnMpIHx8IGlzQXN5bmNQbGFjZWhvbGRlcihjKSkpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9IGZhbHNlO1xuICAvLyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFyIHRhcmdldDtcblxuZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2UpIHtcbiAgaWYgKG9uY2UpIHtcbiAgICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuJG9uKGV2ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlzJDEuJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgZXZlbnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKCFjYnMpIHtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdm0uX2V2ZW50c1tldmVudF0gPSBudWxsO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmIChmbikge1xuICAgICAgLy8gc3BlY2lmaWMgaGFuZGxlclxuICAgICAgdmFyIGNiO1xuICAgICAgdmFyIGkkMSA9IGNicy5sZW5ndGg7XG4gICAgICB3aGlsZSAoaSQxLS0pIHtcbiAgICAgICAgY2IgPSBjYnNbaSQxXTtcbiAgICAgICAgaWYgKGNiID09PSBmbiB8fCBjYi5mbiA9PT0gZm4pIHtcbiAgICAgICAgICBjYnMuc3BsaWNlKGkkMSwgMSk7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0gZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxuICAgICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAoaHlwaGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwiXFxcIi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEgPyB0b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2JzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNic1tpXS5hcHBseSh2bSwgYXJncyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZXZlbnQgaGFuZGxlciBmb3IgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIHJhdyBjaGlsZHJlbiBWTm9kZXMgaW50byBhIHNsb3Qgb2JqZWN0LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU2xvdHMgKFxuICBjaGlsZHJlbixcbiAgY29udGV4dFxuKSB7XG4gIHZhciBzbG90cyA9IHt9O1xuICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHNsb3RzXG4gIH1cbiAgdmFyIGRlZmF1bHRTbG90ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgdmFyIGRhdGEgPSBjaGlsZC5kYXRhO1xuICAgIC8vIHJlbW92ZSBzbG90IGF0dHJpYnV0ZSBpZiB0aGUgbm9kZSBpcyByZXNvbHZlZCBhcyBhIFZ1ZSBzbG90IG5vZGVcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMuc2xvdCkge1xuICAgICAgZGVsZXRlIGRhdGEuYXR0cnMuc2xvdDtcbiAgICB9XG4gICAgLy8gbmFtZWQgc2xvdHMgc2hvdWxkIG9ubHkgYmUgcmVzcGVjdGVkIGlmIHRoZSB2bm9kZSB3YXMgcmVuZGVyZWQgaW4gdGhlXG4gICAgLy8gc2FtZSBjb250ZXh0LlxuICAgIGlmICgoY2hpbGQuY29udGV4dCA9PT0gY29udGV4dCB8fCBjaGlsZC5mdW5jdGlvbmFsQ29udGV4dCA9PT0gY29udGV4dCkgJiZcbiAgICAgIGRhdGEgJiYgZGF0YS5zbG90ICE9IG51bGxcbiAgICApIHtcbiAgICAgIHZhciBuYW1lID0gY2hpbGQuZGF0YS5zbG90O1xuICAgICAgdmFyIHNsb3QgPSAoc2xvdHNbbmFtZV0gfHwgKHNsb3RzW25hbWVdID0gW10pKTtcbiAgICAgIGlmIChjaGlsZC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgc2xvdC5wdXNoLmFwcGx5KHNsb3QsIGNoaWxkLmNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsb3QucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmF1bHRTbG90LnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfVxuICAvLyBpZ25vcmUgd2hpdGVzcGFjZVxuICBpZiAoIWRlZmF1bHRTbG90LmV2ZXJ5KGlzV2hpdGVzcGFjZSkpIHtcbiAgICBzbG90cy5kZWZhdWx0ID0gZGVmYXVsdFNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5pc0NvbW1lbnQgfHwgbm9kZS50ZXh0ID09PSAnICdcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlZFNsb3RzIChcbiAgZm5zLCAvLyBzZWUgZmxvdy92bm9kZVxuICByZXNcbikge1xuICByZXMgPSByZXMgfHwge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zW2ldKSkge1xuICAgICAgcmVzb2x2ZVNjb3BlZFNsb3RzKGZuc1tpXSwgcmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2Zuc1tpXS5rZXldID0gZm5zW2ldLmZuO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgYWN0aXZlSW5zdGFuY2UgPSBudWxsO1xudmFyIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBpbml0TGlmZWN5Y2xlICh2bSkge1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXG4gIC8vIGxvY2F0ZSBmaXJzdCBub24tYWJzdHJhY3QgcGFyZW50XG4gIHZhciBwYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgaWYgKHBhcmVudCAmJiAhb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHdoaWxlIChwYXJlbnQuJG9wdGlvbnMuYWJzdHJhY3QgJiYgcGFyZW50LiRwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLnB1c2godm0pO1xuICB9XG5cbiAgdm0uJHBhcmVudCA9IHBhcmVudDtcbiAgdm0uJHJvb3QgPSBwYXJlbnQgPyBwYXJlbnQuJHJvb3QgOiB2bTtcblxuICB2bS4kY2hpbGRyZW4gPSBbXTtcbiAgdm0uJHJlZnMgPSB7fTtcblxuICB2bS5fd2F0Y2hlciA9IG51bGw7XG4gIHZtLl9pbmFjdGl2ZSA9IG51bGw7XG4gIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICB2bS5faXNNb3VudGVkID0gZmFsc2U7XG4gIHZtLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsaWZlY3ljbGVNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICdiZWZvcmVVcGRhdGUnKTtcbiAgICB9XG4gICAgdmFyIHByZXZFbCA9IHZtLiRlbDtcbiAgICB2YXIgcHJldlZub2RlID0gdm0uX3Zub2RlO1xuICAgIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5jZTtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHZtO1xuICAgIHZtLl92bm9kZSA9IHZub2RlO1xuICAgIC8vIFZ1ZS5wcm90b3R5cGUuX19wYXRjaF9fIGlzIGluamVjdGVkIGluIGVudHJ5IHBvaW50c1xuICAgIC8vIGJhc2VkIG9uIHRoZSByZW5kZXJpbmcgYmFja2VuZCB1c2VkLlxuICAgIGlmICghcHJldlZub2RlKSB7XG4gICAgICAvLyBpbml0aWFsIHJlbmRlclxuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKFxuICAgICAgICB2bS4kZWwsIHZub2RlLCBoeWRyYXRpbmcsIGZhbHNlIC8qIHJlbW92ZU9ubHkgKi8sXG4gICAgICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0sXG4gICAgICAgIHZtLiRvcHRpb25zLl9yZWZFbG1cbiAgICAgICk7XG4gICAgICAvLyBubyBuZWVkIGZvciB0aGUgcmVmIG5vZGVzIGFmdGVyIGluaXRpYWwgcGF0Y2hcbiAgICAgIC8vIHRoaXMgcHJldmVudHMga2VlcGluZyBhIGRldGFjaGVkIERPTSB0cmVlIGluIG1lbW9yeSAoIzU4NTEpXG4gICAgICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtID0gdm0uJG9wdGlvbnMuX3JlZkVsbSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVwZGF0ZXNcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhwcmV2Vm5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgYWN0aXZlSW5zdGFuY2UgPSBwcmV2QWN0aXZlSW5zdGFuY2U7XG4gICAgLy8gdXBkYXRlIF9fdnVlX18gcmVmZXJlbmNlXG4gICAgaWYgKHByZXZFbCkge1xuICAgICAgcHJldkVsLl9fdnVlX18gPSBudWxsO1xuICAgIH1cbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IHZtO1xuICAgIH1cbiAgICAvLyBpZiBwYXJlbnQgaXMgYW4gSE9DLCB1cGRhdGUgaXRzICRlbCBhcyB3ZWxsXG4gICAgaWYgKHZtLiR2bm9kZSAmJiB2bS4kcGFyZW50ICYmIHZtLiR2bm9kZSA9PT0gdm0uJHBhcmVudC5fdm5vZGUpIHtcbiAgICAgIHZtLiRwYXJlbnQuJGVsID0gdm0uJGVsO1xuICAgIH1cbiAgICAvLyB1cGRhdGVkIGhvb2sgaXMgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIgdG8gZW5zdXJlIHRoYXQgY2hpbGRyZW4gYXJlXG4gICAgLy8gdXBkYXRlZCBpbiBhIHBhcmVudCdzIHVwZGF0ZWQgaG9vay5cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRmb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5fd2F0Y2hlcikge1xuICAgICAgdm0uX3dhdGNoZXIudXBkYXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZURlc3Ryb3knKTtcbiAgICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSBwYXJlbnRcbiAgICB2YXIgcGFyZW50ID0gdm0uJHBhcmVudDtcbiAgICBpZiAocGFyZW50ICYmICFwYXJlbnQuX2lzQmVpbmdEZXN0cm95ZWQgJiYgIXZtLiRvcHRpb25zLmFic3RyYWN0KSB7XG4gICAgICByZW1vdmUocGFyZW50LiRjaGlsZHJlbiwgdm0pO1xuICAgIH1cbiAgICAvLyB0ZWFyZG93biB3YXRjaGVyc1xuICAgIGlmICh2bS5fd2F0Y2hlcikge1xuICAgICAgdm0uX3dhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gICAgdmFyIGkgPSB2bS5fd2F0Y2hlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZtLl93YXRjaGVyc1tpXS50ZWFyZG93bigpO1xuICAgIH1cbiAgICAvLyByZW1vdmUgcmVmZXJlbmNlIGZyb20gZGF0YSBvYlxuICAgIC8vIGZyb3plbiBvYmplY3QgbWF5IG5vdCBoYXZlIG9ic2VydmVyLlxuICAgIGlmICh2bS5fZGF0YS5fX29iX18pIHtcbiAgICAgIHZtLl9kYXRhLl9fb2JfXy52bUNvdW50LS07XG4gICAgfVxuICAgIC8vIGNhbGwgdGhlIGxhc3QgaG9vay4uLlxuICAgIHZtLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgLy8gaW52b2tlIGRlc3Ryb3kgaG9va3Mgb24gY3VycmVudCByZW5kZXJlZCB0cmVlXG4gICAgdm0uX19wYXRjaF9fKHZtLl92bm9kZSwgbnVsbCk7XG4gICAgLy8gZmlyZSBkZXN0cm95ZWQgaG9va1xuICAgIGNhbGxIb29rKHZtLCAnZGVzdHJveWVkJyk7XG4gICAgLy8gdHVybiBvZmYgYWxsIGluc3RhbmNlIGxpc3RlbmVycy5cbiAgICB2bS4kb2ZmKCk7XG4gICAgLy8gcmVtb3ZlIF9fdnVlX18gcmVmZXJlbmNlXG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSBudWxsO1xuICAgIH1cbiAgICAvLyByZWxlYXNlIGNpcmN1bGFyIHJlZmVyZW5jZSAoIzY3NTkpXG4gICAgaWYgKHZtLiR2bm9kZSkge1xuICAgICAgdm0uJHZub2RlLnBhcmVudCA9IG51bGw7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudCAoXG4gIHZtLFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgdm0uJGVsID0gZWw7XG4gIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG4gICAgdm0uJG9wdGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAnY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21waWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsSG9vayh2bSwgJ2JlZm9yZU1vdW50Jyk7XG5cbiAgdmFyIHVwZGF0ZUNvbXBvbmVudDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5hbWUgPSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZtLl91aWQ7XG4gICAgICB2YXIgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4gICAgICB2YXIgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2YXIgdm5vZGUgPSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKChcInZ1ZSBcIiArIG5hbWUgKyBcIiByZW5kZXJcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZtLl91cGRhdGUodm5vZGUsIGh5ZHJhdGluZyk7XG4gICAgICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKChcInZ1ZSBcIiArIG5hbWUgKyBcIiBwYXRjaFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2bS5fdXBkYXRlKHZtLl9yZW5kZXIoKSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9XG5cbiAgdm0uX3dhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wKTtcbiAgaHlkcmF0aW5nID0gZmFsc2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNlbGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9kZSA9PSBudWxsKSB7XG4gICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG4gIH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IHRydWU7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgd2hldGhlciBjb21wb25lbnQgaGFzIHNsb3QgY2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBvdmVyd3JpdGluZyAkb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW5cbiAgdmFyIGhhc0NoaWxkcmVuID0gISEoXG4gICAgcmVuZGVyQ2hpbGRyZW4gfHwgICAgICAgICAgICAgICAvLyBoYXMgbmV3IHN0YXRpYyBzbG90c1xuICAgIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiB8fCAgLy8gaGFzIG9sZCBzdGF0aWMgc2xvdHNcbiAgICBwYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzIHx8IC8vIGhhcyBuZXcgc2NvcGVkIHNsb3RzXG4gICAgdm0uJHNjb3BlZFNsb3RzICE9PSBlbXB0eU9iamVjdCAvLyBoYXMgb2xkIHNjb3BlZCBzbG90c1xuICApO1xuXG4gIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xuICB2bS4kdm5vZGUgPSBwYXJlbnRWbm9kZTsgLy8gdXBkYXRlIHZtJ3MgcGxhY2Vob2xkZXIgbm9kZSB3aXRob3V0IHJlLXJlbmRlclxuXG4gIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAgICB2bS5fdm5vZGUucGFyZW50ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlICRhdHRycyBhbmQgJGxpc3RlbmVycyBoYXNoXG4gIC8vIHRoZXNlIGFyZSBhbHNvIHJlYWN0aXZlIHNvIHRoZXkgbWF5IHRyaWdnZXIgY2hpbGQgdXBkYXRlIGlmIHRoZSBjaGlsZFxuICAvLyB1c2VkIHRoZW0gZHVyaW5nIHJlbmRlclxuICB2bS4kYXR0cnMgPSAocGFyZW50Vm5vZGUuZGF0YSAmJiBwYXJlbnRWbm9kZS5kYXRhLmF0dHJzKSB8fCBlbXB0eU9iamVjdDtcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xuICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0RhdGEsIHZtKTtcbiAgICB9XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICAvLyBrZWVwIGEgY29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJvcHNEYXRhO1xuICB9XG5cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyByZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIHZhciBoYW5kbGVycyA9IHZtLiRvcHRpb25zW2hvb2tdO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaGFuZGxlcnNbaV0uY2FsbCh2bSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoaG9vayArIFwiIGhvb2tcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicgKyBob29rKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuXG52YXIgTUFYX1VQREFURV9DT1VOVCA9IDEwMDtcblxudmFyIHF1ZXVlID0gW107XG52YXIgYWN0aXZhdGVkQ2hpbGRyZW4gPSBbXTtcbnZhciBoYXMgPSB7fTtcbnZhciBjaXJjdWxhciA9IHt9O1xudmFyIHdhaXRpbmcgPSBmYWxzZTtcbnZhciBmbHVzaGluZyA9IGZhbHNlO1xudmFyIGluZGV4ID0gMDtcblxuLyoqXG4gKiBSZXNldCB0aGUgc2NoZWR1bGVyJ3Mgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkge1xuICBpbmRleCA9IHF1ZXVlLmxlbmd0aCA9IGFjdGl2YXRlZENoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIGhhcyA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNoaW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBoYXNbaWRdICE9IG51bGwpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVkSG9va3ModXBkYXRlZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMpIHtcbiAgICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0gPSB3YXRjaGVyLnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ3VwZGF0ZWQnKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBRdWV1ZSBhIGtlcHQtYWxpdmUgY29tcG9uZW50IHRoYXQgd2FzIGFjdGl2YXRlZCBkdXJpbmcgcGF0Y2guXG4gKiBUaGUgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIGVudGlyZSB0cmVlIGhhcyBiZWVuIHBhdGNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50ICh2bSkge1xuICAvLyBzZXR0aW5nIF9pbmFjdGl2ZSB0byBmYWxzZSBoZXJlIHNvIHRoYXQgYSByZW5kZXIgZnVuY3Rpb24gY2FuXG4gIC8vIHJlbHkgb24gY2hlY2tpbmcgd2hldGhlciBpdCdzIGluIGFuIGluYWN0aXZlIHRyZWUgKGUuZy4gcm91dGVyLXZpZXcpXG4gIHZtLl9pbmFjdGl2ZSA9IGZhbHNlO1xuICBhY3RpdmF0ZWRDaGlsZHJlbi5wdXNoKHZtKTtcbn1cblxuZnVuY3Rpb24gY2FsbEFjdGl2YXRlZEhvb2tzIChxdWV1ZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgcXVldWVbaV0uX2luYWN0aXZlID0gdHJ1ZTtcbiAgICBhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KHF1ZXVlW2ldLCB0cnVlIC8qIHRydWUgKi8pO1xuICB9XG59XG5cbi8qKlxuICogUHVzaCBhIHdhdGNoZXIgaW50byB0aGUgd2F0Y2hlciBxdWV1ZS5cbiAqIEpvYnMgd2l0aCBkdXBsaWNhdGUgSURzIHdpbGwgYmUgc2tpcHBlZCB1bmxlc3MgaXQnc1xuICogcHVzaGVkIHdoZW4gdGhlIHF1ZXVlIGlzIGJlaW5nIGZsdXNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlV2F0Y2hlciAod2F0Y2hlcikge1xuICB2YXIgaWQgPSB3YXRjaGVyLmlkO1xuICBpZiAoaGFzW2lkXSA9PSBudWxsKSB7XG4gICAgaGFzW2lkXSA9IHRydWU7XG4gICAgaWYgKCFmbHVzaGluZykge1xuICAgICAgcXVldWUucHVzaCh3YXRjaGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgYWxyZWFkeSBmbHVzaGluZywgc3BsaWNlIHRoZSB3YXRjaGVyIGJhc2VkIG9uIGl0cyBpZFxuICAgICAgLy8gaWYgYWxyZWFkeSBwYXN0IGl0cyBpZCwgaXQgd2lsbCBiZSBydW4gbmV4dCBpbW1lZGlhdGVseS5cbiAgICAgIHZhciBpID0gcXVldWUubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpID4gaW5kZXggJiYgcXVldWVbaV0uaWQgPiB3YXRjaGVyLmlkKSB7XG4gICAgICAgIGktLTtcbiAgICAgIH1cbiAgICAgIHF1ZXVlLnNwbGljZShpICsgMSwgMCwgd2F0Y2hlcik7XG4gICAgfVxuICAgIC8vIHF1ZXVlIHRoZSBmbHVzaFxuICAgIGlmICghd2FpdGluZykge1xuICAgICAgd2FpdGluZyA9IHRydWU7XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB1aWQkMiA9IDA7XG5cbi8qKlxuICogQSB3YXRjaGVyIHBhcnNlcyBhbiBleHByZXNzaW9uLCBjb2xsZWN0cyBkZXBlbmRlbmNpZXMsXG4gKiBhbmQgZmlyZXMgY2FsbGJhY2sgd2hlbiB0aGUgZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuICogVGhpcyBpcyB1c2VkIGZvciBib3RoIHRoZSAkd2F0Y2goKSBhcGkgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbnZhciBXYXRjaGVyID0gZnVuY3Rpb24gV2F0Y2hlciAoXG4gIHZtLFxuICBleHBPckZuLFxuICBjYixcbiAgb3B0aW9uc1xuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVlcDtcbiAgICB0aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9wdGlvbnMubGF6eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmRlZXAgPSB0aGlzLnVzZXIgPSB0aGlzLmxhenkgPSB0aGlzLnN5bmMgPSBmYWxzZTtcbiAgfVxuICB0aGlzLmNiID0gY2I7XG4gIHRoaXMuaWQgPSArK3VpZCQyOyAvLyB1aWQgZm9yIGJhdGNoaW5nXG4gIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgdGhpcy5kaXJ0eSA9IHRoaXMubGF6eTsgLy8gZm9yIGxhenkgd2F0Y2hlcnNcbiAgdGhpcy5kZXBzID0gW107XG4gIHRoaXMubmV3RGVwcyA9IFtdO1xuICB0aGlzLmRlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMubmV3RGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5leHByZXNzaW9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgID8gZXhwT3JGbi50b1N0cmluZygpXG4gICAgOiAnJztcbiAgLy8gcGFyc2UgZXhwcmVzc2lvbiBmb3IgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuZ2V0dGVyID0gZXhwT3JGbjtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmdldHRlciA9IHBhcnNlUGF0aChleHBPckZuKTtcbiAgICBpZiAoIXRoaXMuZ2V0dGVyKSB7XG4gICAgICB0aGlzLmdldHRlciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIHRyeSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdcbiAgICBpZiAodGhpcy5kZWVwKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIHBvcFRhcmdldCgpO1xuICAgIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07XG4gICAgaWYgKCF0aGlzJDEubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMkMSk7XG4gICAgfVxuICB9XG4gIHZhciB0bXAgPSB0aGlzLmRlcElkcztcbiAgdGhpcy5kZXBJZHMgPSB0aGlzLm5ld0RlcElkcztcbiAgdGhpcy5uZXdEZXBJZHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwSWRzLmNsZWFyKCk7XG4gIHRtcCA9IHRoaXMuZGVwcztcbiAgdGhpcy5kZXBzID0gdGhpcy5uZXdEZXBzO1xuICB0aGlzLm5ld0RlcHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwcy5sZW5ndGggPSAwO1xufTtcblxuLyoqXG4gKiBTdWJzY3JpYmVyIGludGVyZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIHdoZW4gYSBkZXBlbmRlbmN5IGNoYW5nZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0aGlzLmxhenkpIHtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0aGlzLnN5bmMpIHtcbiAgICB0aGlzLnJ1bigpO1xuICB9IGVsc2Uge1xuICAgIHF1ZXVlV2F0Y2hlcih0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXIgam9iIGludGVyZmFjZS5cbiAqIFdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIHJ1biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMudmFsdWUgfHxcbiAgICAgIC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVjdC9BcnJheXMgc2hvdWxkIGZpcmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUsIGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAgICAgaXNPYmplY3QodmFsdWUpIHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8vIHNldCBuZXcgdmFsdWVcbiAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCB0aGlzLnZtLCAoXCJjYWxsYmFjayBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBFdmFsdWF0ZSB0aGUgdmFsdWUgb2YgdGhlIHdhdGNoZXIuXG4gKiBUaGlzIG9ubHkgZ2V0cyBjYWxsZWQgZm9yIGxhenkgd2F0Y2hlcnMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmV2YWx1YXRlID0gZnVuY3Rpb24gZXZhbHVhdGUgKCkge1xuICB0aGlzLnZhbHVlID0gdGhpcy5nZXQoKTtcbiAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXBlbmQgb24gYWxsIGRlcHMgY29sbGVjdGVkIGJ5IHRoaXMgd2F0Y2hlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzJDEuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSB2bSdzIHdhdGNoZXIgbGlzdFxuICAgIC8vIHRoaXMgaXMgYSBzb21ld2hhdCBleHBlbnNpdmUgb3BlcmF0aW9uIHNvIHdlIHNraXAgaXRcbiAgICAvLyBpZiB0aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICghdGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmVtb3ZlKHRoaXMudm0uX3dhdGNoZXJzLCB0aGlzKTtcbiAgICB9XG4gICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMkMS5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgc2Vlbk9iamVjdHMuY2xlYXIoKTtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWwpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCAmJiBvcHRzLndhdGNoICE9PSBuYXRpdmVXYXRjaCkge1xuICAgIGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gaXNSb290O1xuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGh5cGhlbmF0ZWRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChpc1Jlc2VydmVkQXR0cmlidXRlKGh5cGhlbmF0ZWRLZXkpIHx8XG4gICAgICAgICAgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGh5cGhlbmF0ZWRLZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiXFxcIlwiICsgaHlwaGVuYXRlZEtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVSZWFjdGl2ZShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodm0uJHBhcmVudCAmJiAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50KSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYSBwcm9wIGRpcmVjdGx5IHNpbmNlIHRoZSB2YWx1ZSB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHBhcmVudCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJJbnN0ZWFkLCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwcm9wJ3MgXCIgK1xuICAgICAgICAgICAgXCJ2YWx1ZS4gUHJvcCBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZVJlYWN0aXZlKHByb3BzLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgLy8gc3RhdGljIHByb3BzIGFyZSBhbHJlYWR5IHByb3hpZWQgb24gdGhlIGNvbXBvbmVudCdzIHByb3RvdHlwZVxuICAgIC8vIGR1cmluZyBWdWUuZXh0ZW5kKCkuIFdlIG9ubHkgbmVlZCB0byBwcm94eSBwcm9wcyBkZWZpbmVkIGF0XG4gICAgLy8gaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9wcm9wc1wiLCBrZXkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHNPcHRpb25zKSBsb29wKCBrZXkgKTtcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEgKHZtKSB7XG4gIHZhciBkYXRhID0gdm0uJG9wdGlvbnMuZGF0YTtcbiAgZGF0YSA9IHZtLl9kYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidcbiAgICA/IGdldERhdGEoZGF0YSwgdm0pXG4gICAgOiBkYXRhIHx8IHt9O1xuICBpZiAoIWlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICBkYXRhID0ge307XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ2RhdGEgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0OlxcbicgK1xuICAgICAgJ2h0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL2NvbXBvbmVudHMuaHRtbCNkYXRhLU11c3QtQmUtYS1GdW5jdGlvbicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgdmFyIG1ldGhvZHMgPSB2bS4kb3B0aW9ucy5tZXRob2RzO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChtZXRob2RzICYmIGhhc093bihtZXRob2RzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBkYXRhIHByb3BlcnR5LlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiVGhlIGRhdGEgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVjbGFyZWQgYXMgYSBwcm9wLiBcIiArXG4gICAgICAgIFwiVXNlIHByb3AgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLlwiLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkKGtleSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9kYXRhXCIsIGtleSk7XG4gICAgfVxuICB9XG4gIC8vIG9ic2VydmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhdGEuY2FsbCh2bSwgdm0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgXCJkYXRhKClcIik7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxudmFyIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnMgPSB7IGxhenk6IHRydWUgfTtcblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkICh2bSwgY29tcHV0ZWQpIHtcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBqdXN0IGdldHRlcnMgZHVyaW5nIFNTUlxuICB2YXIgaXNTU1IgPSBpc1NlcnZlclJlbmRlcmluZygpO1xuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZ2V0dGVyID09IG51bGwpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkdldHRlciBpcyBtaXNzaW5nIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzU1NSKSB7XG4gICAgICAvLyBjcmVhdGUgaW50ZXJuYWwgd2F0Y2hlciBmb3IgdGhlIGNvbXB1dGVkIHByb3BlcnR5LlxuICAgICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKFxuICAgICAgICB2bSxcbiAgICAgICAgZ2V0dGVyIHx8IG5vb3AsXG4gICAgICAgIG5vb3AsXG4gICAgICAgIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKFxuICB0YXJnZXQsXG4gIGtleSxcbiAgdXNlckRlZlxuKSB7XG4gIHZhciBzaG91bGRDYWNoZSA9ICFpc1NlcnZlclJlbmRlcmluZygpO1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gc2hvdWxkQ2FjaGVcbiAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgOiB1c2VyRGVmO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyBzaG91bGRDYWNoZSAmJiB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiB1c2VyRGVmLmdldFxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldFxuICAgICAgPyB1c2VyRGVmLnNldFxuICAgICAgOiBub29wO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID09PSBub29wKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiB3YXMgYXNzaWduZWQgdG8gYnV0IGl0IGhhcyBubyBzZXR0ZXIuXCIpLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRlZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hlcikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAgICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKChrZXkgaW4gdm0pICYmIGlzUmVzZXJ2ZWQoa2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwiTWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyBWdWUgaW5zdGFuY2UgbWV0aG9kLiBcIiArXG4gICAgICAgICAgXCJBdm9pZCBkZWZpbmluZyBjb21wb25lbnQgbWV0aG9kcyB0aGF0IHN0YXJ0IHdpdGggXyBvciAkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZtW2tleV0gPSBtZXRob2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZvciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxuICB2bSxcbiAga2V5T3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0Y2goa2V5T3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAobmV3RGF0YSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBpbnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3BzRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHkuXCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBzZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoaXNQbGFpbk9iamVjdChjYikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucylcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlkZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQgPSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFsc2U7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSh2bSwga2V5LCByZXN1bHRba2V5XSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBjaGFuZ2VzIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcHJvdmlkZWQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5qZWN0aW9uIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlKHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJbmplY3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6YW55IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVkXG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICAgICAgPyBSZWZsZWN0Lm93bktleXMoaW5qZWN0KS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW5qZWN0LCBrZXkpLmVudW1lcmFibGVcbiAgICAgICAgfSlcbiAgICAgICAgOiBPYmplY3Qua2V5cyhpbmplY3QpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciBwcm92aWRlS2V5ID0gaW5qZWN0W2tleV0uZnJvbTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxlIChzb3VyY2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgcHJvdmlkZUtleSBpbiBzb3VyY2UuX3Byb3ZpZGVkKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3Byb3ZpZGVkW3Byb3ZpZGVLZXldO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gc291cmNlLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIGluamVjdFtrZXldKSB7XG4gICAgICAgICAgdmFyIHByb3ZpZGVEZWZhdWx0ID0gaW5qZWN0W2tleV0uZGVmYXVsdDtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHR5cGVvZiBwcm92aWRlRGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBwcm92aWRlRGVmYXVsdC5jYWxsKHZtKVxuICAgICAgICAgICAgOiBwcm92aWRlRGVmYXVsdDtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybigoXCJJbmplY3Rpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIG5vdCBmb3VuZFwiKSwgdm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHYtZm9yIGxpc3RzLlxuICovXG5mdW5jdGlvbiByZW5kZXJMaXN0IChcbiAgdmFsLFxuICByZW5kZXJcbikge1xuICB2YXIgcmV0LCBpLCBsLCBrZXlzLCBrZXk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IHZhbC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxbaV0sIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB2YWw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKGkgKyAxLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtrZXldLCBrZXksIGkpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNEZWYocmV0KSkge1xuICAgIChyZXQpLl9pc1ZMaXN0ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmplY3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4gIGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICBwcm9wcyA9IHByb3BzIHx8IHt9O1xuICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhaXNPYmplY3QoYmluZE9iamVjdCkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnc2xvdCB2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCcsXG4gICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcHJvcHMgPSBleHRlbmQoZXh0ZW5kKHt9LCBiaW5kT2JqZWN0KSwgcHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGVkU2xvdEZuKHByb3BzKSB8fCBmYWxsYmFja1xuICB9IGVsc2Uge1xuICAgIHZhciBzbG90Tm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXTtcbiAgICAvLyB3YXJuIGR1cGxpY2F0ZSBzbG90IHVzYWdlXG4gICAgaWYgKHNsb3ROb2RlcyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRlcmVkICYmIHdhcm4oXG4gICAgICAgIFwiRHVwbGljYXRlIHByZXNlbmNlIG9mIHNsb3QgXFxcIlwiICsgbmFtZSArIFwiXFxcIiBmb3VuZCBpbiB0aGUgc2FtZSByZW5kZXIgdHJlZSBcIiArXG4gICAgICAgIFwiLSB0aGlzIHdpbGwgbGlrZWx5IGNhdXNlIHJlbmRlciBlcnJvcnMuXCIsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNsb3ROb2RlcyB8fCBmYWxsYmFja1xuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgZmlsdGVyc1xuICovXG5mdW5jdGlvbiByZXNvbHZlRmlsdGVyIChpZCkge1xuICByZXR1cm4gcmVzb2x2ZUFzc2V0KHRoaXMuJG9wdGlvbnMsICdmaWx0ZXJzJywgaWQsIHRydWUpIHx8IGlkZW50aXR5XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBjaGVja2luZyBrZXlDb2RlcyBmcm9tIGNvbmZpZy5cbiAqIGV4cG9zZWQgYXMgVnVlLnByb3RvdHlwZS5fa1xuICogcGFzc2luZyBpbiBldmVudEtleU5hbWUgYXMgbGFzdCBhcmd1bWVudCBzZXBhcmF0ZWx5IGZvciBiYWNrd2FyZHMgY29tcGF0XG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxuICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbkFsaWFzLFxuICBldmVudEtleU5hbWVcbikge1xuICB2YXIga2V5Q29kZXMgPSBjb25maWcua2V5Q29kZXNba2V5XSB8fCBidWlsdEluQWxpYXM7XG4gIGlmIChrZXlDb2Rlcykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGtleUNvZGVzKSkge1xuICAgICAgcmV0dXJuIGtleUNvZGVzLmluZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGtleUNvZGVzICE9PSBldmVudEtleUNvZGVcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXZlbnRLZXlOYW1lKSB7XG4gICAgcmV0dXJuIGh5cGhlbmF0ZShldmVudEtleU5hbWUpICE9PSBrZXlcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgbWVyZ2luZyB2LWJpbmQ9XCJvYmplY3RcIiBpbnRvIGEgVk5vZGUncyBkYXRhLlxuICovXG5mdW5jdGlvbiBiaW5kT2JqZWN0UHJvcHMgKFxuICBkYXRhLFxuICB0YWcsXG4gIHZhbHVlLFxuICBhc1Byb3AsXG4gIGlzU3luY1xuKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCBvciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHRvT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAgICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGtleSApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ2NsYXNzJyB8fFxuICAgICAgICAgIGtleSA9PT0gJ3N0eWxlJyB8fFxuICAgICAgICAgIGlzUmVzZXJ2ZWRBdHRyaWJ1dGUoa2V5KVxuICAgICAgICApIHtcbiAgICAgICAgICBoYXNoID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuYXR0cnMgJiYgZGF0YS5hdHRycy50eXBlO1xuICAgICAgICAgIGhhc2ggPSBhc1Byb3AgfHwgY29uZmlnLm11c3RVc2VQcm9wKHRhZywgdHlwZSwga2V5KVxuICAgICAgICAgICAgPyBkYXRhLmRvbVByb3BzIHx8IChkYXRhLmRvbVByb3BzID0ge30pXG4gICAgICAgICAgICA6IGRhdGEuYXR0cnMgfHwgKGRhdGEuYXR0cnMgPSB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoa2V5IGluIGhhc2gpKSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcblxuICAgICAgICAgIGlmIChpc1N5bmMpIHtcbiAgICAgICAgICAgIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gICAgICAgICAgICBvblsoXCJ1cGRhdGU6XCIgKyBrZXkpXSA9IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgdmFsdWVba2V5XSA9ICRldmVudDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIGxvb3AoIGtleSApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICAvLyBzdGF0aWMgdHJlZXMgY2FuIGJlIHJlbmRlcmVkIG9uY2UgYW5kIGNhY2hlZCBvbiB0aGUgY29udHJ1Y3RvciBvcHRpb25zXG4gIC8vIHNvIGV2ZXJ5IGluc3RhbmNlIHNoYXJlcyB0aGUgc2FtZSBjYWNoZWQgdHJlZXNcbiAgdmFyIHJlbmRlckZucyA9IHRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB2YXIgY2FjaGVkID0gcmVuZGVyRm5zLmNhY2hlZCB8fCAocmVuZGVyRm5zLmNhY2hlZCA9IFtdKTtcbiAgdmFyIHRyZWUgPSBjYWNoZWRbaW5kZXhdO1xuICAvLyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBhbmQgbm90IGluc2lkZSB2LWZvcixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUgYnkgZG9pbmcgYSBzaGFsbG93IGNsb25lLlxuICBpZiAodHJlZSAmJiAhaXNJbkZvcikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRyZWUpXG4gICAgICA/IGNsb25lVk5vZGVzKHRyZWUpXG4gICAgICA6IGNsb25lVk5vZGUodHJlZSlcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNoIHRyZWUuXG4gIHRyZWUgPSBjYWNoZWRbaW5kZXhdID0gcmVuZGVyRm5zW2luZGV4XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5LCBudWxsLCB0aGlzKTtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQgbWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtleSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXksIGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwgaXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kT2JqZWN0TGlzdGVuZXJzIChkYXRhLCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LW9uIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3QgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb24gPSBkYXRhLm9uID0gZGF0YS5vbiA/IGV4dGVuZCh7fSwgZGF0YS5vbikgOiB7fTtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgZXhpc3RpbmcgPSBvbltrZXldO1xuICAgICAgICB2YXIgb3VycyA9IHZhbHVlW2tleV07XG4gICAgICAgIG9uW2tleV0gPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgb3VycykgOiBvdXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5zdGFsbFJlbmRlckhlbHBlcnMgKHRhcmdldCkge1xuICB0YXJnZXQuX28gPSBtYXJrT25jZTtcbiAgdGFyZ2V0Ll9uID0gdG9OdW1iZXI7XG4gIHRhcmdldC5fcyA9IHRvU3RyaW5nO1xuICB0YXJnZXQuX2wgPSByZW5kZXJMaXN0O1xuICB0YXJnZXQuX3QgPSByZW5kZXJTbG90O1xuICB0YXJnZXQuX3EgPSBsb29zZUVxdWFsO1xuICB0YXJnZXQuX2kgPSBsb29zZUluZGV4T2Y7XG4gIHRhcmdldC5fbSA9IHJlbmRlclN0YXRpYztcbiAgdGFyZ2V0Ll9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgdGFyZ2V0Ll9rID0gY2hlY2tLZXlDb2RlcztcbiAgdGFyZ2V0Ll9iID0gYmluZE9iamVjdFByb3BzO1xuICB0YXJnZXQuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIHRhcmdldC5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIHRhcmdldC5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbiAgdGFyZ2V0Ll9nID0gYmluZE9iamVjdExpc3RlbmVycztcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0IChcbiAgZGF0YSxcbiAgcHJvcHMsXG4gIGNoaWxkcmVuLFxuICBwYXJlbnQsXG4gIEN0b3Jcbikge1xuICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICB0aGlzLmxpc3RlbmVycyA9IGRhdGEub24gfHwgZW1wdHlPYmplY3Q7XG4gIHRoaXMuaW5qZWN0aW9ucyA9IHJlc29sdmVJbmplY3Qob3B0aW9ucy5pbmplY3QsIHBhcmVudCk7XG4gIHRoaXMuc2xvdHMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIHBhcmVudCk7IH07XG5cbiAgLy8gZW5zdXJlIHRoZSBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uIGluIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAvLyBnZXRzIGEgdW5pcXVlIGNvbnRleHQgLSB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBuYW1lZCBzbG90IGNoZWNrXG4gIHZhciBjb250ZXh0Vm0gPSBPYmplY3QuY3JlYXRlKHBhcmVudCk7XG4gIHZhciBpc0NvbXBpbGVkID0gaXNUcnVlKG9wdGlvbnMuX2NvbXBpbGVkKTtcbiAgdmFyIG5lZWROb3JtYWxpemF0aW9uID0gIWlzQ29tcGlsZWQ7XG5cbiAgLy8gc3VwcG9ydCBmb3IgY29tcGlsZWQgZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoaXNDb21waWxlZCkge1xuICAgIC8vIGV4cG9zaW5nICRvcHRpb25zIGZvciByZW5kZXJTdGF0aWMoKVxuICAgIHRoaXMuJG9wdGlvbnMgPSBvcHRpb25zO1xuICAgIC8vIHByZS1yZXNvbHZlIHNsb3RzIGZvciByZW5kZXJTbG90KClcbiAgICB0aGlzLiRzbG90cyA9IHRoaXMuc2xvdHMoKTtcbiAgICB0aGlzLiRzY29wZWRTbG90cyA9IGRhdGEuc2NvcGVkU2xvdHMgfHwgZW1wdHlPYmplY3Q7XG4gIH1cblxuICBpZiAob3B0aW9ucy5fc2NvcGVJZCkge1xuICAgIHRoaXMuX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgdmFyIHZub2RlID0gY3JlYXRlRWxlbWVudChjb250ZXh0Vm0sIGEsIGIsIGMsIGQsIG5lZWROb3JtYWxpemF0aW9uKTtcbiAgICAgIGlmICh2bm9kZSkge1xuICAgICAgICB2bm9kZS5mdW5jdGlvbmFsU2NvcGVJZCA9IG9wdGlvbnMuX3Njb3BlSWQ7XG4gICAgICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZub2RlXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7IH07XG4gIH1cbn1cblxuaW5zdGFsbFJlbmRlckhlbHBlcnMoRnVuY3Rpb25hbFJlbmRlckNvbnRleHQucHJvdG90eXBlKTtcblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dFZtLFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEgfHwgZW1wdHlPYmplY3QpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxuXG4gIHZhciByZW5kZXJDb250ZXh0ID0gbmV3IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0KFxuICAgIGRhdGEsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgY29udGV4dFZtLFxuICAgIEN0b3JcbiAgKTtcblxuICB2YXIgdm5vZGUgPSBvcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIHJlbmRlckNvbnRleHQuX2MsIHJlbmRlckNvbnRleHQpO1xuXG4gIGlmICh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgdm5vZGUuZnVuY3Rpb25hbENvbnRleHQgPSBjb250ZXh0Vm07XG4gICAgdm5vZGUuZnVuY3Rpb25hbE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIGlmIChkYXRhLnNsb3QpIHtcbiAgICAgICh2bm9kZS5kYXRhIHx8ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5cbi8qICAqL1xuXG4vLyBob29rcyB0byBiZSBpbnZva2VkIG9uIGNvbXBvbmVudCBWTm9kZXMgZHVyaW5nIHBhdGNoXG52YXIgY29tcG9uZW50Vk5vZGVIb29rcyA9IHtcbiAgaW5pdDogZnVuY3Rpb24gaW5pdCAoXG4gICAgdm5vZGUsXG4gICAgaHlkcmF0aW5nLFxuICAgIHBhcmVudEVsbSxcbiAgICByZWZFbG1cbiAgKSB7XG4gICAgaWYgKCF2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShcbiAgICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlLFxuICAgICAgICBwYXJlbnRFbG0sXG4gICAgICAgIHJlZkVsbVxuICAgICAgKTtcbiAgICAgIGNoaWxkLiRtb3VudChoeWRyYXRpbmcgPyB2bm9kZS5lbG0gOiB1bmRlZmluZWQsIGh5ZHJhdGluZyk7XG4gICAgfSBlbHNlIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgLy8ga2VwdC1hbGl2ZSBjb21wb25lbnRzLCB0cmVhdCBhcyBhIHBhdGNoXG4gICAgICB2YXIgbW91bnRlZE5vZGUgPSB2bm9kZTsgLy8gd29yayBhcm91bmQgZmxvd1xuICAgICAgY29tcG9uZW50Vk5vZGVIb29rcy5wcmVwYXRjaChtb3VudGVkTm9kZSwgbW91bnRlZE5vZGUpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBhc3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9yeSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3RvcnksIGJhc2VDdG9yLCBjb250ZXh0KTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNoIGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFsbCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlvbi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0ZhY3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQgZmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAoc2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBtZXJnZSBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4gIG1lcmdlSG9va3MoZGF0YSk7XG5cbiAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIgdm5vZGVcbiAgdmFyIG5hbWUgPSBDdG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG4gIHZhciB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAoXCJ2dWUtY29tcG9uZW50LVwiICsgKEN0b3IuY2lkKSArIChuYW1lID8gKFwiLVwiICsgbmFtZSkgOiAnJykpLFxuICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHByb3BzRGF0YSwgbGlzdGVuZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRyZW4gfSxcbiAgICBhc3luY0ZhY3RvcnlcbiAgKTtcbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwgLy8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVmRWxtXG4pIHtcbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIF9pc0NvbXBvbmVudDogdHJ1ZSxcbiAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICBwcm9wc0RhdGE6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGEsXG4gICAgX2NvbXBvbmVudFRhZzogdm5vZGVDb21wb25lbnRPcHRpb25zLnRhZyxcbiAgICBfcGFyZW50Vm5vZGU6IHZub2RlLFxuICAgIF9wYXJlbnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnMsXG4gICAgX3JlbmRlckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW4sXG4gICAgX3BhcmVudEVsbTogcGFyZW50RWxtIHx8IG51bGwsXG4gICAgX3JlZkVsbTogcmVmRWxtIHx8IG51bGxcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGVDb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xuICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEuaG9vayA9IHt9O1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGhvb2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1trZXldO1xuICAgIHZhciBvdXJzID0gY29tcG9uZW50Vk5vZGVIb29rc1trZXldO1xuICAgIGRhdGEuaG9va1trZXldID0gZnJvbVBhcmVudCA/IG1lcmdlSG9vayQxKG91cnMsIGZyb21QYXJlbnQpIDogb3VycztcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2skMSAob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgb25lKGEsIGIsIGMsIGQpO1xuICAgIHR3byhhLCBiLCBjLCBkKTtcbiAgfVxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnOyhkYXRhLnByb3BzIHx8IChkYXRhLnByb3BzID0ge30pKVtwcm9wXSA9IGRhdGEubW9kZWwudmFsdWU7XG4gIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gIGlmIChpc0RlZihvbltldmVudF0pKSB7XG4gICAgb25bZXZlbnRdID0gW2RhdGEubW9kZWwuY2FsbGJhY2tdLmNvbmNhdChvbltldmVudF0pO1xuICB9IGVsc2Uge1xuICAgIG9uW2V2ZW50XSA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBvYmplY3Qgc3ludGF4IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5pcykpIHtcbiAgICB0YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2ZSBrZXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmtleSkgJiYgIWlzUHJpbWl0aXZlKGRhdGEua2V5KVxuICApIHtcbiAgICB3YXJuKFxuICAgICAgJ0F2b2lkIHVzaW5nIG5vbi1wcmltaXRpdmUgdmFsdWUgYXMga2V5LCAnICtcbiAgICAgICd1c2Ugc3RyaW5nL251bWJlciB2YWx1ZSBpbnN0ZWFkLicsXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgfVxuICAvLyBzdXBwb3J0IHNpbmdsZSBmdW5jdGlvbiBjaGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZhdWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxzZSBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5vZGUsIG5zO1xuICBpZiAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3RvcjtcbiAgICBucyA9IChjb250ZXh0LiR2bm9kZSAmJiBjb250ZXh0LiR2bm9kZS5ucykgfHwgY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAgIGlmIChucykgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5zLCBmb3JjZSkge1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUudGFnID09PSAnZm9yZWlnbk9iamVjdCcpIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2UgaW5zaWRlIGZvcmVpZ25PYmplY3RcbiAgICBucyA9IHVuZGVmaW5lZDtcbiAgICBmb3JjZSA9IHRydWU7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIChpc1VuZGVmKGNoaWxkLm5zKSB8fCBpc1RydWUoZm9yY2UpKSkge1xuICAgICAgICBhcHBseU5TKGNoaWxkLCBucywgZm9yY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJvb3Qgb2YgdGhlIGNoaWxkIHRyZWVcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcbiAgdmFyIHBhcmVudFZub2RlID0gdm0uJHZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7IC8vIHRoZSBwbGFjZWhvbGRlciBub2RlIGluIHBhcmVudCB0cmVlXG4gIHZhciByZW5kZXJDb250ZXh0ID0gcGFyZW50Vm5vZGUgJiYgcGFyZW50Vm5vZGUuY29udGV4dDtcbiAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCByZW5kZXJDb250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmplY3Q7XG4gIC8vIGJpbmQgdGhlIGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAvLyBzbyB0aGF0IHdlIGdldCBwcm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBhcmdzIG9yZGVyOiB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlzTm9ybWFsaXplXG4gIC8vIGludGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rpb25zIGNvbXBpbGVkIGZyb20gdGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAgLy8gbm9ybWFsaXphdGlvbiBpcyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9uLCB1c2VkIGluXG4gIC8vIHVzZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcblxuICAvLyAkYXR0cnMgJiAkbGlzdGVuZXJzIGFyZSBleHBvc2VkIGZvciBlYXNpZXIgSE9DIGNyZWF0aW9uLlxuICAvLyB0aGV5IG5lZWQgdG8gYmUgcmVhY3RpdmUgc28gdGhhdCBIT0NzIHVzaW5nIHRoZW0gYXJlIGFsd2F5cyB1cGRhdGVkXG4gIHZhciBwYXJlbnREYXRhID0gcGFyZW50Vm5vZGUgJiYgcGFyZW50Vm5vZGUuZGF0YTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGRlZmluZVJlYWN0aXZlKHZtLCAnJGF0dHJzJywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0dHJzIHx8IGVtcHR5T2JqZWN0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkYXR0cnMgaXMgcmVhZG9ubHkuXCIsIHZtKTtcbiAgICB9LCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSh2bSwgJyRsaXN0ZW5lcnMnLCBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgfHwgZW1wdHlPYmplY3QsIGZ1bmN0aW9uICgpIHtcbiAgICAgICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgJiYgd2FybihcIiRsaXN0ZW5lcnMgaXMgcmVhZG9ubHkuXCIsIHZtKTtcbiAgICB9LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSh2bSwgJyRhdHRycycsIHBhcmVudERhdGEgJiYgcGFyZW50RGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdCwgbnVsbCwgdHJ1ZSk7XG4gICAgZGVmaW5lUmVhY3RpdmUodm0sICckbGlzdGVuZXJzJywgb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0LCBudWxsLCB0cnVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIC8vIGluc3RhbGwgcnVudGltZSBjb252ZW5pZW5jZSBoZWxwZXJzXG4gIGluc3RhbGxSZW5kZXJIZWxwZXJzKFZ1ZS5wcm90b3R5cGUpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICAvLyBpZiB0aGUgcGFyZW50IGRpZG4ndCB1cGRhdGUsIHRoZSBzbG90IG5vZGVzIHdpbGwgYmUgdGhlIG9uZXMgZnJvbVxuICAgICAgLy8gbGFzdCByZW5kZXIuIFRoZXkgbmVlZCB0byBiZSBjbG9uZWQgdG8gZW5zdXJlIFwiZnJlc2huZXNzXCIgZm9yIHRoaXMgcmVuZGVyLlxuICAgICAgZm9yICh2YXIga2V5IGluIHZtLiRzbG90cykge1xuICAgICAgICB2YXIgc2xvdCA9IHZtLiRzbG90c1trZXldO1xuICAgICAgICBpZiAoc2xvdC5fcmVuZGVyZWQpIHtcbiAgICAgICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5vZGVzKHNsb3QsIHRydWUgLyogZGVlcCAqLyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2bS4kc2NvcGVkU2xvdHMgPSAoX3BhcmVudFZub2RlICYmIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzKSB8fCBlbXB0eU9iamVjdDtcblxuICAgIC8vIHNldCBwYXJlbnQgdm5vZGUuIHRoaXMgYWxsb3dzIHJlbmRlciBmdW5jdGlvbnMgdG8gaGF2ZSBhY2Nlc3NcbiAgICAvLyB0byB0aGUgZGF0YSBvbiB0aGUgcGxhY2Vob2xkZXIgbm9kZS5cbiAgICB2bS4kdm5vZGUgPSBfcGFyZW50Vm5vZGU7XG4gICAgLy8gcmVuZGVyIHNlbGZcbiAgICB2YXIgdm5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICh2bS4kb3B0aW9ucy5yZW5kZXJFcnJvcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2bm9kZSA9IHZtLiRvcHRpb25zLnJlbmRlckVycm9yLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCwgZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyRXJyb3JcIik7XG4gICAgICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRlciBmdW5jdGlvbiAnICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5vZGUuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5wYXJlbnQgPSBfcGFyZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDEgPSAwO1xuXG5mdW5jdGlvbiBpbml0TWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0uX3VpZCA9IHVpZCQxKys7XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgKHZtLl91aWQpO1xuICAgICAgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQgdGhpcyBiZWluZyBvYnNlcnZlZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ugb3B0aW9uc1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAgICAvLyBvcHRpbWl6ZSBpbnRlcm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9mIHRoZVxuICAgICAgLy8gaW50ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICBpbml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyAodm0uX25hbWUpICsgXCIgaW5pdFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRvcHRpb25zLmVsKSB7XG4gICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5cbiAgb3B0cy5wYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgb3B0cy5wcm9wc0RhdGEgPSBvcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50Vm5vZGUgPSBvcHRpb25zLl9wYXJlbnRWbm9kZTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBvcHRzLl9yZW5kZXJDaGlsZHJlbiA9IG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuO1xuICBvcHRzLl9jb21wb25lbnRUYWcgPSBvcHRpb25zLl9jb21wb25lbnRUYWc7XG4gIG9wdHMuX3BhcmVudEVsbSA9IG9wdGlvbnMuX3BhcmVudEVsbTtcbiAgb3B0cy5fcmVmRWxtID0gb3B0aW9ucy5fcmVmRWxtO1xuICBpZiAob3B0aW9ucy5yZW5kZXIpIHtcbiAgICBvcHRzLnJlbmRlciA9IG9wdGlvbnMucmVuZGVyO1xuICAgIG9wdHMuc3RhdGljUmVuZGVyRm5zID0gb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyAoQ3Rvcikge1xuICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgaWYgKEN0b3Iuc3VwZXIpIHtcbiAgICB2YXIgc3VwZXJPcHRpb25zID0gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyhDdG9yLnN1cGVyKTtcbiAgICB2YXIgY2FjaGVkU3VwZXJPcHRpb25zID0gQ3Rvci5zdXBlck9wdGlvbnM7XG4gICAgaWYgKHN1cGVyT3B0aW9ucyAhPT0gY2FjaGVkU3VwZXJPcHRpb25zKSB7XG4gICAgICAvLyBzdXBlciBvcHRpb24gY2hhbmdlZCxcbiAgICAgIC8vIG5lZWQgdG8gcmVzb2x2ZSBuZXcgb3B0aW9ucy5cbiAgICAgIEN0b3Iuc3VwZXJPcHRpb25zID0gc3VwZXJPcHRpb25zO1xuICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBsYXRlLW1vZGlmaWVkL2F0dGFjaGVkIG9wdGlvbnMgKCM0OTc2KVxuICAgICAgdmFyIG1vZGlmaWVkT3B0aW9ucyA9IHJlc29sdmVNb2RpZmllZE9wdGlvbnMoQ3Rvcik7XG4gICAgICAvLyB1cGRhdGUgYmFzZSBleHRlbmQgb3B0aW9uc1xuICAgICAgaWYgKG1vZGlmaWVkT3B0aW9ucykge1xuICAgICAgICBleHRlbmQoQ3Rvci5leHRlbmRPcHRpb25zLCBtb2RpZmllZE9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhzdXBlck9wdGlvbnMsIEN0b3IuZXh0ZW5kT3B0aW9ucyk7XG4gICAgICBpZiAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIG9wdGlvbnMuY29tcG9uZW50c1tvcHRpb25zLm5hbWVdID0gQ3RvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyAoQ3Rvcikge1xuICB2YXIgbW9kaWZpZWQ7XG4gIHZhciBsYXRlc3QgPSBDdG9yLm9wdGlvbnM7XG4gIHZhciBleHRlbmRlZCA9IEN0b3IuZXh0ZW5kT3B0aW9ucztcbiAgdmFyIHNlYWxlZCA9IEN0b3Iuc2VhbGVkT3B0aW9ucztcbiAgZm9yICh2YXIga2V5IGluIGxhdGVzdCkge1xuICAgIGlmIChsYXRlc3Rba2V5XSAhPT0gc2VhbGVkW2tleV0pIHtcbiAgICAgIGlmICghbW9kaWZpZWQpIHsgbW9kaWZpZWQgPSB7fTsgfVxuICAgICAgbW9kaWZpZWRba2V5XSA9IGRlZHVwZShsYXRlc3Rba2V5XSwgZXh0ZW5kZWRba2V5XSwgc2VhbGVkW2tleV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kaWZpZWRcbn1cblxuZnVuY3Rpb24gZGVkdXBlIChsYXRlc3QsIGV4dGVuZGVkLCBzZWFsZWQpIHtcbiAgLy8gY29tcGFyZSBsYXRlc3QgYW5kIHNlYWxlZCB0byBlbnN1cmUgbGlmZWN5Y2xlIGhvb2tzIHdvbid0IGJlIGR1cGxpY2F0ZWRcbiAgLy8gYmV0d2VlbiBtZXJnZXNcbiAgaWYgKEFycmF5LmlzQXJyYXkobGF0ZXN0KSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBzZWFsZWQgPSBBcnJheS5pc0FycmF5KHNlYWxlZCkgPyBzZWFsZWQgOiBbc2VhbGVkXTtcbiAgICBleHRlbmRlZCA9IEFycmF5LmlzQXJyYXkoZXh0ZW5kZWQpID8gZXh0ZW5kZWQgOiBbZXh0ZW5kZWRdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF0ZXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBwdXNoIG9yaWdpbmFsIG9wdGlvbnMgYW5kIG5vdCBzZWFsZWQgb3B0aW9ucyB0byBleGNsdWRlIGR1cGxpY2F0ZWQgb3B0aW9uc1xuICAgICAgaWYgKGV4dGVuZGVkLmluZGV4T2YobGF0ZXN0W2ldKSA+PSAwIHx8IHNlYWxlZC5pbmRleE9mKGxhdGVzdFtpXSkgPCAwKSB7XG4gICAgICAgIHJlcy5wdXNoKGxhdGVzdFtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGF0ZXN0XG4gIH1cbn1cblxuZnVuY3Rpb24gVnVlJDMgKG9wdGlvbnMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAhKHRoaXMgaW5zdGFuY2VvZiBWdWUkMylcbiAgKSB7XG4gICAgd2FybignVnVlIGlzIGEgY29uc3RydWN0b3IgYW5kIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgYG5ld2Aga2V5d29yZCcpO1xuICB9XG4gIHRoaXMuX2luaXQob3B0aW9ucyk7XG59XG5cbmluaXRNaXhpbihWdWUkMyk7XG5zdGF0ZU1peGluKFZ1ZSQzKTtcbmV2ZW50c01peGluKFZ1ZSQzKTtcbmxpZmVjeWNsZU1peGluKFZ1ZSQzKTtcbnJlbmRlck1peGluKFZ1ZSQzKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBpbnN0YWxsZWRQbHVnaW5zID0gKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgfHwgKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgPSBbXSkpO1xuICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmluZGV4T2YocGx1Z2luKSA+IC0xKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBpbnN0YWxsZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSokLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9uZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAgICAnY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhlbiwgJyArXG4gICAgICAgICAgJ2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdpZDogJyArIGlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUgKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgJiYgKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcpXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMgKHBhdHRlcm4sIG5hbWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBlbHNlIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlIChrZWVwQWxpdmVJbnN0YW5jZSwgZmlsdGVyKSB7XG4gIHZhciBjYWNoZSA9IGtlZXBBbGl2ZUluc3RhbmNlLmNhY2hlO1xuICB2YXIga2V5cyA9IGtlZXBBbGl2ZUluc3RhbmNlLmtleXM7XG4gIHZhciBfdm5vZGUgPSBrZWVwQWxpdmVJbnN0YW5jZS5fdm5vZGU7XG4gIGZvciAodmFyIGtleSBpbiBjYWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAoY2FjaGVkTm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5vZGUuY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7XG4gICAgICAgIHBydW5lQ2FjaGVFbnRyeShjYWNoZSwga2V5LCBrZXlzLCBfdm5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkgKFxuICBjYWNoZSxcbiAga2V5LFxuICBrZXlzLFxuICBjdXJyZW50XG4pIHtcbiAgdmFyIGNhY2hlZCQkMSA9IGNhY2hlW2tleV07XG4gIGlmIChjYWNoZWQkJDEgJiYgY2FjaGVkJCQxICE9PSBjdXJyZW50KSB7XG4gICAgY2FjaGVkJCQxLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbiAgY2FjaGVba2V5XSA9IG51bGw7XG4gIHJlbW92ZShrZXlzLCBrZXkpO1xufVxuXG52YXIgcGF0dGVyblR5cGVzID0gW1N0cmluZywgUmVnRXhwLCBBcnJheV07XG5cbnZhciBLZWVwQWxpdmUgPSB7XG4gIG5hbWU6ICdrZWVwLWFsaXZlJyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcHJvcHM6IHtcbiAgICBpbmNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgZXhjbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIG1heDogW1N0cmluZywgTnVtYmVyXVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMua2V5cyA9IFtdO1xuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzJDEuY2FjaGUpIHtcbiAgICAgIHBydW5lQ2FjaGVFbnRyeSh0aGlzJDEuY2FjaGUsIGtleSwgdGhpcyQxLmtleXMpO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9LFxuICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uIGV4Y2x1ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gIW1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyICgpIHtcbiAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xuICAgIHZhciBjb21wb25lbnRPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICBpZiAoY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgLy8gY2hlY2sgcGF0dGVyblxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgKFxuICAgICAgICAodGhpcy5pbmNsdWRlICYmICFtYXRjaGVzKHRoaXMuaW5jbHVkZSwgbmFtZSkpIHx8XG4gICAgICAgICh0aGlzLmV4Y2x1ZGUgJiYgbWF0Y2hlcyh0aGlzLmV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSkge1xuICAgICAgICByZXR1cm4gdm5vZGVcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICB2YXIgY2FjaGUgPSByZWYuY2FjaGU7XG4gICAgICB2YXIga2V5cyA9IHJlZi5rZXlzO1xuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjYWNoZVtrZXldLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAvLyBtYWtlIGN1cnJlbnQga2V5IGZyZXNoZXN0XG4gICAgICAgIHJlbW92ZShrZXlzLCBrZXkpO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlW2tleV0gPSB2bm9kZTtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIC8vIHBydW5lIG9sZGVzdCBlbnRyeVxuICAgICAgICBpZiAodGhpcy5tYXggJiYga2V5cy5sZW5ndGggPiBwYXJzZUludCh0aGlzLm1heCkpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleXNbMF0sIGtleXMsIHRoaXMuX3Zub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2bm9kZVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBBbGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uZmlnRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgcmVwbGFjZSB0aGUgVnVlLmNvbmZpZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxkcyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLCAnY29uZmlnJywgY29uZmlnRGVmKTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9kcy5cbiAgLy8gTk9URTogdGhlc2UgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgLSBhdm9pZCByZWx5aW5nIG9uXG4gIC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUgb2YgdGhlIHJpc2suXG4gIFZ1ZS51dGlsID0ge1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVhY3RpdmU6IGRlZmluZVJlYWN0aXZlXG4gIH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVlLmRlbGV0ZSA9IGRlbDtcbiAgVnVlLm5leHRUaWNrID0gbmV4dFRpY2s7XG5cbiAgVnVlLm9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlLm9wdGlvbnNbdHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9KTtcblxuICAvLyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwiIGNvbnN0cnVjdG9yIHRvIGV4dGVuZCBhbGwgcGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMgd2l0aCBpbiBXZWV4J3MgbXVsdGktaW5zdGFuY2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1ZTtcblxuICBleHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNvbXBvbmVudHMpO1xuXG4gIGluaXRVc2UoVnVlKTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5pdEV4dGVuZChWdWUpO1xuICBpbml0QXNzZXRSZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2JhbEFQSShWdWUkMyk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckaXNTZXJ2ZXInLCB7XG4gIGdldDogaXNTZXJ2ZXJSZW5kZXJpbmdcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBlLCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0XG4gIH1cbn0pO1xuXG5WdWUkMy52ZXJzaW9uID0gJzIuNS4yJztcblxuLyogICovXG5cbi8vIHRoZXNlIGFyZSByZXNlcnZlZCBmb3Igd2ViIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkgY29tcGlsZWQgYXdheVxuLy8gZHVyaW5nIHRlbXBsYXRlIGNvbXBpbGF0aW9uXG52YXIgaXNSZXNlcnZlZEF0dHIgPSBtYWtlTWFwKCdzdHlsZSxjbGFzcycpO1xuXG4vLyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHVzaW5nIHByb3BzIGZvciBiaW5kaW5nXG52YXIgYWNjZXB0VmFsdWUgPSBtYWtlTWFwKCdpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0LHByb2dyZXNzJyk7XG52YXIgbXVzdFVzZVByb3AgPSBmdW5jdGlvbiAodGFnLCB0eXBlLCBhdHRyKSB7XG4gIHJldHVybiAoXG4gICAgKGF0dHIgPT09ICd2YWx1ZScgJiYgYWNjZXB0VmFsdWUodGFnKSkgJiYgdHlwZSAhPT0gJ2J1dHRvbicgfHxcbiAgICAoYXR0ciA9PT0gJ3NlbGVjdGVkJyAmJiB0YWcgPT09ICdvcHRpb24nKSB8fFxuICAgIChhdHRyID09PSAnY2hlY2tlZCcgJiYgdGFnID09PSAnaW5wdXQnKSB8fFxuICAgIChhdHRyID09PSAnbXV0ZWQnICYmIHRhZyA9PT0gJ3ZpZGVvJylcbiAgKVxufTtcblxudmFyIGlzRW51bWVyYXRlZEF0dHIgPSBtYWtlTWFwKCdjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2snKTtcblxudmFyIGlzQm9vbGVhbkF0dHIgPSBtYWtlTWFwKFxuICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSwnICtcbiAgJ2RlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCwnICtcbiAgJ2VuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsJyArXG4gICdtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xuICAncmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSwnICtcbiAgJ3RydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUnXG4pO1xuXG52YXIgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxudmFyIGlzWGxpbmsgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gbmFtZS5jaGFyQXQoNSkgPT09ICc6JyAmJiBuYW1lLnNsaWNlKDAsIDUpID09PSAneGxpbmsnXG59O1xuXG52YXIgZ2V0WGxpbmtQcm9wID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVuZ3RoKSA6ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gZmFsc2Vcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKGlzRGVmKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIGlmIChjaGlsZE5vZGUuZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGNoaWxkTm9kZS5kYXRhLCBkYXRhKTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKGlzRGVmKHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudCkpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlckNsYXNzKGRhdGEuc3RhdGljQ2xhc3MsIGRhdGEuY2xhc3MpXG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJDbGFzcyAoXG4gIHN0YXRpY0NsYXNzLFxuICBkeW5hbWljQ2xhc3Ncbikge1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlBcnJheSh2YWx1ZSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdCh2YWx1ZSlcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlBcnJheSAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgc3RyaW5naWZpZWQ7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsgfVxuICAgICAgcmVzICs9IHN0cmluZ2lmaWVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU9iamVjdCAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAodmFsdWVba2V5XSkge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNlTWFwID0ge1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sJyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksJyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290J1xuKTtcblxuLy8gdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRzIHRoYXQgbWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1hcChcbiAgJ3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldycsXG4gIHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZyA9PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxudmFyIGlzVGV4dElucHV0VHlwZSA9IG1ha2VNYXAoJ3RleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsJyk7XG5cbi8qICAqL1xuXG4vKipcbiAqIFF1ZXJ5IGFuIGVsZW1lbnQgc2VsZWN0b3IgaWYgaXQncyBub3QgYW4gZWxlbWVudCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBxdWVyeSAoZWwpIHtcbiAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc2VsZWN0ZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdDYW5ub3QgZmluZCBlbGVtZW50OiAnICsgZWxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQkMSAodGFnTmFtZSwgdm5vZGUpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gIGlmICh0YWdOYW1lICE9PSAnc2VsZWN0Jykge1xuICAgIHJldHVybiBlbG1cbiAgfVxuICAvLyBmYWxzZSBvciBudWxsIHdpbGwgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgYnV0IHVuZGVmaW5lZCB3aWxsIG5vdFxuICBpZiAodm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLmF0dHJzICYmIHZub2RlLmRhdGEuYXR0cnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsbS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XG4gIH1cbiAgcmV0dXJuIGVsbVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMgKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZU1hcFtuYW1lc3BhY2VdLCB0YWdOYW1lKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dClcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudCAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0ZXh0KVxufVxuXG5mdW5jdGlvbiBpbnNlcnRCZWZvcmUgKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnROb2RlIChub2RlKSB7XG4gIHJldHVybiBub2RlLnBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gbmV4dFNpYmxpbmcgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmdcbn1cblxuZnVuY3Rpb24gdGFnTmFtZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lXG59XG5cbmZ1bmN0aW9uIHNldFRleHRDb250ZW50IChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUgKG5vZGUsIGtleSwgdmFsKSB7XG4gIG5vZGUuc2V0QXR0cmlidXRlKGtleSwgdmFsKTtcbn1cblxuXG52YXIgbm9kZU9wcyA9IE9iamVjdC5mcmVlemUoe1xuXHRjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50JDEsXG5cdGNyZWF0ZUVsZW1lbnROUzogY3JlYXRlRWxlbWVudE5TLFxuXHRjcmVhdGVUZXh0Tm9kZTogY3JlYXRlVGV4dE5vZGUsXG5cdGNyZWF0ZUNvbW1lbnQ6IGNyZWF0ZUNvbW1lbnQsXG5cdGluc2VydEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuXHRyZW1vdmVDaGlsZDogcmVtb3ZlQ2hpbGQsXG5cdGFwcGVuZENoaWxkOiBhcHBlbmRDaGlsZCxcblx0cGFyZW50Tm9kZTogcGFyZW50Tm9kZSxcblx0bmV4dFNpYmxpbmc6IG5leHRTaWJsaW5nLFxuXHR0YWdOYW1lOiB0YWdOYW1lLFxuXHRzZXRUZXh0Q29udGVudDogc2V0VGV4dENvbnRlbnQsXG5cdHNldEF0dHJpYnV0ZTogc2V0QXR0cmlidXRlXG59KTtcblxuLyogICovXG5cbnZhciByZWYgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlIChfLCB2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIGlmIChvbGRWbm9kZS5kYXRhLnJlZiAhPT0gdm5vZGUuZGF0YS5yZWYpIHtcbiAgICAgIHJlZ2lzdGVyUmVmKG9sZFZub2RlLCB0cnVlKTtcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUsIHRydWUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiByZWdpc3RlclJlZiAodm5vZGUsIGlzUmVtb3ZhbCkge1xuICB2YXIga2V5ID0gdm5vZGUuZGF0YS5yZWY7XG4gIGlmICgha2V5KSB7IHJldHVybiB9XG5cbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgdmFyIHJlZiA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmVsbTtcbiAgdmFyIHJlZnMgPSB2bS4kcmVmcztcbiAgaWYgKGlzUmVtb3ZhbCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkpIHtcbiAgICAgIHJlbW92ZShyZWZzW2tleV0sIHJlZik7XG4gICAgfSBlbHNlIGlmIChyZWZzW2tleV0gPT09IHJlZikge1xuICAgICAgcmVmc1trZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodm5vZGUuZGF0YS5yZWZJbkZvcikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlZnNba2V5XSkpIHtcbiAgICAgICAgcmVmc1trZXldID0gW3JlZl07XG4gICAgICB9IGVsc2UgaWYgKHJlZnNba2V5XS5pbmRleE9mKHJlZikgPCAwKSB7XG4gICAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgICByZWZzW2tleV0ucHVzaChyZWYpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZzW2tleV0gPSByZWY7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmlydHVhbCBET00gcGF0Y2hpbmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNuYWJiZG9tIGJ5XG4gKiBTaW1vbiBGcmlpcyBWaW5kdW0gKEBwYWxkZXBpbmQpXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc25hYmJkb20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuICpcbiAqIG1vZGlmaWVkIGJ5IEV2YW4gWW91IChAeXl4OTkwODAzKVxuICpcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlzIGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQgdGhlIGNvc3RcbiAqIG9mIG1ha2luZyBmbG93IHVuZGVyc3RhbmQgaXQgaXMgbm90IHdvcnRoIGl0LlxuICovXG5cbnZhciBlbXB0eU5vZGUgPSBuZXcgVk5vZGUoJycsIHt9LCBbXSk7XG5cbnZhciBob29rcyA9IFsnY3JlYXRlJywgJ2FjdGl2YXRlJywgJ3VwZGF0ZScsICdyZW1vdmUnLCAnZGVzdHJveSddO1xuXG5mdW5jdGlvbiBzYW1lVm5vZGUgKGEsIGIpIHtcbiAgcmV0dXJuIChcbiAgICBhLmtleSA9PT0gYi5rZXkgJiYgKFxuICAgICAgKFxuICAgICAgICBhLnRhZyA9PT0gYi50YWcgJiZcbiAgICAgICAgYS5pc0NvbW1lbnQgPT09IGIuaXNDb21tZW50ICYmXG4gICAgICAgIGlzRGVmKGEuZGF0YSkgPT09IGlzRGVmKGIuZGF0YSkgJiZcbiAgICAgICAgc2FtZUlucHV0VHlwZShhLCBiKVxuICAgICAgKSB8fCAoXG4gICAgICAgIGlzVHJ1ZShhLmlzQXN5bmNQbGFjZWhvbGRlcikgJiZcbiAgICAgICAgYS5hc3luY0ZhY3RvcnkgPT09IGIuYXN5bmNGYWN0b3J5ICYmXG4gICAgICAgIGlzVW5kZWYoYi5hc3luY0ZhY3RvcnkuZXJyb3IpXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmZ1bmN0aW9uIHNhbWVJbnB1dFR5cGUgKGEsIGIpIHtcbiAgaWYgKGEudGFnICE9PSAnaW5wdXQnKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGk7XG4gIHZhciB0eXBlQSA9IGlzRGVmKGkgPSBhLmRhdGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHZhciB0eXBlQiA9IGlzRGVmKGkgPSBiLmRhdGEpICYmIGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHJldHVybiB0eXBlQSA9PT0gdHlwZUIgfHwgaXNUZXh0SW5wdXRUeXBlKHR5cGVBKSAmJiBpc1RleHRJbnB1dFR5cGUodHlwZUIpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVRvT2xkSWR4IChjaGlsZHJlbiwgYmVnaW5JZHgsIGVuZElkeCkge1xuICB2YXIgaSwga2V5O1xuICB2YXIgbWFwID0ge307XG4gIGZvciAoaSA9IGJlZ2luSWR4OyBpIDw9IGVuZElkeDsgKytpKSB7XG4gICAga2V5ID0gY2hpbGRyZW5baV0ua2V5O1xuICAgIGlmIChpc0RlZihrZXkpKSB7IG1hcFtrZXldID0gaTsgfVxuICB9XG4gIHJldHVybiBtYXBcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF0Y2hGdW5jdGlvbiAoYmFja2VuZCkge1xuICB2YXIgaSwgajtcbiAgdmFyIGNicyA9IHt9O1xuXG4gIHZhciBtb2R1bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuICB2YXIgbm9kZU9wcyA9IGJhY2tlbmQubm9kZU9wcztcblxuICBmb3IgKGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyArK2kpIHtcbiAgICBjYnNbaG9va3NbaV1dID0gW107XG4gICAgZm9yIChqID0gMDsgaiA8IG1vZHVsZXMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChpc0RlZihtb2R1bGVzW2pdW2hvb2tzW2ldXSkpIHtcbiAgICAgICAgY2JzW2hvb2tzW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3NbaV1dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbXB0eU5vZGVBdCAoZWxtKSB7XG4gICAgcmV0dXJuIG5ldyBWTm9kZShub2RlT3BzLnRhZ05hbWUoZWxtKS50b0xvd2VyQ2FzZSgpLCB7fSwgW10sIHVuZGVmaW5lZCwgZWxtKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm1DYiAoY2hpbGRFbG0sIGxpc3RlbmVycykge1xuICAgIGZ1bmN0aW9uIHJlbW92ZSAoKSB7XG4gICAgICBpZiAoLS1yZW1vdmUubGlzdGVuZXJzID09PSAwKSB7XG4gICAgICAgIHJlbW92ZU5vZGUoY2hpbGRFbG0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZW1vdmUubGlzdGVuZXJzID0gbGlzdGVuZXJzO1xuICAgIHJldHVybiByZW1vdmVcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZU5vZGUgKGVsKSB7XG4gICAgdmFyIHBhcmVudCA9IG5vZGVPcHMucGFyZW50Tm9kZShlbCk7XG4gICAgLy8gZWxlbWVudCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBkdWUgdG8gdi1odG1sIC8gdi10ZXh0XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIG5vZGVPcHMucmVtb3ZlQ2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGluUHJlID0gMDtcbiAgZnVuY3Rpb24gY3JlYXRlRWxtICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSwgbmVzdGVkKSB7XG4gICAgdm5vZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDsgLy8gZm9yIHRyYW5zaXRpb24gZW50ZXIgY2hlY2tcbiAgICBpZiAoY3JlYXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgICAgaW5QcmUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWluUHJlICYmXG4gICAgICAgICAgIXZub2RlLm5zICYmXG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmXG4gICAgICAgICAgICBjb25maWcuaWdub3JlZEVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGlnbm9yZSkge1xuICAgICAgICAgICAgICByZXR1cm4gaXNSZWdFeHAoaWdub3JlKVxuICAgICAgICAgICAgICAgID8gaWdub3JlLnRlc3QodGFnKVxuICAgICAgICAgICAgICAgIDogaWdub3JlID09PSB0YWdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgIGNvbmZpZy5pc1Vua25vd25FbGVtZW50KHRhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdVbmtub3duIGN1c3RvbSBlbGVtZW50OiA8JyArIHRhZyArICc+IC0gZGlkIHlvdSAnICtcbiAgICAgICAgICAgICdyZWdpc3RlciB0aGUgY29tcG9uZW50IGNvcnJlY3RseT8gRm9yIHJlY3Vyc2l2ZSBjb21wb25lbnRzLCAnICtcbiAgICAgICAgICAgICdtYWtlIHN1cmUgdG8gcHJvdmlkZSB0aGUgXCJuYW1lXCIgb3B0aW9uLicsXG4gICAgICAgICAgICB2bm9kZS5jb250ZXh0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdm5vZGUuZWxtID0gdm5vZGUubnNcbiAgICAgICAgPyBub2RlT3BzLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5ucywgdGFnKVxuICAgICAgICA6IG5vZGVPcHMuY3JlYXRlRWxlbWVudCh0YWcsIHZub2RlKTtcbiAgICAgIHNldFNjb3BlKHZub2RlKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICB7XG4gICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgIGluUHJlLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RydWUodm5vZGUuaXNDb21tZW50KSkge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVDb21tZW50KHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuICAgICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICB2YXIgaXNSZWFjdGl2YXRlZCA9IGlzRGVmKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSAmJiBpLmtlZXBBbGl2ZTtcbiAgICAgIGlmIChpc0RlZihpID0gaS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkge1xuICAgICAgICBpKHZub2RlLCBmYWxzZSAvKiBoeWRyYXRpbmcgKi8sIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgIH1cbiAgICAgIC8vIGFmdGVyIGNhbGxpbmcgdGhlIGluaXQgaG9vaywgaWYgdGhlIHZub2RlIGlzIGEgY2hpbGQgY29tcG9uZW50XG4gICAgICAvLyBpdCBzaG91bGQndmUgY3JlYXRlZCBhIGNoaWxkIGluc3RhbmNlIGFuZCBtb3VudGVkIGl0LiB0aGUgY2hpbGRcbiAgICAgIC8vIGNvbXBvbmVudCBhbHNvIGhhcyBzZXQgdGhlIHBsYWNlaG9sZGVyIHZub2RlJ3MgZWxtLlxuICAgICAgLy8gaW4gdGhhdCBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgZWxlbWVudCBhbmQgYmUgZG9uZS5cbiAgICAgIGlmIChpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgaWYgKGlzVHJ1ZShpc1JlYWN0aXZhdGVkKSkge1xuICAgICAgICAgIHJlYWN0aXZhdGVDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdENvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaC5hcHBseShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCk7XG4gICAgICB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQgPSBudWxsO1xuICAgIH1cbiAgICB2bm9kZS5lbG0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kZWw7XG4gICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVtcHR5IGNvbXBvbmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxhdGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgICAgLy8gbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFjdGl2YXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpO1xuICAgIC8vIGhhY2sgZm9yICM0MzM5OiBhIHJlYWN0aXZhdGVkIGNvbXBvbmVudCB3aXRoIGlubmVyIHRyYW5zaXRpb25cbiAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGJlY2F1c2UgdGhlIGlubmVyIG5vZGUncyBjcmVhdGVkIGhvb2tzIGFyZSBub3QgY2FsbGVkXG4gICAgLy8gYWdhaW4uIEl0J3Mgbm90IGlkZWFsIHRvIGludm9sdmUgbW9kdWxlLXNwZWNpZmljIGxvZ2ljIGluIGhlcmUgYnV0XG4gICAgLy8gdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgYmV0dGVyIHdheSB0byBkbyBpdC5cbiAgICB2YXIgaW5uZXJOb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgaW5uZXJOb2RlID0gaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChpc0RlZihpID0gaW5uZXJOb2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnRyYW5zaXRpb24pKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuYWN0aXZhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjYnMuYWN0aXZhdGVbaV0oZW1wdHlOb2RlLCBpbm5lck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKGlubmVyTm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVubGlrZSBhIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LFxuICAgIC8vIGEgcmVhY3RpdmF0ZWQga2VlcC1hbGl2ZSBjb21wb25lbnQgZG9lc24ndCBpbnNlcnQgaXRzZWxmXG4gICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zZXJ0IChwYXJlbnQsIGVsbSwgcmVmJCQxKSB7XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIGlmIChpc0RlZihyZWYkJDEpKSB7XG4gICAgICAgIGlmIChyZWYkJDEucGFyZW50Tm9kZSA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50LCBlbG0sIHJlZiQkMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQocGFyZW50LCBlbG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICBjcmVhdGVFbG0oY2hpbGRyZW5baV0sIGluc2VydGVkVm5vZGVRdWV1ZSwgdm5vZGUuZWxtLCBudWxsLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG4gICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHZub2RlLmVsbSwgbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNQYXRjaGFibGUgKHZub2RlKSB7XG4gICAgd2hpbGUgKHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGVmKHZub2RlLnRhZylcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUNyZWF0ZUhvb2tzICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSQxKSB7XG4gICAgICBjYnMuY3JlYXRlW2kkMV0oZW1wdHlOb2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGkgPSB2bm9kZS5kYXRhLmhvb2s7IC8vIFJldXNlIHZhcmlhYmxlXG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICBpZiAoaXNEZWYoaS5jcmVhdGUpKSB7IGkuY3JlYXRlKGVtcHR5Tm9kZSwgdm5vZGUpOyB9XG4gICAgICBpZiAoaXNEZWYoaS5pbnNlcnQpKSB7IGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBzY29wZSBpZCBhdHRyaWJ1dGUgZm9yIHNjb3BlZCBDU1MuXG4gIC8vIHRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzcGVjaWFsIGNhc2UgdG8gYXZvaWQgdGhlIG92ZXJoZWFkXG4gIC8vIG9mIGdvaW5nIHRocm91Z2ggdGhlIG5vcm1hbCBhdHRyaWJ1dGUgcGF0Y2hpbmcgcHJvY2Vzcy5cbiAgZnVuY3Rpb24gc2V0U2NvcGUgKHZub2RlKSB7XG4gICAgdmFyIGk7XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5mdW5jdGlvbmFsU2NvcGVJZCkpIHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZTtcbiAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICBpZiAoaXNEZWYoaSA9IGFuY2VzdG9yLmNvbnRleHQpICYmIGlzRGVmKGkgPSBpLiRvcHRpb25zLl9zY29wZUlkKSkge1xuICAgICAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBmb3Igc2xvdCBjb250ZW50IHRoZXkgc2hvdWxkIGFsc28gZ2V0IHRoZSBzY29wZUlkIGZyb20gdGhlIGhvc3QgaW5zdGFuY2UuXG4gICAgaWYgKGlzRGVmKGkgPSBhY3RpdmVJbnN0YW5jZSkgJiZcbiAgICAgIGkgIT09IHZub2RlLmNvbnRleHQgJiZcbiAgICAgIGkgIT09IHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xuICAgIHZhciBpLCBqO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5kZXN0cm95KSkgeyBpKHZub2RlKTsgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNicy5kZXN0cm95W2ldKHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGludm9rZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgdmFyIGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAgIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcbiAgICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGNoKTtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhjaCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuICAgICAgICAgIHJlbW92ZU5vZGUoY2guZWxtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBybSkge1xuICAgIGlmIChpc0RlZihybSkgfHwgaXNEZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmIChpc0RlZihybSkpIHtcbiAgICAgICAgLy8gd2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNrXG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcbiAgICAgICAgcm0ubGlzdGVuZXJzICs9IGxpc3RlbmVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5IHJlbW92aW5nXG4gICAgICAgIHJtID0gY3JlYXRlUm1DYih2bm9kZS5lbG0sIGxpc3RlbmVycyk7XG4gICAgICB9XG4gICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJvb3Qgbm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaXNEZWYoaSA9IGkuX3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5yZW1vdmUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnJlbW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlTm9kZSh2bm9kZS5lbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgdmFyIG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZhciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0gb2xkQ2hbMF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAgdmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwgdm5vZGVUb01vdmUsIHJlZkVsbTtcblxuICAgIC8vIHJlbW92ZU9ubHkgaXMgYSBzcGVjaWFsIGZsYWcgdXNlZCBvbmx5IGJ5IDx0cmFuc2l0aW9uLWdyb3VwPlxuICAgIC8vIHRvIGVuc3VyZSByZW1vdmVkIGVsZW1lbnRzIHN0YXkgaW4gY29ycmVjdCByZWxhdGl2ZSBwb3NpdGlvbnNcbiAgICAvLyBkdXJpbmcgbGVhdmluZyB0cmFuc2l0aW9uc1xuICAgIHZhciBjYW5Nb3ZlID0gIXJlbW92ZU9ubHk7XG5cbiAgICB3aGlsZSAob2xkU3RhcnRJZHggPD0gb2xkRW5kSWR4ICYmIG5ld1N0YXJ0SWR4IDw9IG5ld0VuZElkeCkge1xuICAgICAgaWYgKGlzVW5kZWYob2xkU3RhcnRWbm9kZSkpIHtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdOyAvLyBWbm9kZSBoYXMgYmVlbiBtb3ZlZCBsZWZ0XG4gICAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkRW5kVm5vZGUpKSB7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCByaWdodFxuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkRW5kVm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNVbmRlZihvbGRLZXlUb0lkeCkpIHsgb2xkS2V5VG9JZHggPSBjcmVhdGVLZXlUb09sZElkeChvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVuZElkeCk7IH1cbiAgICAgICAgaWR4SW5PbGQgPSBpc0RlZihuZXdTdGFydFZub2RlLmtleSlcbiAgICAgICAgICA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XVxuICAgICAgICAgIDogZmluZElkeEluT2xkKG5ld1N0YXJ0Vm5vZGUsIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdm5vZGVUb01vdmUgPSBvbGRDaFtpZHhJbk9sZF07XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZub2RlVG9Nb3ZlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAnSXQgc2VlbXMgdGhlcmUgYXJlIGR1cGxpY2F0ZSBrZXlzIHRoYXQgaXMgY2F1c2luZyBhbiB1cGRhdGUgZXJyb3IuICcgK1xuICAgICAgICAgICAgICAnTWFrZSBzdXJlIGVhY2ggdi1mb3IgaXRlbSBoYXMgYSB1bmlxdWUga2V5LidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzYW1lVm5vZGUodm5vZGVUb01vdmUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgICAgICBwYXRjaFZub2RlKHZub2RlVG9Nb3ZlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIHZub2RlVG9Nb3ZlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmRJZHhJbk9sZCAobm9kZSwgb2xkQ2gsIHN0YXJ0LCBlbmQpIHtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdmFyIGMgPSBvbGRDaFtpXTtcbiAgICAgIGlmIChpc0RlZihjKSAmJiBzYW1lVm5vZGUobm9kZSwgYykpIHsgcmV0dXJuIGkgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGVsbSA9IHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcblxuICAgIGlmIChpc1RydWUob2xkVm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyKSkge1xuICAgICAgaWYgKGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgaHlkcmF0ZShvbGRWbm9kZS5lbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAvLyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBpZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5lZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5rZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwgaXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGk7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wcmVwYXRjaCkpIHtcbiAgICAgIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgb2xkQ2ggPSBvbGRWbm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51cGRhdGUpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2bm9kZS50ZXh0KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKG9sZENoICE9PSBjaCkgeyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNoLmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRjaCkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlSW5zZXJ0SG9vayAodm5vZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5zZXJ0IGhvb2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhlXG4gICAgLy8gZWxlbWVudCBpcyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRpYWwpICYmIGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQgPSBxdWV1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5zZXJ0KHF1ZXVlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYmFpbGVkID0gZmFsc2U7XG4gIC8vIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmluZyBoeWRyYXRpb24gYmVjYXVzZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBjbGllbnQgb3IgaGFzIG5vIG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIHZhciBpc1JlbmRlcmVkTW9kdWxlID0gbWFrZU1hcCgnYXR0cnMsc3R5bGUsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Jyk7XG5cbiAgLy8gTm90ZTogdGhpcyBpcyBhIGJyb3dzZXItb25seSBmdW5jdGlvbiBzbyB3ZSBjYW4gYXNzdW1lIGVsbXMgYXJlIERPTSBub2Rlcy5cbiAgZnVuY3Rpb24gaHlkcmF0ZSAoZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpICYmIGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeSkpIHtcbiAgICAgIHZub2RlLmVsbSA9IGVsbTtcbiAgICAgIHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFhc3NlcnROb2RlTWF0Y2goZWxtLCB2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IGVsbTtcbiAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBpKHZub2RlLCB0cnVlIC8qIGh5ZHJhdGluZyAqLyk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIC8vIGNoaWxkIGNvbXBvbmVudC4gaXQgc2hvdWxkIGhhdmUgaHlkcmF0ZWQgaXRzIG93biB0cmVlLlxuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAgaWYgKGlzRGVmKGNoaWxkcmVuKSkge1xuICAgICAgICAvLyBlbXB0eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBhbmQgcG9wdWxhdGUgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFlbG0uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHYtaHRtbCBhbmQgZG9tUHJvcHM6IGlubmVySFRNTFxuICAgICAgICAgIGlmIChpc0RlZihpID0gZGF0YSkgJiYgaXNEZWYoaSA9IGkuZG9tUHJvcHMpICYmIGlzRGVmKGkgPSBpLmlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIGlmIChpICE9PSBlbG0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICFiYWlsZWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BhcmVudDogJywgZWxtKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ3NlcnZlciBpbm5lckhUTUw6ICcsIGkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignY2xpZW50IGlubmVySFRNTDogJywgZWxtLmlubmVySFRNTCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgYW5kIGNvbXBhcmUgY2hpbGRyZW4gbGlzdHNcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUgfHwgIWh5ZHJhdGUoY2hpbGROb2RlLCBjaGlsZHJlbltpJDFdLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgY2hpbGROb2RlIGlzIG5vdCBudWxsLCBpdCBtZWFucyB0aGUgYWN0dWFsIGNoaWxkTm9kZXMgbGlzdCBpc1xuICAgICAgICAgICAgLy8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4gbGlzdC5cbiAgICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRjaCB8fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgIWJhaWxlZFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBiYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWlzbWF0Y2hpbmcgY2hpbGROb2RlcyB2cy4gVk5vZGVzOiAnLCBlbG0uY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUuaXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQgdmlydHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3NlcnZlci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcgK1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBibG9jay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3IgbWlzc2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAgICAgICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNlcnZlci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlOb2RlQXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2luZyBleGlzdGluZyBlbGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICAgIHZhciBwYXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuICAgICAgICBjcmVhdGVFbG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBvbGQgZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5IGhhcHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1hbGl2ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDogcGFyZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAvLyBjb21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAgICAgICAgIC8vIHVwZGF0ZSBwYXJlbnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB2YXIgcGF0Y2hhYmxlID0gaXNQYXRjaGFibGUodm5vZGUpO1xuICAgICAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICBjYnMuZGVzdHJveVtpXShhbmNlc3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07XG4gICAgICAgICAgICBpZiAocGF0Y2hhYmxlKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgICAgICAgICAgIGNicy5jcmVhdGVbaSQxXShlbXB0eU5vZGUsIGFuY2VzdG9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyAjNjUxM1xuICAgICAgICAgICAgICAvLyBpbnZva2UgaW5zZXJ0IGhvb2tzIHRoYXQgbWF5IGhhdmUgYmVlbiBtZXJnZWQgYnkgY3JlYXRlIGhvb2tzLlxuICAgICAgICAgICAgICAvLyBlLmcuIGZvciBkaXJlY3RpdmVzIHRoYXQgdXNlcyB0aGUgXCJpbnNlcnRlZFwiIGhvb2suXG4gICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBhbmNlc3Rvci5kYXRhLmhvb2suaW5zZXJ0O1xuICAgICAgICAgICAgICBpZiAoaW5zZXJ0Lm1lcmdlZCkge1xuICAgICAgICAgICAgICAgIC8vIHN0YXJ0IGF0IGluZGV4IDEgdG8gYXZvaWQgcmUtaW52b2tpbmcgY29tcG9uZW50IG1vdW50ZWQgaG9va1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkkMiA9IDE7IGkkMiA8IGluc2VydC5mbnMubGVuZ3RoOyBpJDIrKykge1xuICAgICAgICAgICAgICAgICAgaW5zZXJ0LmZuc1tpJDJdKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWdpc3RlclJlZihhbmNlc3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocGFyZW50RWxtJDEpKSB7XG4gICAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSQxLCBbb2xkVm5vZGVdLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpc0luaXRpYWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICB1cGRhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmluZERpcmVjdGl2ZXMgKHZub2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlOb2RlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgfHwgdm5vZGUuZGF0YS5kaXJlY3RpdmVzKSB7XG4gICAgX3VwZGF0ZShvbGRWbm9kZSwgdm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF91cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgaXNEZXN0cm95ID0gdm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIG9sZERpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzLCBvbGRWbm9kZS5jb250ZXh0KTtcbiAgdmFyIG5ld0RpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEodm5vZGUuZGF0YS5kaXJlY3RpdmVzLCB2bm9kZS5jb250ZXh0KTtcblxuICB2YXIgZGlyc1dpdGhJbnNlcnQgPSBbXTtcbiAgdmFyIGRpcnNXaXRoUG9zdHBhdGNoID0gW107XG5cbiAgdmFyIGtleSwgb2xkRGlyLCBkaXI7XG4gIGZvciAoa2V5IGluIG5ld0RpcnMpIHtcbiAgICBvbGREaXIgPSBvbGREaXJzW2tleV07XG4gICAgZGlyID0gbmV3RGlyc1trZXldO1xuICAgIGlmICghb2xkRGlyKSB7XG4gICAgICAvLyBuZXcgZGlyZWN0aXZlLCBiaW5kXG4gICAgICBjYWxsSG9vayQxKGRpciwgJ2JpbmQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5pbnNlcnRlZCkge1xuICAgICAgICBkaXJzV2l0aEluc2VydC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIGRpcmVjdGl2ZSwgdXBkYXRlXG4gICAgICBkaXIub2xkVmFsdWUgPSBvbGREaXIudmFsdWU7XG4gICAgICBjYWxsSG9vayQxKGRpciwgJ3VwZGF0ZScsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmNvbXBvbmVudFVwZGF0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhQb3N0cGF0Y2gucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aEluc2VydC5sZW5ndGgpIHtcbiAgICB2YXIgY2FsbEluc2VydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhJbnNlcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aEluc2VydFtpXSwgJ2luc2VydGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChpc0NyZWF0ZSkge1xuICAgICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBjYWxsSW5zZXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbEluc2VydCgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGgpIHtcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ3Bvc3RwYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aFBvc3RwYXRjaFtpXSwgJ2NvbXBvbmVudFVwZGF0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFpc0NyZWF0ZSkge1xuICAgIGZvciAoa2V5IGluIG9sZERpcnMpIHtcbiAgICAgIGlmICghbmV3RGlyc1trZXldKSB7XG4gICAgICAgIC8vIG5vIGxvbmdlciBwcmVzZW50LCB1bmJpbmRcbiAgICAgICAgY2FsbEhvb2skMShvbGREaXJzW2tleV0sICd1bmJpbmQnLCBvbGRWbm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBlbXB0eU1vZGlmaWVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSAoXG4gIGRpcnMsXG4gIHZtXG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmICghZGlycykge1xuICAgIHJldHVybiByZXNcbiAgfVxuICB2YXIgaSwgZGlyO1xuICBmb3IgKGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgaWYgKCFkaXIubW9kaWZpZXJzKSB7XG4gICAgICBkaXIubW9kaWZpZXJzID0gZW1wdHlNb2RpZmllcnM7XG4gICAgfVxuICAgIHJlc1tnZXRSYXdEaXJOYW1lKGRpcildID0gZGlyO1xuICAgIGRpci5kZWYgPSByZXNvbHZlQXNzZXQodm0uJG9wdGlvbnMsICdkaXJlY3RpdmVzJywgZGlyLm5hbWUsIHRydWUpO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2V0UmF3RGlyTmFtZSAoZGlyKSB7XG4gIHJldHVybiBkaXIucmF3TmFtZSB8fCAoKGRpci5uYW1lKSArIFwiLlwiICsgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMgfHwge30pLmpvaW4oJy4nKSkpXG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rJDEgKGRpciwgaG9vaywgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpIHtcbiAgdmFyIGZuID0gZGlyLmRlZiAmJiBkaXIuZGVmW2hvb2tdO1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgZm4odm5vZGUuZWxtLCBkaXIsIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bm9kZS5jb250ZXh0LCAoXCJkaXJlY3RpdmUgXCIgKyAoZGlyLm5hbWUpICsgXCIgXCIgKyBob29rICsgXCIgaG9va1wiKSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBiYXNlTW9kdWxlcyA9IFtcbiAgcmVmLFxuICBkaXJlY3RpdmVzXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgb3B0cyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChpc0RlZihvcHRzKSAmJiBvcHRzLkN0b3Iub3B0aW9ucy5pbmhlcml0QXR0cnMgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRycykgJiYgaXNVbmRlZih2bm9kZS5kYXRhLmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBrZXksIGN1ciwgb2xkO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMgPSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBlIGNhbiByZXNldCB2YWx1ZSBmb3IgaW5wdXRbdHlwZT1yYWRpb11cbiAgLy8gIzY2NjY6IElFL0VkZ2UgZm9yY2VzIHByb2dyZXNzIHZhbHVlIGRvd24gdG8gMSBiZWZvcmUgc2V0dGluZyBhIG1heFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKChpc0lFOSB8fCBpc0VkZ2UpICYmIGF0dHJzLnZhbHVlICE9PSBvbGRBdHRycy52YWx1ZSkge1xuICAgIHNldEF0dHIoZWxtLCAndmFsdWUnLCBhdHRycy52YWx1ZSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gb2xkQXR0cnMpIHtcbiAgICBpZiAoaXNVbmRlZihhdHRyc1trZXldKSkge1xuICAgICAgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xuICAgICAgfSBlbHNlIGlmICghaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0QXR0ciAoZWwsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xuICAgIC8vIHNldCBhdHRyaWJ1dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5nLiA8b3B0aW9uIGRpc2FibGVkPlNlbGVjdCBvbmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0ZWNobmljYWxseSBhbGxvd2Z1bGxzY3JlZW4gaXMgYSBib29sZWFuIGF0dHJpYnV0ZSBmb3IgPGlmcmFtZT4sXG4gICAgICAvLyBidXQgRmxhc2ggZXhwZWN0cyBhIHZhbHVlIG9mIFwidHJ1ZVwiIHdoZW4gdXNlZCBvbiA8ZW1iZWQ+IHRhZ1xuICAgICAgdmFsdWUgPSBrZXkgPT09ICdhbGxvd2Z1bGxzY3JlZW4nICYmIGVsLnRhZ05hbWUgPT09ICdFTUJFRCdcbiAgICAgICAgPyAndHJ1ZSdcbiAgICAgICAgOiBrZXk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpIHx8IHZhbHVlID09PSAnZmFsc2UnID8gJ2ZhbHNlJyA6ICd0cnVlJyk7XG4gIH0gZWxzZSBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAgaWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICBpc1VuZGVmKGRhdGEuY2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xkRGF0YSkgfHwgKFxuICAgICAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5jbGFzcylcbiAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNscyA9IGdlbkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8vIGhhbmRsZSB0cmFuc2l0aW9uIGNsYXNzZXNcbiAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3NlcztcbiAgaWYgKGlzRGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYgKGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vKiAgKi9cblxudmFyIHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxdXS87XG5cbmZ1bmN0aW9uIHBhcnNlRmlsdGVycyAoZXhwKSB7XG4gIHZhciBpblNpbmdsZSA9IGZhbHNlO1xuICB2YXIgaW5Eb3VibGUgPSBmYWxzZTtcbiAgdmFyIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcbiAgdmFyIGluUmVnZXggPSBmYWxzZTtcbiAgdmFyIGN1cmx5ID0gMDtcbiAgdmFyIHNxdWFyZSA9IDA7XG4gIHZhciBwYXJlbiA9IDA7XG4gIHZhciBsYXN0RmlsdGVySW5kZXggPSAwO1xuICB2YXIgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycztcblxuICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldiA9IGM7XG4gICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpblNpbmdsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1QykgeyBpblNpbmdsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpbkRvdWJsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1QykgeyBpbkRvdWJsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XG4gICAgICBpZiAoYyA9PT0gMHg2MCAmJiBwcmV2ICE9PSAweDVDKSB7IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5SZWdleCkge1xuICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1QykgeyBpblJlZ2V4ID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYyA9PT0gMHg3QyAmJiAvLyBwaXBlXG4gICAgICBleHAuY2hhckNvZGVBdChpICsgMSkgIT09IDB4N0MgJiZcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gMHg3QyAmJlxuICAgICAgIWN1cmx5ICYmICFzcXVhcmUgJiYgIXBhcmVuXG4gICAgKSB7XG4gICAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4gICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVzaEZpbHRlcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAweDIyOiBpbkRvdWJsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gXCJcbiAgICAgICAgY2FzZSAweDI3OiBpblNpbmdsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gJ1xuICAgICAgICBjYXNlIDB4NjA6IGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlOyBicmVhayAvLyBgXG4gICAgICAgIGNhc2UgMHgyODogcGFyZW4rKzsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIChcbiAgICAgICAgY2FzZSAweDI5OiBwYXJlbi0tOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKVxuICAgICAgICBjYXNlIDB4NUI6IHNxdWFyZSsrOyBicmVhayAgICAgICAgICAgICAgICAvLyBbXG4gICAgICAgIGNhc2UgMHg1RDogc3F1YXJlLS07IGJyZWFrICAgICAgICAgICAgICAgIC8vIF1cbiAgICAgICAgY2FzZSAweDdCOiBjdXJseSsrOyBicmVhayAgICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICBjYXNlIDB4N0Q6IGN1cmx5LS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICBpZiAoYyA9PT0gMHgyZikgeyAvLyAvXG4gICAgICAgIHZhciBqID0gaSAtIDE7XG4gICAgICAgIHZhciBwID0gKHZvaWQgMCk7XG4gICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFyXG4gICAgICAgIGZvciAoOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIHAgPSBleHAuY2hhckF0KGopO1xuICAgICAgICAgIGlmIChwICE9PSAnICcpIHsgYnJlYWsgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XG4gICAgICAgICAgaW5SZWdleCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gIH0gZWxzZSBpZiAobGFzdEZpbHRlckluZGV4ICE9PSAwKSB7XG4gICAgcHVzaEZpbHRlcigpO1xuICB9XG5cbiAgZnVuY3Rpb24gcHVzaEZpbHRlciAoKSB7XG4gICAgKGZpbHRlcnMgfHwgKGZpbHRlcnMgPSBbXSkpLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwgaSkudHJpbSgpKTtcbiAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGV4cHJlc3Npb24gPSB3cmFwRmlsdGVyKGV4cHJlc3Npb24sIGZpbHRlcnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9uXG59XG5cbmZ1bmN0aW9uIHdyYXBGaWx0ZXIgKGV4cCwgZmlsdGVyKSB7XG4gIHZhciBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgLy8gX2Y6IHJlc29sdmVGaWx0ZXJcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgZmlsdGVyICsgXCJcXFwiKShcIiArIGV4cCArIFwiKVwiKVxuICB9IGVsc2Uge1xuICAgIHZhciBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xuICAgIHZhciBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgbmFtZSArIFwiXFxcIikoXCIgKyBleHAgKyBcIixcIiArIGFyZ3MpXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJhc2VXYXJuIChtc2cpIHtcbiAgY29uc29sZS5lcnJvcigoXCJbVnVlIGNvbXBpbGVyXTogXCIgKyBtc2cpKTtcbn1cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG4gIG1vZHVsZXMsXG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1bGVzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLnByb3BzIHx8IChlbC5wcm9wcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQXR0ciAoZWwsIG5hbWUsIHZhbHVlKSB7XG4gIChlbC5hdHRycyB8fCAoZWwuYXR0cnMgPSBbXSkpLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZERpcmVjdGl2ZSAoXG4gIGVsLFxuICBuYW1lLFxuICByYXdOYW1lLFxuICB2YWx1ZSxcbiAgYXJnLFxuICBtb2RpZmllcnNcbikge1xuICAoZWwuZGlyZWN0aXZlcyB8fCAoZWwuZGlyZWN0aXZlcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHJhd05hbWU6IHJhd05hbWUsIHZhbHVlOiB2YWx1ZSwgYXJnOiBhcmcsIG1vZGlmaWVyczogbW9kaWZpZXJzIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2FyblxuKSB7XG4gIC8vIHdhcm4gcHJldmVudCBhbmQgcGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiAmJlxuICAgIG1vZGlmaWVycyAmJiBtb2RpZmllcnMucHJldmVudCAmJiBtb2RpZmllcnMucGFzc2l2ZVxuICApIHtcbiAgICB3YXJuKFxuICAgICAgJ3Bhc3NpdmUgYW5kIHByZXZlbnQgY2FuXFwndCBiZSB1c2VkIHRvZ2V0aGVyLiAnICtcbiAgICAgICdQYXNzaXZlIGhhbmRsZXIgY2FuXFwndCBwcmV2ZW50IGRlZmF1bHQgZXZlbnQuJ1xuICAgICk7XG4gIH1cbiAgLy8gY2hlY2sgY2FwdHVyZSBtb2RpZmllclxuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5jYXB0dXJlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5jYXB0dXJlO1xuICAgIG5hbWUgPSAnIScgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBjYXB0dXJlZFxuICB9XG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm9uY2UpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm9uY2U7XG4gICAgbmFtZSA9ICd+JyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIG9uY2VcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMucGFzc2l2ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMucGFzc2l2ZTtcbiAgICBuYW1lID0gJyYnICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgcGFzc2l2ZVxuICB9XG4gIHZhciBldmVudHM7XG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm5hdGl2ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMubmF0aXZlO1xuICAgIGV2ZW50cyA9IGVsLm5hdGl2ZUV2ZW50cyB8fCAoZWwubmF0aXZlRXZlbnRzID0ge30pO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50cyA9IGVsLmV2ZW50cyB8fCAoZWwuZXZlbnRzID0ge30pO1xuICB9XG4gIHZhciBuZXdIYW5kbGVyID0geyB2YWx1ZTogdmFsdWUsIG1vZGlmaWVyczogbW9kaWZpZXJzIH07XG4gIHZhciBoYW5kbGVycyA9IGV2ZW50c1tuYW1lXTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXJzKSkge1xuICAgIGltcG9ydGFudCA/IGhhbmRsZXJzLnVuc2hpZnQobmV3SGFuZGxlcikgOiBoYW5kbGVycy5wdXNoKG5ld0hhbmRsZXIpO1xuICB9IGVsc2UgaWYgKGhhbmRsZXJzKSB7XG4gICAgZXZlbnRzW25hbWVdID0gaW1wb3J0YW50ID8gW25ld0hhbmRsZXIsIGhhbmRsZXJzXSA6IFtoYW5kbGVycywgbmV3SGFuZGxlcl07XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzW25hbWVdID0gbmV3SGFuZGxlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICBnZXRTdGF0aWNcbikge1xuICB2YXIgZHluYW1pY1ZhbHVlID1cbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnOicgKyBuYW1lKSB8fFxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWJpbmQ6JyArIG5hbWUpO1xuICBpZiAoZHluYW1pY1ZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gcGFyc2VGaWx0ZXJzKGR5bmFtaWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChnZXRTdGF0aWMgIT09IGZhbHNlKSB7XG4gICAgdmFyIHN0YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7XG4gICAgaWYgKHN0YXRpY1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzdGF0aWNWYWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLy8gbm90ZTogdGhpcyBvbmx5IHJlbW92ZXMgdGhlIGF0dHIgZnJvbSB0aGUgQXJyYXkgKGF0dHJzTGlzdCkgc28gdGhhdCBpdFxuLy8gZG9lc24ndCBnZXQgcHJvY2Vzc2VkIGJ5IHByb2Nlc3NBdHRycy5cbi8vIEJ5IGRlZmF1bHQgaXQgZG9lcyBOT1QgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcCAoYXR0cnNNYXApIGJlY2F1c2UgdGhlIG1hcCBpc1xuLy8gbmVlZGVkIGR1cmluZyBjb2RlZ2VuLlxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICByZW1vdmVGcm9tTWFwXG4pIHtcbiAgdmFyIHZhbDtcbiAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtuYW1lXSkgIT0gbnVsbCkge1xuICAgIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChsaXN0W2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChyZW1vdmVGcm9tTWFwKSB7XG4gICAgZGVsZXRlIGVsLmF0dHJzTWFwW25hbWVdO1xuICB9XG4gIHJldHVybiB2YWxcbn1cblxuLyogICovXG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZSBnZW5lcmF0aW9uIGZvciBjb21wb25lbnQgdi1tb2RlbFxuICovXG5mdW5jdGlvbiBnZW5Db21wb25lbnRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG5cbiAgdmFyIGJhc2VWYWx1ZUV4cHJlc3Npb24gPSAnJCR2JztcbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9IGJhc2VWYWx1ZUV4cHJlc3Npb247XG4gIGlmICh0cmltKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID1cbiAgICAgIFwiKHR5cGVvZiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIiA9PT0gJ3N0cmluZydcIiArXG4gICAgICAgIFwiPyBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIi50cmltKClcIiArXG4gICAgICAgIFwiOiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIHZhciBhc3NpZ25tZW50ID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG5cbiAgZWwubW9kZWwgPSB7XG4gICAgdmFsdWU6IChcIihcIiArIHZhbHVlICsgXCIpXCIpLFxuICAgIGV4cHJlc3Npb246IChcIlxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLFxuICAgIGNhbGxiYWNrOiAoXCJmdW5jdGlvbiAoXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIpIHtcIiArIGFzc2lnbm1lbnQgKyBcIn1cIilcbiAgfTtcbn1cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlZ2VuIGhlbHBlciBmb3IgZ2VuZXJhdGluZyB2LW1vZGVsIHZhbHVlIGFzc2lnbm1lbnQgY29kZS5cbiAqL1xuZnVuY3Rpb24gZ2VuQXNzaWdubWVudENvZGUgKFxuICB2YWx1ZSxcbiAgYXNzaWdubWVudFxuKSB7XG4gIHZhciByZXMgPSBwYXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYgKHJlcy5rZXkgPT09IG51bGwpIHtcbiAgICByZXR1cm4gKHZhbHVlICsgXCI9XCIgKyBhc3NpZ25tZW50KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCIkc2V0KFwiICsgKHJlcy5leHApICsgXCIsIFwiICsgKHJlcy5rZXkpICsgXCIsIFwiICsgYXNzaWdubWVudCArIFwiKVwiKVxuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYSB2LW1vZGVsIGV4cHJlc3Npb24gaW50byBhIGJhc2UgcGF0aCBhbmQgYSBmaW5hbCBrZXkgc2VnbWVudC5cbiAqIEhhbmRsZXMgYm90aCBkb3QtcGF0aCBhbmQgcG9zc2libGUgc3F1YXJlIGJyYWNrZXRzLlxuICpcbiAqIFBvc3NpYmxlIGNhc2VzOlxuICpcbiAqIC0gdGVzdFxuICogLSB0ZXN0W2tleV1cbiAqIC0gdGVzdFt0ZXN0MVtrZXldXVxuICogLSB0ZXN0W1wiYVwiXVtrZXldXG4gKiAtIHh4eC50ZXN0W2FbYV0udGVzdDFba2V5XV1cbiAqIC0gdGVzdC54eHguYVtcImFzYVwiXVt0ZXN0MVtrZXldXVxuICpcbiAqL1xuXG52YXIgbGVuO1xudmFyIHN0cjtcbnZhciBjaHI7XG52YXIgaW5kZXgkMTtcbnZhciBleHByZXNzaW9uUG9zO1xudmFyIGV4cHJlc3Npb25FbmRQb3M7XG5cblxuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgbGVuID0gdmFsLmxlbmd0aDtcblxuICBpZiAodmFsLmluZGV4T2YoJ1snKSA8IDAgfHwgdmFsLmxhc3RJbmRleE9mKCddJykgPCBsZW4gLSAxKSB7XG4gICAgaW5kZXgkMSA9IHZhbC5sYXN0SW5kZXhPZignLicpO1xuICAgIGlmIChpbmRleCQxID4gLTEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4cDogdmFsLnNsaWNlKDAsIGluZGV4JDEpLFxuICAgICAgICBrZXk6ICdcIicgKyB2YWwuc2xpY2UoaW5kZXgkMSArIDEpICsgJ1wiJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBleHA6IHZhbCxcbiAgICAgICAga2V5OiBudWxsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RyID0gdmFsO1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0gMHg1Qikge1xuICAgICAgcGFyc2VCcmFja2V0KGNocik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHA6IHZhbC5zbGljZSgwLCBleHByZXNzaW9uUG9zKSxcbiAgICBrZXk6IHZhbC5zbGljZShleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGlucHV0cyB3aXRoIHR5cGU9XCJmaWxlXCIgYXJlIHJlYWQgb25seSBhbmQgc2V0dGluZyB0aGUgaW5wdXQnc1xuICAgIC8vIHZhbHVlIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnZmlsZScpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCIgdHlwZT1cXFwiZmlsZVxcXCI+OlxcblwiICtcbiAgICAgICAgXCJGaWxlIGlucHV0cyBhcmUgcmVhZCBvbmx5LiBVc2UgYSB2LW9uOmNoYW5nZSBsaXN0ZW5lciBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICBnZW5Db21wb25lbnRNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gICAgLy8gY29tcG9uZW50IHYtbW9kZWwgZG9lc24ndCBuZWVkIGV4dHJhIHJ1bnRpbWVcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgZ2VuU2VsZWN0KGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgIGdlbkNoZWNrYm94TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgZ2VuUmFkaW9Nb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJykge1xuICAgIGdlbkRlZmF1bHRNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAoIWNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICBnZW5Db21wb25lbnRNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gICAgLy8gY29tcG9uZW50IHYtbW9kZWwgZG9lc24ndCBuZWVkIGV4dHJhIHJ1bnRpbWVcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybiQxKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGVsZW1lbnQgdHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNvbnRlbnRlZGl0YWJsZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAgYSBsaWJyYXJ5IGRlZGljYXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21wb25lbnQuJ1xuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRhdGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBcIilcIiArXG4gICAgICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIik+LTFcIiArIChcbiAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAgICAgICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiArIHZhbHVlICsgXCIsXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLFxuICAgIFwidmFyICQkYT1cIiArIHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAgICAgICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIgKyBmYWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRpbmcgKyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRhLCQkdik7JyArXG4gICAgICBcImlmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9JCRhLmNvbmNhdChbJCR2XSkpfVwiICtcbiAgICAgIFwiZWxzZXskJGk+LTEmJihcIiArIHZhbHVlICsgXCI9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkpfVwiICtcbiAgICBcIn1lbHNle1wiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRjJykpICsgXCJ9XCIsXG4gICAgbnVsbCwgdHJ1ZVxuICApO1xufVxuXG5mdW5jdGlvbiBnZW5SYWRpb01vZGVsIChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciB2YWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3ZhbHVlJykgfHwgJ251bGwnO1xuICB2YWx1ZUJpbmRpbmcgPSBudW1iZXIgPyAoXCJfbihcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSA6IHZhbHVlQmluZGluZztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLCAoXCJfcShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIilcIikpO1xuICBhZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlQmluZGluZyksIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5TZWxlY3QgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAgIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHNlbGVjdGVkVmFsID0gXCJBcnJheS5wcm90b3R5cGUuZmlsdGVyXCIgK1xuICAgIFwiLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSlcIiArXG4gICAgXCIubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSBcXFwiX3ZhbHVlXFxcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO1wiICtcbiAgICBcInJldHVybiBcIiArIChudW1iZXIgPyAnX24odmFsKScgOiAndmFsJykgKyBcIn0pXCI7XG5cbiAgdmFyIGFzc2lnbm1lbnQgPSAnJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFsWzBdJztcbiAgdmFyIGNvZGUgPSBcInZhciAkJHNlbGVjdGVkVmFsID0gXCIgKyBzZWxlY3RlZFZhbCArIFwiO1wiO1xuICBjb2RlID0gY29kZSArIFwiIFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBhc3NpZ25tZW50KSk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLCBjb2RlLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2VuRGVmYXVsdE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICB2YXIgdHlwZSA9IGVsLmF0dHJzTWFwLnR5cGU7XG4gIHZhciByZWYgPSBtb2RpZmllcnMgfHwge307XG4gIHZhciBsYXp5ID0gcmVmLmxhenk7XG4gIHZhciBudW1iZXIgPSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJlZi50cmltO1xuICB2YXIgbmVlZENvbXBvc2l0aW9uR3VhcmQgPSAhbGF6eSAmJiB0eXBlICE9PSAncmFuZ2UnO1xuICB2YXIgZXZlbnQgPSBsYXp5XG4gICAgPyAnY2hhbmdlJ1xuICAgIDogdHlwZSA9PT0gJ3JhbmdlJ1xuICAgICAgPyBSQU5HRV9UT0tFTlxuICAgICAgOiAnaW5wdXQnO1xuXG4gIHZhciB2YWx1ZUV4cHJlc3Npb24gPSAnJGV2ZW50LnRhcmdldC52YWx1ZSc7XG4gIGlmICh0cmltKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4gIH1cblxuICB2YXIgY29kZSA9IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUV4cHJlc3Npb24pO1xuICBpZiAobmVlZENvbXBvc2l0aW9uR3VhcmQpIHtcbiAgICBjb2RlID0gXCJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47XCIgKyBjb2RlO1xuICB9XG5cbiAgYWRkUHJvcChlbCwgJ3ZhbHVlJywgKFwiKFwiICsgdmFsdWUgKyBcIilcIikpO1xuICBhZGRIYW5kbGVyKGVsLCBldmVudCwgY29kZSwgbnVsbCwgdHJ1ZSk7XG4gIGlmICh0cmltIHx8IG51bWJlcikge1xuICAgIGFkZEhhbmRsZXIoZWwsICdibHVyJywgJyRmb3JjZVVwZGF0ZSgpJyk7XG4gIH1cbn1cblxuLyogICovXG5cbi8vIG5vcm1hbGl6ZSB2LW1vZGVsIGV2ZW50IHRva2VucyB0aGF0IGNhbiBvbmx5IGJlIGRldGVybWluZWQgYXQgcnVudGltZS5cbi8vIGl0J3MgaW1wb3J0YW50IHRvIHBsYWNlIHRoZSBldmVudCBhcyB0aGUgZmlyc3QgaW4gdGhlIGFycmF5IGJlY2F1c2Vcbi8vIHRoZSB3aG9sZSBwb2ludCBpcyBlbnN1cmluZyB0aGUgdi1tb2RlbCBjYWxsYmFjayBnZXRzIGNhbGxlZCBiZWZvcmVcbi8vIHVzZXItYXR0YWNoZWQgaGFuZGxlcnMuXG5mdW5jdGlvbiBub3JtYWxpemVFdmVudHMgKG9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bUkFOR0VfVE9LRU5dKSkge1xuICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9ydHMgYGNoYW5nZWAgZXZlbnRcbiAgICB2YXIgZXZlbnQgPSBpc0lFID8gJ2NoYW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtdLmNvbmNhdChvbltSQU5HRV9UT0tFTl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW1JBTkdFX1RPS0VOXTtcbiAgfVxuICAvLyBUaGlzIHdhcyBvcmlnaW5hbGx5IGludGVuZGVkIHRvIGZpeCAjNDUyMSBidXQgbm8gbG9uZ2VyIG5lY2Vzc2FyeVxuICAvLyBhZnRlciAyLjUuIEtlZXBpbmcgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXQgd2l0aCBnZW5lcmF0ZWQgY29kZSBmcm9tIDwgMi40XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dKSkge1xuICAgIG9uLmNoYW5nZSA9IFtdLmNvbmNhdChvbltDSEVDS0JPWF9SQURJT19UT0tFTl0sIG9uLmNoYW5nZSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0JDE7XG5cbmZ1bmN0aW9uIGNyZWF0ZU9uY2VIYW5kbGVyIChoYW5kbGVyLCBldmVudCwgY2FwdHVyZSkge1xuICB2YXIgX3RhcmdldCA9IHRhcmdldCQxOyAvLyBzYXZlIGN1cnJlbnQgdGFyZ2V0IGVsZW1lbnQgaW4gY2xvc3VyZVxuICByZXR1cm4gZnVuY3Rpb24gb25jZUhhbmRsZXIgKCkge1xuICAgIHZhciByZXMgPSBoYW5kbGVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHJlcyAhPT0gbnVsbCkge1xuICAgICAgcmVtb3ZlJDIoZXZlbnQsIG9uY2VIYW5kbGVyLCBjYXB0dXJlLCBfdGFyZ2V0KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgb25jZSQkMSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGhhbmRsZXIgPSB3aXRoTWFjcm9UYXNrKGhhbmRsZXIpO1xuICBpZiAob25jZSQkMSkgeyBoYW5kbGVyID0gY3JlYXRlT25jZUhhbmRsZXIoaGFuZGxlciwgZXZlbnQsIGNhcHR1cmUpOyB9XG4gIHRhcmdldCQxLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnQsXG4gICAgaGFuZGxlcixcbiAgICBzdXBwb3J0c1Bhc3NpdmVcbiAgICAgID8geyBjYXB0dXJlOiBjYXB0dXJlLCBwYXNzaXZlOiBwYXNzaXZlIH1cbiAgICAgIDogY2FwdHVyZVxuICApO1xufVxuXG5mdW5jdGlvbiByZW1vdmUkMiAoXG4gIGV2ZW50LFxuICBoYW5kbGVyLFxuICBjYXB0dXJlLFxuICBfdGFyZ2V0XG4pIHtcbiAgKF90YXJnZXQgfHwgdGFyZ2V0JDEpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnQsXG4gICAgaGFuZGxlci5fd2l0aFRhc2sgfHwgaGFuZGxlcixcbiAgICBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3RlbmVycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24pICYmIGlzVW5kZWYodm5vZGUuZGF0YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB0YXJnZXQkMSA9IHZub2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0KTtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5kZWYocHJvcHNba2V5XSkpIHtcbiAgICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5vZGUgaGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRocm93IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRDb250ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRyZW4pIHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgICAvLyAjNjYwMSB3b3JrIGFyb3VuZCBDaHJvbWUgdmVyc2lvbiA8PSA1NSBidWcgd2hlcmUgc2luZ2xlIHRleHROb2RlXG4gICAgICAvLyByZXBsYWNlZCBieSBpbm5lckhUTUwvdGV4dENvbnRlbnQgcmV0YWlucyBpdHMgcGFyZW50Tm9kZSBwcm9wZXJ0eVxuICAgICAgaWYgKGVsbS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBlbG0ucmVtb3ZlQ2hpbGQoZWxtLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICd2YWx1ZScpIHtcbiAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXG4gICAgICAvLyBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkXG4gICAgICBlbG0uX3ZhbHVlID0gY3VyO1xuICAgICAgLy8gYXZvaWQgcmVzZXR0aW5nIGN1cnNvciBwb3NpdGlvbiB3aGVuIHZhbHVlIGlzIHRoZSBzYW1lXG4gICAgICB2YXIgc3RyQ3VyID0gaXNVbmRlZihjdXIpID8gJycgOiBTdHJpbmcoY3VyKTtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVWYWx1ZShlbG0sIHN0ckN1cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2hlY2sgcGxhdGZvcm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5cblxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlVmFsdWUgKGVsbSwgY2hlY2tWYWwpIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAmJiAoXG4gICAgZWxtLnRhZ05hbWUgPT09ICdPUFRJT04nIHx8XG4gICAgaXNEaXJ0eShlbG0sIGNoZWNrVmFsKSB8fFxuICAgIGlzSW5wdXRDaGFuZ2VkKGVsbSwgY2hlY2tWYWwpXG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzRGlydHkgKGVsbSwgY2hlY2tWYWwpIHtcbiAgLy8gcmV0dXJuIHRydWUgd2hlbiB0ZXh0Ym94ICgubnVtYmVyIGFuZCAudHJpbSkgbG9zZXMgZm9jdXMgYW5kIGl0cyB2YWx1ZSBpc1xuICAvLyBub3QgZXF1YWwgdG8gdGhlIHVwZGF0ZWQgdmFsdWVcbiAgdmFyIG5vdEluRm9jdXMgPSB0cnVlO1xuICAvLyAjNjE1N1xuICAvLyB3b3JrIGFyb3VuZCBJRSBidWcgd2hlbiBhY2Nlc3NpbmcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbiBhbiBpZnJhbWVcbiAgdHJ5IHsgbm90SW5Gb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGVsbTsgfSBjYXRjaCAoZSkge31cbiAgcmV0dXJuIG5vdEluRm9jdXMgJiYgZWxtLnZhbHVlICE9PSBjaGVja1ZhbFxufVxuXG5mdW5jdGlvbiBpc0lucHV0Q2hhbmdlZCAoZWxtLCBuZXdWYWwpIHtcbiAgdmFyIHZhbHVlID0gZWxtLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0gZWxtLl92TW9kaWZpZXJzOyAvLyBpbmplY3RlZCBieSB2LW1vZGVsIHJ1bnRpbWVcbiAgaWYgKGlzRGVmKG1vZGlmaWVycykgJiYgbW9kaWZpZXJzLm51bWJlcikge1xuICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkgIT09IHRvTnVtYmVyKG5ld1ZhbClcbiAgfVxuICBpZiAoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmllcnMudHJpbSkge1xuICAgIHJldHVybiB2YWx1ZS50cmltKCkgIT09IG5ld1ZhbC50cmltKClcbiAgfVxuICByZXR1cm4gdmFsdWUgIT09IG5ld1ZhbFxufVxuXG52YXIgZG9tUHJvcHMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlRE9NUHJvcHMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NUHJvcHNcbn07XG5cbi8qICAqL1xuXG52YXIgcGFyc2VTdHlsZVRleHQgPSBjYWNoZWQoZnVuY3Rpb24gKGNzc1RleHQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgbGlzdERlbGltaXRlciA9IC87KD8hW14oXSpcXCkpL2c7XG4gIHZhciBwcm9wZXJ0eURlbGltaXRlciA9IC86KC4rKS87XG4gIGNzc1RleHQuc3BsaXQobGlzdERlbGltaXRlcikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB2YXIgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlcik7XG4gICAgICB0bXAubGVuZ3RoID4gMSAmJiAocmVzW3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8vIG1lcmdlIHN0YXRpYyBhbmQgZHluYW1pYyBzdHlsZSBkYXRhIG9uIHRoZSBzYW1lIHZub2RlXG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZURhdGEgKGRhdGEpIHtcbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKGRhdGEuc3R5bGUpO1xuICAvLyBzdGF0aWMgc3R5bGUgaXMgcHJlLXByb2Nlc3NlZCBpbnRvIGFuIG9iamVjdCBkdXJpbmcgY29tcGlsYXRpb25cbiAgLy8gYW5kIGlzIGFsd2F5cyBhIGZyZXNoIG9iamVjdCwgc28gaXQncyBzYWZlIHRvIG1lcmdlIGludG8gaXRcbiAgcmV0dXJuIGRhdGEuc3RhdGljU3R5bGVcbiAgICA/IGV4dGVuZChkYXRhLnN0YXRpY1N0eWxlLCBzdHlsZSlcbiAgICA6IHN0eWxlXG59XG5cbi8vIG5vcm1hbGl6ZSBwb3NzaWJsZSBhcnJheSAvIHN0cmluZyB2YWx1ZXMgaW50byBPYmplY3RcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGJpbmRpbmdTdHlsZSkpIHtcbiAgICByZXR1cm4gdG9PYmplY3QoYmluZGluZ1N0eWxlKVxuICB9XG4gIGlmICh0eXBlb2YgYmluZGluZ1N0eWxlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZVN0eWxlVGV4dChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgcmV0dXJuIGJpbmRpbmdTdHlsZVxufVxuXG4vKipcbiAqIHBhcmVudCBjb21wb25lbnQgc3R5bGUgc2hvdWxkIGJlIGFmdGVyIGNoaWxkJ3NcbiAqIHNvIHRoYXQgcGFyZW50IGNvbXBvbmVudCdzIHN0eWxlIGNvdWxkIG92ZXJyaWRlIGl0XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlICh2bm9kZSwgY2hlY2tDaGlsZCkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBzdHlsZURhdGE7XG5cbiAgaWYgKGNoZWNrQ2hpbGQpIHtcbiAgICB2YXIgY2hpbGROb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChjaGlsZE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKGNoaWxkTm9kZS5kYXRhKSkpIHtcbiAgICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YSh2bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICB9XG5cbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4gICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgY3NzVmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xudmFyIHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGltcG9ydGFudFJFLnRlc3QodmFsKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbC5yZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemUobmFtZSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgLy8gU3VwcG9ydCB2YWx1ZXMgYXJyYXkgY3JlYXRlZCBieSBhdXRvcHJlZml4ZXIsIGUuZy5cbiAgICAgIC8vIHtkaXNwbGF5OiBbXCItd2Via2l0LWJveFwiLCBcIi1tcy1mbGV4Ym94XCIsIFwiZmxleFwiXX1cbiAgICAgIC8vIFNldCB0aGVtIG9uZSBieSBvbmUsIGFuZCB0aGUgYnJvd3NlciB3aWxsIG9ubHkgc2V0IHRob3NlIGl0IGNhbiByZWNvZ25pemVcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB2YWwubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWw7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdmVuZG9yTmFtZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcblxudmFyIGVtcHR5U3R5bGU7XG52YXIgbm9ybWFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG4gIGVtcHR5U3R5bGUgPSBlbXB0eVN0eWxlIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuICBwcm9wID0gY2FtZWxpemUocHJvcCk7XG4gIGlmIChwcm9wICE9PSAnZmlsdGVyJyAmJiAocHJvcCBpbiBlbXB0eVN0eWxlKSkge1xuICAgIHJldHVybiBwcm9wXG4gIH1cbiAgdmFyIGNhcE5hbWUgPSBwcm9wLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcC5zbGljZSgxKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZW5kb3JOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuYW1lID0gdmVuZG9yTmFtZXNbaV0gKyBjYXBOYW1lO1xuICAgIGlmIChuYW1lIGluIGVtcHR5U3R5bGUpIHtcbiAgICAgIHJldHVybiBuYW1lXG4gICAgfVxuICB9XG59KTtcblxuZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcblxuICBpZiAoaXNVbmRlZihkYXRhLnN0YXRpY1N0eWxlKSAmJiBpc1VuZGVmKGRhdGEuc3R5bGUpICYmXG4gICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY1N0eWxlKSAmJiBpc1VuZGVmKG9sZERhdGEuc3R5bGUpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGN1ciwgbmFtZTtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkU3RhdGljU3R5bGUgPSBvbGREYXRhLnN0YXRpY1N0eWxlO1xuICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xkRGF0YS5ub3JtYWxpemVkU3R5bGUgfHwgb2xkRGF0YS5zdHlsZSB8fCB7fTtcblxuICAvLyBpZiBzdGF0aWMgc3R5bGUgZXhpc3RzLCBzdHlsZWJpbmRpbmcgYWxyZWFkeSBtZXJnZWQgaW50byBpdCB3aGVuIGRvaW5nIG5vcm1hbGl6ZVN0eWxlRGF0YVxuICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8fCBvbGRTdHlsZUJpbmRpbmc7XG5cbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKHZub2RlLmRhdGEuc3R5bGUpIHx8IHt9O1xuXG4gIC8vIHN0b3JlIG5vcm1hbGl6ZWQgc3R5bGUgdW5kZXIgYSBkaWZmZXJlbnQga2V5IGZvciBuZXh0IGRpZmZcbiAgLy8gbWFrZSBzdXJlIHRvIGNsb25lIGl0IGlmIGl0J3MgcmVhY3RpdmUsIHNpbmNlIHRoZSB1c2VyIGxpa2VseSB3YW50c1xuICAvLyB0byBtdXRhdGUgaXQuXG4gIHZub2RlLmRhdGEubm9ybWFsaXplZFN0eWxlID0gaXNEZWYoc3R5bGUuX19vYl9fKVxuICAgID8gZXh0ZW5kKHt9LCBzdHlsZSlcbiAgICA6IHN0eWxlO1xuXG4gIHZhciBuZXdTdHlsZSA9IGdldFN0eWxlKHZub2RlLCB0cnVlKTtcblxuICBmb3IgKG5hbWUgaW4gb2xkU3R5bGUpIHtcbiAgICBpZiAoaXNVbmRlZihuZXdTdHlsZVtuYW1lXSkpIHtcbiAgICAgIHNldFByb3AoZWwsIG5hbWUsICcnKTtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG5ld1N0eWxlKSB7XG4gICAgY3VyID0gbmV3U3R5bGVbbmFtZV07XG4gICAgaWYgKGN1ciAhPT0gb2xkU3R5bGVbbmFtZV0pIHtcbiAgICAgIC8vIGllOSBzZXR0aW5nIHRvIG51bGwgaGFzIG5vIGVmZmVjdCwgbXVzdCB1c2UgZW1wdHkgc3RyaW5nXG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCBjdXIgPT0gbnVsbCA/ICcnIDogY3VyKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHN0eWxlID0ge1xuICBjcmVhdGU6IHVwZGF0ZVN0eWxlLFxuICB1cGRhdGU6IHVwZGF0ZVN0eWxlXG59O1xuXG4vKiAgKi9cblxuLyoqXG4gKiBBZGQgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiBhZGRDbGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwgIShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAgaWYgKGN1ci5pbmRleE9mKCcgJyArIGNscyArICcgJykgPCAwKSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGN1ciArIGNscykudHJpbSgpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmUgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2luY2UgY2xhc3NMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxuICovXG5mdW5jdGlvbiByZW1vdmVDbGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwgIShjbHMgPSBjbHMudHJpbSgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5yZW1vdmUoYyk7IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNscyk7XG4gICAgfVxuICAgIGlmICghZWwuY2xhc3NMaXN0Lmxlbmd0aCkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIHZhciB0YXIgPSAnICcgKyBjbHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRleE9mKHRhcikgPj0gMCkge1xuICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAgIH1cbiAgICBjdXIgPSBjdXIudHJpbSgpO1xuICAgIGlmIChjdXIpIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjdXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvbiAoZGVmKSB7XG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHR5cGVvZiBkZWYgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIGlmIChkZWYuY3NzICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXV0b0Nzc1RyYW5zaXRpb24oZGVmLm5hbWUgfHwgJ3YnKSk7XG4gICAgfVxuICAgIGV4dGVuZChyZXMsIGRlZik7XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZilcbiAgfVxufVxuXG52YXIgYXV0b0Nzc1RyYW5zaXRpb24gPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnRlckNsYXNzOiAobmFtZSArIFwiLWVudGVyXCIpLFxuICAgIGVudGVyVG9DbGFzczogKG5hbWUgKyBcIi1lbnRlci10b1wiKSxcbiAgICBlbnRlckFjdGl2ZUNsYXNzOiAobmFtZSArIFwiLWVudGVyLWFjdGl2ZVwiKSxcbiAgICBsZWF2ZUNsYXNzOiAobmFtZSArIFwiLWxlYXZlXCIpLFxuICAgIGxlYXZlVG9DbGFzczogKG5hbWUgKyBcIi1sZWF2ZS10b1wiKSxcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiAobmFtZSArIFwiLWxlYXZlLWFjdGl2ZVwiKVxuICB9XG59KTtcblxudmFyIGhhc1RyYW5zaXRpb24gPSBpbkJyb3dzZXIgJiYgIWlzSUU5O1xudmFyIFRSQU5TSVRJT04gPSAndHJhbnNpdGlvbic7XG52YXIgQU5JTUFUSU9OID0gJ2FuaW1hdGlvbic7XG5cbi8vIFRyYW5zaXRpb24gcHJvcGVydHkvZXZlbnQgc25pZmZpbmdcbnZhciB0cmFuc2l0aW9uUHJvcCA9ICd0cmFuc2l0aW9uJztcbnZhciB0cmFuc2l0aW9uRW5kRXZlbnQgPSAndHJhbnNpdGlvbmVuZCc7XG52YXIgYW5pbWF0aW9uUHJvcCA9ICdhbmltYXRpb24nO1xudmFyIGFuaW1hdGlvbkVuZEV2ZW50ID0gJ2FuaW1hdGlvbmVuZCc7XG5pZiAoaGFzVHJhbnNpdGlvbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHdpbmRvdy5vbnRyYW5zaXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICB0cmFuc2l0aW9uUHJvcCA9ICdXZWJraXRUcmFuc2l0aW9uJztcbiAgICB0cmFuc2l0aW9uRW5kRXZlbnQgPSAnd2Via2l0VHJhbnNpdGlvbkVuZCc7XG4gIH1cbiAgaWYgKHdpbmRvdy5vbmFuaW1hdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgYW5pbWF0aW9uUHJvcCA9ICdXZWJraXRBbmltYXRpb24nO1xuICAgIGFuaW1hdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdEFuaW1hdGlvbkVuZCc7XG4gIH1cbn1cblxuLy8gYmluZGluZyB0byB3aW5kb3cgaXMgbmVjZXNzYXJ5IHRvIG1ha2UgaG90IHJlbG9hZCB3b3JrIGluIElFIGluIHN0cmljdCBtb2RlXG52YXIgcmFmID0gaW5Ccm93c2VyXG4gID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdylcbiAgICA6IHNldFRpbWVvdXRcbiAgOiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmdW5jdGlvbiAoZm4pIHsgcmV0dXJuIGZuKCk7IH07XG5cbmZ1bmN0aW9uIG5leHRGcmFtZSAoZm4pIHtcbiAgcmFmKGZ1bmN0aW9uICgpIHtcbiAgICByYWYoZm4pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzIChlbCwgY2xzKSB7XG4gIHZhciB0cmFuc2l0aW9uQ2xhc3NlcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3RyYW5zaXRpb25DbGFzc2VzID0gW10pO1xuICBpZiAodHJhbnNpdGlvbkNsYXNzZXMuaW5kZXhPZihjbHMpIDwgMCkge1xuICAgIHRyYW5zaXRpb25DbGFzc2VzLnB1c2goY2xzKTtcbiAgICBhZGRDbGFzcyhlbCwgY2xzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHJlbW92ZShlbC5fdHJhbnNpdGlvbkNsYXNzZXMsIGNscyk7XG4gIH1cbiAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG59XG5cbmZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyAoXG4gIGVsLFxuICBleHBlY3RlZFR5cGUsXG4gIGNiXG4pIHtcbiAgdmFyIHJlZiA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICB2YXIgdGltZW91dCA9IHJlZi50aW1lb3V0O1xuICB2YXIgcHJvcENvdW50ID0gcmVmLnByb3BDb3VudDtcbiAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cbiAgdmFyIGV2ZW50ID0gdHlwZSA9PT0gVFJBTlNJVElPTiA/IHRyYW5zaXRpb25FbmRFdmVudCA6IGFuaW1hdGlvbkVuZEV2ZW50O1xuICB2YXIgZW5kZWQgPSAwO1xuICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbiAgICBjYigpO1xuICB9O1xuICB2YXIgb25FbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwpIHtcbiAgICAgIGlmICgrK2VuZGVkID49IHByb3BDb3VudCkge1xuICAgICAgICBlbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xuICAgICAgZW5kKCk7XG4gICAgfVxuICB9LCB0aW1lb3V0ICsgMSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uRW5kKTtcbn1cblxudmFyIHRyYW5zZm9ybVJFID0gL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLztcblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8gKGVsLCBleHBlY3RlZFR5cGUpIHtcbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcbiAgdmFyIHRyYW5zaXRpb25EZWxheXMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcbiAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10uc3BsaXQoJywgJyk7XG4gIHZhciBhbmltYXRpb25EdXJhdGlvbnMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHRvTXMgKHMpIHtcbiAgcmV0dXJuIE51bWJlcihzLnNsaWNlKDAsIC0xKSkgKiAxMDAwXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnRlciAodm5vZGUsIHRvZ2dsZURpc3BsYXkpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgbGVhdmUgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVudGVyQ2xhc3M7XG4gIHZhciBlbnRlclRvQ2xhc3MgPSBkYXRhLmVudGVyVG9DbGFzcztcbiAgdmFyIGVudGVyQWN0aXZlQ2xhc3MgPSBkYXRhLmVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciBhcHBlYXJDbGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG4gIHZhciBhcHBlYXJUb0NsYXNzID0gZGF0YS5hcHBlYXJUb0NsYXNzO1xuICB2YXIgYXBwZWFyQWN0aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJBcHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hlY2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBub2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xuICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIGNvbnRleHQgPSBhY3RpdmVJbnN0YW5jZTtcbiAgdmFyIHRyYW5zaXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB3aGlsZSAodHJhbnNpdGlvbk5vZGUgJiYgdHJhbnNpdGlvbk5vZGUucGFyZW50KSB7XG4gICAgdHJhbnNpdGlvbk5vZGUgPSB0cmFuc2l0aW9uTm9kZS5wYXJlbnQ7XG4gICAgY29udGV4dCA9IHRyYW5zaXRpb25Ob2RlLmNvbnRleHQ7XG4gIH1cblxuICB2YXIgaXNBcHBlYXIgPSAhY29udGV4dC5faXNNb3VudGVkIHx8ICF2bm9kZS5pc1Jvb3RJbnNlcnQ7XG5cbiAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN0YXJ0Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJDbGFzc1xuICAgID8gYXBwZWFyQ2xhc3NcbiAgICA6IGVudGVyQ2xhc3M7XG4gIHZhciBhY3RpdmVDbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgPyBhcHBlYXJBY3RpdmVDbGFzc1xuICAgIDogZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIHRvQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJUb0NsYXNzXG4gICAgPyBhcHBlYXJUb0NsYXNzXG4gICAgOiBlbnRlclRvQ2xhc3M7XG5cbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYmVmb3JlQXBwZWFyIHx8IGJlZm9yZUVudGVyKVxuICAgIDogYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcilcbiAgICA6IGVudGVyO1xuICB2YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGFmdGVyQXBwZWFyIHx8IGFmdGVyRW50ZXIpXG4gICAgOiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0gaXNBcHBlYXJcbiAgICA/IChhcHBlYXJDYW5jZWxsZWQgfHwgZW50ZXJDYW5jZWxsZWQpXG4gICAgOiBlbnRlckNhbmNlbGxlZDtcblxuICB2YXIgZXhwbGljaXRFbnRlckR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmVudGVyXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXhwbGljaXRFbnRlckR1cmF0aW9uICE9IG51bGwpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbiwgJ2VudGVyJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGVudGVySG9vayk7XG5cbiAgdmFyIGNiID0gZWwuX2VudGVyQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVyQ2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiZcbiAgICAgICAgcGVuZGluZ05vZGUudGFnID09PSB2bm9kZS50YWcgJiZcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiXG4gICAgICApIHtcbiAgICAgICAgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKCk7XG4gICAgICB9XG4gICAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzdGFydCBlbnRlciB0cmFuc2l0aW9uXG4gIGJlZm9yZUVudGVySG9vayAmJiBiZWZvcmVFbnRlckhvb2soZWwpO1xuICBpZiAoZXhwZWN0c0NTUykge1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgc2V0VGltZW91dChjYiwgZXhwbGljaXRFbnRlckR1cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZub2RlLmRhdGEuc2hvdykge1xuICAgIHRvZ2dsZURpc3BsYXkgJiYgdG9nZ2xlRGlzcGxheSgpO1xuICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgfVxuXG4gIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgIGNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVhdmUgKHZub2RlLCBybSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBlbnRlciBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9lbnRlckNiKSkge1xuICAgIGVsLl9lbnRlckNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2VudGVyQ2IoKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYgKGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm4gcm0oKVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fbGVhdmVDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBsZWF2ZUNsYXNzID0gZGF0YS5sZWF2ZUNsYXNzO1xuICB2YXIgbGVhdmVUb0NsYXNzID0gZGF0YS5sZWF2ZVRvQ2xhc3M7XG4gIHZhciBsZWF2ZUFjdGl2ZUNsYXNzID0gZGF0YS5sZWF2ZUFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuICB2YXIgbGVhdmUgPSBkYXRhLmxlYXZlO1xuICB2YXIgYWZ0ZXJMZWF2ZSA9IGRhdGEuYWZ0ZXJMZWF2ZTtcbiAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcbiAgdmFyIGRlbGF5TGVhdmUgPSBkYXRhLmRlbGF5TGVhdmU7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcbiAgdmFyIHVzZXJXYW50c0NvbnRyb2wgPSBnZXRIb29rQXJndW1lbnRzTGVuZ3RoKGxlYXZlKTtcblxuICB2YXIgZXhwbGljaXRMZWF2ZUR1cmF0aW9uID0gdG9OdW1iZXIoXG4gICAgaXNPYmplY3QoZHVyYXRpb24pXG4gICAgICA/IGR1cmF0aW9uLmxlYXZlXG4gICAgICA6IGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uLCAnbGVhdmUnLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgY2IgPSBlbC5fbGVhdmVDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcpIHtcbiAgICAgIGVsLnBhcmVudE5vZGUuX3BlbmRpbmdbdm5vZGUua2V5XSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgbGVhdmVDYW5jZWxsZWQgJiYgbGVhdmVDYW5jZWxsZWQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKGVsKTtcbiAgICB9XG4gICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuICB9KTtcblxuICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgIGRlbGF5TGVhdmUocGVyZm9ybUxlYXZlKTtcbiAgfSBlbHNlIHtcbiAgICBwZXJmb3JtTGVhdmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG4gICAgLy8gdGhlIGRlbGF5ZWQgbGVhdmUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZFxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZWNvcmQgbGVhdmluZyBlbGVtZW50XG4gICAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBvbmx5IHVzZWQgaW4gZGV2IG1vZGVcbmZ1bmN0aW9uIGNoZWNrRHVyYXRpb24gKHZhbCwgbmFtZSwgdm5vZGUpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIFwiICtcbiAgICAgIFwiZ290IFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbCkpICsgXCIuXCIsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybihcbiAgICAgIFwiPHRyYW5zaXRpb24+IGV4cGxpY2l0IFwiICsgbmFtZSArIFwiIGR1cmF0aW9uIGlzIE5hTiAtIFwiICtcbiAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyxcbiAgICAgIHZub2RlLmNvbnRleHRcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREdXJhdGlvbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHRyYW5zaXRpb24gaG9vaydzIGFyZ3VtZW50IGxlbmd0aC4gVGhlIGhvb2sgbWF5IGJlOlxuICogLSBhIG1lcmdlZCBob29rIChpbnZva2VyKSB3aXRoIHRoZSBvcmlnaW5hbCBpbiAuZm5zXG4gKiAtIGEgd3JhcHBlZCBjb21wb25lbnQgbWV0aG9kIChjaGVjayAuX2xlbmd0aClcbiAqIC0gYSBwbGFpbiBmdW5jdGlvbiAoLmxlbmd0aClcbiAqL1xuZnVuY3Rpb24gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aCAoZm4pIHtcbiAgaWYgKGlzVW5kZWYoZm4pKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIGludm9rZXJGbnMgPSBmbi5mbnM7XG4gIGlmIChpc0RlZihpbnZva2VyRm5zKSkge1xuICAgIC8vIGludm9rZXJcbiAgICByZXR1cm4gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChcbiAgICAgIEFycmF5LmlzQXJyYXkoaW52b2tlckZucylcbiAgICAgICAgPyBpbnZva2VyRm5zWzBdXG4gICAgICAgIDogaW52b2tlckZuc1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKGZuLl9sZW5ndGggfHwgZm4ubGVuZ3RoKSA+IDFcbiAgfVxufVxuXG5mdW5jdGlvbiBfZW50ZXIgKF8sIHZub2RlKSB7XG4gIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAgICBlbnRlcih2bm9kZSk7XG4gIH1cbn1cblxudmFyIHRyYW5zaXRpb24gPSBpbkJyb3dzZXIgPyB7XG4gIGNyZWF0ZTogX2VudGVyLFxuICBhY3RpdmF0ZTogX2VudGVyLFxuICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSQkMSAodm5vZGUsIHJtKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgICBsZWF2ZSh2bm9kZSwgcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAgZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBidWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9ybU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoID0gY3JlYXRlUGF0Y2hGdW5jdGlvbih7IG5vZGVPcHM6IG5vZGVPcHMsIG1vZHVsZXM6IG1vZHVsZXMgfSk7XG5cbi8qKlxuICogTm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IGxpa2UgYXR0YWNoaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIEVsZW1lbnRzLlxuICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhwbG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgbW9kZWwkMSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgZWwuX3ZPcHRpb25zID0gW10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGlzVGV4dElucHV0VHlwZShlbC50eXBlKSkge1xuICAgICAgZWwuX3ZNb2RpZmllcnMgPSBiaW5kaW5nLm1vZGlmaWVycztcbiAgICAgIGlmICghYmluZGluZy5tb2RpZmllcnMubGF6eSkge1xuICAgICAgICAvLyBTYWZhcmkgPCAxMC4yICYgVUlXZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVuZCB3aGVuXG4gICAgICAgIC8vIHN3aXRjaGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21wb3NpdGlvbiBjaG9pY2VcbiAgICAgICAgLy8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9TIENocm9tZVxuICAgICAgICAvLyBmaXJlcyBcImNoYW5nZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwiIG9uIGF1dG9jb21wbGV0ZS5cbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25Db21wb3NpdGlvbkVuZCk7XG4gICAgICAgIGlmICghaXNBbmRyb2lkKSB7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25zdGFydCcsIG9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAgICAgZWwudm1vZGVsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZCAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9wdGlvbnMgcmVuZGVyZWQgYnkgdi1mb3IgaGF2ZSBjaGFuZ2VkLFxuICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB2YWx1ZSBpcyBvdXQtb2Ytc3luYyB3aXRoIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuICAgICAgLy8gZGV0ZWN0IHN1Y2ggY2FzZXMgYW5kIGZpbHRlciBvdXQgdmFsdWVzIHRoYXQgbm8gbG9uZ2VyIGhhcyBhIG1hdGNoaW5nXG4gICAgICAvLyBvcHRpb24gaW4gdGhlIERPTS5cbiAgICAgIHZhciBwcmV2T3B0aW9ucyA9IGVsLl92T3B0aW9ucztcbiAgICAgIHZhciBjdXJPcHRpb25zID0gZWwuX3ZPcHRpb25zID0gW10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgICAgaWYgKGN1ck9wdGlvbnMuc29tZShmdW5jdGlvbiAobywgaSkgeyByZXR1cm4gIWxvb3NlRXF1YWwobywgcHJldk9wdGlvbnNbaV0pOyB9KSkge1xuICAgICAgICAvLyB0cmlnZ2VyIGNoYW5nZSBldmVudCBpZlxuICAgICAgICAvLyBubyBtYXRjaGluZyBvcHRpb24gZm91bmQgZm9yIGF0IGxlYXN0IG9uZSB2YWx1ZVxuICAgICAgICB2YXIgbmVlZFJlc2V0ID0gZWwubXVsdGlwbGVcbiAgICAgICAgICA/IGJpbmRpbmcudmFsdWUuc29tZShmdW5jdGlvbiAodikgeyByZXR1cm4gaGFzTm9NYXRjaGluZ09wdGlvbih2LCBjdXJPcHRpb25zKTsgfSlcbiAgICAgICAgICA6IGJpbmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRjaGluZ09wdGlvbihiaW5kaW5nLnZhbHVlLCBjdXJPcHRpb25zKTtcbiAgICAgICAgaWYgKG5lZWRSZXNldCkge1xuICAgICAgICAgIHRyaWdnZXIoZWwsICdjaGFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICBhY3R1YWxseVNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bSk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNJRSB8fCBpc0VkZ2UpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjdHVhbGx5U2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZtKTtcbiAgICB9LCAwKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhY3R1YWxseVNldFNlbGVjdGVkIChlbCwgYmluZGluZywgdm0pIHtcbiAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtcbiAgdmFyIGlzTXVsdGlwbGUgPSBlbC5tdWx0aXBsZTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCI8c2VsZWN0IG11bHRpcGxlIHYtbW9kZWw9XFxcIlwiICsgKGJpbmRpbmcuZXhwcmVzc2lvbikgKyBcIlxcXCI+IFwiICtcbiAgICAgIFwiZXhwZWN0cyBhbiBBcnJheSB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGJ1dCBnb3QgXCIgKyAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkpLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIHZhciBzZWxlY3RlZCwgb3B0aW9uO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGVsLm9wdGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtcbiAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgc2VsZWN0ZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIGdldFZhbHVlKG9wdGlvbikpID4gLTE7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKSB7XG4gICAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaXNNdWx0aXBsZSkge1xuICAgIGVsLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNOb01hdGNoaW5nT3B0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5ldmVyeShmdW5jdGlvbiAobykgeyByZXR1cm4gIWxvb3NlRXF1YWwobywgdmFsdWUpOyB9KVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJldHVybiAnX3ZhbHVlJyBpbiBvcHRpb25cbiAgICA/IG9wdGlvbi5fdmFsdWVcbiAgICA6IG9wdGlvbi52YWx1ZVxufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZCAoZSkge1xuICAvLyBwcmV2ZW50IHRyaWdnZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9yIG5vIHJlYXNvblxuICBpZiAoIWUudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm4gfVxuICBlLnRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgdHJpZ2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIgKGVsLCB0eXBlKSB7XG4gIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgZS5pbml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG59XG5cbi8qICAqL1xuXG4vLyByZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBvc3NpYmxlIHRyYW5zaXRpb24gZGVmaW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVudCByb290XG5mdW5jdGlvbiBsb2NhdGVOb2RlICh2bm9kZSkge1xuICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgKCF2bm9kZS5kYXRhIHx8ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24pXG4gICAgPyBsb2NhdGVOb2RlKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSlcbiAgICA6IHZub2RlXG59XG5cbnZhciBzaG93ID0ge1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcblxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5ID1cbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcbiAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGVudGVyKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gb3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG4gICAgdmFyIG9sZFZhbHVlID0gcmVmLm9sZFZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkgeyByZXR1cm4gfVxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICBpZiAodHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG52YXIgVHJhbnNpdGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNlcylcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50YWcgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpOyB9KTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICc8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50LiBVc2UgJyArXG4gICAgICAgICc8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3RzLicsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTtcblxuICAgIC8vIHdhcm4gaW52YWxpZCBtb2RlXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1vZGUgJiYgbW9kZSAhPT0gJ2luLW91dCcgJiYgbW9kZSAhPT0gJ291dC1pbidcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAgIGlmIChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4gICAgLy8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4ga2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBrZXkgdGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlvblxuICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJlbW92ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAgdmFyIGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGNoaWxkLmlzQ29tbWVudFxuICAgICAgICA/IGlkICsgJ2NvbW1lbnQnXG4gICAgICAgIDogaWQgKyBjaGlsZC50YWdcbiAgICAgIDogaXNQcmltaXRpdmUoY2hpbGQua2V5KVxuICAgICAgICA/IChTdHJpbmcoY2hpbGQua2V5KS5pbmRleE9mKGlkKSA9PT0gMCA/IGNoaWxkLmtleSA6IGlkICsgY2hpbGQua2V5KVxuICAgICAgICA6IGNoaWxkLmtleTtcblxuICAgIHZhciBkYXRhID0gKGNoaWxkLmRhdGEgfHwgKGNoaWxkLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG4gICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG4gICAgdmFyIG9sZENoaWxkID0gZ2V0UmVhbENoaWxkKG9sZFJhd0NoaWxkKTtcblxuICAgIC8vIG1hcmsgdi1zaG93XG4gICAgLy8gc28gdGhhdCB0aGUgdHJhbnNpdGlvbiBtb2R1bGUgY2FuIGhhbmQgb3ZlciB0aGUgY29udHJvbCB0byB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKGNoaWxkLmRhdGEuZGlyZWN0aXZlcyAmJiBjaGlsZC5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZCkgeyByZXR1cm4gZC5uYW1lID09PSAnc2hvdyc7IH0pKSB7XG4gICAgICBjaGlsZC5kYXRhLnNob3cgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9sZENoaWxkICYmXG4gICAgICBvbGRDaGlsZC5kYXRhICYmXG4gICAgICAhaXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSAmJlxuICAgICAgIWlzQXN5bmNQbGFjZWhvbGRlcihvbGRDaGlsZClcbiAgICApIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRpb24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBkeW5hbWljIHRyYW5zaXRpb25zIVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQoe30sIGRhdGEpO1xuICAgICAgLy8gaGFuZGxlIHRyYW5zaXRpb24gbW9kZVxuICAgICAgaWYgKG1vZGUgPT09ICdvdXQtaW4nKSB7XG4gICAgICAgIC8vIHJldHVybiBwbGFjZWhvbGRlciBub2RlIGFuZCBxdWV1ZSB1cGRhdGUgd2hlbiBsZWF2ZSBmaW5pc2hlc1xuICAgICAgICB0aGlzLl9sZWF2aW5nID0gdHJ1ZTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2sob2xkRGF0YSwgJ2FmdGVyTGVhdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpcyQxLl9sZWF2aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcyQxLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0Jykge1xuICAgICAgICBpZiAoaXNBc3luY1BsYWNlaG9sZGVyKGNoaWxkKSkge1xuICAgICAgICAgIHJldHVybiBvbGRSYXdDaGlsZFxuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxheWVkTGVhdmU7XG4gICAgICAgIHZhciBwZXJmb3JtTGVhdmUgPSBmdW5jdGlvbiAoKSB7IGRlbGF5ZWRMZWF2ZSgpOyB9O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnYWZ0ZXJFbnRlcicsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxlZCcsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxheUxlYXZlJywgZnVuY3Rpb24gKGxlYXZlKSB7IGRlbGF5ZWRMZWF2ZSA9IGxlYXZlOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1cHBvcnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBCZWNhdXNlIHRoZSB2ZG9tJ3MgY2hpbGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxlXCIgLSBpLmUuXG4vLyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcgb2YgcmVtb3ZlZCBlbGVtZW50cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8gdXBkYXRlIGl0cyBjaGlsZHJlbiBpbnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFzcywgd2UgcmVtb3ZlIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdnZXJpbmcgdGhlaXIgbGVhdmluZyB0cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2VydC9tb3ZlXG4vLyBpbnRvIHRoZSBmaW5hbCBkZXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0aGUgc2Vjb25kIHBhc3MgcmVtb3ZlZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBzaG91bGQgYmUuXG5cbnZhciBwcm9wcyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3ZlQ2xhc3M6IFN0cmluZ1xufSwgdHJhbnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7XG5cbnZhciBUcmFuc2l0aW9uR3JvdXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2bm9kZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlvbkRhdGEgPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxkcmVuW2ldO1xuICAgICAgaWYgKGMudGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYmIFN0cmluZyhjLmtleSkuaW5kZXhPZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjKTtcbiAgICAgICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5kYXRhIHx8IChjLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5hbWUgPSBvcHRzID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWcgfHwgJycpIDogYy50YWc7XG4gICAgICAgICAgd2FybigoXCI8dHJhbnNpdGlvbi1ncm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZDogPFwiICsgbmFtZSArIFwiPlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJldkNoaWxkcmVuKSB7XG4gICAgICB2YXIga2VwdCA9IFtdO1xuICAgICAgdmFyIHJlbW92ZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciBjJDEgPSBwcmV2Q2hpbGRyZW5baSQxXTtcbiAgICAgICAgYyQxLmRhdGEudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobWFwW2MkMS5rZXldKSB7XG4gICAgICAgICAga2VwdC5wdXNoKGMkMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlZC5wdXNoKGMkMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMua2VwdCA9IGgodGFnLCBudWxsLCBrZXB0KTtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnLCBudWxsLCBjaGlsZHJlbilcbiAgfSxcblxuICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZSAoKSB7XG4gICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xuICAgIHRoaXMuX19wYXRjaF9fKFxuICAgICAgdGhpcy5fdm5vZGUsXG4gICAgICB0aGlzLmtlcHQsXG4gICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICB0cnVlIC8vIHJlbW92ZU9ubHkgKCFpbXBvcnRhbnQsIGF2b2lkcyB1bm5lY2Vzc2FyeSBtb3ZlcylcbiAgICApO1xuICAgIHRoaXMuX3Zub2RlID0gdGhpcy5rZXB0O1xuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICAvLyBhc3NpZ24gdG8gdGhpcyB0byBhdm9pZCBiZWluZyByZW1vdmVkIGluIHRyZWUtc2hha2luZ1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHRoaXMuX3JlZmxvdyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHRoaXMuX2hhc01vdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5tdXN0VXNlUHJvcCA9IG11c3RVc2VQcm9wO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRUYWcgPSBpc1Jlc2VydmVkVGFnO1xuVnVlJDMuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUkMy5jb25maWcuZ2V0VGFnTmFtZXNwYWNlID0gZ2V0VGFnTmFtZXNwYWNlO1xuVnVlJDMuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQgPSBpc1Vua25vd25FbGVtZW50O1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRpbWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcbmV4dGVuZChWdWUkMy5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlJDMub3B0aW9ucy5jb21wb25lbnRzLCBwbGF0Zm9ybUNvbXBvbmVudHMpO1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUkMy5wcm90b3R5cGUuX19wYXRjaF9fID0gaW5Ccm93c2VyID8gcGF0Y2ggOiBub29wO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5WdWUkMy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gIGlmIChjb25maWcuZGV2dG9vbHMpIHtcbiAgICBpZiAoZGV2dG9vbHMpIHtcbiAgICAgIGRldnRvb2xzLmVtaXQoJ2luaXQnLCBWdWUkMyk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzQ2hyb21lKSB7XG4gICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgICAgJ0Rvd25sb2FkIHRoZSBWdWUgRGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOlxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgY29uZmlnLnByb2R1Y3Rpb25UaXAgIT09IGZhbHNlICYmXG4gICAgaW5Ccm93c2VyICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgIFwiWW91IGFyZSBydW5uaW5nIFZ1ZSBpbiBkZXZlbG9wbWVudCBtb2RlLlxcblwiICtcbiAgICAgIFwiTWFrZSBzdXJlIHRvIHR1cm4gb24gcHJvZHVjdGlvbiBtb2RlIHdoZW4gZGVwbG95aW5nIGZvciBwcm9kdWN0aW9uLlxcblwiICtcbiAgICAgIFwiU2VlIG1vcmUgdGlwcyBhdCBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWxcIlxuICAgICk7XG4gIH1cbn0sIDApO1xuXG4vKiAgKi9cblxuLy8gY2hlY2sgd2hldGhlciBjdXJyZW50IGJyb3dzZXIgZW5jb2RlcyBhIGNoYXIgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXNcbmZ1bmN0aW9uIHNob3VsZERlY29kZSAoY29udGVudCwgZW5jb2RlZCkge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBcIjxkaXYgYT1cXFwiXCIgKyBjb250ZW50ICsgXCJcXFwiLz5cIjtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZihlbmNvZGVkKSA+IDBcbn1cblxuLy8gIzM2NjNcbi8vIElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXMgd2hpbGUgb3RoZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IGluQnJvd3NlciA/IHNob3VsZERlY29kZSgnXFxuJywgJyYjMTA7JykgOiBmYWxzZTtcblxuLyogICovXG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuZnVuY3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVyc1xuKSB7XG4gIHZhciB0YWdSRSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMpIDogZGVmYXVsdFRhZ1JFO1xuICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4KSkpO1xuICB9XG4gIHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2NsYXNzJyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRpY0NsYXNzKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNDbGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1cXFwiXCIgKyBzdGF0aWNTdHlsZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpzdHlsZT1cInZhbFwiPi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsLnN0YXRpY1N0eWxlID0gSlNPTi5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUpKTtcbiAgfVxuXG4gIHZhciBzdHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxlJywgZmFsc2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVsLnN0eWxlQmluZGluZyA9IHN0eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNTdHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuc3R5bGVCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChlbC5zdHlsZUJpbmRpbmcpICsgXCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBzdHlsZSQxID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUkMSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQxXG59O1xuXG4vKiAgKi9cblxudmFyIGRlY29kZXI7XG5cbnZhciBoZSA9IHtcbiAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgICBkZWNvZGVyID0gZGVjb2RlciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkZWNvZGVyLmlubmVySFRNTCA9IGh0bWw7XG4gICAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbiAgfVxufTtcblxuLyogICovXG5cbnZhciBpc1VuYXJ5VGFnID0gbWFrZU1hcChcbiAgJ2FyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLCcgK1xuICAnbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnInXG4pO1xuXG4vLyBFbGVtZW50cyB0aGF0IHlvdSBjYW4sIGludGVudGlvbmFsbHksIGxlYXZlIG9wZW5cbi8vIChhbmQgd2hpY2ggY2xvc2UgdGhlbXNlbHZlcylcbnZhciBjYW5CZUxlZnRPcGVuVGFnID0gbWFrZU1hcChcbiAgJ2NvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UnXG4pO1xuXG4vLyBIVE1MNSB0YWdzIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZGljZXMuaHRtbCNlbGVtZW50cy0zXG4vLyBQaHJhc2luZyBDb250ZW50IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnRcbnZhciBpc05vblBocmFzaW5nVGFnID0gbWFrZU1hcChcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCwnICtcbiAgJ2RldGFpbHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSwnICtcbiAgJ2gxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLCcgK1xuICAnb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLCcgK1xuICAndGl0bGUsdHIsdHJhY2snXG4pO1xuXG4vKipcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGl0J3MgbW9zdGx5IHZlbmRvciBjb2RlLlxuICovXG5cbi8qIVxuICogSFRNTCBQYXJzZXIgQnkgSm9obiBSZXNpZyAoZWpvaG4ub3JnKVxuICogTW9kaWZpZWQgYnkgSnVyaXkgXCJrYW5nYXhcIiBaYXl0c2V2XG4gKiBPcmlnaW5hbCBjb2RlIGJ5IEVyaWsgQXJ2aWRzc29uLCBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlXG4gKiBodHRwOi8vZXJpay5lYWUubmV0L3NpbXBsZWh0bWxwYXJzZXIvc2ltcGxlaHRtbHBhcnNlci5qc1xuICovXG5cbi8vIFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIHBhcnNpbmcgdGFncyBhbmQgYXR0cmlidXRlc1xudmFyIGF0dHJpYnV0ZSA9IC9eXFxzKihbXlxcc1wiJzw+XFwvPV0rKSg/OlxccyooPSlcXHMqKD86XCIoW15cIl0qKVwiK3wnKFteJ10qKScrfChbXlxcc1wiJz08PmBdKykpKT8vO1xuLy8gY291bGQgdXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2UgY2FuIGVuZm9yY2UgYSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxcXHdcXFxcLVxcXFwuXSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9IFwiKCg/OlwiICsgbmNuYW1lICsgXCJcXFxcOik/XCIgKyBuY25hbWUgKyBcIilcIjtcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKChcIl48XCIgKyBxbmFtZUNhcHR1cmUpKTtcbnZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgoXCJePFxcXFwvXCIgKyBxbmFtZUNhcHR1cmUgKyBcIltePl0qPlwiKSk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0rPi9pO1xudmFyIGNvbW1lbnQgPSAvXjwhLS0vO1xudmFyIGNvbmRpdGlvbmFsQ29tbWVudCA9IC9ePCFcXFsvO1xuXG52YXIgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGZhbHNlO1xuJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1bmN0aW9uIChtLCBnKSB7XG4gIElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gPSBnID09PSAnJztcbn0pO1xuXG4vLyBTcGVjaWFsIEVsZW1lbnRzIChjYW4gY29udGFpbiBhbnl0aGluZylcbnZhciBpc1BsYWluVGV4dEVsZW1lbnQgPSBtYWtlTWFwKCdzY3JpcHQsc3R5bGUsdGV4dGFyZWEnLCB0cnVlKTtcbnZhciByZUNhY2hlID0ge307XG5cbnZhciBkZWNvZGluZ01hcCA9IHtcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMxMDsnOiAnXFxuJ1xufTtcbnZhciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXApOy9nO1xudmFyIGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzID0gLyYoPzpsdHxndHxxdW90fGFtcHwjMTApOy9nO1xuXG4vLyAjNTk5MlxudmFyIGlzSWdub3JlTmV3bGluZVRhZyA9IG1ha2VNYXAoJ3ByZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHNob3VsZElnbm9yZUZpcnN0TmV3bGluZSA9IGZ1bmN0aW9uICh0YWcsIGh0bWwpIHsgcmV0dXJuIHRhZyAmJiBpc0lnbm9yZU5ld2xpbmVUYWcodGFnKSAmJiBodG1sWzBdID09PSAnXFxuJzsgfTtcblxuZnVuY3Rpb24gZGVjb2RlQXR0ciAodmFsdWUsIHNob3VsZERlY29kZU5ld2xpbmVzKSB7XG4gIHZhciByZSA9IHNob3VsZERlY29kZU5ld2xpbmVzID8gZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgOiBlbmNvZGVkQXR0cjtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gZGVjb2RpbmdNYXBbbWF0Y2hdOyB9KVxufVxuXG5mdW5jdGlvbiBwYXJzZUhUTUwgKGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBleHBlY3RIVE1MID0gb3B0aW9ucy5leHBlY3RIVE1MO1xuICB2YXIgaXNVbmFyeVRhZyQkMSA9IG9wdGlvbnMuaXNVbmFyeVRhZyB8fCBubztcbiAgdmFyIGNhbkJlTGVmdE9wZW5UYWckJDEgPSBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcgfHwgbm87XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xuICB3aGlsZSAoaHRtbCkge1xuICAgIGxhc3QgPSBodG1sO1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4gYSBwbGFpbnRleHQgY29udGVudCBlbGVtZW50IGxpa2Ugc2NyaXB0L3N0eWxlXG4gICAgaWYgKCFsYXN0VGFnIHx8ICFpc1BsYWluVGV4dEVsZW1lbnQobGFzdFRhZykpIHtcbiAgICAgIHZhciB0ZXh0RW5kID0gaHRtbC5pbmRleE9mKCc8Jyk7XG4gICAgICBpZiAodGV4dEVuZCA9PT0gMCkge1xuICAgICAgICAvLyBDb21tZW50OlxuICAgICAgICBpZiAoY29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbW1lbnRFbmQgPSBodG1sLmluZGV4T2YoJy0tPicpO1xuXG4gICAgICAgICAgaWYgKGNvbW1lbnRFbmQgPj0gMCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkS2VlcENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5jb21tZW50KGh0bWwuc3Vic3RyaW5nKDQsIGNvbW1lbnRFbmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKGxhc3RUYWcsIGh0bWwpKSB7XG4gICAgICAgICAgICBhZHZhbmNlKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QgPSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xuICAgICAgaWYgKHRleHRFbmQgPj0gMCkge1xuICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICFlbmRUYWcudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVzdChyZXN0KSAmJlxuICAgICAgICAgICFjb21tZW50LnRlc3QocmVzdCkgJiZcbiAgICAgICAgICAhY29uZGl0aW9uYWxDb21tZW50LnRlc3QocmVzdClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAgICAgICAgICBuZXh0ID0gcmVzdC5pbmRleE9mKCc8JywgMSk7XG4gICAgICAgICAgaWYgKG5leHQgPCAwKSB7IGJyZWFrIH1cbiAgICAgICAgICB0ZXh0RW5kICs9IG5leHQ7XG4gICAgICAgICAgcmVzdCA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9IGh0bWwuc3Vic3RyaW5nKDAsIHRleHRFbmQpO1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGV4dEVuZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7XG4gICAgICAgIGh0bWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMgJiYgdGV4dCkge1xuICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZhciBzdGFja2VkVGFnID0gbGFzdFRhZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJlQ2FjaGVbc3RhY2tlZFRhZ10gfHwgKHJlQ2FjaGVbc3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCcoW1xcXFxzXFxcXFNdKj8pKDwvJyArIHN0YWNrZWRUYWcgKyAnW14+XSo+KScsICdpJykpO1xuICAgICAgdmFyIHJlc3QkMSA9IGh0bWwucmVwbGFjZShyZVN0YWNrZWRUYWcsIGZ1bmN0aW9uIChhbGwsIHRleHQsIGVuZFRhZykge1xuICAgICAgICBlbmRUYWdMZW5ndGggPSBlbmRUYWcubGVuZ3RoO1xuICAgICAgICBpZiAoIWlzUGxhaW5UZXh0RWxlbWVudChzdGFja2VkVGFnKSAmJiBzdGFja2VkVGFnICE9PSAnbm9zY3JpcHQnKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHRcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L2csICckMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvPCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1dPi9nLCAnJDEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKHN0YWNrZWRUYWcsIHRleHQpKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnMpIHtcbiAgICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfSk7XG4gICAgICBpbmRleCArPSBodG1sLmxlbmd0aCAtIHJlc3QkMS5sZW5ndGg7XG4gICAgICBodG1sID0gcmVzdCQxO1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXN0YWNrLmxlbmd0aCAmJiBvcHRpb25zLndhcm4pIHtcbiAgICAgICAgb3B0aW9ucy53YXJuKChcIk1hbC1mb3JtYXR0ZWQgdGFnIGF0IGVuZCBvZiB0ZW1wbGF0ZTogXFxcIlwiICsgaHRtbCArIFwiXFxcIlwiKSk7XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChhdHRyaWJ1dGUpKSkge1xuICAgICAgICBhZHZhbmNlKGF0dHJbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guYXR0cnMucHVzaChhdHRyKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgbWF0Y2gudW5hcnlTbGFzaCA9IGVuZFsxXTtcbiAgICAgICAgYWR2YW5jZShlbmRbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guZW5kID0gaW5kZXg7XG4gICAgICAgIHJldHVybiBtYXRjaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0VGFnIChtYXRjaCkge1xuICAgIHZhciB0YWdOYW1lID0gbWF0Y2gudGFnTmFtZTtcbiAgICB2YXIgdW5hcnlTbGFzaCA9IG1hdGNoLnVuYXJ5U2xhc2g7XG5cbiAgICBpZiAoZXhwZWN0SFRNTCkge1xuICAgICAgaWYgKGxhc3RUYWcgPT09ICdwJyAmJiBpc05vblBocmFzaW5nVGFnKHRhZ05hbWUpKSB7XG4gICAgICAgIHBhcnNlRW5kVGFnKGxhc3RUYWcpO1xuICAgICAgfVxuICAgICAgaWYgKGNhbkJlTGVmdE9wZW5UYWckJDEodGFnTmFtZSkgJiYgbGFzdFRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICBwYXJzZUVuZFRhZyh0YWdOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8ICEhdW5hcnlTbGFzaDtcblxuICAgIHZhciBsID0gbWF0Y2guYXR0cnMubGVuZ3RoO1xuICAgIHZhciBhdHRycyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFyZ3MgPSBtYXRjaC5hdHRyc1tpXTtcbiAgICAgIC8vIGhhY2tpc2ggd29yayBhcm91bmQgRkYgYnVnIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTc3OFxuICAgICAgaWYgKElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gJiYgYXJnc1swXS5pbmRleE9mKCdcIlwiJykgPT09IC0xKSB7XG4gICAgICAgIGlmIChhcmdzWzNdID09PSAnJykgeyBkZWxldGUgYXJnc1szXTsgfVxuICAgICAgICBpZiAoYXJnc1s0XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNF07IH1cbiAgICAgICAgaWYgKGFyZ3NbNV0gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzVdOyB9XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmdzWzNdIHx8IGFyZ3NbNF0gfHwgYXJnc1s1XSB8fCAnJztcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBhcmdzWzFdLFxuICAgICAgICB2YWx1ZTogZGVjb2RlQXR0cihcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCF1bmFyeSkge1xuICAgICAgc3RhY2sucHVzaCh7IHRhZzogdGFnTmFtZSwgbG93ZXJDYXNlZFRhZzogdGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBhdHRyczogYXR0cnMgfSk7XG4gICAgICBsYXN0VGFnID0gdGFnTmFtZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBhdHRycywgdW5hcnksIG1hdGNoLnN0YXJ0LCBtYXRjaC5lbmQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlRW5kVGFnICh0YWdOYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdmFyIHBvcywgbG93ZXJDYXNlZFRhZ05hbWU7XG4gICAgaWYgKHN0YXJ0ID09IG51bGwpIHsgc3RhcnQgPSBpbmRleDsgfVxuICAgIGlmIChlbmQgPT0gbnVsbCkgeyBlbmQgPSBpbmRleDsgfVxuXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGxvd2VyQ2FzZWRUYWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3Qgb3BlbmVkIHRhZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGZvciAocG9zID0gc3RhY2subGVuZ3RoIC0gMTsgcG9zID49IDA7IHBvcy0tKSB7XG4gICAgICAgIGlmIChzdGFja1twb3NdLmxvd2VyQ2FzZWRUYWcgPT09IGxvd2VyQ2FzZWRUYWdOYW1lKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyB0YWcgbmFtZSBpcyBwcm92aWRlZCwgY2xlYW4gc2hvcFxuICAgICAgcG9zID0gMDtcbiAgICB9XG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIC8vIENsb3NlIGFsbCB0aGUgb3BlbiBlbGVtZW50cywgdXAgdGhlIHN0YWNrXG4gICAgICBmb3IgKHZhciBpID0gc3RhY2subGVuZ3RoIC0gMTsgaSA+PSBwb3M7IGktLSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgIChpID4gcG9zIHx8ICF0YWdOYW1lKSAmJlxuICAgICAgICAgIG9wdGlvbnMud2FyblxuICAgICAgICApIHtcbiAgICAgICAgICBvcHRpb25zLndhcm4oXG4gICAgICAgICAgICAoXCJ0YWcgPFwiICsgKHN0YWNrW2ldLnRhZykgKyBcIj4gaGFzIG5vIG1hdGNoaW5nIGVuZCB0YWcuXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lbmQpIHtcbiAgICAgICAgICBvcHRpb25zLmVuZChzdGFja1tpXS50YWcsIHN0YXJ0LCBlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgb3BlbiBlbGVtZW50cyBmcm9tIHRoZSBzdGFja1xuICAgICAgc3RhY2subGVuZ3RoID0gcG9zO1xuICAgICAgbGFzdFRhZyA9IHBvcyAmJiBzdGFja1twb3MgLSAxXS50YWc7XG4gICAgfSBlbHNlIGlmIChsb3dlckNhc2VkVGFnTmFtZSA9PT0gJ2JyJykge1xuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBbXSwgdHJ1ZSwgc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsb3dlckNhc2VkVGFnTmFtZSA9PT0gJ3AnKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCBmYWxzZSwgc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5lbmQpIHtcbiAgICAgICAgb3B0aW9ucy5lbmQodGFnTmFtZSwgc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgb25SRSA9IC9eQHxedi1vbjovO1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxccysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159XSpcXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmllclJFID0gL1xcLlteLl0rL2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGhlLmRlY29kZSk7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG5cblxuXG5mdW5jdGlvbiBjcmVhdGVBU1RFbGVtZW50IChcbiAgdGFnLFxuICBhdHRycyxcbiAgcGFyZW50XG4pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAxLFxuICAgIHRhZzogdGFnLFxuICAgIGF0dHJzTGlzdDogYXR0cnMsXG4gICAgYXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgY2hpbGRyZW46IFtdXG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcblxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG5cbiAgdHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtTm9kZScpO1xuICBwcmVUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuXG4gIGRlbGltaXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7XG5cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBwcmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25zLnByZXNlcnZlV2hpdGVzcGFjZSAhPT0gZmFsc2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZFByZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgc2hvdWxkS2VlcENvbW1lbnQ6IG9wdGlvbnMuY29tbWVudHMsXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkge1xuICAgICAgLy8gY2hlY2sgbmFtZXNwYWNlLlxuICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhlcmUgaXMgb25lXG4gICAgICB2YXIgbnMgPSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50Lm5zKSB8fCBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBoYW5kbGUgSUUgc3ZnIGJ1Z1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSAmJiBucyA9PT0gJ3N2ZycpIHtcbiAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJzKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVBU1RFbGVtZW50KHRhZywgYXR0cnMsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgaWYgKG5zKSB7XG4gICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFwcGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZWxlbWVudCA9IHByZVRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucykgfHwgZWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1ByZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAgICAgICAgaW5WUHJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQcmVUYWcoZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmICghZWxlbWVudC5wcm9jZXNzZWQpIHtcbiAgICAgICAgLy8gc3RydWN0dXJhbCBkaXJlY3RpdmVzXG4gICAgICAgIHByb2Nlc3NGb3IoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NJZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc09uY2UoZWxlbWVudCk7XG4gICAgICAgIC8vIGVsZW1lbnQtc2NvcGUgc3R1ZmZcbiAgICAgICAgcHJvY2Vzc0VsZW1lbnQoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENvbnN0cmFpbnRzIChlbCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmIChlbC50YWcgPT09ICdzbG90JyB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICBcIkNhbm5vdCB1c2UgPFwiICsgKGVsLnRhZykgKyBcIj4gYXMgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBcIiArXG4gICAgICAgICAgICAgICdjb250YWluIG11bHRpcGxlIG5vZGVzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbC5hdHRyc01hcC5oYXNPd25Qcm9wZXJ0eSgndi1mb3InKSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDYW5ub3QgdXNlIHYtZm9yIG9uIHN0YXRlZnVsIGNvbXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSAnICtcbiAgICAgICAgICAgICAgJ2l0IHJlbmRlcnMgbXVsdGlwbGUgZWxlbWVudHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gdHJlZSBtYW5hZ2VtZW50XG4gICAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgcm9vdCA9IGVsZW1lbnQ7XG4gICAgICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKHJvb3QpO1xuICAgICAgfSBlbHNlIGlmICghc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIC8vIGFsbG93IHJvb3QgZWxlbWVudHMgd2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxuICAgICAgICBpZiAocm9vdC5pZiAmJiAoZWxlbWVudC5lbHNlaWYgfHwgZWxlbWVudC5lbHNlKSkge1xuICAgICAgICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKGVsZW1lbnQpO1xuICAgICAgICAgIGFkZElmQ29uZGl0aW9uKHJvb3QsIHtcbiAgICAgICAgICAgIGV4cDogZWxlbWVudC5lbHNlaWYsXG4gICAgICAgICAgICBibG9jazogZWxlbWVudFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiQ29tcG9uZW50IHRlbXBsYXRlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIHJvb3QgZWxlbWVudC4gXCIgK1xuICAgICAgICAgICAgXCJJZiB5b3UgYXJlIHVzaW5nIHYtaWYgb24gbXVsdGlwbGUgZWxlbWVudHMsIFwiICtcbiAgICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFBhcmVudCAmJiAhZWxlbWVudC5mb3JiaWRkZW4pIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICAgIHByb2Nlc3NJZkNvbmRpdGlvbnMoZWxlbWVudCwgY3VycmVudFBhcmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zbG90U2NvcGUpIHsgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICBjdXJyZW50UGFyZW50LnBsYWluID0gZmFsc2U7XG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wiZGVmYXVsdFwiJzsoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBlbGVtZW50LnBhcmVudCA9IGN1cnJlbnRQYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdW5hcnkpIHtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmRQcmUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBhcHBseSBwb3N0LXRyYW5zZm9ybXNcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHBvc3RUcmFuc2Zvcm1zLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgcG9zdFRyYW5zZm9ybXNbaSQxXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICB2YXIgbGFzdE5vZGUgPSBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gMyAmJiBsYXN0Tm9kZS50ZXh0ID09PSAnICcgJiYgIWluUHJlKSB7XG4gICAgICAgIGVsZW1lbnQuY2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4gICAgICAvLyBwb3Agc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCAtPSAxO1xuICAgICAgY3VycmVudFBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgIH0sXG5cbiAgICBjaGFyczogZnVuY3Rpb24gY2hhcnMgKHRleHQpIHtcbiAgICAgIGlmICghY3VycmVudFBhcmVudCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmICh0ZXh0ID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDb21wb25lbnQgdGVtcGxhdGUgcmVxdWlyZXMgYSByb290IGVsZW1lbnQsIHJhdGhlciB0aGFuIGp1c3QgdGV4dC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoKHRleHQgPSB0ZXh0LnRyaW0oKSkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAoXCJ0ZXh0IFxcXCJcIiArIHRleHQgKyBcIlxcXCIgb3V0c2lkZSByb290IGVsZW1lbnQgd2lsbCBiZSBpZ25vcmVkLlwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBJRSB0ZXh0YXJlYSBwbGFjZWhvbGRlciBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC5hdHRyc01hcC5wbGFjZWhvbGRlciA9PT0gdGV4dFxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuID0gY3VycmVudFBhcmVudC5jaGlsZHJlbjtcbiAgICAgIHRleHQgPSBpblByZSB8fCB0ZXh0LnRyaW0oKVxuICAgICAgICA/IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpXG4gICAgICAgIC8vIG9ubHkgcHJlc2VydmUgd2hpdGVzcGFjZSBpZiBpdHMgbm90IHJpZ2h0IGFmdGVyIGEgc3RhcnRpbmcgdGFnXG4gICAgICAgIDogcHJlc2VydmVXaGl0ZXNwYWNlICYmIGNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAoZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJzKSkpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHQgIT09ICcgJyB8fCAhY2hpbGRyZW4ubGVuZ3RoIHx8IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnRleHQgIT09ICcgJykge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogMyxcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY29tbWVudDogZnVuY3Rpb24gY29tbWVudCAodGV4dCkge1xuICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgdHlwZTogMyxcbiAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgaXNDb21tZW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NFbGVtZW50IChlbGVtZW50LCBvcHRpb25zKSB7XG4gIHByb2Nlc3NLZXkoZWxlbWVudCk7XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgYWZ0ZXJcbiAgLy8gcmVtb3Zpbmcgc3RydWN0dXJhbCBhdHRyaWJ1dGVzXG4gIGVsZW1lbnQucGxhaW4gPSAhZWxlbWVudC5rZXkgJiYgIWVsZW1lbnQuYXR0cnNMaXN0Lmxlbmd0aDtcblxuICBwcm9jZXNzUmVmKGVsZW1lbnQpO1xuICBwcm9jZXNzU2xvdChlbGVtZW50KTtcbiAgcHJvY2Vzc0NvbXBvbmVudChlbGVtZW50KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgZWxlbWVudCA9IHRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucykgfHwgZWxlbWVudDtcbiAgfVxuICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFyIGkgPSBjaGlsZHJlbi5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5baV0udHlwZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuW2ldLnRleHQgIT09ICcgJykge1xuICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxcXCJcIiArIChjaGlsZHJlbltpXS50ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFuZCB2LWVsc2UoLWlmKSBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRJZkNvbmRpdGlvbiAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29uZGl0aW9ucykge1xuICAgIGVsLmlmQ29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xuICB2YXIgb25jZSQkMSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9uY2UkJDEgIT0gbnVsbCkge1xuICAgIGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NTbG90IChlbCkge1xuICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5zbG90TmFtZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGVsLmtleSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcImBrZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFic3RyYWN0IG91dGxldHMgXCIgK1xuICAgICAgICBcImFuZCBjYW4gcG9zc2libHkgZXhwYW5kIGludG8gbXVsdGlwbGUgZWxlbWVudHMuIFwiICtcbiAgICAgICAgXCJVc2UgdGhlIGtleSBvbiBhIHdyYXBwaW5nIGVsZW1lbnQgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3RTY29wZTtcbiAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICBzbG90U2NvcGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnc2NvcGUnKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc2xvdFNjb3BlKSB7XG4gICAgICAgIHdhcm4kMihcbiAgICAgICAgICBcInRoZSBcXFwic2NvcGVcXFwiIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIHNsb3RzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCBcIiArXG4gICAgICAgICAgXCJyZXBsYWNlZCBieSBcXFwic2xvdC1zY29wZVxcXCIgc2luY2UgMi41LiBUaGUgbmV3IFxcXCJzbG90LXNjb3BlXFxcIiBhdHRyaWJ1dGUgXCIgK1xuICAgICAgICAgIFwiY2FuIGFsc28gYmUgdXNlZCBvbiBwbGFpbiBlbGVtZW50cyBpbiBhZGRpdGlvbiB0byA8dGVtcGxhdGU+IHRvIFwiICtcbiAgICAgICAgICBcImRlbm90ZSBzY29wZWQgc2xvdHMuXCIsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZWwuc2xvdFNjb3BlID0gc2xvdFNjb3BlIHx8IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzbG90LXNjb3BlJyk7XG4gICAgfSBlbHNlIGlmICgoc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nsb3Qtc2NvcGUnKSkpIHtcbiAgICAgIGVsLnNsb3RTY29wZSA9IHNsb3RTY29wZTtcbiAgICB9XG4gICAgdmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcbiAgICBpZiAoc2xvdFRhcmdldCkge1xuICAgICAgZWwuc2xvdFRhcmdldCA9IHNsb3RUYXJnZXQgPT09ICdcIlwiJyA/ICdcImRlZmF1bHRcIicgOiBzbG90VGFyZ2V0O1xuICAgICAgLy8gcHJlc2VydmUgc2xvdCBhcyBhbiBhdHRyaWJ1dGUgZm9yIG5hdGl2ZSBzaGFkb3cgRE9NIGNvbXBhdFxuICAgICAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90cy5cbiAgICAgIGlmICghZWwuc2xvdFNjb3BlKSB7XG4gICAgICAgIGFkZEF0dHIoZWwsICdzbG90Jywgc2xvdFRhcmdldCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDb21wb25lbnQgKGVsKSB7XG4gIHZhciBiaW5kaW5nO1xuICBpZiAoKGJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2lzJykpKSB7XG4gICAgZWwuY29tcG9uZW50ID0gYmluZGluZztcbiAgfVxuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2lubGluZS10ZW1wbGF0ZScpICE9IG51bGwpIHtcbiAgICBlbC5pbmxpbmVUZW1wbGF0ZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGksIGwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAgZm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJhd05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFsdWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xuICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xuICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBtb2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1lKTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShtb2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsgLy8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAgICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZhbHVlKTtcbiAgICAgICAgaXNQcm9wID0gZmFsc2U7XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3ApIHtcbiAgICAgICAgICAgIGlzUHJvcCA9IHRydWU7XG4gICAgICAgICAgICBuYW1lID0gY2FtZWxpemUobmFtZSk7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lubmVySHRtbCcpIHsgbmFtZSA9ICdpbm5lckhUTUwnOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuY2FtZWwpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAgICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgKFwidXBkYXRlOlwiICsgKGNhbWVsaXplKG5hbWUpKSksXG4gICAgICAgICAgICAgIGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBcIiRldmVudFwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUHJvcCB8fCAoXG4gICAgICAgICAgIWVsLmNvbXBvbmVudCAmJiBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSlcbiAgICAgICAgKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFnID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIEV4cGFuZCBpbnB1dFt2LW1vZGVsXSB3aXRoIGR5YW5taWMgdHlwZSBiaW5kaW5ncyBpbnRvIHYtaWYtZWxzZSBjaGFpbnNcbiAqIFR1cm4gdGhpczpcbiAqICAgPGlucHV0IHYtbW9kZWw9XCJkYXRhW3R5cGVdXCIgOnR5cGU9XCJ0eXBlXCI+XG4gKiBpbnRvIHRoaXM6XG4gKiAgIDxpbnB1dCB2LWlmPVwidHlwZSA9PT0gJ2NoZWNrYm94J1wiIHR5cGU9XCJjaGVja2JveFwiIHYtbW9kZWw9XCJkYXRhW3R5cGVdXCI+XG4gKiAgIDxpbnB1dCB2LWVsc2UtaWY9XCJ0eXBlID09PSAncmFkaW8nXCIgdHlwZT1cInJhZGlvXCIgdi1tb2RlbD1cImRhdGFbdHlwZV1cIj5cbiAqICAgPGlucHV0IHYtZWxzZSA6dHlwZT1cInR5cGVcIiB2LW1vZGVsPVwiZGF0YVt0eXBlXVwiPlxuICovXG5cbmZ1bmN0aW9uIHByZVRyYW5zZm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG4gIGlmIChlbC50YWcgPT09ICdpbnB1dCcpIHtcbiAgICB2YXIgbWFwID0gZWwuYXR0cnNNYXA7XG4gICAgaWYgKG1hcFsndi1tb2RlbCddICYmIChtYXBbJ3YtYmluZDp0eXBlJ10gfHwgbWFwWyc6dHlwZSddKSkge1xuICAgICAgdmFyIHR5cGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0eXBlJyk7XG4gICAgICB2YXIgaWZDb25kaXRpb24gPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicsIHRydWUpO1xuICAgICAgdmFyIGlmQ29uZGl0aW9uRXh0cmEgPSBpZkNvbmRpdGlvbiA/IChcIiYmKFwiICsgaWZDb25kaXRpb24gKyBcIilcIikgOiBcIlwiO1xuICAgICAgLy8gMS4gY2hlY2tib3hcbiAgICAgIHZhciBicmFuY2gwID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIC8vIHByb2Nlc3MgZm9yIG9uIHRoZSBtYWluIG5vZGVcbiAgICAgIHByb2Nlc3NGb3IoYnJhbmNoMCk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDAsICd0eXBlJywgJ2NoZWNrYm94Jyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gwLCBvcHRpb25zKTtcbiAgICAgIGJyYW5jaDAucHJvY2Vzc2VkID0gdHJ1ZTsgLy8gcHJldmVudCBpdCBmcm9tIGRvdWJsZS1wcm9jZXNzZWRcbiAgICAgIGJyYW5jaDAuaWYgPSBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J2NoZWNrYm94J1wiICsgaWZDb25kaXRpb25FeHRyYTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBicmFuY2gwLmlmLFxuICAgICAgICBibG9jazogYnJhbmNoMFxuICAgICAgfSk7XG4gICAgICAvLyAyLiBhZGQgcmFkaW8gZWxzZS1pZiBjb25kaXRpb25cbiAgICAgIHZhciBicmFuY2gxID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMSwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDEsICd0eXBlJywgJ3JhZGlvJyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gxLCBvcHRpb25zKTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J3JhZGlvJ1wiICsgaWZDb25kaXRpb25FeHRyYSxcbiAgICAgICAgYmxvY2s6IGJyYW5jaDFcbiAgICAgIH0pO1xuICAgICAgLy8gMy4gb3RoZXJcbiAgICAgIHZhciBicmFuY2gyID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMiwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDIsICc6dHlwZScsIHR5cGVCaW5kaW5nKTtcbiAgICAgIHByb2Nlc3NFbGVtZW50KGJyYW5jaDIsIG9wdGlvbnMpO1xuICAgICAgYWRkSWZDb25kaXRpb24oYnJhbmNoMCwge1xuICAgICAgICBleHA6IGlmQ29uZGl0aW9uLFxuICAgICAgICBibG9jazogYnJhbmNoMlxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYnJhbmNoMFxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZUFTVEVsZW1lbnQgKGVsKSB7XG4gIHJldHVybiBjcmVhdGVBU1RFbGVtZW50KGVsLnRhZywgZWwuYXR0cnNMaXN0LnNsaWNlKCksIGVsLnBhcmVudClcbn1cblxuZnVuY3Rpb24gYWRkUmF3QXR0ciAoZWwsIG5hbWUsIHZhbHVlKSB7XG4gIGVsLmF0dHJzTWFwW25hbWVdID0gdmFsdWU7XG4gIGVsLmF0dHJzTGlzdC5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxuXG52YXIgbW9kZWwkMiA9IHtcbiAgcHJlVHJhbnNmb3JtTm9kZTogcHJlVHJhbnNmb3JtTm9kZVxufTtcblxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5bGUkMSxcbiAgbW9kZWwkMlxuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChkaXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVlLFxuICBtb2R1bGVzOiBtb2R1bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAgaXNQcmVUYWc6IGlzUHJlVGFnLFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3AsXG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcsXG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0VGFnTmFtZXNwYWNlLFxuICBzdGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3QgYWJsZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAxLCBsJDEgPSBub2RlLmlmQ29uZGl0aW9ucy5sZW5ndGg7IGkkMSA8IGwkMTsgaSQxKyspIHtcbiAgICAgICAgdmFyIGJsb2NrID0gbm9kZS5pZkNvbmRpdGlvbnNbaSQxXS5ibG9jaztcbiAgICAgICAgbWFya1N0YXRpYyQxKGJsb2NrKTtcbiAgICAgICAgaWYgKCFibG9jay5zdGF0aWMpIHtcbiAgICAgICAgICBub2RlLnN0YXRpYyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNSb290cyAobm9kZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgaWYgKG5vZGUuc3RhdGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5zdGF0aWNJbkZvciA9IGlzSW5Gb3I7XG4gICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlmeSBhcyBhIHN0YXRpYyByb290LCBpdCBzaG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8gYXJlIG5vdCBqdXN0IHN0YXRpYyB0ZXh0LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcgb3V0IHdpbGxcbiAgICAvLyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9mZiB0byBqdXN0IGFsd2F5cyByZW5kZXIgaXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYmICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgbm9kZS5jaGlsZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3QgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlzSW5Gb3IgfHwgISFub2RlLmZvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9ucykge1xuICAgICAgZm9yICh2YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlvbnMubGVuZ3RoOyBpJDEgPCBsJDE7IGkkMSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhub2RlLmlmQ29uZGl0aW9uc1tpJDFdLmJsb2NrLCBpc0luRm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAvLyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gMykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5wcmUgfHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAgICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5vZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxcKC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVsbCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIgbW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4gIHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5HdWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5zaGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRhOiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICByaWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZlLFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZlbnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBjbGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBuYW1lID09PSAnY2xpY2snICYmXG4gICAgICBoYW5kbGVyICYmIGhhbmRsZXIubW9kaWZpZXJzICYmIGhhbmRsZXIubW9kaWZpZXJzLnJpZ2h0XG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlVzZSBcXFwiY29udGV4dG1lbnVcXFwiIGluc3RlYWQgb2YgXFxcImNsaWNrLnJpZ2h0XFxcIiBzaW5jZSByaWdodCBjbGlja3MgXCIgK1xuICAgICAgICBcImRvIG5vdCBhY3R1YWxseSBmaXJlIFxcXCJjbGlja1xcXCIgZXZlbnRzLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXMgKz0gXCJcXFwiXCIgKyBuYW1lICsgXCJcXFwiOlwiICsgKGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcikpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnfSdcbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAoXG4gIG5hbWUsXG4gIGhhbmRsZXJcbikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gZ2VuSGFuZGxlcihuYW1lLCBoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG5cbiAgaWYgKCFoYW5kbGVyLm1vZGlmaWVycykge1xuICAgIHJldHVybiBpc01ldGhvZFBhdGggfHwgaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgID8gaGFuZGxlci52YWx1ZVxuICAgICAgOiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIpIC8vIGlubGluZSBzdGF0ZW1lbnRcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29kZSA9ICcnO1xuICAgIHZhciBnZW5Nb2RpZmllckNvZGUgPSAnJztcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBoYW5kbGVyLm1vZGlmaWVycykge1xuICAgICAgaWYgKG1vZGlmaWVyQ29kZVtrZXldKSB7XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBtb2RpZmllckNvZGVba2V5XTtcbiAgICAgICAgLy8gbGVmdC9yaWdodFxuICAgICAgICBpZiAoa2V5Q29kZXNba2V5XSkge1xuICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2V4YWN0Jykge1xuICAgICAgICB2YXIgbW9kaWZpZXJzID0gKGhhbmRsZXIubW9kaWZpZXJzKTtcbiAgICAgICAgZ2VuTW9kaWZpZXJDb2RlICs9IGdlbkd1YXJkKFxuICAgICAgICAgIFsnY3RybCcsICdzaGlmdCcsICdhbHQnLCAnbWV0YSddXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChrZXlNb2RpZmllcikgeyByZXR1cm4gIW1vZGlmaWVyc1trZXlNb2RpZmllcl07IH0pXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChrZXlNb2RpZmllcikgeyByZXR1cm4gKFwiJGV2ZW50LlwiICsga2V5TW9kaWZpZXIgKyBcIktleVwiKTsgfSlcbiAgICAgICAgICAgIC5qb2luKCd8fCcpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBjb2RlICs9IGdlbktleUZpbHRlcihrZXlzKTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIG1vZGlmaWVycyBsaWtlIHByZXZlbnQgYW5kIHN0b3AgZ2V0IGV4ZWN1dGVkIGFmdGVyIGtleSBmaWx0ZXJpbmdcbiAgICBpZiAoZ2VuTW9kaWZpZXJDb2RlKSB7XG4gICAgICBjb2RlICs9IGdlbk1vZGlmaWVyQ29kZTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZXJDb2RlID0gaXNNZXRob2RQYXRoXG4gICAgICA/IGhhbmRsZXIudmFsdWUgKyAnKCRldmVudCknXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICAgID8gKFwiKFwiICsgKGhhbmRsZXIudmFsdWUpICsgXCIpKCRldmVudClcIilcbiAgICAgICAgOiBoYW5kbGVyLnZhbHVlO1xuICAgIHJldHVybiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgY29kZSArIGhhbmRsZXJDb2RlICsgXCJ9XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuS2V5RmlsdGVyIChrZXlzKSB7XG4gIHJldHVybiAoXCJpZighKCdidXR0b24nIGluICRldmVudCkmJlwiICsgKGtleXMubWFwKGdlbkZpbHRlckNvZGUpLmpvaW4oJyYmJykpICsgXCIpcmV0dXJuIG51bGw7XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIgY29kZSA9IGtleUNvZGVzW2tleV07XG4gIHJldHVybiAoXG4gICAgXCJfaygkZXZlbnQua2V5Q29kZSxcIiArXG4gICAgKEpTT04uc3RyaW5naWZ5KGtleSkpICsgXCIsXCIgK1xuICAgIChKU09OLnN0cmluZ2lmeShjb2RlKSkgKyBcIixcIiArXG4gICAgXCIkZXZlbnQua2V5KVwiXG4gIClcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG9uIChlbCwgZGlyKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRpci5tb2RpZmllcnMpIHtcbiAgICB3YXJuKFwidi1vbiB3aXRob3V0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgbW9kaWZpZXJzLlwiKTtcbiAgfVxuICBlbC53cmFwTGlzdGVuZXJzID0gZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChcIl9nKFwiICsgY29kZSArIFwiLFwiICsgKGRpci52YWx1ZSkgKyBcIilcIik7IH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kJDEgKGVsLCBkaXIpIHtcbiAgZWwud3JhcERhdGEgPSBmdW5jdGlvbiAoY29kZSkge1xuICAgIHJldHVybiAoXCJfYihcIiArIGNvZGUgKyBcIiwnXCIgKyAoZWwudGFnKSArIFwiJyxcIiArIChkaXIudmFsdWUpICsgXCIsXCIgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnByb3AgPyAndHJ1ZScgOiAnZmFsc2UnKSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmllcnMuc3luYyA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAgb246IG9uLFxuICBiaW5kOiBiaW5kJDEsXG4gIGNsb2FrOiBub29wXG59O1xuXG4vKiAgKi9cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1bmN0aW9uIENvZGVnZW5TdGF0ZSAob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLndhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICB0aGlzLmRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgdGhpcy5kaXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwgYmFzZURpcmVjdGl2ZXMpLCBvcHRpb25zLmRpcmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhpcy5vbmNlSWQgPSAwO1xuICB0aGlzLnN0YXRpY1JlbmRlckZucyA9IFtdO1xufTtcblxuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0gbmV3IENvZGVnZW5TdGF0ZShvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCwgc3RhdGUpIDogJ19jKFwiZGl2XCIpJztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsLCBzdGF0ZSkge1xuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkgfHwgJ3ZvaWQgMCdcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVybiBnZW5TbG90KGVsLCBzdGF0ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyBjb21wb25lbnQgb3IgZWxlbWVudFxuICAgIHZhciBjb2RlO1xuICAgIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICAgIGNvZGUgPSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50LCBlbCwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5kZWZpbmVkIDogZ2VuRGF0YSQyKGVsLCBzdGF0ZSk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygnXCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAvLyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUudHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnRyYW5zZm9ybXNbaV0oZWwsIGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRpYyBzdWItdHJlZXMgb3V0XG5mdW5jdGlvbiBnZW5TdGF0aWMgKGVsLCBzdGF0ZSkge1xuICBlbC5zdGF0aWNQcm9jZXNzZWQgPSB0cnVlO1xuICBzdGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRlLnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5mdW5jdGlvbiBnZW5PbmNlIChlbCwgc3RhdGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRlLndhcm4oXG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwiXG4gICAgICApO1xuICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVudChlbCwgc3RhdGUpKSArIFwiLFwiICsgKHN0YXRlLm9uY2VJZCsrKSArIFwiLFwiICsga2V5ICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuSWYgKFxuICBlbCxcbiAgc3RhdGUsXG4gIGFsdEdlbixcbiAgYWx0RW1wdHlcbikge1xuICBlbC5pZlByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gZ2VuSWZDb25kaXRpb25zKGVsLmlmQ29uZGl0aW9ucy5zbGljZSgpLCBzdGF0ZSwgYWx0R2VuLCBhbHRFbXB0eSlcbn1cblxuZnVuY3Rpb24gZ2VuSWZDb25kaXRpb25zIChcbiAgY29uZGl0aW9ucyxcbiAgc3RhdGUsXG4gIGFsdEdlbixcbiAgYWx0RW1wdHlcbikge1xuICBpZiAoIWNvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGFsdEVtcHR5IHx8ICdfZSgpJ1xuICB9XG5cbiAgdmFyIGNvbmRpdGlvbiA9IGNvbmRpdGlvbnMuc2hpZnQoKTtcbiAgaWYgKGNvbmRpdGlvbi5leHApIHtcbiAgICByZXR1cm4gKFwiKFwiICsgKGNvbmRpdGlvbi5leHApICsgXCIpP1wiICsgKGdlblRlcm5hcnlFeHAoY29uZGl0aW9uLmJsb2NrKSkgKyBcIjpcIiArIChnZW5JZkNvbmRpdGlvbnMoY29uZGl0aW9ucywgc3RhdGUsIGFsdEdlbiwgYWx0RW1wdHkpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiXCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSlcbiAgfVxuXG4gIC8vIHYtaWYgd2l0aCB2LW9uY2Ugc2hvdWxkIGdlbmVyYXRlIGNvZGUgbGlrZSAoYSk/X20oMCk6X20oMSlcbiAgZnVuY3Rpb24gZ2VuVGVybmFyeUV4cCAoZWwpIHtcbiAgICByZXR1cm4gYWx0R2VuXG4gICAgICA/IGFsdEdlbihlbCwgc3RhdGUpXG4gICAgICA6IGVsLm9uY2VcbiAgICAgICAgPyBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgICAgICAgOiBnZW5FbGVtZW50KGVsLCBzdGF0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5Gb3IgKFxuICBlbCxcbiAgc3RhdGUsXG4gIGFsdEdlbixcbiAgYWx0SGVscGVyXG4pIHtcbiAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0gZWwuYWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixcIiArIChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgc3RhdGUubWF5YmVDb21wb25lbnQoZWwpICYmXG4gICAgZWwudGFnICE9PSAnc2xvdCcgJiZcbiAgICBlbC50YWcgIT09ICd0ZW1wbGF0ZScgJiZcbiAgICAhZWwua2V5XG4gICkge1xuICAgIHN0YXRlLndhcm4oXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiAoYWx0SGVscGVyIHx8ICdfbCcpICsgXCIoKFwiICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoKGFsdEdlbiB8fCBnZW5FbGVtZW50KShlbCwgc3RhdGUpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDIgKGVsLCBzdGF0ZSkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBkaXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhleSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwsIHN0YXRlKTtcbiAgaWYgKGRpcnMpIHsgZGF0YSArPSBkaXJzICsgJywnOyB9XG5cbiAgLy8ga2V5XG4gIGlmIChlbC5rZXkpIHtcbiAgICBkYXRhICs9IFwia2V5OlwiICsgKGVsLmtleSkgKyBcIixcIjtcbiAgfVxuICAvLyByZWZcbiAgaWYgKGVsLnJlZikge1xuICAgIGRhdGEgKz0gXCJyZWY6XCIgKyAoZWwucmVmKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5yZWZJbkZvcikge1xuICAgIGRhdGEgKz0gXCJyZWZJbkZvcjp0cnVlLFwiO1xuICB9XG4gIC8vIHByZVxuICBpZiAoZWwucHJlKSB7XG4gICAgZGF0YSArPSBcInByZTp0cnVlLFwiO1xuICB9XG4gIC8vIHJlY29yZCBvcmlnaW5hbCB0YWcgbmFtZSBmb3IgY29tcG9uZW50cyB1c2luZyBcImlzXCIgYXR0cmlidXRlXG4gIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICBkYXRhICs9IFwidGFnOlxcXCJcIiArIChlbC50YWcpICsgXCJcXFwiLFwiO1xuICB9XG4gIC8vIG1vZHVsZSBkYXRhIGdlbmVyYXRpb24gZnVuY3Rpb25zXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUuZGF0YUdlbkZucy5sZW5ndGg7IGkrKykge1xuICAgIGRhdGEgKz0gc3RhdGUuZGF0YUdlbkZuc1tpXShlbCk7XG4gIH1cbiAgLy8gYXR0cmlidXRlc1xuICBpZiAoZWwuYXR0cnMpIHtcbiAgICBkYXRhICs9IFwiYXR0cnM6e1wiICsgKGdlblByb3BzKGVsLmF0dHJzKSkgKyBcIn0sXCI7XG4gIH1cbiAgLy8gRE9NIHByb3BzXG4gIGlmIChlbC5wcm9wcykge1xuICAgIGRhdGEgKz0gXCJkb21Qcm9wczp7XCIgKyAoZ2VuUHJvcHMoZWwucHJvcHMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBldmVudCBoYW5kbGVyc1xuICBpZiAoZWwuZXZlbnRzKSB7XG4gICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwuZXZlbnRzLCBmYWxzZSwgc3RhdGUud2FybikpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLm5hdGl2ZUV2ZW50cywgdHJ1ZSwgc3RhdGUud2FybikpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2xvdFRhcmdldCAmJiAhZWwuc2xvdFNjb3BlKSB7XG4gICAgZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xvdFRhcmdldCkgKyBcIixcIjtcbiAgfVxuICAvLyBzY29wZWQgc2xvdHNcbiAgaWYgKGVsLnNjb3BlZFNsb3RzKSB7XG4gICAgZGF0YSArPSAoZ2VuU2NvcGVkU2xvdHMoZWwuc2NvcGVkU2xvdHMsIHN0YXRlKSkgKyBcIixcIjtcbiAgfVxuICAvLyBjb21wb25lbnQgdi1tb2RlbFxuICBpZiAoZWwubW9kZWwpIHtcbiAgICBkYXRhICs9IFwibW9kZWw6e3ZhbHVlOlwiICsgKGVsLm1vZGVsLnZhbHVlKSArIFwiLGNhbGxiYWNrOlwiICsgKGVsLm1vZGVsLmNhbGxiYWNrKSArIFwiLGV4cHJlc3Npb246XCIgKyAoZWwubW9kZWwuZXhwcmVzc2lvbikgKyBcIn0sXCI7XG4gIH1cbiAgLy8gaW5saW5lLXRlbXBsYXRlXG4gIGlmIChlbC5pbmxpbmVUZW1wbGF0ZSkge1xuICAgIHZhciBpbmxpbmVUZW1wbGF0ZSA9IGdlbklubGluZVRlbXBsYXRlKGVsLCBzdGF0ZSk7XG4gICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsgXCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30nO1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEgPSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICAvLyB2LW9uIGRhdGEgd3JhcFxuICBpZiAoZWwud3JhcExpc3RlbmVycykge1xuICAgIGRhdGEgPSBlbC53cmFwTGlzdGVuZXJzKGRhdGEpO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIGdlbkRpcmVjdGl2ZXMgKGVsLCBzdGF0ZSkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFsc2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGlycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gc3RhdGUuZGlyZWN0aXZlc1tkaXIubmFtZV07XG4gICAgaWYgKGdlbikge1xuICAgICAgLy8gY29tcGlsZS10aW1lIGRpcmVjdGl2ZSB0aGF0IG1hbmlwdWxhdGVzIEFTVC5cbiAgICAgIC8vIHJldHVybnMgdHJ1ZSBpZiBpdCBhbHNvIG5lZWRzIGEgcnVudGltZSBjb3VudGVycGFydC5cbiAgICAgIG5lZWRSdW50aW1lID0gISFnZW4oZWwsIGRpciwgc3RhdGUud2Fybik7XG4gICAgfVxuICAgIGlmIChuZWVkUnVudGltZSkge1xuICAgICAgaGFzUnVudGltZSA9IHRydWU7XG4gICAgICByZXMgKz0gXCJ7bmFtZTpcXFwiXCIgKyAoZGlyLm5hbWUpICsgXCJcXFwiLHJhd05hbWU6XFxcIlwiICsgKGRpci5yYXdOYW1lKSArIFwiXFxcIlwiICsgKGRpci52YWx1ZSA/IChcIix2YWx1ZTooXCIgKyAoZGlyLnZhbHVlKSArIFwiKSxleHByZXNzaW9uOlwiICsgKEpTT04uc3RyaW5naWZ5KGRpci52YWx1ZSkpKSA6ICcnKSArIChkaXIuYXJnID8gKFwiLGFyZzpcXFwiXCIgKyAoZGlyLmFyZykgKyBcIlxcXCJcIikgOiAnJykgKyAoZGlyLm1vZGlmaWVycyA/IChcIixtb2RpZmllcnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykpKSA6ICcnKSArIFwifSxcIjtcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChlbCwgc3RhdGUpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGFzdC50eXBlICE9PSAxXG4gICkpIHtcbiAgICBzdGF0ZS53YXJuKCdJbmxpbmUtdGVtcGxhdGUgY29tcG9uZW50cyBtdXN0IGhhdmUgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudC4nKTtcbiAgfVxuICBpZiAoYXN0LnR5cGUgPT09IDEpIHtcbiAgICB2YXIgaW5saW5lUmVuZGVyRm5zID0gZ2VuZXJhdGUoYXN0LCBzdGF0ZS5vcHRpb25zKTtcbiAgICByZXR1cm4gKFwiaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpe1wiICsgKGlubGluZVJlbmRlckZucy5yZW5kZXIpICsgXCJ9LHN0YXRpY1JlbmRlckZuczpbXCIgKyAoaW5saW5lUmVuZGVyRm5zLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChcImZ1bmN0aW9uKCl7XCIgKyBjb2RlICsgXCJ9XCIpOyB9KS5qb2luKCcsJykpICsgXCJdfVwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3RzIChcbiAgc2xvdHMsXG4gIHN0YXRlXG4pIHtcbiAgcmV0dXJuIChcInNjb3BlZFNsb3RzOl91KFtcIiArIChPYmplY3Qua2V5cyhzbG90cykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBnZW5TY29wZWRTbG90KGtleSwgc2xvdHNba2V5XSwgc3RhdGUpXG4gICAgfSkuam9pbignLCcpKSArIFwiXSlcIilcbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdCAoXG4gIGtleSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtcbiAgaWYgKGVsLmZvciAmJiAhZWwuZm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbkZvclNjb3BlZFNsb3Qoa2V5LCBlbCwgc3RhdGUpXG4gIH1cbiAgdmFyIGZuID0gXCJmdW5jdGlvbihcIiArIChTdHJpbmcoZWwuc2xvdFNjb3BlKSkgKyBcIil7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJ1xuICAgICAgPyBlbC5pZlxuICAgICAgICA/ICgoZWwuaWYpICsgXCI/XCIgKyAoZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndW5kZWZpbmVkJykgKyBcIjp1bmRlZmluZWRcIilcbiAgICAgICAgOiBnZW5DaGlsZHJlbihlbCwgc3RhdGUpIHx8ICd1bmRlZmluZWQnXG4gICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKSkgKyBcIn1cIjtcbiAgcmV0dXJuIChcIntrZXk6XCIgKyBrZXkgKyBcIixmbjpcIiArIGZuICsgXCJ9XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkZvclNjb3BlZFNsb3QgKFxuICBrZXksXG4gIGVsLFxuICBzdGF0ZVxuKSB7XG4gIHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRlcmF0b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkgOiAnJztcbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKGdlblNjb3BlZFNsb3Qoa2V5LCBlbCwgc3RhdGUpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5DaGlsZHJlbiAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgY2hlY2tTa2lwLFxuICBhbHRHZW5FbGVtZW50LFxuICBhbHRHZW5Ob2RlXG4pIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGRyZW47XG4gIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICB2YXIgZWwkMSA9IGNoaWxkcmVuWzBdO1xuICAgIC8vIG9wdGltaXplIHNpbmdsZSB2LWZvclxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIGVsJDEuZm9yICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3RlbXBsYXRlJyAmJlxuICAgICAgZWwkMS50YWcgIT09ICdzbG90J1xuICAgICkge1xuICAgICAgcmV0dXJuIChhbHRHZW5FbGVtZW50IHx8IGdlbkVsZW1lbnQpKGVsJDEsIHN0YXRlKVxuICAgIH1cbiAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUgPSBjaGVja1NraXBcbiAgICAgID8gZ2V0Tm9ybWFsaXphdGlvblR5cGUoY2hpbGRyZW4sIHN0YXRlLm1heWJlQ29tcG9uZW50KVxuICAgICAgOiAwO1xuICAgIHZhciBnZW4gPSBhbHRHZW5Ob2RlIHx8IGdlbk5vZGU7XG4gICAgcmV0dXJuIChcIltcIiArIChjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGdlbihjLCBzdGF0ZSk7IH0pLmpvaW4oJywnKSkgKyBcIl1cIiArIChub3JtYWxpemF0aW9uVHlwZSA/IChcIixcIiArIG5vcm1hbGl6YXRpb25UeXBlKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhlIG5vcm1hbGl6YXRpb24gbmVlZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBub3JtYWxpemF0aW9uIG5lZWRlZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChwb3NzaWJsZSAxLWxldmVsIGRlZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0aW9uIG5lZWRlZFxuZnVuY3Rpb24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKFxuICBjaGlsZHJlbixcbiAgbWF5YmVDb21wb25lbnRcbikge1xuICB2YXIgcmVzID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChlbC50eXBlICE9PSAxKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAobmVlZHNOb3JtYWxpemF0aW9uKGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBuZWVkc05vcm1hbGl6YXRpb24oYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMjtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChtYXliZUNvbXBvbmVudChlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbWF5YmVDb21wb25lbnQoYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBuZWVkc05vcm1hbGl6YXRpb24gKGVsKSB7XG4gIHJldHVybiBlbC5mb3IgIT09IHVuZGVmaW5lZCB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScgfHwgZWwudGFnID09PSAnc2xvdCdcbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSwgc3RhdGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUsIHN0YXRlKVxuICB9IGlmIChub2RlLnR5cGUgPT09IDMgJiYgbm9kZS5pc0NvbW1lbnQpIHtcbiAgICByZXR1cm4gZ2VuQ29tbWVudChub2RlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZW5UZXh0KG5vZGUpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuVGV4dCAodGV4dCkge1xuICByZXR1cm4gKFwiX3YoXCIgKyAodGV4dC50eXBlID09PSAyXG4gICAgPyB0ZXh0LmV4cHJlc3Npb24gLy8gbm8gbmVlZCBmb3IgKCkgYmVjYXVzZSBhbHJlYWR5IHdyYXBwZWQgaW4gX3MoKVxuICAgIDogdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzKEpTT04uc3RyaW5naWZ5KHRleHQudGV4dCkpKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Db21tZW50IChjb21tZW50KSB7XG4gIHJldHVybiAoXCJfZShcIiArIChKU09OLnN0cmluZ2lmeShjb21tZW50LnRleHQpKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TbG90IChlbCwgc3RhdGUpIHtcbiAgdmFyIHNsb3ROYW1lID0gZWwuc2xvdE5hbWUgfHwgJ1wiZGVmYXVsdFwiJztcbiAgdmFyIGNoaWxkcmVuID0gZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKTtcbiAgdmFyIHJlcyA9IFwiX3QoXCIgKyBzbG90TmFtZSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKTtcbiAgdmFyIGF0dHJzID0gZWwuYXR0cnMgJiYgKFwie1wiICsgKGVsLmF0dHJzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gKChjYW1lbGl6ZShhLm5hbWUpKSArIFwiOlwiICsgKGEudmFsdWUpKTsgfSkuam9pbignLCcpKSArIFwifVwiKTtcbiAgdmFyIGJpbmQkJDEgPSBlbC5hdHRyc01hcFsndi1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYgIWNoaWxkcmVuKSB7XG4gICAgcmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtcbiAgICByZXMgKz0gXCIsXCIgKyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJlcyArPSAoYXR0cnMgPyAnJyA6ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJldHVybiByZXMgKyAnKSdcbn1cblxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRha2UgaXQgYXMgYXJndW1lbnQgdG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxuZnVuY3Rpb24gZ2VuQ29tcG9uZW50IChcbiAgY29tcG9uZW50TmFtZSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlLCB0cnVlKTtcbiAgcmV0dXJuIChcIl9jKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwiICsgKGdlbkRhdGEkMihlbCwgc3RhdGUpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tpXTtcbiAgICByZXMgKz0gXCJcXFwiXCIgKyAocHJvcC5uYW1lKSArIFwiXFxcIjpcIiArICh0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMocHJvcC52YWx1ZSkpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbn1cblxuLy8gIzM4OTUsICM0MjY4XG5mdW5jdGlvbiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMgKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxcXHUyMDI4JylcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5Jylcbn1cblxuLyogICovXG5cbi8vIHRoZXNlIGtleXdvcmRzIHNob3VsZCBub3QgYXBwZWFyIGluc2lkZSBleHByZXNzaW9ucywgYnV0IG9wZXJhdG9ycyBsaWtlXG4vLyB0eXBlb2YsIGluc3RhbmNlb2YgYW5kIGluIGFyZSBhbGxvd2VkXG52YXIgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3QsJyArXG4gICdzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsJyArXG4gICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRzJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxifFxcXFxiJykgKyAnXFxcXGInKTtcblxuLy8gdGhlc2UgdW5hcnkgb3BlcmF0b3JzIHNob3VsZCBub3QgYmUgdXNlZCBhcyBwcm9wZXJ0eS9tZXRob2QgbmFtZXNcbnZhciB1bmFyeU9wZXJhdG9yc1JFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZGVsZXRlLHR5cGVvZix2b2lkJ1xuKS5zcGxpdCgnLCcpLmpvaW4oJ1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCl8XFxcXGInKSArICdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpJyk7XG5cbi8vIGNoZWNrIHZhbGlkIGlkZW50aWZpZXIgZm9yIHYtZm9yXG52YXIgaWRlbnRSRSA9IC9bQS1aYS16XyRdW1xcdyRdKi87XG5cbi8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNcbnZhciBzdHJpcFN0cmluZ1JFID0gLycoPzpbXidcXFxcXXxcXFxcLikqJ3xcIig/OlteXCJcXFxcXXxcXFxcLikqXCJ8YCg/OlteYFxcXFxdfFxcXFwuKSpcXCRcXHt8XFx9KD86W15gXFxcXF18XFxcXC4pKmB8YCg/OlteYFxcXFxdfFxcXFwuKSpgL2c7XG5cbi8vIGRldGVjdCBwcm9ibGVtYXRpYyBleHByZXNzaW9ucyBpbiBhIHRlbXBsYXRlXG5mdW5jdGlvbiBkZXRlY3RFcnJvcnMgKGFzdCkge1xuICB2YXIgZXJyb3JzID0gW107XG4gIGlmIChhc3QpIHtcbiAgICBjaGVja05vZGUoYXN0LCBlcnJvcnMpO1xuICB9XG4gIHJldHVybiBlcnJvcnNcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlIChub2RlLCBlcnJvcnMpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZS5hdHRyc01hcCkge1xuICAgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5hdHRyc01hcFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICd2LWZvcicpIHtcbiAgICAgICAgICAgIGNoZWNrRm9yKG5vZGUsIChcInYtZm9yPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICBjaGVja0V2ZW50KHZhbHVlLCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hlY2tOb2RlKG5vZGUuY2hpbGRyZW5baV0sIGVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMikge1xuICAgIGNoZWNrRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24sIG5vZGUudGV4dCwgZXJyb3JzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V2ZW50IChleHAsIHRleHQsIGVycm9ycykge1xuICB2YXIgc3RpcHBlZCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKTtcbiAgdmFyIGtleXdvcmRNYXRjaCA9IHN0aXBwZWQubWF0Y2godW5hcnlPcGVyYXRvcnNSRSk7XG4gIGlmIChrZXl3b3JkTWF0Y2ggJiYgc3RpcHBlZC5jaGFyQXQoa2V5d29yZE1hdGNoLmluZGV4IC0gMSkgIT09ICckJykge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgXCJhdm9pZCB1c2luZyBKYXZhU2NyaXB0IHVuYXJ5IG9wZXJhdG9yIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlcbiAgICApO1xuICB9XG4gIGNoZWNrRXhwcmVzc2lvbihleHAsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0ZXh0LCBlcnJvcnMpIHtcbiAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZm9yIHx8ICcnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5hbGlhcywgJ3YtZm9yIGFsaWFzJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjIsICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSWRlbnRpZmllciAoaWRlbnQsIHR5cGUsIHRleHQsIGVycm9ycykge1xuICBpZiAodHlwZW9mIGlkZW50ID09PSAnc3RyaW5nJyAmJiAhaWRlbnRSRS50ZXN0KGlkZW50KSkge1xuICAgIGVycm9ycy5wdXNoKChcImludmFsaWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFeHByZXNzaW9uIChleHAsIHRleHQsIGVycm9ycykge1xuICB0cnkge1xuICAgIG5ldyBGdW5jdGlvbigoXCJyZXR1cm4gXCIgKyBleHApKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciBrZXl3b3JkTWF0Y2ggPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJykubWF0Y2gocHJvaGliaXRlZEtleXdvcmRSRSk7XG4gICAgaWYgKGtleXdvcmRNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIlxcbiAgUmF3IGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIFwiaW52YWxpZCBleHByZXNzaW9uOiBcIiArIChlLm1lc3NhZ2UpICsgXCIgaW5cXG5cXG5cIiArXG4gICAgICAgIFwiICAgIFwiICsgZXhwICsgXCJcXG5cXG5cIiArXG4gICAgICAgIFwiICBSYXcgZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpICsgXCJcXG5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uIChjb2RlLCBlcnJvcnMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKGNvZGUpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9ycy5wdXNoKHsgZXJyOiBlcnIsIGNvZGU6IGNvZGUgfSk7XG4gICAgcmV0dXJuIG5vb3BcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuIChjb21waWxlKSB7XG4gIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXBpbGVUb0Z1bmN0aW9ucyAoXG4gICAgdGVtcGxhdGUsXG4gICAgb3B0aW9ucyxcbiAgICB2bVxuICApIHtcbiAgICBvcHRpb25zID0gZXh0ZW5kKHt9LCBvcHRpb25zKTtcbiAgICB2YXIgd2FybiQkMSA9IG9wdGlvbnMud2FybiB8fCB3YXJuO1xuICAgIGRlbGV0ZSBvcHRpb25zLndhcm47XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gZGV0ZWN0IHBvc3NpYmxlIENTUCByZXN0cmljdGlvblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gMScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS50b1N0cmluZygpLm1hdGNoKC91bnNhZmUtZXZhbHxDU1AvKSkge1xuICAgICAgICAgIHdhcm4kJDEoXG4gICAgICAgICAgICAnSXQgc2VlbXMgeW91IGFyZSB1c2luZyB0aGUgc3RhbmRhbG9uZSBidWlsZCBvZiBWdWUuanMgaW4gYW4gJyArXG4gICAgICAgICAgICAnZW52aXJvbm1lbnQgd2l0aCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSB0aGF0IHByb2hpYml0cyB1bnNhZmUtZXZhbC4gJyArXG4gICAgICAgICAgICAnVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGNhbm5vdCB3b3JrIGluIHRoaXMgZW52aXJvbm1lbnQuIENvbnNpZGVyICcgK1xuICAgICAgICAgICAgJ3JlbGF4aW5nIHRoZSBwb2xpY3kgdG8gYWxsb3cgdW5zYWZlLWV2YWwgb3IgcHJlLWNvbXBpbGluZyB5b3VyICcgK1xuICAgICAgICAgICAgJ3RlbXBsYXRlcyBpbnRvIHJlbmRlciBmdW5jdGlvbnMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjaGVjayBjYWNoZVxuICAgIHZhciBrZXkgPSBvcHRpb25zLmRlbGltaXRlcnNcbiAgICAgID8gU3RyaW5nKG9wdGlvbnMuZGVsaW1pdGVycykgKyB0ZW1wbGF0ZVxuICAgICAgOiB0ZW1wbGF0ZTtcbiAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgcmV0dXJuIGNhY2hlW2tleV1cbiAgICB9XG5cbiAgICAvLyBjb21waWxlXG4gICAgdmFyIGNvbXBpbGVkID0gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBjaGVjayBjb21waWxhdGlvbiBlcnJvcnMvdGlwc1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJyb3JzICYmIGNvbXBpbGVkLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybiQkMShcbiAgICAgICAgICBcIkVycm9yIGNvbXBpbGluZyB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5cXG5cIiArXG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAgICAgICBjb21waWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1zZykgeyByZXR1cm4gdGlwKG1zZywgdm0pOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0dXJuIGNvZGUgaW50byBmdW5jdGlvbnNcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2VuRXJyb3JzID0gW107XG4gICAgcmVzLnJlbmRlciA9IGNyZWF0ZUZ1bmN0aW9uKGNvbXBpbGVkLnJlbmRlciwgZm5HZW5FcnJvcnMpO1xuICAgIHJlcy5zdGF0aWNSZW5kZXJGbnMgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb24oY29kZSwgZm5HZW5FcnJvcnMpXG4gICAgfSk7XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29tcGlsZXIgaXRzZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCghY29tcGlsZWQuZXJyb3JzIHx8ICFjb21waWxlZC5lcnJvcnMubGVuZ3RoKSAmJiBmbkdlbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybiQkMShcbiAgICAgICAgICBcIkZhaWxlZCB0byBnZW5lcmF0ZSByZW5kZXIgZnVuY3Rpb246XFxuXFxuXCIgK1xuICAgICAgICAgIGZuR2VuRXJyb3JzLm1hcChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gcmVmLmVycjtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVmLmNvZGU7XG5cbiAgICAgICAgICAgIHJldHVybiAoKGVyci50b1N0cmluZygpKSArIFwiIGluXFxuXFxuXCIgKyBjb2RlICsgXCJcXG5cIik7XG4gICAgICAgIH0pLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChjYWNoZVtrZXldID0gcmVzKVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVDb21waWxlckNyZWF0b3IgKGJhc2VDb21waWxlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVDb21waWxlciAoYmFzZU9wdGlvbnMpIHtcbiAgICBmdW5jdGlvbiBjb21waWxlIChcbiAgICAgIHRlbXBsYXRlLFxuICAgICAgb3B0aW9uc1xuICAgICkge1xuICAgICAgdmFyIGZpbmFsT3B0aW9ucyA9IE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMpO1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIHRpcHMgPSBbXTtcbiAgICAgIGZpbmFsT3B0aW9ucy53YXJuID0gZnVuY3Rpb24gKG1zZywgdGlwKSB7XG4gICAgICAgICh0aXAgPyB0aXBzIDogZXJyb3JzKS5wdXNoKG1zZyk7XG4gICAgICB9O1xuXG4gICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAvLyBtZXJnZSBjdXN0b20gbW9kdWxlc1xuICAgICAgICBpZiAob3B0aW9ucy5tb2R1bGVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLm1vZHVsZXMgPVxuICAgICAgICAgICAgKGJhc2VPcHRpb25zLm1vZHVsZXMgfHwgW10pLmNvbmNhdChvcHRpb25zLm1vZHVsZXMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1lcmdlIGN1c3RvbSBkaXJlY3RpdmVzXG4gICAgICAgIGlmIChvcHRpb25zLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMuZGlyZWN0aXZlcyA9IGV4dGVuZChcbiAgICAgICAgICAgIE9iamVjdC5jcmVhdGUoYmFzZU9wdGlvbnMuZGlyZWN0aXZlcyksXG4gICAgICAgICAgICBvcHRpb25zLmRpcmVjdGl2ZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvcHkgb3RoZXIgb3B0aW9uc1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdtb2R1bGVzJyAmJiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAgICAgICAgZmluYWxPcHRpb25zW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBjb21waWxlZCA9IGJhc2VDb21waWxlKHRlbXBsYXRlLCBmaW5hbE9wdGlvbnMpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZXJyb3JzLnB1c2guYXBwbHkoZXJyb3JzLCBkZXRlY3RFcnJvcnMoY29tcGlsZWQuYXN0KSk7XG4gICAgICB9XG4gICAgICBjb21waWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICBjb21waWxlZC50aXBzID0gdGlwcztcbiAgICAgIHJldHVybiBjb21waWxlZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb21waWxlOiBjb21waWxlLFxuICAgICAgY29tcGlsZVRvRnVuY3Rpb25zOiBjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuKGNvbXBpbGUpXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vLyBgY3JlYXRlQ29tcGlsZXJDcmVhdG9yYCBhbGxvd3MgY3JlYXRpbmcgY29tcGlsZXJzIHRoYXQgdXNlIGFsdGVybmF0aXZlXG4vLyBwYXJzZXIvb3B0aW1pemVyL2NvZGVnZW4sIGUuZyB0aGUgU1NSIG9wdGltaXppbmcgY29tcGlsZXIuXG4vLyBIZXJlIHdlIGp1c3QgZXhwb3J0IGEgZGVmYXVsdCBjb21waWxlciB1c2luZyB0aGUgZGVmYXVsdCBwYXJ0cy5cbnZhciBjcmVhdGVDb21waWxlciA9IGNyZWF0ZUNvbXBpbGVyQ3JlYXRvcihmdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG4gIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIHZhciBjb2RlID0gZ2VuZXJhdGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAgICByZW5kZXI6IGNvZGUucmVuZGVyLFxuICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmJDEgPSBjcmVhdGVDb21waWxlcihiYXNlT3B0aW9ucyk7XG52YXIgY29tcGlsZVRvRnVuY3Rpb25zID0gcmVmJDEuY29tcGlsZVRvRnVuY3Rpb25zO1xuXG4vKiAgKi9cblxudmFyIGlkVG9UZW1wbGF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIGVsID0gcXVlcnkoaWQpO1xuICByZXR1cm4gZWwgJiYgZWwuaW5uZXJIVE1MXG59KTtcblxudmFyIG1vdW50ID0gVnVlJDMucHJvdG90eXBlLiRtb3VudDtcblZ1ZSQzLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIHF1ZXJ5KGVsKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5IHx8IGVsID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkRvIG5vdCBtb3VudCBWdWUgdG8gPGh0bWw+IG9yIDxib2R5PiAtIG1vdW50IHRvIG5vcm1hbCBlbGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAvLyByZXNvbHZlIHRlbXBsYXRlL2VsIGFuZCBjb252ZXJ0IHRvIHJlbmRlciBmdW5jdGlvblxuICBpZiAoIW9wdGlvbnMucmVuZGVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZS5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgICAgICAgIHRlbXBsYXRlID0gaWRUb1RlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG4gICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUuaW5uZXJIVE1MO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKCdpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjonICsgdGVtcGxhdGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbCkge1xuICAgICAgdGVtcGxhdGUgPSBnZXRPdXRlckhUTUwoZWwpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZScpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVmID0gY29tcGlsZVRvRnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4gICAgICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBzaG91bGREZWNvZGVOZXdsaW5lcyxcbiAgICAgICAgZGVsaW1pdGVyczogb3B0aW9ucy5kZWxpbWl0ZXJzLFxuICAgICAgICBjb21tZW50czogb3B0aW9ucy5jb21tZW50c1xuICAgICAgfSwgdGhpcyk7XG4gICAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXI7XG4gICAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucztcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgICBtYXJrKCdjb21waWxlIGVuZCcpO1xuICAgICAgICBtZWFzdXJlKChcInZ1ZSBcIiArICh0aGlzLl9uYW1lKSArIFwiIGNvbXBpbGVcIiksICdjb21waWxlJywgJ2NvbXBpbGUgZW5kJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtb3VudC5jYWxsKHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG4vKipcbiAqIEdldCBvdXRlckhUTUwgb2YgZWxlbWVudHMsIHRha2luZyBjYXJlXG4gKiBvZiBTVkcgZWxlbWVudHMgaW4gSUUgYXMgd2VsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3V0ZXJIVE1MIChlbCkge1xuICBpZiAoZWwub3V0ZXJIVE1MKSB7XG4gICAgcmV0dXJuIGVsLm91dGVySFRNTFxuICB9IGVsc2Uge1xuICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwuY2xvbmVOb2RlKHRydWUpKTtcbiAgICByZXR1cm4gY29udGFpbmVyLmlubmVySFRNTFxuICB9XG59XG5cblZ1ZSQzLmNvbXBpbGUgPSBjb21waWxlVG9GdW5jdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IFZ1ZSQzO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n");
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(6);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcz9kN2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtcblxuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcblxuZXhwb3J0cy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldFRpbWVvdXQsIHdpbmRvdywgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFySW50ZXJ2YWwpO1xufTtcbmV4cG9ydHMuY2xlYXJUaW1lb3V0ID1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHtcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICB0aW1lb3V0LmNsb3NlKCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIFRpbWVvdXQoaWQsIGNsZWFyRm4pIHtcbiAgdGhpcy5faWQgPSBpZDtcbiAgdGhpcy5fY2xlYXJGbiA9IGNsZWFyRm47XG59XG5UaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307XG5UaW1lb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LCB0aGlzLl9pZCk7XG59O1xuXG4vLyBEb2VzIG5vdCBzdGFydCB0aGUgdGltZSwganVzdCBzZXRzIHVwIHRoZSBtZW1iZXJzIG5lZWRlZC5cbmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IG1zZWNzO1xufTtcblxuZXhwb3J0cy51bmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IC0xO1xufTtcblxuZXhwb3J0cy5fdW5yZWZBY3RpdmUgPSBleHBvcnRzLmFjdGl2ZSA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuXG4gIHZhciBtc2VjcyA9IGl0ZW0uX2lkbGVUaW1lb3V0O1xuICBpZiAobXNlY3MgPj0gMCkge1xuICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHtcbiAgICAgIGlmIChpdGVtLl9vblRpbWVvdXQpXG4gICAgICAgIGl0ZW0uX29uVGltZW91dCgpO1xuICAgIH0sIG1zZWNzKTtcbiAgfVxufTtcblxuLy8gc2V0aW1tZWRpYXRlIGF0dGFjaGVzIGl0c2VsZiB0byB0aGUgZ2xvYmFsIG9iamVjdFxucmVxdWlyZShcInNldGltbWVkaWF0ZVwiKTtcbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9IGNsZWFySW1tZWRpYXRlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///5\n");
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(1)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcz85YjJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0IsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIChnbG9iYWwsIHVuZGVmaW5lZCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgaWYgKGdsb2JhbC5zZXRJbW1lZGlhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBuZXh0SGFuZGxlID0gMTsgLy8gU3BlYyBzYXlzIGdyZWF0ZXIgdGhhbiB6ZXJvXG4gICAgdmFyIHRhc2tzQnlIYW5kbGUgPSB7fTtcbiAgICB2YXIgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgdmFyIGRvYyA9IGdsb2JhbC5kb2N1bWVudDtcbiAgICB2YXIgcmVnaXN0ZXJJbW1lZGlhdGU7XG5cbiAgICBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoY2FsbGJhY2spIHtcbiAgICAgIC8vIENhbGxiYWNrIGNhbiBlaXRoZXIgYmUgYSBmdW5jdGlvbiBvciBhIHN0cmluZ1xuICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKFwiXCIgKyBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAvLyBDb3B5IGZ1bmN0aW9uIGFyZ3VtZW50c1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpICsgMV07XG4gICAgICB9XG4gICAgICAvLyBTdG9yZSBhbmQgcmVnaXN0ZXIgdGhlIHRhc2tcbiAgICAgIHZhciB0YXNrID0geyBjYWxsYmFjazogY2FsbGJhY2ssIGFyZ3M6IGFyZ3MgfTtcbiAgICAgIHRhc2tzQnlIYW5kbGVbbmV4dEhhbmRsZV0gPSB0YXNrO1xuICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUobmV4dEhhbmRsZSk7XG4gICAgICByZXR1cm4gbmV4dEhhbmRsZSsrO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGhhbmRsZSkge1xuICAgICAgICBkZWxldGUgdGFza3NCeUhhbmRsZVtoYW5kbGVdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1bih0YXNrKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IHRhc2suY2FsbGJhY2s7XG4gICAgICAgIHZhciBhcmdzID0gdGFzay5hcmdzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1bklmUHJlc2VudChoYW5kbGUpIHtcbiAgICAgICAgLy8gRnJvbSB0aGUgc3BlYzogXCJXYWl0IHVudGlsIGFueSBpbnZvY2F0aW9ucyBvZiB0aGlzIGFsZ29yaXRobSBzdGFydGVkIGJlZm9yZSB0aGlzIG9uZSBoYXZlIGNvbXBsZXRlZC5cIlxuICAgICAgICAvLyBTbyBpZiB3ZSdyZSBjdXJyZW50bHkgcnVubmluZyBhIHRhc2ssIHdlJ2xsIG5lZWQgdG8gZGVsYXkgdGhpcyBpbnZvY2F0aW9uLlxuICAgICAgICBpZiAoY3VycmVudGx5UnVubmluZ0FUYXNrKSB7XG4gICAgICAgICAgICAvLyBEZWxheSBieSBkb2luZyBhIHNldFRpbWVvdXQuIHNldEltbWVkaWF0ZSB3YXMgdHJpZWQgaW5zdGVhZCwgYnV0IGluIEZpcmVmb3ggNyBpdCBnZW5lcmF0ZWQgYVxuICAgICAgICAgICAgLy8gXCJ0b28gbXVjaCByZWN1cnNpb25cIiBlcnJvci5cbiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgICAgICAgICBpZiAodGFzaykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcnVuKHRhc2spO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW1tZWRpYXRlKGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJ1bklmUHJlc2VudChoYW5kbGUpOyB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYW5Vc2VQb3N0TWVzc2FnZSgpIHtcbiAgICAgICAgLy8gVGhlIHRlc3QgYWdhaW5zdCBgaW1wb3J0U2NyaXB0c2AgcHJldmVudHMgdGhpcyBpbXBsZW1lbnRhdGlvbiBmcm9tIGJlaW5nIGluc3RhbGxlZCBpbnNpZGUgYSB3ZWIgd29ya2VyLFxuICAgICAgICAvLyB3aGVyZSBgZ2xvYmFsLnBvc3RNZXNzYWdlYCBtZWFucyBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgYW5kIGNhbid0IGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS5cbiAgICAgICAgaWYgKGdsb2JhbC5wb3N0TWVzc2FnZSAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICAgICAgICAgIHZhciBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBvbGRPbk1lc3NhZ2UgPSBnbG9iYWwub25tZXNzYWdlO1xuICAgICAgICAgICAgZ2xvYmFsLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoXCJcIiwgXCIqXCIpO1xuICAgICAgICAgICAgZ2xvYmFsLm9ubWVzc2FnZSA9IG9sZE9uTWVzc2FnZTtcbiAgICAgICAgICAgIHJldHVybiBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFBvc3RNZXNzYWdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIC8vIEluc3RhbGxzIGFuIGV2ZW50IGhhbmRsZXIgb24gYGdsb2JhbGAgZm9yIHRoZSBgbWVzc2FnZWAgZXZlbnQ6IHNlZVxuICAgICAgICAvLyAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0RPTS93aW5kb3cucG9zdE1lc3NhZ2VcbiAgICAgICAgLy8gKiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tcy5odG1sI2Nyb3NzRG9jdW1lbnRNZXNzYWdlc1xuXG4gICAgICAgIHZhciBtZXNzYWdlUHJlZml4ID0gXCJzZXRJbW1lZGlhdGUkXCIgKyBNYXRoLnJhbmRvbSgpICsgXCIkXCI7XG4gICAgICAgIHZhciBvbkdsb2JhbE1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PT0gZ2xvYmFsICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGV2ZW50LmRhdGEgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICBldmVudC5kYXRhLmluZGV4T2YobWVzc2FnZVByZWZpeCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoK2V2ZW50LmRhdGEuc2xpY2UobWVzc2FnZVByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBvbkdsb2JhbE1lc3NhZ2UsIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdsb2JhbC5hdHRhY2hFdmVudChcIm9ubWVzc2FnZVwiLCBvbkdsb2JhbE1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShtZXNzYWdlUHJlZml4ICsgaGFuZGxlLCBcIipcIik7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIHZhciBoYW5kbGUgPSBldmVudC5kYXRhO1xuICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUmVhZHlTdGF0ZUNoYW5nZUltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICB2YXIgaHRtbCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgYSA8c2NyaXB0PiBlbGVtZW50OyBpdHMgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCB3aWxsIGJlIGZpcmVkIGFzeW5jaHJvbm91c2x5IG9uY2UgaXQgaXMgaW5zZXJ0ZWRcbiAgICAgICAgICAgIC8vIGludG8gdGhlIGRvY3VtZW50LiBEbyBzbywgdGh1cyBxdWV1aW5nIHVwIHRoZSB0YXNrLiBSZW1lbWJlciB0byBjbGVhbiB1cCBvbmNlIGl0J3MgYmVlbiBjYWxsZWQuXG4gICAgICAgICAgICB2YXIgc2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpO1xuICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSWYgc3VwcG9ydGVkLCB3ZSBzaG91bGQgYXR0YWNoIHRvIHRoZSBwcm90b3R5cGUgb2YgZ2xvYmFsLCBzaW5jZSB0aGF0IGlzIHdoZXJlIHNldFRpbWVvdXQgZXQgYWwuIGxpdmUuXG4gICAgdmFyIGF0dGFjaFRvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWwpO1xuICAgIGF0dGFjaFRvID0gYXR0YWNoVG8gJiYgYXR0YWNoVG8uc2V0VGltZW91dCA/IGF0dGFjaFRvIDogZ2xvYmFsO1xuXG4gICAgLy8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBlLmcuIGJyb3dzZXJpZnkgZW52aXJvbm1lbnRzLlxuICAgIGlmICh7fS50b1N0cmluZy5jYWxsKGdsb2JhbC5wcm9jZXNzKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIpIHtcbiAgICAgICAgLy8gRm9yIE5vZGUuanMgYmVmb3JlIDAuOVxuICAgICAgICBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChjYW5Vc2VQb3N0TWVzc2FnZSgpKSB7XG4gICAgICAgIC8vIEZvciBub24tSUUxMCBtb2Rlcm4gYnJvd3NlcnNcbiAgICAgICAgaW5zdGFsbFBvc3RNZXNzYWdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZ2xvYmFsLk1lc3NhZ2VDaGFubmVsKSB7XG4gICAgICAgIC8vIEZvciB3ZWIgd29ya2Vycywgd2hlcmUgc3VwcG9ydGVkXG4gICAgICAgIGluc3RhbGxNZXNzYWdlQ2hhbm5lbEltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGRvYyAmJiBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiIGluIGRvYy5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSB7XG4gICAgICAgIC8vIEZvciBJRSA24oCTOFxuICAgICAgICBpbnN0YWxsUmVhZHlTdGF0ZUNoYW5nZUltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGb3Igb2xkZXIgYnJvd3NlcnNcbiAgICAgICAgaW5zdGFsbFNldFRpbWVvdXRJbXBsZW1lbnRhdGlvbigpO1xuICAgIH1cblxuICAgIGF0dGFjaFRvLnNldEltbWVkaWF0ZSA9IHNldEltbWVkaWF0ZTtcbiAgICBhdHRhY2hUby5jbGVhckltbWVkaWF0ZSA9IGNsZWFySW1tZWRpYXRlO1xufSh0eXBlb2Ygc2VsZiA9PT0gXCJ1bmRlZmluZWRcIiA/IHR5cGVvZiBnbG9iYWwgPT09IFwidW5kZWZpbmVkXCIgPyB0aGlzIDogZ2xvYmFsIDogc2VsZikpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6\n");
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("!function(t,e){ true?module.exports=e():\"function\"==typeof define&&define.amd?define(\"vue-slider-component\",[],e):\"object\"==typeof exports?exports[\"vue-slider-component\"]=e():t[\"vue-slider-component\"]=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var r=i[s]={i:s,l:!1,exports:{}};return t[s].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=2)}([function(t,e,i){i(7);var s=i(5)(i(1),i(6),null,null);t.exports=s.exports},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={data:function(){return{flag:!1,size:0,currentValue:0,currentSlider:0,dotWidthVal:\"number\"==typeof this.dotWidth?this.dotWidth:this.dotSize,dotHeightVal:\"number\"==typeof this.dotHeight?this.dotHeight:this.dotSize}},props:{width:{type:[Number,String],default:\"auto\"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:\"always\"},eventType:{type:String,default:\"auto\"},direction:{type:String,default:\"horizontal\"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},value:{type:[String,Number,Array],default:0},piecewiseLabel:{type:Boolean,default:!1},sliderStyle:[Array,Object],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object],labelStyle:Object,labelActiveStyle:Object},computed:{flowDirection:function(){return\"vue-slider-\"+this.direction+(this.reverse?\"-reverse\":\"\")},tooltipDirection:function(){var t=this.tooltipDir||(\"vertical\"===this.direction?\"left\":\"top\");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return\"hover\"===this.tooltip&&this.flag?\"vue-slider-always\":this.tooltip?\"vue-slider-\"+this.tooltip:\"\"},tooltipClass:function(){return[\"vue-slider-tooltip-\"+this.tooltipDirection,\"vue-slider-tooltip\"]},isDisabled:function(){return\"none\"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?\"vue-slider-disabled\":\"\"},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),i=this.data.indexOf(t[1]);e>-1&&i>-1&&(this.currentValue=[e,i])}else{var s=this.data.indexOf(t);s>-1&&(this.currentValue=s)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(\"\"+this.interval).split(\".\")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(~~((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&console.error(\"[Vue-slider warn]: Prop[interval] is illegal, Please make sure that the interval can be divisible\"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},wrapStyles:function(){return\"vertical\"===this.direction?{height:\"number\"==typeof this.height?this.height+\"px\":this.height,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}:{width:\"number\"==typeof this.width?this.width+\"px\":this.width,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:\"100%\"}:{height:this.height+\"px\"}},dotStyles:function(){return\"vertical\"===this.direction?{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",left:-(this.dotWidthVal-this.width)/2+\"px\"}:{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",top:-(this.dotHeightVal-this.height)/2+\"px\"}},piecewiseDotStyle:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:this.width+\"px\"}:{width:this.height+\"px\",height:this.height+\"px\"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var i=\"vertical\"===this.direction?{bottom:this.gap*e-this.width/2+\"px\",left:0}:{left:this.gap*e-this.height/2+\"px\",top:0},s=this.reverse?this.total-e:e,r=this.data?this.data[s]:this.spacing*s+this.min;t.push({style:i,label:this.formatter?this.formatting(r):r,inRange:s>=this.indexRange[0]&&s<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},min:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})}},methods:{bindEvents:function(){document.addEventListener(\"touchmove\",this.moving,{passive:!1}),document.addEventListener(\"touchend\",this.moveEnd,{passive:!1}),document.addEventListener(\"mousemove\",this.moving),document.addEventListener(\"mouseup\",this.moveEnd),document.addEventListener(\"mouseleave\",this.moveEnd),window.addEventListener(\"resize\",this.refresh)},unbindEvents:function(){window.removeEventListener(\"resize\",this.refresh),document.removeEventListener(\"touchmove\",this.moving),document.removeEventListener(\"touchend\",this.moveEnd),document.removeEventListener(\"mousemove\",this.moving),document.removeEventListener(\"mouseup\",this.moveEnd),document.removeEventListener(\"mouseleave\",this.moveEnd)},formatting:function(t){return\"string\"==typeof this.formatter?this.formatter.replace(/\\{value\\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),\"vertical\"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},wrapClick:function(t){if(this.isDisabled||!this.clickable)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){if(this.isDisabled)return!1;this.isRange&&(this.currentSlider=t),this.flag=!0,this.$emit(\"drag-start\",this)},moving:function(t){if(!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){if(!this.flag)return!1;this.$emit(\"drag-end\",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,this.setPosition()},setValueOnPos:function(t,e){var i=this.isRange?this.limit[this.currentSlider]:this.limit,s=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var r=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(r,e)}else t<i[0]?(this.setTransform(i[0]),this.setCurrentValue(s[0]),1===this.currentSlider&&(this.currentSlider=0)):(this.setTransform(i[1]),this.setCurrentValue(s[1]),0===this.currentSlider&&(this.currentSlider=1))},isDiff:function(t,e){return Object.prototype.toString.call(t)!==Object.prototype.toString.call(e)||(Array.isArray(t)&&t.length===e.length?t.some(function(t,i){return t!==e[i]}):t!==e)},setCurrentValue:function(t,e){if(t<this.minimum||t>this.maximum)return!1;this.isRange?this.isDiff(this.currentValue[this.currentSlider],t)&&(this.currentValue.splice(this.currentSlider,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,i){var s=this;if(this.isDiff(this.val,t)){var r=this.limitValue(t);this.val=!1!==r?this.isRange?r.concat():r:this.isRange?t.concat():t,this.syncValue(e)}this.$nextTick(function(){return s.setPosition(i)})},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.currentSlider=0,this.setTransform(this.position[this.currentSlider]),this.currentSlider=1,this.setTransform(this.position[this.currentSlider])):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t){var e=(\"vertical\"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1),i=\"vertical\"===this.direction?\"translateY(\"+e+\"px)\":\"translateX(\"+e+\"px)\",s=(0===this.currentSlider?this.position[1]-t:t-this.position[0])+\"px\",r=(0===this.currentSlider?t:this.position[0])+\"px\";this.isRange?(this.slider[this.currentSlider].style.transform=i,this.slider[this.currentSlider].style.WebkitTransform=i,this.slider[this.currentSlider].style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=s,this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=r):(this.$refs.process.style.width=s,this.$refs.process.style[this.reverse?\"right\":\"left\"]=r)):(this.slider.style.transform=i,this.slider.style.WebkitTransform=i,this.slider.style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=t+\"px\",this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=0):(this.$refs.process.style.width=t+\"px\",this.$refs.process.style[this.reverse?\"right\":\"left\"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;e<this.slider.length;e++)this.slider[e].style.transitionDuration=t+\"s\",this.slider[e].style.WebkitTransitionDuration=t+\"s\";this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"}else this.slider.style.transitionDuration=t+\"s\",this.slider.style.WebkitTransitionDuration=t+\"s\",this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"},limitValue:function(t){var e=this;if(this.data)return t;var i=!1;return this.isRange?t=t.map(function(t){return t<e.min?(i=!0,e.min):t>e.max?(i=!0,e.max):t}):t>this.max?(i=!0,t=this.max):t<this.min&&(i=!0,t=this.min),i&&t},syncValue:function(t){t||this.$emit(\"callback\",this.val),this.$emit(\"input\",this.isRange?this.val.concat():this.val)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size=\"vertical\"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset=\"vertical\"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.setPosition())}},mounted:function(){var t=this;\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&this.$nextTick(function(){t.getStaticData(),t.setValue(t.value,!0,0),t.bindEvents()})},beforeDestroy:function(){this.unbindEvents()}}},function(t,e,i){\"use strict\";var s=i(0);t.exports=s},function(t,e,i){e=t.exports=i(4)(),e.push([t.i,'.vue-slider-component{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;-webkit-transition:all 0s;transition:all 0s;z-index:1}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;-webkit-box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);-webkit-transition:all 0s;transition:all 0s;will-change:transform;cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:\"\";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:\"\";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;-webkit-transition:all .3s;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',\"\"])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var i=this[e];i[2]?t.push(\"@media \"+i[2]+\"{\"+i[1]+\"}\"):t.push(i[1])}return t.join(\"\")},t.i=function(e,i){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var s={},r=0;r<this.length;r++){var n=this[r][0];\"number\"==typeof n&&(s[n]=!0)}for(r=0;r<e.length;r++){var o=e[r];\"number\"==typeof o[0]&&s[o[0]]||(i&&!o[2]?o[2]=i:i&&(o[2]=\"(\"+o[2]+\") and (\"+i+\")\"),t.push(o))}},t}},function(t,e){t.exports=function(t,e,i,s){var r,n=t=t||{},o=typeof t.default;\"object\"!==o&&\"function\"!==o||(r=t,n=t.default);var l=\"function\"==typeof n?n.options:n;if(e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns),i&&(l._scopeId=i),s){var a=Object.create(l.computed||null);Object.keys(s).forEach(function(t){var e=s[t];a[t]=function(){return e}}),l.computed=a}return{esModule:r,exports:n,options:l}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.show,expression:\"show\"}],ref:\"wrap\",class:[\"vue-slider-component\",t.flowDirection,t.disabledClass,{\"vue-slider-has-label\":t.piecewiseLabel}],style:t.wrapStyles,on:{click:t.wrapClick}},[i(\"div\",{ref:\"elem\",staticClass:\"vue-slider\",style:[t.elemStyles,t.bgStyle],attrs:{\"aria-hidden\":\"true\"}},[t.isRange?[i(\"div\",{ref:\"dot0\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[0]],on:{mousedown:function(e){t.moveStart(0)},touchstart:function(e){t.moveStart(0)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[0],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[0]},[t._v(t._s(t.formatter?t.formatting(t.val[0]):t.val[0]))])],{value:t.val[0],index:0})],2)]),t._v(\" \"),i(\"div\",{ref:\"dot1\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[1]],on:{mousedown:function(e){t.moveStart(1)},touchstart:function(e){t.moveStart(1)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[1],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[1]},[t._v(t._s(t.formatter?t.formatting(t.val[1]):t.val[1]))])],{value:t.val[1],index:1})],2)])]:[i(\"div\",{ref:\"dot\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles],on:{mousedown:t.moveStart,touchstart:t.moveStart}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection,\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles},[t._v(t._s(t.formatter?t.formatting(t.val):t.val))])],{value:t.val})],2)])],t._v(\" \"),i(\"ul\",{staticClass:\"vue-slider-piecewise\"},t._l(t.piecewiseDotWrap,function(e,s){return i(\"li\",{key:s,staticClass:\"vue-slider-piecewise-item\",style:[t.piecewiseDotStyle,e.style]},[t._t(\"piecewise\",[t.piecewise?i(\"span\",{staticClass:\"vue-slider-piecewise-dot\",style:[t.piecewiseStyle,e.inRange?t.piecewiseActiveStyle:null]}):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1}),t._v(\" \"),t._t(\"label\",[t.piecewiseLabel?i(\"span\",{staticClass:\"vue-slider-piecewise-label\",style:[t.labelStyle,e.inRange?t.labelActiveStyle:null]},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\"+t._s(e.label)+\"\\n\\t\\t\\t\\t\\t\")]):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1})],2)})),t._v(\" \"),i(\"div\",{ref:\"process\",staticClass:\"vue-slider-process\",style:t.processStyle})],2),t._v(\" \"),t.isRange||t.data?t._e():i(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.val,expression:\"val\"}],staticClass:\"vue-slider-sr-only\",attrs:{type:\"range\",min:t.min,max:t.max},domProps:{value:t.val},on:{__r:function(e){t.val=e.target.value}}})])},staticRenderFns:[]}},function(t,e,i){var s=i(3);\"string\"==typeof s&&(s=[[t.i,s,\"\"]]),s.locals&&(t.exports=s.locals);i(8)(\"743d98f5\",s,!0)},function(t,e,i){function s(t){for(var e=0;e<t.length;e++){var i=t[e],s=h[i.id];if(s){s.refs++;for(var r=0;r<s.parts.length;r++)s.parts[r](i.parts[r]);for(;r<i.parts.length;r++)s.parts.push(n(i.parts[r]));s.parts.length>i.parts.length&&(s.parts.length=i.parts.length)}else{for(var o=[],r=0;r<i.parts.length;r++)o.push(n(i.parts[r]));h[i.id]={id:i.id,refs:1,parts:o}}}}function r(){var t=document.createElement(\"style\");return t.type=\"text/css\",d.appendChild(t),t}function n(t){var e,i,s=document.querySelector('style[data-vue-ssr-id~=\"'+t.id+'\"]');if(s){if(f)return v;s.parentNode.removeChild(s)}if(m){var n=c++;s=p||(p=r()),e=o.bind(null,s,n,!1),i=o.bind(null,s,n,!0)}else s=r(),e=l.bind(null,s),i=function(){s.parentNode.removeChild(s)};return e(t),function(s){if(s){if(s.css===t.css&&s.media===t.media&&s.sourceMap===t.sourceMap)return;e(t=s)}else i()}}function o(t,e,i,s){var r=i?\"\":s.css;if(t.styleSheet)t.styleSheet.cssText=g(e,r);else{var n=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(n,o[e]):t.appendChild(n)}}function l(t,e){var i=e.css,s=e.media,r=e.sourceMap;if(s&&t.setAttribute(\"media\",s),r&&(i+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",i+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\"),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var a=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!a)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var u=i(9),h={},d=a&&(document.head||document.getElementsByTagName(\"head\")[0]),p=null,c=0,f=!1,v=function(){},m=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,i){f=i;var r=u(t,e);return s(r),function(e){for(var i=[],n=0;n<r.length;n++){var o=r[n],l=h[o.id];l.refs--,i.push(l)}e?(r=u(t,e),s(r)):r=[];for(var n=0;n<i.length;n++){var l=i[n];if(0===l.refs){for(var a=0;a<l.parts.length;a++)l.parts[a]();delete h[l.id]}}}};var g=function(){var t=[];return function(e,i){return t[e]=i,t.filter(Boolean).join(\"\\n\")}}()},function(t,e){t.exports=function(t,e){for(var i=[],s={},r=0;r<e.length;r++){var n=e[r],o=n[0],l=n[1],a=n[2],u=n[3],h={id:t+\":\"+r,css:l,media:a,sourceMap:u};s[o]?s[o].parts.push(h):i.push(s[o]={id:o,parts:[h]})}return i}}])});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXNsaWRlci1jb21wb25lbnQvZGlzdC9pbmRleC5qcz8xODMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsOExBQTBPLGlCQUFpQixtQkFBbUIsY0FBYyw0QkFBNEIsWUFBWSxxQkFBcUIsMkRBQTJELFNBQVMsbUNBQW1DLFNBQVMscUJBQXFCLHFDQUFxQyxvQ0FBb0MsRUFBRSxpQkFBaUIsaUNBQWlDLGlCQUFpQixZQUFZLFVBQVUsc0JBQXNCLG1CQUFtQixpREFBaUQsaUJBQWlCLGtCQUFrQixLQUFLLGdDQUFnQyxvQkFBb0IsaUJBQWlCLGFBQWEsc0NBQXNDLFNBQVMsYUFBYSxnQkFBZ0IsT0FBTyw4TEFBOEwsUUFBUSxPQUFPLG9DQUFvQyxTQUFTLCtCQUErQixPQUFPLHdCQUF3QixVQUFVLHVCQUF1QixXQUFXLHdCQUF3QixZQUFZLHdCQUF3QixNQUFNLHNCQUFzQixNQUFNLHdCQUF3QixXQUFXLHNCQUFzQixPQUFPLHdCQUF3QixXQUFXLHdCQUF3QixZQUFZLHdCQUF3QixVQUFVLHVDQUF1QyxZQUFZLDJCQUEyQixZQUFZLGlDQUFpQyxVQUFVLHdCQUF3QixPQUFPLHdCQUF3QixZQUFZLHdCQUF3QixRQUFRLHVCQUF1QixXQUFXLHdCQUF3QixRQUFRLHFDQUFxQyxpQkFBaUIsd0JBQXdCLDZPQUE2TyxXQUFXLHlCQUF5QixnRUFBZ0UsNkJBQTZCLGtFQUFrRSxpRUFBaUUsMEJBQTBCLHVHQUF1Ryx5QkFBeUIseUVBQXlFLHVCQUF1Qiw2Q0FBNkMsMEJBQTBCLDhDQUE4QyxvQkFBb0IsaUNBQWlDLG1CQUFtQixxRUFBcUUsb0JBQW9CLDRCQUE0QixNQUFNLGVBQWUsK0lBQStJLGlCQUFpQiw4QkFBOEIsd0RBQXdELHNDQUFzQyxLQUFLLDJCQUEyQiw0QkFBNEIsMEJBQTBCLHlCQUF5QixrTUFBa00sdUJBQXVCLDREQUE0RCxvQkFBb0IsNkNBQTZDLHFCQUFxQix1Q0FBdUMsaUNB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aUIsV0FBVyxLQUFLLHFCQUFxQixtQkFBbUIsdUJBQXVCLFlBQVksV0FBVyxLQUFLLFdBQVcsZUFBZSxZQUFZLGlCQUFpQixpQkFBaUIsbUJBQW1CLGlCQUFpQixTQUFTLHFCQUFxQiw0Q0FBNEMsR0FBRyxlQUFlLHdCQUF3QixpQkFBaUIsS0FBSyxXQUFXLEtBQUssMENBQTBDLHNDQUFzQyxxQ0FBcUMsZUFBZSxFQUFFLFVBQVUsR0FBRyIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQsZSl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZSgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoXCJ2dWUtc2xpZGVyLWNvbXBvbmVudFwiLFtdLGUpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbXCJ2dWUtc2xpZGVyLWNvbXBvbmVudFwiXT1lKCk6dFtcInZ1ZS1zbGlkZXItY29tcG9uZW50XCJdPWUoKX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHMpe2lmKGlbc10pcmV0dXJuIGlbc10uZXhwb3J0czt2YXIgcj1pW3NdPXtpOnMsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtzXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxlKSxyLmw9ITAsci5leHBvcnRzfXZhciBpPXt9O3JldHVybiBlLm09dCxlLmM9aSxlLmk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZD1mdW5jdGlvbih0LGkscyl7ZS5vKHQsaSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpzfSl9LGUubj1mdW5jdGlvbih0KXt2YXIgaT10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gZS5kKGksXCJhXCIsaSksaX0sZS5vPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxlLnA9XCJcIixlKGUucz0yKX0oW2Z1bmN0aW9uKHQsZSxpKXtpKDcpO3ZhciBzPWkoNSkoaSgxKSxpKDYpLG51bGwsbnVsbCk7dC5leHBvcnRzPXMuZXhwb3J0c30sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD17ZGF0YTpmdW5jdGlvbigpe3JldHVybntmbGFnOiExLHNpemU6MCxjdXJyZW50VmFsdWU6MCxjdXJyZW50U2xpZGVyOjAsZG90V2lkdGhWYWw6XCJudW1iZXJcIj09dHlwZW9mIHRoaXMuZG90V2lkdGg/dGhpcy5kb3RXaWR0aDp0aGlzLmRvdFNpemUsZG90SGVpZ2h0VmFsOlwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLmRvdEhlaWdodD90aGlzLmRvdEhlaWdodDp0aGlzLmRvdFNpemV9fSxwcm9wczp7d2lkdGg6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6XCJhdXRvXCJ9LGhlaWdodDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo2fSxkYXRhOnt0eXBlOkFycmF5LGRlZmF1bHQ6bnVsbH0sZG90U2l6ZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDoxNn0sZG90V2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxkb3RIZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxtaW46e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sbWF4Ont0eXBlOk51bWJlcixkZWZhdWx0OjEwMH0saW50ZXJ2YWw6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MX0sc2hvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scGllY2V3aXNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdG9vbHRpcDp7dHlwZTpbU3RyaW5nLEJvb2xlYW5dLGRlZmF1bHQ6XCJhbHdheXNcIn0sZXZlbnRUeXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiYXV0b1wifSxkaXJlY3Rpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJob3Jpem9udGFsXCJ9LHJldmVyc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxsYXp5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2xpY2thYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc3BlZWQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6LjV9LHJlYWxUaW1lOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXIsQXJyYXldLGRlZmF1bHQ6MH0scGllY2V3aXNlTGFiZWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzbGlkZXJTdHlsZTpbQXJyYXksT2JqZWN0XSx0b29sdGlwRGlyOltBcnJheSxTdHJpbmddLGZvcm1hdHRlcjpbU3RyaW5nLEZ1bmN0aW9uXSxwaWVjZXdpc2VTdHlsZTpPYmplY3QscGllY2V3aXNlQWN0aXZlU3R5bGU6T2JqZWN0LHByb2Nlc3NTdHlsZTpPYmplY3QsYmdTdHlsZTpPYmplY3QsdG9vbHRpcFN0eWxlOltBcnJheSxPYmplY3RdLGxhYmVsU3R5bGU6T2JqZWN0LGxhYmVsQWN0aXZlU3R5bGU6T2JqZWN0fSxjb21wdXRlZDp7Zmxvd0RpcmVjdGlvbjpmdW5jdGlvbigpe3JldHVyblwidnVlLXNsaWRlci1cIit0aGlzLmRpcmVjdGlvbisodGhpcy5yZXZlcnNlP1wiLXJldmVyc2VcIjpcIlwiKX0sdG9vbHRpcERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMudG9vbHRpcERpcnx8KFwidmVydGljYWxcIj09PXRoaXMuZGlyZWN0aW9uP1wibGVmdFwiOlwidG9wXCIpO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RoaXMuaXNSYW5nZT90OnRbMV06dGhpcy5pc1JhbmdlP1t0LHRdOnR9LHRvb2x0aXBTdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm5cImhvdmVyXCI9PT10aGlzLnRvb2x0aXAmJnRoaXMuZmxhZz9cInZ1ZS1zbGlkZXItYWx3YXlzXCI6dGhpcy50b29sdGlwP1widnVlLXNsaWRlci1cIit0aGlzLnRvb2x0aXA6XCJcIn0sdG9vbHRpcENsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuW1widnVlLXNsaWRlci10b29sdGlwLVwiK3RoaXMudG9vbHRpcERpcmVjdGlvbixcInZ1ZS1zbGlkZXItdG9vbHRpcFwiXX0saXNEaXNhYmxlZDpmdW5jdGlvbigpe3JldHVyblwibm9uZVwiPT09dGhpcy5ldmVudFR5cGV8fHRoaXMuZGlzYWJsZWR9LGRpc2FibGVkQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD9cInZ1ZS1zbGlkZXItZGlzYWJsZWRcIjpcIlwifSxpc1JhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSl9LHNsaWRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzUmFuZ2U/W3RoaXMuJHJlZnMuZG90MCx0aGlzLiRyZWZzLmRvdDFdOnRoaXMuJHJlZnMuZG90fSxtaW5pbXVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YT8wOnRoaXMubWlufSx2YWw6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGE/dGhpcy5pc1JhbmdlP1t0aGlzLmRhdGFbdGhpcy5jdXJyZW50VmFsdWVbMF1dLHRoaXMuZGF0YVt0aGlzLmN1cnJlbnRWYWx1ZVsxXV1dOnRoaXMuZGF0YVt0aGlzLmN1cnJlbnRWYWx1ZV06dGhpcy5jdXJyZW50VmFsdWV9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmRhdGEpaWYodGhpcy5pc1JhbmdlKXt2YXIgZT10aGlzLmRhdGEuaW5kZXhPZih0WzBdKSxpPXRoaXMuZGF0YS5pbmRleE9mKHRbMV0pO2U+LTEmJmk+LTEmJih0aGlzLmN1cnJlbnRWYWx1ZT1bZSxpXSl9ZWxzZXt2YXIgcz10aGlzLmRhdGEuaW5kZXhPZih0KTtzPi0xJiYodGhpcy5jdXJyZW50VmFsdWU9cyl9ZWxzZSB0aGlzLmN1cnJlbnRWYWx1ZT10fX0sY3VycmVudEluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNSYW5nZT90aGlzLmRhdGE/dGhpcy5jdXJyZW50VmFsdWU6Wyh0aGlzLmN1cnJlbnRWYWx1ZVswXS10aGlzLm1pbmltdW0pL3RoaXMuc3BhY2luZywodGhpcy5jdXJyZW50VmFsdWVbMV0tdGhpcy5taW5pbXVtKS90aGlzLnNwYWNpbmddOih0aGlzLmN1cnJlbnRWYWx1ZS10aGlzLm1pbmltdW0pL3RoaXMuc3BhY2luZ30saW5kZXhSYW5nZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzUmFuZ2U/dGhpcy5jdXJyZW50SW5kZXg6WzAsdGhpcy5jdXJyZW50SW5kZXhdfSxtYXhpbXVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YT90aGlzLmRhdGEubGVuZ3RoLTE6dGhpcy5tYXh9LG11bHRpcGxlOmZ1bmN0aW9uKCl7dmFyIHQ9KFwiXCIrdGhpcy5pbnRlcnZhbCkuc3BsaXQoXCIuXCIpWzFdO3JldHVybiB0P01hdGgucG93KDEwLHQubGVuZ3RoKToxfSxzcGFjaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YT8xOnRoaXMuaW50ZXJ2YWx9LHRvdGFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YT90aGlzLmRhdGEubGVuZ3RoLTE6KH5+KCh0aGlzLm1heGltdW0tdGhpcy5taW5pbXVtKSp0aGlzLm11bHRpcGxlKSUodGhpcy5pbnRlcnZhbCp0aGlzLm11bHRpcGxlKSE9MCYmY29uc29sZS5lcnJvcihcIltWdWUtc2xpZGVyIHdhcm5dOiBQcm9wW2ludGVydmFsXSBpcyBpbGxlZ2FsLCBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlIGludGVydmFsIGNhbiBiZSBkaXZpc2libGVcIiksKHRoaXMubWF4aW11bS10aGlzLm1pbmltdW0pL3RoaXMuaW50ZXJ2YWwpfSxnYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXplL3RoaXMudG90YWx9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNSYW5nZT9bKHRoaXMuY3VycmVudFZhbHVlWzBdLXRoaXMubWluaW11bSkvdGhpcy5zcGFjaW5nKnRoaXMuZ2FwLCh0aGlzLmN1cnJlbnRWYWx1ZVsxXS10aGlzLm1pbmltdW0pL3RoaXMuc3BhY2luZyp0aGlzLmdhcF06KHRoaXMuY3VycmVudFZhbHVlLXRoaXMubWluaW11bSkvdGhpcy5zcGFjaW5nKnRoaXMuZ2FwfSxsaW1pdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzUmFuZ2U/W1swLHRoaXMucG9zaXRpb25bMV1dLFt0aGlzLnBvc2l0aW9uWzBdLHRoaXMuc2l6ZV1dOlswLHRoaXMuc2l6ZV19LHZhbHVlTGltaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1JhbmdlP1tbdGhpcy5taW5pbXVtLHRoaXMuY3VycmVudFZhbHVlWzFdXSxbdGhpcy5jdXJyZW50VmFsdWVbMF0sdGhpcy5tYXhpbXVtXV06W3RoaXMubWluaW11bSx0aGlzLm1heGltdW1dfSx3cmFwU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuXCJ2ZXJ0aWNhbFwiPT09dGhpcy5kaXJlY3Rpb24/e2hlaWdodDpcIm51bWJlclwiPT10eXBlb2YgdGhpcy5oZWlnaHQ/dGhpcy5oZWlnaHQrXCJweFwiOnRoaXMuaGVpZ2h0LHBhZGRpbmc6dGhpcy5kb3RIZWlnaHRWYWwvMitcInB4IFwiK3RoaXMuZG90V2lkdGhWYWwvMitcInB4XCJ9Ont3aWR0aDpcIm51bWJlclwiPT10eXBlb2YgdGhpcy53aWR0aD90aGlzLndpZHRoK1wicHhcIjp0aGlzLndpZHRoLHBhZGRpbmc6dGhpcy5kb3RIZWlnaHRWYWwvMitcInB4IFwiK3RoaXMuZG90V2lkdGhWYWwvMitcInB4XCJ9fSxzbGlkZXJTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnNsaWRlclN0eWxlKT90aGlzLmlzUmFuZ2U/dGhpcy5zbGlkZXJTdHlsZTp0aGlzLnNsaWRlclN0eWxlWzFdOnRoaXMuaXNSYW5nZT9bdGhpcy5zbGlkZXJTdHlsZSx0aGlzLnNsaWRlclN0eWxlXTp0aGlzLnNsaWRlclN0eWxlfSx0b29sdGlwU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy50b29sdGlwU3R5bGUpP3RoaXMuaXNSYW5nZT90aGlzLnRvb2x0aXBTdHlsZTp0aGlzLnRvb2x0aXBTdHlsZVsxXTp0aGlzLmlzUmFuZ2U/W3RoaXMudG9vbHRpcFN0eWxlLHRoaXMudG9vbHRpcFN0eWxlXTp0aGlzLnRvb2x0aXBTdHlsZX0sZWxlbVN0eWxlczpmdW5jdGlvbigpe3JldHVyblwidmVydGljYWxcIj09PXRoaXMuZGlyZWN0aW9uP3t3aWR0aDp0aGlzLndpZHRoK1wicHhcIixoZWlnaHQ6XCIxMDAlXCJ9OntoZWlnaHQ6dGhpcy5oZWlnaHQrXCJweFwifX0sZG90U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuXCJ2ZXJ0aWNhbFwiPT09dGhpcy5kaXJlY3Rpb24/e3dpZHRoOnRoaXMuZG90V2lkdGhWYWwrXCJweFwiLGhlaWdodDp0aGlzLmRvdEhlaWdodFZhbCtcInB4XCIsbGVmdDotKHRoaXMuZG90V2lkdGhWYWwtdGhpcy53aWR0aCkvMitcInB4XCJ9Ont3aWR0aDp0aGlzLmRvdFdpZHRoVmFsK1wicHhcIixoZWlnaHQ6dGhpcy5kb3RIZWlnaHRWYWwrXCJweFwiLHRvcDotKHRoaXMuZG90SGVpZ2h0VmFsLXRoaXMuaGVpZ2h0KS8yK1wicHhcIn19LHBpZWNld2lzZURvdFN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJuXCJ2ZXJ0aWNhbFwiPT09dGhpcy5kaXJlY3Rpb24/e3dpZHRoOnRoaXMud2lkdGgrXCJweFwiLGhlaWdodDp0aGlzLndpZHRoK1wicHhcIn06e3dpZHRoOnRoaXMuaGVpZ2h0K1wicHhcIixoZWlnaHQ6dGhpcy5oZWlnaHQrXCJweFwifX0scGllY2V3aXNlRG90V3JhcDpmdW5jdGlvbigpe2lmKCF0aGlzLnBpZWNld2lzZSYmIXRoaXMucGllY2V3aXNlTGFiZWwpcmV0dXJuITE7Zm9yKHZhciB0PVtdLGU9MDtlPD10aGlzLnRvdGFsO2UrKyl7dmFyIGk9XCJ2ZXJ0aWNhbFwiPT09dGhpcy5kaXJlY3Rpb24/e2JvdHRvbTp0aGlzLmdhcCplLXRoaXMud2lkdGgvMitcInB4XCIsbGVmdDowfTp7bGVmdDp0aGlzLmdhcCplLXRoaXMuaGVpZ2h0LzIrXCJweFwiLHRvcDowfSxzPXRoaXMucmV2ZXJzZT90aGlzLnRvdGFsLWU6ZSxyPXRoaXMuZGF0YT90aGlzLmRhdGFbc106dGhpcy5zcGFjaW5nKnMrdGhpcy5taW47dC5wdXNoKHtzdHlsZTppLGxhYmVsOnRoaXMuZm9ybWF0dGVyP3RoaXMuZm9ybWF0dGluZyhyKTpyLGluUmFuZ2U6cz49dGhpcy5pbmRleFJhbmdlWzBdJiZzPD10aGlzLmluZGV4UmFuZ2VbMV19KX1yZXR1cm4gdH19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmZsYWd8fHRoaXMuc2V0VmFsdWUodCwhMCl9LG1heDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxpbWl0VmFsdWUodGhpcy52YWwpOyExIT09ZSYmdGhpcy5zZXRWYWx1ZShlKSx0aGlzLnJlZnJlc2goKX0sbWluOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGltaXRWYWx1ZSh0aGlzLnZhbCk7ITEhPT1lJiZ0aGlzLnNldFZhbHVlKGUpLHRoaXMucmVmcmVzaCgpfSxzaG93OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dCYmIXRoaXMuc2l6ZSYmdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXtlLnJlZnJlc2goKX0pfX0sbWV0aG9kczp7YmluZEV2ZW50czpmdW5jdGlvbigpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIix0aGlzLm1vdmluZyx7cGFzc2l2ZTohMX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMubW92ZUVuZCx7cGFzc2l2ZTohMX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLm1vdmluZyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLm1vdmVFbmQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5tb3ZlRW5kKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMucmVmcmVzaCl9LHVuYmluZEV2ZW50czpmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy5yZWZyZXNoKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsdGhpcy5tb3ZpbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMubW92ZUVuZCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMubW92aW5nKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHRoaXMubW92ZUVuZCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0aGlzLm1vdmVFbmQpfSxmb3JtYXR0aW5nOmZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLmZvcm1hdHRlcj90aGlzLmZvcm1hdHRlci5yZXBsYWNlKC9cXHt2YWx1ZVxcfS8sdCk6dGhpcy5mb3JtYXR0ZXIodCl9LGdldFBvczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWFsVGltZSYmdGhpcy5nZXRTdGF0aWNEYXRhKCksXCJ2ZXJ0aWNhbFwiPT09dGhpcy5kaXJlY3Rpb24/dGhpcy5yZXZlcnNlP3QucGFnZVktdGhpcy5vZmZzZXQ6dGhpcy5zaXplLSh0LnBhZ2VZLXRoaXMub2Zmc2V0KTp0aGlzLnJldmVyc2U/dGhpcy5zaXplLSh0LmNsaWVudFgtdGhpcy5vZmZzZXQpOnQuY2xpZW50WC10aGlzLm9mZnNldH0sd3JhcENsaWNrOmZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNEaXNhYmxlZHx8IXRoaXMuY2xpY2thYmxlKXJldHVybiExO3ZhciBlPXRoaXMuZ2V0UG9zKHQpO3RoaXMuaXNSYW5nZSYmKHRoaXMuY3VycmVudFNsaWRlcj1lPih0aGlzLnBvc2l0aW9uWzFdLXRoaXMucG9zaXRpb25bMF0pLzIrdGhpcy5wb3NpdGlvblswXT8xOjApLHRoaXMuc2V0VmFsdWVPblBvcyhlKX0sbW92ZVN0YXJ0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNEaXNhYmxlZClyZXR1cm4hMTt0aGlzLmlzUmFuZ2UmJih0aGlzLmN1cnJlbnRTbGlkZXI9dCksdGhpcy5mbGFnPSEwLHRoaXMuJGVtaXQoXCJkcmFnLXN0YXJ0XCIsdGhpcyl9LG1vdmluZzpmdW5jdGlvbih0KXtpZighdGhpcy5mbGFnKXJldHVybiExO3QucHJldmVudERlZmF1bHQoKSx0LnRhcmdldFRvdWNoZXMmJnQudGFyZ2V0VG91Y2hlc1swXSYmKHQ9dC50YXJnZXRUb3VjaGVzWzBdKSx0aGlzLnNldFZhbHVlT25Qb3ModGhpcy5nZXRQb3ModCksITApfSxtb3ZlRW5kOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmZsYWcpcmV0dXJuITE7dGhpcy4kZW1pdChcImRyYWctZW5kXCIsdGhpcyksdGhpcy5sYXp5JiZ0aGlzLmlzRGlmZih0aGlzLnZhbCx0aGlzLnZhbHVlKSYmdGhpcy5zeW5jVmFsdWUoKSx0aGlzLmZsYWc9ITEsdGhpcy5zZXRQb3NpdGlvbigpfSxzZXRWYWx1ZU9uUG9zOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5pc1JhbmdlP3RoaXMubGltaXRbdGhpcy5jdXJyZW50U2xpZGVyXTp0aGlzLmxpbWl0LHM9dGhpcy5pc1JhbmdlP3RoaXMudmFsdWVMaW1pdFt0aGlzLmN1cnJlbnRTbGlkZXJdOnRoaXMudmFsdWVMaW1pdDtpZih0Pj1pWzBdJiZ0PD1pWzFdKXt0aGlzLnNldFRyYW5zZm9ybSh0KTt2YXIgcj0oTWF0aC5yb3VuZCh0L3RoaXMuZ2FwKSoodGhpcy5zcGFjaW5nKnRoaXMubXVsdGlwbGUpK3RoaXMubWluaW11bSp0aGlzLm11bHRpcGxlKS90aGlzLm11bHRpcGxlO3RoaXMuc2V0Q3VycmVudFZhbHVlKHIsZSl9ZWxzZSB0PGlbMF0/KHRoaXMuc2V0VHJhbnNmb3JtKGlbMF0pLHRoaXMuc2V0Q3VycmVudFZhbHVlKHNbMF0pLDE9PT10aGlzLmN1cnJlbnRTbGlkZXImJih0aGlzLmN1cnJlbnRTbGlkZXI9MCkpOih0aGlzLnNldFRyYW5zZm9ybShpWzFdKSx0aGlzLnNldEN1cnJlbnRWYWx1ZShzWzFdKSwwPT09dGhpcy5jdXJyZW50U2xpZGVyJiYodGhpcy5jdXJyZW50U2xpZGVyPTEpKX0saXNEaWZmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKXx8KEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPT09ZS5sZW5ndGg/dC5zb21lKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQhPT1lW2ldfSk6dCE9PWUpfSxzZXRDdXJyZW50VmFsdWU6ZnVuY3Rpb24odCxlKXtpZih0PHRoaXMubWluaW11bXx8dD50aGlzLm1heGltdW0pcmV0dXJuITE7dGhpcy5pc1JhbmdlP3RoaXMuaXNEaWZmKHRoaXMuY3VycmVudFZhbHVlW3RoaXMuY3VycmVudFNsaWRlcl0sdCkmJih0aGlzLmN1cnJlbnRWYWx1ZS5zcGxpY2UodGhpcy5jdXJyZW50U2xpZGVyLDEsdCksdGhpcy5sYXp5JiZ0aGlzLmZsYWd8fHRoaXMuc3luY1ZhbHVlKCkpOnRoaXMuaXNEaWZmKHRoaXMuY3VycmVudFZhbHVlLHQpJiYodGhpcy5jdXJyZW50VmFsdWU9dCx0aGlzLmxhenkmJnRoaXMuZmxhZ3x8dGhpcy5zeW5jVmFsdWUoKSksZXx8dGhpcy5zZXRQb3NpdGlvbigpfSxzZXRJbmRleDpmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpJiZ0aGlzLmlzUmFuZ2Upe3ZhciBlPXZvaWQgMDtlPXRoaXMuZGF0YT9bdGhpcy5kYXRhW3RbMF1dLHRoaXMuZGF0YVt0WzFdXV06W3RoaXMuc3BhY2luZyp0WzBdK3RoaXMubWluaW11bSx0aGlzLnNwYWNpbmcqdFsxXSt0aGlzLm1pbmltdW1dLHRoaXMuc2V0VmFsdWUoZSl9ZWxzZSB0PXRoaXMuc3BhY2luZyp0K3RoaXMubWluaW11bSx0aGlzLmlzUmFuZ2UmJih0aGlzLmN1cnJlbnRTbGlkZXI9dD4odGhpcy5jdXJyZW50VmFsdWVbMV0tdGhpcy5jdXJyZW50VmFsdWVbMF0pLzIrdGhpcy5jdXJyZW50VmFsdWVbMF0/MTowKSx0aGlzLnNldEN1cnJlbnRWYWx1ZSh0KX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXM7aWYodGhpcy5pc0RpZmYodGhpcy52YWwsdCkpe3ZhciByPXRoaXMubGltaXRWYWx1ZSh0KTt0aGlzLnZhbD0hMSE9PXI/dGhpcy5pc1JhbmdlP3IuY29uY2F0KCk6cjp0aGlzLmlzUmFuZ2U/dC5jb25jYXQoKTp0LHRoaXMuc3luY1ZhbHVlKGUpfXRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIHMuc2V0UG9zaXRpb24oaSl9KX0sc2V0UG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5mbGFnfHx0aGlzLnNldFRyYW5zaXRpb25UaW1lKHZvaWQgMD09PXQ/dGhpcy5zcGVlZDp0KSx0aGlzLmlzUmFuZ2U/KHRoaXMuY3VycmVudFNsaWRlcj0wLHRoaXMuc2V0VHJhbnNmb3JtKHRoaXMucG9zaXRpb25bdGhpcy5jdXJyZW50U2xpZGVyXSksdGhpcy5jdXJyZW50U2xpZGVyPTEsdGhpcy5zZXRUcmFuc2Zvcm0odGhpcy5wb3NpdGlvblt0aGlzLmN1cnJlbnRTbGlkZXJdKSk6dGhpcy5zZXRUcmFuc2Zvcm0odGhpcy5wb3NpdGlvbiksdGhpcy5mbGFnfHx0aGlzLnNldFRyYW5zaXRpb25UaW1lKDApfSxzZXRUcmFuc2Zvcm06ZnVuY3Rpb24odCl7dmFyIGU9KFwidmVydGljYWxcIj09PXRoaXMuZGlyZWN0aW9uP3RoaXMuZG90SGVpZ2h0VmFsLzItdDp0LXRoaXMuZG90V2lkdGhWYWwvMikqKHRoaXMucmV2ZXJzZT8tMToxKSxpPVwidmVydGljYWxcIj09PXRoaXMuZGlyZWN0aW9uP1widHJhbnNsYXRlWShcIitlK1wicHgpXCI6XCJ0cmFuc2xhdGVYKFwiK2UrXCJweClcIixzPSgwPT09dGhpcy5jdXJyZW50U2xpZGVyP3RoaXMucG9zaXRpb25bMV0tdDp0LXRoaXMucG9zaXRpb25bMF0pK1wicHhcIixyPSgwPT09dGhpcy5jdXJyZW50U2xpZGVyP3Q6dGhpcy5wb3NpdGlvblswXSkrXCJweFwiO3RoaXMuaXNSYW5nZT8odGhpcy5zbGlkZXJbdGhpcy5jdXJyZW50U2xpZGVyXS5zdHlsZS50cmFuc2Zvcm09aSx0aGlzLnNsaWRlclt0aGlzLmN1cnJlbnRTbGlkZXJdLnN0eWxlLldlYmtpdFRyYW5zZm9ybT1pLHRoaXMuc2xpZGVyW3RoaXMuY3VycmVudFNsaWRlcl0uc3R5bGUubXNUcmFuc2Zvcm09aSxcInZlcnRpY2FsXCI9PT10aGlzLmRpcmVjdGlvbj8odGhpcy4kcmVmcy5wcm9jZXNzLnN0eWxlLmhlaWdodD1zLHRoaXMuJHJlZnMucHJvY2Vzcy5zdHlsZVt0aGlzLnJldmVyc2U/XCJ0b3BcIjpcImJvdHRvbVwiXT1yKToodGhpcy4kcmVmcy5wcm9jZXNzLnN0eWxlLndpZHRoPXMsdGhpcy4kcmVmcy5wcm9jZXNzLnN0eWxlW3RoaXMucmV2ZXJzZT9cInJpZ2h0XCI6XCJsZWZ0XCJdPXIpKToodGhpcy5zbGlkZXIuc3R5bGUudHJhbnNmb3JtPWksdGhpcy5zbGlkZXIuc3R5bGUuV2Via2l0VHJhbnNmb3JtPWksdGhpcy5zbGlkZXIuc3R5bGUubXNUcmFuc2Zvcm09aSxcInZlcnRpY2FsXCI9PT10aGlzLmRpcmVjdGlvbj8odGhpcy4kcmVmcy5wcm9jZXNzLnN0eWxlLmhlaWdodD10K1wicHhcIix0aGlzLiRyZWZzLnByb2Nlc3Muc3R5bGVbdGhpcy5yZXZlcnNlP1widG9wXCI6XCJib3R0b21cIl09MCk6KHRoaXMuJHJlZnMucHJvY2Vzcy5zdHlsZS53aWR0aD10K1wicHhcIix0aGlzLiRyZWZzLnByb2Nlc3Muc3R5bGVbdGhpcy5yZXZlcnNlP1wicmlnaHRcIjpcImxlZnRcIl09MCkpfSxzZXRUcmFuc2l0aW9uVGltZTpmdW5jdGlvbih0KXtpZih0fHx0aGlzLiRyZWZzLnByb2Nlc3Mub2Zmc2V0V2lkdGgsdGhpcy5pc1JhbmdlKXtmb3IodmFyIGU9MDtlPHRoaXMuc2xpZGVyLmxlbmd0aDtlKyspdGhpcy5zbGlkZXJbZV0uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPXQrXCJzXCIsdGhpcy5zbGlkZXJbZV0uc3R5bGUuV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uPXQrXCJzXCI7dGhpcy4kcmVmcy5wcm9jZXNzLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj10K1wic1wiLHRoaXMuJHJlZnMucHJvY2Vzcy5zdHlsZS5XZWJraXRUcmFuc2l0aW9uRHVyYXRpb249dCtcInNcIn1lbHNlIHRoaXMuc2xpZGVyLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj10K1wic1wiLHRoaXMuc2xpZGVyLnN0eWxlLldlYmtpdFRyYW5zaXRpb25EdXJhdGlvbj10K1wic1wiLHRoaXMuJHJlZnMucHJvY2Vzcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249dCtcInNcIix0aGlzLiRyZWZzLnByb2Nlc3Muc3R5bGUuV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uPXQrXCJzXCJ9LGxpbWl0VmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLmRhdGEpcmV0dXJuIHQ7dmFyIGk9ITE7cmV0dXJuIHRoaXMuaXNSYW5nZT90PXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0PGUubWluPyhpPSEwLGUubWluKTp0PmUubWF4PyhpPSEwLGUubWF4KTp0fSk6dD50aGlzLm1heD8oaT0hMCx0PXRoaXMubWF4KTp0PHRoaXMubWluJiYoaT0hMCx0PXRoaXMubWluKSxpJiZ0fSxzeW5jVmFsdWU6ZnVuY3Rpb24odCl7dHx8dGhpcy4kZW1pdChcImNhbGxiYWNrXCIsdGhpcy52YWwpLHRoaXMuJGVtaXQoXCJpbnB1dFwiLHRoaXMuaXNSYW5nZT90aGlzLnZhbC5jb25jYXQoKTp0aGlzLnZhbCl9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsfSxnZXRJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRJbmRleH0sZ2V0U3RhdGljRGF0YTpmdW5jdGlvbigpe3RoaXMuJHJlZnMuZWxlbSYmKHRoaXMuc2l6ZT1cInZlcnRpY2FsXCI9PT10aGlzLmRpcmVjdGlvbj90aGlzLiRyZWZzLmVsZW0ub2Zmc2V0SGVpZ2h0OnRoaXMuJHJlZnMuZWxlbS5vZmZzZXRXaWR0aCx0aGlzLm9mZnNldD1cInZlcnRpY2FsXCI9PT10aGlzLmRpcmVjdGlvbj90aGlzLiRyZWZzLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK3dpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDp0aGlzLiRyZWZzLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLiRyZWZzLmVsZW0mJih0aGlzLmdldFN0YXRpY0RhdGEoKSx0aGlzLnNldFBvc2l0aW9uKCkpfX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZ0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3QuZ2V0U3RhdGljRGF0YSgpLHQuc2V0VmFsdWUodC52YWx1ZSwhMCwwKSx0LmJpbmRFdmVudHMoKX0pfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy51bmJpbmRFdmVudHMoKX19fSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHM9aSgwKTt0LmV4cG9ydHM9c30sZnVuY3Rpb24odCxlLGkpe2U9dC5leHBvcnRzPWkoNCkoKSxlLnB1c2goW3QuaSwnLnZ1ZS1zbGlkZXItY29tcG9uZW50e3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnZ1ZS1zbGlkZXItY29tcG9uZW50LnZ1ZS1zbGlkZXItZGlzYWJsZWR7b3BhY2l0eTouNTtjdXJzb3I6bm90LWFsbG93ZWR9LnZ1ZS1zbGlkZXItY29tcG9uZW50LnZ1ZS1zbGlkZXItaGFzLWxhYmVse21hcmdpbi1ib3R0b206MTVweH0udnVlLXNsaWRlci1jb21wb25lbnQudnVlLXNsaWRlci1kaXNhYmxlZCAudnVlLXNsaWRlci1kb3R7Y3Vyc29yOm5vdC1hbGxvd2VkfS52dWUtc2xpZGVyLWNvbXBvbmVudCAudnVlLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6MTVweDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2N9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyOmFmdGVye2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4OjJ9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXByb2Nlc3N7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoxNXB4O2JhY2tncm91bmQtY29sb3I6IzM0OThkYjstd2Via2l0LXRyYW5zaXRpb246YWxsIDBzO3RyYW5zaXRpb246YWxsIDBzO3otaW5kZXg6MX0udnVlLXNsaWRlci1jb21wb25lbnQudnVlLXNsaWRlci1ob3Jpem9udGFsIC52dWUtc2xpZGVyLXByb2Nlc3N7d2lkdGg6MDtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7d2lsbC1jaGFuZ2U6d2lkdGh9LnZ1ZS1zbGlkZXItY29tcG9uZW50LnZ1ZS1zbGlkZXItdmVydGljYWwgLnZ1ZS1zbGlkZXItcHJvY2Vzc3t3aWR0aDoxMDAlO2hlaWdodDowO2JvdHRvbTowO2xlZnQ6MDt3aWxsLWNoYW5nZTpoZWlnaHR9LnZ1ZS1zbGlkZXItY29tcG9uZW50LnZ1ZS1zbGlkZXItaG9yaXpvbnRhbC1yZXZlcnNlIC52dWUtc2xpZGVyLXByb2Nlc3N7d2lkdGg6MDtoZWlnaHQ6MTAwJTt0b3A6MDtyaWdodDowfS52dWUtc2xpZGVyLWNvbXBvbmVudC52dWUtc2xpZGVyLXZlcnRpY2FsLXJldmVyc2UgLnZ1ZS1zbGlkZXItcHJvY2Vzc3t3aWR0aDoxMDAlO2hlaWdodDowO3RvcDowO2xlZnQ6MH0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItZG90e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6LjVweCAuNXB4IDJweCAxcHggcmdiYSgwLDAsMCwuMzIpO2JveC1zaGFkb3c6LjVweCAuNXB4IDJweCAxcHggcmdiYSgwLDAsMCwuMzIpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgMHM7dHJhbnNpdGlvbjphbGwgMHM7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6M30udnVlLXNsaWRlci1jb21wb25lbnQudnVlLXNsaWRlci1ob3Jpem9udGFsIC52dWUtc2xpZGVyLWRvdHtsZWZ0OjB9LnZ1ZS1zbGlkZXItY29tcG9uZW50LnZ1ZS1zbGlkZXItdmVydGljYWwgLnZ1ZS1zbGlkZXItZG90e2JvdHRvbTowfS52dWUtc2xpZGVyLWNvbXBvbmVudC52dWUtc2xpZGVyLWhvcml6b250YWwtcmV2ZXJzZSAudnVlLXNsaWRlci1kb3R7cmlnaHQ6MH0udnVlLXNsaWRlci1jb21wb25lbnQudnVlLXNsaWRlci12ZXJ0aWNhbC1yZXZlcnNlIC52dWUtc2xpZGVyLWRvdHt0b3A6MH0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojl9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXRvb2x0aXB7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDt3aGl0ZS1zcGFjZTpub3dyYXA7cGFkZGluZzoycHggNXB4O21pbi13aWR0aDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyOjFweCBzb2xpZCAjMzQ5OGRiO2JhY2tncm91bmQtY29sb3I6IzM0OThkYn0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwLnZ1ZS1zbGlkZXItdG9vbHRpcC10b3B7dG9wOi05cHg7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMTAwJSl9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXRvb2x0aXAtd3JhcC52dWUtc2xpZGVyLXRvb2x0aXAtYm90dG9te2JvdHRvbTotOXB4O2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwxMDAlKX0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwLnZ1ZS1zbGlkZXItdG9vbHRpcC1sZWZ0e3RvcDo1MCU7bGVmdDotOXB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLC01MCUpfS52dWUtc2xpZGVyLWNvbXBvbmVudCAudnVlLXNsaWRlci10b29sdGlwLXdyYXAudnVlLXNsaWRlci10b29sdGlwLXJpZ2h0e3RvcDo1MCU7cmlnaHQ6LTlweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsLTUwJSl9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXRvb2x0aXAtd3JhcC52dWUtc2xpZGVyLXRvb2x0aXAtdG9wIC52dWUtc2xpZGVyLXRvb2x0aXA6YmVmb3Jle2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTEwcHg7bGVmdDo1MCU7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXI6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnRcXFxcMDtib3JkZXItdG9wLWNvbG9yOmluaGVyaXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSl9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXRvb2x0aXAtd3JhcC52dWUtc2xpZGVyLXRvb2x0aXAtYm90dG9tIC52dWUtc2xpZGVyLXRvb2x0aXA6YmVmb3Jle2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwcHg7bGVmdDo1MCU7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXI6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnRcXFxcMDtib3JkZXItYm90dG9tLWNvbG9yOmluaGVyaXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSl9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXRvb2x0aXAtd3JhcC52dWUtc2xpZGVyLXRvb2x0aXAtbGVmdCAudnVlLXNsaWRlci10b29sdGlwOmJlZm9yZXtjb250ZW50OlwiXCI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDotMTBweDt3aWR0aDowO2hlaWdodDowO2JvcmRlcjo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyOjZweCBzb2xpZCB0cmFuc3BhcmVudFxcXFwwO2JvcmRlci1sZWZ0LWNvbG9yOmluaGVyaXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwLnZ1ZS1zbGlkZXItdG9vbHRpcC1yaWdodCAudnVlLXNsaWRlci10b29sdGlwOmJlZm9yZXtjb250ZW50OlwiXCI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0Oi0xMHB4O3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXI6NnB4IHNvbGlkIHRyYW5zcGFyZW50XFxcXDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOmluaGVyaXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItZG90LnZ1ZS1zbGlkZXItaG92ZXI6aG92ZXIgLnZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwe2Rpc3BsYXk6YmxvY2t9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLWRvdC52dWUtc2xpZGVyLWFsd2F5cyAudnVlLXNsaWRlci10b29sdGlwLXdyYXB7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXBpZWNld2lzZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BhZGRpbmc6MDttYXJnaW46MDtsZWZ0OjA7dG9wOjA7aGVpZ2h0OjEwMCU7bGlzdC1zdHlsZTpub25lfS52dWUtc2xpZGVyLWNvbXBvbmVudCAudnVlLXNsaWRlci1waWVjZXdpc2UtaXRlbXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo4cHg7aGVpZ2h0OjhweH0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItcGllY2V3aXNlLWRvdHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xNik7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3otaW5kZXg6Mjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zczt0cmFuc2l0aW9uOmFsbCAuM3N9LnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXBpZWNld2lzZS1pdGVtOmZpcnN0LWNoaWxkIC52dWUtc2xpZGVyLXBpZWNld2lzZS1kb3QsLnZ1ZS1zbGlkZXItY29tcG9uZW50IC52dWUtc2xpZGVyLXBpZWNld2lzZS1pdGVtOmxhc3QtY2hpbGQgLnZ1ZS1zbGlkZXItcGllY2V3aXNlLWRvdHt2aXNpYmlsaXR5OmhpZGRlbn0udnVlLXNsaWRlci1jb21wb25lbnQudnVlLXNsaWRlci1ob3Jpem9udGFsLXJldmVyc2UgLnZ1ZS1zbGlkZXItcGllY2V3aXNlLWxhYmVsLC52dWUtc2xpZGVyLWNvbXBvbmVudC52dWUtc2xpZGVyLWhvcml6b250YWwgLnZ1ZS1zbGlkZXItcGllY2V3aXNlLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RvcDoxMDAlO2xlZnQ6NTAlO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTJweDtjb2xvcjojMzMzOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLDhweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLDhweCk7dmlzaWJpbGl0eTp2aXNpYmxlfS52dWUtc2xpZGVyLWNvbXBvbmVudC52dWUtc2xpZGVyLXZlcnRpY2FsLXJldmVyc2UgLnZ1ZS1zbGlkZXItcGllY2V3aXNlLWxhYmVsLC52dWUtc2xpZGVyLWNvbXBvbmVudC52dWUtc2xpZGVyLXZlcnRpY2FsIC52dWUtc2xpZGVyLXBpZWNld2lzZS1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jazt0b3A6NTAlO2xlZnQ6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEycHg7Y29sb3I6IzMzMzstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoOHB4LC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4LC01MCUpO3Zpc2liaWxpdHk6dmlzaWJsZX0udnVlLXNsaWRlci1jb21wb25lbnQgLnZ1ZS1zbGlkZXItc3Itb25seXtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fScsXCJcIl0pfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIGk9dGhpc1tlXTtpWzJdP3QucHVzaChcIkBtZWRpYSBcIitpWzJdK1wie1wiK2lbMV0rXCJ9XCIpOnQucHVzaChpWzFdKX1yZXR1cm4gdC5qb2luKFwiXCIpfSx0Lmk9ZnVuY3Rpb24oZSxpKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9W1tudWxsLGUsXCJcIl1dKTtmb3IodmFyIHM9e30scj0wO3I8dGhpcy5sZW5ndGg7cisrKXt2YXIgbj10aGlzW3JdWzBdO1wibnVtYmVyXCI9PXR5cGVvZiBuJiYoc1tuXT0hMCl9Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG89ZVtyXTtcIm51bWJlclwiPT10eXBlb2Ygb1swXSYmc1tvWzBdXXx8KGkmJiFvWzJdP29bMl09aTppJiYob1syXT1cIihcIitvWzJdK1wiKSBhbmQgKFwiK2krXCIpXCIpLHQucHVzaChvKSl9fSx0fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkscyl7dmFyIHIsbj10PXR8fHt9LG89dHlwZW9mIHQuZGVmYXVsdDtcIm9iamVjdFwiIT09byYmXCJmdW5jdGlvblwiIT09b3x8KHI9dCxuPXQuZGVmYXVsdCk7dmFyIGw9XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uLm9wdGlvbnM6bjtpZihlJiYobC5yZW5kZXI9ZS5yZW5kZXIsbC5zdGF0aWNSZW5kZXJGbnM9ZS5zdGF0aWNSZW5kZXJGbnMpLGkmJihsLl9zY29wZUlkPWkpLHMpe3ZhciBhPU9iamVjdC5jcmVhdGUobC5jb21wdXRlZHx8bnVsbCk7T2JqZWN0LmtleXMocykuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1zW3RdO2FbdF09ZnVuY3Rpb24oKXtyZXR1cm4gZX19KSxsLmNvbXB1dGVkPWF9cmV0dXJue2VzTW9kdWxlOnIsZXhwb3J0czpuLG9wdGlvbnM6bH19fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsaT10Ll9zZWxmLl9jfHxlO3JldHVybiBpKFwiZGl2XCIse2RpcmVjdGl2ZXM6W3tuYW1lOlwic2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTp0LnNob3csZXhwcmVzc2lvbjpcInNob3dcIn1dLHJlZjpcIndyYXBcIixjbGFzczpbXCJ2dWUtc2xpZGVyLWNvbXBvbmVudFwiLHQuZmxvd0RpcmVjdGlvbix0LmRpc2FibGVkQ2xhc3Mse1widnVlLXNsaWRlci1oYXMtbGFiZWxcIjp0LnBpZWNld2lzZUxhYmVsfV0sc3R5bGU6dC53cmFwU3R5bGVzLG9uOntjbGljazp0LndyYXBDbGlja319LFtpKFwiZGl2XCIse3JlZjpcImVsZW1cIixzdGF0aWNDbGFzczpcInZ1ZS1zbGlkZXJcIixzdHlsZTpbdC5lbGVtU3R5bGVzLHQuYmdTdHlsZV0sYXR0cnM6e1wiYXJpYS1oaWRkZW5cIjpcInRydWVcIn19LFt0LmlzUmFuZ2U/W2koXCJkaXZcIix7cmVmOlwiZG90MFwiLGNsYXNzOlt0LnRvb2x0aXBTdGF0dXMsXCJ2dWUtc2xpZGVyLWRvdFwiXSxzdHlsZTpbdC5kb3RTdHlsZXMsdC5zbGlkZXJTdHlsZXNbMF1dLG9uOnttb3VzZWRvd246ZnVuY3Rpb24oZSl7dC5tb3ZlU3RhcnQoMCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7dC5tb3ZlU3RhcnQoMCl9fX0sW2koXCJzcGFuXCIse2NsYXNzOltcInZ1ZS1zbGlkZXItdG9vbHRpcC1cIit0LnRvb2x0aXBEaXJlY3Rpb25bMF0sXCJ2dWUtc2xpZGVyLXRvb2x0aXAtd3JhcFwiXX0sW3QuX3QoXCJ0b29sdGlwXCIsW2koXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwidnVlLXNsaWRlci10b29sdGlwXCIsc3R5bGU6dC50b29sdGlwU3R5bGVzWzBdfSxbdC5fdih0Ll9zKHQuZm9ybWF0dGVyP3QuZm9ybWF0dGluZyh0LnZhbFswXSk6dC52YWxbMF0pKV0pXSx7dmFsdWU6dC52YWxbMF0saW5kZXg6MH0pXSwyKV0pLHQuX3YoXCIgXCIpLGkoXCJkaXZcIix7cmVmOlwiZG90MVwiLGNsYXNzOlt0LnRvb2x0aXBTdGF0dXMsXCJ2dWUtc2xpZGVyLWRvdFwiXSxzdHlsZTpbdC5kb3RTdHlsZXMsdC5zbGlkZXJTdHlsZXNbMV1dLG9uOnttb3VzZWRvd246ZnVuY3Rpb24oZSl7dC5tb3ZlU3RhcnQoMSl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7dC5tb3ZlU3RhcnQoMSl9fX0sW2koXCJzcGFuXCIse2NsYXNzOltcInZ1ZS1zbGlkZXItdG9vbHRpcC1cIit0LnRvb2x0aXBEaXJlY3Rpb25bMV0sXCJ2dWUtc2xpZGVyLXRvb2x0aXAtd3JhcFwiXX0sW3QuX3QoXCJ0b29sdGlwXCIsW2koXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwidnVlLXNsaWRlci10b29sdGlwXCIsc3R5bGU6dC50b29sdGlwU3R5bGVzWzFdfSxbdC5fdih0Ll9zKHQuZm9ybWF0dGVyP3QuZm9ybWF0dGluZyh0LnZhbFsxXSk6dC52YWxbMV0pKV0pXSx7dmFsdWU6dC52YWxbMV0saW5kZXg6MX0pXSwyKV0pXTpbaShcImRpdlwiLHtyZWY6XCJkb3RcIixjbGFzczpbdC50b29sdGlwU3RhdHVzLFwidnVlLXNsaWRlci1kb3RcIl0sc3R5bGU6W3QuZG90U3R5bGVzLHQuc2xpZGVyU3R5bGVzXSxvbjp7bW91c2Vkb3duOnQubW92ZVN0YXJ0LHRvdWNoc3RhcnQ6dC5tb3ZlU3RhcnR9fSxbaShcInNwYW5cIix7Y2xhc3M6W1widnVlLXNsaWRlci10b29sdGlwLVwiK3QudG9vbHRpcERpcmVjdGlvbixcInZ1ZS1zbGlkZXItdG9vbHRpcC13cmFwXCJdfSxbdC5fdChcInRvb2x0aXBcIixbaShcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJ2dWUtc2xpZGVyLXRvb2x0aXBcIixzdHlsZTp0LnRvb2x0aXBTdHlsZXN9LFt0Ll92KHQuX3ModC5mb3JtYXR0ZXI/dC5mb3JtYXR0aW5nKHQudmFsKTp0LnZhbCkpXSldLHt2YWx1ZTp0LnZhbH0pXSwyKV0pXSx0Ll92KFwiIFwiKSxpKFwidWxcIix7c3RhdGljQ2xhc3M6XCJ2dWUtc2xpZGVyLXBpZWNld2lzZVwifSx0Ll9sKHQucGllY2V3aXNlRG90V3JhcCxmdW5jdGlvbihlLHMpe3JldHVybiBpKFwibGlcIix7a2V5OnMsc3RhdGljQ2xhc3M6XCJ2dWUtc2xpZGVyLXBpZWNld2lzZS1pdGVtXCIsc3R5bGU6W3QucGllY2V3aXNlRG90U3R5bGUsZS5zdHlsZV19LFt0Ll90KFwicGllY2V3aXNlXCIsW3QucGllY2V3aXNlP2koXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwidnVlLXNsaWRlci1waWVjZXdpc2UtZG90XCIsc3R5bGU6W3QucGllY2V3aXNlU3R5bGUsZS5pblJhbmdlP3QucGllY2V3aXNlQWN0aXZlU3R5bGU6bnVsbF19KTp0Ll9lKCldLHtsYWJlbDplLmxhYmVsLGluZGV4OnMsZmlyc3Q6MD09PXMsbGFzdDpzPT09dC5waWVjZXdpc2VEb3RXcmFwLmxlbmd0aC0xfSksdC5fdihcIiBcIiksdC5fdChcImxhYmVsXCIsW3QucGllY2V3aXNlTGFiZWw/aShcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJ2dWUtc2xpZGVyLXBpZWNld2lzZS1sYWJlbFwiLHN0eWxlOlt0LmxhYmVsU3R5bGUsZS5pblJhbmdlP3QubGFiZWxBY3RpdmVTdHlsZTpudWxsXX0sW3QuX3YoXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcIit0Ll9zKGUubGFiZWwpK1wiXFxuXFx0XFx0XFx0XFx0XFx0XCIpXSk6dC5fZSgpXSx7bGFiZWw6ZS5sYWJlbCxpbmRleDpzLGZpcnN0OjA9PT1zLGxhc3Q6cz09PXQucGllY2V3aXNlRG90V3JhcC5sZW5ndGgtMX0pXSwyKX0pKSx0Ll92KFwiIFwiKSxpKFwiZGl2XCIse3JlZjpcInByb2Nlc3NcIixzdGF0aWNDbGFzczpcInZ1ZS1zbGlkZXItcHJvY2Vzc1wiLHN0eWxlOnQucHJvY2Vzc1N0eWxlfSldLDIpLHQuX3YoXCIgXCIpLHQuaXNSYW5nZXx8dC5kYXRhP3QuX2UoKTppKFwiaW5wdXRcIix7ZGlyZWN0aXZlczpbe25hbWU6XCJtb2RlbFwiLHJhd05hbWU6XCJ2LW1vZGVsXCIsdmFsdWU6dC52YWwsZXhwcmVzc2lvbjpcInZhbFwifV0sc3RhdGljQ2xhc3M6XCJ2dWUtc2xpZGVyLXNyLW9ubHlcIixhdHRyczp7dHlwZTpcInJhbmdlXCIsbWluOnQubWluLG1heDp0Lm1heH0sZG9tUHJvcHM6e3ZhbHVlOnQudmFsfSxvbjp7X19yOmZ1bmN0aW9uKGUpe3QudmFsPWUudGFyZ2V0LnZhbHVlfX19KV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbih0LGUsaSl7dmFyIHM9aSgzKTtcInN0cmluZ1wiPT10eXBlb2YgcyYmKHM9W1t0LmkscyxcIlwiXV0pLHMubG9jYWxzJiYodC5leHBvcnRzPXMubG9jYWxzKTtpKDgpKFwiNzQzZDk4ZjVcIixzLCEwKX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIHModCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXRbZV0scz1oW2kuaWRdO2lmKHMpe3MucmVmcysrO2Zvcih2YXIgcj0wO3I8cy5wYXJ0cy5sZW5ndGg7cisrKXMucGFydHNbcl0oaS5wYXJ0c1tyXSk7Zm9yKDtyPGkucGFydHMubGVuZ3RoO3IrKylzLnBhcnRzLnB1c2gobihpLnBhcnRzW3JdKSk7cy5wYXJ0cy5sZW5ndGg+aS5wYXJ0cy5sZW5ndGgmJihzLnBhcnRzLmxlbmd0aD1pLnBhcnRzLmxlbmd0aCl9ZWxzZXtmb3IodmFyIG89W10scj0wO3I8aS5wYXJ0cy5sZW5ndGg7cisrKW8ucHVzaChuKGkucGFydHNbcl0pKTtoW2kuaWRdPXtpZDppLmlkLHJlZnM6MSxwYXJ0czpvfX19fWZ1bmN0aW9uIHIoKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7cmV0dXJuIHQudHlwZT1cInRleHQvY3NzXCIsZC5hcHBlbmRDaGlsZCh0KSx0fWZ1bmN0aW9uIG4odCl7dmFyIGUsaSxzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNzci1pZH49XCInK3QuaWQrJ1wiXScpO2lmKHMpe2lmKGYpcmV0dXJuIHY7cy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHMpfWlmKG0pe3ZhciBuPWMrKztzPXB8fChwPXIoKSksZT1vLmJpbmQobnVsbCxzLG4sITEpLGk9by5iaW5kKG51bGwscyxuLCEwKX1lbHNlIHM9cigpLGU9bC5iaW5kKG51bGwscyksaT1mdW5jdGlvbigpe3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKX07cmV0dXJuIGUodCksZnVuY3Rpb24ocyl7aWYocyl7aWYocy5jc3M9PT10LmNzcyYmcy5tZWRpYT09PXQubWVkaWEmJnMuc291cmNlTWFwPT09dC5zb3VyY2VNYXApcmV0dXJuO2UodD1zKX1lbHNlIGkoKX19ZnVuY3Rpb24gbyh0LGUsaSxzKXt2YXIgcj1pP1wiXCI6cy5jc3M7aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PWcoZSxyKTtlbHNle3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHIpLG89dC5jaGlsZE5vZGVzO29bZV0mJnQucmVtb3ZlQ2hpbGQob1tlXSksby5sZW5ndGg/dC5pbnNlcnRCZWZvcmUobixvW2VdKTp0LmFwcGVuZENoaWxkKG4pfX1mdW5jdGlvbiBsKHQsZSl7dmFyIGk9ZS5jc3Mscz1lLm1lZGlhLHI9ZS5zb3VyY2VNYXA7aWYocyYmdC5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLHMpLHImJihpKz1cIlxcbi8qIyBzb3VyY2VVUkw9XCIrci5zb3VyY2VzWzBdK1wiICovXCIsaSs9XCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHIpKSkpK1wiICovXCIpLHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1pO2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpKX19dmFyIGE9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50O2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBERUJVRyYmREVCVUcmJiFhKXRocm93IG5ldyBFcnJvcihcInZ1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIik7dmFyIHU9aSg5KSxoPXt9LGQ9YSYmKGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSkscD1udWxsLGM9MCxmPSExLHY9ZnVuY3Rpb24oKXt9LG09XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmL21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkpe2Y9aTt2YXIgcj11KHQsZSk7cmV0dXJuIHMociksZnVuY3Rpb24oZSl7Zm9yKHZhciBpPVtdLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXSxsPWhbby5pZF07bC5yZWZzLS0saS5wdXNoKGwpfWU/KHI9dSh0LGUpLHMocikpOnI9W107Zm9yKHZhciBuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciBsPWlbbl07aWYoMD09PWwucmVmcyl7Zm9yKHZhciBhPTA7YTxsLnBhcnRzLmxlbmd0aDthKyspbC5wYXJ0c1thXSgpO2RlbGV0ZSBoW2wuaWRdfX19fTt2YXIgZz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiBmdW5jdGlvbihlLGkpe3JldHVybiB0W2VdPWksdC5maWx0ZXIoQm9vbGVhbikuam9pbihcIlxcblwiKX19KCl9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVtdLHM9e30scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdLG89blswXSxsPW5bMV0sYT1uWzJdLHU9blszXSxoPXtpZDp0K1wiOlwiK3IsY3NzOmwsbWVkaWE6YSxzb3VyY2VNYXA6dX07c1tvXT9zW29dLnBhcnRzLnB1c2goaCk6aS5wdXNoKHNbb109e2lkOm8scGFydHM6W2hdfSl9cmV0dXJuIGl9fV0pfSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXNsaWRlci1jb21wb25lbnQvZGlzdC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n");
-
-/***/ }),
-/* 8 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_Geshem_vue__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7d220ade_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_bustCache_Geshem_vue__ = __webpack_require__(16);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(9)\n}\nvar normalizeComponent = __webpack_require__(14)\n/* script */\n\n/* template */\n\n/* template functional */\n var __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_Geshem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7d220ade_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_bustCache_Geshem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"Geshem.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) { return key !== \"default\" && key.substr(0, 2) !== \"__\"})) { console.error(\"named exports are not supported in *.vue files.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7d220ade\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7d220ade\", Component.options)\n' + ' }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9HZXNoZW0udnVlPzg4NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsdUJBQWdMO0FBQ2hMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDb0s7QUFDcEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRSx3REFBd0QsSUFBSTs7QUFFM0k7QUFDQSxZQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFRCIsImZpbGUiOiI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlciEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleD97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtN2QyMjBhZGVcXFwiLFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNlfSFzYXNzLWxvYWRlciEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wJmJ1c3RDYWNoZSEuL0dlc2hlbS52dWVcIilcbn1cbnZhciBub3JtYWxpemVDb21wb25lbnQgPSByZXF1aXJlKFwiIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmltcG9ydCBfX3Z1ZV9zY3JpcHRfXyBmcm9tIFwiISFiYWJlbC1sb2FkZXIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCZidXN0Q2FjaGUhLi9HZXNoZW0udnVlXCJcbi8qIHRlbXBsYXRlICovXG5pbXBvcnQgX192dWVfdGVtcGxhdGVfXyBmcm9tIFwiISEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdkMjIwYWRlXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAmYnVzdENhY2hlIS4vR2VzaGVtLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG4gIHZhciBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18gPSBmYWxzZVxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBpbmplY3RTdHlsZVxuLyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX3Z1ZV9zY3JpcHRfXyxcbiAgX192dWVfdGVtcGxhdGVfXyxcbiAgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fLFxuICBfX3Z1ZV9zdHlsZXNfXyxcbiAgX192dWVfc2NvcGVJZF9fLFxuICBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIkdlc2hlbS52dWVcIlxuaWYgKENvbXBvbmVudC5lc01vZHVsZSAmJiBPYmplY3Qua2V5cyhDb21wb25lbnQuZXNNb2R1bGUpLnNvbWUoZnVuY3Rpb24gKGtleSkgeyAgcmV0dXJuIGtleSAhPT0gXCJkZWZhdWx0XCIgJiYga2V5LnN1YnN0cigwLCAyKSAhPT0gXCJfX1wifSkpIHsgIGNvbnNvbGUuZXJyb3IoXCJuYW1lZCBleHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluICoudnVlIGZpbGVzLlwiKX1cblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHsoZnVuY3Rpb24gKCkge1xuICB2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuICBob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpLCBmYWxzZSlcbiAgaWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFtb2R1bGUuaG90LmRhdGEpIHtcbiAgICBob3RBUEkuY3JlYXRlUmVjb3JkKFwiZGF0YS12LTdkMjIwYWRlXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9IGVsc2Uge1xuICAgIGhvdEFQSS5yZWxvYWQoXCJkYXRhLXYtN2QyMjBhZGVcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4nICsgJyAgfVxuICBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkaXNwb3NlZCA9IHRydWVcbiAgfSlcbn0pKCl9XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL0dlc2hlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8\n");
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(10);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(12)(\"3519a75e\", content, false);\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7d220ade\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0&bustCache!./Geshem.vue\", function() {\n var newContent = require(\"!!./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7d220ade\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0&bustCache!./Geshem.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9HZXNoZW0udnVlP2JlYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQSxvQ0FBc007QUFDdE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtIQUFrSCxtRkFBbUY7QUFDck0sMkhBQTJILG1GQUFtRjtBQUM5TTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDIiwiZmlsZSI6IjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtN2QyMjBhZGVcXFwiLFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAmYnVzdENhY2hlIS4vR2VzaGVtLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikoXCIzNTE5YTc1ZVwiLCBjb250ZW50LCBmYWxzZSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi03ZDIyMGFkZVxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2xpYi9sb2FkZXIuanMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCZidXN0Q2FjaGUhLi9HZXNoZW0udnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdkMjIwYWRlXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvbGliL2xvYWRlci5qcyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wJmJ1c3RDYWNoZSEuL0dlc2hlbS52dWVcIik7XG4gICAgIGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuICAgICB1cGRhdGUobmV3Q29udGVudCk7XG4gICB9KTtcbiB9XG4gLy8gV2hlbiB0aGUgbW9kdWxlIGlzIGRpc3Bvc2VkLCByZW1vdmUgdGhlIDxzdHlsZT4gdGFnc1xuIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIhLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlciEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi03ZDIyMGFkZVwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvbGliL2xvYWRlci5qcyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wJmJ1c3RDYWNoZSEuL0dlc2hlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9\n");
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("exports = module.exports = __webpack_require__(11)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \"\\n#geshem #datetime {\\n position: absolute;\\n margin: 20px 0px 0px 20px;\\n color: white;\\n font-family: monospace;\\n}\\n#geshem #datetime #date {\\n font-size: 1.4em;\\n}\\n#geshem #datetime #time {\\n font-size: 1.8em;\\n}\\n#geshem #slider {\\n position: absolute;\\n bottom: 8vh;\\n width: 30vw;\\n margin-left: 35vw;\\n}\\n@media only screen and (max-device-width: 812px) {\\n#geshem #slider {\\n width: 80vw;\\n margin-left: 8vw;\\n}\\n}\\n\", \"\"]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9HZXNoZW0udnVlPzU2NTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBR0E7QUFDQSw4Q0FBK0MsdUJBQXVCLDhCQUE4QixpQkFBaUIsMkJBQTJCLEdBQUcsMkJBQTJCLHVCQUF1QixHQUFHLDJCQUEyQix1QkFBdUIsR0FBRyxtQkFBbUIsdUJBQXVCLGdCQUFnQixnQkFBZ0Isc0JBQXNCLEdBQUcsb0RBQW9ELG1CQUFtQixvQkFBb0IseUJBQXlCLEdBQUcsR0FBRzs7QUFFMWQiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikodW5kZWZpbmVkKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIlxcbiNnZXNoZW0gI2RhdGV0aW1lIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG1hcmdpbjogMjBweCAwcHggMHB4IDIwcHg7XFxuICBjb2xvcjogd2hpdGU7XFxuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xcbn1cXG4jZ2VzaGVtICNkYXRldGltZSAjZGF0ZSB7XFxuICAgIGZvbnQtc2l6ZTogMS40ZW07XFxufVxcbiNnZXNoZW0gI2RhdGV0aW1lICN0aW1lIHtcXG4gICAgZm9udC1zaXplOiAxLjhlbTtcXG59XFxuI2dlc2hlbSAjc2xpZGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogOHZoO1xcbiAgd2lkdGg6IDMwdnc7XFxuICBtYXJnaW4tbGVmdDogMzV2dztcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogODEycHgpIHtcXG4jZ2VzaGVtICNzbGlkZXIge1xcbiAgICAgIHdpZHRoOiA4MHZ3O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA4dnc7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LTdkMjIwYWRlXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAmYnVzdENhY2hlIS4vR2VzaGVtLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n");
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports) {
-
-eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanM/MTU5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGdCQUFnQjtBQUNuRCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0JBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxjQUFjOztBQUVsRTtBQUNBIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n");
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(13)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction) {\n isProduction = _isProduction\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[data-vue-ssr-id~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzP2FlMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQSxZQUFZLHVCQUF1QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxudmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVkJyAmJiBERUJVRykge1xuICBpZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIlxuICApIH1cbn1cblxudmFyIGxpc3RUb1N0eWxlcyA9IHJlcXVpcmUoJy4vbGlzdFRvU3R5bGVzJylcblxuLypcbnR5cGUgU3R5bGVPYmplY3QgPSB7XG4gIGlkOiBudW1iZXI7XG4gIHBhcnRzOiBBcnJheTxTdHlsZU9iamVjdFBhcnQ+XG59XG5cbnR5cGUgU3R5bGVPYmplY3RQYXJ0ID0ge1xuICBjc3M6IHN0cmluZztcbiAgbWVkaWE6IHN0cmluZztcbiAgc291cmNlTWFwOiA/c3RyaW5nXG59XG4qL1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7LypcbiAgW2lkOiBudW1iZXJdOiB7XG4gICAgaWQ6IG51bWJlcixcbiAgICByZWZzOiBudW1iZXIsXG4gICAgcGFydHM6IEFycmF5PChvYmo/OiBTdHlsZU9iamVjdFBhcnQpID0+IHZvaWQ+XG4gIH1cbiovfVxuXG52YXIgaGVhZCA9IGhhc0RvY3VtZW50ICYmIChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pXG52YXIgc2luZ2xldG9uRWxlbWVudCA9IG51bGxcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMFxudmFyIGlzUHJvZHVjdGlvbiA9IGZhbHNlXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9XG5cbi8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxudmFyIGlzT2xkSUUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvbXNpZSBbNi05XVxcYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhcmVudElkLCBsaXN0LCBfaXNQcm9kdWN0aW9uKSB7XG4gIGlzUHJvZHVjdGlvbiA9IF9pc1Byb2R1Y3Rpb25cblxuICB2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBsaXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICAgIGRvbVN0eWxlLnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpXG4gICAgfVxuICAgIGlmIChuZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIG5ld0xpc3QpXG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlcyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV1cbiAgICAgIGlmIChkb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXSgpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzIC8qIEFycmF5PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJlZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKVxuICAgICAgfVxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBpZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7IGlkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2NzcydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIHJldHVybiBzdHlsZUVsZW1lbnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLXZ1ZS1zc3ItaWR+PVwiJyArIG9iai5pZCArICdcIl0nKVxuXG4gIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBhbmQgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgLy8gc2ltcGx5IGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbm9vcFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBidXQgaW4gZGV2IG1vZGUuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24gQ2hyb21lIGNhbid0IGhhbmRsZSBzb3VyY2UgbWFwIGluIHNlcnZlci1yZW5kZXJlZFxuICAgICAgLy8gc3R5bGUgdGFncyAtIHNvdXJjZSBtYXBzIGluIDxzdHlsZT4gb25seSB3b3JrcyBpZiB0aGUgc3R5bGUgdGFnIGlzXG4gICAgICAvLyBjcmVhdGVkIGFuZCBpbnNlcnRlZCBkeW5hbWljYWxseS4gU28gd2UgcmVtb3ZlIHRoZSBzZXJ2ZXIgcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlcyBhbmQgaW5qZWN0IG5ldyBvbmVzLlxuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc09sZElFKSB7XG4gICAgLy8gdXNlIHNpbmdsZXRvbiBtb2RlIGZvciBJRTkuXG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKytcbiAgICBzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KCkpXG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgZmFsc2UpXG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2UgbXVsdGktc3R5bGUtdGFnIG1vZGUgaW4gYWxsIG90aGVyIGNhc2VzXG4gICAgc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KClcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50KVxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICB1cGRhdGUob2JqKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG4gICAgICAgICAgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiZcbiAgICAgICAgICBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iailcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxudmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnRcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKVxuICB9XG59KSgpXG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5jc3NcblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcylcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcylcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY3NzTm9kZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGVFbGVtZW50LCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3NcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwXG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSlcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXApIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RldnRvb2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcbiAgICAvLyB0aGlzIG1ha2VzIHNvdXJjZSBtYXBzIGluc2lkZSBzdHlsZSB0YWdzIHdvcmsgcHJvcGVybHkgaW4gQ2hyb21lXG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlVVJMPScgKyBzb3VyY2VNYXAuc291cmNlc1swXSArICcgKi8nXG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyAnICovJ1xuICB9XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzc1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKVxuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12\n");
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports) {
-
-eval("/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzP2I1MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHlsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///13\n");
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports) {
-
-eval("/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXIuanM/NTU0ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgcmF3U2NyaXB0RXhwb3J0cyxcbiAgY29tcGlsZWRUZW1wbGF0ZSxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIgLyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNNb2R1bGVcbiAgdmFyIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyB8fCB7fVxuXG4gIC8vIEVTNiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0eXBlb2YgcmF3U2NyaXB0RXhwb3J0cy5kZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRzXG4gICAgc2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChjb21waWxlZFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRlbXBsYXRlLnJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIHZhciBmdW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4gICAgdmFyIGV4aXN0aW5nID0gZnVuY3Rpb25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAgICAgOiBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuXG4gICAgaWYgKCFmdW5jdGlvbmFsKSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01vZHVsZTogZXNNb2R1bGUsXG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///14\n");
-
-/***/ }),
-/* 15 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_slider_component__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_slider_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_slider_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_mapbox_gl__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_mapbox_gl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_mapbox_gl__);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n name: 'geshem',\n components: {\n 'vue-slider': __WEBPACK_IMPORTED_MODULE_0_vue_slider_component___default.a\n },\n data: function data() {\n var _ref;\n\n return {\n imgs: window.imgs,\n res: 280,\n slider: 7,\n rasterCoords: {\n 140: [[33.35317413, 33.27232471], [36.32243686, 33.27232471], [36.32243686, 30.72293428], [33.35317413, 30.72293428]],\n 280: [[31.93095218, 34.5156862], [37.86644267, 34.5156862], [37.86644267, 29.42911589], [31.93095218, 29.42911589]]\n },\n map: new __WEBPACK_IMPORTED_MODULE_1_mapbox_gl___default.a.Map((_ref = {\n container: 'map',\n style: 'mapbox://styles/mapbox/dark-v9'\n }, _defineProperty(_ref, 'container', 'map'), _defineProperty(_ref, 'maxZoom', 10), _defineProperty(_ref, 'minZoom', 5), _defineProperty(_ref, 'zoom', 6.3), _defineProperty(_ref, 'center', [35, 31.9]), _defineProperty(_ref, 'hash', false), _ref))\n };\n },\n computed: {\n date: function date() {\n var d = this.imgs[this.res][7 - this.slider].substr(0, 8);\n return d.substr(6, 2) + '-' + d.substr(4, 2) + '-' + d.substr(0, 4);\n },\n time: function time() {\n var t = this.imgs[this.res][7 - this.slider].substr(9, 6);\n return t.substr(0, 2) + ':' + t.substr(2, 2);\n },\n curImg: function curImg() {\n return 7 - this.slider;\n }\n },\n created: function created() {\n var vm = this;\n this.map.on('style.load', function () {\n var i = 0;\n while (i < vm.imgs['140'].length) {\n vm.addRadarSource('140', i, vm.imgs['140'][i++]);\n }\n var i = 0;\n while (i < vm.imgs['280'].length) {\n vm.addRadarSource('280', i, vm.imgs['280'][i++]);\n }\n vm.addRadarLayer('280', 0);\n });\n this.map.on('zoom', function () {\n var zoomIn = vm.map.getZoom() > 7;\n var from = zoomIn ? '280' : '140';\n var to = zoomIn ? '140' : '280';\n if (to != vm.res) {\n console.log('Zoom event from ' + from + ' to ' + to);\n vm.removeRadarLayer(from, vm.curImg);\n vm.addRadarLayer(to, vm.curImg);\n vm.res = to;\n }\n });\n },\n methods: {\n addRadarSource: function addRadarSource(res, i, url) {\n this.map.addSource('radar-' + res + '-' + i, {\n type: 'image',\n url: '/static/img/' + url,\n coordinates: this.rasterCoords[res]\n });\n },\n addRadarLayer: function addRadarLayer(res, i) {\n this.map.addLayer({\n id: 'radar-' + res + '-' + i,\n source: 'radar-' + res + '-' + i,\n type: 'raster',\n paint: {\n 'raster-opacity': 0.85\n }\n });\n },\n removeRadarLayer: function removeRadarLayer(res, i) {\n this.map.removeLayer('radar-' + res + '-' + i);\n }\n },\n watch: {\n slider: function slider(to, from) {\n this.removeRadarLayer(this.res, 7 - from);\n this.addRadarLayer(this.res, 7 - to);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vR2VzaGVtLnZ1ZT8zYjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUNBO0FBQ0E7UUFFQTs7a0JBR0E7QUFGQTs7QUFHQTs7O21CQUVBO1dBQ0E7Y0FDQTs7YUFFQSxlQUNBLDRCQUNBLDRCQUNBLDRCQUVBO2FBQ0EsZUFDQSwyQkFDQSwyQkFDQSw0QkFHQTtBQWJBO2lFQWNBO21CQUNBO2VBQ0E7NENBQ0EseUNBQ0Esc0NBQ0Esa0NBQ0EsMkNBQ0Esc0NBR0E7QUE1QkE7QUE2QkE7OzBCQUVBOzZEQUNBO3VFQUNBO0FBQ0E7MEJBQ0E7NkRBQ0E7Z0RBQ0E7QUFDQTs4QkFDQTtzQkFDQTtBQUVBO0FBWkE7OEJBYUE7YUFDQTswQ0FDQTtjQUNBO3dDQUNBO21EQUNBO0FBQ0E7Y0FDQTt3Q0FDQTttREFDQTtBQUNBOzhCQUNBO0FBQ0E7b0NBQ0E7c0NBQ0E7a0NBQ0E7Z0NBQ0E7d0JBQ0E7eURBQ0E7cUNBQ0E7Z0NBQ0E7aUJBQ0E7QUFDQTtBQUNBO0FBQ0E7O3lEQUVBOztjQUVBOzhCQUNBO3VDQUVBO0FBSkE7QUFLQTtrREFDQTs7bUNBRUE7dUNBQ0E7Y0FDQTs7NEJBSUE7QUFIQTtBQUpBO0FBUUE7d0RBQ0E7a0RBQ0E7QUFFQTtBQXJCQTs7c0NBdUJBOzBDQUNBO3VDQUNBO0FBRUE7QUFMQTtBQWhHQSIsImZpbGUiOiIxNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdiBpZD1cImdlc2hlbVwiPlxuICAgIDxkaXYgaWQ9XCJkYXRldGltZVwiPlxuICAgICAgPGRpdiBpZD1cImRhdGVcIj57eyBkYXRlIH19PC9kaXY+XG4gICAgICA8ZGl2IGlkPVwidGltZVwiPnt7IHRpbWUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwic2xpZGVyXCI+XG4gICAgICA8dnVlLXNsaWRlciByZWY9XCJzbGlkZXJcIiB2LW1vZGVsPVwic2xpZGVyXCIgOm1pbj0xIDptYXg9NyA6aGVpZ2h0PTIwIDpkb3Qtc2l6ZT00NSA6dG9vbHRpcD1mYWxzZT48L3Z1ZS1zbGlkZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgaW1wb3J0IHZ1ZVNsaWRlciBmcm9tICd2dWUtc2xpZGVyLWNvbXBvbmVudCc7XG4gIGltcG9ydCBtYXBib3hnbCBmcm9tICdtYXBib3gtZ2wnO1xuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogJ2dlc2hlbScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgJ3Z1ZS1zbGlkZXInOiB2dWVTbGlkZXJcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGltZ3M6IHdpbmRvdy5pbWdzLFxuICAgICAgICByZXM6IDI4MCxcbiAgICAgICAgc2xpZGVyOiA3LFxuICAgICAgICByYXN0ZXJDb29yZHM6IHtcbiAgICAgICAgICAxNDA6IFtcbiAgICAgICAgICAgIFszMy4zNTMxNzQxMywgMzMuMjcyMzI0NzFdLFxuICAgICAgICAgICAgWzM2LjMyMjQzNjg2LCAzMy4yNzIzMjQ3MV0sXG4gICAgICAgICAgICBbMzYuMzIyNDM2ODYsIDMwLjcyMjkzNDI4XSxcbiAgICAgICAgICAgIFszMy4zNTMxNzQxMywgMzAuNzIyOTM0MjhdXG4gICAgICAgICAgXSxcbiAgICAgICAgICAyODA6IFtcbiAgICAgICAgICAgIFszMS45MzA5NTIxOCwgMzQuNTE1Njg2Ml0sXG4gICAgICAgICAgICBbMzcuODY2NDQyNjcsIDM0LjUxNTY4NjJdLFxuICAgICAgICAgICAgWzM3Ljg2NjQ0MjY3LCAyOS40MjkxMTU4OV0sXG4gICAgICAgICAgICBbMzEuOTMwOTUyMTgsIDI5LjQyOTExNTg5XVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgbWFwOiBuZXcgbWFwYm94Z2wuTWFwKHtcbiAgICAgICAgICBjb250YWluZXI6ICdtYXAnLFxuICAgICAgICAgIHN0eWxlOiAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9kYXJrLXY5JyxcbiAgICAgICAgICBjb250YWluZXI6ICdtYXAnLFxuICAgICAgICAgIG1heFpvb206IDEwLFxuICAgICAgICAgIG1pblpvb206IDUsXG4gICAgICAgICAgem9vbTogNi4zLFxuICAgICAgICAgIGNlbnRlcjogWzM1LCAzMS45XSxcbiAgICAgICAgICBoYXNoOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGQgPSB0aGlzLmltZ3NbdGhpcy5yZXNdWzctdGhpcy5zbGlkZXJdLnN1YnN0cigwLCA4KTtcbiAgICAgICAgcmV0dXJuIGAke2Quc3Vic3RyKDYsIDIpfS0ke2Quc3Vic3RyKDQsIDIpfS0ke2Quc3Vic3RyKDAsIDQpfWA7XG4gICAgICB9LFxuICAgICAgdGltZTogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdCA9IHRoaXMuaW1nc1t0aGlzLnJlc11bNy10aGlzLnNsaWRlcl0uc3Vic3RyKDksIDYpO1xuICAgICAgICByZXR1cm4gYCR7dC5zdWJzdHIoMCwgMil9OiR7dC5zdWJzdHIoMiwgMil9YDtcbiAgICAgIH0sXG4gICAgICBjdXJJbWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIDcgLSB0aGlzLnNsaWRlcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2bSA9IHRoaXM7XG4gICAgICB0aGlzLm1hcC5vbignc3R5bGUubG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoaSA8IHZtLmltZ3NbJzE0MCddLmxlbmd0aCkge1xuICAgICAgICAgIHZtLmFkZFJhZGFyU291cmNlKCcxNDAnLCBpLCB2bS5pbWdzWycxNDAnXVtpKytdKVxuICAgICAgICB9XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCB2bS5pbWdzWycyODAnXS5sZW5ndGgpIHtcbiAgICAgICAgICB2bS5hZGRSYWRhclNvdXJjZSgnMjgwJywgaSwgdm0uaW1nc1snMjgwJ11baSsrXSlcbiAgICAgICAgfVxuICAgICAgICB2bS5hZGRSYWRhckxheWVyKCcyODAnLCAwKVxuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcC5vbignem9vbScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHpvb21JbiA9IHZtLm1hcC5nZXRab29tKCkgPiA3O1xuICAgICAgICB2YXIgZnJvbSA9IHpvb21JbiA/ICcyODAnIDogJzE0MCc7XG4gICAgICAgIHZhciB0byA9IHpvb21JbiA/ICcxNDAnIDogJzI4MCc7XG4gICAgICAgIGlmICh0byAhPSB2bS5yZXMpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgWm9vbSBldmVudCBmcm9tICR7ZnJvbX0gdG8gJHt0b31gKTtcbiAgICAgICAgICB2bS5yZW1vdmVSYWRhckxheWVyKGZyb20sIHZtLmN1ckltZyk7XG4gICAgICAgICAgdm0uYWRkUmFkYXJMYXllcih0bywgdm0uY3VySW1nKTtcbiAgICAgICAgICB2bS5yZXMgPSB0bztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICBhZGRSYWRhclNvdXJjZTogZnVuY3Rpb24ocmVzLCBpLCB1cmwpIHtcbiAgICAgICAgdGhpcy5tYXAuYWRkU291cmNlKGByYWRhci0ke3Jlc30tJHtpfWAsIHtcbiAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICAgIHVybDogJy9zdGF0aWMvaW1nLycgKyB1cmwsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMucmFzdGVyQ29vcmRzW3Jlc11cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhZGRSYWRhckxheWVyOiBmdW5jdGlvbihyZXMsIGkpIHtcbiAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIoe1xuICAgICAgICAgIGlkOiBgcmFkYXItJHtyZXN9LSR7aX1gLFxuICAgICAgICAgIHNvdXJjZTogYHJhZGFyLSR7cmVzfS0ke2l9YCxcbiAgICAgICAgICB0eXBlOiAncmFzdGVyJyxcbiAgICAgICAgICBwYWludDoge1xuICAgICAgICAgICAgJ3Jhc3Rlci1vcGFjaXR5JzogMC44NVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZW1vdmVSYWRhckxheWVyOiBmdW5jdGlvbihyZXMsIGkpIHtcbiAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYHJhZGFyLSR7cmVzfS0ke2l9YClcbiAgICAgIH1cbiAgICB9LFxuICAgIHdhdGNoOiB7XG4gICAgICBzbGlkZXI6IGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgICAgICB0aGlzLnJlbW92ZVJhZGFyTGF5ZXIodGhpcy5yZXMsIDctZnJvbSk7XG4gICAgICAgIHRoaXMuYWRkUmFkYXJMYXllcih0aGlzLnJlcywgNy10byk7XG4gICAgICB9XG4gICAgfVxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gICNnZXNoZW0ge1xuICAgICNkYXRldGltZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBtYXJnaW46IDIwcHggMHB4IDBweCAyMHB4O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICNkYXRlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgIH1cbiAgICAgICN0aW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjhlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgI3NsaWRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDh2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgICAgbWFyZ2luLWxlZnQ6IDM1dnc7XG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA4MTJweCkge1xuICAgICAgICB3aWR0aDogODB2dztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDh2dztcbiAgICAgIH1cbiAgICB9XG4gIH1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gR2VzaGVtLnZ1ZT83YTUyNTkwMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n");
-
-/***/ }),
-/* 16 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"geshem\" } }, [\n _c(\"div\", { attrs: { id: \"datetime\" } }, [\n _c(\"div\", { attrs: { id: \"date\" } }, [_vm._v(_vm._s(_vm.date))]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"time\" } }, [_vm._v(_vm._s(_vm.time))])\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"slider\" } },\n [\n _c(\"vue-slider\", {\n ref: \"slider\",\n attrs: { min: 1, max: 7, height: 20, \"dot-size\": 45, tooltip: false },\n model: {\n value: _vm.slider,\n callback: function($$v) {\n _vm.slider = $$v\n },\n expression: \"slider\"\n }\n })\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7d220ade\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9HZXNoZW0udnVlP2EyMDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUyxlQUFlLEVBQUU7QUFDOUMsZUFBZSxTQUFTLGlCQUFpQixFQUFFO0FBQzNDLGlCQUFpQixTQUFTLGFBQWEsRUFBRTtBQUN6QztBQUNBLGlCQUFpQixTQUFTLGFBQWEsRUFBRTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBUyxlQUFlLEVBQUU7QUFDakM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDZEQUE2RDtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcImdlc2hlbVwiIH0gfSwgW1xuICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwiZGF0ZXRpbWVcIiB9IH0sIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwiZGF0ZVwiIH0gfSwgW192bS5fdihfdm0uX3MoX3ZtLmRhdGUpKV0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidGltZVwiIH0gfSwgW192bS5fdihfdm0uX3MoX3ZtLnRpbWUpKV0pXG4gICAgXSksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IGF0dHJzOiB7IGlkOiBcInNsaWRlclwiIH0gfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJ2dWUtc2xpZGVyXCIsIHtcbiAgICAgICAgICByZWY6IFwic2xpZGVyXCIsXG4gICAgICAgICAgYXR0cnM6IHsgbWluOiAxLCBtYXg6IDcsIGhlaWdodDogMjAsIFwiZG90LXNpemVcIjogNDUsIHRvb2x0aXA6IGZhbHNlIH0sXG4gICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgIHZhbHVlOiBfdm0uc2xpZGVyLFxuICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICBfdm0uc2xpZGVyID0gJCR2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzbGlkZXJcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICAxXG4gICAgKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtN2QyMjBhZGVcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi03ZDIyMGFkZVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCZidXN0Q2FjaGUhLi9HZXNoZW0udnVlXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///16\n");
-
-/***/ })
-/******/ ]); \ No newline at end of file
+!function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/static/js/",e(e.s=2)}([function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){(function(e){var r,r;!function(e){t.exports=e()}(function(){var t;return function t(e,i,n){function o(s,l){if(!i[s]){if(!e[s]){var u="function"==typeof r&&r;if(!l&&u)return r(s,!0);if(a)return a(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var p=i[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return o(r||t)},p,p.exports,t,e,i,n)}return i[s].exports}for(var a="function"==typeof r&&r,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(e,r,i){!function(e,n){"object"==typeof i&&void 0!==r?r.exports=n():"function"==typeof t&&t.amd?t(n):e.glMatrix=n()}(this,function(){"use strict";function t(t,e,r){var i=e[0],n=e[1],o=e[2];return t[0]=i*r[0]+n*r[3]+o*r[6],t[1]=i*r[1]+n*r[4]+o*r[7],t[2]=i*r[2]+n*r[5]+o*r[8],t}function e(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3];return t[0]=r[0]*i+r[4]*n+r[8]*o+r[12]*a,t[1]=r[1]*i+r[5]*n+r[9]*o+r[13]*a,t[2]=r[2]*i+r[6]*n+r[10]*o+r[14]*a,t[3]=r[3]*i+r[7]*n+r[11]*o+r[15]*a,t}function r(){var t=new Float32Array(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function i(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=i*l+o*s,t[1]=n*l+a*s,t[2]=i*-s+o*l,t[3]=n*-s+a*l,t}function n(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=r[0],l=r[1];return t[0]=i*s,t[1]=n*s,t[2]=o*l,t[3]=a*l,t}function o(){var t=new Float32Array(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function a(t,e){var r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=r,t[2]=0,t[3]=-r,t[4]=i,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function s(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function l(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function u(t,e){var r=e[0],i=e[1],n=e[2],o=e[3],a=e[4],s=e[5],l=e[6],u=e[7],c=e[8],p=e[9],h=e[10],f=e[11],d=e[12],m=e[13],v=e[14],y=e[15],g=r*s-i*a,_=r*l-n*a,x=r*u-o*a,b=i*l-n*s,w=i*u-o*s,T=n*u-o*l,S=c*m-p*d,z=c*v-h*d,A=c*y-f*d,C=p*v-h*m,E=p*y-f*m,k=h*y-f*v,M=g*k-_*E+x*C+b*A-w*z+T*S;return M?(M=1/M,t[0]=(s*k-l*E+u*C)*M,t[1]=(n*E-i*k-o*C)*M,t[2]=(m*T-v*w+y*b)*M,t[3]=(h*w-p*T-f*b)*M,t[4]=(l*A-a*k-u*z)*M,t[5]=(r*k-n*A+o*z)*M,t[6]=(v*x-d*T-y*_)*M,t[7]=(c*T-h*x+f*_)*M,t[8]=(a*E-s*A+u*S)*M,t[9]=(i*A-r*E-o*S)*M,t[10]=(d*w-m*x+y*g)*M,t[11]=(p*x-c*w-f*g)*M,t[12]=(s*z-a*C-l*S)*M,t[13]=(r*C-i*z+n*S)*M,t[14]=(m*_-d*b-v*g)*M,t[15]=(c*b-p*_+h*g)*M,t):null}function c(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],p=e[8],h=e[9],f=e[10],d=e[11],m=e[12],v=e[13],y=e[14],g=e[15],_=r[0],x=r[1],b=r[2],w=r[3];return t[0]=_*i+x*s+b*p+w*m,t[1]=_*n+x*l+b*h+w*v,t[2]=_*o+x*u+b*f+w*y,t[3]=_*a+x*c+b*d+w*g,_=r[4],x=r[5],b=r[6],w=r[7],t[4]=_*i+x*s+b*p+w*m,t[5]=_*n+x*l+b*h+w*v,t[6]=_*o+x*u+b*f+w*y,t[7]=_*a+x*c+b*d+w*g,_=r[8],x=r[9],b=r[10],w=r[11],t[8]=_*i+x*s+b*p+w*m,t[9]=_*n+x*l+b*h+w*v,t[10]=_*o+x*u+b*f+w*y,t[11]=_*a+x*c+b*d+w*g,_=r[12],x=r[13],b=r[14],w=r[15],t[12]=_*i+x*s+b*p+w*m,t[13]=_*n+x*l+b*h+w*v,t[14]=_*o+x*u+b*f+w*y,t[15]=_*a+x*c+b*d+w*g,t}function p(t,e,r){var i,n,o,a,s,l,u,c,p,h,f,d,m=r[0],v=r[1],y=r[2];return e===t?(t[12]=e[0]*m+e[4]*v+e[8]*y+e[12],t[13]=e[1]*m+e[5]*v+e[9]*y+e[13],t[14]=e[2]*m+e[6]*v+e[10]*y+e[14],t[15]=e[3]*m+e[7]*v+e[11]*y+e[15]):(i=e[0],n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],p=e[8],h=e[9],f=e[10],d=e[11],t[0]=i,t[1]=n,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t[6]=u,t[7]=c,t[8]=p,t[9]=h,t[10]=f,t[11]=d,t[12]=i*m+s*v+p*y+e[12],t[13]=n*m+l*v+h*y+e[13],t[14]=o*m+u*v+f*y+e[14],t[15]=a*m+c*v+d*y+e[15]),t}function h(t,e,r){var i=r[0],n=r[1],o=r[2];return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function f(t,e,r){var i=Math.sin(r),n=Math.cos(r),o=e[4],a=e[5],s=e[6],l=e[7],u=e[8],c=e[9],p=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*n+u*i,t[5]=a*n+c*i,t[6]=s*n+p*i,t[7]=l*n+h*i,t[8]=u*n-o*i,t[9]=c*n-a*i,t[10]=p*n-s*i,t[11]=h*n-l*i,t}function d(t,e,r){var i=Math.sin(r),n=Math.cos(r),o=e[0],a=e[1],s=e[2],l=e[3],u=e[4],c=e[5],p=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*n+u*i,t[1]=a*n+c*i,t[2]=s*n+p*i,t[3]=l*n+h*i,t[4]=u*n-o*i,t[5]=c*n-a*i,t[6]=p*n-s*i,t[7]=h*n-l*i,t}function m(t,e,r,i,n){var o=1/Math.tan(e/2),a=1/(i-n);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(n+i)*a,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*n*i*a,t[15]=0,t}function v(t,e,r,i,n,o,a){var s=1/(e-r),l=1/(i-n),u=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*s,t[13]=(n+i)*l,t[14]=(a+o)*u,t[15]=1,t}return function(){var t=new Float32Array(3);t[0]=0,t[1]=0,t[2]=0}(),function(){var t=new Float32Array(4);t[0]=0,t[1]=0,t[2]=0,t[3]=0}(),{vec3:{transformMat3:t},vec4:{transformMat4:e},mat2:{create:r,rotate:i,scale:n},mat3:{create:o,fromRotation:a},mat4:{create:s,identity:l,translate:p,scale:h,multiply:c,perspective:m,rotateX:f,rotateZ:d,invert:u,ortho:v}}})},{}],2:[function(t,e,r){"use strict";function i(t,e){this.x=t,this.y=e}e.exports=i,i.prototype={clone:function(){return new i(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),i=e*this.x-r*this.y,n=r*this.x+e*this.y;return this.x=i,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),i=Math.sin(t),n=e.x+r*(this.x-e.x)-i*(this.y-e.y),o=e.y+i*(this.x-e.x)+r*(this.y-e.y);return this.x=n,this.y=o,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},i.convert=function(t){return t instanceof i?t:Array.isArray(t)?new i(t[0],t[1]):t}},{}],3:[function(e,r,i){!function(e,n){"object"==typeof i&&void 0!==r?r.exports=n():"function"==typeof t&&t.amd?t(n):e.ShelfPack=n()}(this,function(){function t(t,e,r){r=r||{},this.w=t||64,this.h=e||64,this.autoResize=!!r.autoResize,this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0}function e(t,e,r){this.x=0,this.y=t,this.w=this.free=e,this.h=r}function r(t,e,r,i,n,o,a){this.id=t,this.x=e,this.y=r,this.w=i,this.h=n,this.maxw=o||i,this.maxh=a||n,this.refcount=0}return t.prototype.pack=function(t,e){t=[].concat(t),e=e||{};for(var r,i,n,o,a=[],s=0;s<t.length;s++)if(r=t[s].w||t[s].width,i=t[s].h||t[s].height,n=t[s].id,r&&i){if(!(o=this.packOne(r,i,n)))continue;e.inPlace&&(t[s].x=o.x,t[s].y=o.y,t[s].id=o.id),a.push(o)}return this.shrink(),a},t.prototype.packOne=function(t,r,i){var n,o,a,s,l={freebin:-1,shelf:-1,waste:1/0},u=0;if("string"==typeof i||"number"==typeof i){if(n=this.getBin(i))return this.ref(n),n;"number"==typeof i&&(this.maxId=Math.max(i,this.maxId))}else i=++this.maxId;for(s=0;s<this.freebins.length;s++){if(n=this.freebins[s],r===n.maxh&&t===n.maxw)return this.allocFreebin(s,t,r,i);r>n.maxh||t>n.maxw||r<=n.maxh&&t<=n.maxw&&(a=n.maxw*n.maxh-t*r)<l.waste&&(l.waste=a,l.freebin=s)}for(s=0;s<this.shelves.length;s++)if(o=this.shelves[s],u+=o.h,!(t>o.free)){if(r===o.h)return this.allocShelf(s,t,r,i);r>o.h||r<o.h&&(a=(o.h-r)*t)<l.waste&&(l.freebin=-1,l.waste=a,l.shelf=s)}if(-1!==l.freebin)return this.allocFreebin(l.freebin,t,r,i);if(-1!==l.shelf)return this.allocShelf(l.shelf,t,r,i);if(r<=this.h-u&&t<=this.w)return o=new e(u,this.w,r),this.allocShelf(this.shelves.push(o)-1,t,r,i);if(this.autoResize){var c,p,h,f;return c=p=this.h,h=f=this.w,(h<=c||t>h)&&(f=2*Math.max(t,h)),(c<h||r>c)&&(p=2*Math.max(r,c)),this.resize(f,p),this.packOne(t,r,i)}return null},t.prototype.allocFreebin=function(t,e,r,i){var n=this.freebins.splice(t,1)[0];return n.id=i,n.w=e,n.h=r,n.refcount=0,this.bins[i]=n,this.ref(n),n},t.prototype.allocShelf=function(t,e,r,i){var n=this.shelves[t],o=n.alloc(e,r,i);return this.bins[i]=o,this.ref(o),o},t.prototype.shrink=function(){if(this.shelves.length>0){for(var t=0,e=0,r=0;r<this.shelves.length;r++){var i=this.shelves[r];e+=i.h,t=Math.max(i.w-i.free,t)}this.resize(t,e)}},t.prototype.getBin=function(t){return this.bins[t]},t.prototype.ref=function(t){if(1==++t.refcount){var e=t.h;this.stats[e]=1+(0|this.stats[e])}return t.refcount},t.prototype.unref=function(t){return 0===t.refcount?0:(0==--t.refcount&&(this.stats[t.h]--,delete this.bins[t.id],this.freebins.push(t)),t.refcount)},t.prototype.clear=function(){this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var r=0;r<this.shelves.length;r++)this.shelves[r].resize(t);return!0},e.prototype.alloc=function(t,e,i){if(t>this.free||e>this.h)return null;var n=this.x;return this.x+=t,this.free-=t,new r(i,n,this.y,t,e,t,this.h)},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t})},{}],4:[function(t,e,r){"use strict";function i(t,e,r,i,n,o){this.fontSize=t||24,this.buffer=void 0===e?3:e,this.cutoff=i||.25,this.fontFamily=n||"sans-serif",this.fontWeight=o||"normal",this.radius=r||8;var a=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=a,this.ctx=this.canvas.getContext("2d"),this.ctx.font=this.fontWeight+" "+this.fontSize+"px "+this.fontFamily,this.ctx.textBaseline="middle",this.ctx.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.d=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Int16Array(a),this.middle=Math.round(a/2*(navigator.userAgent.indexOf("Gecko/")>=0?1.2:1))}function n(t,e,r,i,n,a,s){for(var l=0;l<e;l++){for(var u=0;u<r;u++)i[u]=t[u*e+l];for(o(i,n,a,s,r),u=0;u<r;u++)t[u*e+l]=n[u]}for(u=0;u<r;u++){for(l=0;l<e;l++)i[l]=t[u*e+l];for(o(i,n,a,s,e),l=0;l<e;l++)t[u*e+l]=Math.sqrt(n[l])}}function o(t,e,r,i,n){r[0]=0,i[0]=-a,i[1]=+a;for(var o=1,s=0;o<n;o++){for(var l=(t[o]+o*o-(t[r[s]]+r[s]*r[s]))/(2*o-2*r[s]);l<=i[s];)s--,l=(t[o]+o*o-(t[r[s]]+r[s]*r[s]))/(2*o-2*r[s]);s++,r[s]=o,i[s]=l,i[s+1]=+a}for(o=0,s=0;o<n;o++){for(;i[s+1]<o;)s++;e[o]=(o-r[s])*(o-r[s])+t[r[s]]}}e.exports=i;var a=1e20;i.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var e=this.ctx.getImageData(0,0,this.size,this.size),r=new Uint8ClampedArray(this.size*this.size),i=0;i<this.size*this.size;i++){var o=e.data[4*i+3]/255;this.gridOuter[i]=1===o?0:0===o?a:Math.pow(Math.max(0,.5-o),2),this.gridInner[i]=1===o?a:0===o?0:Math.pow(Math.max(0,o-.5),2)}for(n(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),n(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),i=0;i<this.size*this.size;i++){var s=this.gridOuter[i]-this.gridInner[i];r[i]=Math.max(0,Math.min(255,Math.round(255-255*(s/this.radius+this.cutoff))))}return r}},{}],5:[function(t,e,r){function i(t,e,r,i){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(i-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=i,this.p2x=r,this.p2y=i}e.exports=i,i.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},i.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},i.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},i.prototype.solveCurveX=function(t,e){void 0===e&&(e=1e-6);var r,i,n,o,a;for(n=t,a=0;a<8;a++){if(o=this.sampleCurveX(n)-t,Math.abs(o)<e)return n;var s=this.sampleCurveDerivativeX(n);if(Math.abs(s)<1e-6)break;n-=o/s}if(r=0,i=1,(n=t)<r)return r;if(n>i)return i;for(;r<i;){if(o=this.sampleCurveX(n),Math.abs(o-t)<e)return n;t>o?r=n:i=n,n=.5*(i-r)+r}return n},i.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}},{}],6:[function(t,e,r){e.exports.VectorTile=t("./lib/vectortile.js"),e.exports.VectorTileFeature=t("./lib/vectortilefeature.js"),e.exports.VectorTileLayer=t("./lib/vectortilelayer.js")},{"./lib/vectortile.js":7,"./lib/vectortilefeature.js":8,"./lib/vectortilelayer.js":9}],7:[function(t,e,r){"use strict";function i(t,e){this.layers=t.readFields(n,{},e)}function n(t,e,r){if(3===t){var i=new o(r,r.readVarint()+r.pos);i.length&&(e[i.name]=i)}}var o=t("./vectortilelayer");e.exports=i},{"./vectortilelayer":9}],8:[function(t,e,r){"use strict";function i(t,e,r,i,o){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=i,this._values=o,t.readFields(n,this,e)}function n(t,e,r){1==t?e.id=r.readVarint():2==t?o(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos)}function o(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var i=e._keys[t.readVarint()],n=e._values[t.readVarint()];e.properties[i]=n}}function a(t){var e=t.length;if(e<=1)return[t];for(var r,i,n=[],o=0;o<e;o++){var a=s(t[o]);0!==a&&(void 0===i&&(i=a<0),i===a<0?(r&&n.push(r),r=[t[o]]):r.push(t[o]))}return r&&n.push(r),n}function s(t){for(var e,r,i=0,n=0,o=t.length,a=o-1;n<o;a=n++)e=t[n],r=t[a],i+=(r.x-e.x)*(e.y+r.y);return i}var l=t("@mapbox/point-geometry");e.exports=i,i.types=["Unknown","Point","LineString","Polygon"],i.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,i=1,n=0,o=0,a=0,s=[];t.pos<r;){if(!n){var u=t.readVarint();i=7&u,n=u>>3}if(n--,1===i||2===i)o+=t.readSVarint(),a+=t.readSVarint(),1===i&&(e&&s.push(e),e=[]),e.push(new l(o,a));else{if(7!==i)throw new Error("unknown command "+i);e&&e.push(e[0].clone())}}return e&&s.push(e),s},i.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,i=0,n=0,o=0,a=1/0,s=-1/0,l=1/0,u=-1/0;t.pos<e;){if(!i){var c=t.readVarint();r=7&c,i=c>>3}if(i--,1===r||2===r)n+=t.readSVarint(),o+=t.readSVarint(),n<a&&(a=n),n>s&&(s=n),o<l&&(l=o),o>u&&(u=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,l,s,u]},i.prototype.toGeoJSON=function(t,e,r){function n(t){for(var e=0;e<t.length;e++){var r=t[e],i=180-360*(r.y+c)/l;t[e]=[360*(r.x+u)/l-180,360/Math.PI*Math.atan(Math.exp(i*Math.PI/180))-90]}}var o,s,l=this.extent*Math.pow(2,r),u=this.extent*t,c=this.extent*e,p=this.loadGeometry(),h=i.types[this.type];switch(this.type){case 1:var f=[];for(o=0;o<p.length;o++)f[o]=p[o][0];p=f,n(p);break;case 2:for(o=0;o<p.length;o++)n(p[o]);break;case 3:for(p=a(p),o=0;o<p.length;o++)for(s=0;s<p[o].length;s++)n(p[o][s])}1===p.length?p=p[0]:h="Multi"+h;var d={type:"Feature",geometry:{type:h,coordinates:p},properties:this.properties};return"id"in this&&(d.id=this.id),d}},{"@mapbox/point-geometry":2}],9:[function(t,e,r){"use strict";function i(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(n,this,e),this.length=this._features.length}function n(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(o(r))}function o(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var i=t.readVarint()>>3;e=1===i?t.readString():2===i?t.readFloat():3===i?t.readDouble():4===i?t.readVarint64():5===i?t.readVarint():6===i?t.readSVarint():7===i?t.readBoolean():null}return e}var a=t("./vectortilefeature.js");e.exports=i,i.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new a(this._pbf,e,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":8}],10:[function(e,r,i){!function(e,n){"object"==typeof i&&void 0!==r?n(i):"function"==typeof t&&t.amd?t(["exports"],n):n(e.WhooTS=e.WhooTS||{})}(this,function(t){function e(t,e,i,n,o,a){return a=a||{},t+"?"+["bbox="+r(i,n,o),"format="+(a.format||"image/png"),"service="+(a.service||"WMS"),"version="+(a.version||"1.1.1"),"request="+(a.request||"GetMap"),"srs="+(a.srs||"EPSG:3857"),"width="+(a.width||256),"height="+(a.height||256),"layers="+e].join("&")}function r(t,e,r){e=Math.pow(2,r)-e-1;var n=i(256*t,256*e,r),o=i(256*(t+1),256*(e+1),r);return n[0]+","+n[1]+","+o[0]+","+o[1]}function i(t,e,r){var i=2*Math.PI*6378137/256/Math.pow(2,r);return[t*i-2*Math.PI*6378137/2,e*i-2*Math.PI*6378137/2]}t.getURL=e,t.getTileBBox=r,t.getMercCoords=i,Object.defineProperty(t,"__esModule",{value:!0})})},{}],11:[function(t,e,r){"use strict";function i(t,e,r){r=r||2;var i=e&&e.length,o=i?e[0]*r:t.length,s=n(t,0,o,r,!0),l=[];if(!s)return l;var u,c,h,f,d,m,v;if(i&&(s=p(t,e,s,r)),t.length>80*r){u=h=t[0],c=f=t[1];for(var y=r;y<o;y+=r)d=t[y],m=t[y+1],d<u&&(u=d),m<c&&(c=m),d>h&&(h=d),m>f&&(f=m);v=Math.max(h-u,f-c)}return a(s,l,r,u,c,v),l}function n(t,e,r,i,n){var o,a;if(n===L(t,e,r,i)>0)for(o=e;o<r;o+=i)a=E(o,t[o],t[o+1],a);else for(o=r-i;o>=e;o-=i)a=E(o,t[o],t[o+1],a);return a&&w(a,a.next)&&(k(a),a=a.next),a}function o(t,e){if(!t)return t;e||(e=t);var r,i=t;do{if(r=!1,i.steiner||!w(i,i.next)&&0!==b(i.prev,i,i.next))i=i.next;else{if(k(i),(i=e=i.prev)===i.next)return null;r=!0}}while(r||i!==e);return e}function a(t,e,r,i,n,p,h){if(t){!h&&p&&m(t,i,n,p);for(var f,d,v=t;t.prev!==t.next;)if(f=t.prev,d=t.next,p?l(t,i,n,p):s(t))e.push(f.i/r),e.push(t.i/r),e.push(d.i/r),k(t),t=d.next,v=d.next;else if((t=d)===v){h?1===h?(t=u(t,e,r),a(t,e,r,i,n,p,2)):2===h&&c(t,e,r,i,n,p):a(o(t),e,r,i,n,p,1);break}}}function s(t){var e=t.prev,r=t,i=t.next;if(b(e,r,i)>=0)return!1;for(var n=t.next.next;n!==t.prev;){if(_(e.x,e.y,r.x,r.y,i.x,i.y,n.x,n.y)&&b(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function l(t,e,r,i){var n=t.prev,o=t,a=t.next;if(b(n,o,a)>=0)return!1;for(var s=n.x<o.x?n.x<a.x?n.x:a.x:o.x<a.x?o.x:a.x,l=n.y<o.y?n.y<a.y?n.y:a.y:o.y<a.y?o.y:a.y,u=n.x>o.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,c=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,p=y(s,l,e,r,i),h=y(u,c,e,r,i),f=t.nextZ;f&&f.z<=h;){if(f!==t.prev&&f!==t.next&&_(n.x,n.y,o.x,o.y,a.x,a.y,f.x,f.y)&&b(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(f=t.prevZ;f&&f.z>=p;){if(f!==t.prev&&f!==t.next&&_(n.x,n.y,o.x,o.y,a.x,a.y,f.x,f.y)&&b(f.prev,f,f.next)>=0)return!1;f=f.prevZ}return!0}function u(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!w(n,o)&&T(n,i,i.next,o)&&z(n,o)&&z(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),k(i),k(i.next),i=t=o),i=i.next}while(i!==t);return i}function c(t,e,r,i,n,s){var l=t;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&x(l,u)){var c=C(l,u);return l=o(l,l.next),c=o(c,c.next),a(l,e,r,i,n,s),void a(c,e,r,i,n,s)}u=u.next}l=l.next}while(l!==t)}function p(t,e,r,i){var a,s,l,u,c,p=[];for(a=0,s=e.length;a<s;a++)l=e[a]*i,u=a<s-1?e[a+1]*i:t.length,c=n(t,l,u,i,!1),c===c.next&&(c.steiner=!0),p.push(g(c));for(p.sort(h),a=0;a<p.length;a++)f(p[a],r),r=o(r,r.next);return r}function h(t,e){return t.x-e.x}function f(t,e){if(e=d(t,e)){var r=C(e,t);o(r,r.next)}}function d(t,e){var r,i=e,n=t.x,o=t.y,a=-1/0;do{if(o<=i.y&&o>=i.next.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>a){if(a=s,s===n){if(o===i.y)return i;if(o===i.next.y)return i.next}r=i.x<i.next.x?i:i.next}}i=i.next}while(i!==e);if(!r)return null;if(n===a)return r.prev;var l,u=r,c=r.x,p=r.y,h=1/0;for(i=r.next;i!==u;)n>=i.x&&i.x>=c&&_(o<p?n:a,o,c,p,o<p?a:n,o,i.x,i.y)&&((l=Math.abs(o-i.y)/(n-i.x))<h||l===h&&i.x>r.x)&&z(i,t)&&(r=i,h=l),i=i.next;return r}function m(t,e,r,i){var n=t;do{null===n.z&&(n.z=y(n.x,n.y,e,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==t);n.prevZ.nextZ=null,n.prevZ=null,v(n)}function v(t){var e,r,i,n,o,a,s,l,u=1;do{for(r=t,t=null,o=null,a=0;r;){for(a++,i=r,s=0,e=0;e<u&&(s++,i=i.nextZ);e++);for(l=u;s>0||l>0&&i;)0===s?(n=i,i=i.nextZ,l--):0!==l&&i?r.z<=i.z?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--):(n=r,r=r.nextZ,s--),o?o.nextZ=n:t=n,n.prevZ=o,o=n;r=i}o.nextZ=null,u*=2}while(a>1);return t}function y(t,e,r,i,n){return t=32767*(t-r)/n,e=32767*(e-i)/n,t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),t|e<<1}function g(t){var e=t,r=t;do{e.x<r.x&&(r=e),e=e.next}while(e!==t);return r}function _(t,e,r,i,n,o,a,s){return(n-a)*(e-s)-(t-a)*(o-s)>=0&&(t-a)*(i-s)-(r-a)*(e-s)>=0&&(r-a)*(o-s)-(n-a)*(i-s)>=0}function x(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!S(t,e)&&z(t,e)&&z(e,t)&&A(t,e)}function b(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function w(t,e){return t.x===e.x&&t.y===e.y}function T(t,e,r,i){return!!(w(t,e)&&w(r,i)||w(t,i)&&w(r,e))||b(t,e,r)>0!=b(t,e,i)>0&&b(r,i,t)>0!=b(r,i,e)>0}function S(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&T(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}function z(t,e){return b(t.prev,t,t.next)<0?b(t,e,t.next)>=0&&b(t,t.prev,e)>=0:b(t,e,t.prev)<0||b(t,t.next,e)<0}function A(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;do{r.y>o!=r.next.y>o&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==t);return i}function C(t,e){var r=new M(t.i,t.x,t.y),i=new M(e.i,e.x,e.y),n=t.next,o=e.prev;return t.next=e,e.prev=t,r.next=n,n.prev=r,i.next=r,r.prev=i,o.next=i,i.prev=o,i}function E(t,e,r,i){var n=new M(t,e,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function k(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function M(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function L(t,e,r,i){for(var n=0,o=e,a=r-i;o<r;o+=i)n+=(t[a]-t[o])*(t[o+1]+t[a+1]),a=o;return n}e.exports=i,i.deviation=function(t,e,r,i){var n=e&&e.length,o=n?e[0]*r:t.length,a=Math.abs(L(t,0,o,r));if(n)for(var s=0,l=e.length;s<l;s++){var u=e[s]*r,c=s<l-1?e[s+1]*r:t.length;a-=Math.abs(L(t,u,c,r))}var p=0;for(s=0;s<i.length;s+=3){var h=i[s]*r,f=i[s+1]*r,d=i[s+2]*r;p+=Math.abs((t[h]-t[d])*(t[f+1]-t[h+1])-(t[h]-t[f])*(t[d+1]-t[h+1]))}return 0===a&&0===p?0:Math.abs((p-a)/a)},i.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},i=0,n=0;n<t.length;n++){for(var o=0;o<t[n].length;o++)for(var a=0;a<e;a++)r.vertices.push(t[n][o][a]);n>0&&(i+=t[n-1].length,r.holes.push(i))}return r}},{}],12:[function(t,e,r){function i(t){if("Polygon"===t.type)return n(t.coordinates);if("MultiPolygon"===t.type){for(var e=0,r=0;r<t.coordinates.length;r++)e+=n(t.coordinates[r]);return e}return null}function n(t){var e=0;if(t&&t.length>0){e+=Math.abs(o(t[0]));for(var r=1;r<t.length;r++)e-=Math.abs(o(t[r]))}return e}function o(t){var e=0;if(t.length>2){for(var r,i,n=0;n<t.length-1;n++)r=t[n],i=t[n+1],e+=a(i[0]-r[0])*(2+Math.sin(a(r[1]))+Math.sin(a(i[1])));e=e*s.RADIUS*s.RADIUS/2}return e}function a(t){return t*Math.PI/180}var s=t("wgs84");e.exports.geometry=i,e.exports.ring=o},{wgs84:40}],13:[function(t,e,r){function i(t,e){switch(t&&t.type||null){case"FeatureCollection":return t.features=t.features.map(n(i,e)),t;case"Feature":return t.geometry=i(t.geometry,e),t;case"Polygon":case"MultiPolygon":return o(t,e);default:return t}}function n(t,e){return function(r){return t(r,e)}}function o(t,e){return"Polygon"===t.type?t.coordinates=a(t.coordinates,e):"MultiPolygon"===t.type&&(t.coordinates=t.coordinates.map(n(a,e))),t}function a(t,e){e=!!e,t[0]=s(t[0],e);for(var r=1;r<t.length;r++)t[r]=s(t[r],!e);return t}function s(t,e){return l(t)===e?t:t.reverse()}function l(t){return u.ring(t)>=0}var u=t("geojson-area");e.exports=i},{"geojson-area":12}],14:[function(t,e,r){"use strict";function i(t,e,r,i,a,l,u,c){if(r/=e,i/=e,u>=r&&c<=i)return t;if(u>i||c<r)return null;for(var p=[],h=0;h<t.length;h++){var f,d,m=t[h],v=m.geometry,y=m.type;if(f=m.min[a],d=m.max[a],f>=r&&d<=i)p.push(m);else if(!(f>i||d<r)){var g=1===y?n(v,r,i,a):o(v,r,i,a,l,3===y);g.length&&p.push(s(m.tags,y,g,m.id))}}return p.length?p:null}function n(t,e,r,i){for(var n=[],o=0;o<t.length;o++){var a=t[o],s=a[i];s>=e&&s<=r&&n.push(a)}return n}function o(t,e,r,i,n,o){for(var s=[],l=0;l<t.length;l++){var u,c,p,h=0,f=0,d=null,m=t[l],v=m.area,y=m.dist,g=m.outer,_=m.length,x=[];for(c=0;c<_-1;c++)u=d||m[c],d=m[c+1],h=f||u[i],f=d[i],h<e?f>r?(x.push(n(u,d,e),n(u,d,r)),o||(x=a(s,x,v,y,g))):f>=e&&x.push(n(u,d,e)):h>r?f<e?(x.push(n(u,d,r),n(u,d,e)),o||(x=a(s,x,v,y,g))):f<=r&&x.push(n(u,d,r)):(x.push(u),f<e?(x.push(n(u,d,e)),o||(x=a(s,x,v,y,g))):f>r&&(x.push(n(u,d,r)),o||(x=a(s,x,v,y,g))));u=m[_-1],h=u[i],h>=e&&h<=r&&x.push(u),p=x[x.length-1],o&&p&&(x[0][0]!==p[0]||x[0][1]!==p[1])&&x.push(x[0]),a(s,x,v,y,g)}return s}function a(t,e,r,i,n){return e.length&&(e.area=r,e.dist=i,void 0!==n&&(e.outer=n),t.push(e)),[]}e.exports=i;var s=t("./feature")},{"./feature":16}],15:[function(t,e,r){"use strict";function i(t,e){var r=[];if("FeatureCollection"===t.type)for(var i=0;i<t.features.length;i++)n(r,t.features[i],e);else"Feature"===t.type?n(r,t,e):n(r,{geometry:t},e);return r}function n(t,e,r){if(null!==e.geometry){var i,s,l,c,p=e.geometry,h=p.type,f=p.coordinates,d=e.properties,m=e.id;if("Point"===h)t.push(u(d,1,[a(f)],m));else if("MultiPoint"===h)t.push(u(d,1,o(f),m));else if("LineString"===h)t.push(u(d,2,[o(f,r)],m));else if("MultiLineString"===h||"Polygon"===h){for(l=[],i=0;i<f.length;i++)c=o(f[i],r),"Polygon"===h&&(c.outer=0===i),l.push(c);t.push(u(d,"Polygon"===h?3:2,l,m))}else if("MultiPolygon"===h){for(l=[],i=0;i<f.length;i++)for(s=0;s<f[i].length;s++)c=o(f[i][s],r),c.outer=0===s,l.push(c);t.push(u(d,3,l,m))}else{if("GeometryCollection"!==h)throw new Error("Input data is not a valid GeoJSON object.");for(i=0;i<p.geometries.length;i++)n(t,{geometry:p.geometries[i],properties:d},r)}}}function o(t,e){for(var r=[],i=0;i<t.length;i++)r.push(a(t[i]));return e&&(l(r,e),s(r)),r}function a(t){var e=Math.sin(t[1]*Math.PI/180),r=t[0]/360+.5,i=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return i=i<0?0:i>1?1:i,[r,i,0]}function s(t){for(var e,r,i=0,n=0,o=0;o<t.length-1;o++)e=r||t[o],r=t[o+1],i+=e[0]*r[1]-r[0]*e[1],n+=Math.abs(r[0]-e[0])+Math.abs(r[1]-e[1]);t.area=Math.abs(i/2),t.dist=n}e.exports=i;var l=t("./simplify"),u=t("./feature")},{"./feature":16,"./simplify":18}],16:[function(t,e,r){"use strict";function i(t,e,r,i){var o={id:i||null,type:e,geometry:r,tags:t||null,min:[1/0,1/0],max:[-1/0,-1/0]};return n(o),o}function n(t){var e=t.geometry,r=t.min,i=t.max;if(1===t.type)o(r,i,e);else for(var n=0;n<e.length;n++)o(r,i,e[n]);return t}function o(t,e,r){for(var i,n=0;n<r.length;n++)i=r[n],t[0]=Math.min(i[0],t[0]),e[0]=Math.max(i[0],e[0]),t[1]=Math.min(i[1],t[1]),e[1]=Math.max(i[1],e[1])}e.exports=i},{}],17:[function(t,e,r){"use strict";function i(t,e){return new n(t,e)}function n(t,e){e=this.options=l(Object.create(this.options),e);var r=e.debug;r&&console.time("preprocess data");var i=1<<e.maxZoom,n=c(t,e.tolerance/(i*e.extent));this.tiles={},this.tileCoords=[],r&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",e.indexMaxZoom,e.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),n=f(n,e.buffer/e.extent,a),n.length&&this.splitTile(n,0,0,0),r&&(n.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}function o(t,e,r){return 32*((1<<t)*r+e)+t}function a(t,e,r){return[r,(r-t[0])*(e[1]-t[1])/(e[0]-t[0])+t[1],1]}function s(t,e,r){return[(r-t[1])*(e[0]-t[0])/(e[1]-t[1])+t[0],r,1]}function l(t,e){for(var r in e)t[r]=e[r];return t}function u(t,e,r){var i=t.source;if(1!==i.length)return!1;var n=i[0];if(3!==n.type||n.geometry.length>1)return!1;var o=n.geometry[0].length;if(5!==o)return!1;for(var a=0;a<o;a++){var s=p.point(n.geometry[0][a],e,t.z2,t.x,t.y);if(s[0]!==-r&&s[0]!==e+r||s[1]!==-r&&s[1]!==e+r)return!1}return!0}e.exports=i;var c=t("./convert"),p=t("./transform"),h=t("./clip"),f=t("./wrap"),d=t("./tile");n.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},n.prototype.splitTile=function(t,e,r,i,n,l,c){for(var p=[t,e,r,i],f=this.options,m=f.debug,v=null;p.length;){i=p.pop(),r=p.pop(),e=p.pop(),t=p.pop();var y=1<<e,g=o(e,r,i),_=this.tiles[g],x=e===f.maxZoom?0:f.tolerance/(y*f.extent);if(!_&&(m>1&&console.time("creation"),_=this.tiles[g]=d(t,y,r,i,x,e===f.maxZoom),this.tileCoords.push({z:e,x:r,y:i}),m)){m>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,i,_.numFeatures,_.numPoints,_.numSimplified),console.timeEnd("creation"));var b="z"+e;this.stats[b]=(this.stats[b]||0)+1,this.total++}if(_.source=t,n){if(e===f.maxZoom||e===n)continue;var w=1<<n-e;if(r!==Math.floor(l/w)||i!==Math.floor(c/w))continue}else if(e===f.indexMaxZoom||_.numPoints<=f.indexMaxPoints)continue;if(f.solidChildren||!u(_,f.extent,f.buffer)){_.source=null,m>1&&console.time("clipping");var T,S,z,A,C,E,k=.5*f.buffer/f.extent,M=.5-k,L=.5+k,I=1+k;T=S=z=A=null,C=h(t,y,r-k,r+L,0,a,_.min[0],_.max[0]),E=h(t,y,r+M,r+I,0,a,_.min[0],_.max[0]),C&&(T=h(C,y,i-k,i+L,1,s,_.min[1],_.max[1]),S=h(C,y,i+M,i+I,1,s,_.min[1],_.max[1])),E&&(z=h(E,y,i-k,i+L,1,s,_.min[1],_.max[1]),A=h(E,y,i+M,i+I,1,s,_.min[1],_.max[1])),m>1&&console.timeEnd("clipping"),t.length&&(p.push(T||[],e+1,2*r,2*i),p.push(S||[],e+1,2*r,2*i+1),p.push(z||[],e+1,2*r+1,2*i),p.push(A||[],e+1,2*r+1,2*i+1))}else n&&(v=e)}return v},n.prototype.getTile=function(t,e,r){var i=this.options,n=i.extent,a=i.debug,s=1<<t;e=(e%s+s)%s;var l=o(t,e,r);if(this.tiles[l])return p.tile(this.tiles[l],n);a>1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var c,h=t,f=e,d=r;!c&&h>0;)h--,f=Math.floor(f/2),d=Math.floor(d/2),c=this.tiles[o(h,f,d)];if(!c||!c.source)return null;if(a>1&&console.log("found parent tile z%d-%d-%d",h,f,d),u(c,n,i.buffer))return p.tile(c,n);a>1&&console.time("drilling down");var m=this.splitTile(c.source,h,f,d,t,e,r);if(a>1&&console.timeEnd("drilling down"),null!==m){var v=1<<t-m;l=o(m,Math.floor(e/v),Math.floor(r/v))}return this.tiles[l]?p.tile(this.tiles[l],n):null}},{"./clip":14,"./convert":15,"./tile":19,"./transform":20,"./wrap":21}],18:[function(t,e,r){"use strict";function i(t,e){var r,i,o,a,s=e*e,l=t.length,u=0,c=l-1,p=[];for(t[u][2]=1,t[c][2]=1;c;){for(i=0,r=u+1;r<c;r++)(o=n(t[r],t[u],t[c]))>i&&(a=r,i=o);i>s?(t[a][2]=i,p.push(u),p.push(a),u=a):(c=p.pop(),u=p.pop())}}function n(t,e,r){var i=e[0],n=e[1],o=r[0],a=r[1],s=t[0],l=t[1],u=o-i,c=a-n;if(0!==u||0!==c){var p=((s-i)*u+(l-n)*c)/(u*u+c*c);p>1?(i=o,n=a):p>0&&(i+=u*p,n+=c*p)}return u=s-i,c=l-n,u*u+c*c}e.exports=i},{}],19:[function(t,e,r){"use strict";function i(t,e,r,i,o,a){for(var s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:e,transformed:!1,min:[2,1],max:[-1,0]},l=0;l<t.length;l++){s.numFeatures++,n(s,t[l],o,a);var u=t[l].min,c=t[l].max;u[0]<s.min[0]&&(s.min[0]=u[0]),u[1]<s.min[1]&&(s.min[1]=u[1]),c[0]>s.max[0]&&(s.max[0]=c[0]),c[1]>s.max[1]&&(s.max[1]=c[1])}return s}function n(t,e,r,i){var n,a,s,l,u=e.geometry,c=e.type,p=[],h=r*r;if(1===c)for(n=0;n<u.length;n++)p.push(u[n]),t.numPoints++,t.numSimplified++;else for(n=0;n<u.length;n++)if(s=u[n],i||!(2===c&&s.dist<r||3===c&&s.area<h)){var f=[];for(a=0;a<s.length;a++)l=s[a],(i||l[2]>h)&&(f.push(l),t.numSimplified++),t.numPoints++;3===c&&o(f,s.outer),p.push(f)}else t.numPoints+=s.length;if(p.length){var d={geometry:p,type:c,tags:e.tags||null};null!==e.id&&(d.id=e.id),t.features.push(d)}}function o(t,e){a(t)<0===e&&t.reverse()}function a(t){for(var e,r,i=0,n=0,o=t.length,a=o-1;n<o;a=n++)e=t[n],r=t[a],i+=(r[0]-e[0])*(e[1]+r[1]);return i}e.exports=i},{}],20:[function(t,e,r){"use strict";function i(t,e){if(t.transformed)return t;var r,i,o,a=t.z2,s=t.x,l=t.y;for(r=0;r<t.features.length;r++){var u=t.features[r],c=u.geometry;if(1===u.type)for(i=0;i<c.length;i++)c[i]=n(c[i],e,a,s,l);else for(i=0;i<c.length;i++){var p=c[i];for(o=0;o<p.length;o++)p[o]=n(p[o],e,a,s,l)}}return t.transformed=!0,t}function n(t,e,r,i,n){return[Math.round(e*(t[0]*r-i)),Math.round(e*(t[1]*r-n))]}r.tile=i,r.point=n},{}],21:[function(t,e,r){"use strict";function i(t,e,r){var i=t,o=a(t,1,-1-e,e,0,r,-1,2),s=a(t,1,1-e,2+e,0,r,-1,2);return(o||s)&&(i=a(t,1,-e,1+e,0,r,-1,2)||[],o&&(i=n(o,1).concat(i)),s&&(i=i.concat(n(s,-1)))),i}function n(t,e){for(var r=[],i=0;i<t.length;i++){var n,a=t[i],l=a.type;if(1===l)n=o(a.geometry,e);else{n=[];for(var u=0;u<a.geometry.length;u++)n.push(o(a.geometry[u],e))}r.push(s(a.tags,l,n,a.id))}return r}function o(t,e){var r=[];r.area=t.area,r.dist=t.dist;for(var i=0;i<t.length;i++)r.push([t[i][0]+e,t[i][1],t[i][2]]);return r}var a=t("./clip"),s=t("./feature");e.exports=i},{"./clip":14,"./feature":16}],22:[function(t,e,r){"use strict";function i(t,e,r){var i=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var o=new Int32Array(this.arrayBuffer);t=o[0],e=o[1],r=o[2],this.d=e+2*r;for(var a=0;a<this.d*this.d;a++){var s=o[n+a],l=o[n+a+1];i.push(s===l?null:o.subarray(s,l))}var u=o[n+i.length],c=o[n+i.length+1];this.keys=o.subarray(u,c),this.bboxes=o.subarray(c),this.insert=this._insertReadonly}else{this.d=e+2*r;for(var p=0;p<this.d*this.d;p++)i.push([]);this.keys=[],this.bboxes=[]}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var h=r/e*t;this.min=-h,this.max=t+h}e.exports=i;var n=3;i.prototype.insert=function(t,e,r,i,n){this._forEachCell(e,r,i,n,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(i),this.bboxes.push(n)},i.prototype._insertReadonly=function(){throw"Cannot insert into a GridIndex created from an ArrayBuffer."},i.prototype._insertCell=function(t,e,r,i,n,o){this.cells[n].push(o)},i.prototype.query=function(t,e,r,i){var n=this.min,o=this.max;if(t<=n&&e<=n&&o<=r&&o<=i)return Array.prototype.slice.call(this.keys);var a=[],s={};return this._forEachCell(t,e,r,i,this._queryCell,a,s),a},i.prototype._queryCell=function(t,e,r,i,n,o,a){var s=this.cells[n];if(null!==s)for(var l=this.keys,u=this.bboxes,c=0;c<s.length;c++){var p=s[c];if(void 0===a[p]){var h=4*p;t<=u[h+2]&&e<=u[h+3]&&r>=u[h+0]&&i>=u[h+1]?(a[p]=!0,o.push(l[p])):a[p]=!1}}},i.prototype._forEachCell=function(t,e,r,i,n,o,a){for(var s=this._convertToCellCoord(t),l=this._convertToCellCoord(e),u=this._convertToCellCoord(r),c=this._convertToCellCoord(i),p=s;p<=u;p++)for(var h=l;h<=c;h++){var f=this.d*h+p;if(n.call(this,t,e,r,i,f,o,a))return}},i.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},i.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=n+this.cells.length+1+1,r=0,i=0;i<this.cells.length;i++)r+=this.cells[i].length;var o=new Int32Array(e+r+this.keys.length+this.bboxes.length);o[0]=this.extent,o[1]=this.n,o[2]=this.padding;for(var a=e,s=0;s<t.length;s++){var l=t[s];o[n+s]=a,o.set(l,a),a+=l.length}return o[n+t.length]=a,o.set(this.keys,a),a+=this.keys.length,o[n+t.length+1]=a,o.set(this.bboxes,a),a+=this.bboxes.length,o.buffer}},{}],23:[function(t,e,r){r.read=function(t,e,r,i,n){var o,a,s=8*n-i-1,l=(1<<s)-1,u=l>>1,c=-7,p=r?n-1:0,h=r?-1:1,f=t[e+p];for(p+=h,o=f&(1<<-c)-1,f>>=-c,c+=s;c>0;o=256*o+t[e+p],p+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=i;c>0;a=256*a+t[e+p],p+=h,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=u}return(f?-1:1)*a*Math.pow(2,o-i)},r.write=function(t,e,r,i,n,o){var a,s,l,u=8*o-n-1,c=(1<<u)-1,p=c>>1,h=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,d=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),e+=a+p>=1?h/l:h*Math.pow(2,1-p),e*l>=2&&(a++,l/=2),a+p>=c?(s=0,a=c):a+p>=1?(s=(e*l-1)*Math.pow(2,n),a+=p):(s=e*Math.pow(2,p-1)*Math.pow(2,n),a=0));n>=8;t[r+f]=255&s,f+=d,s/=256,n-=8);for(a=a<<n|s,u+=n;u>0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*m}},{}],24:[function(t,e,r){"use strict";function i(t,e,r,i,o){return new n(t,e,r,i,o)}function n(t,e,r,i,n){e=e||o,r=r||a,n=n||Array,this.nodeSize=i||64,this.points=t,this.ids=new n(t.length),this.coords=new n(2*t.length);for(var l=0;l<t.length;l++)this.ids[l]=l,this.coords[2*l]=e(t[l]),this.coords[2*l+1]=r(t[l]);s(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function o(t){return t[0]}function a(t){return t[1]}var s=t("./sort"),l=t("./range"),u=t("./within");e.exports=i,n.prototype={range:function(t,e,r,i){return l(this.ids,this.coords,t,e,r,i,this.nodeSize)},within:function(t,e,r){return u(this.ids,this.coords,t,e,r,this.nodeSize)}}},{"./range":25,"./sort":26,"./within":27}],25:[function(t,e,r){"use strict";function i(t,e,r,i,n,o,a){for(var s,l,u=[0,t.length-1,0],c=[];u.length;){var p=u.pop(),h=u.pop(),f=u.pop();if(h-f<=a)for(var d=f;d<=h;d++)s=e[2*d],l=e[2*d+1],s>=r&&s<=n&&l>=i&&l<=o&&c.push(t[d]);else{var m=Math.floor((f+h)/2);s=e[2*m],l=e[2*m+1],s>=r&&s<=n&&l>=i&&l<=o&&c.push(t[m]);var v=(p+1)%2;(0===p?r<=s:i<=l)&&(u.push(f),u.push(m-1),u.push(v)),(0===p?n>=s:o>=l)&&(u.push(m+1),u.push(h),u.push(v))}}return c}e.exports=i},{}],26:[function(t,e,r){"use strict";function i(t,e,r,o,a,s){if(!(a-o<=r)){var l=Math.floor((o+a)/2);n(t,e,l,o,a,s%2),i(t,e,r,o,l-1,s+1),i(t,e,r,l+1,a,s+1)}}function n(t,e,r,i,a,s){for(;a>i;){if(a-i>600){var l=a-i+1,u=r-i+1,c=Math.log(l),p=.5*Math.exp(2*c/3),h=.5*Math.sqrt(c*p*(l-p)/l)*(u-l/2<0?-1:1);n(t,e,r,Math.max(i,Math.floor(r-u*p/l+h)),Math.min(a,Math.floor(r+(l-u)*p/l+h)),s)}var f=e[2*r+s],d=i,m=a;for(o(t,e,i,r),e[2*a+s]>f&&o(t,e,i,a);d<m;){for(o(t,e,d,m),d++,m--;e[2*d+s]<f;)d++;for(;e[2*m+s]>f;)m--}e[2*i+s]===f?o(t,e,i,m):(m++,o(t,e,m,a)),m<=r&&(i=m+1),r<=m&&(a=m-1)}}function o(t,e,r,i){a(t,r,i),a(e,2*r,2*i),a(e,2*r+1,2*i+1)}function a(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}e.exports=i},{}],27:[function(t,e,r){"use strict";function i(t,e,r,i,o,a){for(var s=[0,t.length-1,0],l=[],u=o*o;s.length;){var c=s.pop(),p=s.pop(),h=s.pop();if(p-h<=a)for(var f=h;f<=p;f++)n(e[2*f],e[2*f+1],r,i)<=u&&l.push(t[f]);else{var d=Math.floor((h+p)/2),m=e[2*d],v=e[2*d+1];n(m,v,r,i)<=u&&l.push(t[d]);var y=(c+1)%2;(0===c?r-o<=m:i-o<=v)&&(s.push(h),s.push(d-1),s.push(y)),(0===c?r+o>=m:i+o>=v)&&(s.push(d+1),s.push(p),s.push(y))}}return l}function n(t,e,r,i){var n=t-r,o=e-i;return n*n+o*o}e.exports=i},{}],28:[function(t,e,r){"use strict";function i(t){return!!(n()&&o()&&a()&&s()&&l()&&u()&&c()&&p(t&&t.failIfMajorPerformanceCaveat))}function n(){return"undefined"!=typeof window&&"undefined"!=typeof document}function o(){return Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray}function a(){return Function.prototype&&Function.prototype.bind}function s(){return Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions}function l(){return"JSON"in window&&"parse"in JSON&&"stringify"in JSON}function u(){return"Worker"in window}function c(){return"Uint8ClampedArray"in window}function p(t){return void 0===f[t]&&(f[t]=h(t)),f[t]}function h(t){var e=document.createElement("canvas"),r=Object.create(i.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=t,e.probablySupportsContext?e.probablySupportsContext("webgl",r)||e.probablySupportsContext("experimental-webgl",r):e.supportsContext?e.supportsContext("webgl",r)||e.supportsContext("experimental-webgl",r):e.getContext("webgl",r)||e.getContext("experimental-webgl",r)}void 0!==e&&e.exports?e.exports=i:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=i);var f={};i.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0}},{}],29:[function(t,e,r){"use strict";function i(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}function n(t,e,r){var i,n,o=r.buf;if(n=o[r.pos++],i=(112&n)>>4,n<128)return a(t,i,e);if(n=o[r.pos++],i|=(127&n)<<3,n<128)return a(t,i,e);if(n=o[r.pos++],i|=(127&n)<<10,n<128)return a(t,i,e);if(n=o[r.pos++],i|=(127&n)<<17,n<128)return a(t,i,e);if(n=o[r.pos++],i|=(127&n)<<24,n<128)return a(t,i,e);if(n=o[r.pos++],i|=(1&n)<<31,n<128)return a(t,i,e);throw new Error("Expected varint not more than 10 bytes")}function o(t){return t.type===i.Bytes?t.readVarint()+t.pos:t.pos+1}function a(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function s(t,e){var r,i;if(t>=0?(r=t%4294967296|0,i=t/4294967296|0):(r=~(-t%4294967296),i=~(-t/4294967296),4294967295^r?r=r+1|0:(r=0,i=i+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),l(r,i,e),u(i,e)}function l(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}function u(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}function c(t,e,r){var i=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));r.realloc(i);for(var n=r.pos-1;n>=t;n--)r.buf[n+i]=r.buf[n]}function p(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r])}function h(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r])}function f(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r])}function d(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r])}function m(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r])}function v(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r])}function y(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r])}function g(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r])}function _(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r])}function x(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function b(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function w(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function T(t,e,r){for(var i="",n=e;n<r;){var o=t[n],a=null,s=o>239?4:o>223?3:o>191?2:1;if(n+s>r)break;var l,u,c;1===s?o<128&&(a=o):2===s?128==(192&(l=t[n+1]))&&(a=(31&o)<<6|63&l)<=127&&(a=null):3===s?(l=t[n+1],u=t[n+2],128==(192&l)&&128==(192&u)&&((a=(15&o)<<12|(63&l)<<6|63&u)<=2047||a>=55296&&a<=57343)&&(a=null)):4===s&&(l=t[n+1],u=t[n+2],c=t[n+3],128==(192&l)&&128==(192&u)&&128==(192&c)&&((a=(15&o)<<18|(63&l)<<12|(63&u)<<6|63&c)<=65535||a>=1114112)&&(a=null)),null===a?(a=65533,s=1):a>65535&&(a-=65536,i+=String.fromCharCode(a>>>10&1023|55296),a=56320|1023&a),i+=String.fromCharCode(a),n+=s}return i}function S(t,e,r){for(var i,n,o=0;o<e.length;o++){if((i=e.charCodeAt(o))>55295&&i<57344){if(!n){i>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):n=i;continue}if(i<56320){t[r++]=239,t[r++]=191,t[r++]=189,n=i;continue}i=n-55296<<10|i-56320|65536,n=null}else n&&(t[r++]=239,t[r++]=191,t[r++]=189,n=null);i<128?t[r++]=i:(i<2048?t[r++]=i>>6|192:(i<65536?t[r++]=i>>12|224:(t[r++]=i>>18|240,t[r++]=i>>12&63|128),t[r++]=i>>6&63|128),t[r++]=63&i|128)}return r}e.exports=i;var z=t("ieee754");i.Varint=0,i.Fixed64=1,i.Bytes=2,i.Fixed32=5;i.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var i=this.readVarint(),n=i>>3,o=this.pos;this.type=7&i,t(n,e,this),this.pos===o&&this.skip(i)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=x(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=w(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=x(this.buf,this.pos)+4294967296*x(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=x(this.buf,this.pos)+4294967296*w(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=z.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=z.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,i=this.buf;return r=i[this.pos++],e=127&r,r<128?e:(r=i[this.pos++],e|=(127&r)<<7,r<128?e:(r=i[this.pos++],e|=(127&r)<<14,r<128?e:(r=i[this.pos++],e|=(127&r)<<21,r<128?e:(r=i[this.pos],e|=(15&r)<<28,n(e,t,this)))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=T(this.buf,this.pos,t);return this.pos=t,e},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){var r=o(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){var e=o(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===i.Varint)for(;this.buf[this.pos++]>127;);else if(e===i.Bytes)this.pos=this.readVarint()+this.pos;else if(e===i.Fixed32)this.pos+=4;else{if(e!==i.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),b(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),b(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),b(this.buf,-1&t,this.pos),b(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),b(this.buf,-1&t,this.pos),b(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeVarint:function(t){if((t=+t||0)>268435455||t<0)return void s(t,this);this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127)))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=S(this.buf,t,this.pos);var r=this.pos-e;r>=128&&c(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),z.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),z.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r]},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var i=this.pos-r;i>=128&&c(r,i,this),this.pos=r-1,this.writeVarint(i),this.pos+=i},writeMessage:function(t,e,r){this.writeTag(t,i.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){this.writeMessage(t,p,e)},writePackedSVarint:function(t,e){this.writeMessage(t,h,e)},writePackedBoolean:function(t,e){this.writeMessage(t,m,e)},writePackedFloat:function(t,e){this.writeMessage(t,f,e)},writePackedDouble:function(t,e){this.writeMessage(t,d,e)},writePackedFixed32:function(t,e){this.writeMessage(t,v,e)},writePackedSFixed32:function(t,e){this.writeMessage(t,y,e)},writePackedFixed64:function(t,e){this.writeMessage(t,g,e)},writePackedSFixed64:function(t,e){this.writeMessage(t,_,e)},writeBytesField:function(t,e){this.writeTag(t,i.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,i.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,i.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,i.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}},{ieee754:23}],30:[function(t,e,r){function i(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function o(t){if(p===setTimeout)return setTimeout(t,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(t,0);try{return p(t,0)}catch(e){try{return p.call(null,t,0)}catch(e){return p.call(this,t,0)}}}function a(t){if(h===clearTimeout)return clearTimeout(t);if((h===n||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){v&&d&&(v=!1,d.length?m=d.concat(m):y=-1,m.length&&l())}function l(){if(!v){var t=o(s);v=!0;for(var e=m.length;e;){for(d=m,m=[];++y<e;)d&&d[y].run();y=-1,e=m.length}d=null,v=!1,a(t)}}function u(t,e){this.fun=t,this.array=e}function c(){}var p,h,f=e.exports={};!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(t){p=i}try{h="function"==typeof clearTimeout?clearTimeout:n}catch(t){h=n}}();var d,m=[],v=!1,y=-1;f.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];m.push(new u(t,e)),1!==m.length||v||o(l)},u.prototype.run=function(){this.fun.apply(null,this.array)},f.title="browser",f.browser=!0,f.env={},f.argv=[],f.version="",f.versions={},f.on=c,f.addListener=c,f.once=c,f.off=c,f.removeListener=c,f.removeAllListeners=c,f.emit=c,f.prependListener=c,f.prependOnceListener=c,f.listeners=function(t){return[]},f.binding=function(t){throw new Error("process.binding is not supported")},f.cwd=function(){return"/"},f.chdir=function(t){throw new Error("process.chdir is not supported")},f.umask=function(){return 0}},{}],31:[function(t,e,r){"use strict";function i(t,e,r,a,s){for(r=r||0,a=a||t.length-1,s=s||o;a>r;){if(a-r>600){var l=a-r+1,u=e-r+1,c=Math.log(l),p=.5*Math.exp(2*c/3),h=.5*Math.sqrt(c*p*(l-p)/l)*(u-l/2<0?-1:1);i(t,e,Math.max(r,Math.floor(e-u*p/l+h)),Math.min(a,Math.floor(e+(l-u)*p/l+h)),s)}var f=t[e],d=r,m=a;for(n(t,r,e),s(t[a],f)>0&&n(t,r,a);d<m;){for(n(t,d,m),d++,m--;s(t[d],f)<0;)d++;for(;s(t[m],f)>0;)m--}0===s(t[r],f)?n(t,r,m):(m++,n(t,m,a)),m<=e&&(r=m+1),e<=m&&(a=m-1)}}function n(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function o(t,e){return t<e?-1:t>e?1:0}e.exports=i},{}],32:[function(t,e,r){"use strict";function i(t){return new n(t)}function n(t){this.options=f(Object.create(this.options),t),this.trees=new Array(this.options.maxZoom+1)}function o(t,e,r,i,n){return{x:t,y:e,zoom:1/0,id:i,properties:n,parentId:-1,numPoints:r}}function a(t,e){var r=t.geometry.coordinates;return{x:u(r[0]),y:c(r[1]),zoom:1/0,id:e,parentId:-1}}function s(t){return{type:"Feature",properties:l(t),geometry:{type:"Point",coordinates:[p(t.x),h(t.y)]}}}function l(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return f(f({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function u(t){return t/360+.5}function c(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function p(t){return 360*(t-.5)}function h(t){var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function f(t,e){for(var r in e)t[r]=e[r];return t}function d(t){return t.x}function m(t){return t.y}var v=t("kdbush");e.exports=i,n.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time("total time");var r="prepare "+t.length+" points";e&&console.time(r),this.points=t;var i=t.map(a);e&&console.timeEnd(r);for(var n=this.options.maxZoom;n>=this.options.minZoom;n--){var o=+Date.now();this.trees[n+1]=v(i,d,m,this.options.nodeSize,Float32Array),i=this._cluster(i,n),e&&console.log("z%d: %d clusters in %dms",n,i.length,+Date.now()-o)}return this.trees[this.options.minZoom]=v(i,d,m,this.options.nodeSize,Float32Array),e&&console.timeEnd("total time"),this},getClusters:function(t,e){for(var r=this.trees[this._limitZoom(e)],i=r.range(u(t[0]),c(t[3]),u(t[2]),c(t[1])),n=[],o=0;o<i.length;o++){var a=r.points[i[o]];n.push(a.numPoints?s(a):this.points[a.id])}return n},getChildren:function(t,e){for(var r=this.trees[e+1].points[t],i=this.options.radius/(this.options.extent*Math.pow(2,e)),n=this.trees[e+1].within(r.x,r.y,i),o=[],a=0;a<n.length;a++){var l=this.trees[e+1].points[n[a]];l.parentId===t&&o.push(l.numPoints?s(l):this.points[l.id])}return o},getLeaves:function(t,e,r,i){r=r||10,i=i||0;var n=[];return this._appendLeaves(n,t,e,r,i,0),n},getTile:function(t,e,r){var i=this.trees[this._limitZoom(t)],n=Math.pow(2,t),o=this.options.extent,a=this.options.radius,s=a/o,l=(r-s)/n,u=(r+1+s)/n,c={features:[]};return this._addTileFeatures(i.range((e-s)/n,l,(e+1+s)/n,u),i.points,e,r,n,c),0===e&&this._addTileFeatures(i.range(1-s/n,l,1,u),i.points,n,r,n,c),e===n-1&&this._addTileFeatures(i.range(0,l,s/n,u),i.points,-1,r,n,c),c.features.length?c:null},getClusterExpansionZoom:function(t,e){for(;e<this.options.maxZoom;){var r=this.getChildren(t,e);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e},_appendLeaves:function(t,e,r,i,n,o){for(var a=this.getChildren(e,r),s=0;s<a.length;s++){var l=a[s].properties;if(l.cluster?o+l.point_count<=n?o+=l.point_count:o=this._appendLeaves(t,l.cluster_id,r+1,i,n,o):o<n?o++:t.push(a[s]),t.length===i)break}return o},_addTileFeatures:function(t,e,r,i,n,o){for(var a=0;a<t.length;a++){var s=e[t[a]];o.features.push({type:1,geometry:[[Math.round(this.options.extent*(s.x*n-r)),Math.round(this.options.extent*(s.y*n-i))]],tags:s.numPoints?l(s):this.points[s.id].properties})}},_limitZoom:function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},_cluster:function(t,e){for(var r=[],i=this.options.radius/(this.options.extent*Math.pow(2,e)),n=0;n<t.length;n++){var a=t[n];if(!(a.zoom<=e)){a.zoom=e;var s=this.trees[e+1],l=s.within(a.x,a.y,i),u=a.numPoints||1,c=a.x*u,p=a.y*u,h=null;this.options.reduce&&(h=this.options.initial(),this._accumulate(h,a));for(var f=0;f<l.length;f++){var d=s.points[l[f]];if(e<d.zoom){var m=d.numPoints||1;d.zoom=e,c+=d.x*m,p+=d.y*m,u+=m,d.parentId=n,this.options.reduce&&this._accumulate(h,d)}}1===u?r.push(a):(a.parentId=n,r.push(o(c/u,p/u,u,n,h)))}}return r},_accumulate:function(t,e){var r=e.numPoints?e.properties:this.options.map(this.points[e.id].properties);this.options.reduce(t,r)}}},{kdbush:24}],33:[function(t,e,r){"use strict";function i(t,e){if(!(this instanceof i))return new i(t,e);if(this.data=t||[],this.length=this.data.length,this.compare=e||n,this.length>0)for(var r=this.length>>1;r>=0;r--)this._down(r)}function n(t,e){return t<e?-1:t>e?1:0}e.exports=i,i.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var e=this.data,r=this.compare,i=e[t];t>0;){var n=t-1>>1,o=e[n];if(r(i,o)>=0)break;e[t]=o,t=n}e[t]=i},_down:function(t){for(var e=this.data,r=this.compare,i=this.length,n=i>>1,o=e[t];t<n;){var a=1+(t<<1),s=a+1,l=e[a];if(s<i&&r(e[s],l)<0&&(a=s,l=e[s]),r(l,o)>=0)break;e[t]=l,t=a}e[t]=o}}},{}],34:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],35:[function(t,e,r){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],36:[function(t,r,i){(function(e,r){function n(t,e){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),m(e)?r.showHidden=e:e&&i._extend(r,e),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),l(r,t,r.depth)}function o(t,e){var r=n.styles[e];return r?"["+n.colors[r][0]+"m"+t+"["+n.colors[r][1]+"m":t}function a(t,e){return t}function s(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function l(t,e,r){if(t.customInspect&&e&&A(e.inspect)&&e.inspect!==i.inspect&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(r,t);return _(n)||(n=l(t,n,r)),n}var o=u(t,e);if(o)return o;var a=Object.keys(e),m=s(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(e)),z(e)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(e);if(0===a.length){if(A(e)){var v=e.name?": "+e.name:"";return t.stylize("[Function"+v+"]","special")}if(w(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(S(e))return t.stylize(Date.prototype.toString.call(e),"date");if(z(e))return c(e)}var y="",g=!1,x=["{","}"];if(d(e)&&(g=!0,x=["[","]"]),A(e)&&(y=" [Function"+(e.name?": "+e.name:"")+"]"),w(e)&&(y=" "+RegExp.prototype.toString.call(e)),S(e)&&(y=" "+Date.prototype.toUTCString.call(e)),z(e)&&(y=" "+c(e)),0===a.length&&(!g||0==e.length))return x[0]+y+x[1];if(r<0)return w(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var b;return b=g?p(t,e,r,m,a):a.map(function(i){return h(t,e,r,m,i,g)}),t.seen.pop(),f(b,y,x)}function u(t,e){if(b(e))return t.stylize("undefined","undefined");if(_(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return g(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,i,n){for(var o=[],a=0,s=e.length;a<s;++a)L(e,String(a))?o.push(h(t,e,r,i,String(a),!0)):o.push("");return n.forEach(function(n){n.match(/^\d+$/)||o.push(h(t,e,r,i,n,!0))}),o}function h(t,e,r,i,n,o){var a,s,u;if(u=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]},u.get?s=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(s=t.stylize("[Setter]","special")),L(i,n)||(a="["+n+"]"),s||(t.seen.indexOf(u.value)<0?(s=v(r)?l(t,u.value,null):l(t,u.value,r-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),b(a)){if(o&&n.match(/^\d+$/))return s;a=JSON.stringify(""+n),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function f(t,e,r){var i=0;return t.reduce(function(t,e){return i++,e.indexOf("\n")>=0&&i++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function d(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function v(t){return null===t}function y(t){return null==t}function g(t){return"number"==typeof t}function _(t){return"string"==typeof t}function x(t){return"symbol"==typeof t}function b(t){return void 0===t}function w(t){return T(t)&&"[object RegExp]"===E(t)}function T(t){return"object"==typeof t&&null!==t}function S(t){return T(t)&&"[object Date]"===E(t)}function z(t){return T(t)&&("[object Error]"===E(t)||t instanceof Error)}function A(t){return"function"==typeof t}function C(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function E(t){return Object.prototype.toString.call(t)}function k(t){return t<10?"0"+t.toString(10):t.toString(10)}function M(){var t=new Date,e=[k(t.getHours()),k(t.getMinutes()),k(t.getSeconds())].join(":");return[t.getDate(),D[t.getMonth()],e].join(" ")}function L(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var I=/%[sdj%]/g;i.format=function(t){if(!_(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(n(arguments[r]));return e.join(" ")}for(var r=1,i=arguments,o=i.length,a=String(t).replace(I,function(t){if("%%"===t)return"%";if(r>=o)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}}),s=i[r];r<o;s=i[++r])v(s)||!T(s)?a+=" "+s:a+=" "+n(s);return a},i.deprecate=function(t,n){function o(){if(!a){if(e.throwDeprecation)throw new Error(n);e.traceDeprecation?console.trace(n):console.error(n),a=!0}return t.apply(this,arguments)}if(b(r.process))return function(){return i.deprecate(t,n).apply(this,arguments)};if(!0===e.noDeprecation)return t;var a=!1;return o};var P,R={};i.debuglog=function(t){if(b(P)&&(P=e.env.NODE_DEBUG||""),t=t.toUpperCase(),!R[t])if(new RegExp("\\b"+t+"\\b","i").test(P)){var r=e.pid;R[t]=function(){var e=i.format.apply(i,arguments);console.error("%s %d: %s",t,r,e)}}else R[t]=function(){};return R[t]},i.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},i.isArray=d,i.isBoolean=m,i.isNull=v,i.isNullOrUndefined=y,i.isNumber=g,i.isString=_,i.isSymbol=x,i.isUndefined=b,i.isRegExp=w,i.isObject=T,i.isDate=S,i.isError=z,i.isFunction=A,i.isPrimitive=C,i.isBuffer=t("./support/isBuffer");var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];i.log=function(){console.log("%s - %s",M(),i.format.apply(i,arguments))},i.inherits=t("inherits"),i._extend=function(t,e){if(!e||!T(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t}}).call(this,t("_process"),void 0!==e?e:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":35,_process:30,inherits:34}],37:[function(t,e,r){function i(t){var e=new f;return o(t,e),e.finish()}function n(t){var e={};for(var r in t)e[r]=new d(t[r].features),e[r].name=r;return i({layers:e})}function o(t,e){for(var r in t.layers)e.writeMessage(3,a,t.layers[r])}function a(t,e){e.writeVarintField(15,t.version||1),e.writeStringField(1,t.name||""),e.writeVarintField(5,t.extent||4096);var r,i={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<t.length;r++)i.feature=t.feature(r),e.writeMessage(2,s,i);var n=i.keys;for(r=0;r<n.length;r++)e.writeStringField(3,n[r]);var o=i.values;for(r=0;r<o.length;r++)e.writeMessage(4,h,o[r])}function s(t,e){var r=t.feature;void 0!==r.id&&e.writeVarintField(1,r.id),e.writeMessage(2,l,t),e.writeVarintField(3,r.type),e.writeMessage(4,p,r)}function l(t,e){var r=t.feature,i=t.keys,n=t.values,o=t.keycache,a=t.valuecache;for(var s in r.properties){var l=o[s];void 0===l&&(i.push(s),l=i.length-1,o[s]=l),e.writeVarint(l);var u=r.properties[s],c=typeof u;"string"!==c&&"boolean"!==c&&"number"!==c&&(u=JSON.stringify(u));var p=c+":"+u,h=a[p];void 0===h&&(n.push(u),h=n.length-1,a[p]=h),e.writeVarint(h)}}function u(t,e){return(e<<3)+(7&t)}function c(t){return t<<1^t>>31}function p(t,e){for(var r=t.loadGeometry(),i=t.type,n=0,o=0,a=r.length,s=0;s<a;s++){var l=r[s],p=1;1===i&&(p=l.length),e.writeVarint(u(1,p));for(var h=0;h<l.length;h++){1===h&&1!==i&&e.writeVarint(u(2,l.length-1));var f=l[h].x-n,d=l[h].y-o;e.writeVarint(c(f)),e.writeVarint(c(d)),n+=f,o+=d}}}function h(t,e){var r=typeof t;"string"===r?e.writeStringField(1,t):"boolean"===r?e.writeBooleanField(7,t):"number"===r&&(t%1!=0?e.writeDoubleField(3,t):t<0?e.writeSVarintField(6,t):e.writeVarintField(5,t))}var f=t("pbf"),d=t("./lib/geojson_wrapper");e.exports=i,e.exports.fromVectorTileJs=i,e.exports.fromGeojsonVt=n,e.exports.GeoJSONWrapper=d},{"./lib/geojson_wrapper":38,pbf:29}],38:[function(t,e,r){"use strict";function i(t){this.features=t,this.length=t.length}function n(t){this.id="number"==typeof t.id?t.id:void 0,this.type=t.type,this.rawGeometry=1===t.type?[t.geometry]:t.geometry,this.properties=t.tags,this.extent=4096}var o=t("@mapbox/point-geometry"),a=t("@mapbox/vector-tile").VectorTileFeature;e.exports=i,i.prototype.feature=function(t){return new n(this.features[t])},n.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var e=0;e<t.length;e++){for(var r=t[e],i=[],n=0;n<r.length;n++)i.push(new o(r[n][0],r[n][1]));this.geometry.push(i)}return this.geometry},n.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var t=this.geometry,e=1/0,r=-1/0,i=1/0,n=-1/0,o=0;o<t.length;o++)for(var a=t[o],s=0;s<a.length;s++){var l=a[s];e=Math.min(e,l.x),r=Math.max(r,l.x),i=Math.min(i,l.y),n=Math.max(n,l.y)}return[e,i,r,n]},n.prototype.toGeoJSON=a.prototype.toGeoJSON},{"@mapbox/point-geometry":2,"@mapbox/vector-tile":6}],39:[function(t,e,r){var i=arguments[3],n=arguments[4],o=arguments[5],a=JSON.stringify;e.exports=function(t,e){function r(t){v[t]=!0;for(var e in n[t][1]){var i=n[t][1][e];v[i]||r(i)}}for(var s,l=Object.keys(o),u=0,c=l.length;u<c;u++){var p=l[u],h=o[p].exports;if(h===t||h&&h.default===t){s=p;break}}if(!s){s=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},u=0,c=l.length;u<c;u++){var p=l[u];f[p]=p}n[s]=[Function(["require","module","exports"],"("+t+")(self)"),f]}var d=Math.floor(Math.pow(16,8)*Math.random()).toString(16),m={};m[s]=s,n[d]=[Function(["require"],"var f = require("+a(s)+");(f.default ? f.default : f)(self);"),m];var v={};r(d);var y="("+i+")({"+Object.keys(v).map(function(t){return a(t)+":["+n[t][0]+","+a(n[t][1])+"]"}).join(",")+"},{},["+a(d)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL,_=new Blob([y],{type:"text/javascript"});if(e&&e.bare)return _;var x=g.createObjectURL(_),b=new Worker(x);return b.objectURL=x,b}},{}],40:[function(t,e,r){e.exports.RADIUS=6378137,e.exports.FLATTENING=1/298.257223563,e.exports.POLAR_RADIUS=6356752.3142},{}],41:[function(t,e,r){e.exports={version:"0.40.1"}},{}],42:[function(t,e,r){"use strict";var i=t("../util/util");e.exports={deserialize:function(t,e){var r={};if(!e)return r;for(var n=0,o=t;n<o.length;n+=1){var a=o[n],s=a.layerIds.map(function(t){return e.getLayer(t)}).filter(Boolean);if(0!==s.length)for(var l=s[0].createBucket(i.extend({layers:s},a)),u=0,c=s;u<c.length;u+=1){var p=c[u];r[p.id]=l}}return r}}},{"../util/util":223}],43:[function(t,e,r){"use strict";function i(t,e,r,i,n){t.emplaceBack(2*e+(i+1)/2,2*r+(n+1)/2)}var n=t("../segment"),o=n.SegmentVector,a=t("../../gl/vertex_buffer"),s=t("../../gl/index_buffer"),l=t("../program_configuration"),u=l.ProgramConfigurationSet,c=t("../vertex_array_type"),p=t("../index_array_type"),h=p.TriangleIndexArray,f=t("../load_geometry"),d=t("../extent"),m={layoutAttributes:[{name:"a_pos",components:2,type:"Int16"}],indexArrayType:h,paintAttributes:[{property:"circle-color"},{property:"circle-radius"},{property:"circle-blur"},{property:"circle-opacity"},{property:"circle-stroke-color"},{property:"circle-stroke-width"},{property:"circle-stroke-opacity"}]},v=c(m.layoutAttributes),y=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.index=t.index,this.layoutVertexArray=new v(t.layoutVertexArray),this.indexArray=new h(t.indexArray),this.programConfigurations=new u(m,t.layers,t.zoom,t.programConfigurations),this.segments=new o(t.segments)};y.prototype.populate=function(t,e){for(var r=this,i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.feature,s=o.index,l=o.sourceLayerIndex;if(r.layers[0].filter(a)){var u=f(a);r.addFeature(a,u),e.featureIndex.insert(a,u,s,l,r.index)}}},y.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},y.prototype.serialize=function(t){return{zoom:this.zoom,layerIds:this.layers.map(function(t){return t.id}),layoutVertexArray:this.layoutVertexArray.serialize(t),indexArray:this.indexArray.serialize(t),programConfigurations:this.programConfigurations.serialize(t),segments:this.segments.get()}},y.prototype.upload=function(t){this.layoutVertexBuffer=new a(t,this.layoutVertexArray),this.indexBuffer=new s(t,this.indexArray),this.programConfigurations.upload(t)},y.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},y.prototype.addFeature=function(t,e){for(var r=this,n=0,o=e;n<o.length;n+=1)for(var a=o[n],s=0,l=a;s<l.length;s+=1){var u=l[s],c=u.x,p=u.y;if(!(c<0||c>=d||p<0||p>=d)){var h=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),f=h.vertexLength;i(r.layoutVertexArray,c,p,-1,-1),i(r.layoutVertexArray,c,p,1,-1),i(r.layoutVertexArray,c,p,1,1),i(r.layoutVertexArray,c,p,-1,1),r.indexArray.emplaceBack(f,f+1,f+2),r.indexArray.emplaceBack(f,f+3,f+2),h.vertexLength+=4,h.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t.properties)},y.programInterface=m,e.exports=y},{"../../gl/index_buffer":61,"../../gl/vertex_buffer":62,"../extent":48,"../index_array_type":50,"../load_geometry":51,"../program_configuration":53,"../segment":55,"../vertex_array_type":56}],44:[function(t,e,r){"use strict";var i=t("../segment"),n=i.SegmentVector,o=t("../../gl/vertex_buffer"),a=t("../../gl/index_buffer"),s=t("../program_configuration"),l=s.ProgramConfigurationSet,u=t("../vertex_array_type"),c=t("../index_array_type"),p=c.LineIndexArray,h=c.TriangleIndexArray,f=t("../load_geometry"),d=t("earcut"),m=t("../../util/classify_rings"),v={layoutAttributes:[{name:"a_pos",components:2,type:"Int16"}],indexArrayType:h,indexArrayType2:p,paintAttributes:[{property:"fill-color"},{property:"fill-outline-color"},{property:"fill-opacity"}]},y=u(v.layoutAttributes),g=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.index=t.index,this.layoutVertexArray=new y(t.layoutVertexArray),this.indexArray=new h(t.indexArray),this.indexArray2=new p(t.indexArray2),this.programConfigurations=new l(v,t.layers,t.zoom,t.programConfigurations),this.segments=new n(t.segments),this.segments2=new n(t.segments2)};g.prototype.populate=function(t,e){for(var r=this,i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.feature,s=o.index,l=o.sourceLayerIndex;if(r.layers[0].filter(a)){var u=f(a);r.addFeature(a,u),e.featureIndex.insert(a,u,s,l,r.index)}}},g.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},g.prototype.serialize=function(t){return{zoom:this.zoom,layerIds:this.layers.map(function(t){return t.id}),layoutVertexArray:this.layoutVertexArray.serialize(t),indexArray:this.indexArray.serialize(t),indexArray2:this.indexArray2.serialize(t),programConfigurations:this.programConfigurations.serialize(t),segments:this.segments.get(),segments2:this.segments2.get()}},g.prototype.upload=function(t){this.layoutVertexBuffer=new o(t,this.layoutVertexArray),this.indexBuffer=new a(t,this.indexArray),this.indexBuffer2=new a(t,this.indexArray2),this.programConfigurations.upload(t)},g.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},g.prototype.addFeature=function(t,e){for(var r=this,i=0,n=m(e,500);i<n.length;i+=1){for(var o=n[i],a=0,s=0,l=o;s<l.length;s+=1)a+=l[s].length;for(var u=r.segments.prepareSegment(a,r.layoutVertexArray,r.indexArray),c=u.vertexLength,p=[],h=[],f=0,v=o;f<v.length;f+=1){var y=v[f];if(0!==y.length){y!==o[0]&&h.push(p.length/2);var g=r.segments2.prepareSegment(y.length,r.layoutVertexArray,r.indexArray2),_=g.vertexLength;r.layoutVertexArray.emplaceBack(y[0].x,y[0].y),r.indexArray2.emplaceBack(_+y.length-1,_),p.push(y[0].x),p.push(y[0].y);for(var x=1;x<y.length;x++)r.layoutVertexArray.emplaceBack(y[x].x,y[x].y),r.indexArray2.emplaceBack(_+x-1,_+x),p.push(y[x].x),p.push(y[x].y);g.vertexLength+=y.length,g.primitiveLength+=y.length}}for(var b=d(p,h),w=0;w<b.length;w+=3)r.indexArray.emplaceBack(c+b[w],c+b[w+1],c+b[w+2]);u.vertexLength+=a,u.primitiveLength+=b.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t.properties)},g.programInterface=v,e.exports=g},{"../../gl/index_buffer":61,"../../gl/vertex_buffer":62,"../../util/classify_rings":205,"../index_array_type":50,"../load_geometry":51,"../program_configuration":53,"../segment":55,"../vertex_array_type":56,earcut:11}],45:[function(t,e,r){"use strict";function i(t,e,r,i,n,o,a,s){t.emplaceBack(e,r,2*Math.floor(i*x)+a,n*x*2,o*x*2,Math.round(s))}function n(t,e){return t.x===e.x&&(t.x<0||t.x>v)||t.y===e.y&&(t.y<0||t.y>v)}var o=t("../segment"),a=o.SegmentVector,s=o.MAX_VERTEX_ARRAY_LENGTH,l=t("../../gl/vertex_buffer"),u=t("../../gl/index_buffer"),c=t("../program_configuration"),p=c.ProgramConfigurationSet,h=t("../vertex_array_type"),f=t("../index_array_type"),d=f.TriangleIndexArray,m=t("../load_geometry"),v=t("../extent"),y=t("earcut"),g=t("../../util/classify_rings"),_={layoutAttributes:[{name:"a_pos",components:2,type:"Int16"},{name:"a_normal",components:3,type:"Int16"},{name:"a_edgedistance",components:1,type:"Int16"}],indexArrayType:d,paintAttributes:[{property:"fill-extrusion-base"},{property:"fill-extrusion-height"},{property:"fill-extrusion-color"}]},x=Math.pow(2,13),b=h(_.layoutAttributes),w=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.index=t.index,this.layoutVertexArray=new b(t.layoutVertexArray),this.indexArray=new d(t.indexArray),this.programConfigurations=new p(_,t.layers,t.zoom,t.programConfigurations),this.segments=new a(t.segments)};w.prototype.populate=function(t,e){for(var r=this,i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.feature,s=o.index,l=o.sourceLayerIndex;if(r.layers[0].filter(a)){var u=m(a);r.addFeature(a,u),e.featureIndex.insert(a,u,s,l,r.index)}}},w.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},w.prototype.serialize=function(t){return{zoom:this.zoom,layerIds:this.layers.map(function(t){return t.id}),layoutVertexArray:this.layoutVertexArray.serialize(t),indexArray:this.indexArray.serialize(t),programConfigurations:this.programConfigurations.serialize(t),segments:this.segments.get()}},w.prototype.upload=function(t){this.layoutVertexBuffer=new l(t,this.layoutVertexArray),this.indexBuffer=new u(t,this.indexArray),this.programConfigurations.upload(t)},w.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},w.prototype.addFeature=function(t,e){for(var r=this,o=0,a=g(e,500);o<a.length;o+=1){for(var l=a[o],u=0,c=0,p=l;c<p.length;c+=1)u+=p[c].length;for(var h=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),f=0,d=l;f<d.length;f+=1){var m=d[f];if(0!==m.length)for(var v=0,_=0;_<m.length;_++){var x=m[_];if(_>=1){var b=m[_-1];if(!n(x,b)){h.vertexLength+4>s&&(h=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray));var w=x.sub(b)._perp()._unit();i(r.layoutVertexArray,x.x,x.y,w.x,w.y,0,0,v),i(r.layoutVertexArray,x.x,x.y,w.x,w.y,0,1,v),v+=b.dist(x),i(r.layoutVertexArray,b.x,b.y,w.x,w.y,0,0,v),i(r.layoutVertexArray,b.x,b.y,w.x,w.y,0,1,v);var T=h.vertexLength;r.indexArray.emplaceBack(T,T+1,T+2),r.indexArray.emplaceBack(T+1,T+2,T+3),h.vertexLength+=4,h.primitiveLength+=2}}}}h.vertexLength+u>s&&(h=r.segments.prepareSegment(u,r.layoutVertexArray,r.indexArray));for(var S=[],z=[],A=h.vertexLength,C=0,E=l;C<E.length;C+=1){var k=E[C];if(0!==k.length){k!==l[0]&&z.push(S.length/2);for(var M=0;M<k.length;M++){var L=k[M];i(r.layoutVertexArray,L.x,L.y,0,0,1,1,0),S.push(L.x),S.push(L.y)}}}for(var I=y(S,z),P=0;P<I.length;P+=3)r.indexArray.emplaceBack(A+I[P],A+I[P+1],A+I[P+2]);h.primitiveLength+=I.length/3,h.vertexLength+=u}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t.properties)},w.programInterface=_,e.exports=w},{"../../gl/index_buffer":61,"../../gl/vertex_buffer":62,"../../util/classify_rings":205,"../extent":48,"../index_array_type":50,"../load_geometry":51,"../program_configuration":53,"../segment":55,"../vertex_array_type":56,earcut:11}],46:[function(t,e,r){"use strict";function i(t,e,r,i,n,o,a){t.emplaceBack(e.x,e.y,i?1:0,n?1:-1,Math.round(v*r.x)+128,Math.round(v*r.y)+128,1+(0===o?0:o<0?-1:1)|(a*g&63)<<2,a*g>>6)}var n=t("../segment"),o=n.SegmentVector,a=t("../../gl/vertex_buffer"),s=t("../../gl/index_buffer"),l=t("../program_configuration"),u=l.ProgramConfigurationSet,c=t("../vertex_array_type"),p=t("../index_array_type"),h=p.TriangleIndexArray,f=t("../load_geometry"),d=t("../extent"),m=t("@mapbox/vector-tile").VectorTileFeature.types,v=63,y=Math.cos(Math.PI/180*37.5),g=.5,_=Math.pow(2,14)/g,x={layoutAttributes:[{name:"a_pos_normal",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],paintAttributes:[{property:"line-color"},{property:"line-blur"},{property:"line-opacity"},{property:"line-gap-width",name:"gapwidth"},{property:"line-offset"},{property:"line-width"},{property:"line-width",name:"floorwidth",useIntegerZoom:!0}],indexArrayType:h},b=c(x.layoutAttributes),w=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.index=t.index,this.layoutVertexArray=new b(t.layoutVertexArray),this.indexArray=new h(t.indexArray),this.programConfigurations=new u(x,t.layers,t.zoom,t.programConfigurations),this.segments=new o(t.segments)};w.prototype.populate=function(t,e){for(var r=this,i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.feature,s=o.index,l=o.sourceLayerIndex;if(r.layers[0].filter(a)){var u=f(a);r.addFeature(a,u),e.featureIndex.insert(a,u,s,l,r.index)}}},w.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},w.prototype.serialize=function(t){return{zoom:this.zoom,layerIds:this.layers.map(function(t){return t.id}),layoutVertexArray:this.layoutVertexArray.serialize(t),indexArray:this.indexArray.serialize(t),programConfigurations:this.programConfigurations.serialize(t),segments:this.segments.get()}},w.prototype.upload=function(t){this.layoutVertexBuffer=new a(t,this.layoutVertexArray),this.indexBuffer=new s(t,this.indexArray),this.programConfigurations.upload(t)},w.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},w.prototype.addFeature=function(t,e){for(var r=this,i=this.layers[0].layout,n=this.layers[0].getLayoutValue("line-join",{zoom:this.zoom},t.properties),o=i["line-cap"],a=i["line-miter-limit"],s=i["line-round-limit"],l=0,u=e;l<u.length;l+=1){var c=u[l];r.addLine(c,t,n,o,a,s)}},w.prototype.addLine=function(t,e,r,i,n,o){for(var a=this,s=e.properties,l="Polygon"===m[e.type],u=t.length;u>=2&&t[u-1].equals(t[u-2]);)u--;for(var c=0;c<u-1&&t[c].equals(t[c+1]);)c++;if(!(u<(l?3:2))){"bevel"===r&&(n=1.05);var p=d/(512*this.overscaling)*15,h=t[c],f=this.segments.prepareSegment(10*u,this.layoutVertexArray,this.indexArray);this.distance=0;var v,g,_,x=i,b=l?"butt":i,w=!0,T=void 0,S=void 0,z=void 0,A=void 0;this.e1=this.e2=this.e3=-1,l&&(v=t[u-2],A=h.sub(v)._unit()._perp());for(var C=c;C<u;C++)if(!(S=l&&C===u-1?t[c+1]:t[C+1])||!t[C].equals(S)){A&&(z=A),v&&(T=v),v=t[C],A=S?S.sub(v)._unit()._perp():z,z=z||A;var E=z.add(A);0===E.x&&0===E.y||E._unit();var k=E.x*A.x+E.y*A.y,M=0!==k?1/k:1/0,L=k<y&&T&&S;if(L&&C>c){var I=v.dist(T);if(I>2*p){var P=v.sub(v.sub(T)._mult(p/I)._round());a.distance+=P.dist(T),a.addCurrentVertex(P,a.distance,z.mult(1),0,0,!1,f),T=P}}var R=T&&S,D=R?r:S?x:b;if(R&&"round"===D&&(M<o?D="miter":M<=2&&(D="fakeround")),"miter"===D&&M>n&&(D="bevel"),"bevel"===D&&(M>2&&(D="flipbevel"),M<n&&(D="miter")),T&&(a.distance+=v.dist(T)),"miter"===D)E._mult(M),a.addCurrentVertex(v,a.distance,E,0,0,!1,f);else if("flipbevel"===D){if(M>100)E=A.clone().mult(-1);else{var O=z.x*A.y-z.y*A.x>0?-1:1,B=M*z.add(A).mag()/z.sub(A).mag();E._perp()._mult(B*O)}a.addCurrentVertex(v,a.distance,E,0,0,!1,f),a.addCurrentVertex(v,a.distance,E.mult(-1),0,0,!1,f)}else if("bevel"===D||"fakeround"===D){var F=z.x*A.y-z.y*A.x>0,j=-Math.sqrt(M*M-1);if(F?(_=0,g=j):(g=0,_=j),w||a.addCurrentVertex(v,a.distance,z,g,_,!1,f),"fakeround"===D){for(var V=Math.floor(8*(.5-(k-.5))),N=void 0,U=0;U<V;U++)N=A.mult((U+1)/(V+1))._add(z)._unit(),a.addPieSliceVertex(v,a.distance,N,F,f);a.addPieSliceVertex(v,a.distance,E,F,f);for(var $=V-1;$>=0;$--)N=z.mult(($+1)/(V+1))._add(A)._unit(),a.addPieSliceVertex(v,a.distance,N,F,f)}S&&a.addCurrentVertex(v,a.distance,A,-g,-_,!1,f)}else"butt"===D?(w||a.addCurrentVertex(v,a.distance,z,0,0,!1,f),S&&a.addCurrentVertex(v,a.distance,A,0,0,!1,f)):"square"===D?(w||(a.addCurrentVertex(v,a.distance,z,1,1,!1,f),a.e1=a.e2=-1),S&&a.addCurrentVertex(v,a.distance,A,-1,-1,!1,f)):"round"===D&&(w||(a.addCurrentVertex(v,a.distance,z,0,0,!1,f),a.addCurrentVertex(v,a.distance,z,1,1,!0,f),a.e1=a.e2=-1),S&&(a.addCurrentVertex(v,a.distance,A,-1,-1,!0,f),a.addCurrentVertex(v,a.distance,A,0,0,!1,f)));if(L&&C<u-1){var q=v.dist(S);if(q>2*p){var Z=v.add(S.sub(v)._mult(p/q)._round());a.distance+=Z.dist(v),a.addCurrentVertex(Z,a.distance,A.mult(1),0,0,!1,f),v=Z}}w=!1}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,s)}},w.prototype.addCurrentVertex=function(t,e,r,n,o,a,s){var l,u=this.layoutVertexArray,c=this.indexArray;l=r.clone(),n&&l._sub(r.perp()._mult(n)),i(u,t,l,a,!1,n,e),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(c.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,l=r.mult(-1),o&&l._sub(r.perp()._mult(o)),i(u,t,l,a,!0,-o,e),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(c.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,e>_/2&&(this.distance=0,this.addCurrentVertex(t,this.distance,r,n,o,a,s))},w.prototype.addPieSliceVertex=function(t,e,r,n,o){r=r.mult(n?-1:1);var a=this.layoutVertexArray,s=this.indexArray;i(a,t,r,!1,n,0,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),n?this.e2=this.e3:this.e1=this.e3},w.programInterface=x,e.exports=w},{"../../gl/index_buffer":61,"../../gl/vertex_buffer":62,"../extent":48,"../index_array_type":50,"../load_geometry":51,"../program_configuration":53,"../segment":55,"../vertex_array_type":56,"@mapbox/vector-tile":6}],47:[function(t,e,r){"use strict";function i(t,e,r,i,n,o,a,s){t.emplaceBack(e,r,Math.round(64*i),Math.round(64*n),o,a,s?s[0]:void 0,s?s[1]:void 0)}function n(t,e,r,i){var n=2*Math.PI,o=b((r+n)%n/n*255,10*i);t.emplaceBack(e.x,e.y,o),t.emplaceBack(e.x,e.y,o),t.emplaceBack(e.x,e.y,o),t.emplaceBack(e.x,e.y,o)}function o(t,e,r,i,n,o){return t.emplaceBack(e.x,e.y,r.x,r.y,Math.round(i.x),Math.round(i.y),10*n,10*o)}function a(t,e,r){var i={};if(i.isFeatureConstant=e.isLayoutValueFeatureConstant(r),i.isZoomConstant=e.isLayoutValueZoomConstant(r),i.isFeatureConstant&&(i.layoutSize=e.getLayoutValue(r,{zoom:t+1})),!i.isZoomConstant){for(var n=e.getLayoutValueStopZoomLevels(r),o=0;o<n.length&&n[o]<=t;)o++;o=Math.max(0,o-1);for(var a=o;a<n.length&&n[a]<t+1;)a++;a=Math.min(n.length-1,a),i.coveringZoomRange=[n[o],n[a]],e.isLayoutValueFeatureConstant(r)&&(i.coveringStopValues=[e.getLayoutValue(r,{zoom:n[o]}),e.getLayoutValue(r,{zoom:n[a]})]),i.functionBase=e.getLayoutProperty(r).base,void 0===i.functionBase&&(i.functionBase=1),i.functionType=e.getLayoutProperty(r).type||"exponential"}return i}function s(t,e,r,i,n){return t.isLayoutValueZoomConstant(i)&&!t.isLayoutValueFeatureConstant(i)?[10*t.getLayoutValue(i,{},n)]:t.isLayoutValueZoomConstant(i)||t.isLayoutValueFeatureConstant(i)?null:[10*t.getLayoutValue(i,{zoom:r[0]},n),10*t.getLayoutValue(i,{zoom:r[1]},n)]}var l=t("@mapbox/point-geometry"),u=t("../segment"),c=u.SegmentVector,p=t("../../gl/vertex_buffer"),h=t("../../gl/index_buffer"),f=t("../program_configuration"),d=f.ProgramConfigurationSet,m=t("../vertex_array_type"),v=t("../index_array_type"),y=v.TriangleIndexArray,g=v.LineIndexArray,_=t("../extent"),x=t("../../shaders/encode_attribute"),b=x.packUint8ToFloat,w=t("../../symbol/anchor"),T=t("../../symbol/get_anchors"),S=t("../../util/token"),z=t("../../symbol/quads"),A=z.getGlyphQuads,C=z.getIconQuads,E=t("../../symbol/shaping"),k=E.shapeText,M=E.shapeIcon,L=E.WritingMode,I=t("../../symbol/transform_text"),P=t("../../symbol/mergelines"),R=t("../../symbol/clip_line"),D=t("../../util/util"),O=t("../../util/script_detection"),B=t("../load_geometry"),F=t("../../symbol/collision_feature"),j=t("../../util/find_pole_of_inaccessibility"),V=t("../../util/classify_rings"),N=t("@mapbox/vector-tile").VectorTileFeature.types,U=t("../../util/struct_array"),$=t("../../util/verticalize_punctuation"),q=U({members:[{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Float32",name:"placementZoom"},{type:"Uint8",name:"vertical"}]}),Z=U({members:[{type:"Float32",name:"offsetX"}]}),G=U({members:[{type:"Int16",name:"x"},{type:"Int16",name:"y"}]}),W=[{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"}],H=[{name:"a_projected_pos",components:3,type:"Float32"}],X={text:{layoutAttributes:W,dynamicLayoutAttributes:H,indexArrayType:y,paintAttributes:[{property:"text-color",name:"fill_color"},{property:"text-halo-color",name:"halo_color"},{property:"text-halo-width",name:"halo_width"},{property:"text-halo-blur",name:"halo_blur"},{property:"text-opacity",name:"opacity"}]},icon:{layoutAttributes:W,dynamicLayoutAttributes:H,indexArrayType:y,paintAttributes:[{property:"icon-color",name:"fill_color"},{property:"icon-halo-color",name:"halo_color"},{property:"icon-halo-width",name:"halo_width"},{property:"icon-halo-blur",name:"halo_blur"},{property:"icon-opacity",name:"opacity"}]},collisionBox:{layoutAttributes:[{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"},{name:"a_data",components:2,type:"Uint8"}],indexArrayType:g}},K=function(t,e,r,i){this.programInterface=t;var n=m(t.layoutAttributes),o=t.indexArrayType;if(this.layoutVertexArray=new n(i&&i.layoutVertexArray),this.indexArray=new o(i&&i.indexArray),this.programConfigurations=new d(t,e,r,i&&i.programConfigurations),this.segments=new c(i&&i.segments),t.dynamicLayoutAttributes){var a=m(t.dynamicLayoutAttributes);this.dynamicLayoutVertexArray=new a(i&&i.dynamicLayoutVertexArray)}};K.prototype.serialize=function(t){return{layoutVertexArray:this.layoutVertexArray.serialize(t),indexArray:this.indexArray.serialize(t),programConfigurations:this.programConfigurations.serialize(t),segments:this.segments.get(),dynamicLayoutVertexArray:this.dynamicLayoutVertexArray&&this.dynamicLayoutVertexArray.serialize(t)}},K.prototype.upload=function(t){this.layoutVertexBuffer=new p(t,this.layoutVertexArray),this.indexBuffer=new h(t,this.indexArray),this.programConfigurations.upload(t),this.programInterface.dynamicLayoutAttributes&&(this.dynamicLayoutVertexBuffer=new p(t,this.dynamicLayoutVertexArray,!0))},K.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer&&this.dynamicLayoutVertexBuffer.destroy())};var J=function(t){if(this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.index=t.index,this.sdfIcons=t.sdfIcons,this.iconsNeedLinear=t.iconsNeedLinear,this.pixelRatio=t.pixelRatio,t.text)this.text=new K(X.text,t.layers,t.zoom,t.text),this.icon=new K(X.icon,t.layers,t.zoom,t.icon),this.collisionBox=new K(X.collisionBox,t.layers,t.zoom,t.collisionBox),this.textSizeData=t.textSizeData,this.iconSizeData=t.iconSizeData,this.placedGlyphArray=new q(t.placedGlyphArray),this.placedIconArray=new q(t.placedIconArray),this.glyphOffsetArray=new Z(t.glyphOffsetArray),this.lineVertexArray=new G(t.lineVertexArray);else{var e=this.layers[0];this.textSizeData=a(this.zoom,e,"text-size"),this.iconSizeData=a(this.zoom,e,"icon-size")}};J.prototype.populate=function(t,e){var r=this,i=this.layers[0],n=i.layout,o=n["text-font"],a=(!i.isLayoutValueFeatureConstant("text-field")||n["text-field"])&&o,s=!i.isLayoutValueFeatureConstant("icon-image")||n["icon-image"];if(this.features=[],a||s){for(var l=e.iconDependencies,u=e.glyphDependencies,c=u[o]=u[o]||{},p={zoom:this.zoom},h=0,f=t;h<f.length;h+=1){var d=f[h],m=d.feature,v=d.index,y=d.sourceLayerIndex;if(i.filter(m)){var g=void 0;a&&(g=i.getLayoutValue("text-field",p,m.properties),i.isLayoutValueFeatureConstant("text-field")&&(g=S(m.properties,g)),g=I(g,i,p,m.properties));var _=void 0;if(s&&(_=i.getLayoutValue("icon-image",p,m.properties),i.isLayoutValueFeatureConstant("icon-image")&&(_=S(m.properties,_))),(g||_)&&(r.features.push({text:g,icon:_,index:v,sourceLayerIndex:y,geometry:B(m),properties:m.properties,type:N[m.type]}),_&&(l[_]=!0),g))for(var x="map"===n["text-rotation-alignment"]&&"line"===n["symbol-placement"],b=O.allowsVerticalWritingMode(g),w=0;w<g.length;w++)if(c[g.charCodeAt(w)]=!0,x&&b){var T=$.lookup[g.charAt(w)];T&&(c[T.charCodeAt(0)]=!0)}}}"line"===n["symbol-placement"]&&(this.features=P(this.features))}},J.prototype.isEmpty=function(){return 0===this.icon.layoutVertexArray.length&&0===this.text.layoutVertexArray.length&&0===this.collisionBox.layoutVertexArray.length},J.prototype.serialize=function(t){return{zoom:this.zoom,layerIds:this.layers.map(function(t){return t.id}),sdfIcons:this.sdfIcons,iconsNeedLinear:this.iconsNeedLinear,textSizeData:this.textSizeData,iconSizeData:this.iconSizeData,placedGlyphArray:this.placedGlyphArray.serialize(t),placedIconArray:this.placedIconArray.serialize(t),glyphOffsetArray:this.glyphOffsetArray.serialize(t),lineVertexArray:this.lineVertexArray.serialize(t),text:this.text.serialize(t),icon:this.icon.serialize(t),collisionBox:this.collisionBox.serialize(t)}},J.prototype.upload=function(t){this.text.upload(t),this.icon.upload(t),this.collisionBox.upload(t)},J.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.collisionBox.destroy()},J.prototype.prepare=function(t,e,r,i){var n=this;this.symbolInstances=[];var o=512*this.overscaling;this.tilePixelRatio=_/o,this.compareText={},this.iconsNeedLinear=!1;for(var a=this.layers[0].layout,s=24*a["text-line-height"],l=a["text-font"].join(","),u="map"===a["text-rotation-alignment"]&&"line"===a["symbol-placement"],c=t[l]||{},p=e[l]||{},h=0,f=n.features;h<f.length;h+=1){var d=f[h],m={},v=d.text;if(v){var y=n.layers[0].getLayoutValue("text-offset",{zoom:n.zoom},d.properties).map(function(t){return 24*t}),g=24*n.layers[0].getLayoutValue("text-letter-spacing",{zoom:n.zoom},d.properties),x=O.allowsLetterSpacing(v)?g:0,b=n.layers[0].getLayoutValue("text-anchor",{zoom:n.zoom},d.properties),w=n.layers[0].getLayoutValue("text-justify",{zoom:n.zoom},d.properties),T="line"!==a["symbol-placement"]?24*n.layers[0].getLayoutValue("text-max-width",{zoom:n.zoom},d.properties):0,S=function(t,e){return k(t,c,T,s,b,w,x,y,24,e)};m[L.horizontal]=S(v,L.horizontal),O.allowsVerticalWritingMode(v)&&u&&(m[L.vertical]=S(v,L.vertical))}var z=void 0;if(d.icon){var A=r[d.icon];A&&(z=M(i[d.icon],n.layers[0].getLayoutValue("icon-offset",{zoom:n.zoom},d.properties),n.layers[0].getLayoutValue("icon-anchor",{zoom:n.zoom},d.properties)),void 0===n.sdfIcons?n.sdfIcons=A.sdf:n.sdfIcons!==A.sdf&&D.warnOnce("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),A.pixelRatio!==n.pixelRatio?n.iconsNeedLinear=!0:0===a["icon-rotate"]&&n.layers[0].isLayoutValueFeatureConstant("icon-rotate")||(n.iconsNeedLinear=!0))}(m[L.horizontal]||z)&&n.addFeature(d,m,z,p)}},J.prototype.addFeature=function(t,e,r,i){var n=this,o=this.layers[0].getLayoutValue("text-size",{zoom:this.zoom+1},t.properties),a=this.layers[0].getLayoutValue("icon-size",{zoom:this.zoom+1},t.properties),s=this.layers[0].getLayoutValue("text-offset",{zoom:this.zoom},t.properties),l=this.layers[0].getLayoutValue("icon-offset",{zoom:this.zoom},t.properties),u=this.layers[0].getLayoutValue("text-size",{zoom:18},t.properties);void 0===u&&(u=o);var c=this.layers[0].layout,p=o/24,h=this.tilePixelRatio*p,f=this.tilePixelRatio*u/24,d=this.tilePixelRatio*a,m=this.tilePixelRatio*c["symbol-spacing"],v=c["symbol-avoid-edges"],y=c["text-padding"]*this.tilePixelRatio,g=c["icon-padding"]*this.tilePixelRatio,x=c["text-max-angle"]/180*Math.PI,b="map"===c["text-rotation-alignment"]&&"line"===c["symbol-placement"],S="map"===c["icon-rotation-alignment"]&&"line"===c["symbol-placement"],z=c["text-allow-overlap"]||c["icon-allow-overlap"]||c["text-ignore-placement"]||c["icon-ignore-placement"],A=c["symbol-placement"],C=m/2,E=function(o,a){var u=!(a.x<0||a.x>_||a.y<0||a.y>_);if(!v||u){var c=u||z;n.addSymbolInstance(a,o,e,r,n.layers[0],c,n.collisionBoxArray,t.index,t.sourceLayerIndex,n.index,h,y,b,s,d,g,S,l,{zoom:n.zoom},t.properties,i)}};if("line"===A)for(var k=0,M=R(t.geometry,0,0,_,_);k<M.length;k+=1)for(var I=M[k],P=T(I,m,x,e[L.vertical]||e[L.horizontal],r,24,f,n.overscaling,_),D=0,O=P;D<O.length;D+=1){var B=O[D],F=e[L.horizontal];F&&n.anchorIsTooClose(F.text,C,B)||E(I,B)}else if("Polygon"===t.type)for(var N=0,U=V(t.geometry,0);N<U.length;N+=1){var $=U[N],q=j($,16);E($[0],new w(q.x,q.y,0))}else if("LineString"===t.type)for(var Z=0,G=t.geometry;Z<G.length;Z+=1){var W=G[Z];E(W,new w(W[0].x,W[0].y,0))}else if("Point"===t.type)for(var H=0,X=t.geometry;H<X.length;H+=1)for(var K=X[H],J=0,Y=K;J<Y.length;J+=1){var Q=Y[J];E([Q],new w(Q.x,Q.y,0))}},J.prototype.anchorIsTooClose=function(t,e,r){var i=this.compareText;if(t in i){for(var n=i[t],o=n.length-1;o>=0;o--)if(r.dist(n[o])<e)return!0}else i[t]=[];return i[t].push(r),!1},J.prototype.place=function(t,e){var r=this;this.text=new K(X.text,this.layers,this.zoom),this.icon=new K(X.icon,this.layers,this.zoom),this.collisionBox=new K(X.collisionBox,this.layers,this.zoom),this.placedGlyphArray=new q,this.placedIconArray=new q,this.glyphOffsetArray=new Z,this.lineVertexArray=new G;var i=this.layers[0],n=i.layout,o=t.maxScale,a="map"===n["text-rotation-alignment"]&&"line"===n["symbol-placement"],l="map"===n["icon-rotation-alignment"]&&"line"===n["symbol-placement"];if(n["text-allow-overlap"]||n["icon-allow-overlap"]||n["text-ignore-placement"]||n["icon-ignore-placement"]){var u=t.angle,c=Math.sin(u),p=Math.cos(u);this.symbolInstances.sort(function(t,e){return(c*t.anchor.x+p*t.anchor.y|0)-(c*e.anchor.x+p*e.anchor.y|0)||e.featureIndex-t.featureIndex})}for(var h=0,f=r.symbolInstances;h<f.length;h+=1){var d=f[h],m={boxStartIndex:d.textBoxStartIndex,boxEndIndex:d.textBoxEndIndex},v={boxStartIndex:d.iconBoxStartIndex,boxEndIndex:d.iconBoxEndIndex},y=!(d.textBoxStartIndex===d.textBoxEndIndex),g=!(d.iconBoxStartIndex===d.iconBoxEndIndex),_=n["text-optional"]||!y,x=n["icon-optional"]||!g,b=y?t.placeCollisionFeature(m,n["text-allow-overlap"],n["symbol-avoid-edges"]):t.minScale,w=g?t.placeCollisionFeature(v,n["icon-allow-overlap"],n["symbol-avoid-edges"]):t.minScale;if(_||x?!x&&b?b=Math.max(w,b):!_&&w&&(w=Math.max(w,b)):w=b=Math.max(w,b),y||g){for(var T=d.line,S=r.lineVertexArray.length,z=0;z<T.length;z++)r.lineVertexArray.emplaceBack(T[z].x,T[z].y);var A=r.lineVertexArray.length-S;if(y&&(t.insertCollisionFeature(m,b,n["text-ignore-placement"]),b<=o)){var C=s(i,r.zoom,r.textSizeData.coveringZoomRange,"text-size",d.featureProperties);r.addSymbols(r.text,d.glyphQuads,b,C,n["text-keep-upright"],d.textOffset,a,t.angle,d.featureProperties,d.writingModes,d.anchor,S,A,r.placedGlyphArray)}if(g&&(t.insertCollisionFeature(v,w,n["icon-ignore-placement"]),w<=o)){var E=s(i,r.zoom,r.iconSizeData.coveringZoomRange,"icon-size",d.featureProperties);r.addSymbols(r.icon,d.iconQuads,w,E,n["icon-keep-upright"],d.iconOffset,l,t.angle,d.featureProperties,0,d.anchor,S,A,r.placedIconArray)}}}e&&this.addToDebugBuffers(t)},J.prototype.addSymbols=function(t,e,r,o,a,s,l,u,c,p,h,f,d,m){for(var v=this,y=t.indexArray,g=t.layoutVertexArray,_=t.dynamicLayoutVertexArray,x=this.zoom,b=Math.max(Math.log(r)/Math.LN2+x,0),w=this.glyphOffsetArray.length,T=(h.angle+u+2*Math.PI)%(2*Math.PI),S=T>1*Math.PI/4&&T<=3*Math.PI/4||T>5*Math.PI/4&&T<=7*Math.PI/4,z=Boolean(p&L.vertical)&&S,A=0,C=e;A<C.length;A+=1){var E=C[A];if(!l||!a||E.writingMode===L.vertical===z){var k=E.tl,M=E.tr,I=E.bl,P=E.br,R=E.tex,D=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),O=D.vertexLength,B=E.glyphOffset[1];i(g,h.x,h.y,k.x,B+k.y,R.x,R.y,o),i(g,h.x,h.y,M.x,B+M.y,R.x+R.w,R.y,o),i(g,h.x,h.y,I.x,B+I.y,R.x,R.y+R.h,o),i(g,h.x,h.y,P.x,B+P.y,R.x+R.w,R.y+R.h,o),n(_,h,0,b),y.emplaceBack(O,O+1,O+2),y.emplaceBack(O+1,O+2,O+3),D.vertexLength+=4,D.primitiveLength+=2,v.glyphOffsetArray.emplaceBack(E.glyphOffset[0])}}m.emplaceBack(h.x,h.y,w,this.glyphOffsetArray.length-w,f,d,h.segment,o?o[0]:0,o?o[1]:0,s[0],s[1],b,z),t.programConfigurations.populatePaintArrays(t.layoutVertexArray.length,c)},J.prototype.addToDebugBuffers=function(t){for(var e=this,r=this.collisionBox,i=r.layoutVertexArray,n=r.indexArray,a=-t.angle,s=t.yStretch,u=0,c=e.symbolInstances;u<c.length;u+=1){var p=c[u];p.textCollisionFeature={boxStartIndex:p.textBoxStartIndex,boxEndIndex:p.textBoxEndIndex},p.iconCollisionFeature={boxStartIndex:p.iconBoxStartIndex,boxEndIndex:p.iconBoxEndIndex};for(var h=0;h<2;h++){var f=p[0===h?"textCollisionFeature":"iconCollisionFeature"];if(f)for(var d=f.boxStartIndex;d<f.boxEndIndex;d++){var m=e.collisionBoxArray.get(d);if(!(1===t.perspectiveRatio&&m.maxScale<1)){var v=m.anchorPoint,y=new l(m.x1,m.y1*s)._rotate(a),g=new l(m.x2,m.y1*s)._rotate(a),_=new l(m.x1,m.y2*s)._rotate(a),x=new l(m.x2,m.y2*s)._rotate(a),b=Math.max(0,Math.min(25,e.zoom+Math.log(m.maxScale)/Math.LN2)),w=Math.max(0,Math.min(25,e.zoom+Math.log(m.placementScale)/Math.LN2)),T=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),S=T.vertexLength;o(i,v,p.anchor,y,b,w),o(i,v,p.anchor,g,b,w),o(i,v,p.anchor,x,b,w),o(i,v,p.anchor,_,b,w),n.emplaceBack(S,S+1),n.emplaceBack(S+1,S+2),n.emplaceBack(S+2,S+3),n.emplaceBack(S+3,S),T.vertexLength+=4,T.primitiveLength+=4}}}}},J.prototype.addSymbolInstance=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,v,y,g,_,x){var b,w,T=[],S=[];for(var z in r){var E=parseInt(z,10);r[E]&&(S=S.concat(o?A(t,r[E],n,h,g,_,x):[]),b=new F(a,e,t,s,l,u,r[E],c,p,h,!1))}var k=b?b.boxStartIndex:this.collisionBoxArray.length,M=b?b.boxEndIndex:this.collisionBoxArray.length;i&&(T=o?C(t,i,n,v,r[L.horizontal],g,_):[],w=new F(a,e,t,s,l,u,i,d,m,v,!0));var I=w?w.boxStartIndex:this.collisionBoxArray.length,P=w?w.boxEndIndex:this.collisionBoxArray.length;M>J.MAX_INSTANCES&&D.warnOnce("Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),P>J.MAX_INSTANCES&&D.warnOnce("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907");var R=(r[L.vertical]?L.vertical:0)|(r[L.horizontal]?L.horizontal:0);this.symbolInstances.push({textBoxStartIndex:k,textBoxEndIndex:M,iconBoxStartIndex:I,iconBoxEndIndex:P,glyphQuads:S,iconQuads:T,textOffset:f,iconOffset:y,anchor:t,line:e,featureIndex:s,featureProperties:_,writingModes:R})},J.programInterfaces=X,J.MAX_INSTANCES=65535,J.addDynamicAttributes=n,e.exports=J},{"../../gl/index_buffer":61,"../../gl/vertex_buffer":62,"../../shaders/encode_attribute":85,"../../symbol/anchor":167,"../../symbol/clip_line":169,"../../symbol/collision_feature":171,"../../symbol/get_anchors":173,"../../symbol/mergelines":174,"../../symbol/quads":176,"../../symbol/shaping":177,"../../symbol/transform_text":179,"../../util/classify_rings":205,"../../util/find_pole_of_inaccessibility":211,"../../util/script_detection":218,"../../util/struct_array":220,"../../util/token":222,"../../util/util":223,"../../util/verticalize_punctuation":225,"../extent":48,"../index_array_type":50,"../load_geometry":51,"../program_configuration":53,"../segment":55,"../vertex_array_type":56,"@mapbox/point-geometry":2,"@mapbox/vector-tile":6}],48:[function(t,e,r){"use strict";e.exports=8192},{}],49:[function(t,e,r){"use strict";function i(t,e){return e-t}var n=(t("@mapbox/point-geometry"),t("./load_geometry")),o=t("./extent"),a=t("../style-spec/feature_filter"),s=t("../util/struct_array"),l=t("grid-index"),u=t("../util/dictionary_coder"),c=t("@mapbox/vector-tile"),p=t("pbf"),h=t("../util/vectortile_to_geojson"),f=t("../util/util").arraysIntersect,d=s({members:[{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]}),m=function(t,e,r,i){this.coord=t,this.overscaling=e,this.x=t.x,this.y=t.y,this.z=t.z-Math.log(e)/Math.LN2,this.grid=r||new l(o,16,0),this.featureIndexArray=i||new d};m.deserialize=function(t,e,r){var i=new m(t.coord,t.overscaling,new l(t.grid),new d(t.featureIndexArray));return i.rawTileData=e,i.bucketLayerIDs=t.bucketLayerIDs,i.setCollisionTile(r),i},m.prototype.insert=function(t,e,r,i,n){var o=this,a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,i,n);for(var s=0;s<e.length;s++){for(var l=e[s],u=[1/0,1/0,-1/0,-1/0],c=0;c<l.length;c++){var p=l[c];u[0]=Math.min(u[0],p.x),u[1]=Math.min(u[1],p.y),u[2]=Math.max(u[2],p.x),u[3]=Math.max(u[3],p.y)}o.grid.insert(a,u[0],u[1],u[2],u[3])}},m.prototype.setCollisionTile=function(t){this.collisionTile=t},m.prototype.serialize=function(t){var e=this.grid.toArrayBuffer();return t&&t.push(e),{coord:this.coord,overscaling:this.overscaling,grid:e,featureIndexArray:this.featureIndexArray.serialize(t),bucketLayerIDs:this.bucketLayerIDs}},m.prototype.query=function(t,e){this.vtLayers||(this.vtLayers=new c.VectorTile(new p(this.rawTileData)).layers,this.sourceLayerCoder=new u(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]));for(var r={},n=t.params||{},s=o/t.tileSize/t.scale,l=a(n.filter),h=t.queryGeometry,f=t.additionalRadius*s,d=1/0,m=1/0,v=-1/0,y=-1/0,g=0;g<h.length;g++)for(var _=h[g],x=0;x<_.length;x++){var b=_[x];d=Math.min(d,b.x),m=Math.min(m,b.y),v=Math.max(v,b.x),y=Math.max(y,b.y)}var w=this.grid.query(d-f,m-f,v+f,y+f);w.sort(i),this.filterMatching(r,w,this.featureIndexArray,h,l,n.layers,e,t.bearing,s);var T=this.collisionTile.queryRenderedSymbols(h,t.scale);return T.sort(),this.filterMatching(r,T,this.collisionTile.collisionBoxArray,h,l,n.layers,e,t.bearing,s),r},m.prototype.filterMatching=function(t,e,r,i,o,a,s,l,u){for(var c,p=this,d=0;d<e.length;d++){var m=e[d];if(m!==c){c=m;var v=r.get(m),y=p.bucketLayerIDs[v.bucketIndex];if(!a||f(a,y)){var g=p.sourceLayerCoder.decode(v.sourceLayerIndex),_=p.vtLayers[g],x=_.feature(v.featureIndex);if(o(x))for(var b=null,w=0;w<y.length;w++){var T=y[w];if(!(a&&a.indexOf(T)<0)){var S=s[T];if(S&&("symbol"===S.type||(b||(b=n(x)),S.queryIntersectsFeature(i,x,b,p.z,l,u)))){var z=new h(x,p.z,p.x,p.y);z.layer=S.serialize();var A=t[T];void 0===A&&(A=t[T]=[]),A.push({featureIndex:m,feature:z})}}}}}}},m.prototype.hasLayer=function(t){for(var e=this,r=0,i=e.bucketLayerIDs;r<i.length;r+=1)for(var n=i[r],o=0,a=n;o<a.length;o+=1){var s=a[o];if(t===s)return!0}return!1},e.exports=m},{"../style-spec/feature_filter":110,"../util/dictionary_coder":207,"../util/struct_array":220,"../util/util":223,"../util/vectortile_to_geojson":224,"./extent":48,"./load_geometry":51,"@mapbox/point-geometry":2,"@mapbox/vector-tile":6,"grid-index":22,pbf:29}],50:[function(t,e,r){"use strict";function i(t){return n({members:[{type:"Uint16",name:"vertices",components:t}]})}var n=t("../util/struct_array");e.exports={LineIndexArray:i(2),TriangleIndexArray:i(3)}},{"../util/struct_array":220}],51:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("./extent"),o=function(t){return{min:-1*Math.pow(2,t-1),max:Math.pow(2,t-1)-1}}(16);e.exports=function(t){for(var e=n/t.extent,r=t.loadGeometry(),a=0;a<r.length;a++)for(var s=r[a],l=0;l<s.length;l++){var u=s[l];u.x=Math.round(u.x*e),u.y=Math.round(u.y*e),(u.x<o.min||u.x>o.max||u.y<o.min||u.y>o.max)&&i.warnOnce("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return r}},{"../util/util":223,"./extent":48}],52:[function(t,e,r){"use strict";var i=t("../util/struct_array"),n=i({members:[{name:"a_pos",type:"Int16",components:2}]});e.exports=n},{"../util/struct_array":220}],53:[function(t,e,r){"use strict";function i(t){return[a(255*t[0],255*t[1]),a(255*t[2],255*t[3])]}var n=t("./vertex_array_type"),o=t("../style-spec/function").interpolationFactor,a=t("../shaders/encode_attribute").packUint8ToFloat,s=t("../gl/vertex_buffer"),l=function(t,e,r,i){this.name=t,this.type=e,this.property=r,this.useIntegerZoom=i};l.prototype.defines=function(){return["#define HAS_UNIFORM_u_"+this.name]},l.prototype.populatePaintArray=function(){},l.prototype.setUniforms=function(t,e,r,i){var n=i.zoom,o=r.getPaintValue(this.property,{zoom:this.useIntegerZoom?Math.floor(n):n});"color"===this.type?t.uniform4fv(e.uniforms["u_"+this.name],o):t.uniform1f(e.uniforms["u_"+this.name],o)};var u=function(t,e,r){this.name=t,this.type=e,this.property=r};u.prototype.defines=function(){return[]},u.prototype.populatePaintArray=function(t,e,r,n,o,a){var s=this,l=t.getPaintValue(this.property,void 0,a);if("color"===this.type)for(var u=i(l),c=n;c<o;c++){var p=e.get(c);p["a_"+s.name+"0"]=u[0],p["a_"+s.name+"1"]=u[1]}else{for(var h=n;h<o;h++)e.get(h)["a_"+s.name]=l;var f=r[this.property];f.max=Math.max(f.max,l)}},u.prototype.setUniforms=function(t,e){t.uniform1f(e.uniforms["a_"+this.name+"_t"],0)};var c=function(t,e,r,i,n){this.name=t,this.type=e,this.property=r,this.useIntegerZoom=i,this.zoom=n};c.prototype.defines=function(){return[]},c.prototype.populatePaintArray=function(t,e,r,n,o,a){var s=this,l=t.getPaintValue(this.property,{zoom:this.zoom},a),u=t.getPaintValue(this.property,{zoom:this.zoom+1},a);if("color"===this.type)for(var c=i(l),p=i(u),h=n;h<o;h++){var f=e.get(h);f["a_"+s.name+"0"]=c[0],f["a_"+s.name+"1"]=c[1],f["a_"+s.name+"2"]=p[0],f["a_"+s.name+"3"]=p[1]}else{for(var d=n;d<o;d++){var m=e.get(d);m["a_"+s.name+"0"]=l,m["a_"+s.name+"1"]=u}var v=r[this.property];v.max=Math.max(v.max,l,u)}},c.prototype.setUniforms=function(t,e,r,i){var n=i.zoom,a=o(this.useIntegerZoom?Math.floor(n):n,1,this.zoom,this.zoom+1);t.uniform1f(e.uniforms["a_"+this.name+"_t"],a)};var p=function(){this.binders={},this.cacheKey=""};p.createDynamic=function(t,e,r){for(var i=new p,o=[],a=0,s=t.paintAttributes||[];a<s.length;a+=1){var h=s[a],f=h.property,d=h.useIntegerZoom||!1,m=h.name||f.replace(e.type+"-","").replace(/-/g,"_"),v=e._paintSpecifications[f].type;e.isPaintValueFeatureConstant(f)?(i.binders[m]=new l(m,v,f,d),i.cacheKey+="/u_"+m):e.isPaintValueZoomConstant(f)?(i.binders[m]=new u(m,v,f),i.cacheKey+="/a_"+m,o.push({name:"a_"+m,type:"Float32",components:"color"===v?2:1})):(i.binders[m]=new c(m,v,f,d,r),i.cacheKey+="/z_"+m,o.push({name:"a_"+m,type:"Float32",components:"color"===v?4:2}))}return i.PaintVertexArray=n(o),i.interface=t,i.layer=e,i},p.createBasicFill=function(){var t=new p;return t.binders.color=new l("color","color","fill-color",!1),t.cacheKey+="/u_color",t.binders.opacity=new l("opacity","number","fill-opacity",!1),t.cacheKey+="/u_opacity",t},p.prototype.createPaintPropertyStatistics=function(){var t=this,e={};for(var r in t.binders)e[t.binders[r].property]={max:-1/0};return e},p.prototype.populatePaintArray=function(t,e){var r=this,i=this.paintVertexArray;if(0!==i.bytesPerElement){var n=i.length;i.resize(t);for(var o in r.binders)r.binders[o].populatePaintArray(r.layer,i,r.paintPropertyStatistics,n,t,e)}},p.prototype.defines=function(){var t=this,e=[];for(var r in t.binders)e.push.apply(e,t.binders[r].defines());return e},p.prototype.setUniforms=function(t,e,r,i){var n=this;for(var o in n.binders)n.binders[o].setUniforms(t,e,r,i)},p.prototype.serialize=function(t){return 0===this.paintVertexArray.length?null:{array:this.paintVertexArray.serialize(t),type:this.paintVertexArray.constructor.serialize(),statistics:this.paintPropertyStatistics}},p.deserialize=function(t,e,r,i){var o=p.createDynamic(t,e,r);return i&&(o.PaintVertexArray=n(i.type.members),o.paintVertexArray=new o.PaintVertexArray(i.array),o.paintPropertyStatistics=i.statistics),o},p.prototype.upload=function(t){this.paintVertexArray&&(this.paintVertexBuffer=new s(t,this.paintVertexArray))},p.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()};var h=function(t,e,r,i){var n=this;if(this.programConfigurations={},i)for(var o=0,a=e;o<a.length;o+=1){var s=a[o];n.programConfigurations[s.id]=p.deserialize(t,s,r,i[s.id])}else for(var l=0,u=e;l<u.length;l+=1){var c=u[l],h=p.createDynamic(t,c,r);h.paintVertexArray=new h.PaintVertexArray,h.paintPropertyStatistics=h.createPaintPropertyStatistics(),n.programConfigurations[c.id]=h}};h.prototype.populatePaintArrays=function(t,e){var r=this;for(var i in r.programConfigurations)r.programConfigurations[i].populatePaintArray(t,e)},h.prototype.serialize=function(t){var e=this,r={};for(var i in e.programConfigurations){var n=e.programConfigurations[i].serialize(t);n&&(r[i]=n)}return r},h.prototype.get=function(t){return this.programConfigurations[t]},h.prototype.upload=function(t){var e=this;for(var r in e.programConfigurations)e.programConfigurations[r].upload(t)},h.prototype.destroy=function(){var t=this;for(var e in t.programConfigurations)t.programConfigurations[e].destroy()},e.exports={ProgramConfiguration:p,ProgramConfigurationSet:h}},{"../gl/vertex_buffer":62,"../shaders/encode_attribute":85,"../style-spec/function":112,"./vertex_array_type":56}],54:[function(t,e,r){"use strict";var i=t("../util/struct_array"),n=i({members:[{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]});e.exports=n},{"../util/struct_array":220}],55:[function(t,e,r){"use strict";var i=t("../util/util"),n=i.warnOnce,o=Math.pow(2,16)-1,a=function(t){void 0===t&&(t=[]),this.segments=t};a.prototype.prepareSegment=function(t,r,i){var a=this.segments[this.segments.length-1];return t>o&&n("Max vertices per segment is "+o+": bucket requested "+t),(!a||a.vertexLength+t>e.exports.MAX_VERTEX_ARRAY_LENGTH)&&(a={vertexOffset:r.length,primitiveOffset:i.length,vertexLength:0,primitiveLength:0},this.segments.push(a)),a},a.prototype.get=function(){return this.segments},a.prototype.destroy=function(){for(var t=this,e=0,r=t.segments;e<r.length;e+=1){var i=r[e];for(var n in i.vaos)i.vaos[n].destroy()}},e.exports={SegmentVector:a,MAX_VERTEX_ARRAY_LENGTH:o}},{"../util/util":223}],56:[function(t,e,r){"use strict";function i(t){return n({members:t,alignment:4})}var n=t("../util/struct_array");e.exports=i},{"../util/struct_array":220}],57:[function(t,e,r){"use strict";var i=function(t,e,r){this.column=t,this.row=e,this.zoom=r};i.prototype.clone=function(){return new i(this.column,this.row,this.zoom)},i.prototype.zoomTo=function(t){return this.clone()._zoomTo(t)},i.prototype.sub=function(t){return this.clone()._sub(t)},i.prototype._zoomTo=function(t){var e=Math.pow(2,t-this.zoom);return this.column*=e,this.row*=e,this.zoom=t,this},i.prototype._sub=function(t){return t=t.zoomTo(this.zoom),this.column-=t.column,this.row-=t.row,this},e.exports=i},{}],58:[function(t,e,r){"use strict";var i=t("../util/util").wrap,n=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};n.prototype.wrap=function(){return new n(i(this.lng,-180,180),this.lat)},n.prototype.toArray=function(){return[this.lng,this.lat]},n.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},n.prototype.toBounds=function(e){var r=360*e/40075017,i=r/Math.cos(Math.PI/180*this.lat);return new(t("./lng_lat_bounds"))(new n(this.lng-i,this.lat-r),new n(this.lng+i,this.lat+r))},n.convert=function(t){if(t instanceof n)return t;if(Array.isArray(t)&&2===t.length)return new n(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new n(Number(t.lng),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")},e.exports=n},{"../util/util":223,"./lng_lat_bounds":59}],59:[function(t,e,r){"use strict";var i=t("./lng_lat"),n=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};n.prototype.setNorthEast=function(t){return this._ne=t instanceof i?new i(t.lng,t.lat):i.convert(t),this},n.prototype.setSouthWest=function(t){return this._sw=t instanceof i?new i(t.lng,t.lat):i.convert(t),this},n.prototype.extend=function(t){var e,r,o=this._sw,a=this._ne;if(t instanceof i)e=t,r=t;else{if(!(t instanceof n))return Array.isArray(t)?t.every(Array.isArray)?this.extend(n.convert(t)):this.extend(i.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return o||a?(o.lng=Math.min(e.lng,o.lng),o.lat=Math.min(e.lat,o.lat),a.lng=Math.max(r.lng,a.lng),a.lat=Math.max(r.lat,a.lat)):(this._sw=new i(e.lng,e.lat),this._ne=new i(r.lng,r.lat)),this},n.prototype.getCenter=function(){return new i((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},n.prototype.getSouthWest=function(){return this._sw},n.prototype.getNorthEast=function(){return this._ne},n.prototype.getNorthWest=function(){return new i(this.getWest(),this.getNorth())},n.prototype.getSouthEast=function(){return new i(this.getEast(),this.getSouth())},n.prototype.getWest=function(){return this._sw.lng},n.prototype.getSouth=function(){return this._sw.lat},n.prototype.getEast=function(){return this._ne.lng},n.prototype.getNorth=function(){return this._ne.lat},n.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},n.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},n.convert=function(t){return!t||t instanceof n?t:new n(t)},e.exports=n},{"./lng_lat":58}],60:[function(t,e,r){"use strict";var i=t("./lng_lat"),n=t("@mapbox/point-geometry"),o=t("./coordinate"),a=t("../util/util"),s=t("../style-spec/util/interpolate"),l=t("../source/tile_coord"),u=t("../data/extent"),c=t("@mapbox/gl-matrix"),p=c.vec4,h=c.mat4,f=c.mat2,d=function(t,e,r){this.tileSize=512,this._renderWorldCopies=void 0===r||r,this._minZoom=t||0,this._maxZoom=e||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new i(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0},m={minZoom:{},maxZoom:{},renderWorldCopies:{},worldSize:{},centerPoint:{},size:{},bearing:{},pitch:{},fov:{},zoom:{},center:{},unmodified:{},x:{},y:{},point:{}};m.minZoom.get=function(){return this._minZoom},m.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},m.maxZoom.get=function(){return this._maxZoom},m.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},m.renderWorldCopies.get=function(){return this._renderWorldCopies},m.worldSize.get=function(){return this.tileSize*this.scale},m.centerPoint.get=function(){return this.size._div(2)},m.size.get=function(){return new n(this.width,this.height)},m.bearing.get=function(){return-this.angle/Math.PI*180},m.bearing.set=function(t){var e=-a.wrap(t,-180,180)*Math.PI/180;this.angle!==e&&(this._unmodified=!1,this.angle=e,this._calcMatrices(),this.rotationMatrix=f.create(),f.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},m.pitch.get=function(){return this._pitch/Math.PI*180},m.pitch.set=function(t){var e=a.clamp(t,0,60)/180*Math.PI;this._pitch!==e&&(this._unmodified=!1,this._pitch=e,this._calcMatrices())},m.fov.get=function(){return this._fov/Math.PI*180},m.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},m.zoom.get=function(){return this._zoom},m.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},m.center.get=function(){return this._center},m.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},d.prototype.coveringZoomLevel=function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},d.prototype.getVisibleWrappedCoordinates=function(t){for(var e=this.pointCoordinate(new n(0,0),0),r=this.pointCoordinate(new n(this.width,0),0),i=Math.floor(e.column),o=Math.floor(r.column),a=[t],s=i;s<=o;s++)0!==s&&a.push(new l(t.z,t.x,t.y,s));return a},d.prototype.coveringTiles=function(t){var e=this.coveringZoomLevel(t),r=e;if(void 0!==t.minzoom&&e<t.minzoom)return[];void 0!==t.maxzoom&&e>t.maxzoom&&(e=t.maxzoom);var i=this.pointCoordinate(this.centerPoint,e),o=new n(i.column-.5,i.row-.5),a=[this.pointCoordinate(new n(0,0),e),this.pointCoordinate(new n(this.width,0),e),this.pointCoordinate(new n(this.width,this.height),e),this.pointCoordinate(new n(0,this.height),e)];return l.cover(e,a,t.reparseOverscaled?r:e,this._renderWorldCopies).sort(function(t,e){return o.dist(t)-o.dist(e)})},d.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},m.unmodified.get=function(){return this._unmodified},d.prototype.zoomScale=function(t){return Math.pow(2,t)},d.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},d.prototype.project=function(t){return new n(this.lngX(t.lng),this.latY(t.lat))},d.prototype.unproject=function(t){return new i(this.xLng(t.x),this.yLat(t.y))},m.x.get=function(){return this.lngX(this.center.lng)},m.y.get=function(){return this.latY(this.center.lat)},m.point.get=function(){return new n(this.x,this.y)},d.prototype.lngX=function(t){return(180+t)*this.worldSize/360},d.prototype.latY=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*this.worldSize/360},d.prototype.xLng=function(t){return 360*t/this.worldSize-180},d.prototype.yLat=function(t){var e=180-360*t/this.worldSize;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90},d.prototype.setLocationAtPoint=function(t,e){var r=this.pointCoordinate(e)._sub(this.pointCoordinate(this.centerPoint));this.center=this.coordinateLocation(this.locationCoordinate(t)._sub(r)),this._renderWorldCopies&&(this.center=this.center.wrap())},d.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},d.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},d.prototype.locationCoordinate=function(t){return new o(this.lngX(t.lng)/this.tileSize,this.latY(t.lat)/this.tileSize,this.zoom).zoomTo(this.tileZoom)},d.prototype.coordinateLocation=function(t){var e=t.zoomTo(this.zoom);return new i(this.xLng(e.column*this.tileSize),this.yLat(e.row*this.tileSize))},d.prototype.pointCoordinate=function(t,e){void 0===e&&(e=this.tileZoom);var r=[t.x,t.y,0,1],i=[t.x,t.y,1,1];p.transformMat4(r,r,this.pixelMatrixInverse),p.transformMat4(i,i,this.pixelMatrixInverse);var n=r[3],a=i[3],l=r[0]/n,u=i[0]/a,c=r[1]/n,h=i[1]/a,f=r[2]/n,d=i[2]/a,m=f===d?0:(0-f)/(d-f);return new o(s(l,u,m)/this.tileSize,s(c,h,m)/this.tileSize,this.zoom)._zoomTo(e)},d.prototype.coordinatePoint=function(t){var e=t.zoomTo(this.zoom),r=[e.column*this.tileSize,e.row*this.tileSize,0,1];return p.transformMat4(r,r,this.pixelMatrix),new n(r[0]/r[3],r[1]/r[3])},d.prototype.calculatePosMatrix=function(t,e){var r=t.toCoordinate(e),i=this.worldSize/this.zoomScale(r.zoom),n=h.identity(new Float64Array(16));return h.translate(n,n,[r.column*i,r.row*i,0]),h.scale(n,n,[i/u,i/u,1]),h.multiply(n,this.projMatrix,n),new Float32Array(n)},d.prototype.cameraToTileDistance=function(t){var e=this.calculatePosMatrix(t.coord,t.sourceMaxZoom),r=[t.tileSize/2,t.tileSize/2,0,1];return p.transformMat4(r,r,e),r[3]},d.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var t,e,r,i,o=-90,a=90,s=-180,l=180,u=this.size,c=this._unmodified;if(this.latRange){var p=this.latRange;o=this.latY(p[1]),a=this.latY(p[0]),t=a-o<u.y?u.y/(a-o):0}if(this.lngRange){var h=this.lngRange;s=this.lngX(h[0]),l=this.lngX(h[1]),e=l-s<u.x?u.x/(l-s):0}var f=Math.max(e||0,t||0);if(f)return this.center=this.unproject(new n(e?(l+s)/2:this.x,t?(a+o)/2:this.y)),this.zoom+=this.scaleZoom(f),this._unmodified=c,void(this._constraining=!1);if(this.latRange){var d=this.y,m=u.y/2;d-m<o&&(i=o+m),d+m>a&&(i=a-m)}if(this.lngRange){var v=this.x,y=u.x/2;v-y<s&&(r=s+y),v+y>l&&(r=l-y)}void 0===r&&void 0===i||(this.center=this.unproject(new n(void 0!==r?r:this.x,void 0!==i?i:this.y))),this._unmodified=c,this._constraining=!1}},d.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var t=this._fov/2,e=Math.PI/2+this._pitch,r=Math.sin(t)*this.cameraToCenterDistance/Math.sin(Math.PI-e-t),i=Math.cos(Math.PI/2-this._pitch)*r+this.cameraToCenterDistance,n=1.01*i,o=new Float64Array(16);h.perspective(o,this._fov,this.width/this.height,1,n),h.scale(o,o,[1,-1,1]),h.translate(o,o,[0,0,-this.cameraToCenterDistance]),h.rotateX(o,o,this._pitch),h.rotateZ(o,o,this.angle),h.translate(o,o,[-this.x,-this.y,0]);var a=this.worldSize/(2*Math.PI*6378137*Math.abs(Math.cos(this.center.lat*(Math.PI/180))));if(h.scale(o,o,[1,1,a,1]),this.projMatrix=o,o=h.create(),h.scale(o,o,[this.width/2,-this.height/2,1]),h.translate(o,o,[1,-1,0]),this.pixelMatrix=h.multiply(new Float64Array(16),o,this.projMatrix),!(o=h.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=o}},Object.defineProperties(d.prototype,m),e.exports=d},{"../data/extent":48,"../source/tile_coord":101,"../style-spec/util/interpolate":127,"../util/util":223,"./coordinate":57,"./lng_lat":58,"@mapbox/gl-matrix":1,"@mapbox/point-geometry":2}],61:[function(t,e,r){"use strict";var i=function(t,e){this.gl=t,this.buffer=t.createBuffer(),void 0===t.extVertexArrayObject&&(t.extVertexArrayObject=t.getExtension("OES_vertex_array_object")),t.extVertexArrayObject&&t.extVertexArrayObject.bindVertexArrayOES(null),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.buffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,t.STATIC_DRAW),delete e.arrayBuffer};i.prototype.bind=function(){this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.buffer)},i.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},e.exports=i},{}],62:[function(t,e,r){"use strict";var i={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"},n=function(t,e,r){this.length=e.length,this.attributes=e.members,this.itemSize=e.bytesPerElement,this.dynamicDraw=r,this.gl=t,this.buffer=t.createBuffer(),this.gl.bindBuffer(t.ARRAY_BUFFER,this.buffer),this.gl.bufferData(t.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?t.DYNAMIC_DRAW:t.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};n.prototype.bind=function(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer)},n.prototype.updateData=function(t){this.bind(),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,t.arrayBuffer)},n.prototype.enableAttributes=function(t,e){for(var r=this,i=0;i<this.attributes.length;i++){var n=r.attributes[i],o=e.attributes[n.name];void 0!==o&&t.enableVertexAttribArray(o)}},n.prototype.setVertexAttribPointers=function(t,e,r){for(var n=this,o=0;o<this.attributes.length;o++){var a=n.attributes[o],s=e.attributes[a.name];void 0!==s&&t.vertexAttribPointer(s,a.components,t[i[a.type]],!1,n.itemSize,a.offset+n.itemSize*(r||0))}},n.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},e.exports=n},{}],63:[function(t,e,r){"use strict";var i=t("mapbox-gl-supported"),n=t("./util/browser"),o=t("../package.json").version,a=t("./ui/map"),s=t("./ui/control/navigation_control"),l=t("./ui/control/geolocate_control"),u=t("./ui/control/attribution_control"),c=t("./ui/control/scale_control"),p=t("./ui/control/fullscreen_control"),h=t("./ui/popup"),f=t("./ui/marker"),d=t("./style/style"),m=t("./geo/lng_lat"),v=t("./geo/lng_lat_bounds"),y=t("@mapbox/point-geometry"),g=t("./util/evented"),_=t("./util/config"),x=t("./source/rtl_text_plugin");e.exports={version:o,supported:i,workerCount:Math.max(Math.floor(n.hardwareConcurrency/2),1),setRTLTextPlugin:x.setRTLTextPlugin,Map:a,NavigationControl:s,GeolocateControl:l,AttributionControl:u,ScaleControl:c,FullscreenControl:p,Popup:h,Marker:f,Style:d,LngLat:m,LngLatBounds:v,Point:y,Evented:g,config:_,get accessToken(){return _.ACCESS_TOKEN},set accessToken(t){_.ACCESS_TOKEN=t}}},{"../package.json":41,"./geo/lng_lat":58,"./geo/lng_lat_bounds":59,"./source/rtl_text_plugin":96,"./style/style":156,"./ui/control/attribution_control":182,"./ui/control/fullscreen_control":183,"./ui/control/geolocate_control":184,"./ui/control/navigation_control":186,"./ui/control/scale_control":187,"./ui/map":197,"./ui/marker":198,"./ui/popup":199,"./util/browser":202,"./util/config":206,"./util/evented":210,"@mapbox/point-geometry":2,"mapbox-gl-supported":28}],64:[function(t,e,r){"use strict";function i(t,e,r){var i=t.gl,o=t.transform,a=o.tileSize,s=r.paint["background-color"],l=r.paint["background-pattern"],u=r.paint["background-opacity"],c=l||1!==s[3]||1!==u?"translucent":"opaque";if(t.renderPass===c){i.disable(i.STENCIL_TEST),t.setDepthSublayer(0);var p;if(l){if(n.isPatternMissing(l,t))return;p=t.useProgram("fillPattern",t.basicFillProgramConfiguration),n.prepare(l,t,p),t.tileExtentPatternVAO.bind(i,p,t.tileExtentBuffer)}else p=t.useProgram("fill",t.basicFillProgramConfiguration),i.uniform4fv(p.uniforms.u_color,s),t.tileExtentVAO.bind(i,p,t.tileExtentBuffer);i.uniform1f(p.uniforms.u_opacity,u);for(var h=o.coveringTiles({tileSize:a}),f=0,d=h;f<d.length;f+=1){var m=d[f];l&&n.setTile({coord:m,tileSize:a},t,p),i.uniformMatrix4fv(p.uniforms.u_matrix,!1,t.transform.calculatePosMatrix(m)),i.drawArrays(i.TRIANGLE_STRIP,0,t.tileExtentBuffer.length)}}}var n=t("./pattern");e.exports=i},{"./pattern":80}],65:[function(t,e,r){"use strict";function i(t,e,r,i){if("translucent"===t.renderPass){var a=t.gl;t.setDepthSublayer(0),t.depthMask(!1),a.disable(a.STENCIL_TEST);for(var s=0;s<i.length;s++){var l=i[s],u=e.getTile(l),c=u.getBucket(r);if(c){var p=c.programConfigurations.get(r.id),h=t.useProgram("circle",p);if(p.setUniforms(a,h,r,{zoom:t.transform.zoom}),a.uniform1f(h.uniforms.u_camera_to_center_distance,t.transform.cameraToCenterDistance),a.uniform1i(h.uniforms.u_scale_with_map,"map"===r.paint["circle-pitch-scale"]?1:0),"map"===r.paint["circle-pitch-alignment"]){a.uniform1i(h.uniforms.u_pitch_with_map,1);var f=o(u,1,t.transform.zoom);a.uniform2f(h.uniforms.u_extrude_scale,f,f)}else a.uniform1i(h.uniforms.u_pitch_with_map,0),a.uniform2fv(h.uniforms.u_extrude_scale,t.transform.pixelsToGLUnits);a.uniform1f(h.uniforms.u_devicepixelratio,n.devicePixelRatio),a.uniformMatrix4fv(h.uniforms.u_matrix,!1,t.translatePosMatrix(l.posMatrix,u,r.paint["circle-translate"],r.paint["circle-translate-anchor"])),h.draw(a,a.TRIANGLES,r.id,c.layoutVertexBuffer,c.indexBuffer,c.segments,p)}}}}var n=t("../util/browser"),o=t("../source/pixels_to_tile_units");e.exports=i},{"../source/pixels_to_tile_units":93,"../util/browser":202}],66:[function(t,e,r){"use strict";function i(t,e,r,i){var n=t.gl;n.enable(n.STENCIL_TEST);var o=t.useProgram("collisionBox");n.activeTexture(n.TEXTURE1),t.frameHistory.bind(n),n.uniform1i(o.uniforms.u_fadetexture,1);for(var a=0;a<i.length;a++){var s=i[a],l=e.getTile(s),u=l.getBucket(r);if(u){n.uniformMatrix4fv(o.uniforms.u_matrix,!1,s.posMatrix),t.enableTileClippingMask(s),t.lineWidth(1),n.uniform1f(o.uniforms.u_scale,Math.pow(2,t.transform.zoom-l.coord.z)),n.uniform1f(o.uniforms.u_zoom,10*t.transform.zoom);var c=Math.max(0,Math.min(25,l.coord.z+Math.log(l.collisionTile.maxScale)/Math.LN2));n.uniform1f(o.uniforms.u_maxzoom,10*c),n.uniform1f(o.uniforms.u_collision_y_stretch,l.collisionTile.yStretch),n.uniform1f(o.uniforms.u_pitch,t.transform.pitch/360*2*Math.PI),n.uniform1f(o.uniforms.u_camera_to_center_distance,t.transform.cameraToCenterDistance),o.draw(n,n.LINES,r.id,u.collisionBox.layoutVertexBuffer,u.collisionBox.indexBuffer,u.collisionBox.segments)}}}e.exports=i},{}],67:[function(t,e,r){"use strict";function i(t,e,r){for(var i=0;i<r.length;i++)n(t,e,r[i])}function n(t,e,r){var i=t.gl;i.disable(i.STENCIL_TEST),t.lineWidth(1*a.devicePixelRatio);var n=r.posMatrix,h=t.useProgram("debug");i.uniformMatrix4fv(h.uniforms.u_matrix,!1,n),i.uniform4f(h.uniforms.u_color,1,0,0,1),t.debugVAO.bind(i,h,t.debugBuffer),i.drawArrays(i.LINE_STRIP,0,t.debugBuffer.length);for(var f=o(r.toString(),50,200,5),d=new p,m=0;m<f.length;m+=2)d.emplaceBack(f[m],f[m+1]);var v=new u(i,d);(new c).bind(i,h,v),i.uniform4f(h.uniforms.u_color,1,1,1,1);for(var y=e.getTile(r).tileSize,g=l/(Math.pow(2,t.transform.zoom-r.z)*y),_=[[-1,-1],[-1,1],[1,-1],[1,1]],x=0;x<_.length;x++){var b=_[x];i.uniformMatrix4fv(h.uniforms.u_matrix,!1,s.translate([],n,[g*b[0],g*b[1],0])),i.drawArrays(i.LINES,0,v.length)}i.uniform4f(h.uniforms.u_color,0,0,0,1),i.uniformMatrix4fv(h.uniforms.u_matrix,!1,n),i.drawArrays(i.LINES,0,v.length)}function o(t,e,r,i){i=i||1;var n,o,a,s,l,u,c,p,f=[];for(n=0,o=t.length;n<o;n++)if(l=h[t[n]]){for(p=null,a=0,s=l[1].length;a<s;a+=2)-1===l[1][a]&&-1===l[1][a+1]?p=null:(u=e+l[1][a]*i,c=r-l[1][a+1]*i,p&&f.push(p.x,p.y,u,c),p={x:u,y:c});e+=l[0]*i}return f}var a=t("../util/browser"),s=t("@mapbox/gl-matrix").mat4,l=t("../data/extent"),u=t("../gl/vertex_buffer"),c=t("./vertex_array_object"),p=t("../data/pos_array");e.exports=i;var h={" ":[16,[]],"!":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'"':[16,[4,21,4,14,-1,-1,12,21,12,14]],"#":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],"%":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],"&":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],"'":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],"(":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],")":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],"*":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],"+":[26,[13,18,13,0,-1,-1,4,9,22,9]],",":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"-":[26,[4,9,22,9]],".":[10,[5,2,4,1,5,0,6,1,5,2]],"/":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],":":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],";":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"<":[24,[20,18,4,9,20,0]],"=":[26,[4,12,22,12,-1,-1,4,6,22,6]],">":[24,[4,18,20,9,4,0]],"?":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],"@":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],"[":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],"\\":[14,[0,21,14,-3]],"]":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],"^":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],"`":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],"{":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],"|":[8,[4,25,4,-7]],"}":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],"~":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]}},{"../data/extent":48,"../data/pos_array":52,"../gl/vertex_buffer":62,"../util/browser":202,"./vertex_array_object":84,"@mapbox/gl-matrix":1}],68:[function(t,e,r){"use strict";function i(t,e,r,i){var s=t.gl;s.enable(s.STENCIL_TEST);var l=!r.paint["fill-pattern"]&&r.isPaintValueFeatureConstant("fill-color")&&r.isPaintValueFeatureConstant("fill-opacity")&&1===r.paint["fill-color"][3]&&1===r.paint["fill-opacity"]?"opaque":"translucent";t.renderPass===l&&(t.setDepthSublayer(1),t.depthMask("opaque"===t.renderPass),n(t,e,r,i,o)),"translucent"===t.renderPass&&r.paint["fill-antialias"]&&(t.lineWidth(2),t.depthMask(!1),t.setDepthSublayer(r.getPaintProperty("fill-outline-color")?2:0),n(t,e,r,i,a))}function n(t,e,r,i,n){if(!l.isPatternMissing(r.paint["fill-pattern"],t))for(var o=!0,a=0,s=i;a<s.length;a+=1){var u=s[a],c=e.getTile(u),p=c.getBucket(r);p&&(t.enableTileClippingMask(u),n(t,e,r,c,u,p,o),o=!1)}}function o(t,e,r,i,n,o,a){var l=t.gl,u=o.programConfigurations.get(r.id);s("fill",r.paint["fill-pattern"],t,u,r,i,n,a).draw(l,l.TRIANGLES,r.id,o.layoutVertexBuffer,o.indexBuffer,o.segments,u)}function a(t,e,r,i,n,o,a){var l=t.gl,u=o.programConfigurations.get(r.id),c=r.paint["fill-pattern"]&&!r.getPaintProperty("fill-outline-color"),p=s("fillOutline",c,t,u,r,i,n,a);l.uniform2f(p.uniforms.u_world,l.drawingBufferWidth,l.drawingBufferHeight),p.draw(l,l.LINES,r.id,o.layoutVertexBuffer,o.indexBuffer2,o.segments2,u)}function s(t,e,r,i,n,o,a,s){var u,c=r.currentProgram;return e?(u=r.useProgram(t+"Pattern",i),(s||u!==c)&&(i.setUniforms(r.gl,u,n,{zoom:r.transform.zoom}),l.prepare(n.paint["fill-pattern"],r,u)),l.setTile(o,r,u)):(u=r.useProgram(t,i),(s||u!==c)&&i.setUniforms(r.gl,u,n,{zoom:r.transform.zoom})),r.gl.uniformMatrix4fv(u.uniforms.u_matrix,!1,r.translatePosMatrix(a.posMatrix,o,n.paint["fill-translate"],n.paint["fill-translate-anchor"])),u}var l=t("./pattern");e.exports=i},{"./pattern":80}],69:[function(t,e,r){"use strict";function i(t,e,r,i){if("3d"===t.renderPass){var a=t.gl;a.disable(a.STENCIL_TEST),a.enable(a.DEPTH_TEST),t.clearColor(),t.depthMask(!0);for(var s=0;s<i.length;s++)o(t,e,r,i[s])}else"translucent"===t.renderPass&&n(t,r)}function n(t,e){var r=t.prerenderedFrames[e.id];if(r){var i=t.gl,n=t.useProgram("extrusionTexture");i.disable(i.STENCIL_TEST),i.disable(i.DEPTH_TEST),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,r.texture),i.uniform1f(n.uniforms.u_opacity,e.paint["fill-extrusion-opacity"]),i.uniform1i(n.uniforms.u_image,0);var o=c.create();c.ortho(o,0,t.width,t.height,0,0,1),i.uniformMatrix4fv(n.uniforms.u_matrix,!1,o),i.uniform2f(n.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),r.vao.bind(i,n,r.buffer),i.drawArrays(i.TRIANGLE_STRIP,0,4),t.viewportFrames.push(r),delete t.prerenderedFrames[e.id]}}function o(t,e,r,i){var n=e.getTile(i),o=n.getBucket(r);if(o){var s=t.gl,u=r.paint["fill-extrusion-pattern"],c=o.programConfigurations.get(r.id),p=t.useProgram(u?"fillExtrusionPattern":"fillExtrusion",c);if(c.setUniforms(s,p,r,{zoom:t.transform.zoom}),u){if(l.isPatternMissing(u,t))return;l.prepare(u,t,p),l.setTile(n,t,p),s.uniform1f(p.uniforms.u_height_factor,-Math.pow(2,i.z)/n.tileSize/8)}t.gl.uniformMatrix4fv(p.uniforms.u_matrix,!1,t.translatePosMatrix(i.posMatrix,n,r.paint["fill-extrusion-translate"],r.paint["fill-extrusion-translate-anchor"])),a(p,t),p.draw(s,s.TRIANGLES,r.id,o.layoutVertexBuffer,o.indexBuffer,o.segments,c)}}function a(t,e){var r=e.gl,i=e.style.light,n=i.calculated.position,o=[n.x,n.y,n.z],a=u.create();"viewport"===i.calculated.anchor&&u.fromRotation(a,-e.transform.angle),p.transformMat3(o,o,a),r.uniform3fv(t.uniforms.u_lightpos,o),r.uniform1f(t.uniforms.u_lightintensity,i.calculated.intensity),r.uniform3fv(t.uniforms.u_lightcolor,i.calculated.color.slice(0,3))}var s=t("@mapbox/gl-matrix"),l=t("./pattern"),u=s.mat3,c=s.mat4,p=s.vec3;e.exports=i},{"./pattern":80,"@mapbox/gl-matrix":1}],70:[function(t,e,r){"use strict";function i(t,e,r,i,a,s,l,u,c){var p,h,f,d,m=e.gl,v=a.paint["line-dasharray"],y=a.paint["line-pattern"];if(u||c){var g=1/o(r,1,e.transform.tileZoom);if(v){p=e.lineAtlas.getDash(v.from,"round"===a.layout["line-cap"]),h=e.lineAtlas.getDash(v.to,"round"===a.layout["line-cap"]);var _=p.width*v.fromScale,x=h.width*v.toScale;m.uniform2f(t.uniforms.u_patternscale_a,g/_,-p.height/2),m.uniform2f(t.uniforms.u_patternscale_b,g/x,-h.height/2),m.uniform1f(t.uniforms.u_sdfgamma,e.lineAtlas.width/(256*Math.min(_,x)*n.devicePixelRatio)/2)}else if(y){if(f=e.imageManager.getPattern(y.from),d=e.imageManager.getPattern(y.to),!f||!d)return;m.uniform2f(t.uniforms.u_pattern_size_a,f.displaySize[0]*y.fromScale/g,d.displaySize[1]),m.uniform2f(t.uniforms.u_pattern_size_b,d.displaySize[0]*y.toScale/g,d.displaySize[1]);var b=e.imageManager.getPixelSize(),w=b.width,T=b.height;m.uniform2fv(t.uniforms.u_texsize,[w,T])}m.uniform2f(t.uniforms.u_gl_units_to_pixels,1/e.transform.pixelsToGLUnits[0],1/e.transform.pixelsToGLUnits[1])}u&&(v?(m.uniform1i(t.uniforms.u_image,0),m.activeTexture(m.TEXTURE0),e.lineAtlas.bind(m),m.uniform1f(t.uniforms.u_tex_y_a,p.y),m.uniform1f(t.uniforms.u_tex_y_b,h.y),m.uniform1f(t.uniforms.u_mix,v.t)):y&&(m.uniform1i(t.uniforms.u_image,0),m.activeTexture(m.TEXTURE0),e.imageManager.bind(m),m.uniform2fv(t.uniforms.u_pattern_tl_a,f.tl),m.uniform2fv(t.uniforms.u_pattern_br_a,f.br),m.uniform2fv(t.uniforms.u_pattern_tl_b,d.tl),m.uniform2fv(t.uniforms.u_pattern_br_b,d.br),m.uniform1f(t.uniforms.u_fade,y.t))),e.enableTileClippingMask(s);var S=e.translatePosMatrix(s.posMatrix,r,a.paint["line-translate"],a.paint["line-translate-anchor"]);m.uniformMatrix4fv(t.uniforms.u_matrix,!1,S),m.uniform1f(t.uniforms.u_ratio,1/o(r,1,e.transform.zoom)),t.draw(m,m.TRIANGLES,a.id,i.layoutVertexBuffer,i.indexBuffer,i.segments,l)}var n=t("../util/browser"),o=t("../source/pixels_to_tile_units");e.exports=function(t,e,r,n){if("translucent"===t.renderPass){t.setDepthSublayer(0),t.depthMask(!1);var o=t.gl;if(o.enable(o.STENCIL_TEST),!(r.paint["line-width"]<=0))for(var a,s=r.paint["line-dasharray"]?"lineSDF":r.paint["line-pattern"]?"linePattern":"line",l=!0,u=0,c=n;u<c.length;u+=1){var p=c[u],h=e.getTile(p),f=h.getBucket(r);if(f){var d=f.programConfigurations.get(r.id),m=t.currentProgram,v=t.useProgram(s,d),y=l||v!==m,g=a!==h.coord.z;y&&d.setUniforms(t.gl,v,r,{zoom:t.transform.zoom}),i(v,t,h,f,r,p,d,y,g),a=h.coord.z,l=!1}}}}},{"../source/pixels_to_tile_units":93,"../util/browser":202}],71:[function(t,e,r){"use strict";function i(t,e,r,i){if("translucent"===t.renderPass){var l=t.gl,c=e.getSource(),p=t.useProgram("raster");l.enable(l.DEPTH_TEST),t.depthMask(!0),l.depthFunc(l.LESS),l.disable(l.STENCIL_TEST),l.uniform1f(p.uniforms.u_brightness_low,r.paint["raster-brightness-min"]),l.uniform1f(p.uniforms.u_brightness_high,r.paint["raster-brightness-max"]),l.uniform1f(p.uniforms.u_saturation_factor,a(r.paint["raster-saturation"])),l.uniform1f(p.uniforms.u_contrast_factor,o(r.paint["raster-contrast"])),l.uniform3fv(p.uniforms.u_spin_weights,n(r.paint["raster-hue-rotate"])),l.uniform1f(p.uniforms.u_buffer_scale,1),l.uniform1i(p.uniforms.u_image0,0),l.uniform1i(p.uniforms.u_image1,1);for(var h=i.length&&i[0].z,f=0,d=i;f<d.length;f+=1){var m=d[f];t.setDepthSublayer(m.z-h);var v=e.getTile(m),y=t.transform.calculatePosMatrix(m,e.getSource().maxzoom);v.registerFadeDuration(t.style.animationLoop,r.paint["raster-fade-duration"]),l.uniformMatrix4fv(p.uniforms.u_matrix,!1,y);var g=e.findLoadedParent(m,0,{}),_=s(v,g,e,r,t.transform),x=void 0,b=void 0;if(l.activeTexture(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,v.texture),l.activeTexture(l.TEXTURE1),g?(l.bindTexture(l.TEXTURE_2D,g.texture),x=Math.pow(2,g.coord.z-v.coord.z),b=[v.coord.x*x%1,v.coord.y*x%1]):l.bindTexture(l.TEXTURE_2D,v.texture),l.uniform2fv(p.uniforms.u_tl_parent,b||[0,0]),l.uniform1f(p.uniforms.u_scale_parent,x||1),l.uniform1f(p.uniforms.u_fade_t,_.mix),l.uniform1f(p.uniforms.u_opacity,_.opacity*r.paint["raster-opacity"]),c instanceof u){var w=c.boundsBuffer;c.boundsVAO.bind(l,p,w),l.drawArrays(l.TRIANGLE_STRIP,0,w.length)}else{var T=t.rasterBoundsBuffer;t.rasterBoundsVAO.bind(l,p,T),l.drawArrays(l.TRIANGLE_STRIP,0,T.length)}}l.depthFunc(l.LEQUAL)}}function n(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}function o(t){return t>0?1/(1-t):1+t}function a(t){return t>0?1-1/(1.001-t):-t}function s(t,e,r,i,n){var o=i.paint["raster-fade-duration"];if(o>0){var a=Date.now(),s=(a-t.timeAdded)/o,u=e?(a-e.timeAdded)/o:-1,c=r.getSource(),p=n.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),h=!e||Math.abs(e.coord.z-p)>Math.abs(t.coord.z-p),f=h&&t.refreshedUponExpiration?1:l.clamp(h?s:1-u,0,1);return t.refreshedUponExpiration&&s>=1&&(t.refreshedUponExpiration=!1),e?{opacity:1,mix:1-f}:{opacity:f,mix:0}}return{opacity:1,mix:0}}var l=t("../util/util"),u=t("../source/image_source");e.exports=i},{"../source/image_source":91,"../util/util":223}],72:[function(t,e,r){"use strict";function i(t,e,r,i){if("translucent"===t.renderPass){var o=!(r.layout["text-allow-overlap"]||r.layout["icon-allow-overlap"]||r.layout["text-ignore-placement"]||r.layout["icon-ignore-placement"]),a=t.gl;o?a.disable(a.STENCIL_TEST):a.enable(a.STENCIL_TEST),t.setDepthSublayer(0),t.depthMask(!1),n(t,e,r,i,!1,r.paint["icon-translate"],r.paint["icon-translate-anchor"],r.layout["icon-rotation-alignment"],r.layout["icon-pitch-alignment"],r.layout["icon-keep-upright"]),n(t,e,r,i,!0,r.paint["text-translate"],r.paint["text-translate-anchor"],r.layout["text-rotation-alignment"],r.layout["text-pitch-alignment"],r.layout["text-keep-upright"]),e.map.showCollisionBoxes&&l(t,e,r,i)}}function n(t,e,r,i,n,s,l,p,h,d){var m=t.gl,v=t.transform,y="map"===p,g="map"===h,_=y&&"line"===r.layout["symbol-placement"],x=y&&!g&&!_,b=g;b?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST);for(var w,T=0,S=i;T<S.length;T+=1){var z=S[T],A=e.getTile(z),C=A.getBucket(r);if(C){var E=n?C.text:C.icon;if(E&&E.segments.get().length){var k=E.programConfigurations.get(r.id),M=n||C.sdfIcons,L=n?C.textSizeData:C.iconSizeData;if(w||(w=t.useProgram(M?"symbolSDF":"symbolIcon",k),k.setUniforms(m,w,r,{zoom:t.transform.zoom}),o(w,t,r,n,x,g,L)),m.activeTexture(m.TEXTURE0),m.uniform1i(w.uniforms.u_texture,0),n)A.glyphAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),m.uniform2fv(w.uniforms.u_texsize,A.glyphAtlasTexture.size);else{var I=!r.isLayoutValueFeatureConstant("icon-size")||!r.isLayoutValueZoomConstant("icon-size")||1!==r.getLayoutValue("icon-size",{zoom:v.zoom})||C.iconsNeedLinear,P=g||0!==v.pitch;A.iconAtlasTexture.bind(M||t.options.rotating||t.options.zooming||I||P?m.LINEAR:m.NEAREST,m.CLAMP_TO_EDGE),m.uniform2fv(w.uniforms.u_texsize,A.iconAtlasTexture.size)}t.enableTileClippingMask(z),m.uniformMatrix4fv(w.uniforms.u_matrix,!1,t.translatePosMatrix(z.posMatrix,A,s,l));var R=u(A,1,t.transform.zoom),D=c.getLabelPlaneMatrix(z.posMatrix,g,y,t.transform,R),O=c.getGlCoordMatrix(z.posMatrix,g,y,t.transform,R);m.uniformMatrix4fv(w.uniforms.u_gl_coord_matrix,!1,t.translatePosMatrix(O,A,s,l,!0)),_?(m.uniformMatrix4fv(w.uniforms.u_label_plane_matrix,!1,f),c.updateLineLabels(C,z.posMatrix,t,n,D,O,g,d,R,r)):m.uniformMatrix4fv(w.uniforms.u_label_plane_matrix,!1,D),m.uniform1f(w.uniforms.u_collision_y_stretch,A.collisionTile.yStretch),a(w,k,t,r,A,E,n,M,g)}}}b||m.enable(m.DEPTH_TEST)}function o(t,e,r,i,n,o,a){var s=e.gl,l=e.transform;s.uniform1i(t.uniforms.u_pitch_with_map,o?1:0),s.uniform1f(t.uniforms.u_is_text,i?1:0),s.activeTexture(s.TEXTURE1),e.frameHistory.bind(s),s.uniform1i(t.uniforms.u_fadetexture,1),s.uniform1f(t.uniforms.u_pitch,l.pitch/360*2*Math.PI),s.uniform1i(t.uniforms.u_is_size_zoom_constant,a.isZoomConstant?1:0),s.uniform1i(t.uniforms.u_is_size_feature_constant,a.isFeatureConstant?1:0),s.uniform1f(t.uniforms.u_camera_to_center_distance,l.cameraToCenterDistance);var u=p.evaluateSizeForZoom(a,l,r,i);void 0!==u.uSizeT&&s.uniform1f(t.uniforms.u_size_t,u.uSizeT),void 0!==u.uSize&&s.uniform1f(t.uniforms.u_size,u.uSize),s.uniform1f(t.uniforms.u_aspect_ratio,l.width/l.height),s.uniform1i(t.uniforms.u_rotate_symbol,n?1:0)}function a(t,e,r,i,n,o,a,l,u){var c=r.gl,p=r.transform;if(l){var h=(a?"text":"icon")+"-halo-width",f=!i.isPaintValueFeatureConstant(h)||i.paint[h],d=u?Math.cos(p._pitch)*p.cameraToCenterDistance:1;c.uniform1f(t.uniforms.u_gamma_scale,d),f&&(c.uniform1f(t.uniforms.u_is_halo,1),s(o,i,c,t)),c.uniform1f(t.uniforms.u_is_halo,0)}s(o,i,c,t)}function s(t,e,r,i){i.draw(r,r.TRIANGLES,e.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,t.programConfigurations.get(e.id),t.dynamicLayoutVertexBuffer)}var l=t("./draw_collision_debug"),u=t("../source/pixels_to_tile_units"),c=t("../symbol/projection"),p=t("../symbol/symbol_size"),h=t("@mapbox/gl-matrix").mat4,f=h.identity(new Float32Array(16));e.exports=i},{"../source/pixels_to_tile_units":93,"../symbol/projection":175,"../symbol/symbol_size":178,"./draw_collision_debug":66,"@mapbox/gl-matrix":1}],73:[function(t,e,r){"use strict";var i=function(){this.changeTimes=new Float64Array(256),this.changeOpacities=new Uint8Array(256),this.opacities=new Uint8ClampedArray(256),this.array=new Uint8Array(this.opacities.buffer),this.previousZoom=0,this.firstFrame=!0};i.prototype.record=function(t,e,r){var i=this;this.firstFrame&&(t=0,this.firstFrame=!1),e=Math.floor(10*e);var n;if(e<this.previousZoom)for(n=e+1;n<=this.previousZoom;n++)i.changeTimes[n]=t,i.changeOpacities[n]=i.opacities[n];else for(n=e;n>this.previousZoom;n--)i.changeTimes[n]=t,i.changeOpacities[n]=i.opacities[n];for(n=0;n<256;n++){var o=t-i.changeTimes[n],a=255*(r?o/r:1);i.opacities[n]=n<=e?i.changeOpacities[n]+a:i.changeOpacities[n]-a}this.changed=!0,this.previousZoom=e},i.prototype.isVisible=function(t){return 0!==this.opacities[Math.floor(10*t)]},i.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.changed&&(t.texSubImage2D(t.TEXTURE_2D,0,0,0,256,1,t.ALPHA,t.UNSIGNED_BYTE,this.array),this.changed=!1)):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,256,1,0,t.ALPHA,t.UNSIGNED_BYTE,this.array))},e.exports=i},{}],74:[function(t,e,r){"use strict";function i(t){var e=a.create({width:0,height:0}),r={},i=new n(0,0,{autoResize:!0});for(var o in t){var l=t[o],u=r[o]={};for(var c in l){var p=l[+c];if(p&&0!==p.bitmap.width&&0!==p.bitmap.height){var h=i.packOne(p.bitmap.width+2*s,p.bitmap.height+2*s);a.resize(e,{width:i.w,height:i.h}),a.copy(p.bitmap,e,{x:0,y:0},{x:h.x+s,y:h.y+s},p.bitmap),u[c]={rect:h,metrics:p.metrics}}}}return i.shrink(),a.resize(e,{width:i.w,height:i.h}),{image:e,positions:r}}var n=t("@mapbox/shelf-pack"),o=t("../util/image"),a=o.AlphaImage,s=1;e.exports={makeGlyphAtlas:i}},{"../util/image":213,"@mapbox/shelf-pack":3}],75:[function(t,e,r){"use strict";var i=t("../style/load_glyph_range"),n=t("@mapbox/tiny-sdf"),o=t("../util/is_char_in_unicode_block"),a=t("../util/util"),s=a.asyncAll,l=t("../util/image"),u=l.AlphaImage,c=function(t,e){this.requestTransform=t,this.localIdeographFontFamily=e,this.entries={}};c.prototype.setURL=function(t){this.url=t},c.prototype.getGlyphs=function(t,e){var r=this,n=[];for(var o in t)for(var a=0,l=t[o];a<l.length;a+=1){var u=l[a];n.push({stack:o,id:u})}s(n,function(t,e){var n=t.stack,o=t.id,a=r.entries[n];a||(a=r.entries[n]={glyphs:{},requests:{}});var s=a.glyphs[o];if(void 0!==s)return void e(null,{stack:n,id:o,glyph:s});if(s=r._tinySDF(a,n,o))return void e(null,{stack:n,id:o,glyph:s});var l=Math.floor(o/256);if(256*l>65535)return void e(new Error("glyphs > 65535 not supported"));var u=a.requests[l];u||(u=a.requests[l]=[],i(n,l,r.url,r.requestTransform,function(t,e){if(e)for(var r in e)a.glyphs[+r]=e[+r];for(var i=0,n=u;i<n.length;i+=1)(0,n[i])(t,e);delete a.requests[l]})),u.push(function(t,r){t?e(t):r&&e(null,{stack:n,id:o,glyph:r[o]||null})})},function(t,r){if(t)e(t);else if(r){for(var i={},n=0,o=r;n<o.length;n+=1){var a=o[n],s=a.stack,l=a.id,u=a.glyph;(i[s]||(i[s]={}))[l]=u}e(null,i)}})},c.prototype._tinySDF=function(t,e,r){var i=this.localIdeographFontFamily;if(i&&(o["CJK Unified Ideographs"](r)||o["Hangul Syllables"](r))){var a=t.tinySDF;if(!a){var s="400";/bold/i.test(e)?s="900":/medium/i.test(e)?s="500":/light/i.test(e)&&(s="200"),a=t.tinySDF=new n(24,3,8,.25,i,s)}return{id:r,bitmap:u.create({width:30,height:30},a.draw(String.fromCharCode(r))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},e.exports=c},{"../style/load_glyph_range":152,"../util/image":213,"../util/is_char_in_unicode_block":215,"../util/util":223,"@mapbox/tiny-sdf":4}],76:[function(t,e,r){"use strict";function i(t,e){var r=e.pixelRatio,i={x:t.x+l,y:t.y+l,w:t.w-2*l,h:t.h-2*l};return{pixelRatio:r,textureRect:i,tl:[i.x,i.y],br:[i.x+i.w,i.y+i.h],displaySize:[i.w/r,i.h/r]}}function n(t){var e=s.create({width:0,height:0}),r={},n=new o(0,0,{autoResize:!0});for(var a in t){var u=t[a],c=n.packOne(u.data.width+2*l,u.data.height+2*l);s.resize(e,{width:n.w,height:n.h}),s.copy(u.data,e,{x:0,y:0},{x:c.x+l,y:c.y+l},u.data),r[a]=i(c,u)}return n.shrink(),s.resize(e,{width:n.w,height:n.h}),{image:e,positions:r}}var o=t("@mapbox/shelf-pack"),a=t("../util/image"),s=a.RGBAImage,l=1;e.exports={imagePosition:i,makeImageAtlas:n}},{"../util/image":213,"@mapbox/shelf-pack":3}],77:[function(t,e,r){"use strict";var i=t("@mapbox/shelf-pack"),n=t("../util/image"),o=n.RGBAImage,a=t("./image_atlas"),s=a.imagePosition,l=t("./texture"),u=function(){this.images={},this.loaded=!1,this.requestors=[],this.shelfPack=new i(64,64,{autoResize:!0}),this.patterns={},this.atlasImage=o.create({width:64,height:64}),this.dirty=!0};u.prototype.isLoaded=function(){return this.loaded},u.prototype.setLoaded=function(t){var e=this;if(this.loaded!==t&&(this.loaded=t,t)){for(var r=0,i=e.requestors;r<i.length;r+=1){var n=i[r],o=n.ids,a=n.callback;e._notify(o,a)}this.requestors=[]}},u.prototype.getImage=function(t){return this.images[t]},u.prototype.addImage=function(t,e){this.images[t]=e},u.prototype.removeImage=function(t){delete this.images[t];var e=this.patterns[t];e&&(this.shelfPack.unref(e.bin),delete this.patterns[t])},u.prototype.getImages=function(t,e){var r=this,i=!0;if(!this.isLoaded())for(var n=0,o=t;n<o.length;n+=1){var a=o[n];r.images[a]||(i=!1)}this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e})},u.prototype._notify=function(t,e){for(var r=this,i={},n=0,o=t;n<o.length;n+=1){var a=o[n],s=r.images[a];s&&(i[a]=s)}e(null,i)},u.prototype.getPixelSize=function(){return{width:this.shelfPack.w,height:this.shelfPack.h}},u.prototype.getPattern=function(t){var e=this.patterns[t];if(e)return e.position;var r=this.getImage(t);if(!r)return null;var i=r.data.width+2,n=r.data.height+2,a=this.shelfPack.packOne(i,n);if(!a)return null;o.resize(this.atlasImage,this.getPixelSize());var l=r.data,u=this.atlasImage,c=a.x+1,p=a.y+1,h=l.width,f=l.height;o.copy(l,u,{x:0,y:0},{x:c,y:p},{width:h,height:f}),o.copy(l,u,{x:0,y:f-1},{x:c,y:p-1},{width:h,height:1}),o.copy(l,u,{x:0,y:0},{x:c,y:p+f},{width:h,height:1}),o.copy(l,u,{x:h-1,y:0},{x:c-1,y:p},{width:1,height:f}),o.copy(l,u,{x:0,y:0},{x:c+h,y:p},{width:1,height:f}),this.dirty=!0;var d=s(a,r);return this.patterns[t]={bin:a,position:d},d},u.prototype.bind=function(t){this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new l(t,this.atlasImage,t.RGBA),this.atlasTexture.bind(t.LINEAR,t.CLAMP_TO_EDGE)},e.exports=u},{"../util/image":213,"./image_atlas":76,"./texture":83,"@mapbox/shelf-pack":3}],78:[function(t,e,r){"use strict";var i=t("../util/util"),n=function(t,e){this.width=t,this.height=e,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}};n.prototype.getDash=function(t,e){var r=t.join(",")+String(e);return this.positions[r]||(this.positions[r]=this.addDash(t,e)),this.positions[r]},n.prototype.addDash=function(t,e){var r=this,n=e?7:0,o=2*n+1;if(this.nextRow+o>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var a=0,s=0;s<t.length;s++)a+=t[s];for(var l=this.width/a,u=l/2,c=t.length%2==1,p=-n;p<=n;p++)for(var h=r.nextRow+n+p,f=r.width*h,d=c?-t[t.length-1]:0,m=t[0],v=1,y=0;y<this.width;y++){for(;m<y/l;)d=m,m+=t[v],c&&v===t.length-1&&(m+=t[0]),v++;var g=Math.abs(y-d*l),_=Math.abs(y-m*l),x=Math.min(g,_),b=v%2==1,w=void 0;if(e){var T=n?p/n*(u+1):0;if(b){var S=u-Math.abs(T);w=Math.sqrt(x*x+S*S)}else w=u-Math.sqrt(x*x+T*T)}else w=(b?1:-1)*x;r.data[3+4*(f+y)]=Math.max(0,Math.min(255,w+128))}var z={y:(this.nextRow+n+.5)/this.height,height:2*n/this.height,width:a};return this.nextRow+=o,this.dirty=!0,z},n.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.RGBA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,this.data))},e.exports=n},{"../util/util":223}],79:[function(t,e,r){"use strict";var i=t("../util/browser"),n=t("@mapbox/gl-matrix").mat4,o=t("./frame_history"),a=t("../source/source_cache"),s=t("../data/extent"),l=t("../source/pixels_to_tile_units"),u=t("../util/util"),c=t("../gl/vertex_buffer"),p=t("./vertex_array_object"),h=t("../data/raster_bounds_array"),f=t("../data/pos_array"),d=t("../data/program_configuration"),m=d.ProgramConfiguration,v=t("../shaders"),y=t("./program"),g=t("./render_texture"),_={symbol:t("./draw_symbol"),circle:t("./draw_circle"),line:t("./draw_line"),fill:t("./draw_fill"),"fill-extrusion":t("./draw_fill_extrusion"),raster:t("./draw_raster"),background:t("./draw_background"),debug:t("./draw_debug")},x=function(t,e){this.gl=t,this.transform=e,this._tileTextures={},this.prerenderedFrames={},this.viewportFrames=[],this.frameHistory=new o,this.setup(),this.numSublayers=a.maxUnderzooming+a.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.lineWidthRange=t.getParameter(t.ALIASED_LINE_WIDTH_RANGE),this.basicFillProgramConfiguration=m.createBasicFill(),this.emptyProgramConfiguration=new m};x.prototype.resize=function(t,e){var r=this,n=this.gl;this.width=t*i.devicePixelRatio,this.height=e*i.devicePixelRatio,n.viewport(0,0,this.width,this.height);for(var o=0,a=r.viewportFrames;o<a.length;o+=1){var s=a[o];r.gl.deleteTexture(s.texture),r.gl.deleteFramebuffer(s.fbo)}this.viewportFrames=[],this.depthRbo&&(this.gl.deleteRenderbuffer(this.depthRbo),this.depthRbo=null)},x.prototype.setup=function(){var t=this.gl;t.enable(t.BLEND),t.blendFunc(t.ONE,t.ONE_MINUS_SRC_ALPHA),t.enable(t.STENCIL_TEST),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),this._depthMask=!1,t.depthMask(!1);var e=new f;e.emplaceBack(0,0),e.emplaceBack(s,0),e.emplaceBack(0,s),e.emplaceBack(s,s),this.tileExtentBuffer=new c(t,e),this.tileExtentVAO=new p,this.tileExtentPatternVAO=new p;var r=new f;r.emplaceBack(0,0),r.emplaceBack(s,0),r.emplaceBack(s,s),r.emplaceBack(0,s),r.emplaceBack(0,0),this.debugBuffer=new c(t,r),this.debugVAO=new p;var i=new h;i.emplaceBack(0,0,0,0),i.emplaceBack(s,0,s,0),i.emplaceBack(0,s,0,s),i.emplaceBack(s,s,s,s),this.rasterBoundsBuffer=new c(t,i),this.rasterBoundsVAO=new p,this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT))},x.prototype.clearColor=function(){var t=this.gl;t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT)},x.prototype.clearStencil=function(){var t=this.gl;t.clearStencil(0),t.stencilMask(255),t.clear(t.STENCIL_BUFFER_BIT)},x.prototype.clearDepth=function(){var t=this.gl;t.clearDepth(1),this.depthMask(!0),t.clear(t.DEPTH_BUFFER_BIT)},x.prototype._renderTileClippingMasks=function(t){var e=this,r=this.gl;r.colorMask(!1,!1,!1,!1),this.depthMask(!1),r.disable(r.DEPTH_TEST),r.enable(r.STENCIL_TEST),r.stencilMask(255),r.stencilOp(r.KEEP,r.KEEP,r.REPLACE);var i=1;this._tileClippingMaskIDs={};for(var n=0,o=t;n<o.length;n+=1){var a=o[n],s=e._tileClippingMaskIDs[a.id]=i++;r.stencilFunc(r.ALWAYS,s,255);var l=e.useProgram("fill",e.basicFillProgramConfiguration);r.uniformMatrix4fv(l.uniforms.u_matrix,!1,a.posMatrix),e.tileExtentVAO.bind(r,l,e.tileExtentBuffer),r.drawArrays(r.TRIANGLE_STRIP,0,e.tileExtentBuffer.length)}r.stencilMask(0),r.colorMask(!0,!0,!0,!0),this.depthMask(!0),r.enable(r.DEPTH_TEST)},x.prototype.enableTileClippingMask=function(t){var e=this.gl;e.stencilFunc(e.EQUAL,this._tileClippingMaskIDs[t.id],255)},x.prototype.render=function(t,e){var r=this;this.style=t,this.options=e,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.frameHistory.record(Date.now(),this.transform.zoom,t.getTransition().duration);for(var i in r.style.sourceCaches){var n=r.style.sourceCaches[i];n.used&&n.prepare(r.gl)}var o=this.style._order;this.renderPass="3d";for(var a,s=!0,l=[],u=0;u<o.length;u++){var c=r.style._layers[o[u]];if(c.has3DPass()&&!c.isHidden(r.transform.zoom)&&(c.source!==(a&&a.id)&&(a=r.style.sourceCaches[c.source],l=[],a&&(r.clearStencil(),l=a.getVisibleCoordinates()),l.reverse()),l.length)){r._setup3DRenderbuffer();var p=r.viewportFrames.pop()||new g(r);p.bindWithDepth(r.depthRbo),s&&(r.clearDepth(),s=!1),r.renderLayer(r,a,c,l),p.unbind(),r.prerenderedFrames[c.id]=p}}this.clearColor(),this.clearDepth(),this.showOverdrawInspector(e.showOverdrawInspector),this.depthRange=(t._order.length+2)*this.numSublayers*this.depthEpsilon,this.renderPass="opaque";var h,f=[];for(this.currentLayer=o.length-1,this._showOverdrawInspector||this.gl.disable(this.gl.BLEND),this.currentLayer;this.currentLayer>=0;this.currentLayer--){var d=r.style._layers[o[r.currentLayer]];d.source!==(h&&h.id)&&(h=r.style.sourceCaches[d.source],f=[],h&&(r.clearStencil(),f=h.getVisibleCoordinates(),h.getSource().isTileClipped&&r._renderTileClippingMasks(f))),r.renderLayer(r,h,d,f)}this.renderPass="translucent";var m,v=[];for(this.gl.enable(this.gl.BLEND),this.currentLayer=0,this.currentLayer;this.currentLayer<o.length;this.currentLayer++){var y=r.style._layers[o[r.currentLayer]];y.source!==(m&&m.id)&&(m=r.style.sourceCaches[y.source],v=[],m&&(r.clearStencil(),v=m.getVisibleCoordinates(),m.getSource().isTileClipped&&r._renderTileClippingMasks(v)),v.reverse()),r.renderLayer(r,m,y,v)}if(this.options.showTileBoundaries){var x=this.style.sourceCaches[Object.keys(this.style.sourceCaches)[0]];x&&_.debug(this,x,x.getVisibleCoordinates())}},x.prototype._setup3DRenderbuffer=function(){if(!this.depthRbo){var t=this.gl;this.depthRbo=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,this.depthRbo),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,this.width,this.height),t.bindRenderbuffer(t.RENDERBUFFER,null)}this.depthRboAttached=!0},x.prototype.depthMask=function(t){t!==this._depthMask&&(this._depthMask=t,this.gl.depthMask(t))},x.prototype.renderLayer=function(t,e,r,i){r.isHidden(this.transform.zoom)||("background"===r.type||i.length)&&(this.id=r.id,_[r.type](t,e,r,i))},x.prototype.setDepthSublayer=function(t){var e=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon,r=e-1+this.depthRange;this.gl.depthRange(r,e)},x.prototype.translatePosMatrix=function(t,e,r,i,o){if(!r[0]&&!r[1])return t;var a=o?"map"===i?this.transform.angle:0:"viewport"===i?-this.transform.angle:0;if(a){var s=Math.sin(a),u=Math.cos(a);r=[r[0]*u-r[1]*s,r[0]*s+r[1]*u]}var c=[o?r[0]:l(e,r[0],this.transform.zoom),o?r[1]:l(e,r[1],this.transform.zoom),0],p=new Float32Array(16);return n.translate(p,t,c),p},x.prototype.saveTileTexture=function(t){var e=this._tileTextures[t.size];e?e.push(t):this._tileTextures[t.size]=[t]},x.prototype.getTileTexture=function(t){var e=this._tileTextures[t];return e&&e.length>0?e.pop():null},x.prototype.lineWidth=function(t){this.gl.lineWidth(u.clamp(t,this.lineWidthRange[0],this.lineWidthRange[1]))},x.prototype.showOverdrawInspector=function(t){if(t||this._showOverdrawInspector){this._showOverdrawInspector=t;var e=this.gl;t?(e.blendFunc(e.CONSTANT_COLOR,e.ONE),e.blendColor(1/8,1/8,1/8,0),e.clearColor(0,0,0,1),e.clear(e.COLOR_BUFFER_BIT)):e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA)}},x.prototype._createProgramCached=function(t,e){this.cache=this.cache||{};var r=""+t+(e.cacheKey||"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[r]||(this.cache[r]=new y(this.gl,v[t],e,this._showOverdrawInspector)),this.cache[r]},x.prototype.useProgram=function(t,e){var r=this.gl,i=this._createProgramCached(t,e||this.emptyProgramConfiguration);return this.currentProgram!==i&&(r.useProgram(i.program),this.currentProgram=i),i},e.exports=x},{"../data/extent":48,"../data/pos_array":52,"../data/program_configuration":53,"../data/raster_bounds_array":54,"../gl/vertex_buffer":62,"../shaders":86,"../source/pixels_to_tile_units":93,"../source/source_cache":98,"../util/browser":202,"../util/util":223,"./draw_background":64,"./draw_circle":65,"./draw_debug":67,"./draw_fill":68,"./draw_fill_extrusion":69,"./draw_line":70,"./draw_raster":71,"./draw_symbol":72,"./frame_history":73,"./program":81,"./render_texture":82,"./vertex_array_object":84,"@mapbox/gl-matrix":1}],80:[function(t,e,r){"use strict";var i=t("../source/pixels_to_tile_units");r.isPatternMissing=function(t,e){if(!t)return!1;var r=e.imageManager.getPattern(t.from),i=e.imageManager.getPattern(t.to);return!r||!i},r.prepare=function(t,e,r){var i=e.gl,n=e.imageManager.getPattern(t.from),o=e.imageManager.getPattern(t.to);i.uniform1i(r.uniforms.u_image,0),i.uniform2fv(r.uniforms.u_pattern_tl_a,n.tl),i.uniform2fv(r.uniforms.u_pattern_br_a,n.br),i.uniform2fv(r.uniforms.u_pattern_tl_b,o.tl),i.uniform2fv(r.uniforms.u_pattern_br_b,o.br);var a=e.imageManager.getPixelSize(),s=a.width,l=a.height;i.uniform2fv(r.uniforms.u_texsize,[s,l]),i.uniform1f(r.uniforms.u_mix,t.t),i.uniform2fv(r.uniforms.u_pattern_size_a,n.displaySize),i.uniform2fv(r.uniforms.u_pattern_size_b,o.displaySize),i.uniform1f(r.uniforms.u_scale_a,t.fromScale),i.uniform1f(r.uniforms.u_scale_b,t.toScale),i.activeTexture(i.TEXTURE0),e.imageManager.bind(i)},r.setTile=function(t,e,r){var n=e.gl;n.uniform1f(r.uniforms.u_tile_units_to_pixels,1/i(t,1,e.transform.tileZoom));var o=Math.pow(2,t.coord.z),a=t.tileSize*Math.pow(2,e.transform.tileZoom)/o,s=a*(t.coord.x+t.coord.w*o),l=a*t.coord.y;n.uniform2f(r.uniforms.u_pixel_coord_upper,s>>16,l>>16),n.uniform2f(r.uniforms.u_pixel_coord_lower,65535&s,65535&l)}},{"../source/pixels_to_tile_units":93}],81:[function(t,e,r){"use strict";var i=t("../util/browser"),n=t("../shaders"),o=t("../data/program_configuration"),a=(o.ProgramConfiguration,t("./vertex_array_object")),s=function(t,e,r,o){var a=this;this.gl=t,this.program=t.createProgram();var s=r.defines().concat("#define DEVICE_PIXEL_RATIO "+i.devicePixelRatio.toFixed(1));o&&s.push("#define OVERDRAW_INSPECTOR;");var l=s.concat(n.prelude.fragmentSource,e.fragmentSource).join("\n"),u=s.concat(n.prelude.vertexSource,e.vertexSource).join("\n"),c=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(c,l),t.compileShader(c),t.attachShader(this.program,c);var p=t.createShader(t.VERTEX_SHADER);t.shaderSource(p,u),t.compileShader(p),t.attachShader(this.program,p);for(var h=r.interface?r.interface.layoutAttributes:[],f=0;f<h.length;f++)t.bindAttribLocation(a.program,f,h[f].name);t.linkProgram(this.program),this.numAttributes=t.getProgramParameter(this.program,t.ACTIVE_ATTRIBUTES),this.attributes={},this.uniforms={};for(var d=0;d<this.numAttributes;d++){var m=t.getActiveAttrib(a.program,d);m&&(a.attributes[m.name]=t.getAttribLocation(a.program,m.name))}for(var v=t.getProgramParameter(this.program,t.ACTIVE_UNIFORMS),y=0;y<v;y++){var g=t.getActiveUniform(a.program,y);g&&(a.uniforms[g.name]=t.getUniformLocation(a.program,g.name))}};s.prototype.draw=function(t,e,r,i,n,o,s,l){for(var u,c=this,p=(u={},u[t.LINES]=2,u[t.TRIANGLES]=3,u)[e],h=0,f=o.get();h<f.length;h+=1){var d=f[h],m=d.vaos||(d.vaos={});(m[r]||(m[r]=new a)).bind(t,c,i,n,s&&s.paintVertexBuffer,d.vertexOffset,l),t.drawElements(e,d.primitiveLength*p,t.UNSIGNED_SHORT,d.primitiveOffset*p*2)}},e.exports=s},{"../data/program_configuration":53,"../shaders":86,"../util/browser":202,"./vertex_array_object":84}],82:[function(t,e,r){"use strict";var i=t("../gl/vertex_buffer"),n=t("./vertex_array_object"),o=t("../data/pos_array"),a=function(t){var e=this.gl=t.gl,r=this.texture=e.createTexture();e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t.width,t.height,0,e.RGBA,e.UNSIGNED_BYTE,null),e.bindTexture(e.TEXTURE_2D,null);var a=this.fbo=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,a),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);var s=new o;s.emplaceBack(0,0),s.emplaceBack(1,0),s.emplaceBack(0,1),s.emplaceBack(1,1),this.buffer=new i(e,s),this.vao=new n};a.prototype.bindWithDepth=function(t){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo),this.attachedRbo!==t&&(e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.attachedRbo=t)},a.prototype.unbind=function(){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,null)},e.exports=a},{"../data/pos_array":52,"../gl/vertex_buffer":62,"./vertex_array_object":84}],83:[function(t,e,r){"use strict";var i=function(t,e,r){this.gl=t;var i=e.width,n=e.height;this.size=[i,n],this.format=r,this.texture=t.createTexture(),this.update(e)};i.prototype.update=function(t){var e=t.width,r=t.height,i=t.data;this.size=[e,r];var n=this,o=n.gl;o.bindTexture(o.TEXTURE_2D,this.texture),o.pixelStorei(o.UNPACK_ALIGNMENT,1),this.format===o.RGBA&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,this.format,e,r,0,this.format,o.UNSIGNED_BYTE,i)},i.prototype.bind=function(t,e){var r=this,i=r.gl;i.bindTexture(i.TEXTURE_2D,this.texture),t!==this.filter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,t),this.filter=t),e!==this.wrap&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,e),this.wrap=e)},i.prototype.destroy=function(){this.gl.deleteTexture(this.texture),this.texture=null},e.exports=i},{}],84:[function(t,e,r){"use strict";var i=function(){this.boundProgram=null,this.boundVertexBuffer=null,this.boundVertexBuffer2=null,this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};i.prototype.bind=function(t,e,r,i,n,o,a){void 0===t.extVertexArrayObject&&(t.extVertexArrayObject=t.getExtension("OES_vertex_array_object"));var s=!this.vao||this.boundProgram!==e||this.boundVertexBuffer!==r||this.boundVertexBuffer2!==n||this.boundIndexBuffer!==i||this.boundVertexOffset!==o||this.boundDynamicVertexBuffer!==a;!t.extVertexArrayObject||s?(this.freshBind(t,e,r,i,n,o,a),this.gl=t):(t.extVertexArrayObject.bindVertexArrayOES(this.vao),a&&a.bind())},i.prototype.freshBind=function(t,e,r,i,n,o,a){var s,l=e.numAttributes;if(t.extVertexArrayObject)this.vao&&this.destroy(),this.vao=t.extVertexArrayObject.createVertexArrayOES(),t.extVertexArrayObject.bindVertexArrayOES(this.vao),s=0,this.boundProgram=e,this.boundVertexBuffer=r,this.boundVertexBuffer2=n,this.boundIndexBuffer=i,this.boundVertexOffset=o,this.boundDynamicVertexBuffer=a;else{s=t.currentNumAttributes||0;for(var u=l;u<s;u++)t.disableVertexAttribArray(u)}r.enableAttributes(t,e),n&&n.enableAttributes(t,e),a&&a.enableAttributes(t,e),r.bind(),r.setVertexAttribPointers(t,e,o),n&&(n.bind(),n.setVertexAttribPointers(t,e,o)),a&&(a.bind(),a.setVertexAttribPointers(t,e,o)),i&&i.bind(),t.currentNumAttributes=l},i.prototype.destroy=function(){this.vao&&(this.gl.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)},e.exports=i},{}],85:[function(t,e,r){"use strict";var i=t("../util/util");r.packUint8ToFloat=function(t,e){return t=i.clamp(Math.floor(t),0,255),e=i.clamp(Math.floor(e),0,255),256*t+e}},{"../util/util":223}],86:[function(t,e,r){"use strict";var i={prelude:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif\n\n// Unpack a pair of values that have been packed into a single float.\n// The packed values are assumed to be 8-bit unsigned integers, and are\n// packed like so:\n// packedValue = floor(input[0]) * 256 + input[1],\nvec2 unpack_float(const float packedValue) {\n int packedIntValue = int(packedValue);\n int v0 = packedIntValue / 256;\n return vec2(v0, packedIntValue - v0 * 256);\n}\n\n\n// To minimize the number of attributes needed, we encode a 4-component\n// color into a pair of floats (i.e. a vec2) as follows:\n// [ floor(color.r * 255) * 256 + color.g * 255,\n// floor(color.b * 255) * 256 + color.g * 255 ]\nvec4 decode_color(const vec2 encodedColor) {\n return vec4(\n unpack_float(encodedColor[0]) / 255.0,\n unpack_float(encodedColor[1]) / 255.0\n );\n}\n\n// Unpack a pair of paint values and interpolate between them.\nfloat unpack_mix_vec2(const vec2 packedValue, const float t) {\n return mix(packedValue[0], packedValue[1], t);\n}\n\n// Unpack a pair of paint values and interpolate between them.\nvec4 unpack_mix_vec4(const vec4 packedColors, const float t) {\n vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));\n vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));\n return mix(minColor, maxColor, t);\n}\n\n// The offset depends on how many pixels are between the world origin and the edge of the tile:\n// vec2 offset = mod(pixel_coord, size)\n//\n// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.\n// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.\n//\n// The pixel_coord is passed in as two 16 bit values:\n// pixel_coord_upper = floor(pixel_coord / 2^16)\n// pixel_coord_lower = mod(pixel_coord, 2^16)\n//\n// The offset is calculated in a series of steps that should preserve this precision:\nvec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,\n const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {\n\n vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);\n return (tile_units_to_pixels * pos + offset) / pattern_size;\n}\n"},circle:{fragmentSource:"#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\n\nvarying vec3 v_data;\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize mediump float radius\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize highp vec4 stroke_color\n #pragma mapbox: initialize mediump float stroke_width\n #pragma mapbox: initialize lowp float stroke_opacity\n\n vec2 extrude = v_data.xy;\n float extrude_length = length(extrude);\n\n lowp float antialiasblur = v_data.z;\n float antialiased_blur = -max(blur, antialiasblur);\n\n float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);\n\n float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(\n antialiased_blur,\n 0.0,\n extrude_length - radius / (radius + stroke_width)\n );\n\n gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform bool u_scale_with_map;\nuniform bool u_pitch_with_map;\nuniform vec2 u_extrude_scale;\nuniform highp float u_camera_to_center_distance;\n\nattribute vec2 a_pos;\n\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\n\nvarying vec3 v_data;\n\nvoid main(void) {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize mediump float radius\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize highp vec4 stroke_color\n #pragma mapbox: initialize mediump float stroke_width\n #pragma mapbox: initialize lowp float stroke_opacity\n\n // unencode the extrusion vector that we snuck into the a_pos vector\n vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\n\n // multiply a_pos by 0.5, since we had it * 2 in order to sneak\n // in extrusion data\n vec2 circle_center = floor(a_pos * 0.5);\n if (u_pitch_with_map) {\n vec2 corner_position = circle_center;\n if (u_scale_with_map) {\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale;\n } else {\n // Pitching the circle with the map effectively scales it with the map\n // To counteract the effect for pitch-scale: viewport, we rescale the\n // whole circle based on the pitch scaling effect at its central point\n vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);\n }\n\n gl_Position = u_matrix * vec4(corner_position, 0, 1);\n } else {\n gl_Position = u_matrix * vec4(circle_center, 0, 1);\n\n if (u_scale_with_map) {\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;\n } else {\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;\n }\n }\n\n // This is a minimum blur distance that serves as a faux-antialiasing for\n // the circle. since blur is a ratio of the circle's size and the intent is\n // to keep the blur at roughly 1px, the two are inversely related.\n lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);\n\n v_data = vec3(extrude.x, extrude.y, antialiasblur);\n}\n"},collisionBox:{fragmentSource:"uniform float u_zoom;\n// u_maxzoom is derived from the maximum scale considered by the CollisionTile\n// Labels with placement zoom greater than this value will not be placed,\n// regardless of perspective effects.\nuniform float u_maxzoom;\nuniform sampler2D u_fadetexture;\n\n// v_max_zoom is a collision-box-specific value that controls when line-following\n// collision boxes are used.\nvarying float v_max_zoom;\nvarying float v_placement_zoom;\nvarying float v_perspective_zoom_adjust;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n\n float alpha = 0.5;\n\n // Green = no collisions, label is showing\n gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0) * alpha;\n\n // Red = collision, label hidden\n if (texture2D(u_fadetexture, v_fade_tex).a < 1.0) {\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\n }\n\n // Faded black = this collision box is not used at this zoom (for curved labels)\n if (u_zoom >= v_max_zoom + v_perspective_zoom_adjust) {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\n }\n\n // Faded blue = the placement scale for this label is beyond the CollisionTile\n // max scale, so it's impossible for this label to show without collision detection\n // being run again (the label's glyphs haven't even been added to the symbol bucket)\n if (v_placement_zoom >= u_maxzoom) {\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\n }\n}\n",vertexSource:"attribute vec2 a_pos;\nattribute vec2 a_anchor_pos;\nattribute vec2 a_extrude;\nattribute vec2 a_data;\n\nuniform mat4 u_matrix;\nuniform float u_scale;\nuniform float u_pitch;\nuniform float u_collision_y_stretch;\nuniform float u_camera_to_center_distance;\n\nvarying float v_max_zoom;\nvarying float v_placement_zoom;\nvarying float v_perspective_zoom_adjust;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\n highp float camera_to_anchor_distance = projectedPoint.w;\n highp float collision_perspective_ratio = 1.0 + 0.5 * ((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\n\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\n\n gl_Position = u_matrix * vec4(a_pos + a_extrude * collision_perspective_ratio * collision_adjustment / u_scale, 0.0, 1.0);\n\n v_max_zoom = a_data.x;\n v_placement_zoom = a_data.y;\n\n v_perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\n v_fade_tex = vec2((v_placement_zoom + v_perspective_zoom_adjust) / 255.0, 0.0);\n}\n"},debug:{fragmentSource:"uniform highp vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n",vertexSource:"attribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n // We are using Int16 for texture position coordinates to give us enough precision for\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\n // as an arbitrarily high number to preserve adequate precision when rendering.\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\n // so math for modifying either is consistent.\n gl_Position = u_matrix * vec4(a_pos, step(8192.0, a_pos.x), 1);\n}\n"},fill:{fragmentSource:"#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float opacity\n\n gl_FragColor = color * opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"attribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n"},fillOutline:{fragmentSource:"#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvarying vec2 v_pos;\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\n gl_FragColor = outline_color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"attribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos;\n\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},fillOutlinePattern:{fragmentSource:"uniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform vec2 u_texsize;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n // find distance to outline for alpha interpolation\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\n\n\n gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec2 u_world;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\n\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},fillPattern:{fragmentSource:"uniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform vec2 u_texsize;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n gl_FragColor = mix(color1, color2, u_mix) * opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\n}\n"},fillExtrusion:{fragmentSource:"varying vec4 v_color;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define highp vec4 color\n\nvoid main() {\n #pragma mapbox: initialize lowp float base\n #pragma mapbox: initialize lowp float height\n #pragma mapbox: initialize highp vec4 color\n\n gl_FragColor = v_color;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec3 u_lightcolor;\nuniform lowp vec3 u_lightpos;\nuniform lowp float u_lightintensity;\n\nattribute vec2 a_pos;\nattribute vec3 a_normal;\nattribute float a_edgedistance;\n\nvarying vec4 v_color;\n\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n\n#pragma mapbox: define highp vec4 color\n\nvoid main() {\n #pragma mapbox: initialize lowp float base\n #pragma mapbox: initialize lowp float height\n #pragma mapbox: initialize highp vec4 color\n\n base = max(0.0, base);\n height = max(0.0, height);\n\n float ed = a_edgedistance; // use each attrib in order to not trip a VAO assert\n float t = mod(a_normal.x, 2.0);\n\n gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);\n\n // Relative luminance (how dark/bright is the surface color?)\n float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\n\n v_color = vec4(0.0, 0.0, 0.0, 1.0);\n\n // Add slight ambient lighting so no extrusions are totally black\n vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\n color += ambientlight;\n\n // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\n float directional = clamp(dot(a_normal / 16384.0, u_lightpos), 0.0, 1.0);\n\n // Adjust directional so that\n // the range of values for highlight/shading is narrower\n // with lower light intensity\n // and with lighter/brighter surface colors\n directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\n\n // Add gradient along z axis of side surfaces\n if (a_normal.y != 0.0) {\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\n }\n\n // Assign final color based on surface + ambient light color, diffuse light directional, and light color\n // with lower bounds adjusted to hue of light\n // so that shading is tinted with the complementary (opposite) color to the light color\n v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\n v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\n v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\n}\n"},fillExtrusionPattern:{fragmentSource:"uniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform vec2 u_texsize;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec4 v_lighting;\n\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n\nvoid main() {\n #pragma mapbox: initialize lowp float base\n #pragma mapbox: initialize lowp float height\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n vec4 mixedColor = mix(color1, color2, u_mix);\n\n gl_FragColor = mixedColor * v_lighting;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\nuniform float u_height_factor;\n\nuniform vec3 u_lightcolor;\nuniform lowp vec3 u_lightpos;\nuniform lowp float u_lightintensity;\n\nattribute vec2 a_pos;\nattribute vec3 a_normal;\nattribute float a_edgedistance;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec4 v_lighting;\nvarying float v_directional;\n\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n\nvoid main() {\n #pragma mapbox: initialize lowp float base\n #pragma mapbox: initialize lowp float height\n\n base = max(0.0, base);\n height = max(0.0, height);\n\n float t = mod(a_normal.x, 2.0);\n float z = t > 0.0 ? height : base;\n\n gl_Position = u_matrix * vec4(a_pos, z, 1);\n\n vec2 pos = a_normal.x == 1.0 && a_normal.y == 0.0 && a_normal.z == 16384.0\n ? a_pos // extrusion top\n : vec2(a_edgedistance, z * u_height_factor); // extrusion side\n\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, pos);\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, pos);\n\n v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\n float directional = clamp(dot(a_normal / 16383.0, u_lightpos), 0.0, 1.0);\n directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\n\n if (a_normal.y != 0.0) {\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\n }\n\n v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\n}\n"},extrusionTexture:{fragmentSource:"uniform sampler2D u_image;\nuniform float u_opacity;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(0.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec2 u_world;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\n\n v_pos.x = a_pos.x;\n v_pos.y = 1.0 - a_pos.y;\n}\n"},line:{fragmentSource:"#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n\nvarying vec2 v_width2;\nvarying vec2 v_normal;\nvarying float v_gamma_scale;\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_width2.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_width2.t) or when fading out\n // (v_width2.s)\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\n\n gl_FragColor = color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"\n\n// the distance over which the line edge fades out.\n// Retina devices need a smaller distance to avoid aliasing.\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\nattribute vec4 a_pos_normal;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform vec2 u_gl_units_to_pixels;\n\nvarying vec2 v_normal;\nvarying vec2 v_width2;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize mediump float gapwidth\n #pragma mapbox: initialize lowp float offset\n #pragma mapbox: initialize mediump float width\n\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n\n vec2 pos = a_pos_normal.xy;\n\n // x is 1 if it's a round cap, 0 otherwise\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = a_pos_normal.zw;\n v_normal = normal;\n\n // these transformations used to be applied in the JS and native code bases.\n // moved them into the shader for clarity and simplicity.\n gapwidth = gapwidth / 2.0;\n float halfwidth = width / 2.0;\n offset = -1.0 * offset;\n\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\n\n // calculate how much the perspective view squishes or stretches the extrude\n float extrude_length_without_perspective = length(dist);\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\n\n v_width2 = vec2(outset, inset);\n}\n"},linePattern:{fragmentSource:"uniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform vec2 u_texsize;\nuniform float u_fade;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_normal;\nvarying vec2 v_width2;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_width2.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_width2.t) or when fading out\n // (v_width2.s)\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\n\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\n float y_a = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_a.y);\n float y_b = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_b.y);\n vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a));\n vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b));\n\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\n\n gl_FragColor = color * alpha * opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\n// the distance over which the line edge fades out.\n// Retina devices need a smaller distance to avoid aliasing.\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\n\nattribute vec4 a_pos_normal;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform vec2 u_gl_units_to_pixels;\n\nvarying vec2 v_normal;\nvarying vec2 v_width2;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n\nvoid main() {\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize lowp float offset\n #pragma mapbox: initialize mediump float gapwidth\n #pragma mapbox: initialize mediump float width\n\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n vec2 pos = a_pos_normal.xy;\n\n // x is 1 if it's a round cap, 0 otherwise\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = a_pos_normal.zw;\n v_normal = normal;\n\n // these transformations used to be applied in the JS and native code bases.\n // moved them into the shader for clarity and simplicity.\n gapwidth = gapwidth / 2.0;\n float halfwidth = width / 2.0;\n offset = -1.0 * offset;\n\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\n\n // calculate how much the perspective view squishes or stretches the extrude\n float extrude_length_without_perspective = length(dist);\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\n\n v_linesofar = a_linesofar;\n v_width2 = vec2(outset, inset);\n}\n"},lineSDF:{fragmentSource:"\nuniform sampler2D u_image;\nuniform float u_sdfgamma;\nuniform float u_mix;\n\nvarying vec2 v_normal;\nvarying vec2 v_width2;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize mediump float width\n #pragma mapbox: initialize lowp float floorwidth\n\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_width2.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_width2.t) or when fading out\n // (v_width2.s)\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\n\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\n alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);\n\n gl_FragColor = color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\n// the distance over which the line edge fades out.\n// Retina devices need a smaller distance to avoid aliasing.\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\n\nattribute vec4 a_pos_normal;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform vec2 u_patternscale_a;\nuniform float u_tex_y_a;\nuniform vec2 u_patternscale_b;\nuniform float u_tex_y_b;\nuniform vec2 u_gl_units_to_pixels;\n\nvarying vec2 v_normal;\nvarying vec2 v_width2;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 color\n #pragma mapbox: initialize lowp float blur\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize mediump float gapwidth\n #pragma mapbox: initialize lowp float offset\n #pragma mapbox: initialize mediump float width\n #pragma mapbox: initialize lowp float floorwidth\n\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n vec2 pos = a_pos_normal.xy;\n\n // x is 1 if it's a round cap, 0 otherwise\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = a_pos_normal.zw;\n v_normal = normal;\n\n // these transformations used to be applied in the JS and native code bases.\n // moved them into the shader for clarity and simplicity.\n gapwidth = gapwidth / 2.0;\n float halfwidth = width / 2.0;\n offset = -1.0 * offset;\n\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist =outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\n\n // calculate how much the perspective view squishes or stretches the extrude\n float extrude_length_without_perspective = length(dist);\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\n\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);\n\n v_width2 = vec2(outset, inset);\n}\n"},raster:{fragmentSource:"uniform float u_fade_t;\nuniform float u_opacity;\nuniform sampler2D u_image0;\nuniform sampler2D u_image1;\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nuniform float u_brightness_low;\nuniform float u_brightness_high;\n\nuniform float u_saturation_factor;\nuniform float u_contrast_factor;\nuniform vec3 u_spin_weights;\n\nvoid main() {\n\n // read and cross-fade colors from the main and parent tiles\n vec4 color0 = texture2D(u_image0, v_pos0);\n vec4 color1 = texture2D(u_image1, v_pos1);\n if (color0.a > 0.0) {\n color0.rgb = color0.rgb / color0.a;\n }\n if (color1.a > 0.0) {\n color1.rgb = color1.rgb / color1.a;\n }\n vec4 color = mix(color0, color1, u_fade_t);\n color.a *= u_opacity;\n vec3 rgb = color.rgb;\n\n // spin\n rgb = vec3(\n dot(rgb, u_spin_weights.xyz),\n dot(rgb, u_spin_weights.zxy),\n dot(rgb, u_spin_weights.yzx));\n\n // saturation\n float average = (color.r + color.g + color.b) / 3.0;\n rgb += (average - rgb) * u_saturation_factor;\n\n // contrast\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\n\n // brightness\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\n\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"uniform mat4 u_matrix;\nuniform vec2 u_tl_parent;\nuniform float u_scale_parent;\nuniform float u_buffer_scale;\n\nattribute vec2 a_pos;\nattribute vec2 a_texture_pos;\n\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n // We are using Int16 for texture position coordinates to give us enough precision for\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\n // as an arbitrarily high number to preserve adequate precision when rendering.\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\n // so math for modifying either is consistent.\n v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\n}\n"},symbolIcon:{fragmentSource:"uniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\n\n#pragma mapbox: define lowp float opacity\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * opacity;\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"const float PI = 3.141592653589793;\n\nattribute vec4 a_pos_offset;\nattribute vec4 a_data;\nattribute vec3 a_projected_pos;\n\nuniform bool u_is_size_zoom_constant;\nuniform bool u_is_size_feature_constant;\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\nuniform highp float u_size; // used when size is both zoom and feature constant\nuniform highp float u_camera_to_center_distance;\nuniform highp float u_pitch;\nuniform bool u_rotate_symbol;\nuniform highp float u_aspect_ratio;\nuniform highp float u_collision_y_stretch;\n\n#pragma mapbox: define lowp float opacity\n\nuniform mat4 u_matrix;\nuniform mat4 u_label_plane_matrix;\nuniform mat4 u_gl_coord_matrix;\n\nuniform bool u_is_text;\nuniform bool u_pitch_with_map;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n #pragma mapbox: initialize lowp float opacity\n\n vec2 a_pos = a_pos_offset.xy;\n vec2 a_offset = a_pos_offset.zw;\n\n vec2 a_tex = a_data.xy;\n vec2 a_size = a_data.zw;\n\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\n mediump float a_labelminzoom = angle_labelminzoom[1];\n\n float size;\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\n size = a_size[0] / 10.0;\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\n size = u_size;\n } else {\n size = u_size;\n }\n\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\n highp float camera_to_anchor_distance = projectedPoint.w;\n // See comments in symbol_sdf.vertex\n highp float distance_ratio = u_pitch_with_map ?\n camera_to_anchor_distance / u_camera_to_center_distance :\n u_camera_to_center_distance / camera_to_anchor_distance;\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\n\n size *= perspective_ratio;\n\n float fontScale = u_is_text ? size / 24.0 : size;\n\n highp float symbol_rotation = 0.0;\n if (u_rotate_symbol) {\n // See comments in symbol_sdf.vertex\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\n\n vec2 a = projectedPoint.xy / projectedPoint.w;\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\n\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\n }\n\n highp float angle_sin = sin(segment_angle + symbol_rotation);\n highp float angle_cos = cos(segment_angle + symbol_rotation);\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\n\n v_tex = a_tex / u_texsize;\n // See comments in symbol_sdf.vertex\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\n\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\n v_fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\n}\n"},symbolSDF:{fragmentSource:"#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\n\nuniform bool u_is_halo;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\n\nuniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\nuniform highp float u_gamma_scale;\nuniform bool u_is_text;\n\nvarying vec4 v_data0;\nvarying vec2 v_data1;\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 fill_color\n #pragma mapbox: initialize highp vec4 halo_color\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize lowp float halo_width\n #pragma mapbox: initialize lowp float halo_blur\n\n vec2 tex = v_data0.xy;\n vec2 fade_tex = v_data0.zw;\n float gamma_scale = v_data1.x;\n float size = v_data1.y;\n\n float fontScale = u_is_text ? size / 24.0 : size;\n\n lowp vec4 color = fill_color;\n highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);\n lowp float buff = (256.0 - 64.0) / 256.0;\n if (u_is_halo) {\n color = halo_color;\n gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);\n buff = (6.0 - halo_width / fontScale) / SDF_PX;\n }\n\n lowp float dist = texture2D(u_texture, tex).a;\n lowp float fade_alpha = texture2D(u_fadetexture, fade_tex).a;\n highp float gamma_scaled = gamma * gamma_scale;\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist) * fade_alpha;\n\n gl_FragColor = color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"const float PI = 3.141592653589793;\n\nattribute vec4 a_pos_offset;\nattribute vec4 a_data;\nattribute vec3 a_projected_pos;\n\n// contents of a_size vary based on the type of property value\n// used for {text,icon}-size.\n// For constants, a_size is disabled.\n// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.\n// For composite functions:\n// [ text-size(lowerZoomStop, feature),\n// text-size(upperZoomStop, feature) ]\nuniform bool u_is_size_zoom_constant;\nuniform bool u_is_size_feature_constant;\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\nuniform highp float u_size; // used when size is both zoom and feature constant\n\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\n\nuniform mat4 u_matrix;\nuniform mat4 u_label_plane_matrix;\nuniform mat4 u_gl_coord_matrix;\n\nuniform bool u_is_text;\nuniform bool u_pitch_with_map;\nuniform highp float u_pitch;\nuniform bool u_rotate_symbol;\nuniform highp float u_aspect_ratio;\nuniform highp float u_camera_to_center_distance;\nuniform highp float u_collision_y_stretch;\n\nuniform vec2 u_texsize;\n\nvarying vec4 v_data0;\nvarying vec2 v_data1;\n\nvoid main() {\n #pragma mapbox: initialize highp vec4 fill_color\n #pragma mapbox: initialize highp vec4 halo_color\n #pragma mapbox: initialize lowp float opacity\n #pragma mapbox: initialize lowp float halo_width\n #pragma mapbox: initialize lowp float halo_blur\n\n vec2 a_pos = a_pos_offset.xy;\n vec2 a_offset = a_pos_offset.zw;\n\n vec2 a_tex = a_data.xy;\n vec2 a_size = a_data.zw;\n\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\n mediump float a_labelminzoom = angle_labelminzoom[1];\n float size;\n\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\n size = a_size[0] / 10.0;\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\n size = u_size;\n } else {\n size = u_size;\n }\n\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\n highp float camera_to_anchor_distance = projectedPoint.w;\n // If the label is pitched with the map, layout is done in pitched space,\n // which makes labels in the distance smaller relative to viewport space.\n // We counteract part of that effect by multiplying by the perspective ratio.\n // If the label isn't pitched with the map, we do layout in viewport space,\n // which makes labels in the distance larger relative to the features around\n // them. We counteract part of that effect by dividing by the perspective ratio.\n highp float distance_ratio = u_pitch_with_map ?\n camera_to_anchor_distance / u_camera_to_center_distance :\n u_camera_to_center_distance / camera_to_anchor_distance;\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\n\n size *= perspective_ratio;\n\n float fontScale = u_is_text ? size / 24.0 : size;\n\n highp float symbol_rotation = 0.0;\n if (u_rotate_symbol) {\n // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units\n // To figure out that angle in projected space, we draw a short horizontal line in tile\n // space, project it, and measure its angle in projected space.\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\n\n vec2 a = projectedPoint.xy / projectedPoint.w;\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\n\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\n }\n\n highp float angle_sin = sin(segment_angle + symbol_rotation);\n highp float angle_cos = cos(segment_angle + symbol_rotation);\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\n float gamma_scale = gl_Position.w;\n\n vec2 tex = a_tex / u_texsize;\n // incidence_stretch is the ratio of how much y space a label takes up on a tile while drawn perpendicular to the viewport vs\n // how much space it would take up if it were drawn flat on the tile\n // Using law of sines, camera_to_anchor/sin(ground_angle) = camera_to_center/sin(incidence_angle)\n // sin(incidence_angle) = 1/incidence_stretch\n // Incidence angle 90 -> head on, sin(incidence_angle) = 1, no incidence stretch\n // Incidence angle 1 -> very oblique, sin(incidence_angle) =~ 0, lots of incidence stretch\n // ground_angle = u_pitch + PI/2 -> sin(ground_angle) = cos(u_pitch)\n // This 2D calculation is only exactly correct when gl_Position.x is in the center of the viewport,\n // but it's a close enough approximation for our purposes\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\n // incidence_stretch only applies to the y-axis, but without re-calculating the collision tile, we can't\n // adjust the size of only one axis. So, we do a crude approximation at placement time to get the aspect ratio\n // about right, and then do the rest of the adjustment here: there will be some extra padding on the x-axis,\n // but hopefully not too much.\n // Never make the adjustment less than 1.0: instead of allowing collisions on the x-axis, be conservative on\n // the y-axis.\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\n\n // Floor to 1/10th zoom to dodge precision issues that can cause partially hidden labels\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\n vec2 fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\n\n v_data0 = vec4(tex.x, tex.y, fade_tex.x, fade_tex.y);\n v_data1 = vec2(gamma_scale, size);\n}\n"}},n=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g;for(var o in i)!function(t){var e=i[t],r={};e.fragmentSource=e.fragmentSource.replace(n,function(t,e,i,n,o){return r[o]=!0,"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nvarying "+i+" "+n+" "+o+";\n#else\nuniform "+i+" "+n+" u_"+o+";\n#endif\n":"\n#ifdef HAS_UNIFORM_u_"+o+"\n "+i+" "+n+" "+o+" = u_"+o+";\n#endif\n"}),e.vertexSource=e.vertexSource.replace(n,function(t,e,i,n,o){var a="float"===n?"vec2":"vec4";return r[o]?"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float a_"+o+"_t;\nattribute "+i+" "+a+" a_"+o+";\nvarying "+i+" "+n+" "+o+";\n#else\nuniform "+i+" "+n+" u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+o+" = unpack_mix_"+a+"(a_"+o+", a_"+o+"_t);\n#else\n "+i+" "+n+" "+o+" = u_"+o+";\n#endif\n":"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float a_"+o+"_t;\nattribute "+i+" "+a+" a_"+o+";\n#else\nuniform "+i+" "+n+" u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+i+" "+n+" "+o+" = unpack_mix_"+a+"(a_"+o+", a_"+o+"_t);\n#else\n "+i+" "+n+" "+o+" = u_"+o+";\n#endif\n"})}(o);e.exports=i},{}],87:[function(t,e,r){"use strict";var i=t("./image_source"),n=t("../util/window"),o=function(t){function e(e,r,i,n){t.call(this,e,r,i,n),this.options=r,this.animate=void 0===r.animate||r.animate}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){this.canvas=this.canvas||n.document.getElementById(this.options.canvas);var t=this.canvas.getContext(this.options.contextType);if(!t)return this.fire("error",new Error("Canvas context not found."));if(this.context=t,this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions())return this.fire("error",new Error("Canvas dimensions cannot be less than or equal to zero."));var e;this.play=function(){void 0===e&&(e=this.map.style.animationLoop.set(1/0),this.map._rerender())},this.pause=function(){void 0!==e&&(e=this.map.style.animationLoop.cancel(e))},this._finishLoading()},e.prototype.getCanvas=function(){return this.canvas},e.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},e.prototype.onRemove=function(){this.pause()},e.prototype.readCanvas=function(t){var e=this;if(this.context instanceof CanvasRenderingContext2D)this.canvasData=this.context.getImageData(0,0,this.width,this.height);else if(this.context instanceof WebGLRenderingContext){var r=this.context,i=new Uint8Array(this.width*this.height*4);r.readPixels(0,0,this.width,this.height,r.RGBA,r.UNSIGNED_BYTE,i),this.secondaryContext||(this.secondaryContext=n.document.createElement("canvas").getContext("2d")),this.canvasData&&!t||(this.canvasData=this.secondaryContext.createImageData(this.width,this.height));for(var o=this.height-1,a=0;o>=0;o--,a++)e.canvasData.data.set(i.subarray(o*e.width*4,(o+1)*e.width*4),a*e.width*4)}},e.prototype.prepare=function(){var t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){if((this.animate||!this.canvasData||t)&&this.readCanvas(t),!this.canvasData)return void this.fire("error",new Error("Could not read canvas data."));this._prepareImage(this.map.painter.gl,this.canvasData,t)}},e.prototype.serialize=function(){return{type:"canvas",canvas:this.canvas,coordinates:this.coordinates}},e.prototype._hasInvalidDimensions=function(){for(var t=this,e=0,r=[t.canvas.width,t.canvas.height];e<r.length;e+=1){var i=r[e];if(isNaN(i)||i<=0)return!0}return!1},e}(i);e.exports=o},{"../util/window":204,"./image_source":91}],88:[function(t,e,r){"use strict";function i(t){var e=a.document.createElement("a");return e.href=t,e.href}var n=t("../util/evented"),o=t("../util/util"),a=t("../util/window"),s=t("../data/extent"),l=t("../util/ajax").ResourceType,u=t("../util/browser"),c=function(t){function e(e,r,i,n){t.call(this),this.id=e,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this.dispatcher=i,this.setEventedParent(n),this._data=r.data,this._options=o.extend({},r),void 0!==r.maxzoom&&(this.maxzoom=r.maxzoom),r.type&&(this.type=r.type);var a=s/this.tileSize;this.workerOptions=o.extend({source:this.id,cluster:r.cluster||!1,geojsonVtOptions:{buffer:(void 0!==r.buffer?r.buffer:128)*a,tolerance:(void 0!==r.tolerance?r.tolerance:.375)*a,extent:s,maxZoom:this.maxzoom},superclusterOptions:{maxZoom:void 0!==r.clusterMaxZoom?Math.min(r.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:s,radius:(r.clusterRadius||50)*a,log:!1}},r.workerOptions)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire("dataloading",{dataType:"source"}),this._updateWorkerData(function(e){if(e)return void t.fire("error",{error:e});t.fire("data",{dataType:"source",sourceDataType:"metadata"})})},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.setData=function(t){var e=this;return this._data=t,this.fire("dataloading",{dataType:"source"}),this._updateWorkerData(function(t){if(t)return e.fire("error",{error:t});e.fire("data",{dataType:"source",sourceDataType:"content"})}),this},e.prototype._updateWorkerData=function(t){var e=this,r=o.extend({},this.workerOptions),n=this._data;"string"==typeof n?r.request=this.map._transformRequest(i(n),l.Source):r.data=JSON.stringify(n),this.workerID=this.dispatcher.send(this.type+".loadData",r,function(r){e._loaded=!0,t(r)},this.workerID)},e.prototype.loadTile=function(t,e){var r=this,i=t.workerID&&"expired"!==t.state?"reloadTile":"loadTile",n={type:this.type,uid:t.uid,coord:t.coord,zoom:t.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:u.devicePixelRatio,overscaling:t.coord.z>this.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(t),showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send(i,n,function(i,n){if(t.unloadVectorData(),!t.aborted)return i?e(i):(t.loadVectorData(n,r.map.painter),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(r)),e(null))},this.workerID)},e.prototype.abortTile=function(t){t.aborted=!0},e.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send("removeTile",{uid:t.uid,type:this.type,source:this.id},function(){},t.workerID)},e.prototype.onRemove=function(){this.dispatcher.broadcast("removeSource",{type:this.type,source:this.id},function(){})},e.prototype.serialize=function(){return o.extend({},this._options,{type:this.type,data:this._data})},e}(n);e.exports=c},{"../data/extent":48,"../util/ajax":201,"../util/browser":202,"../util/evented":210,"../util/util":223,"../util/window":204}],89:[function(t,e,r){"use strict";function i(t,e){var r=t.source,i=t.coord;if(!this._geoJSONIndexes[r])return e(null,null);var n=this._geoJSONIndexes[r].getTile(Math.min(i.z,t.maxZoom),i.x,i.y);if(!n)return e(null,null);var o=new a(n.features),l=s(o);0===l.byteOffset&&l.byteLength===l.buffer.byteLength||(l=new Uint8Array(l)),e(null,{vectorTile:o,rawData:l.buffer})}var n=t("../util/ajax"),o=t("geojson-rewind"),a=t("./geojson_wrapper"),s=t("vt-pbf"),l=t("supercluster"),u=t("geojson-vt"),c=t("./vector_tile_worker_source"),p=function(t){function e(e,r,n){t.call(this,e,r,i),n&&(this.loadGeoJSON=n),this._geoJSONIndexes={}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.loadData=function(t,e){var r=this;this.loadGeoJSON(t,function(i,n){if(i||!n)return e(i);if("object"!=typeof n)return e(new Error("Input data is not a valid GeoJSON object."));o(n,!0);try{r._geoJSONIndexes[t.source]=t.cluster?l(t.superclusterOptions).load(n.features):u(n,t.geojsonVtOptions)}catch(i){return e(i)}r.loaded[t.source]={},e(null)})},e.prototype.reloadTile=function(e,r){var i=this.loaded[e.source],n=e.uid;return i&&i[n]?t.prototype.reloadTile.call(this,e,r):this.loadTile(e,r)},e.prototype.loadGeoJSON=function(t,e){if(t.request)n.getJSON(t.request,e);else{if("string"!=typeof t.data)return e(new Error("Input data is not a valid GeoJSON object."));try{return e(null,JSON.parse(t.data))}catch(t){return e(new Error("Input data is not a valid GeoJSON object."))}}},e.prototype.removeSource=function(t){this._geoJSONIndexes[t.source]&&delete this._geoJSONIndexes[t.source]},e}(c);e.exports=p},{"../util/ajax":201,"./geojson_wrapper":90,"./vector_tile_worker_source":103,"geojson-rewind":13,"geojson-vt":17,supercluster:32,"vt-pbf":37}],90:[function(t,e,r){"use strict";var i=t("@mapbox/point-geometry"),n=t("@mapbox/vector-tile").VectorTileFeature.prototype.toGeoJSON,o=t("../data/extent"),a=function(t){this._feature=t,this.extent=o,this.type=t.type,this.properties=t.tags,"id"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10))};a.prototype.loadGeometry=function(){var t=this;if(1===this._feature.type){for(var e=[],r=0,n=t._feature.geometry;r<n.length;r+=1){var o=n[r];e.push([new i(o[0],o[1])])}return e}for(var a=[],s=0,l=t._feature.geometry;s<l.length;s+=1){for(var u=l[s],c=[],p=0,h=u;p<h.length;p+=1){var f=h[p];c.push(new i(f[0],f[1]))}a.push(c)}return a},a.prototype.toGeoJSON=function(t,e,r){return n.call(this,t,e,r)};var s=function(t){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=o,this.length=t.length,this._features=t};s.prototype.feature=function(t){return new a(this._features[t])},e.exports=s},{"../data/extent":48,"@mapbox/point-geometry":2,"@mapbox/vector-tile":6}],91:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../util/window"),o=t("./tile_coord"),a=t("../geo/lng_lat"),s=t("@mapbox/point-geometry"),l=t("../util/evented"),u=t("../util/ajax"),c=t("../util/browser"),p=t("../data/extent"),h=t("../data/raster_bounds_array"),f=t("../gl/vertex_buffer"),d=t("../render/vertex_array_object"),m=function(t){function e(e,r,i,n){t.call(this),this.id=e,this.dispatcher=i,this.coordinates=r.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(n),this.options=r,this.textureLoaded=!1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire("dataloading",{dataType:"source"}),this.url=this.options.url,u.getImage(this.map._transformRequest(this.url,u.ResourceType.Image),function(e,r){e?t.fire("error",{error:e}):r&&(t.image=c.getImageData(r),t._finishLoading())})},e.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire("data",{dataType:"source",sourceDataType:"metadata"}))},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.setCoordinates=function(t){this.coordinates=t;var e=this.map,r=t.map(function(t){return e.transform.locationCoordinate(a.convert(t)).zoomTo(0)}),n=this.centerCoord=i.getCoordinatesCenter(r);n.column=Math.floor(n.column),n.row=Math.floor(n.row),this.coord=new o(n.zoom,n.column,n.row),this.minzoom=this.maxzoom=n.zoom;var l=r.map(function(t){var e=t.zoomTo(n.zoom);return new s(Math.round((e.column-n.column)*p),Math.round((e.row-n.row)*p))});return this._boundsArray=new h,this._boundsArray.emplaceBack(l[0].x,l[0].y,0,0),this._boundsArray.emplaceBack(l[1].x,l[1].y,p,0),this._boundsArray.emplaceBack(l[3].x,l[3].y,0,p),this._boundsArray.emplaceBack(l[2].x,l[2].y,p,p),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire("data",{dataType:"source",sourceDataType:"content"}),this},e.prototype.prepare=function(){0!==Object.keys(this.tiles).length&&this.image&&this._prepareImage(this.map.painter.gl,this.image)},e.prototype._prepareImage=function(t,e,r){var i=this;this.boundsBuffer||(this.boundsBuffer=new f(t,this._boundsArray)),this.boundsVAO||(this.boundsVAO=new d),this.textureLoaded?r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e):(e instanceof n.HTMLVideoElement||e instanceof n.ImageData)&&(t.bindTexture(t.TEXTURE_2D,this.texture),t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,e)):(this.textureLoaded=!0,this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e));for(var o in i.tiles){var a=i.tiles[o];"loaded"!==a.state&&(a.state="loaded",a.texture=i.texture)}},e.prototype.loadTile=function(t,e){this.coord&&this.coord.toString()===t.coord.toString()?(this.tiles[String(t.coord.w)]=t,t.buckets={},e(null)):(t.state="errored",e(null))},e.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},e}(l);e.exports=m},{"../data/extent":48,"../data/raster_bounds_array":54,"../geo/lng_lat":58,"../gl/vertex_buffer":62,"../render/vertex_array_object":84,"../util/ajax":201,"../util/browser":202,"../util/evented":210,"../util/util":223,"../util/window":204,"./tile_coord":101,"@mapbox/point-geometry":2}],92:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../util/ajax"),o=t("../util/browser"),a=t("../util/mapbox").normalizeSourceURL;e.exports=function(t,e,r){var s=function(t,e){if(t)return r(t);if(e){var n=i.pick(e,["tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds"]);e.vector_layers&&(n.vectorLayers=e.vector_layers,n.vectorLayerIds=n.vectorLayers.map(function(t){return t.id})),r(null,n)}};t.url?n.getJSON(e(a(t.url),n.ResourceType.Source),s):o.frame(function(){return s(null,t)})}},{"../util/ajax":201,"../util/browser":202,"../util/mapbox":217,"../util/util":223}],93:[function(t,e,r){"use strict";var i=t("../data/extent");e.exports=function(t,e,r){return e*(i/(t.tileSize*Math.pow(2,r-t.coord.z)))}},{"../data/extent":48}],94:[function(t,e,r){"use strict";function i(t,e){var r=t.coord,i=e.coord;return r.z-i.z||r.y-i.y||r.w-i.w||r.x-i.x}function n(t){for(var e={},r={},i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.queryResults,s=o.wrappedTileID,l=r[s]=r[s]||{};for(var u in a)for(var c=a[u],p=l[u]=l[u]||{},h=e[u]=e[u]||[],f=0,d=c;f<d.length;f+=1){var m=d[f];p[m.featureIndex]||(p[m.featureIndex]=!0,h.push(m.feature))}}return e}var o=t("./tile_coord");r.rendered=function(t,e,r,o,a,s){var l=t.tilesIn(r);l.sort(i);for(var u=[],c=0,p=l;c<p.length;c+=1){var h=p[c];u.push({wrappedTileID:h.coord.wrapped().id,queryResults:h.tile.queryRenderedFeatures(e,h.queryGeometry,h.scale,o,s)})}return n(u)},r.source=function(t,e){for(var r=t.getRenderableIds().map(function(e){return t.getTileByID(e)}),i=[],n={},a=0;a<r.length;a++){var s=r[a],l=new o(Math.min(s.sourceMaxZoom,s.coord.z),s.coord.x,s.coord.y,0).id;n[l]||(n[l]=!0,s.querySourceFeatures(i,e))}return i}},{"./tile_coord":101}],95:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../util/ajax"),o=t("../util/evented"),a=t("./load_tilejson"),s=t("../util/mapbox").normalizeTileURL,l=t("./tile_bounds"),u=function(t){function e(e,r,n,o){t.call(this),this.id=e,this.dispatcher=n,this.setEventedParent(o),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=i.extend({},r),i.extend(this,i.pick(r,["url","scheme","tileSize"]))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire("dataloading",{dataType:"source"}),a(this._options,this.map._transformRequest,function(e,r){e?t.fire("error",e):r&&(i.extend(t,r),r.bounds&&(t.tileBounds=new l(r.bounds,t.minzoom,t.maxzoom)),t.fire("data",{dataType:"source",sourceDataType:"metadata"}),t.fire("data",{dataType:"source",sourceDataType:"content"}))})},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.serialize=function(){return i.extend({},this._options)},e.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t,this.maxzoom)},e.prototype.loadTile=function(t,e){var r=this,i=s(t.coord.url(this.tiles,null,this.scheme),this.url,this.tileSize);t.request=n.getImage(this.map._transformRequest(i,n.ResourceType.Tile),function(i,n){if(delete t.request,t.aborted)r.state="unloaded",e(null);else if(i)r.state="errored",e(i);else if(n){r.map._refreshExpiredTiles&&t.setExpiryData(n),delete n.cacheControl,delete n.expires;var o=r.map.painter.gl;t.texture=r.map.painter.getTileTexture(n.width),t.texture?(o.bindTexture(o.TEXTURE_2D,t.texture),o.texSubImage2D(o.TEXTURE_2D,0,0,0,o.RGBA,o.UNSIGNED_BYTE,n)):(t.texture=o.createTexture(),o.bindTexture(o.TEXTURE_2D,t.texture),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR_MIPMAP_NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),r.map.painter.extTextureFilterAnisotropic&&o.texParameterf(o.TEXTURE_2D,r.map.painter.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,r.map.painter.extTextureFilterAnisotropicMax),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,n),t.texture.size=n.width),o.generateMipmap(o.TEXTURE_2D),t.state="loaded",e(null)}})},e.prototype.abortTile=function(t){t.request&&(t.request.abort(),delete t.request)},e.prototype.unloadTile=function(t){t.texture&&this.map.painter.saveTileTexture(t.texture)},e}(o);e.exports=u},{"../util/ajax":201,"../util/evented":210,"../util/mapbox":217,"../util/util":223,"./load_tilejson":92,"./tile_bounds":100}],96:[function(t,e,r){"use strict";var i=t("../util/ajax"),n=t("../util/evented"),o=t("../util/window"),a=!1,s=null;e.exports.evented=new n,e.exports.registerForPluginAvailability=function(t){return s?t({pluginBlobURL:s,errorCallback:e.exports.errorCallback}):e.exports.evented.once("pluginAvailable",t),t},e.exports.createBlobURL=function(t){return o.URL.createObjectURL(new o.Blob([t.data],{type:"text/javascript"}))},e.exports.clearRTLTextPlugin=function(){a=!1,s=null},e.exports.setRTLTextPlugin=function(t,r){if(a)throw new Error("setRTLTextPlugin cannot be called multiple times.");a=!0,e.exports.errorCallback=r,i.getArrayBuffer({url:t},function(t,i){t?r(t):i&&(s=e.exports.createBlobURL(i),e.exports.evented.fire("pluginAvailable",{pluginBlobURL:s,errorCallback:r}))})},e.exports.applyArabicShaping=null,e.exports.processBidirectionalText=null},{"../util/ajax":201,"../util/evented":210,"../util/window":204}],97:[function(t,e,r){"use strict";var i=t("../util/util"),n={vector:t("../source/vector_tile_source"),raster:t("../source/raster_tile_source"),geojson:t("../source/geojson_source"),video:t("../source/video_source"),image:t("../source/image_source"),canvas:t("../source/canvas_source")};r.create=function(t,e,r,o){var a=new n[e.type](t,e,r,o);if(a.id!==t)throw new Error("Expected Source id to be "+t+" instead of "+a.id);return i.bindAll(["load","abort","unload","serialize","prepare"],a),a},r.getType=function(t){return n[t]},r.setType=function(t,e){n[t]=e}},{"../source/canvas_source":87,"../source/geojson_source":88,"../source/image_source":91,"../source/raster_tile_source":95,"../source/vector_tile_source":102,"../source/video_source":104,"../util/util":223}],98:[function(t,e,r){"use strict";function i(t,e,r){var i=r.zoomTo(Math.min(t.z,e));return new d((i.column-(t.x+t.w*Math.pow(2,t.z)))*f,(i.row-t.y)*f)}function n(t,e){return t%32-e%32}function o(t){return"raster"===t||"image"===t||"video"===t}var a=t("./source").create,s=t("./tile"),l=t("../util/evented"),u=t("./tile_coord"),c=t("../util/lru_cache"),p=t("../geo/coordinate"),h=t("../util/util"),f=t("../data/extent"),d=t("@mapbox/point-geometry"),m=function(t){function e(e,r,i){var n=this;t.call(this),this.id=e,this.dispatcher=i,this.on("data",function(t){"source"===t.dataType&&"metadata"===t.sourceDataType&&(n._sourceLoaded=!0),n._sourceLoaded&&!n._paused&&"source"===t.dataType&&"content"===t.sourceDataType&&(n.reload(),n.transform&&n.update(n.transform))}),this.on("error",function(){n._sourceErrored=!0}),this._source=a(e,r,i,this),this._tiles={},this._cache=new c(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._isIdRenderable=this._isIdRenderable.bind(this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.onAdd=function(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t)},e.prototype.onRemove=function(t){this._source&&this._source.onRemove&&this._source.onRemove(t)},e.prototype.loaded=function(){var t=this;if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;for(var e in t._tiles){var r=t._tiles[e];if("loaded"!==r.state&&"errored"!==r.state)return!1}return!0},e.prototype.getSource=function(){return this._source},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){if(this._paused){var t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform)}},e.prototype._loadTile=function(t,e){return this._source.loadTile(t,e)},e.prototype._unloadTile=function(t){if(this._source.unloadTile)return this._source.unloadTile(t)},e.prototype._abortTile=function(t){if(this._source.abortTile)return this._source.abortTile(t)},e.prototype.serialize=function(){return this._source.serialize()},e.prototype.prepare=function(t){var e=this;this._source.prepare&&this._source.prepare();for(var r in e._tiles)e._tiles[r].upload(t)},e.prototype.getIds=function(){return Object.keys(this._tiles).map(Number).sort(n)},e.prototype.getRenderableIds=function(){return this.getIds().filter(this._isIdRenderable)},e.prototype._isIdRenderable=function(t){return this._tiles[t].hasData()&&!this._coveredTiles[t]},e.prototype.reload=function(){var t=this;if(this._paused)return void(this._shouldReloadOnResume=!0);this._cache.reset();for(var e in t._tiles)t._reloadTile(e,"reloading")},e.prototype._reloadTile=function(t,e){var r=this._tiles[t];r&&("loading"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)))},e.prototype._tileLoaded=function(t,e,r,i){if(i)return t.state="errored",void(404!==i.status?this._source.fire("error",{tile:t,error:i}):this.update(this.transform));t.timeAdded=(new Date).getTime(),"expired"===r&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(e,t),this._source.fire("data",{dataType:"source",tile:t,coord:t.coord}),this.map&&(this.map.painter.tileExtentVAO.vao=null)},e.prototype.getTile=function(t){return this.getTileByID(t.id)},e.prototype.getTileByID=function(t){return this._tiles[t]},e.prototype.getZoom=function(t){return t.zoom+t.scaleZoom(t.tileSize/this._source.tileSize)},e.prototype._findLoadedChildren=function(t,e,r){var i=this,n=!1;for(var o in i._tiles){var a=i._tiles[o];if(!(r[o]||!a.hasData()||a.coord.z<=t.z||a.coord.z>e)){var s=Math.pow(2,Math.min(a.coord.z,i._source.maxzoom)-Math.min(t.z,i._source.maxzoom));if(Math.floor(a.coord.x/s)===t.x&&Math.floor(a.coord.y/s)===t.y)for(r[o]=!0,n=!0;a&&a.coord.z-1>t.z;){var l=a.coord.parent(i._source.maxzoom);if(!l)break;(a=i._tiles[l.id])&&a.hasData()&&(delete r[o],r[l.id]=!0)}}}return n},e.prototype.findLoadedParent=function(t,e,r){for(var i=this,n=t.z-1;n>=e;n--){var o=t.parent(i._source.maxzoom);if(!o)return;t=o;var a=String(t.id),s=i._tiles[a];if(s&&s.hasData())return r[a]=!0,s;if(i._cache.has(a))return r[a]=!0,i._cache.getWithoutRemoving(a)}},e.prototype.updateCacheSize=function(t){var e=Math.ceil(t.width/t.tileSize)+1,r=Math.ceil(t.height/t.tileSize)+1,i=e*r,n=Math.floor(5*i),o="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,n):n;this._cache.setMaxSize(o)},e.prototype.update=function(t){var r=this;if(this.transform=t,this._sourceLoaded&&!this._paused){this.updateCacheSize(t),this._coveredTiles={};var i;this.used?this._source.coord?i=t.getVisibleWrappedCoordinates(this._source.coord):(i=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(t){return r._source.hasTile(t)}))):i=[];var n=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(t)),a=Math.max(n-e.maxOverzooming,this._source.minzoom),s=Math.max(n+e.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,n),c={};if(o(this._source.type))for(var p=Object.keys(l),f=0;f<p.length;f++){var d=p[f],m=u.fromID(+d),v=r._tiles[d];if(v&&(void 0===v.fadeEndTime||v.fadeEndTime>=Date.now())){r._findLoadedChildren(m,s,l)&&(l[d]=!0);var y=r.findLoadedParent(m,a,c);y&&r._addTile(y.coord)}}var g;for(g in c)l[g]||(r._coveredTiles[g]=!0);for(g in c)l[g]=!0;for(var _=h.keysDifference(this._tiles,l),x=0;x<_.length;x++)r._removeTile(_[x])}},e.prototype._updateRetainedTiles=function(t,r){var i,n,o,a,s=this,l={},u={},c=Math.max(r-e.maxOverzooming,this._source.minzoom);for(i=0;i<t.length;i++){n=t[i],o=s._addTile(n);var p=!1;if(o.hasData())l[n.id]=!0;else{if(p=o.wasRequested(),l[n.id]=!0,a=!0,r+1>s._source.maxzoom){var h=n.children(s._source.maxzoom)[0],f=s.getTile(h);f&&f.hasData()?l[h.id]=!0:a=!1}else for(var d=n.children(s._source.maxzoom),m=0;m<d.length;m++){var v=d[m],y=v?s.getTile(v):null;y&&y.hasData()?l[v.id]=!0:a=!1}if(!a)for(var g=r-1;g>=c;--g){var _=n.scaledTo(g,s._source.maxzoom);if(u[_.id])break;if(u[_.id]=!0,o=s.getTile(_),!o&&p&&(o=s._addTile(_)),o&&(l[_.id]=!0,p=o.wasRequested(),o.hasData()))break}}}return l},e.prototype._addTile=function(t){var e=this._tiles[t.id];if(e)return e;(e=this._cache.get(t.id))&&(e.redoPlacement(this._source),this._cacheTimers[t.id]&&(clearTimeout(this._cacheTimers[t.id]),delete this._cacheTimers[t.id],this._setTileReloadTimer(t.id,e)));var r=Boolean(e);if(!r){var i=t.z,n=i>this._source.maxzoom?Math.pow(2,i-this._source.maxzoom):1;e=new s(t,this._source.tileSize*n,this._source.maxzoom),this._loadTile(e,this._tileLoaded.bind(this,e,t.id,e.state))}return e?(e.uses++,this._tiles[t.id]=e,r||this._source.fire("dataloading",{tile:e,coord:e.coord,dataType:"source"}),e):null},e.prototype._setTileReloadTimer=function(t,e){var r=this,i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout(function(){r._reloadTile(t,"expired"),delete r._timers[t]},i))},e.prototype._setCacheInvalidationTimer=function(t,e){var r=this,i=e.getExpiryTimeout();i&&(this._cacheTimers[t]=setTimeout(function(){r._cache.remove(t),delete r._cacheTimers[t]},i))},e.prototype._removeTile=function(t){var e=this._tiles[t];if(e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),!(e.uses>0)))if(e.stopPlacementThrottler(),e.hasData()){var r=e.coord.wrapped().id;this._cache.add(r,e),this._setCacheInvalidationTimer(r,e)}else e.aborted=!0,this._abortTile(e),this._unloadTile(e)},e.prototype.clearTiles=function(){var t=this;this._shouldReloadOnResume=!1,this._paused=!1;for(var e in t._tiles)t._removeTile(e);this._cache.reset()},e.prototype.tilesIn=function(t){for(var e=this,r=[],n=this.getIds(),o=1/0,a=1/0,s=-1/0,l=-1/0,c=t[0].zoom,h=0;h<t.length;h++){var d=t[h];o=Math.min(o,d.column),a=Math.min(a,d.row),s=Math.max(s,d.column),l=Math.max(l,d.row)}for(var m=0;m<n.length;m++){var v=e._tiles[n[m]],y=u.fromID(n[m]),g=[i(y,v.sourceMaxZoom,new p(o,a,c)),i(y,v.sourceMaxZoom,new p(s,l,c))];if(g[0].x<f&&g[0].y<f&&g[1].x>=0&&g[1].y>=0){for(var _=[],x=0;x<t.length;x++)_.push(i(y,v.sourceMaxZoom,t[x]));r.push({tile:v,coord:y,queryGeometry:[_],scale:Math.pow(2,e.transform.zoom-v.coord.z)})}}return r},e.prototype.redoPlacement=function(){for(var t=this,e=this.getIds(),r=0;r<e.length;r++)t.getTileByID(e[r]).redoPlacement(t._source)},e.prototype.getVisibleCoordinates=function(){for(var t=this,e=this.getRenderableIds().map(u.fromID),r=0,i=e;r<i.length;r+=1){var n=i[r];n.posMatrix=t.transform.calculatePosMatrix(n,t._source.maxzoom)}return e},e}(l);m.maxOverzooming=10,m.maxUnderzooming=3,e.exports=m},{"../data/extent":48,"../geo/coordinate":57,"../util/evented":210,"../util/lru_cache":216,"../util/util":223,"./source":97,"./tile":99,"./tile_coord":101,"@mapbox/point-geometry":2}],99:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../data/bucket").deserialize,o=t("../data/bucket/symbol_bucket"),a=t("../data/feature_index"),s=t("@mapbox/vector-tile"),l=t("pbf"),u=t("../util/vectortile_to_geojson"),c=t("../style-spec/feature_filter"),p=t("../symbol/collision_tile"),h=t("../symbol/collision_box"),f=t("../util/throttler"),d=t("../render/texture"),m=function(t,e,r){this.coord=t,this.uid=i.uniqueId(),this.uses=0,this.tileSize=e,this.sourceMaxZoom=r,this.buckets={},this.expirationTime=null,this.expiredRequestCount=0,this.state="loading",this.placementThrottler=new f(300,this._immediateRedoPlacement.bind(this))};m.prototype.registerFadeDuration=function(t,e){var r=e+this.timeAdded;r<Date.now()||this.fadeEndTime&&r<this.fadeEndTime||(this.fadeEndTime=r,t.set(this.fadeEndTime-Date.now()))},m.prototype.wasRequested=function(){return"errored"===this.state||"loaded"===this.state||"reloading"===this.state},m.prototype.loadVectorData=function(t,e){this.hasData()&&this.unloadVectorData(),this.state="loaded",t&&(t.rawTileData&&(this.rawTileData=t.rawTileData),this.collisionBoxArray=new h(t.collisionBoxArray),this.collisionTile=p.deserialize(t.collisionTile,this.collisionBoxArray),this.featureIndex=a.deserialize(t.featureIndex,this.rawTileData,this.collisionTile),this.buckets=n(t.buckets,e.style),t.iconAtlasImage&&(this.iconAtlasImage=t.iconAtlasImage),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage))},m.prototype.reloadSymbolData=function(t,e){var r=this;if("unloaded"!==this.state){this.collisionTile=p.deserialize(t.collisionTile,this.collisionBoxArray),this.featureIndex&&this.featureIndex.setCollisionTile(this.collisionTile);for(var a in r.buckets){var s=r.buckets[a];s instanceof o&&(s.destroy(),delete r.buckets[a])}i.extend(this.buckets,n(t.buckets,e)),t.iconAtlasImage&&(this.iconAtlasImage=t.iconAtlasImage),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}},m.prototype.unloadVectorData=function(){var t=this;for(var e in t.buckets)t.buckets[e].destroy();this.buckets={},this.iconAtlasTexture&&this.iconAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.collisionBoxArray=null,this.collisionTile=null,this.featureIndex=null,this.state="unloaded"},m.prototype.redoPlacement=function(t){if("vector"===t.type||"geojson"===t.type){if("loaded"!==this.state)return void(this.redoWhenDone=!0);if(this.collisionTile){var e=t.map.transform.cameraToTileDistance(this);if(this.angle===t.map.transform.angle&&this.pitch===t.map.transform.pitch&&this.showCollisionBoxes===t.map.showCollisionBoxes){if(this.cameraToTileDistance===e&&this.cameraToCenterDistance===t.map.transform.cameraToCenterDistance)return;if(this.pitch<25)return this.cameraToTileDistance=e,void(this.cameraToCenterDistance=t.map.transform.cameraToCenterDistance)}this.angle=t.map.transform.angle,this.pitch=t.map.transform.pitch,this.cameraToCenterDistance=t.map.transform.cameraToCenterDistance,this.cameraToTileDistance=e,this.showCollisionBoxes=t.map.showCollisionBoxes,this.placementSource=t,this.state="reloading",this.placementThrottler.invoke()}}},m.prototype._immediateRedoPlacement=function(){var t=this;this.placementSource.dispatcher.send("redoPlacement",{type:this.placementSource.type,uid:this.uid,source:this.placementSource.id,angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,showCollisionBoxes:this.showCollisionBoxes},function(e,r){"reloading"===t.state&&(t.state="loaded",t.reloadSymbolData(r,t.placementSource.map.style),t.placementSource.fire("data",{tile:t,coord:t.coord,dataType:"source"}),t.placementSource.map&&(t.placementSource.map.painter.tileExtentVAO.vao=null),t.redoWhenDone&&(t.state="reloading",t.redoWhenDone=!1,t._immediateRedoPlacement()))},this.workerID)},m.prototype.getBucket=function(t){return this.buckets[t.id]},m.prototype.upload=function(t){var e=this;for(var r in e.buckets){var i=e.buckets[r];i.uploaded||(i.upload(t),i.uploaded=!0)}this.iconAtlasImage&&(this.iconAtlasTexture=new d(t,this.iconAtlasImage,t.RGBA),this.iconAtlasImage=null),this.glyphAtlasImage&&(this.glyphAtlasTexture=new d(t,this.glyphAtlasImage,t.ALPHA),this.glyphAtlasImage=null)},m.prototype.queryRenderedFeatures=function(t,e,r,i,n){var o=this;if(!this.featureIndex)return{};var a=0;for(var s in t){var l=o.getBucket(t[s]);l&&(a=Math.max(a,t[s].queryRadius(l)))}return this.featureIndex.query({queryGeometry:e,bearing:n,params:i,scale:r,additionalRadius:a,tileSize:this.tileSize},t)},m.prototype.querySourceFeatures=function(t,e){var r=this;if(this.rawTileData){this.vtLayers||(this.vtLayers=new s.VectorTile(new l(this.rawTileData)).layers);var i=e?e.sourceLayer:"",n=this.vtLayers._geojsonTileLayer||this.vtLayers[i];if(n)for(var o=c(e&&e.filter),a={z:this.coord.z,x:this.coord.x,y:this.coord.y},p=0;p<n.length;p++){var h=n.feature(p);if(o(h)){var f=new u(h,r.coord.z,r.coord.x,r.coord.y);f.tile=a,t.push(f)}}}},m.prototype.hasData=function(){return"loaded"===this.state||"reloading"===this.state||"expired"===this.state},m.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=i.parseCacheControl(t.cacheControl);r["max-age"]&&(this.expirationTime=Date.now()+1e3*r["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var n=Date.now(),o=!1;if(this.expirationTime>n)o=!1;else if(e)if(this.expirationTime<e)o=!0;else{var a=this.expirationTime-e;a?this.expirationTime=n+Math.max(a,3e4):o=!0}else o=!0;o?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0}},m.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},m.prototype.stopPlacementThrottler=function(){this.placementThrottler.stop(),"reloading"===this.state&&(this.state="loaded")},e.exports=m},{"../data/bucket":42,"../data/bucket/symbol_bucket":47,"../data/feature_index":49,"../render/texture":83,"../style-spec/feature_filter":110,"../symbol/collision_box":170,"../symbol/collision_tile":172,"../util/throttler":221,"../util/util":223,"../util/vectortile_to_geojson":224,"@mapbox/vector-tile":6,pbf:29}],100:[function(t,e,r){"use strict";var i=t("../geo/lng_lat_bounds"),n=t("../util/util").clamp,o=function(t,e,r){this.bounds=i.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=r||24};o.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},o.prototype.contains=function(t,e){var r=e?Math.min(t.z,e):t.z,i={minX:Math.floor(this.lngX(this.bounds.getWest(),r)),minY:Math.floor(this.latY(this.bounds.getNorth(),r)),maxX:Math.ceil(this.lngX(this.bounds.getEast(),r)),maxY:Math.ceil(this.latY(this.bounds.getSouth(),r))};return t.x>=i.minX&&t.x<i.maxX&&t.y>=i.minY&&t.y<i.maxY},o.prototype.lngX=function(t,e){return(t+180)*(Math.pow(2,e)/360)},o.prototype.latY=function(t,e){var r=n(Math.sin(Math.PI/180*t),-.9999,.9999),i=Math.pow(2,e)/(2*Math.PI);return Math.pow(2,e-1)+.5*Math.log((1+r)/(1-r))*-i},e.exports=o},{"../geo/lng_lat_bounds":59,"../util/util":223}],101:[function(t,e,r){"use strict";function i(t,e){if(t.row>e.row){var r=t;t=e,e=r}return{x0:t.column,y0:t.row,x1:e.column,y1:e.row,dx:e.column-t.column,dy:e.row-t.row}}function n(t,e,r,i,n){var o=Math.max(r,Math.floor(e.y0)),a=Math.min(i,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx<e.x1:t.x1-e.dy/t.dy*t.dx<e.x0){var s=t;t=e,e=s}for(var l=t.dx/t.dy,u=e.dx/e.dy,c=t.dx>0,p=e.dx<0,h=o;h<a;h++){var f=l*Math.max(0,Math.min(t.dy,h+c-t.y0))+t.x0,d=u*Math.max(0,Math.min(e.dy,h+p-e.y0))+e.x0;n(Math.floor(d),Math.ceil(f),h)}}function o(t,e,r,o,a,s){var l,u=i(t,e),c=i(e,r),p=i(r,t);u.dy>c.dy&&(l=u,u=c,c=l),u.dy>p.dy&&(l=u,u=p,p=l),c.dy>p.dy&&(l=c,c=p,p=l),u.dy&&n(p,u,o,a,s),c.dy&&n(p,c,o,a,s)}function a(t,e,r){for(var i,n="",o=t;o>0;o--)i=1<<o-1,n+=(e&i?1:0)+(r&i?2:0);return n}var s=t("@mapbox/whoots-js"),l=t("../geo/coordinate"),u=function(t,e,r,i){(void 0===i||isNaN(i))&&(i=0),this.z=+t,this.x=+e,this.y=+r,this.w=+i,(i*=2)<0&&(i=-1*i-1);var n=1<<this.z;this.id=32*(n*n*i+n*this.y+this.x)+this.z,this.posMatrix=null};u.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y},u.prototype.toCoordinate=function(t){var e=Math.min(this.z,void 0===t?this.z:t),r=Math.pow(2,e),i=this.y,n=this.x+r*this.w;return new l(n,i,e)},u.prototype.url=function(t,e,r){var i=s.getTileBBox(this.x,this.y,this.z),n=a(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(Math.min(this.z,e||this.z))).replace("{x}",String(this.x)).replace("{y}",String("tms"===r?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",n).replace("{bbox-epsg-3857}",i)},u.prototype.parent=function(t){return 0===this.z?null:this.z>t?new u(this.z-1,this.x,this.y,this.w):new u(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)},u.prototype.wrapped=function(){return new u(this.z,this.x,this.y,0)},u.prototype.children=function(t){if(this.z>=t)return[new u(this.z+1,this.x,this.y,this.w)];var e=this.z+1,r=2*this.x,i=2*this.y;return[new u(e,r,i,this.w),new u(e,r+1,i,this.w),new u(e,r,i+1,this.w),new u(e,r+1,i+1,this.w)]},u.prototype.scaledTo=function(t,e){return this.z>e?new u(t,this.x,this.y,this.w):t<=this.z?new u(t,this.x>>this.z-t,this.y>>this.z-t,this.w):new u(t,this.x<<t-this.z,this.y<<t-this.z,this.w)},u.cover=function(t,e,r,i){function n(t,e,n){var o,l,c,p;if(n>=0&&n<=a)for(o=t;o<e;o++)l=Math.floor(o/a),c=(o%a+a)%a,0!==l&&!0!==i||(p=new u(r,c,n,l),s[p.id]=p)}void 0===i&&(i=!0);var a=1<<t,s={};return o(e[0],e[1],e[2],0,a,n),o(e[2],e[3],e[0],0,a,n),Object.keys(s).map(function(t){return s[t]})},u.fromID=function(t){var e=t%32,r=1<<e,i=(t-e)/32,n=i%r,o=(i-n)/r%r,a=Math.floor(i/(r*r));return a%2!=0&&(a=-1*a-1),a/=2,new u(e,n,o,a)},e.exports=u},{"../geo/coordinate":57,"@mapbox/whoots-js":10}],102:[function(t,e,r){"use strict";var i=t("../util/evented"),n=t("../util/util"),o=t("./load_tilejson"),a=t("../util/mapbox").normalizeTileURL,s=t("./tile_bounds"),l=t("../util/ajax").ResourceType,u=t("../util/browser"),c=function(t){function e(e,r,i,o){if(t.call(this),this.id=e,this.dispatcher=i,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,n.extend(this,n.pick(r,["url","scheme","tileSize"])),this._options=n.extend({type:"vector"},r),512!==this.tileSize)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire("dataloading",{dataType:"source"}),o(this._options,this.map._transformRequest,function(e,r){e?t.fire("error",e):r&&(n.extend(t,r),r.bounds&&(t.tileBounds=new s(r.bounds,t.minzoom,t.maxzoom)),t.fire("data",{dataType:"source",sourceDataType:"metadata"}),t.fire("data",{dataType:"source",sourceDataType:"content"}))})},e.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t,this.maxzoom)},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.serialize=function(){return n.extend({},this._options)},e.prototype.loadTile=function(t,e){function r(r,i){if(!t.aborted){if(r)return e(r);this.map._refreshExpiredTiles&&t.setExpiryData(i),t.loadVectorData(i,this.map.painter),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(this)),e(null),t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)}}var i=t.coord.z>this.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,n=a(t.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),o={request:this.map._transformRequest(n,l.Tile),uid:t.uid,coord:t.coord,zoom:t.coord.z,tileSize:this.tileSize*i,type:this.type,source:this.id,pixelRatio:u.devicePixelRatio,overscaling:i,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(t),showCollisionBoxes:this.map.showCollisionBoxes};t.workerID&&"expired"!==t.state?"loading"===t.state?t.reloadCallback=e:this.dispatcher.send("reloadTile",o,r.bind(this),t.workerID):t.workerID=this.dispatcher.send("loadTile",o,r.bind(this))},e.prototype.abortTile=function(t){this.dispatcher.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0,t.workerID)},e.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0,t.workerID)},e}(i);e.exports=c},{"../util/ajax":201,"../util/browser":202,"../util/evented":210,"../util/mapbox":217,"../util/util":223,"./load_tilejson":92,"./tile_bounds":100}],103:[function(t,e,r){"use strict";function i(t,e){var r=n.getArrayBuffer(t.request,function(t,r){t?e(t):r&&e(null,{vectorTile:new o.VectorTile(new a(r.data)),rawData:r.data,cacheControl:r.cacheControl,expires:r.expires})});return function(){r.abort()}}var n=t("../util/ajax"),o=t("@mapbox/vector-tile"),a=t("pbf"),s=t("./worker_tile"),l=t("../util/util"),u=function(t,e,r){this.actor=t,this.layerIndex=e,this.loadVectorData=r||i,this.loading={},this.loaded={}};u.prototype.loadTile=function(t,e){var r=this,i=t.source,n=t.uid;this.loading[i]||(this.loading[i]={});var o=this.loading[i][n]=new s(t);o.abort=this.loadVectorData(t,function(t,a){if(delete r.loading[i][n],t||!a)return e(t);var s=a.rawData,u={};a.expires&&(u.expires=a.expires),a.cacheControl&&(u.cacheControl=a.cacheControl),o.vectorTile=a.vectorTile,o.parse(a.vectorTile,r.layerIndex,r.actor,function(t,r,i){if(t||!r)return e(t);e(null,l.extend({rawTileData:s},r,u),i)}),r.loaded[i]=r.loaded[i]||{},r.loaded[i][n]=o})},u.prototype.reloadTile=function(t,e){function r(t,r){if(this.reloadCallback){var i=this.reloadCallback;delete this.reloadCallback,this.parse(this.vectorTile,o.layerIndex,o.actor,i)}e(t,r)}var i=this.loaded[t.source],n=t.uid,o=this;if(i&&i[n]){var a=i[n];"parsing"===a.status?a.reloadCallback=e:"done"===a.status&&a.parse(a.vectorTile,this.layerIndex,this.actor,r.bind(a))}},u.prototype.abortTile=function(t){var e=this.loading[t.source],r=t.uid;e&&e[r]&&e[r].abort&&(e[r].abort(),delete e[r])},u.prototype.removeTile=function(t){var e=this.loaded[t.source],r=t.uid;e&&e[r]&&delete e[r]},u.prototype.redoPlacement=function(t,e){var r=this.loaded[t.source],i=this.loading[t.source],n=t.uid;if(r&&r[n]){var o=r[n],a=o.redoPlacement(t.angle,t.pitch,t.cameraToCenterDistance,t.cameraToTileDistance,t.showCollisionBoxes);a.result&&e(null,a.result,a.transferables)}else i&&i[n]&&(i[n].angle=t.angle)},e.exports=u},{"../util/ajax":201,"../util/util":223,"./worker_tile":106,"@mapbox/vector-tile":6,pbf:29}],104:[function(t,e,r){"use strict";var i=t("../util/ajax"),n=t("./image_source"),o=function(t){function e(e,r,i,n){t.call(this,e,r,i,n),this.roundZoom=!0,this.type="video",this.options=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this,e=this.options;this.urls=e.urls,i.getVideo(e.urls,function(e,r){if(e)t.fire("error",{error:e});else if(r){t.video=r,t.video.loop=!0;var i;t.video.addEventListener("playing",function(){i=t.map.style.animationLoop.set(1/0),t.map._rerender()}),t.video.addEventListener("pause",function(){t.map.style.animationLoop.cancel(i)}),t.map&&t.video.play(),t._finishLoading()}})},e.prototype.getVideo=function(){return this.video},e.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},e.prototype.prepare=function(){0===Object.keys(this.tiles).length||this.video.readyState<2||this._prepareImage(this.map.painter.gl,this.video)},e.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},e}(n);e.exports=o},{"../util/ajax":201,"./image_source":91}],105:[function(t,e,r){"use strict";var i=t("../util/actor"),n=t("../style/style_layer_index"),o=t("./vector_tile_worker_source"),a=t("./geojson_worker_source"),s=t("./rtl_text_plugin"),l=function(t){var e=this;this.self=t,this.actor=new i(t,this),this.layerIndexes={},this.workerSourceTypes={vector:o,geojson:a},this.workerSources={},this.self.registerWorkerSource=function(t,r){if(e.workerSourceTypes[t])throw new Error('Worker source with name "'+t+'" already registered.');e.workerSourceTypes[t]=r},this.self.registerRTLTextPlugin=function(t){if(s.applyArabicShaping||s.processBidirectionalText)throw new Error("RTL text plugin already registered.");s.applyArabicShaping=t.applyArabicShaping,s.processBidirectionalText=t.processBidirectionalText}};l.prototype.setLayers=function(t,e){this.getLayerIndex(t).replace(e)},l.prototype.updateLayers=function(t,e){this.getLayerIndex(t).update(e.layers,e.removedIds,e.symbolOrder)},l.prototype.loadTile=function(t,e,r){this.getWorkerSource(t,e.type).loadTile(e,r)},l.prototype.reloadTile=function(t,e,r){this.getWorkerSource(t,e.type).reloadTile(e,r)},l.prototype.abortTile=function(t,e){this.getWorkerSource(t,e.type).abortTile(e)},l.prototype.removeTile=function(t,e){this.getWorkerSource(t,e.type).removeTile(e)},l.prototype.removeSource=function(t,e){var r=this.getWorkerSource(t,e.type);void 0!==r.removeSource&&r.removeSource(e)},l.prototype.redoPlacement=function(t,e,r){this.getWorkerSource(t,e.type).redoPlacement(e,r)},l.prototype.loadWorkerSource=function(t,e,r){try{this.self.importScripts(e.url),r()}catch(t){r(t)}},l.prototype.loadRTLTextPlugin=function(t,e,r){try{s.applyArabicShaping||s.processBidirectionalText||(this.self.importScripts(e),s.applyArabicShaping&&s.processBidirectionalText||r(new Error("RTL Text Plugin failed to import scripts from "+e)))}catch(t){r(t)}},l.prototype.getLayerIndex=function(t){var e=this.layerIndexes[t];return e||(e=this.layerIndexes[t]=new n),e},l.prototype.getWorkerSource=function(t,e){var r=this;if(this.workerSources[t]||(this.workerSources[t]={}),!this.workerSources[t][e]){var i={send:function(e,i,n,o){r.actor.send(e,i,n,o,t)}};this.workerSources[t][e]=new this.workerSourceTypes[e](i,this.getLayerIndex(t))}return this.workerSources[t][e]},e.exports=function(t){return new l(t)}},{"../style/style_layer_index":164,"../util/actor":200,"./geojson_worker_source":89,"./rtl_text_plugin":96,"./vector_tile_worker_source":103}],106:[function(t,e,r){"use strict";function i(t,e){for(var r=0,i=t.layers;r<i.length;r+=1)i[r].recalculate(e)}function n(t,e){return t.filter(function(t){return!t.isEmpty()}).map(function(t){return t.serialize(e)})}var o=t("../data/feature_index"),a=t("../symbol/collision_tile"),s=t("../symbol/collision_box"),l=t("../util/dictionary_coder"),u=(t("../data/bucket/symbol_bucket"),t("../util/util")),c=t("../render/image_atlas"),p=c.makeImageAtlas,h=t("../render/glyph_atlas"),f=h.makeGlyphAtlas,d=function(t){this.coord=t.coord,this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=t.overscaling,this.angle=t.angle,this.pitch=t.pitch,this.cameraToCenterDistance=t.cameraToCenterDistance,this.cameraToTileDistance=t.cameraToTileDistance,this.showCollisionBoxes=t.showCollisionBoxes};d.prototype.parse=function(t,e,r,c){function h(){var t=this;if(R)return c(R);if(D&&O){for(var e=new a(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),r=f(D),o=p(O),s=0,l=t.symbolBuckets;s<l.length;s+=1){var h=l[s];i(h,t.zoom),h.prepare(D,r.positions,O,o.positions),h.place(e,t.showCollisionBoxes)}this.status="done";var d=[r.image.data.buffer,o.image.data.buffer];c(null,{buckets:n(u.values(y),d),featureIndex:v.serialize(d),collisionTile:e.serialize(d),collisionBoxArray:this.collisionBoxArray.serialize(),glyphAtlasImage:r.image,iconAtlasImage:o.image},d)}}var d=this;this.status="parsing",this.data=t,this.collisionBoxArray=new s;var m=new l(Object.keys(t.layers).sort()),v=new o(this.coord,this.overscaling);v.bucketLayerIDs=[];var y={},g={featureIndex:v,iconDependencies:{},glyphDependencies:{}},_=e.familiesBySource[this.source];for(var x in _){var b=t.layers[x];if(b){1===b.version&&u.warnOnce('Vector tile source "'+d.source+'" layer "'+x+'" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var w=m.encode(x),T=[],S=0;S<b.length;S++){var z=b.feature(S);T.push({feature:z,index:S,sourceLayerIndex:w})}for(var A=0,C=_[x];A<C.length;A+=1){var E=C[A],k=E[0];if(!(k.minzoom&&d.zoom<Math.floor(k.minzoom)||k.maxzoom&&d.zoom>=k.maxzoom||k.layout&&"none"===k.layout.visibility)){for(var M=0,L=E;M<L.length;M+=1)L[M].recalculate(d.zoom);(y[k.id]=k.createBucket({index:v.bucketLayerIDs.length,layers:E,zoom:d.zoom,pixelRatio:d.pixelRatio,overscaling:d.overscaling,collisionBoxArray:d.collisionBoxArray})).populate(T,g),v.bucketLayerIDs.push(E.map(function(t){return t.id}))}}}}this.symbolBuckets=[];for(var I=e.symbolOrder.length-1;I>=0;I--){var P=y[e.symbolOrder[I]];P&&d.symbolBuckets.push(P)}var R,D,O,B=u.mapObject(g.glyphDependencies,function(t){return Object.keys(t).map(Number)});Object.keys(B).length?r.send("getGlyphs",{uid:this.uid,stacks:B},function(t,e){R||(R=t,D=e,h.call(d))}):D={};var F=Object.keys(g.iconDependencies);F.length?r.send("getImages",{icons:F},function(t,e){R||(R=t,O=e,h.call(d))}):O={},h.call(this)},d.prototype.redoPlacement=function(t,e,r,o,s){var l=this;if(this.angle=t,this.pitch=e,this.cameraToCenterDistance=r,this.cameraToTileDistance=o,"done"!==this.status)return{};for(var u=new a(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),c=0,p=l.symbolBuckets;c<p.length;c+=1){var h=p[c];i(h,l.zoom),h.place(u,s)}var f=[];return{result:{buckets:n(this.symbolBuckets,f),collisionTile:u.serialize(f)},transferables:f}},e.exports=d},{"../data/bucket/symbol_bucket":47,"../data/feature_index":49,"../render/glyph_atlas":74,"../render/image_atlas":76,"../symbol/collision_box":170,"../symbol/collision_tile":172,"../util/dictionary_coder":207,"../util/util":223}],107:[function(t,e,r){"use strict";function i(t,e){var r={};for(var i in t)"ref"!==i&&(r[i]=t[i]);return o.forEach(function(t){t in e&&(r[t]=e[t])}),r}function n(t){t=t.slice();for(var e=Object.create(null),r=0;r<t.length;r++)e[t[r].id]=t[r];for(var n=0;n<t.length;n++)"ref"in t[n]&&(t[n]=i(t[n],e[t[n].ref]));return t}var o=t("./util/ref_properties");e.exports=n},{"./util/ref_properties":129}],108:[function(t,e,r){"use strict";function i(t,e,r,i){t=t||{},e=e||{};var n;for(n in t)t.hasOwnProperty(n)&&(e.hasOwnProperty(n)||(r.push({command:c.removeSource,args:[n]}),i[n]=!0));for(n in e)e.hasOwnProperty(n)&&(t.hasOwnProperty(n)?u(t[n],e[n])||(r.push({command:c.removeSource,args:[n]}),r.push({command:c.addSource,args:[n,e[n]]}),i[n]=!0):r.push({command:c.addSource,args:[n,e[n]]}))}function n(t,e,r,i,n,o){t=t||{},e=e||{};var a;for(a in t)t.hasOwnProperty(a)&&(u(t[a],e[a])||r.push({command:o,args:[i,a,e[a],n]}));for(a in e)e.hasOwnProperty(a)&&!t.hasOwnProperty(a)&&(u(t[a],e[a])||r.push({command:o,args:[i,a,e[a],n]}))}function o(t){return t.id}function a(t,e){return t[e.id]=e,t}function s(t,e,r){t=t||[],e=e||[];var i,s,l,p,h,f,d,m=t.map(o),v=e.map(o),y=t.reduce(a,{}),g=e.reduce(a,{}),_=m.slice(),x=Object.create(null);for(i=0,s=0;i<m.length;i++)l=m[i],g.hasOwnProperty(l)?s++:(r.push({command:c.removeLayer,args:[l]}),_.splice(_.indexOf(l,s),1));for(i=0,s=0;i<v.length;i++)l=v[v.length-1-i],_[_.length-1-i]!==l&&(y.hasOwnProperty(l)?(r.push({command:c.removeLayer,args:[l]}),_.splice(_.lastIndexOf(l,_.length-s),1)):s++,f=_[_.length-i],r.push({command:c.addLayer,args:[g[l],f]}),_.splice(_.length-i,0,l),x[l]=!0);for(i=0;i<v.length;i++)if(l=v[i],p=y[l],h=g[l],!x[l]&&!u(p,h))if(u(p.source,h.source)&&u(p["source-layer"],h["source-layer"])&&u(p.type,h.type)){n(p.layout,h.layout,r,l,null,c.setLayoutProperty),n(p.paint,h.paint,r,l,null,c.setPaintProperty),u(p.filter,h.filter)||r.push({command:c.setFilter,args:[l,h.filter]}),u(p.minzoom,h.minzoom)&&u(p.maxzoom,h.maxzoom)||r.push({command:c.setLayerZoomRange,args:[l,h.minzoom,h.maxzoom]});for(d in p)p.hasOwnProperty(d)&&"layout"!==d&&"paint"!==d&&"filter"!==d&&"metadata"!==d&&"minzoom"!==d&&"maxzoom"!==d&&(0===d.indexOf("paint.")?n(p[d],h[d],r,l,d.slice(6),c.setPaintProperty):u(p[d],h[d])||r.push({command:c.setLayerProperty,args:[l,d,h[d]]}));for(d in h)h.hasOwnProperty(d)&&!p.hasOwnProperty(d)&&"layout"!==d&&"paint"!==d&&"filter"!==d&&"metadata"!==d&&"minzoom"!==d&&"maxzoom"!==d&&(0===d.indexOf("paint.")?n(p[d],h[d],r,l,d.slice(6),c.setPaintProperty):u(p[d],h[d])||r.push({command:c.setLayerProperty,args:[l,d,h[d]]}))}else r.push({command:c.removeLayer,args:[l]}),f=_[_.lastIndexOf(l)+1],r.push({command:c.addLayer,args:[h,f]})}function l(t,e){if(!t)return[{command:c.setStyle,args:[e]}];var r=[];try{if(!u(t.version,e.version))return[{command:c.setStyle,args:[e]}];u(t.center,e.center)||r.push({command:c.setCenter,args:[e.center]}),u(t.zoom,e.zoom)||r.push({command:c.setZoom,args:[e.zoom]}),u(t.bearing,e.bearing)||r.push({command:c.setBearing,args:[e.bearing]}),u(t.pitch,e.pitch)||r.push({command:c.setPitch,args:[e.pitch]}),u(t.sprite,e.sprite)||r.push({command:c.setSprite,args:[e.sprite]}),u(t.glyphs,e.glyphs)||r.push({command:c.setGlyphs,args:[e.glyphs]}),u(t.transition,e.transition)||r.push({command:c.setTransition,args:[e.transition]}),u(t.light,e.light)||r.push({command:c.setLight,args:[e.light]});var n={},o=[];i(t.sources,e.sources,o,n);var a=[];t.layers&&t.layers.forEach(function(t){n[t.source]?r.push({command:c.removeLayer,args:[t.id]}):a.push(t)}),r=r.concat(o),s(a,e.layers,r)}catch(t){console.warn("Unable to compute style diff:",t),r=[{command:c.setStyle,args:[e]}]}return r}var u=t("lodash.isequal"),c={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight"};e.exports=l,e.exports.operations=c},{"lodash.isequal":120}],109:[function(t,e,r){"use strict";function i(t,e){for(var r=[],i=arguments.length-2;i-- >0;)r[i]=arguments[i+2];this.message=(t?t+": ":"")+n.apply(n,r),null!==e&&void 0!==e&&e.__line__&&(this.line=e.__line__)}var n=t("util").format;e.exports=i},{util:36}],110:[function(t,e,r){"use strict";function i(t){return new Function("f","var p = (f && f.properties || {}); return "+n(t))}function n(t){if(!t)return"true";var e=t[0];return t.length<=1?"any"===e?"false":"true":"("+("=="===e?a(t[1],t[2],"===",!1):"!="===e?a(t[1],t[2],"!==",!1):"<"===e||">"===e||"<="===e||">="===e?a(t[1],t[2],e,!0):"any"===e?s(t.slice(1),"||"):"all"===e?s(t.slice(1),"&&"):"none"===e?c(s(t.slice(1),"||")):"in"===e?l(t[1],t.slice(2)):"!in"===e?c(l(t[1],t.slice(2))):"has"===e?u(t[1]):"!has"===e?c(u(t[1])):"true")+")"}function o(t){return"$type"===t?"f.type":"$id"===t?"f.id":"p["+JSON.stringify(t)+"]"}function a(t,e,r,i){var n=o(t),a="$type"===t?h.indexOf(e):JSON.stringify(e);return(i?"typeof "+n+"=== typeof "+a+"&&":"")+n+r+a}function s(t,e){return t.map(n).join(e)}function l(t,e){"$type"===t&&(e=e.map(function(t){return h.indexOf(t)}));var r=JSON.stringify(e.sort(p)),i=o(t);return e.length<=200?r+".indexOf("+i+") !== -1":"function(v, a, i, j) {while (i <= j) { var m = (i + j) >> 1; if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;}return false; }("+i+", "+r+",0,"+(e.length-1)+")"}function u(t){return"$id"===t?'"id" in f':JSON.stringify(t)+" in p"}function c(t){return"!("+t+")"}function p(t,e){return t<e?-1:t>e?1:0}e.exports=i;var h=["Unknown","Point","LineString","Polygon"]},{}],111:[function(t,e,r){"use strict";function i(t){return t>y?Math.pow(t,1/3):t/v+d}function n(t){return t>m?t*t*t:v*(t-d)}function o(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function a(t){return t/=255,t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function s(t){var e=a(t[0]),r=a(t[1]),n=a(t[2]),o=i((.4124564*e+.3575761*r+.1804375*n)/p),s=i((.2126729*e+.7151522*r+.072175*n)/h);return[116*s-16,500*(o-s),200*(s-i((.0193339*e+.119192*r+.9503041*n)/f)),t[3]]}function l(t){var e=(t[0]+16)/116,r=isNaN(t[1])?e:e+t[1]/500,i=isNaN(t[2])?e:e-t[2]/200;return e=h*n(e),r=p*n(r),i=f*n(i),[o(3.2404542*r-1.5371385*e-.4985314*i),o(-.969266*r+1.8760108*e+.041556*i),o(.0556434*r-.2040259*e+1.0572252*i),t[3]]}function u(t){var e=s(t),r=e[0],i=e[1],n=e[2],o=Math.atan2(n,i)*_;return[o<0?o+360:o,Math.sqrt(i*i+n*n),r,t[3]]}function c(t){var e=t[0]*g,r=t[1];return l([t[2],Math.cos(e)*r,Math.sin(e)*r,t[3]])}var p=.95047,h=1,f=1.08883,d=4/29,m=6/29,v=3*m*m,y=m*m*m,g=Math.PI/180,_=180/Math.PI;e.exports={lab:{forward:s,reverse:l},hcl:{forward:u,reverse:c}}},{}],112:[function(t,e,r){"use strict";function i(t){return t}function n(t,e){var r,c="color"===e.type;if(p(t)){var h=t.stops&&"object"==typeof t.stops[0][0],v=h||void 0!==t.property,y=h||!v,g=t.type||("interpolated"===e.function?"exponential":"interval");c&&(t=m({},t),t.stops&&(t.stops=t.stops.map(function(t){return[t[0],d(t[1])]})),t.default?t.default=d(t.default):t.default=d(e.default));var _,x,b;if("exponential"===g)_=l;else if("interval"===g)_=s;else if("categorical"===g){_=a,x=Object.create(null);for(var w=0,T=t.stops;w<T.length;w+=1){var S=T[w];x[S[0]]=S[1]}b=typeof t.stops[0][0]}else{if("identity"!==g)throw new Error('Unknown function type "'+g+'"');_=u}var z;if(t.colorSpace&&"rgb"!==t.colorSpace){if(!f[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);var A=f[t.colorSpace];t=JSON.parse(JSON.stringify(t));for(var C=0;C<t.stops.length;C++)t.stops[C]=[t.stops[C][0],A.forward(t.stops[C][1])];z=A.reverse}else z=i;if(h){for(var E={},k=[],M=0;M<t.stops.length;M++){var L=t.stops[M],I=L[0].zoom;void 0===E[I]&&(E[I]={zoom:I,type:t.type,property:t.property,default:t.default,stops:[]},k.push(I)),E[I].stops.push([L[0].value,L[1]])}for(var P=[],R=0,D=k;R<D.length;R+=1){var O=D[R];P.push([E[O].zoom,n(E[O],e)])}r=function(r,i){return z(l({stops:P,base:t.base},e,r)(r,i))},r.isFeatureConstant=!1,r.isZoomConstant=!1}else y?(r=function(r){return z(_(t,e,r,x,b))},r.isFeatureConstant=!0,r.isZoomConstant=!1):(r=function(r,i){var n=i[t.property];return void 0===n?o(t.default,e.default):z(_(t,e,n,x,b))},r.isFeatureConstant=!1,r.isZoomConstant=!0)}else c&&t&&(t=d(t)),r=function(){return t},r.isFeatureConstant=!0,r.isZoomConstant=!0;return r}function o(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function a(t,e,r,i,n){return o(typeof r===n?i[r]:void 0,t.default,e.default)}function s(t,e,r){if("number"!==v(r))return o(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var n=c(t.stops,r);return t.stops[n][1]}function l(t,e,r){var n=void 0!==t.base?t.base:1;if("number"!==v(r))return o(t.default,e.default);var a=t.stops.length;if(1===a)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[a-1][0])return t.stops[a-1][1];var s=c(t.stops,r),l=h(r,n,t.stops[s][0],t.stops[s+1][0]),u=t.stops[s][1],p=t.stops[s+1][1],f=y[e.type]||i;return"function"==typeof u?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=u.apply(void 0,t),i=p.apply(void 0,t);if(void 0!==r&&void 0!==i)return f(r,i,l)}:f(u,p,l)}function u(t,e,r){return"color"===e.type?r=d(r):v(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),o(r,t.default,e.default)}function c(t,e){for(var r,i,n=t.length,o=0,a=n-1,s=0;o<=a;){if(s=Math.floor((o+a)/2),r=t[s][0],i=t[s+1][0],e===r||e>r&&e<i)return s;r<e?o=s+1:r>e&&(a=s-1)}return Math.max(s-1,0)}function p(t){return"object"==typeof t&&(t.stops||"identity"===t.type)}function h(t,e,r,i){var n=i-r,o=t-r;return 0===n?0:1===e?o/n:(Math.pow(e,o)-1)/(Math.pow(e,n)-1)}var f=t("./color_spaces"),d=t("../util/parse_color"),m=t("../util/extend"),v=t("../util/get_type"),y=t("../util/interpolate");e.exports=n,e.exports.isFunctionDefinition=p,e.exports.interpolationFactor=h,e.exports.findStopLessThanOrEqualTo=c},{"../util/extend":125,"../util/get_type":126,"../util/interpolate":127,"../util/parse_color":128,"./color_spaces":111}],113:[function(t,e,r){"use strict";function i(t){var e=typeof t;if("number"===e||"boolean"===e||"string"===e||void 0===t||null===t)return JSON.stringify(t);if(Array.isArray(t)){for(var r="[",n=0,o=t;n<o.length;n+=1)r+=i(o[n])+",";return r+"]"}for(var a=Object.keys(t).sort(),s="{",l=0;l<a.length;l++)s+=JSON.stringify(a[l])+":"+i(t[a[l]])+",";return s+"}"}function n(t){for(var e="",r=0,n=a;r<n.length;r+=1)e+="/"+i(t[n[r]]);return e}function o(t){for(var e={},r=0;r<t.length;r++){var i=n(t[r]),o=e[i];o||(o=e[i]=[]),o.push(t[r])}var a=[];for(var s in e)a.push(e[s]);return a}var a=t("./util/ref_properties");e.exports=o},{"./util/ref_properties":129}],114:[function(t,e,r){function i(t){return t=Math.round(t),t<0?0:t>255?255:t}function n(t){return t<0?0:t>1?1:t}function o(t){return i("%"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function a(t){return n("%"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}function l(t){var e=t.replace(/ /g,"").toLowerCase();if(e in u)return u[e].slice();if("#"===e[0]){if(4===e.length){var r=parseInt(e.substr(1),16);return r>=0&&r<=4095?[(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,1]:null}if(7===e.length){var r=parseInt(e.substr(1),16);return r>=0&&r<=16777215?[(16711680&r)>>16,(65280&r)>>8,255&r,1]:null}return null}var n=e.indexOf("("),l=e.indexOf(")");if(-1!==n&&l+1===e.length){var c=e.substr(0,n),p=e.substr(n+1,l-(n+1)).split(","),h=1;switch(c){case"rgba":if(4!==p.length)return null;h=a(p.pop());case"rgb":return 3!==p.length?null:[o(p[0]),o(p[1]),o(p[2]),h];case"hsla":if(4!==p.length)return null;h=a(p.pop());case"hsl":if(3!==p.length)return null;var f=(parseFloat(p[0])%360+360)%360/360,d=a(p[1]),m=a(p[2]),v=m<=.5?m*(d+1):m+d-m*d,y=2*m-v;return[i(255*s(y,v,f+1/3)),i(255*s(y,v,f)),i(255*s(y,v,f-1/3)),h];default:return null}}return null}var u={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{r.parseCSSColor=l}catch(t){}},{}],115:[function(t,e,r){function i(t){return!!t&&"object"==typeof t}function n(t,e){for(var r=-1,i=t.length;++r<i;)if(e(t[r],r,t))return!0;return!1}function o(t,e,r,n,s,l){return t===e||(null==t||null==e||!c(t)&&!i(e)?t!==t&&e!==e:a(t,e,o,r,n,s,l))}function a(t,e,r,i,n,o,a){var c=p(t),f=p(e),v=m,y=m;c||(v=z.call(t),v==d?v=x:v!=x&&(c=h(t))),f||(y=z.call(e),y==d?y=x:y!=x&&(f=h(e)));var g=v==x,_=y==x,b=v==y;if(b&&!c&&!g)return l(t,e,v);if(!n){var w=g&&S.call(t,"__wrapped__"),T=_&&S.call(e,"__wrapped__");if(w||T)return r(w?t.value():t,T?e.value():e,i,n,o,a)}if(!b)return!1;o||(o=[]),a||(a=[]);for(var A=o.length;A--;)if(o[A]==t)return a[A]==e;o.push(t),a.push(e);var C=(c?s:u)(t,e,r,i,n,o,a);return o.pop(),a.pop(),C}function s(t,e,r,i,o,a,s){var l=-1,u=t.length,c=e.length;if(u!=c&&!(o&&c>u))return!1;for(;++l<u;){var p=t[l],h=e[l],f=i?i(o?h:p,o?p:h,l):void 0;if(void 0!==f){if(f)continue;return!1}if(o){if(!n(e,function(t){return p===t||r(p,t,i,o,a,s)}))return!1}else if(p!==h&&!r(p,h,i,o,a,s))return!1}return!0}function l(t,e,r){switch(r){case v:case y:return+t==+e;case g:return t.name==e.name&&t.message==e.message;case _:return t!=+t?e!=+e:t==+e;case b:case w:return t==e+""}return!1}function u(t,e,r,i,n,o,a){var s=f(t),l=s.length;if(l!=f(e).length&&!n)return!1;for(var u=l;u--;){var c=s[u];if(!(n?c in e:S.call(e,c)))return!1}for(var p=n;++u<l;){c=s[u];var h=t[c],d=e[c],m=i?i(n?d:h,n?h:d,c):void 0;if(!(void 0===m?r(h,d,i,n,o,a):m))return!1;p||(p="constructor"==c)}if(!p){var v=t.constructor,y=e.constructor;if(v!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof y&&y instanceof y))return!1}return!0}function c(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var p=t("lodash.isarray"),h=t("lodash.istypedarray"),f=t("lodash.keys"),d="[object Arguments]",m="[object Array]",v="[object Boolean]",y="[object Date]",g="[object Error]",_="[object Number]",x="[object Object]",b="[object RegExp]",w="[object String]",T=Object.prototype,S=T.hasOwnProperty,z=T.toString;e.exports=o},{"lodash.isarray":119,"lodash.istypedarray":121,"lodash.keys":122}],116:[function(t,e,r){function i(t,e,r){if("function"!=typeof t)return n;if(void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 3:return function(r,i,n){return t.call(e,r,i,n)};case 4:return function(r,i,n,o){return t.call(e,r,i,n,o)};case 5:return function(r,i,n,o,a){return t.call(e,r,i,n,o,a)}}return function(){return t.apply(e,arguments)}}function n(t){return t}e.exports=i},{}],117:[function(t,e,r){function i(t){return!!t&&"object"==typeof t}function n(t,e){var r=null==t?void 0:t[e];return s(r)?r:void 0}function o(t){return a(t)&&f.call(t)==l}function a(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function s(t){return null!=t&&(o(t)?d.test(p.call(t)):i(t)&&u.test(t))}var l="[object Function]",u=/^\[object .+?Constructor\]$/,c=Object.prototype,p=Function.prototype.toString,h=c.hasOwnProperty,f=c.toString,d=RegExp("^"+p.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=n},{}],118:[function(t,e,r){function i(t){return o(t)&&m.call(t,"callee")&&(!y.call(t,"callee")||v.call(t)==p)}function n(t){return null!=t&&s(t.length)&&!a(t)}function o(t){return u(t)&&n(t)}function a(t){var e=l(t)?v.call(t):"";return e==h||e==f}function s(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=c}function l(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function u(t){return!!t&&"object"==typeof t}var c=9007199254740991,p="[object Arguments]",h="[object Function]",f="[object GeneratorFunction]",d=Object.prototype,m=d.hasOwnProperty,v=d.toString,y=d.propertyIsEnumerable;e.exports=i},{}],119:[function(t,e,r){function i(t){return!!t&&"object"==typeof t}function n(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=v}function o(t){return a(t)&&f.call(t)==l}function a(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function s(t){return null!=t&&(o(t)?d.test(p.call(t)):i(t)&&u.test(t))}var l="[object Function]",u=/^\[object .+?Constructor\]$/,c=Object.prototype,p=Function.prototype.toString,h=c.hasOwnProperty,f=c.toString,d=RegExp("^"+p.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),m=function(t,e){var r=null==t?void 0:t[e];return s(r)?r:void 0}(Array,"isArray"),v=9007199254740991,y=m||function(t){return i(t)&&n(t.length)&&"[object Array]"==f.call(t)};e.exports=y},{}],120:[function(t,e,r){function i(t,e,r,i){r="function"==typeof r?o(r,i,3):void 0;var a=r?r(t,e):void 0;return void 0===a?n(t,e,r):!!a}var n=t("lodash._baseisequal"),o=t("lodash._bindcallback");e.exports=i},{"lodash._baseisequal":115,"lodash._bindcallback":116}],121:[function(t,e,r){function i(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function n(t){return!!t&&"object"==typeof t}function o(t){return n(t)&&i(t.length)&&!!s[u.call(t)]}var a=9007199254740991,s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;var l=Object.prototype,u=l.toString;e.exports=o},{}],122:[function(t,e,r){function i(t){return null!=t&&o(y(t))}function n(t,e){return t="number"==typeof t||h.test(t)?+t:-1,e=null==e?v:e,t>-1&&t%1==0&&t<e}function o(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=v}function a(t){for(var e=l(t),r=e.length,i=r&&t.length,a=!!i&&o(i)&&(p(t)||c(t)),s=-1,u=[];++s<r;){var h=e[s];(a&&n(h,i)||d.call(t,h))&&u.push(h)}return u}function s(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function l(t){if(null==t)return[];s(t)||(t=Object(t));var e=t.length;e=e&&o(e)&&(p(t)||c(t))&&e||0;for(var r=t.constructor,i=-1,a="function"==typeof r&&r.prototype===t,l=Array(e),u=e>0;++i<e;)l[i]=i+"";for(var h in t)u&&n(h,e)||"constructor"==h&&(a||!d.call(t,h))||l.push(h);return l}var u=t("lodash._getnative"),c=t("lodash.isarguments"),p=t("lodash.isarray"),h=/^\d+$/,f=Object.prototype,d=f.hasOwnProperty,m=u(Object,"keys"),v=9007199254740991,y=function(t){return function(e){return null==e?void 0:e[t]}}("length"),g=m?function(t){var e=null==t?void 0:t.constructor;return"function"==typeof e&&e.prototype===t||"function"!=typeof t&&i(t)?a(t):s(t)?m(t):[]}:a;e.exports=g},{"lodash._getnative":117,"lodash.isarguments":118,"lodash.isarray":119}],123:[function(t,e,r){"use strict";e.exports=t("./v8.json")},{"./v8.json":124}],124:[function(t,e,r){e.exports={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_tile","source_geojson","source_video","source_image","source_canvas"],source_tile:{type:{required:!0,type:"enum",values:{vector:{},raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.0511,180,85.0511]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_canvas:{type:{required:!0,type:"enum",values:{canvas:{}}},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}},animate:{type:"boolean",default:"true"},canvas:{type:"string",required:!0},contextType:{required:!0,type:"enum",values:{"2d":{},webgl:{},"experimental-webgl":{},webgl2:{}}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},"fill-extrusion":{},raster:{},background:{}}},metadata:{type:"*"},ref:{type:"string"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"},"paint.*":{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_fill-extrusion","layout_symbol","layout_raster","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},layout_fill:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},layout_circle:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},layout_line:{"line-cap":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{butt:{},round:{},square:{}},default:"butt"},"line-join":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:{bevel:{},round:{},miter:{}},default:"miter"},"line-miter-limit":{type:"number",default:2,function:"interpolated","zoom-function":!0,requires:[{"line-join":"miter"}]},"line-round-limit":{type:"number",default:1.05,function:"interpolated","zoom-function":!0,requires:[{"line-join":"round"}]},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},layout_symbol:{"symbol-placement":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{point:{},line:{}},default:"point"},"symbol-spacing":{type:"number",default:250,minimum:1,function:"interpolated","zoom-function":!0,units:"pixels",requires:[{"symbol-placement":"line"}]},"symbol-avoid-edges":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1},"icon-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["icon-image"]},"icon-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["icon-image"]},"icon-optional":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["icon-image","text-field"]},"icon-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"]},"icon-size":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,units:"factor of the original icon size",requires:["icon-image"]},"icon-text-fit":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"]},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",function:"interpolated","zoom-function":!0,requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}]},"icon-image":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,tokens:!0},"icon-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":!0,"property-function":!0,units:"degrees",requires:["icon-image"]},"icon-padding":{type:"number",default:2,minimum:0,function:"interpolated","zoom-function":!0,units:"pixels",requires:["icon-image"]},"icon-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":"line"}]},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,"property-function":!0,requires:["icon-image"]},"icon-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"]},"icon-pitch-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"]},"text-pitch-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"]},"text-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"]},"text-field":{type:"string",function:"piecewise-constant","zoom-function":!0,"property-function":!0,default:"",tokens:!0},"text-font":{type:"array",value:"string",function:"piecewise-constant","zoom-function":!0,default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"]},"text-size":{type:"number",default:16,minimum:0,units:"pixels",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-line-height":{type:"number",default:1.2,units:"ems",function:"interpolated","zoom-function":!0,requires:["text-field"]},"text-letter-spacing":{type:"number",default:0,units:"ems",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-justify":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:{left:{},center:{},right:{}},default:"center",requires:["text-field"]},"text-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field"]},"text-max-angle":{type:"number",default:45,units:"degrees",function:"interpolated","zoom-function":!0,requires:["text-field",{"symbol-placement":"line"}]},"text-rotate":{type:"number",default:0,period:360,units:"degrees",function:"interpolated","zoom-function":!0,"property-function":!0,requires:["text-field"]},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",function:"interpolated","zoom-function":!0,requires:["text-field"]},"text-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":"line"}]},"text-transform":{type:"enum",function:"piecewise-constant","zoom-function":!0,"property-function":!0,values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"]},"text-offset":{type:"array",value:"number",units:"ems",function:"interpolated","zoom-function":!0,"property-function":!0,length:2,default:[0,0],requires:["text-field"]},"text-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["text-field"]},"text-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["text-field"]},"text-optional":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!1,requires:["text-field","icon-image"]},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:22,value:["number","color"],length:2},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},transition:!1,"zoom-function":!0,"property-function":!1,function:"piecewise-constant"},position:{type:"array",default:[1.15,210,30],length:3,value:"number",transition:!0,function:"interpolated","zoom-function":!0,"property-function":!1},color:{type:"color",default:"#ffffff",function:"interpolated","zoom-function":!0,"property-function":!1,transition:!0},intensity:{type:"number",default:.5,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!1,transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_fill-extrusion","paint_symbol","paint_raster","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",function:"piecewise-constant","zoom-function":!0,default:!0},"fill-opacity":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:1,minimum:0,maximum:1,transition:!0},"fill-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"fill-pattern"}]},"fill-outline-color":{type:"color",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}]},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels"},"fill-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["fill-translate"]},"fill-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,transition:!0}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!1,default:1,minimum:0,maximum:1,transition:!0},"fill-extrusion-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"fill-extrusion-pattern"}]},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels"},"fill-extrusion-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"]},"fill-extrusion-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,transition:!0},"fill-extrusion-height":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:0,minimum:0,units:"meters",transition:!0},"fill-extrusion-base":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:0,minimum:0,maximum:65535,units:"meters",transition:!0,requires:["fill-extrusion-height"]}},paint_line:{"line-opacity":{type:"number",function:"interpolated","zoom-function":!0,"property-function":!0,default:1,minimum:0,maximum:1,transition:!0},"line-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:[{"!":"line-pattern"}]},"line-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels"},"line-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["line-translate"]},"line-width":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-gap-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-offset":{type:"number",default:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"line-dasharray":{type:"array",value:"number",function:"piecewise-constant","zoom-function":!0,minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}]},"line-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,transition:!0}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"circle-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-blur":{type:"number",default:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels"},"circle-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["circle-translate"]},"circle-pitch-scale":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map"},"circle-pitch-alignment":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"viewport"},"circle-stroke-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels"},"circle-stroke-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["icon-image"]},"icon-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels",requires:["icon-image"]},"icon-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"]},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,requires:["text-field"]},"text-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":!0,"property-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":!0,transition:!0,units:"pixels",requires:["text-field"]},"text-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":!0,values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"]}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-hue-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":!0,transition:!0,units:"degrees"},"raster-brightness-min":{type:"number",function:"interpolated","zoom-function":!0,default:0,minimum:0,maximum:1,transition:!0},"raster-brightness-max":{type:"number",function:"interpolated","zoom-function":!0,default:1,minimum:0,maximum:1,transition:!0},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":!0,transition:!0},"raster-fade-duration":{type:"number",default:300,minimum:0,function:"interpolated","zoom-function":!0,transition:!0,units:"milliseconds"}},paint_background:{"background-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":!0,transition:!0,requires:[{"!":"background-pattern"}]},"background-pattern":{type:"string",function:"piecewise-constant","zoom-function":!0,transition:!0},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":!0,transition:!0}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}}}},{}],125:[function(t,e,r){"use strict";e.exports=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i<n.length;i+=1){var o=n[i];for(var a in o)t[a]=o[a]}return t}},{}],126:[function(t,e,r){"use strict";e.exports=function(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}},{}],127:[function(t,e,r){"use strict";function i(t,e,r){return t*(1-r)+e*r}e.exports=i,i.number=i,i.vec2=function(t,e,r){return[i(t[0],e[0],r),i(t[1],e[1],r)]},i.color=function(t,e,r){return[i(t[0],e[0],r),i(t[1],e[1],r),i(t[2],e[2],r),i(t[3],e[3],r)]},i.array=function(t,e,r){return t.map(function(t,n){return i(t,e[n],r)})}},{}],128:[function(t,e,r){"use strict";var i=t("csscolorparser").parseCSSColor;e.exports=function(t){if("string"==typeof t){var e=i(t);if(!e)return;return[e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]]}return Array.isArray(t)?t:void 0}},{csscolorparser:114}],129:[function(t,e,r){"use strict";e.exports=["type","source","source-layer","minzoom","maxzoom","filter","layout"]},{}],130:[function(t,e,r){"use strict";e.exports=function(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}},{}],131:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type"),o=t("../util/extend");e.exports=function(e){var r=t("./validate_function"),a=t("./validate_object"),s={"*":function(){return[]},array:t("./validate_array"),boolean:t("./validate_boolean"),number:t("./validate_number"),color:t("./validate_color"),constants:t("./validate_constants"),enum:t("./validate_enum"),filter:t("./validate_filter"),function:t("./validate_function"),layer:t("./validate_layer"),object:t("./validate_object"),source:t("./validate_source"),light:t("./validate_light"),string:t("./validate_string")},l=e.value,u=e.valueSpec,c=e.key,p=e.styleSpec,h=e.style;if("string"===n(l)&&"@"===l[0]){if(p.$version>7)return[new i(c,l,"constants have been deprecated as of v8")];if(!(l in h.constants))return[new i(c,l,'constant "%s" not found',l)];e=o({},e,{value:h.constants[l]})}return u.function&&"object"===n(l)?r(e):u.type&&s[u.type]?s[u.type](e):a(o({},e,{valueSpec:u.type?p[u.type]:u}))}},{"../error/validation_error":109,"../util/extend":125,"../util/get_type":126,"./validate_array":132,"./validate_boolean":133,"./validate_color":134,"./validate_constants":135,"./validate_enum":136,"./validate_filter":137,"./validate_function":138,"./validate_layer":140,"./validate_light":142,"./validate_number":143,"./validate_object":144,"./validate_source":147,"./validate_string":148}],132:[function(t,e,r){"use strict";var i=t("../util/get_type"),n=t("./validate"),o=t("../error/validation_error");e.exports=function(t){var e=t.value,r=t.valueSpec,a=t.style,s=t.styleSpec,l=t.key,u=t.arrayElementValidator||n;if("array"!==i(e))return[new o(l,e,"array expected, %s found",i(e))];if(r.length&&e.length!==r.length)return[new o(l,e,"array length %d expected, length %d found",r.length,e.length)];if(r["min-length"]&&e.length<r["min-length"])return[new o(l,e,"array length at least %d expected, length %d found",r["min-length"],e.length)];var c={type:r.value};s.$version<7&&(c.function=r.function),"object"===i(r.value)&&(c=r.value);for(var p=[],h=0;h<e.length;h++)p=p.concat(u({array:e,arrayIndex:h,value:e[h],valueSpec:c,style:a,styleSpec:s,key:l+"["+h+"]"}));return p}},{"../error/validation_error":109,"../util/get_type":126,"./validate":131}],133:[function(t,e,r){"use strict";var i=t("../util/get_type"),n=t("../error/validation_error");e.exports=function(t){var e=t.value,r=t.key,o=i(e);return"boolean"!==o?[new n(r,e,"boolean expected, %s found",o)]:[]}},{"../error/validation_error":109,"../util/get_type":126}],134:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type"),o=t("csscolorparser").parseCSSColor;e.exports=function(t){var e=t.key,r=t.value,a=n(r);return"string"!==a?[new i(e,r,"color expected, %s found",a)]:null===o(r)?[new i(e,r,'color expected, "%s" found',r)]:[]}},{"../error/validation_error":109,"../util/get_type":126,csscolorparser:114}],135:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type");e.exports=function(t){var e=t.key,r=t.value;if(t.styleSpec.$version>7)return r?[new i(e,r,"constants have been deprecated as of v8")]:[];var o=n(r);if("object"!==o)return[new i(e,r,"object expected, %s found",o)];var a=[];for(var s in r)"@"!==s[0]&&a.push(new i(e+"."+s,r[s],'constants must start with "@"'));return a}},{"../error/validation_error":109,"../util/get_type":126}],136:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/unbundle_jsonlint");e.exports=function(t){var e=t.key,r=t.value,o=t.valueSpec,a=[];return Array.isArray(o.values)?-1===o.values.indexOf(n(r))&&a.push(new i(e,r,"expected one of [%s], %s found",o.values.join(", "),r)):-1===Object.keys(o.values).indexOf(n(r))&&a.push(new i(e,r,"expected one of [%s], %s found",Object.keys(o.values).join(", "),r)),a}},{"../error/validation_error":109,"../util/unbundle_jsonlint":130}],137:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("./validate_enum"),o=t("../util/get_type"),a=t("../util/unbundle_jsonlint");e.exports=function t(e){var r,s=e.value,l=e.key,u=e.styleSpec,c=[];if("array"!==o(s))return[new i(l,s,"array expected, %s found",o(s))];if(s.length<1)return[new i(l,s,"filter array must have at least 1 element")];switch(c=c.concat(n({key:l+"[0]",value:s[0],valueSpec:u.filter_operator,style:e.style,styleSpec:e.styleSpec})),a(s[0])){case"<":case"<=":case">":case">=":s.length>=2&&"$type"===a(s[1])&&c.push(new i(l,s,'"$type" cannot be use with operator "%s"',s[0]));case"==":case"!=":3!==s.length&&c.push(new i(l,s,'filter array for operator "%s" must have 3 elements',s[0]));case"in":case"!in":s.length>=2&&"string"!==(r=o(s[1]))&&c.push(new i(l+"[1]",s[1],"string expected, %s found",r));for(var p=2;p<s.length;p++)r=o(s[p]),"$type"===a(s[1])?c=c.concat(n({key:l+"["+p+"]",value:s[p],valueSpec:u.geometry_type,style:e.style,styleSpec:e.styleSpec})):"string"!==r&&"number"!==r&&"boolean"!==r&&c.push(new i(l+"["+p+"]",s[p],"string, number, or boolean expected, %s found",r));break;case"any":case"all":case"none":for(var h=1;h<s.length;h++)c=c.concat(t({key:l+"["+h+"]",value:s[h],style:e.style,styleSpec:e.styleSpec}));break;case"has":case"!has":r=o(s[1]),2!==s.length?c.push(new i(l,s,'filter array for "%s" operator must have 2 elements',s[0])):"string"!==r&&c.push(new i(l+"[1]",s[1],"string expected, %s found",r))}return c}},{"../error/validation_error":109,"../util/get_type":126,"../util/unbundle_jsonlint":130,"./validate_enum":136}],138:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type"),o=t("./validate"),a=t("./validate_object"),s=t("./validate_array"),l=t("./validate_number"),u=t("../util/unbundle_jsonlint");e.exports=function(t){function e(t){if("identity"===v)return[new i(t.key,t.value,'identity function may not have a "stops" property')];var e=[],o=t.value;return e=e.concat(s({key:t.key,value:o,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:r})),"array"===n(o)&&0===o.length&&e.push(new i(t.key,o,"array must have at least one stop")),e}function r(t){var e=[],r=t.value,s=t.key;if("array"!==n(r))return[new i(s,r,"array expected, %s found",n(r))];if(2!==r.length)return[new i(s,r,"array length %d expected, length %d found",2,r.length)];if(x){if("object"!==n(r[0]))return[new i(s,r,"object expected, %s found",n(r[0]))];if(void 0===r[0].zoom)return[new i(s,r,"object stop key must have zoom")];if(void 0===r[0].value)return[new i(s,r,"object stop key must have value")];if(d&&d>u(r[0].zoom))return[new i(s,r[0].zoom,"stop zoom values must appear in ascending order")];u(r[0].zoom)!==d&&(d=u(r[0].zoom),f=void 0,y={}),e=e.concat(a({key:s+"[0]",value:r[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:l,value:c}}))}else e=e.concat(c({key:s+"[0]",value:r[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec}));return e.concat(o({key:s+"[1]",value:r[1],valueSpec:m,style:t.style,styleSpec:t.styleSpec}))}function c(t){var e=n(t.value),r=u(t.value);if(h){if(e!==h)return[new i(t.key,t.value,"%s stop domain type must match previous stop domain type %s",e,h)]}else h=e;if("number"!==e&&"string"!==e&&"boolean"!==e)return[new i(t.key,t.value,"stop domain value must be a number, string, or boolean")];if("number"!==e&&"categorical"!==v){var o="number expected, %s found";return m["property-function"]&&void 0===v&&(o+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new i(t.key,t.value,o,e)]}return"categorical"!==v||"number"!==e||isFinite(r)&&Math.floor(r)===r?"categorical"!==v&&"number"===e&&void 0!==f&&r<f?[new i(t.key,t.value,"stop domain values must appear in ascending order")]:(f=r,"categorical"===v&&r in y?[new i(t.key,t.value,"stop domain values must be unique")]:(y[r]=!0,[])):[new i(t.key,t.value,"integer expected, found %s",r)]}function p(t){return o({key:t.key,value:t.value,valueSpec:m,style:t.style,styleSpec:t.styleSpec})}var h,f,d,m=t.valueSpec,v=u(t.value.type),y={},g="categorical"!==v&&void 0===t.value.property,_=!g,x="array"===n(t.value.stops)&&"array"===n(t.value.stops[0])&&"object"===n(t.value.stops[0][0]),b=a({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:e,default:p}});return"identity"===v&&g&&b.push(new i(t.key,t.value,'missing required property "property"')),"identity"===v||t.value.stops||b.push(new i(t.key,t.value,'missing required property "stops"')),"exponential"===v&&"piecewise-constant"===t.valueSpec.function&&b.push(new i(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(_&&!t.valueSpec["property-function"]?b.push(new i(t.key,t.value,"property functions not supported")):g&&!t.valueSpec["zoom-function"]&&b.push(new i(t.key,t.value,"zoom functions not supported"))),"categorical"!==v&&!x||void 0!==t.value.property||b.push(new i(t.key,t.value,'"property" property is required')),b}},{"../error/validation_error":109,"../util/get_type":126,"../util/unbundle_jsonlint":130,"./validate":131,"./validate_array":132,"./validate_number":143,"./validate_object":144}],139:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("./validate_string");e.exports=function(t){var e=t.value,r=t.key,o=n(t);return o.length?o:(-1===e.indexOf("{fontstack}")&&o.push(new i(r,e,'"glyphs" url must include a "{fontstack}" token')),-1===e.indexOf("{range}")&&o.push(new i(r,e,'"glyphs" url must include a "{range}" token')),o)}},{"../error/validation_error":109,"./validate_string":148}],140:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/unbundle_jsonlint"),o=t("./validate_object"),a=t("./validate_filter"),s=t("./validate_paint_property"),l=t("./validate_layout_property"),u=t("../util/extend");e.exports=function(t){var e=[],r=t.value,c=t.key,p=t.style,h=t.styleSpec;r.type||r.ref||e.push(new i(c,r,'either "type" or "ref" is required'));var f=n(r.type),d=n(r.ref);if(r.id)for(var m=n(r.id),v=0;v<t.arrayIndex;v++){var y=p.layers[v];n(y.id)===m&&e.push(new i(c,r.id,'duplicate layer id "%s", previously used at line %d',r.id,y.id.__line__))}if("ref"in r){["type","source","source-layer","filter","layout"].forEach(function(t){t in r&&e.push(new i(c,r[t],'"%s" is prohibited for ref layers',t))});var g;p.layers.forEach(function(t){n(t.id)===d&&(g=t)}),g?g.ref?e.push(new i(c,r.ref,"ref cannot reference another ref layer")):f=n(g.type):e.push(new i(c,r.ref,'ref layer "%s" not found',d))}else if("background"!==f)if(r.source){var _=p.sources&&p.sources[r.source],x=_&&n(_.type);_?"vector"===x&&"raster"===f?e.push(new i(c,r.source,'layer "%s" requires a raster source',r.id)):"raster"===x&&"raster"!==f?e.push(new i(c,r.source,'layer "%s" requires a vector source',r.id)):"vector"!==x||r["source-layer"]||e.push(new i(c,r,'layer "%s" must specify a "source-layer"',r.id)):e.push(new i(c,r.source,'source "%s" not found',r.source))}else e.push(new i(c,r,'missing required property "source"'));return e=e.concat(o({key:c,value:r,valueSpec:h.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(){return[]},filter:a,layout:function(t){return o({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return l(u({layerType:f},t))}}})},paint:function(t){return o({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return s(u({layerType:f},t))}}})}}}))}},{"../error/validation_error":109,"../util/extend":125,"../util/unbundle_jsonlint":130,"./validate_filter":137,"./validate_layout_property":141,"./validate_object":144,"./validate_paint_property":145}],141:[function(t,e,r){"use strict";var i=t("./validate_property");e.exports=function(t){return i(t,"layout")}},{"./validate_property":146}],142:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type"),o=t("./validate");e.exports=function(t){var e=t.value,r=t.styleSpec,a=r.light,s=t.style,l=[],u=n(e);if(void 0===e)return l;if("object"!==u)return l=l.concat([new i("light",e,"object expected, %s found",u)]);for(var c in e){var p=c.match(/^(.*)-transition$/);l=p&&a[p[1]]&&a[p[1]].transition?l.concat(o({key:c,value:e[c],valueSpec:r.transition,style:s,styleSpec:r})):a[c]?l.concat(o({key:c,value:e[c],valueSpec:a[c],style:s,styleSpec:r})):l.concat([new i(c,e[c],'unknown property "%s"',c)])}return l}},{"../error/validation_error":109,"../util/get_type":126,"./validate":131}],143:[function(t,e,r){"use strict";var i=t("../util/get_type"),n=t("../error/validation_error");e.exports=function(t){var e=t.key,r=t.value,o=t.valueSpec,a=i(r);return"number"!==a?[new n(e,r,"number expected, %s found",a)]:"minimum"in o&&r<o.minimum?[new n(e,r,"%s is less than the minimum value %s",r,o.minimum)]:"maximum"in o&&r>o.maximum?[new n(e,r,"%s is greater than the maximum value %s",r,o.maximum)]:[]}},{"../error/validation_error":109,"../util/get_type":126}],144:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/get_type"),o=t("./validate");e.exports=function(t){var e=t.key,r=t.value,a=t.valueSpec||{},s=t.objectElementValidators||{},l=t.style,u=t.styleSpec,c=[],p=n(r);if("object"!==p)return[new i(e,r,"object expected, %s found",p)];for(var h in r){var f=h.split(".")[0],d=a[f]||a["*"],m=void 0;if(s[f])m=s[f];else if(a[f])m=o;else if(s["*"])m=s["*"];else{if(!a["*"]){c.push(new i(e,r[h],'unknown property "%s"',h));continue}m=o}c=c.concat(m({key:(e?e+".":e)+h,value:r[h],valueSpec:d,style:l,styleSpec:u,object:r,objectKey:h}))}for(var v in a)a[v].required&&void 0===a[v].default&&void 0===r[v]&&c.push(new i(e,r,'missing required property "%s"',v));return c}},{"../error/validation_error":109,"../util/get_type":126,"./validate":131}],145:[function(t,e,r){"use strict";var i=t("./validate_property");e.exports=function(t){return i(t,"paint")}},{"./validate_property":146}],146:[function(t,e,r){"use strict";var i=t("./validate"),n=t("../error/validation_error"),o=t("../util/get_type");e.exports=function(t,e){var r=t.key,a=t.style,s=t.styleSpec,l=t.value,u=t.objectKey,c=s[e+"_"+t.layerType];if(!c)return[];var p=u.match(/^(.*)-transition$/);if("paint"===e&&p&&c[p[1]]&&c[p[1]].transition)return i({key:r,value:l,valueSpec:s.transition,style:a,styleSpec:s});var h=t.valueSpec||c[u];if(!h)return[new n(r,l,'unknown property "%s"',u)];var f;if("string"===o(l)&&h["property-function"]&&!h.tokens&&(f=/^{([^}]+)}$/.exec(l)))return[new n(r,l,'"%s" does not support interpolation syntax\nUse an identity property function instead: `{ "type": "identity", "property": %s` }`.',u,JSON.stringify(f[1]))];var d=[];return"symbol"===t.layerType&&"text-field"===u&&a&&!a.glyphs&&d.push(new n(r,l,'use of "text-field" requires a style "glyphs" property')),d.concat(i({key:t.key,value:l,valueSpec:h,style:a,styleSpec:s}))}},{"../error/validation_error":109,"../util/get_type":126,"./validate":131}],147:[function(t,e,r){"use strict";var i=t("../error/validation_error"),n=t("../util/unbundle_jsonlint"),o=t("./validate_object"),a=t("./validate_enum");e.exports=function(t){var e=t.value,r=t.key,s=t.styleSpec,l=t.style;if(!e.type)return[new i(r,e,'"type" is required')];var u=n(e.type),c=[];switch(u){case"vector":case"raster":if(c=c.concat(o({key:r,value:e,valueSpec:s.source_tile,style:t.style,styleSpec:s})),"url"in e)for(var p in e)["type","url","tileSize"].indexOf(p)<0&&c.push(new i(r+"."+p,e[p],'a source with a "url" property may not include a "%s" property',p));return c;case"geojson":return o({key:r,value:e,valueSpec:s.source_geojson,style:l,styleSpec:s});case"video":return o({key:r,value:e,valueSpec:s.source_video,style:l,styleSpec:s});case"image":return o({key:r,value:e,valueSpec:s.source_image,style:l,styleSpec:s});case"canvas":return o({key:r,value:e,valueSpec:s.source_canvas,style:l,styleSpec:s});default:return a({key:r+".type",value:e.type,valueSpec:{values:["vector","raster","geojson","video","image","canvas"]},style:l,styleSpec:s})}}},{"../error/validation_error":109,"../util/unbundle_jsonlint":130,"./validate_enum":136,"./validate_object":144}],148:[function(t,e,r){"use strict";var i=t("../util/get_type"),n=t("../error/validation_error");e.exports=function(t){var e=t.value,r=t.key,o=i(e);return"string"!==o?[new n(r,e,"string expected, %s found",o)]:[]}},{"../error/validation_error":109,"../util/get_type":126}],149:[function(t,e,r){"use strict";function i(t,e){e=e||l;var r=[];return r=r.concat(s({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:u,"*":function(){return[]}}})),e.$version>7&&t.constants&&(r=r.concat(a({key:"constants",value:t.constants,style:t,styleSpec:e}))),n(r)}function n(t){return[].concat(t).sort(function(t,e){return t.line-e.line})}function o(t){return function(){return n(t.apply(this,arguments))}}var a=t("./validate/validate_constants"),s=t("./validate/validate"),l=t("./reference/latest"),u=t("./validate/validate_glyphs_url");i.source=o(t("./validate/validate_source")),i.light=o(t("./validate/validate_light")),i.layer=o(t("./validate/validate_layer")),i.filter=o(t("./validate/validate_filter")),i.paintProperty=o(t("./validate/validate_paint_property")),i.layoutProperty=o(t("./validate/validate_layout_property")),e.exports=i},{"./reference/latest":123,"./validate/validate":131,"./validate/validate_constants":135,"./validate/validate_filter":137,"./validate/validate_glyphs_url":139,"./validate/validate_layer":140,"./validate/validate_layout_property":141,"./validate/validate_light":142,"./validate/validate_paint_property":145,"./validate/validate_source":147}],150:[function(t,e,r){"use strict";var i=function(){this.n=0,this.times=[]};i.prototype.stopped=function(){return this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()}),!this.times.length},i.prototype.set=function(t){return this.times.push({id:this.n,time:t+(new Date).getTime()}),this.n++},i.prototype.cancel=function(t){this.times=this.times.filter(function(e){return e.id!==t})},e.exports=i},{}],151:[function(t,e,r){"use strict";var i=t("../style-spec/reference/latest"),n=t("../util/util"),o=t("../util/evented"),a=t("./validate_style"),s=t("./style_declaration"),l=t("./style_transition"),u=["anchor","color","position","intensity"],c=i.light,p=function(t){function e(e){t.call(this),this.set(e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){var e=this;if(!this._validate(a.light,t)){this._declarations={},this._transitions={},this._transitionOptions={},this.calculated={},t=n.extend({anchor:c.anchor.default,color:c.color.default,position:c.position.default,intensity:c.intensity.default},t);for(var r=0,i=u;r<i.length;r+=1){var o=i[r];e._declarations[o]=new s(c[o],t[o])}return this}},e.prototype.getLight=function(){return{anchor:this.getLightProperty("anchor"),color:this.getLightProperty("color"),position:this.getLightProperty("position"),intensity:this.getLightProperty("intensity")}},e.prototype.getLightProperty=function(t){return n.endsWith(t,"-transition")?this._transitionOptions[t]:this._declarations[t]&&this._declarations[t].value},e.prototype.getLightValue=function(t,e){if("position"===t){var r=this._transitions[t].calculate(e),i=n.sphericalToCartesian(r);return{x:i[0],y:i[1],z:i[2]}}return this._transitions[t].calculate(e)},e.prototype.setLight=function(t){var e=this;if(!this._validate(a.light,t))for(var r in t){var i=t[r];n.endsWith(r,"-transition")?e._transitionOptions[r]=i:null===i||void 0===i?delete e._declarations[r]:e._declarations[r]=new s(c[r],i)}},e.prototype.recalculate=function(t){var e=this;for(var r in e._declarations)e.calculated[r]=e.getLightValue(r,{zoom:t})},e.prototype._applyLightDeclaration=function(t,e,r,i,o){var a=r.transition?this._transitions[t]:void 0,u=c[t];if(null!==e&&void 0!==e||(e=new s(u,u.default)),!a||a.declaration.json!==e.json){var p=n.extend({duration:300,delay:0},i,this.getLightProperty(t+"-transition")),h=this._transitions[t]=new l(u,e,a,p);h.instant()||(h.loopID=o.set(h.endTime-Date.now())),a&&o.cancel(a.loopID)}},e.prototype.updateLightTransitions=function(t,e,r){var i,n=this;for(i in n._declarations)n._applyLightDeclaration(i,n._declarations[i],t,e,r)},e.prototype._validate=function(t,e){return a.emitErrors(this,t.call(a,n.extend({value:e,style:{glyphs:!0,sprite:!0},styleSpec:i})))},e}(o);e.exports=p},{"../style-spec/reference/latest":123,"../util/evented":210,"../util/util":223,"./style_declaration":157,"./style_transition":165,"./validate_style":166}],152:[function(t,e,r){"use strict";var i=t("../util/mapbox"),n=i.normalizeGlyphsURL,o=t("../util/ajax"),a=t("./parse_glyph_pbf");e.exports=function(t,e,r,i,s){var l=256*e,u=l+255,c=i(n(r).replace("{fontstack}",t).replace("{range}",l+"-"+u),o.ResourceType.Glyphs);o.getArrayBuffer(c,function(t,e){if(t)s(t);else if(e){for(var r={},i=0,n=a(e.data);i<n.length;i+=1){var o=n[i];r[o.id]=o}s(null,r)}})}},{"../util/ajax":201,"../util/mapbox":217,"./parse_glyph_pbf":154}],153:[function(t,e,r){"use strict";var i=t("../util/ajax"),n=t("../util/browser"),o=t("../util/mapbox"),a=o.normalizeSpriteURL,s=t("../util/image"),l=s.RGBAImage;e.exports=function(t,e,r){function o(){if(c)r(c);else if(s&&u){var t=n.getImageData(u),e={};for(var i in s){var o=s[i],a=o.width,p=o.height,h=o.x,f=o.y,d=o.sdf,m=o.pixelRatio,v=l.create({width:a,height:p});l.copy(t,v,{x:h,y:f},{x:0,y:0},{width:a,height:p}),e[i]={data:v,pixelRatio:m,sdf:d}}r(null,e)}}if(!t)return void r(null,{});var s,u,c,p=n.devicePixelRatio>1?"@2x":"";i.getJSON(e(a(t,p,".json"),i.ResourceType.SpriteJSON),function(t,e){c||(c=t,s=e,o())}),i.getImage(e(a(t,p,".png"),i.ResourceType.SpriteImage),function(t,e){c||(c=t,u=e,o())})}},{"../util/ajax":201,"../util/browser":202,"../util/image":213,"../util/mapbox":217}],154:[function(t,e,r){"use strict";function i(t,e,r){1===t&&r.readMessage(n,e)}function n(t,e,r){if(3===t){var i=r.readMessage(o,{}),n=i.id,a=i.bitmap,l=i.width,c=i.height,p=i.left,h=i.top,f=i.advance;e.push({id:n,bitmap:s.create({width:l+2*u,height:c+2*u},a),metrics:{width:l,height:c,left:p,top:h,advance:f}})}}function o(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}var a=t("../util/image"),s=a.AlphaImage,l=t("pbf"),u=3;e.exports=function(t){return new l(t).readFields(i,[])},e.exports.GLYPH_PBF_BORDER=u},{"../util/image":213,pbf:29}],155:[function(t,e,r){"use strict";function i(t,e,r){return e.isPaintValueFeatureConstant(t)?e.paint[t]:r.programConfigurations.get(e.id).paintPropertyStatistics[t].max}function n(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function o(t,e,r,i,n){if(!e[0]&&!e[1])return t;var o=a.convert(e);"viewport"===r&&o._rotate(-i);for(var s=[],l=0;l<t.length;l++){for(var u=t[l],c=[],p=0;p<u.length;p++)c.push(u[p].sub(o._mult(n)));s.push(c)}return s}var a=t("@mapbox/point-geometry");e.exports={getMaximumPaintValue:i,translateDistance:n,translate:o}},{"@mapbox/point-geometry":2}],156:[function(t,e,r){"use strict";var i=t("../util/evented"),n=t("./style_layer"),o=t("./load_sprite"),a=t("../render/image_manager"),s=t("../render/glyph_manager"),l=t("./light"),u=t("../render/line_atlas"),c=t("../util/util"),p=t("../util/ajax"),h=t("../util/mapbox"),f=t("../util/browser"),d=t("../util/dispatcher"),m=t("./animation_loop"),v=t("./validate_style"),y=t("../source/source").getType,g=t("../source/source").setType,_=t("../source/query_features"),x=t("../source/source_cache"),b=t("../style-spec/reference/latest"),w=t("../style-spec/function"),T=t("../util/global_worker_pool"),S=t("../style-spec/deref"),z=t("../style-spec/diff"),A=t("../source/rtl_text_plugin"),C=c.pick(z.operations,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition"]),E=c.pick(z.operations,["setCenter","setZoom","setBearing","setPitch"]),k=function(t){function e(e,r,i){var n=this;t.call(this),i=c.extend({validate:"string"!=typeof e||!h.isMapboxURL(e)},i);var l=function(t,e){return n.map?n.map._transformRequest(t,e):{url:t}};this.map=r,this.animationLoop=r&&r.animationLoop||new m,this.dispatcher=new d(T(),this),this.imageManager=new a,this.glyphManager=new s(l,i.localIdeographFontFamily),this.lineAtlas=new u(256,512),this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory={},this._loaded=!1,c.bindAll(["_redoPlacement"],this),this._resetUpdates(),this.setEventedParent(r),this.fire("dataloading",{dataType:"style"});var y=this;this._rtlTextPluginCallback=A.registerForPluginAvailability(function(t){y.dispatcher.broadcast("loadRTLTextPlugin",t.pluginBlobURL,t.errorCallback);for(var e in y.sourceCaches)y.sourceCaches[e].reload()});var g=function(t,e){if(t)n.fire("error",{error:t});else if(e){if(i.validate&&v.emitErrors(n,v(e)))return;n._loaded=!0,n.stylesheet=e,n.updateClasses();for(var r in e.sources)n.addSource(r,e.sources[r],i);o(e.sprite,l,function(t,e){if(t)n.fire("error",t);else if(e)for(var r in e)n.imageManager.addImage(r,e[r]);n.imageManager.setLoaded(!0)}),n.glyphManager.setURL(e.glyphs),n._resolve(),n.fire("data",{dataType:"style"}),n.fire("style.load")}};"string"==typeof e?p.getJSON(l(h.normalizeStyleURL(e),p.ResourceType.Style),g):f.frame(function(){return g(null,e)}),this.on("data",function(t){if("source"===t.dataType&&"metadata"===t.sourceDataType){var e=n.sourceCaches[t.sourceId];if(e){var r=e.getSource();if(r&&r.vectorLayerIds)for(var i in n._layers){var o=n._layers[i];o.source===r.id&&n._validateLayer(o)}}}})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._validateLayer=function(t){var e=this.sourceCaches[t.source];if(e){var r=t.sourceLayer;if(r){var i=e.getSource();("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(r))&&this.fire("error",{error:new Error('Source layer "'+r+'" does not exist on source "'+i.id+'" as specified by style layer "'+t.id+'"')})}}},e.prototype.loaded=function(){var t=this;if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var e in t.sourceCaches)if(!t.sourceCaches[e].loaded())return!1;return!!this.imageManager.isLoaded()},e.prototype._resolve=function(){var t=this,e=S(this.stylesheet.layers);this._order=e.map(function(t){return t.id}),this._layers={};for(var r=0,i=e;r<i.length;r+=1){var o=i[r];o=n.create(o),o.setEventedParent(t,{layer:{id:o.id}}),t._layers[o.id]=o}this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new l(this.stylesheet.light)},e.prototype._serializeLayers=function(t){var e=this;return t.map(function(t){return e._layers[t].serialize()})},e.prototype._applyClasses=function(t,e){var r=this;if(this._loaded){t=t||[],e=e||{transition:!0};var i=this.stylesheet.transition||{},n=this._updatedAllPaintProps?this._layers:this._updatedPaintProps;for(var o in n){var a=r._layers[o],s=r._updatedPaintProps[o];if(r._updatedAllPaintProps||s.all)a.updatePaintTransitions(t,e,i,r.animationLoop,r.zoomHistory);else for(var l in s)r._layers[o].updatePaintTransition(l,t,e,i,r.animationLoop,r.zoomHistory)}this.light.updateLightTransitions(e,i,this.animationLoop)}},e.prototype._recalculate=function(t){var e=this;if(this._loaded){for(var r in e.sourceCaches)e.sourceCaches[r].used=!1;this._updateZoomHistory(t);for(var i=0,n=e._order;i<n.length;i+=1){var o=n[i],a=e._layers[o];a.recalculate(t),!a.isHidden(t)&&a.source&&(e.sourceCaches[a.source].used=!0)}this.light.recalculate(t),Math.floor(this.z)!==Math.floor(t)&&this.animationLoop.set(300),this.z=t}},e.prototype._updateZoomHistory=function(t){var e=this.zoomHistory;void 0===e.lastIntegerZoom&&(e.lastIntegerZoom=Math.floor(t),e.lastIntegerZoomTime=0,e.lastZoom=t),Math.floor(e.lastZoom)<Math.floor(t)?(e.lastIntegerZoom=Math.floor(t),e.lastIntegerZoomTime=Date.now()):Math.floor(e.lastZoom)>Math.floor(t)&&(e.lastIntegerZoom=Math.floor(t+1),e.lastIntegerZoomTime=Date.now()),e.lastZoom=t},e.prototype._checkLoaded=function(){if(!this._loaded)throw new Error("Style is not done loading")},e.prototype.update=function(t,e){var r=this;if(this._changed){var i=Object.keys(this._updatedLayers),n=Object.keys(this._removedLayers);(i.length||n.length||this._updatedSymbolOrder)&&this._updateWorkerLayers(i,n);for(var o in r._updatedSources){var a=r._updatedSources[o];"reload"===a?r._reloadSource(o):"clear"===a&&r._clearSource(o)}this._applyClasses(t,e),this._resetUpdates(),this.fire("data",{dataType:"style"})}},e.prototype._updateWorkerLayers=function(t,e){var r=this,i=this._updatedSymbolOrder?this._order.filter(function(t){return"symbol"===r._layers[t].type}):null;this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(t),removedIds:e,symbolOrder:i})},e.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSymbolOrder=!1,this._updatedSources={},this._updatedPaintProps={},this._updatedAllPaintProps=!1},e.prototype.setState=function(t){var e=this;if(this._checkLoaded(),v.emitErrors(this,v(t)))return!1;t=c.clone(t),t.layers=S(t.layers);var r=z(this.serialize(),t).filter(function(t){return!(t.command in E)});if(0===r.length)return!1;var i=r.filter(function(t){return!(t.command in C)});if(i.length>0)throw new Error("Unimplemented: "+i.map(function(t){return t.command}).join(", ")+".");return r.forEach(function(t){"setTransition"!==t.command&&e[t.command].apply(e,t.args)}),this.stylesheet=t,!0},e.prototype.addImage=function(t,e){if(this.imageManager.getImage(t))return this.fire("error",{error:new Error("An image with this name already exists.")});this.imageManager.addImage(t,e),this.fire("data",{dataType:"style"})},e.prototype.removeImage=function(t){if(!this.imageManager.getImage(t))return this.fire("error",{error:new Error("No image with this name exists.")});this.imageManager.removeImage(t),this.fire("data",{dataType:"style"})},e.prototype.addSource=function(t,e,r){var i=this;if(this._checkLoaded(),void 0!==this.sourceCaches[t])throw new Error("There is already a source with this ID");if(!e.type)throw new Error("The type property must be defined, but the only the following properties were given: "+Object.keys(e).join(", ")+".");if(!(["vector","raster","geojson","video","image","canvas"].indexOf(e.type)>=0&&this._validate(v.source,"sources."+t,e,null,r))){var n=this.sourceCaches[t]=new x(t,e,this.dispatcher);n.style=this,n.setEventedParent(this,function(){return{isSourceLoaded:i.loaded(),source:n.serialize(),sourceId:t}}),n.onAdd(this.map),this._changed=!0}},e.prototype.removeSource=function(t){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error("There is no source with this ID");var e=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],e.fire("data",{sourceDataType:"metadata",dataType:"source",sourceId:t}),e.setEventedParent(null),e.clearTiles(),e.onRemove&&e.onRemove(this.map),this._changed=!0},e.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},e.prototype.addLayer=function(t,e,r){this._checkLoaded();var i=t.id;if("object"==typeof t.source&&(this.addSource(i,t.source),t=c.clone(t),t=c.extend(t,{source:i})),!this._validate(v.layer,"layers."+i,t,{arrayIndex:-1},r)){var o=n.create(t);this._validateLayer(o),o.setEventedParent(this,{layer:{id:i}});var a=e?this._order.indexOf(e):this._order.length;if(this._order.splice(a,0,i),this._layers[i]=o,this._removedLayers[i]&&o.source){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",this.sourceCaches[o.source].pause())}this._updateLayer(o),"symbol"===o.type&&(this._updatedSymbolOrder=!0),this.updateClasses(i)}},e.prototype.moveLayer=function(t,e){this._checkLoaded(),this._changed=!0;var r=this._layers[t];if(!r)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot be moved.")});var i=this._order.indexOf(t);this._order.splice(i,1);var n=e?this._order.indexOf(e):this._order.length;this._order.splice(n,0,t),"symbol"===r.type&&(this._updatedSymbolOrder=!0,r.source&&!this._updatedSources[r.source]&&(this._updatedSources[r.source]="reload",this.sourceCaches[r.source].pause()))},e.prototype.removeLayer=function(t){this._checkLoaded();var e=this._layers[t];if(!e)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot be removed.")});e.setEventedParent(null);var r=this._order.indexOf(t);this._order.splice(r,1),"symbol"===e.type&&(this._updatedSymbolOrder=!0),this._changed=!0,this._removedLayers[t]=e,delete this._layers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t]},e.prototype.getLayer=function(t){return this._layers[t]},e.prototype.setLayerZoomRange=function(t,e,r){this._checkLoaded();var i=this.getLayer(t);if(!i)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot have zoom extent.")});i.minzoom===e&&i.maxzoom===r||(null!=e&&(i.minzoom=e),null!=r&&(i.maxzoom=r),this._updateLayer(i))},e.prototype.setFilter=function(t,e){this._checkLoaded();var r=this.getLayer(t);if(!r)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot be filtered.")});null!==e&&void 0!==e&&this._validate(v.filter,"layers."+r.id+".filter",e)||c.deepEqual(r.filter,e)||(r.filter=c.clone(e),this._updateLayer(r))},e.prototype.getFilter=function(t){return c.clone(this.getLayer(t).filter)},e.prototype.setLayoutProperty=function(t,e,r){this._checkLoaded();var i=this.getLayer(t);if(!i)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot be styled.")});c.deepEqual(i.getLayoutProperty(e),r)||(i.setLayoutProperty(e,r),this._updateLayer(i))},e.prototype.getLayoutProperty=function(t,e){return this.getLayer(t).getLayoutProperty(e)},e.prototype.setPaintProperty=function(t,e,r,i){this._checkLoaded();var n=this.getLayer(t);if(!n)return void this.fire("error",{error:new Error("The layer '"+t+"' does not exist in the map's style and cannot be styled.")});if(!c.deepEqual(n.getPaintProperty(e,i),r)){var o=n.isPaintValueFeatureConstant(e);n.setPaintProperty(e,r,i),!(r&&w.isFunctionDefinition(r)&&"$zoom"!==r.property&&void 0!==r.property)&&o||this._updateLayer(n),this.updateClasses(t,e)}},e.prototype.getPaintProperty=function(t,e,r){return this.getLayer(t).getPaintProperty(e,r)},e.prototype.getTransition=function(){return c.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},e.prototype.updateClasses=function(t,e){if(this._changed=!0,t){var r=this._updatedPaintProps;r[t]||(r[t]={}),r[t][e||"all"]=!0}else this._updatedAllPaintProps=!0},e.prototype.serialize=function(){var t=this;return c.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:c.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._order.map(function(e){return t._layers[e].serialize()})},function(t){return void 0!==t})},e.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0},e.prototype._flattenRenderedFeatures=function(t){for(var e=this,r=[],i=this._order.length-1;i>=0;i--)for(var n=e._order[i],o=0,a=t;o<a.length;o+=1){var s=a[o],l=s[n];if(l)for(var u=0,c=l;u<c.length;u+=1){var p=c[u];r.push(p)}}return r},e.prototype.queryRenderedFeatures=function(t,e,r,i){var n=this;e&&e.filter&&this._validate(v.filter,"queryRenderedFeatures.filter",e.filter);var o={};if(e&&e.layers){if(!Array.isArray(e.layers))return this.fire("error",{error:"parameters.layers must be an Array."}),[];for(var a=0,s=e.layers;a<s.length;a+=1){var l=s[a],u=n._layers[l];if(!u)return n.fire("error",{error:"The layer '"+l+"' does not exist in the map's style and cannot be queried for features."}),[];o[u.source]=!0}}var c=[];for(var p in n.sourceCaches)if(!e.layers||o[p]){var h=_.rendered(n.sourceCaches[p],n._layers,t,e,r,i);c.push(h)}return this._flattenRenderedFeatures(c)},e.prototype.querySourceFeatures=function(t,e){e&&e.filter&&this._validate(v.filter,"querySourceFeatures.filter",e.filter);var r=this.sourceCaches[t];return r?_.source(r,e):[]},e.prototype.addSourceType=function(t,e,r){return y(t)?r(new Error('A source type called "'+t+'" already exists.')):(g(t,e),e.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:e.workerSourceURL},r):r(null,null))},e.prototype.getLight=function(){return this.light.getLight()},e.prototype.setLight=function(t,e){this._checkLoaded();var r=this.light.getLight(),i=!1;for(var n in t)if(!c.deepEqual(t[n],r[n])){i=!0;break}if(i){var o=this.stylesheet.transition||{};this.light.setLight(t),this.light.updateLightTransitions(e||{transition:!0},o,this.animationLoop)}},e.prototype._validate=function(t,e,r,i,n){return(!n||!1!==n.validate)&&v.emitErrors(this,t.call(v,c.extend({key:e,style:this.serialize(),value:r,styleSpec:b},i)))},e.prototype._remove=function(){var t=this;A.evented.off("pluginAvailable",this._rtlTextPluginCallback);for(var e in t.sourceCaches)t.sourceCaches[e].clearTiles();this.dispatcher.remove()},e.prototype._clearSource=function(t){this.sourceCaches[t].clearTiles()},e.prototype._reloadSource=function(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()},e.prototype._updateSources=function(t){var e=this;for(var r in e.sourceCaches)e.sourceCaches[r].update(t)},e.prototype._redoPlacement=function(){var t=this;for(var e in t.sourceCaches)t.sourceCaches[e].redoPlacement()},e.prototype.getImages=function(t,e,r){this.imageManager.getImages(e.icons,r)},e.prototype.getGlyphs=function(t,e,r){this.glyphManager.getGlyphs(e.stacks,r)},e}(i);e.exports=k},{"../render/glyph_manager":75,"../render/image_manager":77,"../render/line_atlas":78,"../source/query_features":94,"../source/rtl_text_plugin":96,"../source/source":97,"../source/source_cache":98,"../style-spec/deref":107,"../style-spec/diff":108,"../style-spec/function":112,"../style-spec/reference/latest":123,"../util/ajax":201,"../util/browser":202,"../util/dispatcher":208,"../util/evented":210,"../util/global_worker_pool":212,"../util/mapbox":217,"../util/util":223,"./animation_loop":150,"./light":151,"./load_sprite":153,"./style_layer":158,"./validate_style":166}],157:[function(t,e,r){"use strict";var i=t("../style-spec/function"),n=t("../util/util"),o=function(t,e){var r=this;if(this.value=n.clone(e),this.isFunction=i.isFunctionDefinition(e),this.json=JSON.stringify(this.value),this.minimum=t.minimum,this.function=i(this.value,t),this.isFeatureConstant=this.function.isFeatureConstant,this.isZoomConstant=this.function.isZoomConstant,this.isFeatureConstant||this.isZoomConstant){if(!this.isZoomConstant){this.stopZoomLevels=[];for(var o=0,a=r.value.stops;o<a.length;o+=1){var s=a[o];r.stopZoomLevels.indexOf(s[0])<0&&r.stopZoomLevels.push(s[0])}}}else{this.stopZoomLevels=[];for(var l=[],u=0,c=r.value.stops;u<c.length;u+=1){var p=c[u],h=p[0].zoom;r.stopZoomLevels.indexOf(h)<0&&(r.stopZoomLevels.push(h),l.push([h,l.length]))}this._functionInterpolationT=i({type:"exponential",stops:l,base:e.base},{type:"number"})}};o.prototype.calculate=function(t,e){var r=this.function(t&&t.zoom,e||{});return void 0!==this.minimum&&r<this.minimum?this.minimum:r},o.prototype.calculateInterpolationT=function(t){return this.isFeatureConstant||this.isZoomConstant?0:this._functionInterpolationT(t&&t.zoom,{})},e.exports=o},{"../style-spec/function":112,"../util/util":223}],158:[function(t,e,r){"use strict";function i(t){return t.value}var n=t("../util/util"),o=t("./style_transition"),a=t("./style_declaration"),s=t("../style-spec/reference/latest"),l=t("./validate_style"),u=t("./../style-spec/util/parse_color"),c=t("../util/evented"),p=function(t){function e(e){var r=this;t.call(this),this.id=e.id,this.metadata=e.metadata,this.type=e.type,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),this.paint={},this.layout={},this._paintSpecifications=s["paint_"+this.type],this._layoutSpecifications=s["layout_"+this.type],this._paintTransitions={},this._paintTransitionOptions={},this._paintDeclarations={},this._layoutDeclarations={},this._layoutFunctions={};var i,n,o={validate:!1};for(var a in e){var l=a.match(/^paint(?:\.(.*))?$/);if(l){var u=l[1]||"";for(i in e[a])r.setPaintProperty(i,e[a][i],u,o)}}for(n in e.layout)r.setLayoutProperty(n,e.layout[n],o);for(i in r._paintSpecifications)r.paint[i]=r.getPaintValue(i);for(n in r._layoutSpecifications)r._updateLayoutValue(n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setLayoutProperty=function(t,e,r){if(null==e)delete this._layoutDeclarations[t];else{var i="layers."+this.id+".layout."+t;if(this._validate(l.layoutProperty,i,t,e,r))return;this._layoutDeclarations[t]=new a(this._layoutSpecifications[t],e)}this._updateLayoutValue(t)},e.prototype.getLayoutProperty=function(t){return this._layoutDeclarations[t]&&this._layoutDeclarations[t].value},e.prototype.getLayoutValue=function(t,e,r){var i=this._layoutSpecifications[t],n=this._layoutDeclarations[t];return n?n.calculate(e,r):i.default},e.prototype.setPaintProperty=function(t,e,r,i){var o="layers."+this.id+(r?'["paint.'+r+'"].':".paint.")+t;if(n.endsWith(t,"-transition"))if(this._paintTransitionOptions[r||""]||(this._paintTransitionOptions[r||""]={}),null===e||void 0===e)delete this._paintTransitionOptions[r||""][t];else{if(this._validate(l.paintProperty,o,t,e,i))return;this._paintTransitionOptions[r||""][t]=e}else if(this._paintDeclarations[r||""]||(this._paintDeclarations[r||""]={}),null===e||void 0===e)delete this._paintDeclarations[r||""][t];else{if(this._validate(l.paintProperty,o,t,e,i))return;this._paintDeclarations[r||""][t]=new a(this._paintSpecifications[t],e)}},e.prototype.getPaintProperty=function(t,e){return e=e||"",n.endsWith(t,"-transition")?this._paintTransitionOptions[e]&&this._paintTransitionOptions[e][t]:this._paintDeclarations[e]&&this._paintDeclarations[e][t]&&this._paintDeclarations[e][t].value},e.prototype.getPaintValue=function(t,e,r){var i=this._paintSpecifications[t],n=this._paintTransitions[t];return n?n.calculate(e,r):"color"===i.type&&i.default?u(i.default):i.default},e.prototype.getPaintValueStopZoomLevels=function(t){var e=this._paintTransitions[t];return e?e.declaration.stopZoomLevels:[]},e.prototype.getLayoutValueStopZoomLevels=function(t){var e=this._layoutDeclarations[t];return e?e.stopZoomLevels:[]},e.prototype.getPaintInterpolationT=function(t,e){return this._paintTransitions[t].declaration.calculateInterpolationT(e)},e.prototype.getLayoutInterpolationT=function(t,e){return this._layoutDeclarations[t].calculateInterpolationT(e)},e.prototype.isPaintValueFeatureConstant=function(t){var e=this._paintTransitions[t];return!e||e.declaration.isFeatureConstant},e.prototype.isLayoutValueFeatureConstant=function(t){var e=this._layoutDeclarations[t];return!e||e.isFeatureConstant},e.prototype.isPaintValueZoomConstant=function(t){var e=this._paintTransitions[t];return!e||e.declaration.isZoomConstant},e.prototype.isLayoutValueZoomConstant=function(t){var e=this._layoutDeclarations[t];return!e||e.isZoomConstant},e.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this.layout.visibility},e.prototype.updatePaintTransitions=function(t,e,r,i,o){for(var a=this,s=n.extend({},this._paintDeclarations[""]),l=0;l<t.length;l++)n.extend(s,a._paintDeclarations[t[l]]);var u;for(u in s)a._applyPaintDeclaration(u,s[u],e,r,i,o);for(u in a._paintTransitions)u in s||a._applyPaintDeclaration(u,null,e,r,i,o)},e.prototype.updatePaintTransition=function(t,e,r,i,n,o){for(var a=this,s=this._paintDeclarations[""][t],l=0;l<e.length;l++){var u=a._paintDeclarations[e[l]];u&&u[t]&&(s=u[t])}this._applyPaintDeclaration(t,s,r,i,n,o)},e.prototype.recalculate=function(t){var e=this;for(var r in e._paintTransitions)e.paint[r]=e.getPaintValue(r,{zoom:t});for(var i in e._layoutFunctions)e.layout[i]=e.getLayoutValue(i,{zoom:t})},e.prototype.serialize=function(){var t=this,e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:n.mapObject(this._layoutDeclarations,i)};for(var r in t._paintDeclarations)e[""===r?"paint":"paint."+r]=n.mapObject(t._paintDeclarations[r],i);return n.filterObject(e,function(t,e){return void 0!==t&&!("layout"===e&&!Object.keys(t).length)})},e.prototype._applyPaintDeclaration=function(t,e,r,i,s,l){var u=r.transition?this._paintTransitions[t]:void 0,c=this._paintSpecifications[t];if(null!==e&&void 0!==e||(e=new a(c,c.default)),!u||u.declaration.json!==e.json){var p=n.extend({duration:300,delay:0},i,this.getPaintProperty(t+"-transition")),h=this._paintTransitions[t]=new o(c,e,u,p,l);h.instant()||(h.loopID=s.set(h.endTime-Date.now())),u&&s.cancel(u.loopID)}},e.prototype._updateLayoutValue=function(t){var e=this._layoutDeclarations[t];e&&e.isFunction?this._layoutFunctions[t]=!0:(delete this._layoutFunctions[t],this.layout[t]=this.getLayoutValue(t))},e.prototype._validate=function(t,e,r,i,n){return(!n||!1!==n.validate)&&l.emitErrors(this,t.call(l,{key:e,layerType:this.type,objectKey:r,value:i,styleSpec:s,style:{glyphs:!0,sprite:!0}}))},e.prototype.has3DPass=function(){return!1},e}(c);e.exports=p;var h={circle:t("./style_layer/circle_style_layer"),fill:t("./style_layer/fill_style_layer"),"fill-extrusion":t("./style_layer/fill_extrusion_style_layer"),line:t("./style_layer/line_style_layer"),symbol:t("./style_layer/symbol_style_layer"),background:p,raster:p};p.create=function(t){return new h[t.type](t)}},{"../style-spec/reference/latest":123,"../util/evented":210,"../util/util":223,"./../style-spec/util/parse_color":128,"./style_declaration":157,"./style_layer/circle_style_layer":159,"./style_layer/fill_extrusion_style_layer":160,"./style_layer/fill_style_layer":161,"./style_layer/line_style_layer":162,"./style_layer/symbol_style_layer":163,"./style_transition":165,"./validate_style":166}],159:[function(t,e,r){"use strict";var i=t("../style_layer"),n=t("../../data/bucket/circle_bucket"),o=t("../../util/intersection_tests"),a=o.multiPolygonIntersectsBufferedMultiPoint,s=t("../query_utils"),l=s.getMaximumPaintValue,u=s.translateDistance,c=s.translate,p=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new n(t)},e.prototype.queryRadius=function(t){return l("circle-radius",this,t)+u(this.paint["circle-translate"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o){var s=c(t,this.getPaintValue("circle-translate",{zoom:i},e.properties),this.getPaintValue("circle-translate-anchor",{zoom:i},e.properties),n,o),l=this.getPaintValue("circle-radius",{zoom:i},e.properties)*o;return a(s,r,l)},e}(i);e.exports=p},{"../../data/bucket/circle_bucket":43,"../../util/intersection_tests":214,"../query_utils":155,"../style_layer":158}],160:[function(t,e,r){"use strict";var i=t("../style_layer"),n=t("../../data/bucket/fill_extrusion_bucket"),o=t("../../util/intersection_tests"),a=o.multiPolygonIntersectsMultiPolygon,s=t("../query_utils"),l=s.translateDistance,u=s.translate,c=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,r,i){var n=t.prototype.getPaintValue.call(this,e,r,i);return"fill-extrusion-color"===e&&n&&(n[3]=1),n},e.prototype.createBucket=function(t){return new n(t)},e.prototype.queryRadius=function(){return l(this.paint["fill-extrusion-translate"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o){var s=u(t,this.getPaintValue("fill-extrusion-translate",{zoom:i},e.properties),this.getPaintValue("fill-extrusion-translate-anchor",{zoom:i},e.properties),n,o);return a(s,r)},e.prototype.has3DPass=function(){return 0!==this.paint["fill-extrusion-opacity"]&&"none"!==this.layout.visibility},e}(i);e.exports=c},{"../../data/bucket/fill_extrusion_bucket":45,"../../util/intersection_tests":214,"../query_utils":155,"../style_layer":158}],161:[function(t,e,r){"use strict";var i=t("../style_layer"),n=t("../../data/bucket/fill_bucket"),o=t("../../util/intersection_tests"),a=o.multiPolygonIntersectsMultiPolygon,s=t("../query_utils"),l=s.translateDistance,u=s.translate,c=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,r,i){var n=this;if("fill-outline-color"===e){if(void 0===this.getPaintProperty("fill-outline-color"))return t.prototype.getPaintValue.call(this,"fill-color",r,i);for(var o=this._paintTransitions["fill-outline-color"];o;){if(!(o&&o.declaration&&o.declaration.value))return t.prototype.getPaintValue.call(n,"fill-color",r,i);o=o.oldTransition}}return t.prototype.getPaintValue.call(this,e,r,i)},e.prototype.getPaintValueStopZoomLevels=function(e){return"fill-outline-color"===e&&void 0===this.getPaintProperty("fill-outline-color")?t.prototype.getPaintValueStopZoomLevels.call(this,"fill-color"):t.prototype.getPaintValueStopZoomLevels.call(this,e)},e.prototype.getPaintInterpolationT=function(e,r){return"fill-outline-color"===e&&void 0===this.getPaintProperty("fill-outline-color")?t.prototype.getPaintInterpolationT.call(this,"fill-color",r):t.prototype.getPaintInterpolationT.call(this,e,r)},e.prototype.isPaintValueFeatureConstant=function(e){return"fill-outline-color"===e&&void 0===this.getPaintProperty("fill-outline-color")?t.prototype.isPaintValueFeatureConstant.call(this,"fill-color"):t.prototype.isPaintValueFeatureConstant.call(this,e)},e.prototype.isPaintValueZoomConstant=function(e){return"fill-outline-color"===e&&void 0===this.getPaintProperty("fill-outline-color")?t.prototype.isPaintValueZoomConstant.call(this,"fill-color"):t.prototype.isPaintValueZoomConstant.call(this,e)},e.prototype.createBucket=function(t){return new n(t)},e.prototype.queryRadius=function(){return l(this.paint["fill-translate"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o){var s=u(t,this.getPaintValue("fill-translate",{zoom:i},e.properties),this.getPaintValue("fill-translate-anchor",{zoom:i},e.properties),n,o);return a(s,r)},e}(i);e.exports=c},{"../../data/bucket/fill_bucket":44,"../../util/intersection_tests":214,"../query_utils":155,"../style_layer":158}],162:[function(t,e,r){"use strict";function i(t,e){return e>0?e+2*t:t}function n(t,e){for(var r=[],i=new o(0,0),n=0;n<t.length;n++){for(var a=t[n],s=[],l=0;l<a.length;l++){var u=a[l-1],c=a[l],p=a[l+1],h=0===l?i:c.sub(u)._unit()._perp(),f=l===a.length-1?i:p.sub(c)._unit()._perp(),d=h._add(f)._unit(),m=d.x*f.x+d.y*f.y;d._mult(1/m),s.push(d._mult(e)._add(c))}r.push(s)}return r}var o=t("@mapbox/point-geometry"),a=t("../style_layer"),s=t("../../data/bucket/line_bucket"),l=t("../../util/intersection_tests"),u=l.multiPolygonIntersectsBufferedMultiLine,c=t("../query_utils"),p=c.getMaximumPaintValue,h=c.translateDistance,f=c.translate,d=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new s(t)},e.prototype.queryRadius=function(t){var e=t,r=i(p("line-width",this,e),p("line-gap-width",this,e)),n=p("line-offset",this,e);return r/2+Math.abs(n)+h(this.paint["line-translate"])},e.prototype.queryIntersectsFeature=function(t,e,r,o,a,s){var l=f(t,this.getPaintValue("line-translate",{zoom:o},e.properties),this.getPaintValue("line-translate-anchor",{zoom:o},e.properties),a,s),c=s/2*i(this.getPaintValue("line-width",{zoom:o},e.properties),this.getPaintValue("line-gap-width",{zoom:o},e.properties)),p=this.getPaintValue("line-offset",{zoom:o},e.properties);return p&&(r=n(r,p*s)),u(l,r,c)},e}(a);e.exports=d},{"../../data/bucket/line_bucket":46,"../../util/intersection_tests":214,"../query_utils":155,"../style_layer":158,"@mapbox/point-geometry":2}],163:[function(t,e,r){"use strict";var i=t("../style_layer"),n=t("../../data/bucket/symbol_bucket"),o=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getLayoutValue=function(e,r,i){var n=t.prototype.getLayoutValue.call(this,e,r,i);if("auto"!==n)return n;switch(e){case"text-rotation-alignment":case"icon-rotation-alignment":return"line"===this.getLayoutValue("symbol-placement",r,i)?"map":"viewport";case"text-pitch-alignment":return this.getLayoutValue("text-rotation-alignment",r,i);case"icon-pitch-alignment":return this.getLayoutValue("icon-rotation-alignment",r,i);default:return n}},e.prototype.createBucket=function(t){return new n(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e}(i);e.exports=o},{"../../data/bucket/symbol_bucket":47,"../style_layer":158}],164:[function(t,e,r){"use strict";var i=t("./style_layer"),n=t("../util/util"),o=t("../style-spec/feature_filter"),a=t("../style-spec/group_by_layout"),s=function(t){t&&this.replace(t)};s.prototype.replace=function(t){var e=this;this.symbolOrder=[];for(var r=0,i=t;r<i.length;r+=1){var n=i[r];"symbol"===n.type&&e.symbolOrder.push(n.id)}this._layerConfigs={},this._layers={},this.update(t,[])},s.prototype.update=function(t,e,r){for(var s=this,l=0,u=t;l<u.length;l+=1){var c=u[l];s._layerConfigs[c.id]=c;var p=s._layers[c.id]=i.create(c);p.updatePaintTransitions({},{transition:!1}),p.filter=o(p.filter)}for(var h=0,f=e;h<f.length;h+=1){var d=f[h];delete s._layerConfigs[d],delete s._layers[d]}r&&(this.symbolOrder=r),this.familiesBySource={};for(var m=a(n.values(this._layerConfigs)),v=0,y=m;v<y.length;v+=1){var g=y[v],_=g.map(function(t){return s._layers[t.id]}),x=_[0];if(!x.layout||"none"!==x.layout.visibility){var b=x.source||"",w=s.familiesBySource[b];w||(w=s.familiesBySource[b]={});var T=x.sourceLayer||"_geojsonTileLayer",S=w[T];S||(S=w[T]=[]),S.push(_)}}},e.exports=s},{"../style-spec/feature_filter":110,"../style-spec/group_by_layout":113,"../util/util":223,"./style_layer":158}],165:[function(t,e,r){"use strict";function i(t,e,r){if(void 0!==t&&void 0!==e)return{from:t.to,fromScale:t.toScale,to:e.to,toScale:e.toScale,t:r}}var n=t("../util/util"),o=t("../style-spec/util/interpolate"),a={lastIntegerZoom:0,lastIntegerZoomTime:0,lastZoom:0},s=function(t,e,r,n,s){this.declaration=e,this.startTime=this.endTime=(new Date).getTime(),this.oldTransition=r,this.duration=n.duration||0,this.delay=n.delay||0,this.zoomTransitioned="piecewise-constant"===t.function&&t.transition,this.interp=this.zoomTransitioned?i:o[t.type],this.zoomHistory=s||a,this.instant()||(this.endTime=this.startTime+this.duration+this.delay),r&&r.endTime<=this.startTime&&delete r.oldTransition};s.prototype.instant=function(){return!this.oldTransition||!this.interp||0===this.duration&&0===this.delay},s.prototype.calculate=function(t,e,r){var i=this._calculateTargetValue(t,e);if(this.instant())return i;if((r=r||Date.now())>=this.endTime)return i;var o=this.oldTransition.calculate(t,e,this.startTime),a=n.easeCubicInOut((r-this.startTime-this.delay)/this.duration);return this.interp(o,i,a)},s.prototype._calculateTargetValue=function(t,e){if(!this.zoomTransitioned)return this.declaration.calculate(t,e);var r=t.zoom,i=this.zoomHistory.lastIntegerZoom,n=r>i?2:.5,a=this.declaration.calculate({zoom:r>i?r-1:r+1},e),s=this.declaration.calculate({zoom:r},e),l=Math.min((Date.now()-this.zoomHistory.lastIntegerZoomTime)/this.duration,1),u=Math.abs(r-i),c=o(l,1,u);return void 0!==a&&void 0!==s?{from:a,fromScale:n,to:s,toScale:1,t:c}:void 0},e.exports=s},{"../style-spec/util/interpolate":127,"../util/util":223}],166:[function(t,e,r){"use strict";e.exports=t("../style-spec/validate_style.min"),e.exports.emitErrors=function(t,e){if(e&&e.length){for(var r=0,i=e;r<i.length;r+=1){var n=i[r],o=n.message;t.fire("error",{error:new Error(o)})}return!0}return!1}},{"../style-spec/validate_style.min":149}],167:[function(t,e,r){"use strict";var i=t("@mapbox/point-geometry"),n=function(t){function e(e,r,i,n){t.call(this,e,r),this.angle=i,void 0!==n&&(this.segment=n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(i);e.exports=n},{"@mapbox/point-geometry":2}],168:[function(t,e,r){"use strict";function i(t,e,r,i,n){if(void 0===e.segment)return!0;for(var o=e,a=e.segment+1,s=0;s>-r/2;){if(--a<0)return!1;s-=t[a].dist(o),o=t[a]}s+=t[a].dist(t[a+1]),a++;for(var l=[],u=0;s<r/2;){var c=t[a-1],p=t[a],h=t[a+1];if(!h)return!1;var f=c.angleTo(p)-p.angleTo(h);for(f=Math.abs((f+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:s,angleDelta:f}),u+=f;s-l[0].distance>i;)u-=l.shift().angleDelta;if(u>n)return!1;a++,s+=p.dist(h)}return!0}e.exports=i},{}],169:[function(t,e,r){"use strict";function i(t,e,r,i,o){for(var a=[],s=0;s<t.length;s++)for(var l=t[s],u=void 0,c=0;c<l.length-1;c++){var p=l[c],h=l[c+1];p.x<e&&h.x<e||(p.x<e?p=new n(e,p.y+(h.y-p.y)*((e-p.x)/(h.x-p.x)))._round():h.x<e&&(h=new n(e,p.y+(h.y-p.y)*((e-p.x)/(h.x-p.x)))._round()),p.y<r&&h.y<r||(p.y<r?p=new n(p.x+(h.x-p.x)*((r-p.y)/(h.y-p.y)),r)._round():h.y<r&&(h=new n(p.x+(h.x-p.x)*((r-p.y)/(h.y-p.y)),r)._round()),p.x>=i&&h.x>=i||(p.x>=i?p=new n(i,p.y+(h.y-p.y)*((i-p.x)/(h.x-p.x)))._round():h.x>=i&&(h=new n(i,p.y+(h.y-p.y)*((i-p.x)/(h.x-p.x)))._round()),p.y>=o&&h.y>=o||(p.y>=o?p=new n(p.x+(h.x-p.x)*((o-p.y)/(h.y-p.y)),o)._round():h.y>=o&&(h=new n(p.x+(h.x-p.x)*((o-p.y)/(h.y-p.y)),o)._round()),u&&p.equals(u[u.length-1])||(u=[p],a.push(u)),u.push(h)))))}return a}var n=t("@mapbox/point-geometry");e.exports=i},{"@mapbox/point-geometry":2}],170:[function(t,e,r){"use strict";var i=t("../util/struct_array"),n=t("@mapbox/point-geometry"),o=i({members:[{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"offsetX"},{type:"Int16",name:"offsetY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Float32",name:"unadjustedMaxScale"},{type:"Float32",name:"maxScale"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"},{type:"Int16",name:"bbox0"},{type:"Int16",name:"bbox1"},{type:"Int16",name:"bbox2"},{type:"Int16",name:"bbox3"},{type:"Float32",name:"placementScale"}]});Object.defineProperty(o.prototype.StructType.prototype,"anchorPoint",{get:function(){return new n(this.anchorPointX,this.anchorPointY)}}),e.exports=o},{"../util/struct_array":220,"@mapbox/point-geometry":2}],171:[function(t,e,r){"use strict";var i=function(t,e,r,i,n,o,a,s,l,u,c){var p=a.top*s-l,h=a.bottom*s+l,f=a.left*s-l,d=a.right*s+l;if(this.boxStartIndex=t.length,u){var m=h-p,v=d-f;if(m>0)if(m=Math.max(10*s,m),c){var y=e[r.segment+1].sub(e[r.segment])._unit()._mult(v),g=[r.sub(y),r.add(y)];this._addLineCollisionBoxes(t,g,r,0,v,m,i,n,o)}else this._addLineCollisionBoxes(t,e,r,r.segment,v,m,i,n,o)}else t.emplaceBack(r.x,r.y,0,0,f,p,d,h,1/0,1/0,i,n,o,0,0,0,0,0);this.boxEndIndex=t.length};i.prototype._addLineCollisionBoxes=function(t,e,r,i,n,o,a,s,l){var u=o/2,c=Math.floor(n/u),p=Math.floor(c/2),h=-o/2,f=r,d=i+1,m=h,v=-n/2,y=v-n/8;do{if(--d<0){if(m>v)return;d=0;break}m-=e[d].dist(f),f=e[d]}while(m>y);for(var g=e[d].dist(e[d+1]),_=-p;_<c+p;_++){var x=_*u,b=v+x;if(x<0&&(b+=x),x>n&&(b+=x-n),!(b<m)){for(;m+g<b;){if(m+=g,++d+1>=e.length)return;g=e[d].dist(e[d+1])}var w=b-m,T=e[d],S=e[d+1],z=S.sub(T)._unit()._mult(w)._add(T)._round(),A=Math.max(Math.abs(b-h)-u/2,0),C=n/2/A;(_<0||_>=c)&&(C=Math.min(C,.99)),t.emplaceBack(z.x,z.y,z.x-r.x,z.y-r.y,-o/2,-o/2,o/2,o/2,C,C,a,s,l,0,0,0,0,0)}}},e.exports=i},{}],172:[function(t,e,r){"use strict";var i=t("@mapbox/point-geometry"),n=t("../data/extent"),o=t("grid-index"),a=t("../util/intersection_tests"),s=function(t,e,r,i,a,s,l){void 0===s&&(s=new o(n,12,6)),void 0===l&&(l=new o(n,12,0)),this.angle=t,this.pitch=e,this.cameraToCenterDistance=r,this.cameraToTileDistance=i,this.grid=s,this.ignoredGrid=l,this.perspectiveRatio=1+.5*(i/r-1),this.minScale=.5/this.perspectiveRatio,this.maxScale=2/this.perspectiveRatio;var u=Math.sin(this.angle),c=Math.cos(this.angle);this.rotationMatrix=[c,-u,u,c],this.reverseRotationMatrix=[c,u,-u,c],this.yStretch=Math.max(1,i/(r*Math.cos(e/180*Math.PI))),this.collisionBoxArray=a,0===a.length&&(a.emplaceBack(),a.emplaceBack(0,0,0,0,0,-n,0,n,1/0,1/0,0,0,0,0,0,0,0,0,0),a.emplaceBack(n,0,0,0,0,-n,0,n,1/0,1/0,0,0,0,0,0,0,0,0,0),a.emplaceBack(0,0,0,0,-n,0,n,0,1/0,1/0,0,0,0,0,0,0,0,0,0),a.emplaceBack(0,n,0,0,-n,0,n,0,1/0,1/0,0,0,0,0,0,0,0,0,0)),this.tempCollisionBox=a.get(0),this.edges=[a.get(1),a.get(2),a.get(3),a.get(4)]};s.deserialize=function(t,e){return new s(t.angle,t.pitch,t.cameraToCenterDistance,t.cameraToTileDistance,e,new o(t.grid),new o(t.ignoredGrid))},s.prototype.serialize=function(t){var e=this.grid.toArrayBuffer(),r=this.ignoredGrid.toArrayBuffer();return t&&(t.push(e),t.push(r)),{angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,grid:e,ignoredGrid:r}},s.prototype.placeCollisionFeature=function(t,e,r){for(var n=this,o=this.collisionBoxArray,a=this.minScale,s=this.rotationMatrix,l=this.yStretch,u=t.boxStartIndex;u<t.boxEndIndex;u++){var c=o.get(u),p=c.anchorPoint._matMult(s),h=p.x,f=p.y,d=h+c.x1*n.perspectiveRatio,m=f+c.y1*l*n.perspectiveRatio,v=h+c.x2*n.perspectiveRatio,y=f+c.y2*l*n.perspectiveRatio;c.bbox0=d,c.bbox1=m,c.bbox2=v,c.bbox3=y;var g=new i(c.offsetX,c.offsetY)._matMult(s),_=g.x*g.x,x=g.y*g.y,b=x*l*l,w=Math.sqrt((_+b)/(_+x))||1;if(c.maxScale=c.unadjustedMaxScale*w,!e)for(var T=n.grid.query(d,m,v,y),S=0;S<T.length;S++){var z=o.get(T[S]),A=z.anchorPoint._matMult(s);if((a=n.getPlacementScale(a,p,c,A,z))>=n.maxScale)return a}if(r){var C=void 0;if(n.angle){var E=n.reverseRotationMatrix,k=new i(c.x1,c.y1).matMult(E),M=new i(c.x2,c.y1).matMult(E),L=new i(c.x1,c.y2).matMult(E),I=new i(c.x2,c.y2).matMult(E);C=n.tempCollisionBox,C.anchorPointX=c.anchorPoint.x,C.anchorPointY=c.anchorPoint.y,C.x1=Math.min(k.x,M.x,L.x,I.x),C.y1=Math.min(k.y,M.x,L.x,I.x),C.x2=Math.max(k.x,M.x,L.x,I.x),C.y2=Math.max(k.y,M.x,L.x,I.x),C.maxScale=c.maxScale}else C=c;for(var P=0;P<this.edges.length;P++){var R=n.edges[P];if((a=n.getPlacementScale(a,c.anchorPoint,C,R.anchorPoint,R))>=n.maxScale)return a}}}return a},s.prototype.queryRenderedSymbols=function(t,e){var r={},n=[];if(0===t.length||0===this.grid.keys.length&&0===this.ignoredGrid.keys.length)return n;for(var o=this.collisionBoxArray,s=this.rotationMatrix,l=this.yStretch,u=[],c=1/0,p=1/0,h=-1/0,f=-1/0,d=0;d<t.length;d++)for(var m=t[d],v=0;v<m.length;v++){var y=m[v].matMult(s);c=Math.min(c,y.x),p=Math.min(p,y.y),h=Math.max(h,y.x),f=Math.max(f,y.y),u.push(y)}for(var g=this.grid.query(c,p,h,f),_=this.ignoredGrid.query(c,p,h,f),x=0;x<_.length;x++)g.push(_[x]);for(var b=e/this.perspectiveRatio,w=Math.pow(2,Math.ceil(Math.log(b)/Math.LN2*10)/10),T=0;T<g.length;T++){var S=o.get(g[T]),z=S.sourceLayerIndex,A=S.featureIndex;if(void 0===r[z]&&(r[z]={}),!r[z][A]&&!(w<S.placementScale||w>S.maxScale)){var C=S.anchorPoint.matMult(s),E=C.x+S.x1/b,k=C.y+S.y1/b*l,M=C.x+S.x2/b,L=C.y+S.y2/b*l,I=[new i(E,k),new i(M,k),new i(M,L),new i(E,L)];a.polygonIntersectsPolygon(u,I)&&(r[z][A]=!0,n.push(g[T]))}}return n},s.prototype.getPlacementScale=function(t,e,r,i,n){var o=e.x-i.x,a=e.y-i.y,s=(n.x1-r.x2)/o,l=(n.x2-r.x1)/o,u=(n.y1-r.y2)*this.yStretch/a,c=(n.y2-r.y1)*this.yStretch/a;(isNaN(s)||isNaN(l))&&(s=l=1),(isNaN(u)||isNaN(c))&&(u=c=1);var p=Math.min(Math.max(s,l),Math.max(u,c)),h=n.maxScale,f=r.maxScale;return p>h&&(p=h),p>f&&(p=f),p>t&&p>=n.placementScale&&(t=p),t},s.prototype.insertCollisionFeature=function(t,e,r){for(var i=this,n=r?this.ignoredGrid:this.grid,o=this.collisionBoxArray,a=t.boxStartIndex;a<t.boxEndIndex;a++){var s=o.get(a);s.placementScale=e,e<i.maxScale&&(1===i.perspectiveRatio||s.maxScale>=1)&&n.insert(a,s.bbox0,s.bbox1,s.bbox2,s.bbox3)}},e.exports=s},{"../data/extent":48,"../util/intersection_tests":214,"@mapbox/point-geometry":2,"grid-index":22}],173:[function(t,e,r){"use strict";function i(t,e,r,i,o,a,s,l,u){var c=i?.6*a*s:0,p=Math.max(i?i.right-i.left:0,o?o.right-o.left:0),h=0===t[0].x||t[0].x===u||0===t[0].y||t[0].y===u;e-p*s<e/4&&(e=p*s+e/4);var f=2*a;return n(t,h?e/2*l%e:(p/2+f)*s*l%e,e,c,r,p*s,h,!1,u)}function n(t,e,r,i,l,u,c,p,h){for(var f=u/2,d=0,m=0;m<t.length-1;m++)d+=t[m].dist(t[m+1]);for(var v=0,y=e-r,g=[],_=0;_<t.length-1;_++){for(var x=t[_],b=t[_+1],w=x.dist(b),T=b.angleTo(x);y+r<v+w;){y+=r;var S=(y-v)/w,z=o(x.x,b.x,S),A=o(x.y,b.y,S);if(z>=0&&z<h&&A>=0&&A<h&&y-f>=0&&y+f<=d){var C=new a(z,A,T,_);C._round(),i&&!s(t,C,u,i,l)||g.push(C)}}v+=w}return p||g.length||c||(g=n(t,v/2,r,i,l,u,c,!0,h)),g}var o=t("../style-spec/util/interpolate"),a=t("../symbol/anchor"),s=t("./check_max_angle");e.exports=i},{"../style-spec/util/interpolate":127,"../symbol/anchor":167,"./check_max_angle":168}],174:[function(t,e,r){"use strict";e.exports=function(t){function e(e){s.push(t[e]),l++}function r(t,e,r){var i=a[t];return delete a[t],a[e]=i,s[i].geometry[0].pop(),s[i].geometry[0]=s[i].geometry[0].concat(r[0]),i}function i(t,e,r){var i=o[e];return delete o[e],o[t]=i,s[i].geometry[0].shift(),s[i].geometry[0]=r[0].concat(s[i].geometry[0]),i}function n(t,e,r){var i=r?e[0][e[0].length-1]:e[0][0];return t+":"+i.x+":"+i.y}for(var o={},a={},s=[],l=0,u=0;u<t.length;u++){var c=t[u],p=c.geometry,h=c.text;if(h){var f=n(h,p),d=n(h,p,!0);if(f in a&&d in o&&a[f]!==o[d]){var m=i(f,d,p),v=r(f,d,s[m].geometry);delete o[f],delete a[d],a[n(h,s[v].geometry,!0)]=v,s[m].geometry=null}else f in a?r(f,d,p):d in o?i(f,d,p):(e(u),o[f]=l-1,a[d]=l-1)}else e(u)}return s.filter(function(t){return t.geometry})}},{}],175:[function(t,e,r){"use strict";function i(t,e,r,i,n){var o=d.identity(new Float32Array(16));return e?(d.identity(o),d.scale(o,o,[1/n,1/n,1]),r||d.rotateZ(o,o,i.angle)):(d.scale(o,o,[i.width/2,-i.height/2,1]),d.translate(o,o,[1,-1,0]),d.multiply(o,o,t)),o}function n(t,e,r,i,n){var o=d.identity(new Float32Array(16));return e?(d.multiply(o,o,t),d.scale(o,o,[n,n,1]),r||d.rotateZ(o,o,-i.angle)):(d.scale(o,o,[1,-1,1]),d.translate(o,o,[-1,-1,0]),d.scale(o,o,[2/i.width,2/i.height,1])),o}function o(t,e){var r=[t.x,t.y,0,1];m.transformMat4(r,r,e);var i=r[3];return{point:new h(r[0]/i,r[1]/i),signedDistanceFromCamera:i}}function a(t,e,r,i){var n=t[0]/t[3],o=t[1]/t[3];return n>=-r[0]&&n<=r[0]&&o>=-r[1]&&o<=r[1]&&i.frameHistory.isVisible(e)}function s(t,e,r,i,n,s,u,c,f,d){var y=i?t.textSizeData:t.iconSizeData,g=v.evaluateSizeForZoom(y,r.transform,d,i),_=[256/r.width*2+1,256/r.height*2+1],x=i?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;x.clear();for(var b=t.lineVertexArray,w=i?t.placedGlyphArray:t.placedIconArray,T=0;T<w.length;T++){var S=w.get(T),z=[S.anchorX,S.anchorY,0,1];if(m.transformMat4(z,z,e),a(z,S.placementZoom,_,r)){var A=z[3],C=1+.5*(A/r.transform.cameraToCenterDistance-1),E=v.evaluateSizeForFeature(y,g,S),k=u?E*C:E/C,M=new h(S.anchorX,S.anchorY),L=o(M,n).point,I={},P=l(S,k,!1,c,e,n,s,t.glyphOffsetArray,b,x,L,M,I);(P.notEnoughRoom||P.needsFlipping&&l(S,k,!0,c,e,n,s,t.glyphOffsetArray,b,x,L,M,I).notEnoughRoom)&&p(S.numGlyphs,x)}else p(S.numGlyphs,x)}i?t.text.dynamicLayoutVertexBuffer.updateData(x.serialize()):t.icon.dynamicLayoutVertexBuffer.updateData(x.serialize())}function l(t,e,r,i,n,a,s,l,p,f,d,m,v){var y,_=e/24,x=t.lineOffsetX*e,b=t.lineOffsetY*e;if(t.numGlyphs>1){var w=t.glyphStartIndex+t.numGlyphs,T=l.get(t.glyphStartIndex).offsetX,S=l.get(w-1).offsetX,z=t.lineStartIndex,A=t.lineStartIndex+t.lineLength,C=c(_*T,x,b,r,d,m,t.segment,z,A,p,a,v);if(!C)return{notEnoughRoom:!0};var E=c(_*S,x,b,r,d,m,t.segment,z,A,p,a,v);if(!E)return{notEnoughRoom:!0};var k=o(C.point,s).point,M=o(E.point,s).point;if(i&&!r&&(t.vertical?k.y<M.y:k.x>M.x))return{needsFlipping:!0};y=[C];for(var L=t.glyphStartIndex+1;L<w-1;L++){var I=l.get(L);y.push(c(_*I.offsetX,x,b,r,d,m,t.segment,z,A,p,a,v))}y.push(E)}else{if(i&&!r){var P=o(m,n).point,R=p.get(t.lineStartIndex+t.segment+1),D=o(R,n),O=D.signedDistanceFromCamera>0?D.point:u(m,new h(R.x,R.y),P,1,n);if(t.vertical?O.y>P.y:O.x<P.x)return{needsFlipping:!0}}var B=l.get(t.glyphStartIndex),F=c(_*B.offsetX,x,b,r,d,m,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,p,a,v);if(!F)return{notEnoughRoom:!0};y=[F]}for(var j=t.placementZoom,V=0,N=y;V<N.length;V+=1){var U=N[V];g(f,U.point,U.angle,j)}return{}}function u(t,e,r,i,n){var a=o(t.add(t.sub(e)._unit()),n).point,s=r.sub(a);return r.add(s._mult(i/s.mag()))}function c(t,e,r,i,n,a,s,l,c,p,f,d){var m=i?t-e:t+e,v=m>0?1:-1,y=0;i&&(v*=-1,y=Math.PI),v<0&&(y+=Math.PI);for(var g=v>0?l+s:l+s+1,_=n,x=n,b=0,w=0,T=Math.abs(m);b+w<=T;){if((g+=v)<l||g>=c)return null;if(x=_,void 0===(_=d[g])){var S=o(p.get(g),f);_=S.signedDistanceFromCamera>0?d[g]=S.point:u(0===b?a:new h(p.get(g-v).x,p.get(g-v).y),new h(p.get(g).x,p.get(g).y),x,T-b+1,f)}b+=w,w=x.dist(_)}var z=(T-b)/w,A=_.sub(x),C=A.mult(z)._add(x);return C._add(A._unit()._perp()._mult(r*v)),{point:C,angle:y+Math.atan2(_.y-x.y,_.x-x.x)}}function p(t,e){for(var r=0;r<t;r++)g(e,_,0,25)}var h=t("@mapbox/point-geometry"),f=t("@mapbox/gl-matrix"),d=f.mat4,m=f.vec4,v=t("./symbol_size"),y=t("../data/bucket/symbol_bucket"),g=y.addDynamicAttributes;e.exports={updateLineLabels:s,getLabelPlaneMatrix:i,getGlCoordMatrix:n};var _=new h(-1/0,-1/0)},{"../data/bucket/symbol_bucket":47,"./symbol_size":178,"@mapbox/gl-matrix":1,"@mapbox/point-geometry":2}],176:[function(t,e,r){"use strict";function i(t,e,r,i,n,a,s){var l,u,c,p,h=e.image,f=r.layout,d=e.top-1/h.pixelRatio,m=e.left-1/h.pixelRatio,v=e.bottom+1/h.pixelRatio,y=e.right+1/h.pixelRatio;if("none"!==f["icon-text-fit"]&&n){var g=y-m,_=v-d,x=f["text-size"]/24,b=n.left*x,w=n.right*x,T=n.top*x,S=n.bottom*x,z=w-b,A=S-T,C=f["icon-text-fit-padding"][0],E=f["icon-text-fit-padding"][1],k=f["icon-text-fit-padding"][2],M=f["icon-text-fit-padding"][3],L="width"===f["icon-text-fit"]?.5*(A-_):0,I="height"===f["icon-text-fit"]?.5*(z-g):0,P="width"===f["icon-text-fit"]||"both"===f["icon-text-fit"]?z:g,R="height"===f["icon-text-fit"]||"both"===f["icon-text-fit"]?A:_;l=new o(b+I-M,T+L-C),u=new o(b+I+E+P,T+L-C),c=new o(b+I+E+P,T+L+k+R),p=new o(b+I-M,T+L+k+R)}else l=new o(m,d),u=new o(y,d),c=new o(y,v),p=new o(m,v);var D=r.getLayoutValue("icon-rotate",a,s)*Math.PI/180;if(D){var O=Math.sin(D),B=Math.cos(D),F=[B,-O,O,B];l._matMult(F),u._matMult(F),p._matMult(F),c._matMult(F)}return[{tl:l,tr:u,bl:p,br:c,tex:{x:h.textureRect.x-1,y:h.textureRect.y-1,w:h.textureRect.w+2,h:h.textureRect.h+2},writingMode:void 0,glyphOffset:[0,0]}]}function n(t,e,r,i,n,a,l){for(var u=r.getLayoutValue("text-rotate",n,a)*Math.PI/180,c=r.getLayoutValue("text-offset",n,a).map(function(t){return 24*t}),p=e.positionedGlyphs,h=[],f=0;f<p.length;f++){var d=p[f],m=l[d.glyph];if(m){var v=m.rect;if(v){var y=s+1,g=m.metrics.advance/2,_=i?[d.x+g,d.y]:[0,0],x=i?[0,0]:[d.x+g+c[0],d.y+c[1]],b=m.metrics.left-y-g+x[0],w=-m.metrics.top-y+x[1],T=b+v.w,S=w+v.h,z=new o(b,w),A=new o(T,w),C=new o(b,S),E=new o(T,S);if(i&&d.vertical){var k=new o(-g,g),M=-Math.PI/2,L=new o(5,0);z._rotateAround(M,k)._add(L),A._rotateAround(M,k)._add(L),C._rotateAround(M,k)._add(L),E._rotateAround(M,k)._add(L)}if(u){var I=Math.sin(u),P=Math.cos(u),R=[P,-I,I,P];z._matMult(R),A._matMult(R),C._matMult(R),E._matMult(R)}h.push({tl:z,tr:A,bl:C,br:E,tex:v,writingMode:e.writingMode,glyphOffset:_})}}}return h}var o=t("@mapbox/point-geometry"),a=t("../style/parse_glyph_pbf"),s=a.GLYPH_PBF_BORDER;e.exports={getIconQuads:i,getGlyphQuads:n}},{"../style/parse_glyph_pbf":154,"@mapbox/point-geometry":2}],177:[function(t,e,r){"use strict";function i(t,e){for(var r=[],i=0,n=0,o=e;n<o.length;n+=1){var a=o[n];r.push(t.substring(i,a)),i=a}return i<t.length&&r.push(t.substring(i,t.length)),r}function n(t,e,r,n,o,a,s,l,u,p){var f=t.trim();p===_.vertical&&(f=y(f));var d,m=[],v={positionedGlyphs:m,text:f,top:l[1],bottom:l[1],left:l[0],right:l[0],writingMode:p},x=g.processBidirectionalText;return d=x?x(f,c(f,s,r,e)):i(f,c(f,s,r,e)),h(v,e,d,n,o,a,p,s,u),!!m.length&&v}function o(t,e,r,i){for(var n=0,o=0;o<t.length;o++){var a=i[t.charCodeAt(o)];a&&(n+=a.metrics.advance+e)}return n/Math.max(1,Math.ceil(n/r))}function a(t,e,r,i){var n=Math.pow(t-e,2);return i?t<e?n/2:2*n:n+Math.abs(r)*r}function s(t,e){var r=0;return 10===t&&(r-=1e4),40!==t&&65288!==t||(r+=50),41!==e&&65289!==e||(r+=50),r}function l(t,e,r,i,n,o){for(var s=null,l=a(e,r,n,o),u=0,c=i;u<c.length;u+=1){var p=c[u],h=e-p.x,f=a(h,r,n,o)+p.badness;f<=l&&(s=p,l=f)}return{index:t,x:e,priorBreak:s,badness:l}}function u(t){return t?u(t.priorBreak).concat(t.index):[]}function c(t,e,r,i){if(!r)return[];if(!t)return[];for(var n=[],a=o(t,e,r,i),c=0,p=0;p<t.length;p++){var h=t.charCodeAt(p),f=i[h];f&&!x[h]&&(c+=f.metrics.advance+e),p<t.length-1&&(b[h]||v.charAllowsIdeographicBreaking(h))&&n.push(l(p+1,c,a,n,s(h,t.charCodeAt(p+1)),!1))}return u(l(t.length,c,a,n,0,!0))}function p(t){var e=.5,r=.5;switch(t){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(t){case"bottom":case"bottom-right":case"bottom-left":r=1;break;case"top":case"top-right":case"top-left":r=0}return{horizontalAlign:e,verticalAlign:r}}function h(t,e,r,i,n,o,a,s,l){for(var u=0,c=-17,h=0,m=t.positionedGlyphs,y="right"===o?1:"left"===o?0:.5,g=0,x=r;g<x.length;g+=1){var b=x[g];if(b=b.trim(),b.length){for(var w=m.length,T=0;T<b.length;T++){var S=b.charCodeAt(T),z=e[S];z&&(v.charHasUprightVerticalOrientation(S)&&a!==_.horizontal?(m.push({glyph:S,x:u,y:0,vertical:!0}),u+=l+s):(m.push({glyph:S,x:u,y:c,vertical:!1}),u+=z.metrics.advance+s))}if(m.length!==w){var A=u-s;h=Math.max(A,h),f(m,e,w,m.length-1,y)}u=0,c+=i}else c+=i}var C=p(n),E=C.horizontalAlign,k=C.verticalAlign;d(m,y,E,k,h,i,r.length);var M=r.length*i;t.top+=-k*M,t.bottom=t.top+M,t.left+=-E*h,t.right=t.left+h}function f(t,e,r,i,n){if(n){var o=e[t[i].glyph];if(o)for(var a=o.metrics.advance,s=(t[i].x+a)*n,l=r;l<=i;l++)t[l].x-=s}}function d(t,e,r,i,n,o,a){for(var s=(e-r)*n,l=(-i*a+.5)*o,u=0;u<t.length;u++)t[u].x+=s,t[u].y+=l}function m(t,e,r){var i=p(r),n=i.horizontalAlign,o=i.verticalAlign,a=e[0],s=e[1],l=a-t.displaySize[0]*n,u=l+t.displaySize[0],c=s-t.displaySize[1]*o;return{image:t,top:c,bottom:c+t.displaySize[1],left:l,right:u}}var v=t("../util/script_detection"),y=t("../util/verticalize_punctuation"),g=t("../source/rtl_text_plugin"),_={horizontal:1,vertical:2};e.exports={shapeText:n,shapeIcon:m,WritingMode:_};var x={};x[9]=!0,x[10]=!0,x[11]=!0,x[12]=!0,x[13]=!0,x[32]=!0;var b={};b[10]=!0,b[32]=!0,b[38]=!0,b[40]=!0,b[41]=!0,b[43]=!0,b[45]=!0,b[47]=!0,b[173]=!0,b[183]=!0,b[8203]=!0,b[8208]=!0,b[8211]=!0,b[8231]=!0},{"../source/rtl_text_plugin":96,"../util/script_detection":218,"../util/verticalize_punctuation":225}],178:[function(t,e,r){"use strict";function i(t,e,r){var i=e;return t.isFeatureConstant?i.uSize:t.isZoomConstant?r.lowerSize/10:o.number(r.lowerSize/10,r.upperSize/10,i.uSizeT)}function n(t,e,r,i){var n={};if(t.isZoomConstant||t.isFeatureConstant)if(t.isFeatureConstant&&!t.isZoomConstant){var o;if("interval"===t.functionType)o=r.getLayoutValue(i?"text-size":"icon-size",{zoom:e.zoom});else{var a="interval"===t.functionType?0:s(e.zoom,t.functionBase,t.coveringZoomRange[0],t.coveringZoomRange[1]),u=t.coveringStopValues[0],c=t.coveringStopValues[1];o=u+(c-u)*l.clamp(a,0,1)}n.uSize=o}else t.isFeatureConstant&&t.isZoomConstant&&(n.uSize=t.layoutSize);else{var p=s(e.zoom,t.functionBase,t.coveringZoomRange[0],t.coveringZoomRange[1]);n.uSizeT=l.clamp(p,0,1)}return n}var o=t("../style-spec/util/interpolate"),a=t("../style-spec/function"),s=a.interpolationFactor,l=t("../util/util");e.exports={evaluateSizeForFeature:i,evaluateSizeForZoom:n}},{"../style-spec/function":112,"../style-spec/util/interpolate":127,"../util/util":223}],179:[function(t,e,r){"use strict";var i=t("../source/rtl_text_plugin");e.exports=function(t,e,r,n){var o=e.getLayoutValue("text-transform",r,n);return"uppercase"===o?t=t.toLocaleUpperCase():"lowercase"===o&&(t=t.toLocaleLowerCase()),i.applyArabicShaping&&(t=i.applyArabicShaping(t)),t}},{"../source/rtl_text_plugin":96}],180:[function(t,e,r){"use strict";var i=t("../util/dom"),n=t("@mapbox/point-geometry"),o={scrollZoom:t("./handler/scroll_zoom"),boxZoom:t("./handler/box_zoom"),dragRotate:t("./handler/drag_rotate"),dragPan:t("./handler/drag_pan"),keyboard:t("./handler/keyboard"),doubleClickZoom:t("./handler/dblclick_zoom"),touchZoomRotate:t("./handler/touch_zoom_rotate")};e.exports=function(t,e){function r(t){y("mouseout",t)}function a(e){t.stop(),w=i.mousePos(_,e),y("mousedown",e),b=!0}function s(e){var r=t.dragRotate&&t.dragRotate.isActive();x&&!r&&y("contextmenu",x),x=null,b=!1,y("mouseup",e)}function l(e){if(!(t.dragPan&&t.dragPan.isActive()||t.dragRotate&&t.dragRotate.isActive())){for(var r=e.toElement||e.target;r&&r!==_;)r=r.parentNode;r===_&&y("mousemove",e)}}function u(e){t.stop(),g("touchstart",e),!e.touches||e.touches.length>1||(T?(clearTimeout(T),T=null,y("dblclick",e)):T=setTimeout(f,300))}function c(t){g("touchmove",t)}function p(t){g("touchend",t)}function h(t){g("touchcancel",t)}function f(){T=null}function d(t){i.mousePos(_,t).equals(w)&&y("click",t)}function m(t){y("dblclick",t),t.preventDefault()}function v(e){var r=t.dragRotate&&t.dragRotate.isActive();b||r?b&&(x=e):y("contextmenu",e),e.preventDefault()}function y(e,r){var n=i.mousePos(_,r);return t.fire(e,{lngLat:t.unproject(n),point:n,originalEvent:r})}function g(e,r){var o=i.touchPos(_,r),a=o.reduce(function(t,e,r,i){return t.add(e.div(i.length))},new n(0,0));return t.fire(e,{lngLat:t.unproject(a),point:a,lngLats:o.map(function(e){return t.unproject(e)},this),points:o,originalEvent:r})}var _=t.getCanvasContainer(),x=null,b=!1,w=null,T=null;for(var S in o)t[S]=new o[S](t,e),e.interactive&&e[S]&&t[S].enable(e[S]);_.addEventListener("mouseout",r,!1),_.addEventListener("mousedown",a,!1),_.addEventListener("mouseup",s,!1),_.addEventListener("mousemove",l,!1),_.addEventListener("touchstart",u,!1),_.addEventListener("touchend",p,!1),_.addEventListener("touchmove",c,!1),_.addEventListener("touchcancel",h,!1),_.addEventListener("click",d,!1),_.addEventListener("dblclick",m,!1),_.addEventListener("contextmenu",v,!1)}},{"../util/dom":209,"./handler/box_zoom":189,"./handler/dblclick_zoom":190,"./handler/drag_pan":191,"./handler/drag_rotate":192,"./handler/keyboard":193,"./handler/scroll_zoom":194,"./handler/touch_zoom_rotate":195,"@mapbox/point-geometry":2}],181:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../style-spec/util/interpolate"),o=t("../util/browser"),a=t("../geo/lng_lat"),s=t("../geo/lng_lat_bounds"),l=t("@mapbox/point-geometry"),u=t("../util/evented"),c=function(t){function e(e,r){t.call(this),this.moving=!1,this.transform=e,this._bearingSnap=r.bearingSnap}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCenter=function(){return this.transform.center},e.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},e.prototype.panBy=function(t,e,r){return t=l.convert(t).mult(-1),this.panTo(this.transform.center,i.extend({offset:t},e),r)},e.prototype.panTo=function(t,e,r){return this.easeTo(i.extend({center:t},e),r)},e.prototype.getZoom=function(){return this.transform.zoom},e.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},e.prototype.zoomTo=function(t,e,r){return this.easeTo(i.extend({zoom:t},e),r)},e.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},e.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},e.prototype.getBearing=function(){return this.transform.bearing},e.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},e.prototype.rotateTo=function(t,e,r){return this.easeTo(i.extend({bearing:t},e),r)},e.prototype.resetNorth=function(t,e){return this.rotateTo(0,i.extend({duration:1e3},t),e),this},e.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},e.prototype.getPitch=function(){return this.transform.pitch},e.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},e.prototype.fitBounds=function(t,e,r){if(e=i.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},e),"number"==typeof e.padding){var n=e.padding;e.padding={top:n,bottom:n,right:n,left:n}}if(!i.deepEqual(Object.keys(e.padding).sort(function(t,e){return t<e?-1:t>e?1:0}),["bottom","left","right","top"]))return i.warnOnce("options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'"),this;t=s.convert(t);var o=[e.padding.left-e.padding.right,e.padding.top-e.padding.bottom],a=Math.min(e.padding.right,e.padding.left),u=Math.min(e.padding.top,e.padding.bottom);e.offset=[e.offset[0]+o[0],e.offset[1]+o[1]];var c=l.convert(e.offset),p=this.transform,h=p.project(t.getNorthWest()),f=p.project(t.getSouthEast()),d=f.sub(h),m=(p.width-2*a-2*Math.abs(c.x))/d.x,v=(p.height-2*u-2*Math.abs(c.y))/d.y;return v<0||m<0?(i.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset."),this):(e.center=p.unproject(h.add(f).div(2)),e.zoom=Math.min(p.scaleZoom(p.scale*Math.min(m,v)),e.maxZoom),e.bearing=0,e.linear?this.easeTo(e,r):this.flyTo(e,r))},e.prototype.jumpTo=function(t,e){this.stop();var r=this.transform,i=!1,n=!1,o=!1;return"zoom"in t&&r.zoom!==+t.zoom&&(i=!0,r.zoom=+t.zoom),void 0!==t.center&&(r.center=a.convert(t.center)),"bearing"in t&&r.bearing!==+t.bearing&&(n=!0,r.bearing=+t.bearing),"pitch"in t&&r.pitch!==+t.pitch&&(o=!0,r.pitch=+t.pitch),this.fire("movestart",e).fire("move",e),i&&this.fire("zoomstart",e).fire("zoom",e).fire("zoomend",e),n&&this.fire("rotate",e),o&&this.fire("pitchstart",e).fire("pitch",e).fire("pitchend",e),this.fire("moveend",e)},e.prototype.easeTo=function(t,e){var r=this;this.stop(),t=i.extend({offset:[0,0],duration:500,easing:i.ease},t),!1===t.animate&&(t.duration=0),t.smoothEasing&&0!==t.duration&&(t.easing=this._smoothOutEasing(t.duration));var o=this.transform,s=this.getZoom(),u=this.getBearing(),c=this.getPitch(),p="zoom"in t?+t.zoom:s,h="bearing"in t?this._normalizeBearing(t.bearing,u):u,f="pitch"in t?+t.pitch:c,d=o.centerPoint.add(l.convert(t.offset)),m=o.pointLocation(d),v=a.convert(t.center||m);this._normalizeCenter(v);var y,g,_=o.project(m),x=o.project(v).sub(_),b=o.zoomScale(p-s);return t.around&&(y=a.convert(t.around),g=o.locationPoint(y)),this.zooming=p!==s,this.rotating=u!==h,this.pitching=f!==c,this._prepareEase(e,t.noMoveStart),clearTimeout(this._onEaseEnd),this._ease(function(t){if(this.zooming&&(o.zoom=n(s,p,t)),this.rotating&&(o.bearing=n(u,h,t)),this.pitching&&(o.pitch=n(c,f,t)),y)o.setLocationAtPoint(y,g);else{var r=o.zoomScale(o.zoom-s),i=p>s?Math.min(2,b):Math.max(.5,b),a=Math.pow(i,1-t),l=o.unproject(_.add(x.mult(t*a)).mult(r));o.setLocationAtPoint(o.renderWorldCopies?l.wrap():l,d)}this._fireMoveEvents(e)},function(){t.delayEndEvents?r._onEaseEnd=setTimeout(function(){return r._easeToEnd(e)},t.delayEndEvents):r._easeToEnd(e)},t),this},e.prototype._prepareEase=function(t,e){this.moving=!0,e||this.fire("movestart",t),this.zooming&&this.fire("zoomstart",t),this.pitching&&this.fire("pitchstart",t)},e.prototype._fireMoveEvents=function(t){this.fire("move",t),this.zooming&&this.fire("zoom",t),this.rotating&&this.fire("rotate",t),this.pitching&&this.fire("pitch",t)},e.prototype._easeToEnd=function(t){var e=this.zooming,r=this.pitching;this.moving=!1,this.zooming=!1,this.rotating=!1,this.pitching=!1,e&&this.fire("zoomend",t),r&&this.fire("pitchend",t),this.fire("moveend",t)},e.prototype.flyTo=function(t,e){function r(t){var e=(A*A-z*z+(t?-1:1)*M*M*C*C)/(2*(t?A:z)*M*C);return Math.log(Math.sqrt(e*e+1)-e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function u(t){return o(t)/s(t)}var c=this;this.stop(),t=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},t);var p=this.transform,h=this.getZoom(),f=this.getBearing(),d=this.getPitch(),m="zoom"in t?i.clamp(+t.zoom,p.minZoom,p.maxZoom):h,v="bearing"in t?this._normalizeBearing(t.bearing,f):f,y="pitch"in t?+t.pitch:d,g=p.zoomScale(m-h),_=p.centerPoint.add(l.convert(t.offset)),x=p.pointLocation(_),b=a.convert(t.center||x);this._normalizeCenter(b);var w=p.project(x),T=p.project(b).sub(w),S=t.curve,z=Math.max(p.width,p.height),A=z/g,C=T.mag();if("minZoom"in t){var E=i.clamp(Math.min(t.minZoom,h,m),p.minZoom,p.maxZoom),k=z/p.zoomScale(E-h);S=Math.sqrt(k/C*2)}var M=S*S,L=r(0),I=function(t){return s(L)/s(L+S*t)},P=function(t){return z*((s(L)*u(L+S*t)-o(L))/M)/C},R=(r(1)-L)/S;if(Math.abs(C)<1e-6||isNaN(R)){if(Math.abs(z-A)<1e-6)return this.easeTo(t,e);var D=A<z?-1:1;R=Math.abs(Math.log(A/z))/S,P=function(){return 0},I=function(t){return Math.exp(D*S*t)}}if("duration"in t)t.duration=+t.duration;else{var O="screenSpeed"in t?+t.screenSpeed/S:+t.speed;t.duration=1e3*R/O}return this.zooming=!0,this.rotating=f!==v,this.pitching=y!==d,this._prepareEase(e,!1),this._ease(function(t){var r=t*R,i=1/I(r);p.zoom=h+p.scaleZoom(i),this.rotating&&(p.bearing=n(f,v,t)),this.pitching&&(p.pitch=n(d,y,t));var o=p.unproject(w.add(T.mult(P(r))).mult(i));p.setLocationAtPoint(p.renderWorldCopies?o.wrap():o,_),this._fireMoveEvents(e)},function(){return c._easeToEnd(e)},t),this},e.prototype.isEasing=function(){return!!this._abortFn},e.prototype.isMoving=function(){return this.moving},e.prototype.stop=function(){return this._abortFn&&(this._abortFn(),this._finishEase()),this},e.prototype._ease=function(t,e,r){this._finishFn=e,this._abortFn=o.timed(function(e){t.call(this,r.easing(e)),1===e&&this._finishEase()},!1===r.animate?0:r.duration,this)},e.prototype._finishEase=function(){delete this._abortFn;var t=this._finishFn;delete this._finishFn,t.call(this)},e.prototype._normalizeBearing=function(t,e){t=i.wrap(t,-180,180);var r=Math.abs(t-e);return Math.abs(t-360-e)<r&&(t-=360),Math.abs(t+360-e)<r&&(t+=360),t},e.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var r=t.lng-e.center.lng;t.lng+=r>180?-360:r<-180?360:0}},e.prototype._smoothOutEasing=function(t){var e=i.ease;if(this._prevEase){var r=this._prevEase,n=(Date.now()-r.start)/r.duration,o=r.easing(n+.01)-r.easing(n),a=.27/Math.sqrt(o*o+1e-4)*.01,s=Math.sqrt(.0729-a*a);e=i.bezier(a,s,.25,1)}return this._prevEase={start:(new Date).getTime(),duration:t,easing:e},e},e}(u);e.exports=c},{"../geo/lng_lat":58,"../geo/lng_lat_bounds":59,"../style-spec/util/interpolate":127,"../util/browser":202,"../util/evented":210,"../util/util":223,"@mapbox/point-geometry":2}],182:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/config"),a=function(t){this.options=t,n.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};a.prototype.getDefaultPosition=function(){return"bottom-right"},a.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=i.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),e&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===e&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},a.prototype.onRemove=function(){i.remove(this._container),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0},a.prototype._updateEditLink=function(){var t=this._editLink;t||(t=this._editLink=this._container.querySelector(".mapbox-improve-map"));var e=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:o.ACCESS_TOKEN}];if(t){var r=e.reduce(function(t,r,i){return r.value&&(t+=r.key+"="+r.value+(i<e.length-1?"&":"")),t},"?");t.href="https://www.mapbox.com/feedback/"+r+(this._map._hash?this._map._hash.getHashString(!0):"")}},a.prototype._updateData=function(t){t&&"metadata"===t.sourceDataType&&(this._updateAttributions(),this._updateEditLink())},a.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this._map.style.stylesheet){var e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}var r=this._map.style.sourceCaches;for(var i in r){var n=r[i].getSource();n.attribution&&t.indexOf(n.attribution)<0&&t.push(n.attribution)}t.sort(function(t,e){return t.length-e.length}),t=t.filter(function(e,r){for(var i=r+1;i<t.length;i++)if(t[i].indexOf(e)>=0)return!1;return!0}),this._container.innerHTML=t.join(" | "),this._editLink=null}},a.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact")},e.exports=a},{"../../util/config":206,"../../util/dom":209,"../../util/util":223}],183:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/window"),a=function(){this._fullscreen=!1,n.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in o.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in o.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in o.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in o.document&&(this._fullscreenchange="MSFullscreenChange"),this._className="mapboxgl-ctrl"};a.prototype.onAdd=function(t){return this._map=t,this._mapContainer=this._map.getContainer(),this._container=i.create("div",this._className+" mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._container.style.display="none",n.warnOnce("This device does not support fullscreen mode.")),this._container},a.prototype.onRemove=function(){i.remove(this._container),this._map=null,o.document.removeEventListener(this._fullscreenchange,this._changeIcon)},a.prototype._checkFullscreenSupport=function(){return!!(o.document.fullscreenEnabled||o.document.mozFullScreenEnabled||o.document.msFullscreenEnabled||o.document.webkitFullscreenEnabled)},a.prototype._setupUI=function(){var t=this._fullscreenButton=i.create("button",this._className+"-icon "+this._className+"-fullscreen",this._container);t.setAttribute("aria-label","Toggle fullscreen"),t.type="button",this._fullscreenButton.addEventListener("click",this._onClickFullscreen),o.document.addEventListener(this._fullscreenchange,this._changeIcon)},a.prototype._isFullscreen=function(){return this._fullscreen},a.prototype._changeIcon=function(){(o.document.fullscreenElement||o.document.mozFullScreenElement||o.document.webkitFullscreenElement||o.document.msFullscreenElement)===this._mapContainer!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+"-shrink"),this._fullscreenButton.classList.toggle(this._className+"-fullscreen"))},a.prototype._onClickFullscreen=function(){this._isFullscreen()?o.document.exitFullscreen?o.document.exitFullscreen():o.document.mozCancelFullScreen?o.document.mozCancelFullScreen():o.document.msExitFullscreen?o.document.msExitFullscreen():o.document.webkitCancelFullScreen&&o.document.webkitCancelFullScreen():this._mapContainer.requestFullscreen?this._mapContainer.requestFullscreen():this._mapContainer.mozRequestFullScreen?this._mapContainer.mozRequestFullScreen():this._mapContainer.msRequestFullscreen?this._mapContainer.msRequestFullscreen():this._mapContainer.webkitRequestFullscreen&&this._mapContainer.webkitRequestFullscreen()},e.exports=a},{"../../util/dom":209,"../../util/util":223,"../../util/window":204}],184:[function(t,e,r){"use strict";function i(t){void 0!==n?t(n):void 0!==s.navigator.permissions?s.navigator.permissions.query({name:"geolocation"}).then(function(e){n="denied"!==e.state,t(n)}):(n=!!s.navigator.geolocation,t(n))}var n,o=t("../../util/evented"),a=t("../../util/dom"),s=t("../../util/window"),l=t("../../util/util"),u=t("../../geo/lng_lat"),c=t("../marker"),p={positionOptions:{enableHighAccuracy:!1,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0},h=function(t){function e(e){t.call(this),this.options=l.extend({},p,e),l.bindAll(["_onSuccess","_onError","_finish","_setupUI","_updateCamera","_updateMarker","_onClickGeolocate"],this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.onAdd=function(t){return this._map=t,this._container=a.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),i(this._setupUI),this._container},e.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(s.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker.remove(),a.remove(this._container),this._map=void 0},e.prototype._onSuccess=function(t){if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire("geolocate",t),this._finish()},e.prototype._updateCamera=function(t){var e=new u(t.coords.longitude,t.coords.latitude),r=t.coords.accuracy;this._map.fitBounds(e.toBounds(r),this.options.fitBoundsOptions,{geolocateSource:!0})},e.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove()},e.prototype._onError=function(t){if(this.options.trackUserLocation)if(1===t.code)this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),void 0!==this._geolocationWatchID&&this._clearWatch();else switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire("error",t),this._finish()},e.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},e.prototype._setupUI=function(t){var e=this;!1!==t&&(this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this._geolocateButton=a.create("button","mapboxgl-ctrl-icon mapboxgl-ctrl-geolocate",this._container),this._geolocateButton.type="button",this._geolocateButton.setAttribute("aria-label","Geolocate"),this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=a.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new c(this._dotElement),this.options.trackUserLocation&&(this._watchState="OFF")),this._geolocateButton.addEventListener("click",this._onClickGeolocate.bind(this)),this.options.trackUserLocation&&this._map.on("movestart",function(t){t.geolocateSource||"ACTIVE_LOCK"!==e._watchState||(e._watchState="BACKGROUND",e._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),e._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),e.fire("trackuserlocationend"))}))},e.prototype._onClickGeolocate=function(){if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire("trackuserlocationstart");break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire("trackuserlocationend");break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire("trackuserlocationstart")}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}"OFF"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),this._geolocationWatchID=s.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions))}else s.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4)},e.prototype._clearWatch=function(){s.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},e}(o);e.exports=h},{"../../geo/lng_lat":58,"../../util/dom":209,"../../util/evented":210,"../../util/util":223,"../../util/window":204,"../marker":198}],185:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=function(){n.bindAll(["_updateLogo"],this)};o.prototype.onAdd=function(t){this._map=t,this._container=i.create("div","mapboxgl-ctrl");var e=i.create("a","mapboxgl-ctrl-logo");return e.target="_blank",e.href="https://www.mapbox.com/",e.setAttribute("aria-label","Mapbox logo"),this._container.appendChild(e),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._container},o.prototype.onRemove=function(){i.remove(this._container),this._map.off("sourcedata",this._updateLogo)},o.prototype.getDefaultPosition=function(){return"bottom-left"},o.prototype._updateLogo=function(t){t&&"metadata"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")},o.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}},e.exports=o},{"../../util/dom":209,"../../util/util":223}],186:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../handler/drag_rotate"),a=function(){var t=this;n.bindAll(["_rotateCompassArrow"],this),this._container=i.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this._zoomInButton=this._createButton("mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in","Zoom In",function(){return t._map.zoomIn()}),this._zoomOutButton=this._createButton("mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out","Zoom Out",function(){return t._map.zoomOut()}),this._compass=this._createButton("mapboxgl-ctrl-icon mapboxgl-ctrl-compass","Reset North",function(){return t._map.resetNorth()}),this._compassArrow=i.create("span","mapboxgl-ctrl-compass-arrow",this._compass)};a.prototype._rotateCompassArrow=function(){var t="rotate("+this._map.transform.angle*(180/Math.PI)+"deg)";this._compassArrow.style.transform=t},a.prototype.onAdd=function(t){return this._map=t,this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new o(t,{button:"left",element:this._compass,pitchWithRotate:!1}),this._handler.enable(),this._container},a.prototype.onRemove=function(){i.remove(this._container),this._map.off("rotate",this._rotateCompassArrow),delete this._map,this._handler.disable(),delete this._handler},a.prototype._createButton=function(t,e,r){var n=i.create("button",t,this._container);return n.type="button",n.setAttribute("aria-label",e),n.addEventListener("click",r),n},e.exports=a},{"../../util/dom":209,"../../util/util":223,"../handler/drag_rotate":192}],187:[function(t,e,r){"use strict";function i(t,e,r){var i=r&&r.maxWidth||100,a=t._container.clientHeight/2,s=o(t.unproject([0,a]),t.unproject([i,a]));if(r&&"imperial"===r.unit){var l=3.2808*s;l>5280?n(e,i,l/5280,"mi"):n(e,i,l,"ft")}else if(r&&"nautical"===r.unit){var u=s/1852;n(e,i,u,"nm")}else n(e,i,s,"m")}function n(t,e,r,i){var n=a(r),o=n/r;"m"===i&&n>=1e3&&(n/=1e3,i="km"),t.style.width=e*o+"px",t.innerHTML=n+i}function o(t,e){var r=Math.PI/180,i=t.lat*r,n=e.lat*r,o=Math.sin(i)*Math.sin(n)+Math.cos(i)*Math.cos(n)*Math.cos((e.lng-t.lng)*r);return 6371e3*Math.acos(Math.min(o,1))}function a(t){var e=Math.pow(10,(""+Math.floor(t)).length-1),r=t/e;return r=r>=10?10:r>=5?5:r>=3?3:r>=2?2:1,e*r}var s=t("../../util/dom"),l=t("../../util/util"),u=function(t){this.options=t,l.bindAll(["_onMove"],this)};u.prototype.getDefaultPosition=function(){return"bottom-left"},u.prototype._onMove=function(){i(this._map,this._container,this.options)},u.prototype.onAdd=function(t){return this._map=t,this._container=s.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},u.prototype.onRemove=function(){s.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},e.exports=u},{"../../util/dom":209,"../../util/util":223}],188:[function(t,e,r){"use strict"},{}],189:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../geo/lng_lat_bounds"),o=t("../../util/util"),a=t("../../util/window"),s=function(t){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),o.bindAll(["_onMouseDown","_onMouseMove","_onMouseUp","_onKeyDown"],this)};s.prototype.isEnabled=function(){return!!this._enabled},s.prototype.isActive=function(){return!!this._active},s.prototype.enable=function(){this.isEnabled()||(this._map.dragPan&&this._map.dragPan.disable(),this._el.addEventListener("mousedown",this._onMouseDown,!1),this._map.dragPan&&this._map.dragPan.enable(),this._enabled=!0)},s.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener("mousedown",this._onMouseDown),this._enabled=!1)},s.prototype._onMouseDown=function(t){t.shiftKey&&0===t.button&&(a.document.addEventListener("mousemove",this._onMouseMove,!1),a.document.addEventListener("keydown",this._onKeyDown,!1),a.document.addEventListener("mouseup",this._onMouseUp,!1),i.disableDrag(),this._startPos=i.mousePos(this._el,t),this._active=!0)},s.prototype._onMouseMove=function(t){var e=this._startPos,r=i.mousePos(this._el,t);this._box||(this._box=i.create("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",t));var n=Math.min(e.x,r.x),o=Math.max(e.x,r.x),a=Math.min(e.y,r.y),s=Math.max(e.y,r.y);i.setTransform(this._box,"translate("+n+"px,"+a+"px)"),this._box.style.width=o-n+"px",this._box.style.height=s-a+"px"},s.prototype._onMouseUp=function(t){if(0===t.button){var e=this._startPos,r=i.mousePos(this._el,t),o=(new n).extend(this._map.unproject(e)).extend(this._map.unproject(r));this._finish(),e.x===r.x&&e.y===r.y?this._fireEvent("boxzoomcancel",t):this._map.fitBounds(o,{linear:!0}).fire("boxzoomend",{originalEvent:t,boxZoomBounds:o})}},s.prototype._onKeyDown=function(t){27===t.keyCode&&(this._finish(),this._fireEvent("boxzoomcancel",t))},s.prototype._finish=function(){this._active=!1,a.document.removeEventListener("mousemove",this._onMouseMove,!1),a.document.removeEventListener("keydown",this._onKeyDown,!1),a.document.removeEventListener("mouseup",this._onMouseUp,!1),this._container.classList.remove("mapboxgl-crosshair"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag()},s.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},e.exports=s},{"../../geo/lng_lat_bounds":59,"../../util/dom":209,"../../util/util":223,"../../util/window":204}],190:[function(t,e,r){"use strict";var i=t("../../util/util"),n=function(t){this._map=t,i.bindAll(["_onDblClick"],this)};n.prototype.isEnabled=function(){return!!this._enabled},n.prototype.enable=function(){this.isEnabled()||(this._map.on("dblclick",this._onDblClick),this._enabled=!0)},n.prototype.disable=function(){this.isEnabled()&&(this._map.off("dblclick",this._onDblClick),this._enabled=!1)},n.prototype._onDblClick=function(t){this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t)},e.exports=n},{"../../util/util":223}],191:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/window"),a=n.bezier(0,0,.3,1),s=function(t){this._map=t,this._el=t.getCanvasContainer(),n.bindAll(["_onDown","_onMove","_onUp","_onTouchEnd","_onMouseUp"],this)};s.prototype.isEnabled=function(){return!!this._enabled},s.prototype.isActive=function(){return!!this._active},s.prototype.enable=function(){this.isEnabled()||(this._el.classList.add("mapboxgl-touch-drag-pan"),this._el.addEventListener("mousedown",this._onDown),this._el.addEventListener("touchstart",this._onDown),this._enabled=!0)},s.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove("mapboxgl-touch-drag-pan"),this._el.removeEventListener("mousedown",this._onDown),this._el.removeEventListener("touchstart",this._onDown),this._enabled=!1)},s.prototype._onDown=function(t){this._ignoreEvent(t)||this.isActive()||(t.touches?(o.document.addEventListener("touchmove",this._onMove),o.document.addEventListener("touchend",this._onTouchEnd)):(o.document.addEventListener("mousemove",this._onMove),o.document.addEventListener("mouseup",this._onMouseUp)),o.addEventListener("blur",this._onMouseUp),this._active=!1,this._startPos=this._pos=i.mousePos(this._el,t),this._inertia=[[Date.now(),this._pos]])},s.prototype._onMove=function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent("dragstart",t),this._fireEvent("movestart",t));var e=i.mousePos(this._el,t),r=this._map;r.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),e]),r.transform.setLocationAtPoint(r.transform.pointLocation(this._pos),e),this._fireEvent("drag",t),this._fireEvent("move",t),this._pos=e,t.preventDefault()}},s.prototype._onUp=function(t){var e=this;if(this.isActive()){this._active=!1,this._fireEvent("dragend",t),this._drainInertiaBuffer();var r=function(){e._map.moving=!1,e._fireEvent("moveend",t)},i=this._inertia;if(i.length<2)return void r();var n=i[i.length-1],o=i[0],s=n[1].sub(o[1]),l=(n[0]-o[0])/1e3;if(0===l||n[1].equals(o[1]))return void r();var u=s.mult(.3/l),c=u.mag();c>1400&&(c=1400,u._unit()._mult(c));var p=c/750,h=u.mult(-p/2);this._map.panBy(h,{duration:1e3*p,easing:a,noMoveStart:!0},{originalEvent:t})}},s.prototype._onMouseUp=function(t){this._ignoreEvent(t)||(this._onUp(t),o.document.removeEventListener("mousemove",this._onMove),o.document.removeEventListener("mouseup",this._onMouseUp),o.removeEventListener("blur",this._onMouseUp))},s.prototype._onTouchEnd=function(t){this._ignoreEvent(t)||(this._onUp(t),o.document.removeEventListener("touchmove",this._onMove),o.document.removeEventListener("touchend",this._onTouchEnd))},s.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},s.prototype._ignoreEvent=function(t){var e=this._map;return!(!e.boxZoom||!e.boxZoom.isActive())||!(!e.dragRotate||!e.dragRotate.isActive())||(t.touches?t.touches.length>1:!!t.ctrlKey||"mousemove"!==t.type&&t.button&&0!==t.button)},s.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},e.exports=s},{"../../util/dom":209,"../../util/util":223,"../../util/window":204}],192:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/window"),a=n.bezier(0,0,.25,1),s=function(t,e){this._map=t,this._el=e.element||t.getCanvasContainer(),this._button=e.button||"right",this._bearingSnap=e.bearingSnap||0,this._pitchWithRotate=!1!==e.pitchWithRotate,n.bindAll(["_onDown","_onMove","_onUp"],this)};s.prototype.isEnabled=function(){return!!this._enabled},s.prototype.isActive=function(){return!!this._active},s.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener("mousedown",this._onDown),this._enabled=!0)},s.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener("mousedown",this._onDown),this._enabled=!1)},s.prototype._onDown=function(t){if(!(this._map.boxZoom&&this._map.boxZoom.isActive()||this._map.dragPan&&this._map.dragPan.isActive()||this.isActive())){if("right"===this._button){var e=t.ctrlKey?0:2,r=t.button;if(void 0!==o.InstallTrigger&&2===t.button&&t.ctrlKey&&o.navigator.platform.toUpperCase().indexOf("MAC")>=0&&(r=0),r!==e)return}else if(t.ctrlKey||0!==t.button)return;i.disableDrag(),o.document.addEventListener("mousemove",this._onMove,{capture:!0}),o.document.addEventListener("mouseup",this._onUp),o.addEventListener("blur",this._onUp),this._active=!1,this._inertia=[[Date.now(),this._map.getBearing()]],this._startPos=this._pos=i.mousePos(this._el,t),this._center=this._map.transform.centerPoint,t.preventDefault()}},s.prototype._onMove=function(t){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent("rotatestart",t),this._fireEvent("movestart",t),this._pitchWithRotate&&this._fireEvent("pitchstart",t));var e=this._map;e.stop();var r=this._pos,n=i.mousePos(this._el,t),o=.8*(r.x-n.x),a=-.5*(r.y-n.y),s=e.getBearing()-o,l=e.getPitch()-a,u=this._inertia,c=u[u.length-1];this._drainInertiaBuffer(),u.push([Date.now(),e._normalizeBearing(s,c[1])]),e.transform.bearing=s,this._pitchWithRotate&&(this._fireEvent("pitch",t),e.transform.pitch=l),this._fireEvent("rotate",t),this._fireEvent("move",t),this._pos=n},s.prototype._onUp=function(t){var e=this;if(o.document.removeEventListener("mousemove",this._onMove,{capture:!0}),o.document.removeEventListener("mouseup",this._onUp),o.removeEventListener("blur",this._onUp),i.enableDrag(),this.isActive()){this._active=!1,this._fireEvent("rotateend",t),this._drainInertiaBuffer();var r=this._map,n=r.getBearing(),s=this._inertia,l=function(){Math.abs(n)<e._bearingSnap?r.resetNorth({noMoveStart:!0},{originalEvent:t}):(e._map.moving=!1,e._fireEvent("moveend",t)),e._pitchWithRotate&&e._fireEvent("pitchend",t)};if(s.length<2)return void l();var u=s[0],c=s[s.length-1],p=s[s.length-2],h=r._normalizeBearing(n,p[1]),f=c[1]-u[1],d=f<0?-1:1,m=(c[0]-u[0])/1e3;if(0===f||0===m)return void l();var v=Math.abs(f*(.25/m));v>180&&(v=180);var y=v/180;h+=d*v*(y/2),Math.abs(r._normalizeBearing(h,0))<this._bearingSnap&&(h=r._normalizeBearing(0,h)),r.rotateTo(h,{duration:1e3*y,easing:a,noMoveStart:!0},{originalEvent:t})}},s.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},s.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},e.exports=s},{"../../util/dom":209,"../../util/util":223,"../../util/window":204}],193:[function(t,e,r){"use strict";function i(t){return t*(2-t)}var n=t("../../util/util"),o=function(t){this._map=t,this._el=t.getCanvasContainer(),n.bindAll(["_onKeyDown"],this)};o.prototype.isEnabled=function(){return!!this._enabled},o.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener("keydown",this._onKeyDown,!1),this._enabled=!0)},o.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener("keydown",this._onKeyDown),this._enabled=!1)},o.prototype._onKeyDown=function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=0,r=0,n=0,o=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?r=-1:(t.preventDefault(),o=-1);break;case 39:t.shiftKey?r=1:(t.preventDefault(),o=1);break;case 38:t.shiftKey?n=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?n=-1:(a=1,t.preventDefault());break;default:return}var s=this._map,l=s.getZoom(),u={duration:300,delayEndEvents:500,easing:i,zoom:e?Math.round(l)+e*(t.shiftKey?2:1):l,bearing:s.getBearing()+15*r,pitch:s.getPitch()+10*n,offset:[100*-o,100*-a],center:s.getCenter()};s.easeTo(u,{originalEvent:t})}},e.exports=o},{"../../util/util":223}],194:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/browser"),a=t("../../util/window"),s=a.navigator.userAgent.toLowerCase(),l=-1!==s.indexOf("firefox"),u=-1!==s.indexOf("safari")&&-1===s.indexOf("chrom"),c=function(t){this._map=t,this._el=t.getCanvasContainer(),n.bindAll(["_onWheel","_onTimeout"],this)};c.prototype.isEnabled=function(){return!!this._enabled},c.prototype.enable=function(t){this.isEnabled()||(this._el.addEventListener("wheel",this._onWheel,!1),this._el.addEventListener("mousewheel",this._onWheel,!1),this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},c.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener("wheel",this._onWheel),this._el.removeEventListener("mousewheel",this._onWheel),this._enabled=!1)},c.prototype._onWheel=function(t){var e=0;"wheel"===t.type?(e=t.deltaY,l&&t.deltaMode===a.WheelEvent.DOM_DELTA_PIXEL&&(e/=o.devicePixelRatio),t.deltaMode===a.WheelEvent.DOM_DELTA_LINE&&(e*=40)):"mousewheel"===t.type&&(e=-t.wheelDeltaY,u&&(e/=3));var r=o.now(),n=r-(this._time||0);this._pos=i.mousePos(this._el,t),this._time=r,0!==e&&e%4.000244140625==0?this._type="wheel":0!==e&&Math.abs(e)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=e,this._timeout=setTimeout(this._onTimeout,40)):this._type||(this._type=Math.abs(n*e)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,e+=this._lastValue)),t.shiftKey&&e&&(e/=4),this._type&&this._zoom(-e,t),t.preventDefault()},c.prototype._onTimeout=function(){this._type="wheel",this._zoom(-this._lastValue)},c.prototype._zoom=function(t,e){if(0!==t){var r=this._map,i=2/(1+Math.exp(-Math.abs(t/100)));t<0&&0!==i&&(i=1/i);var n=r.ease?r.ease.to:r.transform.scale,o=r.transform.scaleZoom(n*i);r.zoomTo(o,{duration:"wheel"===this._type?200:0,around:this._aroundCenter?r.getCenter():r.unproject(this._pos),delayEndEvents:200,smoothEasing:!0},{originalEvent:e})}},e.exports=c},{"../../util/browser":202,"../../util/dom":209,"../../util/util":223,"../../util/window":204}],195:[function(t,e,r){"use strict";var i=t("../../util/dom"),n=t("../../util/util"),o=t("../../util/window"),a=n.bezier(0,0,.15,1),s=function(t){this._map=t,this._el=t.getCanvasContainer(),n.bindAll(["_onStart","_onMove","_onEnd"],this)};s.prototype.isEnabled=function(){return!!this._enabled},s.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add("mapboxgl-touch-zoom-rotate"),this._el.addEventListener("touchstart",this._onStart,!1),this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},s.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove("mapboxgl-touch-zoom-rotate"),this._el.removeEventListener("touchstart",this._onStart),this._enabled=!1)},s.prototype.disableRotation=function(){this._rotationDisabled=!0},s.prototype.enableRotation=function(){this._rotationDisabled=!1},s.prototype._onStart=function(t){if(2===t.touches.length){var e=i.mousePos(this._el,t.touches[0]),r=i.mousePos(this._el,t.touches[1]);this._startVec=e.sub(r),this._startScale=this._map.transform.scale,this._startBearing=this._map.transform.bearing,this._gestureIntent=void 0,this._inertia=[],o.document.addEventListener("touchmove",this._onMove,!1),o.document.addEventListener("touchend",this._onEnd,!1)}},s.prototype._onMove=function(t){if(2===t.touches.length){var e=i.mousePos(this._el,t.touches[0]),r=i.mousePos(this._el,t.touches[1]),n=e.add(r).div(2),o=e.sub(r),a=o.mag()/this._startVec.mag(),s=this._rotationDisabled?0:180*o.angleWith(this._startVec)/Math.PI,l=this._map;if(this._gestureIntent){var u={duration:0,around:l.unproject(n)};"rotate"===this._gestureIntent&&(u.bearing=this._startBearing+s),"zoom"!==this._gestureIntent&&"rotate"!==this._gestureIntent||(u.zoom=l.transform.scaleZoom(this._startScale*a)),l.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),a,n]),l.easeTo(u,{originalEvent:t})}else{var c=Math.abs(1-a)>.15;Math.abs(s)>10?this._gestureIntent="rotate":c&&(this._gestureIntent="zoom"),this._gestureIntent&&(this._startVec=o,this._startScale=l.transform.scale,this._startBearing=l.transform.bearing)}t.preventDefault()}},s.prototype._onEnd=function(t){o.document.removeEventListener("touchmove",this._onMove),o.document.removeEventListener("touchend",this._onEnd),this._drainInertiaBuffer();var e=this._inertia,r=this._map;if(e.length<2)return void r.snapToNorth({},{originalEvent:t});var i=e[e.length-1],n=e[0],s=r.transform.scaleZoom(this._startScale*i[1]),l=r.transform.scaleZoom(this._startScale*n[1]),u=s-l,c=(i[0]-n[0])/1e3,p=i[2];if(0===c||s===l)return void r.snapToNorth({},{originalEvent:t});var h=.15*u/c;Math.abs(h)>2.5&&(h=h>0?2.5:-2.5);var f=1e3*Math.abs(h/(12*.15)),d=s+h*f/2e3;d<0&&(d=0),r.easeTo({zoom:d,duration:f,easing:a,around:this._aroundCenter?r.getCenter():r.unproject(p)},{originalEvent:t})},s.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>2&&e-t[0][0]>160;)t.shift()},e.exports=s},{"../../util/dom":209,"../../util/util":223,"../../util/window":204}],196:[function(t,e,r){"use strict";var i=t("../util/util"),n=t("../util/window"),o=function(){i.bindAll(["_onHashChange","_updateHash"],this)};o.prototype.addTo=function(t){return this._map=t,n.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},o.prototype.remove=function(){return n.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),delete this._map,this},o.prototype.getHashString=function(t){var e=this._map.getCenter(),r=Math.round(100*this._map.getZoom())/100,i=Math.max(0,Math.ceil(Math.log(r)/Math.LN2)),n=Math.round(e.lng*Math.pow(10,i))/Math.pow(10,i),o=Math.round(e.lat*Math.pow(10,i))/Math.pow(10,i),a=this._map.getBearing(),s=this._map.getPitch(),l="";return l+=t?"#/"+n+"/"+o+"/"+r:"#"+r+"/"+o+"/"+n,(a||s)&&(l+="/"+Math.round(10*a)/10),s&&(l+="/"+Math.round(s)),l},o.prototype._onHashChange=function(){var t=n.location.hash.replace("#","").split("/");return t.length>=3&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0),pitch:+(t[4]||0)}),!0)},o.prototype._updateHash=function(){var t=this.getHashString();n.history.replaceState("","",t)},e.exports=o},{"../util/util":223,"../util/window":204}],197:[function(t,e,r){"use strict";function i(t){t.parentNode&&t.parentNode.removeChild(t)}var n=t("../util/util"),o=t("../util/browser"),a=t("../util/window"),s=t("../util/window"),l=s.HTMLImageElement,u=t("../util/dom"),c=t("../util/ajax"),p=t("../style/style"),h=t("../style/animation_loop"),f=t("../render/painter"),d=t("../geo/transform"),m=t("./hash"),v=t("./bind_handlers"),y=t("./camera"),g=t("../geo/lng_lat"),_=t("../geo/lng_lat_bounds"),x=t("@mapbox/point-geometry"),b=t("./control/attribution_control"),w=t("./control/logo_control"),T=t("mapbox-gl-supported");t("./events");var S={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:0,maxZoom:22,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,transformRequest:null},z=function(t){function e(e){var r=this;if(e=n.extend({},S,e),null!=e.minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error("maxZoom must be greater than minZoom");var i=new d(e.minZoom,e.maxZoom,e.renderWorldCopies);t.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles;var o=e.transformRequest;if(this._transformRequest=o?function(t,e){return o(t,e)||{url:t}}:function(t){return{url:t}},"string"==typeof e.container){var s=a.document.getElementById(e.container);if(!s)throw new Error("Container '"+e.container+"' not found.");this._container=s}else this._container=e.container;this.animationLoop=new h,e.maxBounds&&this.setMaxBounds(e.maxBounds),n.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored","_update","_render","_onData","_onDataLoading"],this),this._setupContainer(),this._setupPainter(),this.on("move",this._update.bind(this,!1)),this.on("zoom",this._update.bind(this,!0)),this.on("moveend",function(){r.animationLoop.set(300),r._rerender()}),void 0!==a&&(a.addEventListener("online",this._onWindowOnline,!1),a.addEventListener("resize",this._onWindowResize,!1)),v(this,e),this._hash=e.hash&&(new m).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),this._classes=[],this.resize(),e.classes&&this.setClasses(e.classes),e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new b),this.addControl(new w,e.logoPosition),this.on("style.load",function(){this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this.style.update(this._classes,{transition:!1})}),this.on("data",this._onData),this.on("dataloading",this._onDataLoading)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={showTileBoundaries:{},showCollisionBoxes:{},showOverdrawInspector:{},repaint:{},vertices:{}};return e.prototype.addControl=function(t,e){void 0===e&&t.getDefaultPosition&&(e=t.getDefaultPosition()),void 0===e&&(e="top-right");var r=t.onAdd(this),i=this._controlPositions[e];return-1!==e.indexOf("bottom")?i.insertBefore(r,i.firstChild):i.appendChild(r),this},e.prototype.removeControl=function(t){return t.onRemove(this),this},e.prototype.addClass=function(t,e){return n.warnOnce("Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS."),this._classes.indexOf(t)>=0||""===t?this:(this._classes.push(t),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.removeClass=function(t,e){n.warnOnce("Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.");var r=this._classes.indexOf(t);return r<0||""===t?this:(this._classes.splice(r,1),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.setClasses=function(t,e){n.warnOnce("Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.");for(var r={},i=0;i<t.length;i++)""!==t[i]&&(r[t[i]]=!0);return this._classes=Object.keys(r),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0)},e.prototype.hasClass=function(t){return n.warnOnce("Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS."),this._classes.indexOf(t)>=0},e.prototype.getClasses=function(){return n.warnOnce("Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS."),this._classes},e.prototype.resize=function(){var t=this._containerDimensions(),e=t[0],r=t[1];return this._resizeCanvas(e,r),this.transform.resize(e,r),this.painter.resize(e,r),this.fire("movestart").fire("move").fire("resize").fire("moveend")},e.prototype.getBounds=function(){var t=new _(this.transform.pointLocation(new x(0,this.transform.height)),this.transform.pointLocation(new x(this.transform.width,0)));return(this.transform.angle||this.transform.pitch)&&(t.extend(this.transform.pointLocation(new x(this.transform.size.x,0))),t.extend(this.transform.pointLocation(new x(0,this.transform.size.y)))),t},e.prototype.getMaxBounds=function(){return this.transform.latRange&&2===this.transform.latRange.length&&this.transform.lngRange&&2===this.transform.lngRange.length?new _([this.transform.lngRange[0],this.transform.latRange[0]],[this.transform.lngRange[1],this.transform.latRange[1]]):null},e.prototype.setMaxBounds=function(t){if(t){var e=_.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null!==t&&void 0!==t||(this.transform.lngRange=null,this.transform.latRange=null,this._update());return this},e.prototype.setMinZoom=function(t){if((t=null===t||void 0===t?0:t)>=0&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error("minZoom must be between 0 and the current maxZoom, inclusive")},e.prototype.getMinZoom=function(){return this.transform.minZoom},e.prototype.setMaxZoom=function(t){if((t=null===t||void 0===t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")},e.prototype.getMaxZoom=function(){return this.transform.maxZoom},e.prototype.project=function(t){return this.transform.locationPoint(g.convert(t))},e.prototype.unproject=function(t){return this.transform.pointLocation(x.convert(t))},e.prototype.on=function(e,r,i){var o=this;if(void 0===i)return t.prototype.on.call(this,e,r);var a=function(){if("mouseenter"===e||"mouseover"===e){var t=!1;return{layer:r,listener:i,delegates:{mousemove:function(a){var s=o.getLayer(r)?o.queryRenderedFeatures(a.point,{layers:[r]}):[];s.length?t||(t=!0,i.call(o,n.extend({features:s},a,{type:e}))):t=!1},mouseout:function(){t=!1}}}}if("mouseleave"===e||"mouseout"===e){var a=!1;return{layer:r,listener:i,delegates:{mousemove:function(t){(o.getLayer(r)?o.queryRenderedFeatures(t.point,{layers:[r]}):[]).length?a=!0:a&&(a=!1,i.call(o,n.extend({},t,{type:e})))},mouseout:function(t){a&&(a=!1,i.call(o,n.extend({},t,{type:e})))}}}}var s=function(t){var e=o.getLayer(r)?o.queryRenderedFeatures(t.point,{layers:[r]}):[];e.length&&i.call(o,n.extend({features:e},t))};return{layer:r,listener:i,delegates:(l={},l[e]=s,l)};var l}();this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(a);for(var s in a.delegates)o.on(s,a.delegates[s]);return this},e.prototype.off=function(e,r,i){var n=this;if(void 0===i)return t.prototype.off.call(this,e,r);if(this._delegatedListeners&&this._delegatedListeners[e])for(var o=this._delegatedListeners[e],a=0;a<o.length;a++){var s=o[a];if(s.layer===r&&s.listener===i){for(var l in s.delegates)n.off(l,s.delegates[l]);return o.splice(a,1),n}}return this},e.prototype.queryRenderedFeatures=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r,i={};return 2===t.length?(r=arguments[0],i=arguments[1]):1===t.length&&function(t){return t instanceof x||Array.isArray(t)}(t[0])?r=t[0]:1===t.length&&(i=t[0]),this.style?this.style.queryRenderedFeatures(this._makeQueryGeometry(r),i,this.transform.zoom,this.transform.angle):[]},e.prototype._makeQueryGeometry=function(t){var e=this;void 0===t&&(t=[x.convert([0,0]),x.convert([this.transform.width,this.transform.height])]);var r;if(t instanceof x||"number"==typeof t[0])r=[x.convert(t)];else{var i=[x.convert(t[0]),x.convert(t[1])];r=[i[0],new x(i[1].x,i[0].y),i[1],new x(i[0].x,i[1].y),i[0]]}return r=r.map(function(t){return e.transform.pointCoordinate(t)})},e.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},e.prototype.setStyle=function(t,e){if((!e||!1!==e.diff&&!e.localIdeographFontFamily)&&this.style&&t&&!(t instanceof p)&&"string"!=typeof t)try{return this.style.setState(t)&&this._update(!0),this}catch(t){n.warnOnce("Unable to perform style diff: "+(t.message||t.error||t)+". Rebuilding the style from scratch.")}return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.off("rotate",this.style._redoPlacement),this.off("pitch",this.style._redoPlacement),this.off("move",this.style._redoPlacement)),t?(this.style=t instanceof p?t:new p(t,this,e||{}),this.style.setEventedParent(this,{style:this.style}),this.on("rotate",this.style._redoPlacement),this.on("pitch",this.style._redoPlacement),this.on("move",this.style._redoPlacement),this):(this.style=null,this)},e.prototype.getStyle=function(){if(this.style)return this.style.serialize()},e.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():n.warnOnce("There is no style added to the map.")},e.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0),this},e.prototype.isSourceLoaded=function(t){var e=this.style&&this.style.sourceCaches[t];return void 0===e?void this.fire("error",{error:new Error("There is no source with ID '"+t+"'")}):e.loaded()},e.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var r=t[e],i=r._tiles;for(var n in i){var o=i[n];if("loaded"!==o.state&&"errored"!==o.state)return!1}}return!0},e.prototype.addSourceType=function(t,e,r){return this.style.addSourceType(t,e,r)},e.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0),this},e.prototype.getSource=function(t){return this.style.getSource(t)},e.prototype.addImage=function(t,e,r){void 0===r&&(r={});var i=r.pixelRatio;void 0===i&&(i=1);var n=r.sdf;if(void 0===n&&(n=!1),e instanceof l)e=o.getImageData(e);else if(void 0===e.width||void 0===e.height)return this.fire("error",{error:new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")});this.style.addImage(t,{data:e,pixelRatio:i,sdf:n})},e.prototype.removeImage=function(t){this.style.removeImage(t)},e.prototype.loadImage=function(t,e){c.getImage(this._transformRequest(t,c.ResourceType.Image),e)},e.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0),this},e.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0),this},e.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0),this},e.prototype.getLayer=function(t){return this.style.getLayer(t)},e.prototype.setFilter=function(t,e){return this.style.setFilter(t,e),this._update(!0),this},e.prototype.setLayerZoomRange=function(t,e,r){return this.style.setLayerZoomRange(t,e,r),this._update(!0),this},e.prototype.getFilter=function(t){return this.style.getFilter(t)},e.prototype.setPaintProperty=function(t,e,r,i){return this.style.setPaintProperty(t,e,r,i),this._update(!0),this},e.prototype.getPaintProperty=function(t,e,r){return this.style.getPaintProperty(t,e,r)},e.prototype.setLayoutProperty=function(t,e,r){return this.style.setLayoutProperty(t,e,r),this._update(!0),this},e.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},e.prototype.setLight=function(t){return this.style.setLight(t),this._update(!0),this},e.prototype.getLight=function(){return this.style.getLight()},e.prototype.getContainer=function(){return this._container},e.prototype.getCanvasContainer=function(){return this._canvasContainer},e.prototype.getCanvas=function(){return this._canvas},e.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),[t,e]},e.prototype._setupContainer=function(){var t=this._container;t.classList.add("mapboxgl-map");var e=this._canvasContainer=u.create("div","mapboxgl-canvas-container",t);this._interactive&&e.classList.add("mapboxgl-interactive"),this._canvas=u.create("canvas","mapboxgl-canvas",e),this._canvas.style.position="absolute",this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map");var r=this._containerDimensions();this._resizeCanvas(r[0],r[1]);var i=this._controlContainer=u.create("div","mapboxgl-control-container",t),n=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(function(t){n[t]=u.create("div","mapboxgl-ctrl-"+t,i)})},e.prototype._resizeCanvas=function(t,e){var r=a.devicePixelRatio||1;this._canvas.width=r*t,this._canvas.height=r*e,this._canvas.style.width=t+"px",this._canvas.style.height=e+"px"},e.prototype._setupPainter=function(){var t=n.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},T.webGLContextAttributes),e=this._canvas.getContext("webgl",t)||this._canvas.getContext("experimental-webgl",t);if(!e)return void this.fire("error",{error:new Error("Failed to initialize WebGL")});this.painter=new f(e,this.transform)},e.prototype._contextLost=function(t){t.preventDefault(),this._frameId&&(o.cancelFrame(this._frameId),this._frameId=null),this.fire("webglcontextlost",{originalEvent:t})},e.prototype._contextRestored=function(t){this._setupPainter(),this.resize(),this._update(),this.fire("webglcontextrestored",{originalEvent:t})},e.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},e.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender(),this):this},e.prototype._render=function(){return this.style&&this._styleDirty&&(this._styleDirty=!1,this.style.update(this._classes,this._classOptions),this._classOptions=null,this.style._recalculate(this.transform.zoom)),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.rotating,zooming:this.zooming}),this.fire("render"),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire("load")),this._frameId=null,this.animationLoop.stopped()||(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty)&&this._rerender(),this},e.prototype.remove=function(){this._hash&&this._hash.remove(),o.cancelFrame(this._frameId),this._frameId=null,this.setStyle(null),void 0!==a&&(a.removeEventListener("resize",this._onWindowResize,!1),a.removeEventListener("online",this._onWindowOnline,!1));var t=this.painter.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),i(this._canvasContainer),i(this._controlContainer),this._container.classList.remove("mapboxgl-map"),this.fire("remove")},e.prototype._rerender=function(){this.style&&!this._frameId&&(this._frameId=o.frame(this._render))},e.prototype._onWindowOnline=function(){this._update()},e.prototype._onWindowResize=function(){this._trackResize&&this.stop().resize()._update()},r.showTileBoundaries.get=function(){return!!this._showTileBoundaries},r.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},r.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},r.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,this.style._redoPlacement())},r.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},r.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},r.repaint.get=function(){return!!this._repaint},r.repaint.set=function(t){this._repaint=t,this._update()},r.vertices.get=function(){return!!this._vertices},r.vertices.set=function(t){this._vertices=t,this._update()},e.prototype._onData=function(t){this._update("style"===t.dataType),this.fire(t.dataType+"data",t)},e.prototype._onDataLoading=function(t){this.fire(t.dataType+"dataloading",t)},Object.defineProperties(e.prototype,r),e}(y);e.exports=z},{"../geo/lng_lat":58,"../geo/lng_lat_bounds":59,"../geo/transform":60,"../render/painter":79,"../style/animation_loop":150,"../style/style":156,"../util/ajax":201,"../util/browser":202,"../util/dom":209,"../util/util":223,"../util/window":204,"./bind_handlers":180,"./camera":181,"./control/attribution_control":182,"./control/logo_control":185,"./events":188,"./hash":196,"@mapbox/point-geometry":2,"mapbox-gl-supported":28}],198:[function(t,e,r){"use strict";var i=t("../util/dom"),n=t("../geo/lng_lat"),o=t("@mapbox/point-geometry"),a=t("../util/smart_wrap"),s=t("../util/util"),l=s.bindAll,u=function(t,e){this._offset=o.convert(e&&e.offset||[0,0]),l(["_update","_onMapClick"],this),t||(t=i.create("div")),t.classList.add("mapboxgl-marker"),this._element=t,this._popup=null};u.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),this._update(),this._map.on("click",this._onMapClick),this},u.prototype.remove=function(){return this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this},u.prototype.getLngLat=function(){return this._lngLat},u.prototype.setLngLat=function(t){return this._lngLat=n.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},u.prototype.getElement=function(){return this._element},u.prototype.setPopup=function(t){return this._popup&&(this._popup.remove(),this._popup=null),t&&("offset"in t.options||(t.options.offset=this._offset),this._popup=t,this._popup.setLngLat(this._lngLat)),this},u.prototype._onMapClick=function(t){var e=t.originalEvent.target,r=this._element;this._popup&&(e===r||r.contains(e))&&this.togglePopup()},u.prototype.getPopup=function(){return this._popup},u.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},u.prototype._update=function(t){this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=a(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset),t&&"moveend"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,"translate(-50%, -50%) translate("+this._pos.x+"px, "+this._pos.y+"px)"))},e.exports=u},{"../geo/lng_lat":58,"../util/dom":209,"../util/smart_wrap":219,"../util/util":223,"@mapbox/point-geometry":2}],199:[function(t,e,r){"use strict";function i(t){if(t){if("number"==typeof t){var e=Math.round(Math.sqrt(.5*Math.pow(t,2)));return{top:new l(0,t),"top-left":new l(e,e),"top-right":new l(-e,e),bottom:new l(0,-t),"bottom-left":new l(e,-e),"bottom-right":new l(-e,-e),left:new l(t,0),right:new l(-t,0)}}if(t instanceof l||Array.isArray(t)){var r=l.convert(t);return{top:r,"top-left":r,"top-right":r,bottom:r,"bottom-left":r,"bottom-right":r,left:r,right:r}}return{top:l.convert(t.top||[0,0]),"top-left":l.convert(t["top-left"]||[0,0]),"top-right":l.convert(t["top-right"]||[0,0]),bottom:l.convert(t.bottom||[0,0]),"bottom-left":l.convert(t["bottom-left"]||[0,0]),"bottom-right":l.convert(t["bottom-right"]||[0,0]),left:l.convert(t.left||[0,0]),right:l.convert(t.right||[0,0])}}return i(new l(0,0))}var n=t("../util/util"),o=t("../util/evented"),a=t("../util/dom"),s=t("../geo/lng_lat"),l=t("@mapbox/point-geometry"),u=t("../util/window"),c=t("../util/smart_wrap"),p={closeButton:!0,closeOnClick:!0},h=function(t){function e(e){t.call(this),this.options=n.extend(Object.create(p),e),n.bindAll(["_update","_onClickClose"],this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.addTo=function(t){return this._map=t,this._map.on("move",this._update),this.options.closeOnClick&&this._map.on("click",this._onClickClose),this._update(),this},e.prototype.isOpen=function(){return!!this._map},e.prototype.remove=function(){return this._content&&a.remove(this._content),this._container&&(a.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("click",this._onClickClose),delete this._map),this.fire("close"),this},e.prototype.getLngLat=function(){return this._lngLat},e.prototype.setLngLat=function(t){return this._lngLat=s.convert(t),this._pos=null,this._update(),this},e.prototype.setText=function(t){return this.setDOMContent(u.document.createTextNode(t))},e.prototype.setHTML=function(t){var e,r=u.document.createDocumentFragment(),i=u.document.createElement("body");for(i.innerHTML=t;e=i.firstChild;)r.appendChild(e);return this.setDOMContent(r)},e.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},e.prototype._createContent=function(){this._content&&a.remove(this._content),this._content=a.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=a.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="&#215;",this._closeButton.addEventListener("click",this._onClickClose))},e.prototype._update=function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=a.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=a.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content)),this._map.transform.renderWorldCopies&&(this._lngLat=c(this._lngLat,this._pos,this._map.transform));var t=this._pos=this._map.project(this._lngLat),e=this.options.anchor,r=i(this.options.offset);if(!e){var n=this._container.offsetWidth,o=this._container.offsetHeight;e=t.y+r.bottom.y<o?["top"]:t.y>this._map.transform.height-o?["bottom"]:[],t.x<n/2?e.push("left"):t.x>this._map.transform.width-n/2&&e.push("right"),e=0===e.length?"bottom":e.join("-")}var s=t.add(r[e]).round(),l={top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"},u=this._container.classList;for(var p in l)u.remove("mapboxgl-popup-anchor-"+p);u.add("mapboxgl-popup-anchor-"+e),a.setTransform(this._container,l[e]+" translate("+s.x+"px,"+s.y+"px)")}},e.prototype._onClickClose=function(){this.remove()},e}(o);e.exports=h},{"../geo/lng_lat":58,"../util/dom":209,"../util/evented":210,"../util/smart_wrap":219,"../util/util":223,"../util/window":204,"@mapbox/point-geometry":2}],200:[function(t,e,r){"use strict";var i=t("./util"),n=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,i.bindAll(["receive"],this),this.target.addEventListener("message",this.receive,!1)};n.prototype.send=function(t,e,r,i,n){var o=r?this.mapId+":"+this.callbackID++:null;r&&(this.callbacks[o]=r),this.target.postMessage({targetMapId:n,sourceMapId:this.mapId,type:t,id:String(o),data:e},i)},n.prototype.receive=function(t){var e,r=this,i=t.data,n=i.id;if(!i.targetMapId||this.mapId===i.targetMapId){var o=function(t,e,i){r.target.postMessage({sourceMapId:r.mapId,type:"<response>",id:String(n),error:t?String(t):null,data:e},i)};if("<response>"===i.type)e=this.callbacks[i.id],delete this.callbacks[i.id],e&&i.error?e(new Error(i.error)):e&&e(null,i.data);else if(void 0!==i.id&&this.parent[i.type])this.parent[i.type](i.sourceMapId,i.data,o);else if(void 0!==i.id&&this.parent.getWorkerSource){var a=i.type.split("."),s=this.parent.getWorkerSource(i.sourceMapId,a[0]);s[a[1]](i.data,o)}else this.parent[i.type](i.data)}},n.prototype.remove=function(){this.target.removeEventListener("message",this.receive,!1)},e.exports=n},{"./util":223}],201:[function(t,e,r){"use strict";function i(t){var e=new o.XMLHttpRequest;e.open("GET",t.url,!0);for(var r in t.headers)e.setRequestHeader(r,t.headers[r]);return e.withCredentials="include"===t.credentials,e}function n(t){var e=o.document.createElement("a");return e.href=t,e.protocol===o.document.location.protocol&&e.host===o.document.location.host}var o=t("./window"),a={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};r.ResourceType=a,"function"==typeof Object.freeze&&Object.freeze(a);var s=function(t){function e(e,r){t.call(this,e),this.status=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);r.getJSON=function(t,e){var r=i(t);return r.setRequestHeader("Accept","application/json"),r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var t;try{t=JSON.parse(r.response)}catch(t){return e(t)}e(null,t)}else e(new s(r.statusText,r.status))},r.send(),r},r.getArrayBuffer=function(t,e){var r=i(t);return r.responseType="arraybuffer",r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){var t=r.response;if(0===t.byteLength&&200===r.status)return e(new Error("http status 200 returned without content."));r.status>=200&&r.status<300&&r.response?e(null,{data:t,cacheControl:r.getResponseHeader("Cache-Control"),expires:r.getResponseHeader("Expires")}):e(new s(r.statusText,r.status))},r.send(),r};r.getImage=function(t,e){return r.getArrayBuffer(t,function(t,r){if(t)e(t);else if(r){var i=new o.Image,n=o.URL||o.webkitURL;i.onload=function(){e(null,i),n.revokeObjectURL(i.src)};var a=new o.Blob([new Uint8Array(r.data)],{type:"image/png"});i.cacheControl=r.cacheControl,i.expires=r.expires,i.src=r.data.byteLength?n.createObjectURL(a):"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII="}})},r.getVideo=function(t,e){var r=o.document.createElement("video");r.onloadstart=function(){e(null,r)};for(var i=0;i<t.length;i++){var a=o.document.createElement("source");n(t[i])||(r.crossOrigin="Anonymous"),a.src=t[i],r.appendChild(a)}return r}},{"./window":204}],202:[function(t,e,r){"use strict";var i=t("./window"),n=i.performance&&i.performance.now?i.performance.now.bind(i.performance):Date.now.bind(Date),o=i.requestAnimationFrame||i.mozRequestAnimationFrame||i.webkitRequestAnimationFrame||i.msRequestAnimationFrame,a=i.cancelAnimationFrame||i.mozCancelAnimationFrame||i.webkitCancelAnimationFrame||i.msCancelAnimationFrame;e.exports={now:n,frame:function(t){return o(t)},cancelFrame:function(t){return a(t)},timed:function(t,e,r){function i(){if(!a){var l=n();l>=s+e?t.call(r,1):(t.call(r,(l-s)/e),o(i))}}if(!e)return t.call(r,1),null;var a=!1,s=n();return o(i),function(){a=!0}},getImageData:function(t){var e=i.document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("failed to create canvas 2d context");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0,t.width,t.height),r.getImageData(0,0,t.width,t.height)},hardwareConcurrency:i.navigator.hardwareConcurrency||4,get devicePixelRatio(){return i.devicePixelRatio},supportsWebp:!1};var s=i.document.createElement("img");s.onload=function(){e.exports.supportsWebp=!0},s.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="},{"./window":204}],203:[function(t,e,r){"use strict";var i=t("webworkify"),n=t("../window"),o=n.URL.createObjectURL(new i(t("../../source/worker"),{bare:!0}));e.exports=function(){return new n.Worker(o)}},{"../../source/worker":105,"../window":204,webworkify:39}],204:[function(t,e,r){"use strict";e.exports=self},{}],205:[function(t,e,r){"use strict";function i(t,e){return e.area-t.area}var n=t("quickselect"),o=t("./util").calculateSignedArea;e.exports=function(t,e){var r=t.length;if(r<=1)return[t];for(var a,s,l=[],u=0;u<r;u++){var c=o(t[u]);0!==c&&(t[u].area=Math.abs(c),void 0===s&&(s=c<0),s===c<0?(a&&l.push(a),a=[t[u]]):a.push(t[u]))}if(a&&l.push(a),e>1)for(var p=0;p<l.length;p++)l[p].length<=e||(n(l[p],e,1,l[p].length-1,i),l[p]=l[p].slice(0,e));return l}},{"./util":223,quickselect:31}],206:[function(t,e,r){"use strict";var i={API_URL:"https://api.mapbox.com",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null};e.exports=i},{}],207:[function(t,e,r){"use strict";var i=function(t){var e=this;this._stringToNumber={},this._numberToString=[];for(var r=0;r<t.length;r++){var i=t[r];e._stringToNumber[i]=r,e._numberToString[r]=i}};i.prototype.encode=function(t){return this._stringToNumber[t]},i.prototype.decode=function(t){return this._numberToString[t]},e.exports=i},{}],208:[function(t,e,r){"use strict";var i=t("./util"),n=t("./actor"),o=function(t,e){var r=this;this.workerPool=t,this.actors=[],this.currentActor=0,this.id=i.uniqueId();for(var o=this.workerPool.acquire(this.id),a=0;a<o.length;a++){var s=o[a],l=new n(s,e,r.id);l.name="Worker "+a,r.actors.push(l)}};o.prototype.broadcast=function(t,e,r){r=r||function(){},i.asyncAll(this.actors,function(r,i){r.send(t,e,i)},r)},o.prototype.send=function(t,e,r,i,n){return("number"!=typeof i||isNaN(i))&&(i=this.currentActor=(this.currentActor+1)%this.actors.length),this.actors[i].send(t,e,r,n),i},o.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},e.exports=o},{"./actor":200,"./util":223}],209:[function(t,e,r){"use strict";function i(t){for(var e=0;e<t.length;e++)if(t[e]in s)return t[e];return t[0]}var n=t("@mapbox/point-geometry"),o=t("./window");r.create=function(t,e,r){var i=o.document.createElement(t);return e&&(i.className=e),r&&r.appendChild(i),i};var a,s=o.document.documentElement.style,l=i(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]);r.disableDrag=function(){l&&(a=s[l],s[l]="none")},r.enableDrag=function(){l&&(s[l]=a)};var u=i(["transform","WebkitTransform"]);r.setTransform=function(t,e){t.style[u]=e};var c=function(t){t.preventDefault(),t.stopPropagation(),o.removeEventListener("click",c,!0)};r.suppressClick=function(){o.addEventListener("click",c,!0),o.setTimeout(function(){o.removeEventListener("click",c,!0)},0)},r.mousePos=function(t,e){var r=t.getBoundingClientRect();return e=e.touches?e.touches[0]:e,new n(e.clientX-r.left-t.clientLeft,e.clientY-r.top-t.clientTop)},r.touchPos=function(t,e){for(var r=t.getBoundingClientRect(),i=[],o="touchend"===e.type?e.changedTouches:e.touches,a=0;a<o.length;a++)i.push(new n(o[a].clientX-r.left-t.clientLeft,o[a].clientY-r.top-t.clientTop));return i},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)}},{"./window":204,"@mapbox/point-geometry":2}],210:[function(t,e,r){"use strict";function i(t,e,r){r[t]=r[t]||[],r[t].push(e)}function n(t,e,r){if(r&&r[t]){var i=r[t].indexOf(e);-1!==i&&r[t].splice(i,1)}}var o=t("./util"),a=function(){};a.prototype.on=function(t,e){return this._listeners=this._listeners||{},i(t,e,this._listeners),this},a.prototype.off=function(t,e){return n(t,e,this._listeners),n(t,e,this._oneTimeListeners),this},a.prototype.once=function(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},i(t,e,this._oneTimeListeners),this},a.prototype.fire=function(t,e){var r=this;if(this.listens(t)){e=o.extend({},e,{type:t,target:this});for(var i=this._listeners&&this._listeners[t]?this._listeners[t].slice():[],a=0;a<i.length;a++)i[a].call(r,e);for(var s=this._oneTimeListeners&&this._oneTimeListeners[t]?this._oneTimeListeners[t].slice():[],l=0;l<s.length;l++)s[l].call(r,e),n(t,s[l],r._oneTimeListeners);this._eventedParent&&this._eventedParent.fire(t,o.extend({},e,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData))}else o.endsWith(t,"error")&&console.error(e&&e.error||e||"Empty error event");return this},a.prototype.listens=function(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},a.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this},e.exports=a},{"./util":223}],211:[function(t,e,r){"use strict";function i(t,e){return e.max-t.max}function n(t,e,r,i){this.p=new l(t,e),this.h=r,this.d=o(this.p,i),this.max=this.d+this.h*Math.SQRT2}function o(t,e){for(var r=!1,i=1/0,n=0;n<e.length;n++)for(var o=e[n],a=0,s=o.length,l=s-1;a<s;l=a++){var c=o[a],p=o[l];c.y>t.y!=p.y>t.y&&t.x<(p.x-c.x)*(t.y-c.y)/(p.y-c.y)+c.x&&(r=!r),i=Math.min(i,u(t,c,p))}return(r?1:-1)*Math.sqrt(i)}function a(t){for(var e=0,r=0,i=0,o=t[0],a=0,s=o.length,l=s-1;a<s;l=a++){var u=o[a],c=o[l],p=u.x*c.y-c.x*u.y;r+=(u.x+c.x)*p,i+=(u.y+c.y)*p,e+=3*p}return new n(r/e,i/e,0,t)}var s=t("tinyqueue"),l=t("@mapbox/point-geometry"),u=t("./intersection_tests").distToSegmentSquared;e.exports=function(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var o=1/0,u=1/0,c=-1/0,p=-1/0,h=t[0],f=0;f<h.length;f++){var d=h[f];(!f||d.x<o)&&(o=d.x),(!f||d.y<u)&&(u=d.y),(!f||d.x>c)&&(c=d.x),(!f||d.y>p)&&(p=d.y)}var m=c-o,v=p-u,y=Math.min(m,v),g=y/2,_=new s(null,i);if(0===y)return new l(o,u);for(var x=o;x<c;x+=y)for(var b=u;b<p;b+=y)_.push(new n(x+g,b+g,g,t));for(var w=a(t),T=_.length;_.length;){var S=_.pop();(S.d>w.d||!w.d)&&(w=S,r&&console.log("found best %d after %d probes",Math.round(1e4*S.d)/1e4,T)),S.max-w.d<=e||(g=S.h/2,_.push(new n(S.p.x-g,S.p.y-g,g,t)),_.push(new n(S.p.x+g,S.p.y-g,g,t)),_.push(new n(S.p.x-g,S.p.y+g,g,t)),_.push(new n(S.p.x+g,S.p.y+g,g,t)),T+=4)}return r&&(console.log("num probes: "+T),console.log("best distance: "+w.d)),w.p}},{"./intersection_tests":214,"@mapbox/point-geometry":2,tinyqueue:33}],212:[function(t,e,r){"use strict";var i,n=t("./worker_pool");e.exports=function(){return i||(i=new n),i}},{"./worker_pool":226}],213:[function(t,e,r){"use strict";function i(t,e,r){var i=t.width,n=t.height;if(r){if(r.length!==i*n*e)throw new RangeError("mismatched image size")}else r=new Uint8Array(i*n*e);return{width:i,height:n,data:r}}function n(t,e,r){var n=e.width,a=e.height;if(n===t.width&&a===t.height)return t;var s=i({width:n,height:a},r);o(t,s,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,a)},r),t.width=n,t.height=a,t.data=s.data}function o(t,e,r,i,n,o){if(0===n.width||0===n.height)return e;if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range destination coordinates for image copy");for(var a=t.data,s=e.data,l=0;l<n.height;l++)for(var u=((r.y+l)*t.width+r.x)*o,c=((i.y+l)*e.width+i.x)*o,p=0;p<n.width*o;p++)s[c+p]=a[u+p];return e}var a=function(){};a.create=function(t,e){return i(t,1,e)},a.resize=function(t,e){n(t,e,1)},a.copy=function(t,e,r,i,n){o(t,e,r,i,n,1)};var s=function(){};s.create=function(t,e){return i(t,4,e)},s.resize=function(t,e){n(t,e,4)},s.copy=function(t,e,r,i,n){o(t,e,r,i,n,4)},e.exports={AlphaImage:a,RGBAImage:s}},{}],214:[function(t,e,r){"use strict";function i(t,e){for(var r=0;r<t.length;r++)if(f(e,t[r]))return!0;for(var i=0;i<e.length;i++)if(f(t,e[i]))return!0;return!!l(t,e)}function n(t,e,r){for(var i=0;i<t.length;i++)for(var n=t[i],o=0;o<e.length;o++)for(var a=e[o],s=0;s<a.length;s++){var l=a[s];if(f(n,l))return!0;if(c(l,n,r))return!0}return!1}function o(t,e){if(1===t.length&&1===t[0].length)return h(e,t[0][0]);for(var r=0;r<e.length;r++)for(var i=e[r],n=0;n<i.length;n++)if(h(t,i[n]))return!0;for(var o=0;o<t.length;o++){for(var a=t[o],s=0;s<a.length;s++)if(h(e,a[s]))return!0;for(var u=0;u<e.length;u++)if(l(a,e[u]))return!0}return!1}function a(t,e,r){for(var i=0;i<e.length;i++)for(var n=e[i],o=0;o<t.length;o++){var a=t[o];if(a.length>=3)for(var l=0;l<n.length;l++)if(f(a,n[l]))return!0;if(s(a,n,r))return!0}return!1}function s(t,e,r){if(t.length>1){if(l(t,e))return!0;for(var i=0;i<e.length;i++)if(c(e[i],t,r))return!0}for(var n=0;n<t.length;n++)if(c(t[n],e,r))return!0;return!1}function l(t,e){if(0===t.length||0===e.length)return!1;for(var r=0;r<t.length-1;r++)for(var i=t[r],n=t[r+1],o=0;o<e.length-1;o++){var a=e[o],s=e[o+1];if(u(i,n,a,s))return!0}return!1}function u(t,e,r,i){return m(t,r,i)!==m(e,r,i)&&m(t,e,r)!==m(t,e,i)}function c(t,e,r){var i=r*r;if(1===e.length)return t.distSqr(e[0])<i;for(var n=1;n<e.length;n++)if(p(t,e[n-1],e[n])<i)return!0;return!1}function p(t,e,r){var i=e.distSqr(r);if(0===i)return t.distSqr(e);var n=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/i;return n<0?t.distSqr(e):n>1?t.distSqr(r):t.distSqr(r.sub(e)._mult(n)._add(e))}function h(t,e){for(var r,i,n,o=!1,a=0;a<t.length;a++){r=t[a];for(var s=0,l=r.length-1;s<r.length;l=s++)i=r[s],n=r[l],i.y>e.y!=n.y>e.y&&e.x<(n.x-i.x)*(e.y-i.y)/(n.y-i.y)+i.x&&(o=!o)}return o}function f(t,e){for(var r=!1,i=0,n=t.length-1;i<t.length;n=i++){var o=t[i],a=t[n];o.y>e.y!=a.y>e.y&&e.x<(a.x-o.x)*(e.y-o.y)/(a.y-o.y)+o.x&&(r=!r)}return r}var d=t("./util"),m=d.isCounterClockwise;e.exports={multiPolygonIntersectsBufferedMultiPoint:n,multiPolygonIntersectsMultiPolygon:o,multiPolygonIntersectsBufferedMultiLine:a,polygonIntersectsPolygon:i,distToSegmentSquared:p}},{"./util":223}],215:[function(t,e,r){"use strict";var i={"Latin-1 Supplement":function(t){return t>=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},"Arabic Supplement":function(t){return t>=1872&&t<=1919},"Arabic Extended-A":function(t){return t>=2208&&t<=2303},"Hangul Jamo":function(t){return t>=4352&&t<=4607},"Unified Canadian Aboriginal Syllabics":function(t){return t>=5120&&t<=5759},"Unified Canadian Aboriginal Syllabics Extended":function(t){return t>=6320&&t<=6399},"General Punctuation":function(t){return t>=8192&&t<=8303},"Letterlike Symbols":function(t){return t>=8448&&t<=8527},"Number Forms":function(t){return t>=8528&&t<=8591},"Miscellaneous Technical":function(t){return t>=8960&&t<=9215},"Control Pictures":function(t){return t>=9216&&t<=9279},"Optical Character Recognition":function(t){return t>=9280&&t<=9311},"Enclosed Alphanumerics":function(t){return t>=9312&&t<=9471},"Geometric Shapes":function(t){return t>=9632&&t<=9727},"Miscellaneous Symbols":function(t){return t>=9728&&t<=9983},"Miscellaneous Symbols and Arrows":function(t){return t>=11008&&t<=11263},"CJK Radicals Supplement":function(t){return t>=11904&&t<=12031},"Kangxi Radicals":function(t){return t>=12032&&t<=12255},"Ideographic Description Characters":function(t){return t>=12272&&t<=12287},"CJK Symbols and Punctuation":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},"Hangul Compatibility Jamo":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},"Bopomofo Extended":function(t){return t>=12704&&t<=12735},"CJK Strokes":function(t){return t>=12736&&t<=12783},"Katakana Phonetic Extensions":function(t){return t>=12784&&t<=12799},"Enclosed CJK Letters and Months":function(t){return t>=12800&&t<=13055},"CJK Compatibility":function(t){return t>=13056&&t<=13311},"CJK Unified Ideographs Extension A":function(t){return t>=13312&&t<=19903},"Yijing Hexagram Symbols":function(t){return t>=19904&&t<=19967},"CJK Unified Ideographs":function(t){return t>=19968&&t<=40959},"Yi Syllables":function(t){return t>=40960&&t<=42127},"Yi Radicals":function(t){return t>=42128&&t<=42191},"Hangul Jamo Extended-A":function(t){return t>=43360&&t<=43391},"Hangul Syllables":function(t){return t>=44032&&t<=55215},"Hangul Jamo Extended-B":function(t){return t>=55216&&t<=55295},"Private Use Area":function(t){return t>=57344&&t<=63743},"CJK Compatibility Ideographs":function(t){return t>=63744&&t<=64255},"Arabic Presentation Forms-A":function(t){return t>=64336&&t<=65023},"Vertical Forms":function(t){return t>=65040&&t<=65055},"CJK Compatibility Forms":function(t){return t>=65072&&t<=65103},"Small Form Variants":function(t){return t>=65104&&t<=65135},"Arabic Presentation Forms-B":function(t){return t>=65136&&t<=65279},"Halfwidth and Fullwidth Forms":function(t){return t>=65280&&t<=65519}};e.exports=i},{}],216:[function(t,e,r){"use strict";var i=function(t,e){this.max=t,this.onRemove=e,this.reset()};i.prototype.reset=function(){var t=this;for(var e in t.data)t.onRemove(t.data[e]);return this.data={},this.order=[],this},i.prototype.add=function(t,e){if(this.has(t))this.order.splice(this.order.indexOf(t),1),this.data[t]=e,this.order.push(t);else if(this.data[t]=e,this.order.push(t),this.order.length>this.max){var r=this.get(this.order[0]);r&&this.onRemove(r)}return this},i.prototype.has=function(t){return t in this.data},i.prototype.keys=function(){return this.order},i.prototype.get=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},i.prototype.getWithoutRemoving=function(t){return this.has(t)?this.data[t]:null},i.prototype.remove=function(t){if(!this.has(t))return this;var e=this.data[t];return delete this.data[t],this.onRemove(e),this.order.splice(this.order.indexOf(t),1),this},i.prototype.setMaxSize=function(t){var e=this;for(this.max=t;this.order.length>this.max;){var r=e.get(e.order[0]);r&&e.onRemove(r)}return this},e.exports=i},{}],217:[function(t,e,r){"use strict";function i(t,e){var r=a(l.API_URL);if(t.protocol=r.protocol,t.authority=r.authority,"/"!==r.path&&(t.path=""+r.path+t.path),!l.REQUIRE_ACCESS_TOKEN)return s(t);if(!(e=e||l.ACCESS_TOKEN))throw new Error("An API access token is required to use Mapbox GL. "+c);if("s"===e[0])throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+c);return t.params.push("access_token="+e),s(t)}function n(t){return 0===t.indexOf("mapbox:")}function o(t){for(var e=0;e<t.length;e++)0===t[e].indexOf("access_token=tk.")&&(t[e]="access_token="+(l.ACCESS_TOKEN||""))}function a(t){var e=t.match(h);if(!e)throw new Error("Unable to parse URL object");return{protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}function s(t){var e=t.params.length?"?"+t.params.join("&"):"";return t.protocol+"://"+t.authority+t.path+e}var l=t("./config"),u=t("./browser"),c="See https://www.mapbox.com/api-documentation/#access-tokens";r.isMapboxURL=n,r.normalizeStyleURL=function(t,e){if(!n(t))return t;var r=a(t);return r.path="/styles/v1"+r.path,i(r,e)},r.normalizeGlyphsURL=function(t,e){if(!n(t))return t;var r=a(t);return r.path="/fonts/v1"+r.path,i(r,e)},r.normalizeSourceURL=function(t,e){if(!n(t))return t;var r=a(t);return r.path="/v4/"+r.authority+".json",r.params.push("secure"),i(r,e)},r.normalizeSpriteURL=function(t,e,r,o){var l=a(t);return n(t)?(l.path="/styles/v1"+l.path+"/sprite"+e+r,i(l,o)):(l.path+=""+e+r,s(l))};var p=/(\.(png|jpg)\d*)(?=$)/;r.normalizeTileURL=function(t,e,r){if(!e||!n(e))return t;var i=a(t),l=u.devicePixelRatio>=2||512===r?"@2x":"",c=u.supportsWebp?".webp":"$1";return i.path=i.path.replace(p,""+l+c),o(i.params),s(i)};var h=/^(\w+):\/\/([^\/?]*)(\/[^?]+)?\??(.+)?/},{"./browser":202,"./config":206}],218:[function(t,e,r){"use strict";var i=t("./is_char_in_unicode_block");e.exports.allowsIdeographicBreaking=function(t){for(var e=0,i=t;e<i.length;e+=1){var n=i[e];if(!r.charAllowsIdeographicBreaking(n.charCodeAt(0)))return!1}return!0},e.exports.allowsVerticalWritingMode=function(t){for(var e=0,i=t;e<i.length;e+=1){var n=i[e];if(r.charHasUprightVerticalOrientation(n.charCodeAt(0)))return!0}return!1},e.exports.allowsLetterSpacing=function(t){for(var e=0,i=t;e<i.length;e+=1){var n=i[e];if(!r.charAllowsLetterSpacing(n.charCodeAt(0)))return!1}return!0},e.exports.charAllowsLetterSpacing=function(t){return!(i.Arabic(t)||i["Arabic Supplement"](t)||i["Arabic Extended-A"](t)||i["Arabic Presentation Forms-A"](t)||i["Arabic Presentation Forms-B"](t))},e.exports.charAllowsIdeographicBreaking=function(t){return!!(!(t<11904)&&(i["Bopomofo Extended"](t)||i.Bopomofo(t)||i["CJK Compatibility Forms"](t)||i["CJK Compatibility Ideographs"](t)||i["CJK Compatibility"](t)||i["CJK Radicals Supplement"](t)||i["CJK Strokes"](t)||i["CJK Symbols and Punctuation"](t)||i["CJK Unified Ideographs Extension A"](t)||i["CJK Unified Ideographs"](t)||i["Enclosed CJK Letters and Months"](t)||i["Halfwidth and Fullwidth Forms"](t)||i.Hiragana(t)||i["Ideographic Description Characters"](t)||i["Kangxi Radicals"](t)||i["Katakana Phonetic Extensions"](t)||i.Katakana(t)||i["Vertical Forms"](t)||i["Yi Radicals"](t)||i["Yi Syllables"](t)))},r.charHasUprightVerticalOrientation=function(t){return!!(746===t||747===t||!(t<4352)&&(i["Bopomofo Extended"](t)||i.Bopomofo(t)||i["CJK Compatibility Forms"](t)&&!(t>=65097&&t<=65103)||i["CJK Compatibility Ideographs"](t)||i["CJK Compatibility"](t)||i["CJK Radicals Supplement"](t)||i["CJK Strokes"](t)||!(!i["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||i["CJK Unified Ideographs Extension A"](t)||i["CJK Unified Ideographs"](t)||i["Enclosed CJK Letters and Months"](t)||i["Hangul Compatibility Jamo"](t)||i["Hangul Jamo Extended-A"](t)||i["Hangul Jamo Extended-B"](t)||i["Hangul Jamo"](t)||i["Hangul Syllables"](t)||i.Hiragana(t)||i["Ideographic Description Characters"](t)||i.Kanbun(t)||i["Kangxi Radicals"](t)||i["Katakana Phonetic Extensions"](t)||i.Katakana(t)&&12540!==t||!(!i["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!i["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||i["Unified Canadian Aboriginal Syllabics"](t)||i["Unified Canadian Aboriginal Syllabics Extended"](t)||i["Vertical Forms"](t)||i["Yijing Hexagram Symbols"](t)||i["Yi Syllables"](t)||i["Yi Radicals"](t)))},r.charHasNeutralVerticalOrientation=function(t){return!!(i["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||i["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||i["Letterlike Symbols"](t)||i["Number Forms"](t)||i["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||i["Control Pictures"](t)&&9251!==t||i["Optical Character Recognition"](t)||i["Enclosed Alphanumerics"](t)||i["Geometric Shapes"](t)||i["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||i["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||i["CJK Symbols and Punctuation"](t)||i.Katakana(t)||i["Private Use Area"](t)||i["CJK Compatibility Forms"](t)||i["Small Form Variants"](t)||i["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)},r.charHasRotatedVerticalOrientation=function(t){return!(r.charHasUprightVerticalOrientation(t)||r.charHasNeutralVerticalOrientation(t))}},{"./is_char_in_unicode_block":215}],219:[function(t,e,r){"use strict";var i=t("../geo/lng_lat");e.exports=function(t,e,r){if(t=new i(t.lng,t.lat),e){var n=new i(t.lng-360,t.lat),o=new i(t.lng+360,t.lat),a=r.locationPoint(t).distSqr(e);r.locationPoint(n).distSqr(e)<a?t=n:r.locationPoint(o).distSqr(e)<a&&(t=o)}for(;Math.abs(t.lng-r.center.lng)>180;){var s=r.locationPoint(t);if(s.x>=0&&s.y>=0&&s.x<=r.width&&s.y<=r.height)break;t.lng>r.center.lng?t.lng-=360:t.lng+=360}return t}},{"../geo/lng_lat":58}],220:[function(t,e,r){"use strict";function i(t){var e=JSON.stringify(t);if(f[e])return f[e];var r=void 0===t.alignment?1:t.alignment,i=0,a=0,l=["Uint8"],c=t.members.map(function(t){l.indexOf(t.type)<0&&l.push(t.type);var e=o(t.type),s=i=n(i,Math.max(r,e)),u=t.components||1;return a=Math.max(a,e),i+=e*u,{name:t.name,type:t.type,components:u,offset:s}}),d=n(i,Math.max(a,r)),m=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(p);m.prototype.alignment=r,m.prototype.size=d;for(var v=0,y=c;v<y.length;v+=1)for(var g=y[v],_=0;_<g.components;_++){var x=g.name;if(g.components>1&&(x+=_),x in m.prototype)throw new Error(x+" is a reserved name and cannot be used as a member name.");Object.defineProperty(m.prototype,x,u(g,_))}var b=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(h);return b.prototype.members=c,b.prototype.StructType=m,b.prototype.bytesPerElement=d,b.prototype.emplaceBack=s(c,d),b.prototype._usedTypes=l,f[e]=b,b}function n(t,e){return Math.ceil(t/e)*e}function o(t){return c[t].BYTES_PER_ELEMENT}function a(t){return t.toLowerCase()}function s(t,e){for(var r=[],i=[],n="var i = this.length;\nthis.resize(this.length + 1);\n",s=0,l=t;s<l.length;s+=1){var u=l[s],c=o(u.type);r.indexOf(c)<0&&(r.push(c),n+="var o"+c.toFixed(0)+" = i * "+(e/c).toFixed(0)+";\n");for(var p=0;p<u.components;p++){var h="v"+i.length,f="o"+c.toFixed(0)+" + "+(u.offset/c+p).toFixed(0);n+="this."+a(u.type)+"["+f+"] = "+h+";\n",i.push(h)}}return n+="return i;",new Function(i.toString(),n)}function l(t,e){var r="this._pos"+o(t.type).toFixed(0),i=(t.offset/o(t.type)+e).toFixed(0),n=r+" + "+i;return"this._structArray."+a(t.type)+"["+n+"]"}function u(t,e){var r=l(t,e);return{get:new Function("return "+r+";"),set:new Function("x",r+" = x;")}}e.exports=i;var c={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},p=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},h=function(t){this.isTransferred=!1,void 0!==t?(this.arrayBuffer=t.arrayBuffer,this.length=t.length,this.capacity=this.arrayBuffer.byteLength/this.bytesPerElement,this._refreshViews()):(this.capacity=-1,this.resize(0))};h.serialize=function(){return{members:this.prototype.members,alignment:this.prototype.StructType.prototype.alignment}},h.prototype.serialize=function(t){return this._trim(),t&&(this.isTransferred=!0,t.push(this.arrayBuffer)),{length:this.length,arrayBuffer:this.arrayBuffer}},h.prototype.get=function(t){return new this.StructType(this,t)},h.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},h.prototype.clear=function(){this.length=0},h.prototype.resize=function(t){if(this.length=t,t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},h.prototype._refreshViews=function(){for(var t=this,e=0,r=t._usedTypes;e<r.length;e+=1){var i=r[e];t[a(i)]=new c[i](t.arrayBuffer)}},h.prototype.toArray=function(t,e){for(var r=this,i=[],n=t;n<e;n++){var o=r.get(n);i.push(o)}return i};var f={}},{}],221:[function(t,e,r){"use strict";var i=t("./browser"),n=function(t,e){this.frequency=t,this.throttledFunction=e,this.lastInvocation=0};n.prototype.invoke=function(){var t=this;if(!this.pendingInvocation){var e=0===this.lastInvocation?0:this.lastInvocation+this.frequency-i.now();e<=0?(this.lastInvocation=i.now(),this.throttledFunction()):this.pendingInvocation=setTimeout(function(){t.pendingInvocation=void 0,t.lastInvocation=i.now(),t.throttledFunction()},e)}},n.prototype.stop=function(){this.pendingInvocation&&(clearTimeout(this.pendingInvocation),this.pendingInvocation=void 0)},e.exports=n},{"./browser":202}],222:[function(t,e,r){"use strict";function i(t,e){return e.replace(/{([^{}]+)}/g,function(e,r){return r in t?String(t[r]):""})}e.exports=i},{}],223:[function(t,e,r){"use strict";var i=t("@mapbox/unitbezier"),n=t("../geo/coordinate");t("@mapbox/point-geometry");r.easeCubicInOut=function(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)},r.bezier=function(t,e,r,n){var o=new i(t,e,r,n);return function(t){return o.solve(t)}},r.ease=r.bezier(.25,.1,.25,1),r.clamp=function(t,e,r){return Math.min(r,Math.max(e,t))},r.wrap=function(t,e,r){var i=r-e,n=((t-e)%i+i)%i+e;return n===e?r:n},r.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);var i=t.length,n=new Array(t.length),o=null;t.forEach(function(t,a){e(t,function(t,e){t&&(o=t),n[a]=e,0==--i&&r(o,n)})})},r.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},r.keysDifference=function(t,e){var r=[];for(var i in t)i in e||r.push(i);return r},r.extend=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i<n.length;i+=1){var o=n[i];for(var a in o)t[a]=o[a]}return t},r.pick=function(t,e){for(var r={},i=0;i<e.length;i++){var n=e[i];n in t&&(r[n]=t[n])}return r};var o=1;r.uniqueId=function(){return o++},r.bindAll=function(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e))})},r.getCoordinatesCenter=function(t){for(var e=1/0,r=1/0,i=-1/0,o=-1/0,a=0;a<t.length;a++)e=Math.min(e,t[a].column),r=Math.min(r,t[a].row),i=Math.max(i,t[a].column),o=Math.max(o,t[a].row);var s=i-e,l=o-r,u=Math.max(s,l),c=Math.max(0,Math.floor(-Math.log(u)/Math.LN2));return new n((e+i)/2,(r+o)/2,0).zoomTo(c)},r.endsWith=function(t,e){return-1!==t.indexOf(e,t.length-e.length)},r.mapObject=function(t,e,r){var i=this,n={};for(var o in t)n[o]=e.call(r||i,t[o],o,t);return n},r.filterObject=function(t,e,r){var i=this,n={};for(var o in t)e.call(r||i,t[o],o,t)&&(n[o]=t[o]);return n},r.deepEqual=function(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var i=0;i<t.length;i++)if(!r.deepEqual(t[i],e[i]))return!1;return!0}if("object"==typeof t&&null!==t&&null!==e){if("object"!=typeof e)return!1;if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(!r.deepEqual(t[n],e[n]))return!1;return!0}return t===e},r.clone=function(t){return Array.isArray(t)?t.map(r.clone):"object"==typeof t&&t?r.mapObject(t,r.clone):t},r.arraysIntersect=function(t,e){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return!0;return!1};var a={};r.warnOnce=function(t){a[t]||("undefined"!=typeof console&&console.warn(t),a[t]=!0)},r.isCounterClockwise=function(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)},r.calculateSignedArea=function(t){for(var e=0,r=0,i=t.length,n=i-1,o=void 0,a=void 0;r<i;n=r++)o=t[r],a=t[n],e+=(a.x-o.x)*(o.y+a.y);return e},r.isClosedPolygon=function(t){if(t.length<4)return!1;var e=t[0],i=t[t.length-1];return!(Math.abs(e.x-i.x)>0||Math.abs(e.y-i.y)>0)&&Math.abs(r.calculateSignedArea(t))>.01},r.sphericalToCartesian=function(t){var e=t[0],r=t[1],i=t[2];return r+=90,r*=Math.PI/180,i*=Math.PI/180,[e*Math.cos(r)*Math.sin(i),e*Math.sin(r)*Math.sin(i),e*Math.cos(i)]},r.parseCacheControl=function(t){var e=/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,r={};if(t.replace(e,function(t,e,i,n){var o=i||n;return r[e]=!o||o.toLowerCase(),""}),r["max-age"]){var i=parseInt(r["max-age"],10);isNaN(i)?delete r["max-age"]:r["max-age"]=i}return r}},{"../geo/coordinate":57,"@mapbox/point-geometry":2,"@mapbox/unitbezier":5}],224:[function(t,e,r){"use strict";var i=function(t,e,r,i){this.type="Feature",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=i,this.properties=t.properties,null!=t.id&&(this.id=t.id)},n={geometry:{}};n.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},n.geometry.set=function(t){this._geometry=t},i.prototype.toJSON=function(){var t=this,e={geometry:this.geometry};for(var r in t)"_geometry"!==r&&"_vectorTileFeature"!==r&&(e[r]=t[r]);return e},Object.defineProperties(i.prototype,n),e.exports=i},{}],225:[function(t,e,r){"use strict";var i=t("./script_detection");e.exports=function(t){for(var r="",n=0;n<t.length;n++){var o=t.charCodeAt(n+1)||null,a=t.charCodeAt(n-1)||null;o&&i.charHasRotatedVerticalOrientation(o)&&!e.exports.lookup[t[n+1]]||a&&i.charHasRotatedVerticalOrientation(a)&&!e.exports.lookup[t[n-1]]||!e.exports.lookup[t[n]]?r+=t[n]:r+=e.exports.lookup[t[n]]}return r},e.exports.lookup={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"}},{"./script_detection":218}],226:[function(t,e,r){"use strict";var i=t("./web_worker"),n=function(){this.active={}};n.prototype.acquire=function(e){var r=this;if(!this.workers){var n=t("../").workerCount;for(this.workers=[];this.workers.length<n;)r.workers.push(new i)}return this.active[e]=!0,this.workers.slice()},n.prototype.release=function(t){delete this.active[t],0===Object.keys(this.active).length&&(this.workers.forEach(function(t){t.terminate()}),this.workers=null)},e.exports=n},{"../":63,"./web_worker":203}]},{},[63])(63)})}).call(e,r(0))},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(1),n=r.n(i),o=r(3),a=r(7);n.a.accessToken="pk.eyJ1IjoieXV2YWRtIiwiYSI6ImNpcnMxbzBuaTAwZWdoa25oczlzZmkwbHcifQ.UHtLngbKm9O8945pJm23Nw";new o.a({el:"#app",render:function(t){return t(a.a)}})},function(t,e,r){"use strict";(function(t,r){/*!
+ * Vue.js v2.5.2
+ * (c) 2014-2017 Evan You
+ * Released under the MIT License.
+ */
+function i(t){return void 0===t||null===t}function n(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return!1===t}function s(t){return"string"==typeof t||"number"==typeof t||"boolean"==typeof t}function l(t){return null!==t&&"object"==typeof t}function u(t){return"[object Object]"===Qn.call(t)}function c(t){return"[object RegExp]"===Qn.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function h(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function f(t){var e=parseFloat(t);return isNaN(e)?t:e}function d(t,e){for(var r=Object.create(null),i=t.split(","),n=0;n<i.length;n++)r[i[n]]=!0;return e?function(t){return r[t.toLowerCase()]}:function(t){return r[t]}}function m(t,e){if(t.length){var r=t.indexOf(e);if(r>-1)return t.splice(r,1)}}function v(t,e){return ro.call(t,e)}function y(t){var e=Object.create(null);return function(r){return e[r]||(e[r]=t(r))}}function g(t,e){function r(r){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,r):t.call(e)}return r._length=t.length,r}function _(t,e){e=e||0;for(var r=t.length-e,i=new Array(r);r--;)i[r]=t[r+e];return i}function x(t,e){for(var r in e)t[r]=e[r];return t}function b(t){for(var e={},r=0;r<t.length;r++)t[r]&&x(e,t[r]);return e}function w(t,e,r){}function T(t,e){if(t===e)return!0;var r=l(t),i=l(e);if(!r||!i)return!r&&!i&&String(t)===String(e);try{var n=Array.isArray(t),o=Array.isArray(e);if(n&&o)return t.length===e.length&&t.every(function(t,r){return T(t,e[r])});if(n||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every(function(r){return T(t[r],e[r])})}catch(t){return!1}}function S(t,e){for(var r=0;r<t.length;r++)if(T(t[r],e))return r;return-1}function z(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function A(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function C(t,e,r,i){Object.defineProperty(t,e,{value:r,enumerable:!!i,writable:!0,configurable:!0})}function E(t){if(!vo.test(t)){var e=t.split(".");return function(t){for(var r=0;r<e.length;r++){if(!t)return;t=t[e[r]]}return t}}}function k(t){return"function"==typeof t&&/native code/.test(t.toString())}function M(t){Do.target&&Oo.push(Do.target),Do.target=t}function L(){Do.target=Oo.pop()}function I(t){return new Bo(void 0,void 0,void 0,String(t))}function P(t,e){var r=new Bo(t.tag,t.data,t.children,t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return r.ns=t.ns,r.isStatic=t.isStatic,r.key=t.key,r.isComment=t.isComment,r.isCloned=!0,e&&t.children&&(r.children=R(t.children)),r}function R(t,e){for(var r=t.length,i=new Array(r),n=0;n<r;n++)i[n]=P(t[n],e);return i}function D(t,e,r){t.__proto__=e}function O(t,e,r){for(var i=0,n=r.length;i<n;i++){var o=r[i];C(t,o,e[o])}}function B(t,e){if(l(t)&&!(t instanceof Bo)){var r;return v(t,"__ob__")&&t.__ob__ instanceof qo?r=t.__ob__:$o.shouldConvert&&!Mo()&&(Array.isArray(t)||u(t))&&Object.isExtensible(t)&&!t._isVue&&(r=new qo(t)),e&&r&&r.vmCount++,r}}function F(t,e,r,i,n){var o=new Do,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,l=a&&a.set,u=!n&&B(r);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):r;return Do.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(e)&&N(e))),e},set:function(e){var i=s?s.call(t):r;e===i||e!==e&&i!==i||(l?l.call(t,e):r=e,u=!n&&B(e),o.notify())}})}}function j(t,e,r){if(Array.isArray(t)&&p(e))return t.length=Math.max(t.length,e),t.splice(e,1,r),r;if(v(t,e))return t[e]=r,r;var i=t.__ob__;return t._isVue||i&&i.vmCount?r:i?(F(i.value,e,r),i.dep.notify(),r):(t[e]=r,r)}function V(t,e){if(Array.isArray(t)&&p(e))return void t.splice(e,1);var r=t.__ob__;t._isVue||r&&r.vmCount||v(t,e)&&(delete t[e],r&&r.dep.notify())}function N(t){for(var e=void 0,r=0,i=t.length;r<i;r++)e=t[r],e&&e.__ob__&&e.__ob__.dep.depend(),Array.isArray(e)&&N(e)}function U(t,e){if(!e)return t;for(var r,i,n,o=Object.keys(e),a=0;a<o.length;a++)r=o[a],i=t[r],n=e[r],v(t,r)?u(i)&&u(n)&&U(i,n):j(t,r,n);return t}function $(t,e,r){return r?t||e?function(){var i="function"==typeof e?e.call(r):e,n="function"==typeof t?t.call(r):t;return i?U(i,n):n}:void 0:e?t?function(){return U("function"==typeof e?e.call(this):e,"function"==typeof t?t.call(this):t)}:e:t}function q(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function Z(t,e,r,i){var n=Object.create(t||null);return e?x(n,e):n}function G(t,e){var r=t.props;if(r){var i,n,o,a={};if(Array.isArray(r))for(i=r.length;i--;)"string"==typeof(n=r[i])&&(o=no(n),a[o]={type:null});else if(u(r))for(var s in r)n=r[s],o=no(s),a[o]=u(n)?n:{type:n};t.props=a}}function W(t,e){var r=t.inject,i=t.inject={};if(Array.isArray(r))for(var n=0;n<r.length;n++)i[r[n]]={from:r[n]};else if(u(r))for(var o in r){var a=r[o];i[o]=u(a)?x({from:o},a):{from:a}}}function H(t){var e=t.directives;if(e)for(var r in e){var i=e[r];"function"==typeof i&&(e[r]={bind:i,update:i})}}function X(t,e,r){function i(i){var n=Zo[i]||Ho;l[i]=n(t[i],e[i],r,i)}"function"==typeof e&&(e=e.options),G(e,r),W(e,r),H(e);var n=e.extends;if(n&&(t=X(t,n,r)),e.mixins)for(var o=0,a=e.mixins.length;o<a;o++)t=X(t,e.mixins[o],r);var s,l={};for(s in t)i(s);for(s in e)v(t,s)||i(s);return l}function K(t,e,r,i){if("string"==typeof r){var n=t[e];if(v(n,r))return n[r];var o=no(r);if(v(n,o))return n[o];var a=oo(o);if(v(n,a))return n[a];return n[r]||n[o]||n[a]}}function J(t,e,r,i){var n=e[t],o=!v(r,t),a=r[t];if(tt(Boolean,n.type)&&(o&&!v(n,"default")?a=!1:tt(String,n.type)||""!==a&&a!==so(t)||(a=!0)),void 0===a){a=Y(i,n,t);var s=$o.shouldConvert;$o.shouldConvert=!0,B(a),$o.shouldConvert=s}return a}function Y(t,e,r){if(v(e,"default")){var i=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[r]&&void 0!==t._props[r]?t._props[r]:"function"==typeof i&&"Function"!==Q(e.type)?i.call(t):i}}function Q(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function tt(t,e){if(!Array.isArray(e))return Q(e)===Q(t);for(var r=0,i=e.length;r<i;r++)if(Q(e[r])===Q(t))return!0;return!1}function et(t,e,r){if(e)for(var i=e;i=i.$parent;){var n=i.$options.errorCaptured;if(n)for(var o=0;o<n.length;o++)try{var a=!1===n[o].call(i,t,e,r);if(a)return}catch(t){rt(t,i,"errorCaptured hook")}}rt(t,e,r)}function rt(t,e,r){if(fo.errorHandler)try{return fo.errorHandler.call(null,t,e,r)}catch(t){it(t,null,"config.errorHandler")}it(t,e,r)}function it(t,e,r){if(!go||"undefined"==typeof console)throw t;console.error(t)}function nt(){Ko=!1;var t=Xo.slice(0);Xo.length=0;for(var e=0;e<t.length;e++)t[e]()}function ot(t){return t._withTask||(t._withTask=function(){Jo=!0;var e=t.apply(null,arguments);return Jo=!1,e})}function at(t,e){var r;if(Xo.push(function(){if(t)try{t.call(e)}catch(t){et(t,e,"nextTick")}else r&&r(e)}),Ko||(Ko=!0,Jo?Wo():Go()),!t&&"undefined"!=typeof Promise)return new Promise(function(t){r=t})}function st(t){function e(){var t=arguments,r=e.fns;if(!Array.isArray(r))return r.apply(null,arguments);for(var i=r.slice(),n=0;n<i.length;n++)i[n].apply(null,t)}return e.fns=t,e}function lt(t,e,r,n,o){var a,s,l,u;for(a in t)s=t[a],l=e[a],u=ra(a),i(s)||(i(l)?(i(s.fns)&&(s=t[a]=st(s)),r(u.name,s,u.once,u.capture,u.passive)):s!==l&&(l.fns=s,t[a]=l));for(a in e)i(t[a])&&(u=ra(a),n(u.name,e[a],u.capture))}function ut(t,e,r){function a(){r.apply(this,arguments),m(s.fns,a)}var s,l=t[e];i(l)?s=st([a]):n(l.fns)&&o(l.merged)?(s=l,s.fns.push(a)):s=st([l,a]),s.merged=!0,t[e]=s}function ct(t,e,r){var o=e.options.props;if(!i(o)){var a={},s=t.attrs,l=t.props;if(n(s)||n(l))for(var u in o){var c=so(u);pt(a,l,u,c,!0)||pt(a,s,u,c,!1)}return a}}function pt(t,e,r,i,o){if(n(e)){if(v(e,r))return t[r]=e[r],o||delete e[r],!0;if(v(e,i))return t[r]=e[i],o||delete e[i],!0}return!1}function ht(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}function ft(t){return s(t)?[I(t)]:Array.isArray(t)?mt(t):void 0}function dt(t){return n(t)&&n(t.text)&&a(t.isComment)}function mt(t,e){var r,a,l,u,c=[];for(r=0;r<t.length;r++)a=t[r],i(a)||"boolean"==typeof a||(l=c.length-1,u=c[l],Array.isArray(a)?a.length>0&&(a=mt(a,(e||"")+"_"+r),dt(a[0])&&dt(u)&&(c[l]=I(u.text+a[0].text),a.shift()),c.push.apply(c,a)):s(a)?dt(u)?c[l]=I(u.text+a):""!==a&&c.push(I(a)):dt(a)&&dt(u)?c[l]=I(u.text+a.text):(o(t._isVList)&&n(a.tag)&&i(a.key)&&n(e)&&(a.key="__vlist"+e+"_"+r+"__"),c.push(a)));return c}function vt(t,e){return(t.__esModule||Io&&"Module"===t[Symbol.toStringTag])&&(t=t.default),l(t)?e.extend(t):t}function yt(t,e,r,i,n){var o=jo();return o.asyncFactory=t,o.asyncMeta={data:e,context:r,children:i,tag:n},o}function gt(t,e,r){if(o(t.error)&&n(t.errorComp))return t.errorComp;if(n(t.resolved))return t.resolved;if(o(t.loading)&&n(t.loadingComp))return t.loadingComp;if(!n(t.contexts)){var a=t.contexts=[r],s=!0,u=function(){for(var t=0,e=a.length;t<e;t++)a[t].$forceUpdate()},c=z(function(r){t.resolved=vt(r,e),s||u()}),p=z(function(e){n(t.errorComp)&&(t.error=!0,u())}),h=t(c,p);return l(h)&&("function"==typeof h.then?i(t.resolved)&&h.then(c,p):n(h.component)&&"function"==typeof h.component.then&&(h.component.then(c,p),n(h.error)&&(t.errorComp=vt(h.error,e)),n(h.loading)&&(t.loadingComp=vt(h.loading,e),0===h.delay?t.loading=!0:setTimeout(function(){i(t.resolved)&&i(t.error)&&(t.loading=!0,u())},h.delay||200)),n(h.timeout)&&setTimeout(function(){i(t.resolved)&&p(null)},h.timeout))),s=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(r)}function _t(t){return t.isComment&&t.asyncFactory}function xt(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var r=t[e];if(n(r)&&(n(r.componentOptions)||_t(r)))return r}}function bt(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&St(t,e)}function wt(t,e,r){r?ea.$once(t,e):ea.$on(t,e)}function Tt(t,e){ea.$off(t,e)}function St(t,e,r){ea=t,lt(e,r||{},wt,Tt,t)}function zt(t,e){var r={};if(!t)return r;for(var i=[],n=0,o=t.length;n<o;n++){var a=t[n],s=a.data;if(s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,a.context!==e&&a.functionalContext!==e||!s||null==s.slot)i.push(a);else{var l=a.data.slot,u=r[l]||(r[l]=[]);"template"===a.tag?u.push.apply(u,a.children):u.push(a)}}return i.every(At)||(r.default=i),r}function At(t){return t.isComment||" "===t.text}function Ct(t,e){e=e||{};for(var r=0;r<t.length;r++)Array.isArray(t[r])?Ct(t[r],e):e[t[r].key]=t[r].fn;return e}function Et(t){var e=t.$options,r=e.parent;if(r&&!e.abstract){for(;r.$options.abstract&&r.$parent;)r=r.$parent;r.$children.push(t)}t.$parent=r,t.$root=r?r.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function kt(t,e,r){t.$el=e,t.$options.render||(t.$options.render=jo),Rt(t,"beforeMount");var i;return i=function(){t._update(t._render(),r)},t._watcher=new pa(t,i,w),r=!1,null==t.$vnode&&(t._isMounted=!0,Rt(t,"mounted")),t}function Mt(t,e,r,i,n){var o=!!(n||t.$options._renderChildren||i.data.scopedSlots||t.$scopedSlots!==mo);if(t.$options._parentVnode=i,t.$vnode=i,t._vnode&&(t._vnode.parent=i),t.$options._renderChildren=n,t.$attrs=i.data&&i.data.attrs||mo,t.$listeners=r||mo,e&&t.$options.props){$o.shouldConvert=!1;for(var a=t._props,s=t.$options._propKeys||[],l=0;l<s.length;l++){var u=s[l];a[u]=J(u,t.$options.props,e,t)}$o.shouldConvert=!0,t.$options.propsData=e}if(r){var c=t.$options._parentListeners;t.$options._parentListeners=r,St(t,r,c)}o&&(t.$slots=zt(n,i.context),t.$forceUpdate())}function Lt(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function It(t,e){if(e){if(t._directInactive=!1,Lt(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var r=0;r<t.$children.length;r++)It(t.$children[r]);Rt(t,"activated")}}function Pt(t,e){if(!(e&&(t._directInactive=!0,Lt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)Pt(t.$children[r]);Rt(t,"deactivated")}}function Rt(t,e){var r=t.$options[e];if(r)for(var i=0,n=r.length;i<n;i++)try{r[i].call(t)}catch(r){et(r,t,e+" hook")}t._hasHookEvent&&t.$emit("hook:"+e)}function Dt(){ua=na.length=oa.length=0,aa={},sa=la=!1}function Ot(){la=!0;var t,e;for(na.sort(function(t,e){return t.id-e.id}),ua=0;ua<na.length;ua++)t=na[ua],e=t.id,aa[e]=null,t.run();var r=oa.slice(),i=na.slice();Dt(),jt(r),Bt(i),Lo&&fo.devtools&&Lo.emit("flush")}function Bt(t){for(var e=t.length;e--;){var r=t[e],i=r.vm;i._watcher===r&&i._isMounted&&Rt(i,"updated")}}function Ft(t){t._inactive=!1,oa.push(t)}function jt(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,It(t[e],!0)}function Vt(t){var e=t.id;if(null==aa[e]){if(aa[e]=!0,la){for(var r=na.length-1;r>ua&&na[r].id>t.id;)r--;na.splice(r+1,0,t)}else na.push(t);sa||(sa=!0,at(Ot))}}function Nt(t){ha.clear(),Ut(t,ha)}function Ut(t,e){var r,i,n=Array.isArray(t);if((n||l(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(n)for(r=t.length;r--;)Ut(t[r],e);else for(i=Object.keys(t),r=i.length;r--;)Ut(t[i[r]],e)}}function $t(t,e,r){fa.get=function(){return this[e][r]},fa.set=function(t){this[e][r]=t},Object.defineProperty(t,r,fa)}function qt(t){t._watchers=[];var e=t.$options;e.props&&Zt(t,e.props),e.methods&&Jt(t,e.methods),e.data?Gt(t):B(t._data={},!0),e.computed&&Ht(t,e.computed),e.watch&&e.watch!==zo&&Yt(t,e.watch)}function Zt(t,e){var r=t.$options.propsData||{},i=t._props={},n=t.$options._propKeys=[],o=!t.$parent;$o.shouldConvert=o;for(var a in e)!function(o){n.push(o);var a=J(o,e,r,t);F(i,o,a),o in t||$t(t,"_props",o)}(a);$o.shouldConvert=!0}function Gt(t){var e=t.$options.data;e=t._data="function"==typeof e?Wt(e,t):e||{},u(e)||(e={});for(var r=Object.keys(e),i=t.$options.props,n=(t.$options.methods,r.length);n--;){var o=r[n];i&&v(i,o)||A(o)||$t(t,"_data",o)}B(e,!0)}function Wt(t,e){try{return t.call(e,e)}catch(t){return et(t,e,"data()"),{}}}function Ht(t,e){var r=t._computedWatchers=Object.create(null),i=Mo();for(var n in e){var o=e[n],a="function"==typeof o?o:o.get;i||(r[n]=new pa(t,a||w,w,da)),n in t||Xt(t,n,o)}}function Xt(t,e,r){var i=!Mo();"function"==typeof r?(fa.get=i?Kt(e):r,fa.set=w):(fa.get=r.get?i&&!1!==r.cache?Kt(e):r.get:w,fa.set=r.set?r.set:w),Object.defineProperty(t,e,fa)}function Kt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),Do.target&&e.depend(),e.value}}function Jt(t,e){t.$options.props;for(var r in e)t[r]=null==e[r]?w:g(e[r],t)}function Yt(t,e){for(var r in e){var i=e[r];if(Array.isArray(i))for(var n=0;n<i.length;n++)Qt(t,r,i[n]);else Qt(t,r,i)}}function Qt(t,e,r,i){return u(r)&&(i=r,r=r.handler),"string"==typeof r&&(r=t[r]),t.$watch(e,r,i)}function te(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}function ee(t){var e=re(t.$options.inject,t);e&&($o.shouldConvert=!1,Object.keys(e).forEach(function(r){F(t,r,e[r])}),$o.shouldConvert=!0)}function re(t,e){if(t){for(var r=Object.create(null),i=Io?Reflect.ownKeys(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}):Object.keys(t),n=0;n<i.length;n++){for(var o=i[n],a=t[o].from,s=e;s;){if(s._provided&&a in s._provided){r[o]=s._provided[a];break}s=s.$parent}if(!s&&"default"in t[o]){var l=t[o].default;r[o]="function"==typeof l?l.call(e):l}}return r}}function ie(t,e){var r,i,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(r=new Array(t.length),i=0,o=t.length;i<o;i++)r[i]=e(t[i],i);else if("number"==typeof t)for(r=new Array(t),i=0;i<t;i++)r[i]=e(i+1,i);else if(l(t))for(a=Object.keys(t),r=new Array(a.length),i=0,o=a.length;i<o;i++)s=a[i],r[i]=e(t[s],s,i);return n(r)&&(r._isVList=!0),r}function ne(t,e,r,i){var n=this.$scopedSlots[t];if(n)return r=r||{},i&&(r=x(x({},i),r)),n(r)||e;var o=this.$slots[t];return o||e}function oe(t){return K(this.$options,"filters",t,!0)||uo}function ae(t,e,r,i){var n=fo.keyCodes[e]||r;return n?Array.isArray(n)?-1===n.indexOf(t):n!==t:i?so(i)!==e:void 0}function se(t,e,r,i,n){if(r)if(l(r)){Array.isArray(r)&&(r=b(r));var o;for(var a in r)!function(a){if("class"===a||"style"===a||eo(a))o=t;else{var s=t.attrs&&t.attrs.type;o=i||fo.mustUseProp(e,s,a)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}if(!(a in o)&&(o[a]=r[a],n)){(t.on||(t.on={}))["update:"+a]=function(t){r[a]=t}}}(a)}else;return t}function le(t,e){var r=this.$options.staticRenderFns,i=r.cached||(r.cached=[]),n=i[t];return n&&!e?Array.isArray(n)?R(n):P(n):(n=i[t]=r[t].call(this._renderProxy,null,this),ce(n,"__static__"+t,!1),n)}function ue(t,e,r){return ce(t,"__once__"+e+(r?"_"+r:""),!0),t}function ce(t,e,r){if(Array.isArray(t))for(var i=0;i<t.length;i++)t[i]&&"string"!=typeof t[i]&&pe(t[i],e+"_"+i,r);else pe(t,e,r)}function pe(t,e,r){t.isStatic=!0,t.key=e,t.isOnce=r}function he(t,e){if(e)if(u(e)){var r=t.on=t.on?x({},t.on):{};for(var i in e){var n=r[i],o=e[i];r[i]=n?[].concat(n,o):o}}else;return t}function fe(t){t._o=ue,t._n=f,t._s=h,t._l=ie,t._t=ne,t._q=T,t._i=S,t._m=le,t._f=oe,t._k=ae,t._b=se,t._v=I,t._e=jo,t._u=Ct,t._g=he}function de(t,e,r,i,n){var a=n.options;this.data=t,this.props=e,this.children=r,this.parent=i,this.listeners=t.on||mo,this.injections=re(a.inject,i),this.slots=function(){return zt(r,i)};var s=Object.create(i),l=o(a._compiled),u=!l;l&&(this.$options=a,this.$slots=this.slots(),this.$scopedSlots=t.scopedSlots||mo),a._scopeId?this._c=function(t,e,r,n){var o=we(s,t,e,r,n,u);return o&&(o.functionalScopeId=a._scopeId,o.functionalContext=i),o}:this._c=function(t,e,r,i){return we(s,t,e,r,i,u)}}function me(t,e,r,i,o){var a=t.options,s={},l=a.props;if(n(l))for(var u in l)s[u]=J(u,l,e||mo);else n(r.attrs)&&ve(s,r.attrs),n(r.props)&&ve(s,r.props);var c=new de(r,s,o,i,t),p=a.render.call(null,c._c,c);return p instanceof Bo&&(p.functionalContext=i,p.functionalOptions=a,r.slot&&((p.data||(p.data={})).slot=r.slot)),p}function ve(t,e){for(var r in e)t[no(r)]=e[r]}function ye(t,e,r,a,s){if(!i(t)){var u=r.$options._base;if(l(t)&&(t=u.extend(t)),"function"==typeof t){var c;if(i(t.cid)&&(c=t,void 0===(t=gt(c,u,r))))return yt(c,e,r,a,s);e=e||{},Ce(t),n(e.model)&&be(t.options,e);var p=ct(e,t,s);if(o(t.options.functional))return me(t,p,e,r,a);var h=e.on;if(e.on=e.nativeOn,o(t.options.abstract)){var f=e.slot;e={},f&&(e.slot=f)}_e(e);var d=t.options.name||s;return new Bo("vue-component-"+t.cid+(d?"-"+d:""),e,void 0,void 0,void 0,r,{Ctor:t,propsData:p,listeners:h,tag:s,children:a},c)}}}function ge(t,e,r,i){var o=t.componentOptions,a={_isComponent:!0,parent:e,propsData:o.propsData,_componentTag:o.tag,_parentVnode:t,_parentListeners:o.listeners,_renderChildren:o.children,_parentElm:r||null,_refElm:i||null},s=t.data.inlineTemplate;return n(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new o.Ctor(a)}function _e(t){t.hook||(t.hook={});for(var e=0;e<va.length;e++){var r=va[e],i=t.hook[r],n=ma[r];t.hook[r]=i?xe(n,i):n}}function xe(t,e){return function(r,i,n,o){t(r,i,n,o),e(r,i,n,o)}}function be(t,e){var r=t.model&&t.model.prop||"value",i=t.model&&t.model.event||"input";(e.props||(e.props={}))[r]=e.model.value;var o=e.on||(e.on={});n(o[i])?o[i]=[e.model.callback].concat(o[i]):o[i]=e.model.callback}function we(t,e,r,i,n,a){return(Array.isArray(r)||s(r))&&(n=i,i=r,r=void 0),o(a)&&(n=ga),Te(t,e,r,i,n)}function Te(t,e,r,i,o){if(n(r)&&n(r.__ob__))return jo();if(n(r)&&n(r.is)&&(e=r.is),!e)return jo();Array.isArray(i)&&"function"==typeof i[0]&&(r=r||{},r.scopedSlots={default:i[0]},i.length=0),o===ga?i=ft(i):o===ya&&(i=ht(i));var a,s;if("string"==typeof e){var l;s=t.$vnode&&t.$vnode.ns||fo.getTagNamespace(e),a=fo.isReservedTag(e)?new Bo(fo.parsePlatformTagName(e),r,i,void 0,void 0,t):n(l=K(t.$options,"components",e))?ye(l,r,t,i,e):new Bo(e,r,i,void 0,void 0,t)}else a=ye(e,r,t,i);return n(a)?(s&&Se(a,s),a):jo()}function Se(t,e,r){if(t.ns=e,"foreignObject"===t.tag&&(e=void 0,r=!0),n(t.children))for(var a=0,s=t.children.length;a<s;a++){var l=t.children[a];n(l.tag)&&(i(l.ns)||o(r))&&Se(l,e,r)}}function ze(t){t._vnode=null;var e=t.$options,r=t.$vnode=e._parentVnode,i=r&&r.context;t.$slots=zt(e._renderChildren,i),t.$scopedSlots=mo,t._c=function(e,r,i,n){return we(t,e,r,i,n,!1)},t.$createElement=function(e,r,i,n){return we(t,e,r,i,n,!0)};var n=r&&r.data;F(t,"$attrs",n&&n.attrs||mo,null,!0),F(t,"$listeners",e._parentListeners||mo,null,!0)}function Ae(t,e){var r=t.$options=Object.create(t.constructor.options);r.parent=e.parent,r.propsData=e.propsData,r._parentVnode=e._parentVnode,r._parentListeners=e._parentListeners,r._renderChildren=e._renderChildren,r._componentTag=e._componentTag,r._parentElm=e._parentElm,r._refElm=e._refElm,e.render&&(r.render=e.render,r.staticRenderFns=e.staticRenderFns)}function Ce(t){var e=t.options;if(t.super){var r=Ce(t.super);if(r!==t.superOptions){t.superOptions=r;var i=Ee(t);i&&x(t.extendOptions,i),e=t.options=X(r,t.extendOptions),e.name&&(e.components[e.name]=t)}}return e}function Ee(t){var e,r=t.options,i=t.extendOptions,n=t.sealedOptions;for(var o in r)r[o]!==n[o]&&(e||(e={}),e[o]=ke(r[o],i[o],n[o]));return e}function ke(t,e,r){if(Array.isArray(t)){var i=[];r=Array.isArray(r)?r:[r],e=Array.isArray(e)?e:[e];for(var n=0;n<t.length;n++)(e.indexOf(t[n])>=0||r.indexOf(t[n])<0)&&i.push(t[n]);return i}return t}function Me(t){this._init(t)}function Le(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var r=_(arguments,1);return r.unshift(this),"function"==typeof t.install?t.install.apply(t,r):"function"==typeof t&&t.apply(null,r),e.push(t),this}}function Ie(t){t.mixin=function(t){return this.options=X(this.options,t),this}}function Pe(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var r=this,i=r.cid,n=t._Ctor||(t._Ctor={});if(n[i])return n[i];var o=t.name||r.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(r.prototype),a.prototype.constructor=a,a.cid=e++,a.options=X(r.options,t),a.super=r,a.options.props&&Re(a),a.options.computed&&De(a),a.extend=r.extend,a.mixin=r.mixin,a.use=r.use,po.forEach(function(t){a[t]=r[t]}),o&&(a.options.components[o]=a),a.superOptions=r.options,a.extendOptions=t,a.sealedOptions=x({},a.options),n[i]=a,a}}function Re(t){var e=t.options.props;for(var r in e)$t(t.prototype,"_props",r)}function De(t){var e=t.options.computed;for(var r in e)Xt(t.prototype,r,e[r])}function Oe(t){po.forEach(function(e){t[e]=function(t,r){return r?("component"===e&&u(r)&&(r.name=r.name||t,r=this.options._base.extend(r)),"directive"===e&&"function"==typeof r&&(r={bind:r,update:r}),this.options[e+"s"][t]=r,r):this.options[e+"s"][t]}})}function Be(t){return t&&(t.Ctor.options.name||t.tag)}function Fe(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!c(t)&&t.test(e)}function je(t,e){var r=t.cache,i=t.keys,n=t._vnode;for(var o in r){var a=r[o];if(a){var s=Be(a.componentOptions);s&&!e(s)&&Ve(r,o,i,n)}}}function Ve(t,e,r,i){var n=t[e];n&&n!==i&&n.componentInstance.$destroy(),t[e]=null,m(r,e)}function Ne(t){for(var e=t.data,r=t,i=t;n(i.componentInstance);)i=i.componentInstance._vnode,i.data&&(e=Ue(i.data,e));for(;n(r=r.parent);)r.data&&(e=Ue(e,r.data));return $e(e.staticClass,e.class)}function Ue(t,e){return{staticClass:qe(t.staticClass,e.staticClass),class:n(t.class)?[t.class,e.class]:e.class}}function $e(t,e){return n(t)||n(e)?qe(t,Ze(e)):""}function qe(t,e){return t?e?t+" "+e:t:e||""}function Ze(t){return Array.isArray(t)?Ge(t):l(t)?We(t):"string"==typeof t?t:""}function Ge(t){for(var e,r="",i=0,o=t.length;i<o;i++)n(e=Ze(t[i]))&&""!==e&&(r&&(r+=" "),r+=e);return r}function We(t){var e="";for(var r in t)t[r]&&(e&&(e+=" "),e+=r);return e}function He(t){return $a(t)?"svg":"math"===t?"math":void 0}function Xe(t){if(!go)return!0;if(Za(t))return!1;if(t=t.toLowerCase(),null!=Ga[t])return Ga[t];var e=document.createElement(t);return t.indexOf("-")>-1?Ga[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Ga[t]=/HTMLUnknownElement/.test(e.toString())}function Ke(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Je(t,e){var r=document.createElement(t);return"select"!==t?r:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&r.setAttribute("multiple","multiple"),r)}function Ye(t,e){return document.createElementNS(Na[t],e)}function Qe(t){return document.createTextNode(t)}function tr(t){return document.createComment(t)}function er(t,e,r){t.insertBefore(e,r)}function rr(t,e){t.removeChild(e)}function ir(t,e){t.appendChild(e)}function nr(t){return t.parentNode}function or(t){return t.nextSibling}function ar(t){return t.tagName}function sr(t,e){t.textContent=e}function lr(t,e,r){t.setAttribute(e,r)}function ur(t,e){var r=t.data.ref;if(r){var i=t.context,n=t.componentInstance||t.elm,o=i.$refs;e?Array.isArray(o[r])?m(o[r],n):o[r]===n&&(o[r]=void 0):t.data.refInFor?Array.isArray(o[r])?o[r].indexOf(n)<0&&o[r].push(n):o[r]=[n]:o[r]=n}}function cr(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&n(t.data)===n(e.data)&&pr(t,e)||o(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&i(e.asyncFactory.error))}function pr(t,e){if("input"!==t.tag)return!0;var r,i=n(r=t.data)&&n(r=r.attrs)&&r.type,o=n(r=e.data)&&n(r=r.attrs)&&r.type;return i===o||Wa(i)&&Wa(o)}function hr(t,e,r){var i,o,a={};for(i=e;i<=r;++i)o=t[i].key,n(o)&&(a[o]=i);return a}function fr(t,e){(t.data.directives||e.data.directives)&&dr(t,e)}function dr(t,e){var r,i,n,o=t===Ka,a=e===Ka,s=mr(t.data.directives,t.context),l=mr(e.data.directives,e.context),u=[],c=[];for(r in l)i=s[r],n=l[r],i?(n.oldValue=i.value,yr(n,"update",e,t),n.def&&n.def.componentUpdated&&c.push(n)):(yr(n,"bind",e,t),n.def&&n.def.inserted&&u.push(n));if(u.length){var p=function(){for(var r=0;r<u.length;r++)yr(u[r],"inserted",e,t)};o?ut(e.data.hook||(e.data.hook={}),"insert",p):p()}if(c.length&&ut(e.data.hook||(e.data.hook={}),"postpatch",function(){for(var r=0;r<c.length;r++)yr(c[r],"componentUpdated",e,t)}),!o)for(r in s)l[r]||yr(s[r],"unbind",t,t,a)}function mr(t,e){var r=Object.create(null);if(!t)return r;var i,n;for(i=0;i<t.length;i++)n=t[i],n.modifiers||(n.modifiers=Qa),r[vr(n)]=n,n.def=K(e.$options,"directives",n.name,!0);return r}function vr(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function yr(t,e,r,i,n){var o=t.def&&t.def[e];if(o)try{o(r.elm,t,r,i,n)}catch(i){et(i,r.context,"directive "+t.name+" "+e+" hook")}}function gr(t,e){var r=e.componentOptions;if(!(n(r)&&!1===r.Ctor.options.inheritAttrs||i(t.data.attrs)&&i(e.data.attrs))){var o,a,s=e.elm,l=t.data.attrs||{},u=e.data.attrs||{};n(u.__ob__)&&(u=e.data.attrs=x({},u));for(o in u)a=u[o],l[o]!==a&&_r(s,o,a);(bo||wo)&&u.value!==l.value&&_r(s,"value",u.value);for(o in l)i(u[o])&&(Fa(o)?s.removeAttributeNS(Ba,ja(o)):Da(o)||s.removeAttribute(o))}}function _r(t,e,r){Oa(e)?Va(r)?t.removeAttribute(e):(r="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,r)):Da(e)?t.setAttribute(e,Va(r)||"false"===r?"false":"true"):Fa(e)?Va(r)?t.removeAttributeNS(Ba,ja(e)):t.setAttributeNS(Ba,e,r):Va(r)?t.removeAttribute(e):t.setAttribute(e,r)}function xr(t,e){var r=e.elm,o=e.data,a=t.data;if(!(i(o.staticClass)&&i(o.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=Ne(e),l=r._transitionClasses;n(l)&&(s=qe(s,Ze(l))),s!==r._prevClass&&(r.setAttribute("class",s),r._prevClass=s)}}function br(t){function e(){(a||(a=[])).push(t.slice(d,n).trim()),d=n+1}var r,i,n,o,a,s=!1,l=!1,u=!1,c=!1,p=0,h=0,f=0,d=0;for(n=0;n<t.length;n++)if(i=r,r=t.charCodeAt(n),s)39===r&&92!==i&&(s=!1);else if(l)34===r&&92!==i&&(l=!1);else if(u)96===r&&92!==i&&(u=!1);else if(c)47===r&&92!==i&&(c=!1);else if(124!==r||124===t.charCodeAt(n+1)||124===t.charCodeAt(n-1)||p||h||f){switch(r){case 34:l=!0;break;case 39:s=!0;break;case 96:u=!0;break;case 40:f++;break;case 41:f--;break;case 91:h++;break;case 93:h--;break;case 123:p++;break;case 125:p--}if(47===r){for(var m=n-1,v=void 0;m>=0&&" "===(v=t.charAt(m));m--);v&&is.test(v)||(c=!0)}}else void 0===o?(d=n+1,o=t.slice(0,n).trim()):e();if(void 0===o?o=t.slice(0,n).trim():0!==d&&e(),a)for(n=0;n<a.length;n++)o=wr(o,a[n]);return o}function wr(t,e){var r=e.indexOf("(");return r<0?'_f("'+e+'")('+t+")":'_f("'+e.slice(0,r)+'")('+t+","+e.slice(r+1)}function Tr(t){console.error("[Vue compiler]: "+t)}function Sr(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function zr(t,e,r){(t.props||(t.props=[])).push({name:e,value:r})}function Ar(t,e,r){(t.attrs||(t.attrs=[])).push({name:e,value:r})}function Cr(t,e,r,i,n,o){(t.directives||(t.directives=[])).push({name:e,rawName:r,value:i,arg:n,modifiers:o})}function Er(t,e,r,i,n,o){i&&i.capture&&(delete i.capture,e="!"+e),i&&i.once&&(delete i.once,e="~"+e),i&&i.passive&&(delete i.passive,e="&"+e);var a;i&&i.native?(delete i.native,a=t.nativeEvents||(t.nativeEvents={})):a=t.events||(t.events={});var s={value:r,modifiers:i},l=a[e];Array.isArray(l)?n?l.unshift(s):l.push(s):a[e]=l?n?[s,l]:[l,s]:s}function kr(t,e,r){var i=Mr(t,":"+e)||Mr(t,"v-bind:"+e);if(null!=i)return br(i);if(!1!==r){var n=Mr(t,e);if(null!=n)return JSON.stringify(n)}}function Mr(t,e,r){var i;if(null!=(i=t.attrsMap[e]))for(var n=t.attrsList,o=0,a=n.length;o<a;o++)if(n[o].name===e){n.splice(o,1);break}return r&&delete t.attrsMap[e],i}function Lr(t,e,r){var i=r||{},n=i.number,o=i.trim,a="$$v";o&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),n&&(a="_n("+a+")");var s=Ir(e,a);t.model={value:"("+e+")",expression:'"'+e+'"',callback:"function ($$v) {"+s+"}"}}function Ir(t,e){var r=Pr(t);return null===r.key?t+"="+e:"$set("+r.exp+", "+r.key+", "+e+")"}function Pr(t){if(Ta=t.length,t.indexOf("[")<0||t.lastIndexOf("]")<Ta-1)return Aa=t.lastIndexOf("."),Aa>-1?{exp:t.slice(0,Aa),key:'"'+t.slice(Aa+1)+'"'}:{exp:t,key:null};for(Sa=t,Aa=Ca=Ea=0;!Dr();)za=Rr(),Or(za)?Fr(za):91===za&&Br(za);return{exp:t.slice(0,Ca),key:t.slice(Ca+1,Ea)}}function Rr(){return Sa.charCodeAt(++Aa)}function Dr(){return Aa>=Ta}function Or(t){return 34===t||39===t}function Br(t){var e=1;for(Ca=Aa;!Dr();)if(t=Rr(),Or(t))Fr(t);else if(91===t&&e++,93===t&&e--,0===e){Ea=Aa;break}}function Fr(t){for(var e=t;!Dr()&&(t=Rr())!==e;);}function jr(t,e,r){ka=r;var i=e.value,n=e.modifiers,o=t.tag,a=t.attrsMap.type;if(t.component)return Lr(t,i,n),!1;if("select"===o)Ur(t,i,n);else if("input"===o&&"checkbox"===a)Vr(t,i,n);else if("input"===o&&"radio"===a)Nr(t,i,n);else if("input"===o||"textarea"===o)$r(t,i,n);else if(!fo.isReservedTag(o))return Lr(t,i,n),!1;return!0}function Vr(t,e,r){var i=r&&r.number,n=kr(t,"value")||"null",o=kr(t,"true-value")||"true",a=kr(t,"false-value")||"false";zr(t,"checked","Array.isArray("+e+")?_i("+e+","+n+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),Er(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(i?"_n("+n+")":n)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+e+"=$$a.concat([$$v]))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+Ir(e,"$$c")+"}",null,!0)}function Nr(t,e,r){var i=r&&r.number,n=kr(t,"value")||"null";n=i?"_n("+n+")":n,zr(t,"checked","_q("+e+","+n+")"),Er(t,"change",Ir(e,n),null,!0)}function Ur(t,e,r){var i=r&&r.number,n='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(i?"_n(val)":"val")+"})",o="var $$selectedVal = "+n+";";o=o+" "+Ir(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),Er(t,"change",o,null,!0)}function $r(t,e,r){var i=t.attrsMap.type,n=r||{},o=n.lazy,a=n.number,s=n.trim,l=!o&&"range"!==i,u=o?"change":"range"===i?ns:"input",c="$event.target.value";s&&(c="$event.target.value.trim()"),a&&(c="_n("+c+")");var p=Ir(e,c);l&&(p="if($event.target.composing)return;"+p),zr(t,"value","("+e+")"),Er(t,u,p,null,!0),(s||a)&&Er(t,"blur","$forceUpdate()")}function qr(t){if(n(t[ns])){var e=xo?"change":"input";t[e]=[].concat(t[ns],t[e]||[]),delete t[ns]}n(t[os])&&(t.change=[].concat(t[os],t.change||[]),delete t[os])}function Zr(t,e,r){var i=Ma;return function n(){null!==t.apply(null,arguments)&&Wr(e,n,r,i)}}function Gr(t,e,r,i,n){e=ot(e),r&&(e=Zr(e,t,i)),Ma.addEventListener(t,e,Ao?{capture:i,passive:n}:i)}function Wr(t,e,r,i){(i||Ma).removeEventListener(t,e._withTask||e,r)}function Hr(t,e){if(!i(t.data.on)||!i(e.data.on)){var r=e.data.on||{},n=t.data.on||{};Ma=e.elm,qr(r),lt(r,n,Gr,Wr,e.context)}}function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var r,o,a=e.elm,s=t.data.domProps||{},l=e.data.domProps||{};n(l.__ob__)&&(l=e.data.domProps=x({},l));for(r in s)i(l[r])&&(a[r]="");for(r in l){if(o=l[r],"textContent"===r||"innerHTML"===r){if(e.children&&(e.children.length=0),o===s[r])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===r){a._value=o;var u=i(o)?"":String(o);Kr(a,u)&&(a.value=u)}else a[r]=o}}}function Kr(t,e){return!t.composing&&("OPTION"===t.tagName||Jr(t,e)||Yr(t,e))}function Jr(t,e){var r=!0;try{r=document.activeElement!==t}catch(t){}return r&&t.value!==e}function Yr(t,e){var r=t.value,i=t._vModifiers;return n(i)&&i.number?f(r)!==f(e):n(i)&&i.trim?r.trim()!==e.trim():r!==e}function Qr(t){var e=ti(t.style);return t.staticStyle?x(t.staticStyle,e):e}function ti(t){return Array.isArray(t)?b(t):"string"==typeof t?ls(t):t}function ei(t,e){var r,i={};if(e)for(var n=t;n.componentInstance;)n=n.componentInstance._vnode,n.data&&(r=Qr(n.data))&&x(i,r);(r=Qr(t.data))&&x(i,r);for(var o=t;o=o.parent;)o.data&&(r=Qr(o.data))&&x(i,r);return i}function ri(t,e){var r=e.data,o=t.data;if(!(i(r.staticStyle)&&i(r.style)&&i(o.staticStyle)&&i(o.style))){var a,s,l=e.elm,u=o.staticStyle,c=o.normalizedStyle||o.style||{},p=u||c,h=ti(e.data.style)||{};e.data.normalizedStyle=n(h.__ob__)?x({},h):h;var f=ei(e,!0);for(s in p)i(f[s])&&ps(l,s,"");for(s in f)(a=f[s])!==p[s]&&ps(l,s,null==a?"":a)}}function ii(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var r=" "+(t.getAttribute("class")||"")+" ";r.indexOf(" "+e+" ")<0&&t.setAttribute("class",(r+e).trim())}}function ni(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var r=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";r.indexOf(i)>=0;)r=r.replace(i," ");r=r.trim(),r?t.setAttribute("class",r):t.removeAttribute("class")}}function oi(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&x(e,ms(t.name||"v")),x(e,t),e}return"string"==typeof t?ms(t):void 0}}function ai(t){Ts(function(){Ts(t)})}function si(t,e){var r=t._transitionClasses||(t._transitionClasses=[]);r.indexOf(e)<0&&(r.push(e),ii(t,e))}function li(t,e){t._transitionClasses&&m(t._transitionClasses,e),ni(t,e)}function ui(t,e,r){var i=ci(t,e),n=i.type,o=i.timeout,a=i.propCount;if(!n)return r();var s=n===ys?xs:ws,l=0,u=function(){t.removeEventListener(s,c),r()},c=function(e){e.target===t&&++l>=a&&u()};setTimeout(function(){l<a&&u()},o+1),t.addEventListener(s,c)}function ci(t,e){var r,i=window.getComputedStyle(t),n=i[_s+"Delay"].split(", "),o=i[_s+"Duration"].split(", "),a=pi(n,o),s=i[bs+"Delay"].split(", "),l=i[bs+"Duration"].split(", "),u=pi(s,l),c=0,p=0;return e===ys?a>0&&(r=ys,c=a,p=o.length):e===gs?u>0&&(r=gs,c=u,p=l.length):(c=Math.max(a,u),r=c>0?a>u?ys:gs:null,p=r?r===ys?o.length:l.length:0),{type:r,timeout:c,propCount:p,hasTransform:r===ys&&Ss.test(i[_s+"Property"])}}function pi(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map(function(e,r){return hi(e)+hi(t[r])}))}function hi(t){return 1e3*Number(t.slice(0,-1))}function fi(t,e){var r=t.elm;n(r._leaveCb)&&(r._leaveCb.cancelled=!0,r._leaveCb());var o=oi(t.data.transition);if(!i(o)&&!n(r._enterCb)&&1===r.nodeType){for(var a=o.css,s=o.type,u=o.enterClass,c=o.enterToClass,p=o.enterActiveClass,h=o.appearClass,d=o.appearToClass,m=o.appearActiveClass,v=o.beforeEnter,y=o.enter,g=o.afterEnter,_=o.enterCancelled,x=o.beforeAppear,b=o.appear,w=o.afterAppear,T=o.appearCancelled,S=o.duration,A=ia,C=ia.$vnode;C&&C.parent;)C=C.parent,A=C.context;var E=!A._isMounted||!t.isRootInsert;if(!E||b||""===b){var k=E&&h?h:u,M=E&&m?m:p,L=E&&d?d:c,I=E?x||v:v,P=E&&"function"==typeof b?b:y,R=E?w||g:g,D=E?T||_:_,O=f(l(S)?S.enter:S),B=!1!==a&&!bo,F=vi(P),j=r._enterCb=z(function(){B&&(li(r,L),li(r,M)),j.cancelled?(B&&li(r,k),D&&D(r)):R&&R(r),r._enterCb=null});t.data.show||ut(t.data.hook||(t.data.hook={}),"insert",function(){var e=r.parentNode,i=e&&e._pending&&e._pending[t.key];i&&i.tag===t.tag&&i.elm._leaveCb&&i.elm._leaveCb(),P&&P(r,j)}),I&&I(r),B&&(si(r,k),si(r,M),ai(function(){si(r,L),li(r,k),j.cancelled||F||(mi(O)?setTimeout(j,O):ui(r,s,j))})),t.data.show&&(e&&e(),P&&P(r,j)),B||F||j()}}}function di(t,e){function r(){T.cancelled||(t.data.show||((o.parentNode._pending||(o.parentNode._pending={}))[t.key]=t),d&&d(o),x&&(si(o,c),si(o,h),ai(function(){si(o,p),li(o,c),T.cancelled||b||(mi(w)?setTimeout(T,w):ui(o,u,T))})),m&&m(o,T),x||b||T())}var o=t.elm;n(o._enterCb)&&(o._enterCb.cancelled=!0,o._enterCb());var a=oi(t.data.transition);if(i(a))return e();if(!n(o._leaveCb)&&1===o.nodeType){var s=a.css,u=a.type,c=a.leaveClass,p=a.leaveToClass,h=a.leaveActiveClass,d=a.beforeLeave,m=a.leave,v=a.afterLeave,y=a.leaveCancelled,g=a.delayLeave,_=a.duration,x=!1!==s&&!bo,b=vi(m),w=f(l(_)?_.leave:_),T=o._leaveCb=z(function(){o.parentNode&&o.parentNode._pending&&(o.parentNode._pending[t.key]=null),x&&(li(o,p),li(o,h)),T.cancelled?(x&&li(o,c),y&&y(o)):(e(),v&&v(o)),o._leaveCb=null});g?g(r):r()}}function mi(t){return"number"==typeof t&&!isNaN(t)}function vi(t){if(i(t))return!1;var e=t.fns;return n(e)?vi(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function yi(t,e){!0!==e.data.show&&fi(e)}function gi(t,e,r){_i(t,e,r),(xo||wo)&&setTimeout(function(){_i(t,e,r)},0)}function _i(t,e,r){var i=e.value,n=t.multiple;if(!n||Array.isArray(i)){for(var o,a,s=0,l=t.options.length;s<l;s++)if(a=t.options[s],n)o=S(i,bi(a))>-1,a.selected!==o&&(a.selected=o);else if(T(bi(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));n||(t.selectedIndex=-1)}}function xi(t,e){return e.every(function(e){return!T(e,t)})}function bi(t){return"_value"in t?t._value:t.value}function wi(t){t.target.composing=!0}function Ti(t){t.target.composing&&(t.target.composing=!1,Si(t.target,"input"))}function Si(t,e){var r=document.createEvent("HTMLEvents");r.initEvent(e,!0,!0),t.dispatchEvent(r)}function zi(t){return!t.componentInstance||t.data&&t.data.transition?t:zi(t.componentInstance._vnode)}function Ai(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ai(xt(e.children)):t}function Ci(t){var e={},r=t.$options;for(var i in r.propsData)e[i]=t[i];var n=r._parentListeners;for(var o in n)e[no(o)]=n[o];return e}function Ei(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function ki(t){for(;t=t.parent;)if(t.data.transition)return!0}function Mi(t,e){return e.key===t.key&&e.tag===t.tag}function Li(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Ii(t){t.data.newPos=t.elm.getBoundingClientRect()}function Pi(t){var e=t.data.pos,r=t.data.newPos,i=e.left-r.left,n=e.top-r.top;if(i||n){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+i+"px,"+n+"px)",o.transitionDuration="0s"}}function Ri(t,e){var r=e?Ns(e):js;if(r.test(t)){for(var i,n,o=[],a=r.lastIndex=0;i=r.exec(t);){n=i.index,n>a&&o.push(JSON.stringify(t.slice(a,n)));var s=br(i[1].trim());o.push("_s("+s+")"),a=n+i[0].length}return a<t.length&&o.push(JSON.stringify(t.slice(a))),o.join("+")}}function Di(t,e){var r=(e.warn,Mr(t,"class"));r&&(t.staticClass=JSON.stringify(r));var i=kr(t,"class",!1);i&&(t.classBinding=i)}function Oi(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Bi(t,e){var r=(e.warn,Mr(t,"style"));if(r){t.staticStyle=JSON.stringify(ls(r))}var i=kr(t,"style",!1);i&&(t.styleBinding=i)}function Fi(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}function ji(t,e){var r=e?gl:yl;return t.replace(r,function(t){return vl[t]})}function Vi(t,e){function r(e){c+=e,t=t.substring(e)}function i(t,r,i){var n,s;if(null==r&&(r=c),null==i&&(i=c),t&&(s=t.toLowerCase()),t)for(n=a.length-1;n>=0&&a[n].lowerCasedTag!==s;n--);else n=0;if(n>=0){for(var l=a.length-1;l>=n;l--)e.end&&e.end(a[l].tag,r,i);a.length=n,o=n&&a[n-1].tag}else"br"===s?e.start&&e.start(t,[],!0,r,i):"p"===s&&(e.start&&e.start(t,[],!1,r,i),e.end&&e.end(t,r,i))}for(var n,o,a=[],s=e.expectHTML,l=e.isUnaryTag||lo,u=e.canBeLeftOpenTag||lo,c=0;t;){if(n=t,o&&dl(o)){var p=0,h=o.toLowerCase(),f=ml[h]||(ml[h]=new RegExp("([\\s\\S]*?)(</"+h+"[^>]*>)","i")),d=t.replace(f,function(t,r,i){return p=i.length,dl(h)||"noscript"===h||(r=r.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),xl(h,r)&&(r=r.slice(1)),e.chars&&e.chars(r),""});c+=t.length-d.length,t=d,i(h,c-p,c)}else{var m=t.indexOf("<");if(0===m){if(el.test(t)){var v=t.indexOf("--\x3e");if(v>=0){e.shouldKeepComment&&e.comment(t.substring(4,v)),r(v+3);continue}}if(rl.test(t)){var y=t.indexOf("]>");if(y>=0){r(y+2);continue}}var g=t.match(tl);if(g){r(g[0].length);continue}var _=t.match(Qs);if(_){var x=c;r(_[0].length),i(_[1],x,c);continue}var b=function(){var e=t.match(Js);if(e){var i={tagName:e[1],attrs:[],start:c};r(e[0].length);for(var n,o;!(n=t.match(Ys))&&(o=t.match(Hs));)r(o[0].length),i.attrs.push(o);if(n)return i.unarySlash=n[1],r(n[0].length),i.end=c,i}}();if(b){!function(t){var r=t.tagName,n=t.unarySlash;s&&("p"===o&&Ws(r)&&i(o),u(r)&&o===r&&i(r));for(var c=l(r)||!!n,p=t.attrs.length,h=new Array(p),f=0;f<p;f++){var d=t.attrs[f];il&&-1===d[0].indexOf('""')&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]);var m=d[3]||d[4]||d[5]||"";h[f]={name:d[1],value:ji(m,e.shouldDecodeNewlines)}}c||(a.push({tag:r,lowerCasedTag:r.toLowerCase(),attrs:h}),o=r),e.start&&e.start(r,h,c,t.start,t.end)}(b),xl(o,t)&&r(1);continue}}var w=void 0,T=void 0,S=void 0;if(m>=0){for(T=t.slice(m);!(Qs.test(T)||Js.test(T)||el.test(T)||rl.test(T)||(S=T.indexOf("<",1))<0);)m+=S,T=t.slice(m);w=t.substring(0,m),r(m)}m<0&&(w=t,t=""),e.chars&&w&&e.chars(w)}if(t===n){e.chars&&e.chars(t);break}}i()}function Ni(t,e,r){return{type:1,tag:t,attrsList:e,attrsMap:an(e),parent:r,children:[]}}function Ui(t,e){function r(t){t.pre&&(s=!1),ul(t.tag)&&(l=!1)}nl=e.warn||Tr,ul=e.isPreTag||lo,cl=e.mustUseProp||lo,pl=e.getTagNamespace||lo,al=Sr(e.modules,"transformNode"),sl=Sr(e.modules,"preTransformNode"),ll=Sr(e.modules,"postTransformNode"),ol=e.delimiters;var i,n,o=[],a=!1!==e.preserveWhitespace,s=!1,l=!1;return Vi(t,{warn:nl,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldKeepComment:e.comments,start:function(t,a,u){var c=n&&n.ns||pl(t);xo&&"svg"===c&&(a=un(a));var p=Ni(t,a,n);c&&(p.ns=c),ln(p)&&!Mo()&&(p.forbidden=!0);for(var h=0;h<sl.length;h++)p=sl[h](p,e)||p;if(s||($i(p),p.pre&&(s=!0)),ul(p.tag)&&(l=!0),s?qi(p):p.processed||(Hi(p),Xi(p),Qi(p),Zi(p,e)),i?o.length||i.if&&(p.elseif||p.else)&&Yi(i,{exp:p.elseif,block:p}):i=p,n&&!p.forbidden)if(p.elseif||p.else)Ki(p,n);else if(p.slotScope){n.plain=!1;var f=p.slotTarget||'"default"';(n.scopedSlots||(n.scopedSlots={}))[f]=p}else n.children.push(p),p.parent=n;u?r(p):(n=p,o.push(p));for(var d=0;d<ll.length;d++)ll[d](p,e)},end:function(){var t=o[o.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&!l&&t.children.pop(),o.length-=1,n=o[o.length-1],r(t)},chars:function(t){if(n&&(!xo||"textarea"!==n.tag||n.attrsMap.placeholder!==t)){var e=n.children;if(t=l||t.trim()?sn(n)?t:El(t):a&&e.length?" ":""){var r;!s&&" "!==t&&(r=Ri(t,ol))?e.push({type:2,expression:r,text:t}):" "===t&&e.length&&" "===e[e.length-1].text||e.push({type:3,text:t})}}},comment:function(t){n.children.push({type:3,text:t,isComment:!0})}}),i}function $i(t){null!=Mr(t,"v-pre")&&(t.pre=!0)}function qi(t){var e=t.attrsList.length;if(e)for(var r=t.attrs=new Array(e),i=0;i<e;i++)r[i]={name:t.attrsList[i].name,value:JSON.stringify(t.attrsList[i].value)};else t.pre||(t.plain=!0)}function Zi(t,e){Gi(t),t.plain=!t.key&&!t.attrsList.length,Wi(t),tn(t),en(t);for(var r=0;r<al.length;r++)t=al[r](t,e)||t;rn(t)}function Gi(t){var e=kr(t,"key");e&&(t.key=e)}function Wi(t){var e=kr(t,"ref");e&&(t.ref=e,t.refInFor=nn(t))}function Hi(t){var e;if(e=Mr(t,"v-for")){var r=e.match(Tl);if(!r)return;t.for=r[2].trim();var i=r[1].trim(),n=i.match(Sl);n?(t.alias=n[1].trim(),t.iterator1=n[2].trim(),n[3]&&(t.iterator2=n[3].trim())):t.alias=i}}function Xi(t){var e=Mr(t,"v-if");if(e)t.if=e,Yi(t,{exp:e,block:t});else{null!=Mr(t,"v-else")&&(t.else=!0);var r=Mr(t,"v-else-if");r&&(t.elseif=r)}}function Ki(t,e){var r=Ji(e.children);r&&r.if&&Yi(r,{exp:t.elseif,block:t})}function Ji(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}function Yi(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function Qi(t){null!=Mr(t,"v-once")&&(t.once=!0)}function tn(t){if("slot"===t.tag)t.slotName=kr(t,"name");else{var e;"template"===t.tag?(e=Mr(t,"scope"),t.slotScope=e||Mr(t,"slot-scope")):(e=Mr(t,"slot-scope"))&&(t.slotScope=e);var r=kr(t,"slot");r&&(t.slotTarget='""'===r?'"default"':r,t.slotScope||Ar(t,"slot",r))}}function en(t){var e;(e=kr(t,"is"))&&(t.component=e),null!=Mr(t,"inline-template")&&(t.inlineTemplate=!0)}function rn(t){var e,r,i,n,o,a,s,l=t.attrsList;for(e=0,r=l.length;e<r;e++)if(i=n=l[e].name,o=l[e].value,wl.test(i))if(t.hasBindings=!0,a=on(i),a&&(i=i.replace(Cl,"")),Al.test(i))i=i.replace(Al,""),o=br(o),s=!1,a&&(a.prop&&(s=!0,"innerHtml"===(i=no(i))&&(i="innerHTML")),a.camel&&(i=no(i)),a.sync&&Er(t,"update:"+no(i),Ir(o,"$event"))),s||!t.component&&cl(t.tag,t.attrsMap.type,i)?zr(t,i,o):Ar(t,i,o);else if(bl.test(i))i=i.replace(bl,""),Er(t,i,o,a,!1,nl);else{i=i.replace(wl,"");var u=i.match(zl),c=u&&u[1];c&&(i=i.slice(0,-(c.length+1))),Cr(t,i,n,o,c,a)}else{Ar(t,i,JSON.stringify(o))}}function nn(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}function on(t){var e=t.match(Cl);if(e){var r={};return e.forEach(function(t){r[t.slice(1)]=!0}),r}}function an(t){for(var e={},r=0,i=t.length;r<i;r++)e[t[r].name]=t[r].value;return e}function sn(t){return"script"===t.tag||"style"===t.tag}function ln(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function un(t){for(var e=[],r=0;r<t.length;r++){var i=t[r];kl.test(i.name)||(i.name=i.name.replace(Ml,""),e.push(i))}return e}function cn(t,e){if("input"===t.tag){var r=t.attrsMap;if(r["v-model"]&&(r["v-bind:type"]||r[":type"])){var i=kr(t,"type"),n=Mr(t,"v-if",!0),o=n?"&&("+n+")":"",a=pn(t);Hi(a),hn(a,"type","checkbox"),Zi(a,e),a.processed=!0,a.if="("+i+")==='checkbox'"+o,Yi(a,{exp:a.if,block:a});var s=pn(t);Mr(s,"v-for",!0),hn(s,"type","radio"),Zi(s,e),Yi(a,{exp:"("+i+")==='radio'"+o,block:s});var l=pn(t);return Mr(l,"v-for",!0),hn(l,":type",i),Zi(l,e),Yi(a,{exp:n,block:l}),a}}}function pn(t){return Ni(t.tag,t.attrsList.slice(),t.parent)}function hn(t,e,r){t.attrsMap[e]=r,t.attrsList.push({name:e,value:r})}function fn(t,e){e.value&&zr(t,"textContent","_s("+e.value+")")}function dn(t,e){e.value&&zr(t,"innerHTML","_s("+e.value+")")}function mn(t,e){t&&(hl=Dl(e.staticKeys||""),fl=e.isReservedTag||lo,yn(t),gn(t,!1))}function vn(t){return d("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))}function yn(t){if(t.static=_n(t),1===t.type){if(!fl(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,r=t.children.length;e<r;e++){var i=t.children[e];yn(i),i.static||(t.static=!1)}if(t.ifConditions)for(var n=1,o=t.ifConditions.length;n<o;n++){var a=t.ifConditions[n].block;yn(a),a.static||(t.static=!1)}}}function gn(t,e){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=e),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)gn(t.children[r],e||!!t.for);if(t.ifConditions)for(var n=1,o=t.ifConditions.length;n<o;n++)gn(t.ifConditions[n].block,e)}}function _n(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||to(t.tag)||!fl(t.tag)||xn(t)||!Object.keys(t).every(hl))))}function xn(t){for(;t.parent;){if(t=t.parent,"template"!==t.tag)return!1;if(t.for)return!0}return!1}function bn(t,e,r){var i=e?"nativeOn:{":"on:{";for(var n in t){i+='"'+n+'":'+wn(n,t[n])+","}return i.slice(0,-1)+"}"}function wn(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return wn(t,e)}).join(",")+"]";var r=Bl.test(e.value),i=Ol.test(e.value);if(e.modifiers){var n="",o="",a=[];for(var s in e.modifiers)if(Vl[s])o+=Vl[s],Fl[s]&&a.push(s);else if("exact"===s){var l=e.modifiers;o+=jl(["ctrl","shift","alt","meta"].filter(function(t){return!l[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))}else a.push(s);a.length&&(n+=Tn(a)),o&&(n+=o);return"function($event){"+n+(r?e.value+"($event)":i?"("+e.value+")($event)":e.value)+"}"}return r||i?e.value:"function($event){"+e.value+"}"}function Tn(t){return"if(!('button' in $event)&&"+t.map(Sn).join("&&")+")return null;"}function Sn(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var r=Fl[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(r)+",$event.key)"}function zn(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}}function An(t,e){t.wrapData=function(r){return"_b("+r+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}function Cn(t,e){var r=new Ul(e);return{render:"with(this){return "+(t?En(t,r):'_c("div")')+"}",staticRenderFns:r.staticRenderFns}}function En(t,e){if(t.staticRoot&&!t.staticProcessed)return kn(t,e);if(t.once&&!t.onceProcessed)return Mn(t,e);if(t.for&&!t.forProcessed)return Pn(t,e);if(t.if&&!t.ifProcessed)return Ln(t,e);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return Gn(t,e);var r;if(t.component)r=Wn(t.component,t,e);else{var i=t.plain?void 0:Rn(t,e),n=t.inlineTemplate?null:Vn(t,e,!0);r="_c('"+t.tag+"'"+(i?","+i:"")+(n?","+n:"")+")"}for(var o=0;o<e.transforms.length;o++)r=e.transforms[o](t,r);return r}return Vn(t,e)||"void 0"}function kn(t,e){return t.staticProcessed=!0,e.staticRenderFns.push("with(this){return "+En(t,e)+"}"),"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Mn(t,e){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return Ln(t,e);if(t.staticInFor){for(var r="",i=t.parent;i;){if(i.for){r=i.key;break}i=i.parent}return r?"_o("+En(t,e)+","+e.onceId+++","+r+")":En(t,e)}return kn(t,e)}function Ln(t,e,r,i){return t.ifProcessed=!0,In(t.ifConditions.slice(),e,r,i)}function In(t,e,r,i){function n(t){return r?r(t,e):t.once?Mn(t,e):En(t,e)}if(!t.length)return i||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+n(o.block)+":"+In(t,e,r,i):""+n(o.block)}function Pn(t,e,r,i){var n=t.for,o=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,(i||"_l")+"(("+n+"),function("+o+a+s+"){return "+(r||En)(t,e)+"})"}function Rn(t,e){var r="{",i=Dn(t,e);i&&(r+=i+","),t.key&&(r+="key:"+t.key+","),t.ref&&(r+="ref:"+t.ref+","),t.refInFor&&(r+="refInFor:true,"),t.pre&&(r+="pre:true,"),t.component&&(r+='tag:"'+t.tag+'",');for(var n=0;n<e.dataGenFns.length;n++)r+=e.dataGenFns[n](t);if(t.attrs&&(r+="attrs:{"+Hn(t.attrs)+"},"),t.props&&(r+="domProps:{"+Hn(t.props)+"},"),t.events&&(r+=bn(t.events,!1,e.warn)+","),t.nativeEvents&&(r+=bn(t.nativeEvents,!0,e.warn)+","),t.slotTarget&&!t.slotScope&&(r+="slot:"+t.slotTarget+","),t.scopedSlots&&(r+=Bn(t.scopedSlots,e)+","),t.model&&(r+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=On(t,e);o&&(r+=o+",")}return r=r.replace(/,$/,"")+"}",t.wrapData&&(r=t.wrapData(r)),t.wrapListeners&&(r=t.wrapListeners(r)),r}function Dn(t,e){var r=t.directives;if(r){var i,n,o,a,s="directives:[",l=!1;for(i=0,n=r.length;i<n;i++){o=r[i],a=!0;var u=e.directives[o.name];u&&(a=!!u(t,o,e.warn)),a&&(l=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}return l?s.slice(0,-1)+"]":void 0}}function On(t,e){var r=t.children[0];if(1===r.type){var i=Cn(r,e.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}function Bn(t,e){return"scopedSlots:_u(["+Object.keys(t).map(function(r){return Fn(r,t[r],e)}).join(",")+"])"}function Fn(t,e,r){return e.for&&!e.forProcessed?jn(t,e,r):"{key:"+t+",fn:function("+String(e.slotScope)+"){return "+("template"===e.tag?e.if?e.if+"?"+(Vn(e,r)||"undefined")+":undefined":Vn(e,r)||"undefined":En(e,r))+"}}"}function jn(t,e,r){var i=e.for,n=e.alias,o=e.iterator1?","+e.iterator1:"",a=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,"_l(("+i+"),function("+n+o+a+"){return "+Fn(t,e,r)+"})"}function Vn(t,e,r,i,n){var o=t.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(i||En)(a,e);var s=r?Nn(o,e.maybeComponent):0,l=n||$n;return"["+o.map(function(t){return l(t,e)}).join(",")+"]"+(s?","+s:"")}}function Nn(t,e){for(var r=0,i=0;i<t.length;i++){var n=t[i];if(1===n.type){if(Un(n)||n.ifConditions&&n.ifConditions.some(function(t){return Un(t.block)})){r=2;break}(e(n)||n.ifConditions&&n.ifConditions.some(function(t){return e(t.block)}))&&(r=1)}}return r}function Un(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function $n(t,e){return 1===t.type?En(t,e):3===t.type&&t.isComment?Zn(t):qn(t)}function qn(t){return"_v("+(2===t.type?t.expression:Xn(JSON.stringify(t.text)))+")"}function Zn(t){return"_e("+JSON.stringify(t.text)+")"}function Gn(t,e){var r=t.slotName||'"default"',i=Vn(t,e),n="_t("+r+(i?","+i:""),o=t.attrs&&"{"+t.attrs.map(function(t){return no(t.name)+":"+t.value}).join(",")+"}",a=t.attrsMap["v-bind"];return!o&&!a||i||(n+=",null"),o&&(n+=","+o),a&&(n+=(o?"":",null")+","+a),n+")"}function Wn(t,e,r){var i=e.inlineTemplate?null:Vn(e,r,!0);return"_c("+t+","+Rn(e,r)+(i?","+i:"")+")"}function Hn(t){for(var e="",r=0;r<t.length;r++){var i=t[r];e+='"'+i.name+'":'+Xn(i.value)+","}return e.slice(0,-1)}function Xn(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function Kn(t,e){try{return new Function(t)}catch(r){return e.push({err:r,code:t}),w}}function Jn(t){var e=Object.create(null);return function(r,i,n){i=x({},i);i.warn;delete i.warn;var o=i.delimiters?String(i.delimiters)+r:r;if(e[o])return e[o];var a=t(r,i),s={},l=[];return s.render=Kn(a.render,l),s.staticRenderFns=a.staticRenderFns.map(function(t){return Kn(t,l)}),e[o]=s}}function Yn(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var Qn=Object.prototype.toString,to=d("slot,component",!0),eo=d("key,ref,slot,slot-scope,is"),ro=Object.prototype.hasOwnProperty,io=/-(\w)/g,no=y(function(t){return t.replace(io,function(t,e){return e?e.toUpperCase():""})}),oo=y(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),ao=/\B([A-Z])/g,so=y(function(t){return t.replace(ao,"-$1").toLowerCase()}),lo=function(t,e,r){return!1},uo=function(t){return t},co="data-server-rendered",po=["component","directive","filter"],ho=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],fo={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:lo,isReservedAttr:lo,isUnknownElement:lo,getTagNamespace:w,parsePlatformTagName:uo,mustUseProp:lo,_lifecycleHooks:ho},mo=Object.freeze({}),vo=/[^\w.$]/,yo="__proto__"in{},go="undefined"!=typeof window,_o=go&&window.navigator.userAgent.toLowerCase(),xo=_o&&/msie|trident/.test(_o),bo=_o&&_o.indexOf("msie 9.0")>0,wo=_o&&_o.indexOf("edge/")>0,To=_o&&_o.indexOf("android")>0,So=_o&&/iphone|ipad|ipod|ios/.test(_o),zo=(_o&&/chrome\/\d+/.test(_o),{}.watch),Ao=!1;if(go)try{var Co={};Object.defineProperty(Co,"passive",{get:function(){Ao=!0}}),window.addEventListener("test-passive",null,Co)}catch(t){}var Eo,ko,Mo=function(){return void 0===Eo&&(Eo=!go&&void 0!==t&&"server"===t.process.env.VUE_ENV),Eo},Lo=go&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Io="undefined"!=typeof Symbol&&k(Symbol)&&"undefined"!=typeof Reflect&&k(Reflect.ownKeys);ko="undefined"!=typeof Set&&k(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Po=w,Ro=0,Do=function(){this.id=Ro++,this.subs=[]};Do.prototype.addSub=function(t){this.subs.push(t)},Do.prototype.removeSub=function(t){m(this.subs,t)},Do.prototype.depend=function(){Do.target&&Do.target.addDep(this)},Do.prototype.notify=function(){for(var t=this.subs.slice(),e=0,r=t.length;e<r;e++)t[e].update()},Do.target=null;var Oo=[],Bo=function(t,e,r,i,n,o,a,s){this.tag=t,this.data=e,this.children=r,this.text=i,this.elm=n,this.ns=void 0,this.context=o,this.functionalContext=void 0,this.functionalOptions=void 0,this.functionalScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},Fo={child:{configurable:!0}};Fo.child.get=function(){return this.componentInstance},Object.defineProperties(Bo.prototype,Fo);var jo=function(t){void 0===t&&(t="");var e=new Bo;return e.text=t,e.isComment=!0,e},Vo=Array.prototype,No=Object.create(Vo);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Vo[t];C(No,t,function(){for(var r=[],i=arguments.length;i--;)r[i]=arguments[i];var n,o=e.apply(this,r),a=this.__ob__;switch(t){case"push":case"unshift":n=r;break;case"splice":n=r.slice(2)}return n&&a.observeArray(n),a.dep.notify(),o})});var Uo=Object.getOwnPropertyNames(No),$o={shouldConvert:!0},qo=function(t){if(this.value=t,this.dep=new Do,this.vmCount=0,C(t,"__ob__",this),Array.isArray(t)){(yo?D:O)(t,No,Uo),this.observeArray(t)}else this.walk(t)};qo.prototype.walk=function(t){for(var e=Object.keys(t),r=0;r<e.length;r++)F(t,e[r],t[e[r]])},qo.prototype.observeArray=function(t){for(var e=0,r=t.length;e<r;e++)B(t[e])};var Zo=fo.optionMergeStrategies;Zo.data=function(t,e,r){return r?$(t,e,r):e&&"function"!=typeof e?t:$.call(this,t,e)},ho.forEach(function(t){Zo[t]=q}),po.forEach(function(t){Zo[t+"s"]=Z}),Zo.watch=function(t,e,r,i){if(t===zo&&(t=void 0),e===zo&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var n={};x(n,t);for(var o in e){var a=n[o],s=e[o];a&&!Array.isArray(a)&&(a=[a]),n[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return n},Zo.props=Zo.methods=Zo.inject=Zo.computed=function(t,e,r,i){if(!t)return e;var n=Object.create(null);return x(n,t),e&&x(n,e),n},Zo.provide=$;var Go,Wo,Ho=function(t,e){return void 0===e?t:e},Xo=[],Ko=!1,Jo=!1;if(void 0!==r&&k(r))Wo=function(){r(nt)};else if("undefined"==typeof MessageChannel||!k(MessageChannel)&&"[object MessageChannelConstructor]"!==MessageChannel.toString())Wo=function(){setTimeout(nt,0)};else{var Yo=new MessageChannel,Qo=Yo.port2;Yo.port1.onmessage=nt,Wo=function(){Qo.postMessage(1)}}if("undefined"!=typeof Promise&&k(Promise)){var ta=Promise.resolve();Go=function(){ta.then(nt),So&&setTimeout(w)}}else Go=Wo;var ea,ra=y(function(t){var e="&"===t.charAt(0);t=e?t.slice(1):t;var r="~"===t.charAt(0);t=r?t.slice(1):t;var i="!"===t.charAt(0);return t=i?t.slice(1):t,{name:t,once:r,capture:i,passive:e}}),ia=null,na=[],oa=[],aa={},sa=!1,la=!1,ua=0,ca=0,pa=function(t,e,r,i){this.vm=t,t._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=r,this.id=++ca,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ko,this.newDepIds=new ko,this.expression="","function"==typeof e?this.getter=e:(this.getter=E(e),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};pa.prototype.get=function(){M(this);var t,e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;et(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&Nt(t),L(),this.cleanupDeps()}return t},pa.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},pa.prototype.cleanupDeps=function(){for(var t=this,e=this.deps.length;e--;){var r=t.deps[e];t.newDepIds.has(r.id)||r.removeSub(t)}var i=this.depIds;this.depIds=this.newDepIds,this.newDepIds=i,this.newDepIds.clear(),i=this.deps,this.deps=this.newDeps,this.newDeps=i,this.newDeps.length=0},pa.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Vt(this)},pa.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||l(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){et(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},pa.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pa.prototype.depend=function(){for(var t=this,e=this.deps.length;e--;)t.deps[e].depend()},pa.prototype.teardown=function(){var t=this;if(this.active){this.vm._isBeingDestroyed||m(this.vm._watchers,this);for(var e=this.deps.length;e--;)t.deps[e].removeSub(t);this.active=!1}};var ha=new ko,fa={enumerable:!0,configurable:!0,get:w,set:w},da={lazy:!0};fe(de.prototype);var ma={init:function(t,e,r,i){if(!t.componentInstance||t.componentInstance._isDestroyed){(t.componentInstance=ge(t,ia,r,i)).$mount(e?t.elm:void 0,e)}else if(t.data.keepAlive){var n=t;ma.prepatch(n,n)}},prepatch:function(t,e){var r=e.componentOptions;Mt(e.componentInstance=t.componentInstance,r.propsData,r.listeners,e,r.children)},insert:function(t){var e=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,Rt(r,"mounted")),t.data.keepAlive&&(e._isMounted?Ft(r):It(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?Pt(e,!0):e.$destroy())}},va=Object.keys(ma),ya=1,ga=2,_a=0;!function(t){t.prototype._init=function(t){var e=this;e._uid=_a++,e._isVue=!0,t&&t._isComponent?Ae(e,t):e.$options=X(Ce(e.constructor),t||{},e),e._renderProxy=e,e._self=e,Et(e),bt(e),ze(e),Rt(e,"beforeCreate"),ee(e),qt(e),te(e),Rt(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(Me),function(t){var e={};e.get=function(){return this._data};var r={};r.get=function(){return this._props},Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",r),t.prototype.$set=j,t.prototype.$delete=V,t.prototype.$watch=function(t,e,r){var i=this;if(u(e))return Qt(i,t,e,r);r=r||{},r.user=!0;var n=new pa(i,t,e,r);return r.immediate&&e.call(i,n.value),function(){n.teardown()}}}(Me),function(t){var e=/^hook:/;t.prototype.$on=function(t,r){var i=this,n=this;if(Array.isArray(t))for(var o=0,a=t.length;o<a;o++)i.$on(t[o],r);else(n._events[t]||(n._events[t]=[])).push(r),e.test(t)&&(n._hasHookEvent=!0);return n},t.prototype.$once=function(t,e){function r(){i.$off(t,r),e.apply(i,arguments)}var i=this;return r.fn=e,i.$on(t,r),i},t.prototype.$off=function(t,e){var r=this,i=this;if(!arguments.length)return i._events=Object.create(null),i;if(Array.isArray(t)){for(var n=0,o=t.length;n<o;n++)r.$off(t[n],e);return i}var a=i._events[t];if(!a)return i;if(1===arguments.length)return i._events[t]=null,i;if(e)for(var s,l=a.length;l--;)if((s=a[l])===e||s.fn===e){a.splice(l,1);break}return i},t.prototype.$emit=function(t){var e=this,r=e._events[t];if(r){r=r.length>1?_(r):r;for(var i=_(arguments,1),n=0,o=r.length;n<o;n++)try{r[n].apply(e,i)}catch(r){et(r,e,'event handler for "'+t+'"')}}return e}}(Me),function(t){t.prototype._update=function(t,e){var r=this;r._isMounted&&Rt(r,"beforeUpdate");var i=r.$el,n=r._vnode,o=ia;ia=r,r._vnode=t,n?r.$el=r.__patch__(n,t):(r.$el=r.__patch__(r.$el,t,e,!1,r.$options._parentElm,r.$options._refElm),r.$options._parentElm=r.$options._refElm=null),ia=o,i&&(i.__vue__=null),r.$el&&(r.$el.__vue__=r),r.$vnode&&r.$parent&&r.$vnode===r.$parent._vnode&&(r.$parent.$el=r.$el)},t.prototype.$forceUpdate=function(){var t=this;t._watcher&&t._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Rt(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||m(e.$children,t),t._watcher&&t._watcher.teardown();for(var r=t._watchers.length;r--;)t._watchers[r].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Rt(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(Me),function(t){fe(t.prototype),t.prototype.$nextTick=function(t){return at(t,this)},t.prototype._render=function(){var t=this,e=t.$options,r=e.render,i=e._parentVnode;if(t._isMounted)for(var n in t.$slots){var o=t.$slots[n];o._rendered&&(t.$slots[n]=R(o,!0))}t.$scopedSlots=i&&i.data.scopedSlots||mo,t.$vnode=i;var a;try{a=r.call(t._renderProxy,t.$createElement)}catch(e){et(e,t,"render"),a=t._vnode}return a instanceof Bo||(a=jo()),a.parent=i,a}}(Me);var xa=[String,RegExp,Array],ba={name:"keep-alive",abstract:!0,props:{include:xa,exclude:xa,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){var t=this;for(var e in t.cache)Ve(t.cache,e,t.keys)},watch:{include:function(t){je(this,function(e){return Fe(t,e)})},exclude:function(t){je(this,function(e){return!Fe(t,e)})}},render:function(){var t=xt(this.$slots.default),e=t&&t.componentOptions;if(e){var r=Be(e);if(r&&(this.include&&!Fe(this.include,r)||this.exclude&&Fe(this.exclude,r)))return t;var i=this,n=i.cache,o=i.keys,a=null==t.key?e.Ctor.cid+(e.tag?"::"+e.tag:""):t.key;n[a]?(t.componentInstance=n[a].componentInstance,m(o,a),o.push(a)):(n[a]=t,o.push(a),this.max&&o.length>parseInt(this.max)&&Ve(n,o[0],o,this._vnode)),t.data.keepAlive=!0}return t}},wa={KeepAlive:ba};!function(t){var e={};e.get=function(){return fo},Object.defineProperty(t,"config",e),t.util={warn:Po,extend:x,mergeOptions:X,defineReactive:F},t.set=j,t.delete=V,t.nextTick=at,t.options=Object.create(null),po.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,x(t.options.components,wa),Le(t),Ie(t),Pe(t),Oe(t)}(Me),Object.defineProperty(Me.prototype,"$isServer",{get:Mo}),Object.defineProperty(Me.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Me.version="2.5.2";var Ta,Sa,za,Aa,Ca,Ea,ka,Ma,La,Ia=d("style,class"),Pa=d("input,textarea,option,select,progress"),Ra=function(t,e,r){return"value"===r&&Pa(t)&&"button"!==e||"selected"===r&&"option"===t||"checked"===r&&"input"===t||"muted"===r&&"video"===t},Da=d("contenteditable,draggable,spellcheck"),Oa=d("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ba="http://www.w3.org/1999/xlink",Fa=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ja=function(t){return Fa(t)?t.slice(6,t.length):""},Va=function(t){return null==t||!1===t},Na={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Ua=d("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),$a=d("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),qa=function(t){return"pre"===t},Za=function(t){return Ua(t)||$a(t)},Ga=Object.create(null),Wa=d("text,number,password,search,email,tel,url"),Ha=Object.freeze({createElement:Je,createElementNS:Ye,createTextNode:Qe,createComment:tr,insertBefore:er,removeChild:rr,appendChild:ir,parentNode:nr,nextSibling:or,tagName:ar,setTextContent:sr,setAttribute:lr}),Xa={create:function(t,e){ur(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ur(t,!0),ur(e))},destroy:function(t){ur(t,!0)}},Ka=new Bo("",{},[]),Ja=["create","activate","update","remove","destroy"],Ya={create:fr,update:fr,destroy:function(t){fr(t,Ka)}},Qa=Object.create(null),ts=[Xa,Ya],es={create:gr,update:gr},rs={create:xr,update:xr},is=/[\w).+\-_$\]]/,ns="__r",os="__c",as={create:Hr,update:Hr},ss={create:Xr,update:Xr},ls=y(function(t){var e={},r=/;(?![^(]*\))/g,i=/:(.+)/;return t.split(r).forEach(function(t){if(t){var r=t.split(i);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e}),us=/^--/,cs=/\s*!important$/,ps=function(t,e,r){if(us.test(e))t.style.setProperty(e,r);else if(cs.test(r))t.style.setProperty(e,r.replace(cs,""),"important");else{var i=fs(e);if(Array.isArray(r))for(var n=0,o=r.length;n<o;n++)t.style[i]=r[n];else t.style[i]=r}},hs=["Webkit","Moz","ms"],fs=y(function(t){if(La=La||document.createElement("div").style,"filter"!==(t=no(t))&&t in La)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),r=0;r<hs.length;r++){var i=hs[r]+e;if(i in La)return i}}),ds={create:ri,update:ri},ms=y(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),vs=go&&!bo,ys="transition",gs="animation",_s="transition",xs="transitionend",bs="animation",ws="animationend";vs&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(_s="WebkitTransition",xs="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(bs="WebkitAnimation",ws="webkitAnimationEnd"));var Ts=go?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()},Ss=/\b(transform|all)(,|$)/,zs=go?{create:yi,activate:yi,remove:function(t,e){!0!==t.data.show?di(t,e):e()}}:{},As=[es,rs,as,ss,ds,zs],Cs=As.concat(ts),Es=function(t){function e(t){return new Bo(L.tagName(t).toLowerCase(),{},[],void 0,t)}function r(t,e){function r(){0==--r.listeners&&a(t)}return r.listeners=e,r}function a(t){var e=L.parentNode(t);n(e)&&L.removeChild(e,t)}function l(t,e,r,i,a){if(t.isRootInsert=!a,!u(t,e,r,i)){var s=t.data,l=t.children,c=t.tag;n(c)?(t.elm=t.ns?L.createElementNS(t.ns,c):L.createElement(c,t),y(t),f(t,l,e),n(s)&&v(t,e),h(r,t.elm,i)):o(t.isComment)?(t.elm=L.createComment(t.text),h(r,t.elm,i)):(t.elm=L.createTextNode(t.text),h(r,t.elm,i))}}function u(t,e,r,i){var a=t.data;if(n(a)){var s=n(t.componentInstance)&&a.keepAlive;if(n(a=a.hook)&&n(a=a.init)&&a(t,!1,r,i),n(t.componentInstance))return c(t,e),o(s)&&p(t,e,r,i),!0}}function c(t,e){n(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,m(t)?(v(t,e),y(t)):(ur(t),e.push(t))}function p(t,e,r,i){for(var o,a=t;a.componentInstance;)if(a=a.componentInstance._vnode,n(o=a.data)&&n(o=o.transition)){for(o=0;o<k.activate.length;++o)k.activate[o](Ka,a);e.push(a);break}h(r,t.elm,i)}function h(t,e,r){n(t)&&(n(r)?r.parentNode===t&&L.insertBefore(t,e,r):L.appendChild(t,e))}function f(t,e,r){if(Array.isArray(e))for(var i=0;i<e.length;++i)l(e[i],r,t.elm,null,!0);else s(t.text)&&L.appendChild(t.elm,L.createTextNode(t.text))}function m(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return n(t.tag)}function v(t,e){for(var r=0;r<k.create.length;++r)k.create[r](Ka,t);C=t.data.hook,n(C)&&(n(C.create)&&C.create(Ka,t),n(C.insert)&&e.push(t))}function y(t){var e;if(n(e=t.functionalScopeId))L.setAttribute(t.elm,e,"");else for(var r=t;r;)n(e=r.context)&&n(e=e.$options._scopeId)&&L.setAttribute(t.elm,e,""),r=r.parent;n(e=ia)&&e!==t.context&&e!==t.functionalContext&&n(e=e.$options._scopeId)&&L.setAttribute(t.elm,e,"")}function g(t,e,r,i,n,o){for(;i<=n;++i)l(r[i],o,t,e)}function _(t){var e,r,i=t.data;if(n(i))for(n(e=i.hook)&&n(e=e.destroy)&&e(t),e=0;e<k.destroy.length;++e)k.destroy[e](t);if(n(e=t.children))for(r=0;r<t.children.length;++r)_(t.children[r])}function x(t,e,r,i){for(;r<=i;++r){var o=e[r];n(o)&&(n(o.tag)?(b(o),_(o)):a(o.elm))}}function b(t,e){if(n(e)||n(t.data)){var i,o=k.remove.length+1;for(n(e)?e.listeners+=o:e=r(t.elm,o),n(i=t.componentInstance)&&n(i=i._vnode)&&n(i.data)&&b(i,e),i=0;i<k.remove.length;++i)k.remove[i](t,e);n(i=t.data.hook)&&n(i=i.remove)?i(t,e):e()}else a(t.elm)}function w(t,e,r,o,a){for(var s,u,c,p,h=0,f=0,d=e.length-1,m=e[0],v=e[d],y=r.length-1,_=r[0],b=r[y],w=!a;h<=d&&f<=y;)i(m)?m=e[++h]:i(v)?v=e[--d]:cr(m,_)?(S(m,_,o),m=e[++h],_=r[++f]):cr(v,b)?(S(v,b,o),v=e[--d],b=r[--y]):cr(m,b)?(S(m,b,o),w&&L.insertBefore(t,m.elm,L.nextSibling(v.elm)),m=e[++h],b=r[--y]):cr(v,_)?(S(v,_,o),w&&L.insertBefore(t,v.elm,m.elm),v=e[--d],_=r[++f]):(i(s)&&(s=hr(e,h,d)),u=n(_.key)?s[_.key]:T(_,e,h,d),i(u)?l(_,o,t,m.elm):(c=e[u],cr(c,_)?(S(c,_,o),e[u]=void 0,w&&L.insertBefore(t,c.elm,m.elm)):l(_,o,t,m.elm)),_=r[++f]);h>d?(p=i(r[y+1])?null:r[y+1].elm,g(t,p,r,f,y,o)):f>y&&x(t,e,h,d)}function T(t,e,r,i){for(var o=r;o<i;o++){var a=e[o];if(n(a)&&cr(t,a))return o}}function S(t,e,r,a){if(t!==e){var s=e.elm=t.elm;if(o(t.isAsyncPlaceholder))return void(n(e.asyncFactory.resolved)?A(t.elm,e,r):e.isAsyncPlaceholder=!0);if(o(e.isStatic)&&o(t.isStatic)&&e.key===t.key&&(o(e.isCloned)||o(e.isOnce)))return void(e.componentInstance=t.componentInstance);var l,u=e.data;n(u)&&n(l=u.hook)&&n(l=l.prepatch)&&l(t,e);var c=t.children,p=e.children;if(n(u)&&m(e)){for(l=0;l<k.update.length;++l)k.update[l](t,e);n(l=u.hook)&&n(l=l.update)&&l(t,e)}i(e.text)?n(c)&&n(p)?c!==p&&w(s,c,p,r,a):n(p)?(n(t.text)&&L.setTextContent(s,""),g(s,null,p,0,p.length-1,r)):n(c)?x(s,c,0,c.length-1):n(t.text)&&L.setTextContent(s,""):t.text!==e.text&&L.setTextContent(s,e.text),n(u)&&n(l=u.hook)&&n(l=l.postpatch)&&l(t,e)}}function z(t,e,r){if(o(r)&&n(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i<e.length;++i)e[i].data.hook.insert(e[i])}function A(t,e,r){if(o(e.isComment)&&n(e.asyncFactory))return e.elm=t,e.isAsyncPlaceholder=!0,!0;e.elm=t;var i=e.tag,a=e.data,s=e.children;if(n(a)&&(n(C=a.hook)&&n(C=C.init)&&C(e,!0),n(C=e.componentInstance)))return c(e,r),!0;if(n(i)){if(n(s))if(t.hasChildNodes())if(n(C=a)&&n(C=C.domProps)&&n(C=C.innerHTML)){if(C!==t.innerHTML)return!1}else{for(var l=!0,u=t.firstChild,p=0;p<s.length;p++){if(!u||!A(u,s[p],r)){l=!1;break}u=u.nextSibling}if(!l||u)return!1}else f(e,s,r);if(n(a))for(var h in a)if(!I(h)){v(e,r);break}}else t.data!==e.text&&(t.data=e.text);return!0}var C,E,k={},M=t.modules,L=t.nodeOps;for(C=0;C<Ja.length;++C)for(k[Ja[C]]=[],E=0;E<M.length;++E)n(M[E][Ja[C]])&&k[Ja[C]].push(M[E][Ja[C]]);var I=d("attrs,style,class,staticClass,staticStyle,key");return function(t,r,a,s,u,c){if(i(r))return void(n(t)&&_(t));var p=!1,h=[];if(i(t))p=!0,l(r,h,u,c);else{var f=n(t.nodeType);if(!f&&cr(t,r))S(t,r,h,s);else{if(f){if(1===t.nodeType&&t.hasAttribute(co)&&(t.removeAttribute(co),a=!0),o(a)&&A(t,r,h))return z(r,h,!0),t;t=e(t)}var d=t.elm,v=L.parentNode(d);if(l(r,h,d._leaveCb?null:v,L.nextSibling(d)),n(r.parent))for(var y=r.parent,g=m(r);y;){for(var b=0;b<k.destroy.length;++b)k.destroy[b](y);if(y.elm=r.elm,g){for(var w=0;w<k.create.length;++w)k.create[w](Ka,y);var T=y.data.hook.insert;if(T.merged)for(var C=1;C<T.fns.length;C++)T.fns[C]()}else ur(y);y=y.parent}n(v)?x(v,[t],0,0):n(t.tag)&&_(t)}}return z(r,h,p),r.elm}}({nodeOps:Ha,modules:Cs});bo&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Si(t,"input")});var ks={inserted:function(t,e,r){"select"===r.tag?(gi(t,e,r.context),t._vOptions=[].map.call(t.options,bi)):("textarea"===r.tag||Wa(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("change",Ti),To||(t.addEventListener("compositionstart",wi),t.addEventListener("compositionend",Ti)),bo&&(t.vmodel=!0)))},componentUpdated:function(t,e,r){if("select"===r.tag){gi(t,e,r.context);var i=t._vOptions,n=t._vOptions=[].map.call(t.options,bi);if(n.some(function(t,e){return!T(t,i[e])})){(t.multiple?e.value.some(function(t){return xi(t,n)}):e.value!==e.oldValue&&xi(e.value,n))&&Si(t,"change")}}}},Ms={bind:function(t,e,r){var i=e.value;r=zi(r);var n=r.data&&r.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&n?(r.data.show=!0,fi(r,function(){t.style.display=o})):t.style.display=i?o:"none"},update:function(t,e,r){var i=e.value;i!==e.oldValue&&(r=zi(r),r.data&&r.data.transition?(r.data.show=!0,i?fi(r,function(){t.style.display=t.__vOriginalDisplay}):di(r,function(){t.style.display="none"})):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,r,i,n){n||(t.style.display=t.__vOriginalDisplay)}},Ls={model:ks,show:Ms},Is={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Ps={name:"transition",props:Is,abstract:!0,render:function(t){var e=this,r=this.$options._renderChildren;if(r&&(r=r.filter(function(t){return t.tag||_t(t)}),r.length)){var i=this.mode,n=r[0];if(ki(this.$vnode))return n;var o=Ai(n);if(!o)return n;if(this._leaving)return Ei(t,n);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var l=(o.data||(o.data={})).transition=Ci(this),u=this._vnode,c=Ai(u);if(o.data.directives&&o.data.directives.some(function(t){return"show"===t.name})&&(o.data.show=!0),c&&c.data&&!Mi(o,c)&&!_t(c)){var p=c.data.transition=x({},l);if("out-in"===i)return this._leaving=!0,ut(p,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),Ei(t,n);if("in-out"===i){if(_t(o))return u;var h,f=function(){h()};ut(l,"afterEnter",f),ut(l,"enterCancelled",f),ut(p,"delayLeave",function(t){h=t})}}return n}}},Rs=x({tag:String,moveClass:String},Is);delete Rs.mode;var Ds={props:Rs,render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",r=Object.create(null),i=this.prevChildren=this.children,n=this.$slots.default||[],o=this.children=[],a=Ci(this),s=0;s<n.length;s++){var l=n[s];if(l.tag)if(null!=l.key&&0!==String(l.key).indexOf("__vlist"))o.push(l),r[l.key]=l,(l.data||(l.data={})).transition=a;else;}if(i){for(var u=[],c=[],p=0;p<i.length;p++){var h=i[p];h.data.transition=a,h.data.pos=h.elm.getBoundingClientRect(),r[h.key]?u.push(h):c.push(h)}this.kept=t(e,null,u),this.removed=c}return t(e,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(Li),t.forEach(Ii),t.forEach(Pi),this._reflow=document.body.offsetHeight,t.forEach(function(t){if(t.data.moved){var r=t.elm,i=r.style;si(r,e),i.transform=i.WebkitTransform=i.transitionDuration="",r.addEventListener(xs,r._moveCb=function t(i){i&&!/transform$/.test(i.propertyName)||(r.removeEventListener(xs,t),r._moveCb=null,li(r,e))})}}))},methods:{hasMove:function(t,e){if(!vs)return!1;if(this._hasMove)return this._hasMove;var r=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){ni(r,t)}),ii(r,e),r.style.display="none",this.$el.appendChild(r);var i=ci(r);return this.$el.removeChild(r),this._hasMove=i.hasTransform}}},Os={Transition:Ps,TransitionGroup:Ds};Me.config.mustUseProp=Ra,Me.config.isReservedTag=Za,Me.config.isReservedAttr=Ia,Me.config.getTagNamespace=He,Me.config.isUnknownElement=Xe,x(Me.options.directives,Ls),x(Me.options.components,Os),Me.prototype.__patch__=go?Es:w,Me.prototype.$mount=function(t,e){return t=t&&go?Ke(t):void 0,kt(this,t,e)},Me.nextTick(function(){fo.devtools&&Lo&&Lo.emit("init",Me)},0);var Bs,Fs=!!go&&function(t,e){var r=document.createElement("div");return r.innerHTML='<div a="'+t+'"/>',r.innerHTML.indexOf(e)>0}("\n","&#10;"),js=/\{\{((?:.|\n)+?)\}\}/g,Vs=/[-.*+?^${}()|[\]\/\\]/g,Ns=y(function(t){var e=t[0].replace(Vs,"\\$&"),r=t[1].replace(Vs,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+r,"g")}),Us={staticKeys:["staticClass"],transformNode:Di,genData:Oi},$s={staticKeys:["staticStyle"],transformNode:Bi,genData:Fi},qs={decode:function(t){return Bs=Bs||document.createElement("div"),Bs.innerHTML=t,Bs.textContent}},Zs=d("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Gs=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Ws=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Hs=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Xs="[a-zA-Z_][\\w\\-\\.]*",Ks="((?:"+Xs+"\\:)?"+Xs+")",Js=new RegExp("^<"+Ks),Ys=/^\s*(\/?)>/,Qs=new RegExp("^<\\/"+Ks+"[^>]*>"),tl=/^<!DOCTYPE [^>]+>/i,el=/^<!--/,rl=/^<!\[/,il=!1;"x".replace(/x(.)?/g,function(t,e){il=""===e});var nl,ol,al,sl,ll,ul,cl,pl,hl,fl,dl=d("script,style,textarea",!0),ml={},vl={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n"},yl=/&(?:lt|gt|quot|amp);/g,gl=/&(?:lt|gt|quot|amp|#10);/g,_l=d("pre,textarea",!0),xl=function(t,e){return t&&_l(t)&&"\n"===e[0]},bl=/^@|^v-on:/,wl=/^v-|^@|^:/,Tl=/(.*?)\s+(?:in|of)\s+(.*)/,Sl=/\((\{[^}]*\}|[^,]*),([^,]*)(?:,([^,]*))?\)/,zl=/:(.*)$/,Al=/^:|^v-bind:/,Cl=/\.[^.]+/g,El=y(qs.decode),kl=/^xmlns:NS\d+/,Ml=/^NS\d+:/,Ll={preTransformNode:cn},Il=[Us,$s,Ll],Pl={model:jr,text:fn,html:dn},Rl={expectHTML:!0,modules:Il,directives:Pl,isPreTag:qa,isUnaryTag:Zs,mustUseProp:Ra,canBeLeftOpenTag:Gs,isReservedTag:Za,getTagNamespace:He,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(Il)},Dl=y(vn),Ol=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,Bl=/^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/,Fl={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},jl=function(t){return"if("+t+")return null;"},Vl={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:jl("$event.target !== $event.currentTarget"),ctrl:jl("!$event.ctrlKey"),shift:jl("!$event.shiftKey"),alt:jl("!$event.altKey"),meta:jl("!$event.metaKey"),left:jl("'button' in $event && $event.button !== 0"),middle:jl("'button' in $event && $event.button !== 1"),right:jl("'button' in $event && $event.button !== 2")},Nl={on:zn,bind:An,cloak:w},Ul=function(t){this.options=t,this.warn=t.warn||Tr,this.transforms=Sr(t.modules,"transformCode"),this.dataGenFns=Sr(t.modules,"genData"),this.directives=x(x({},Nl),t.directives);var e=t.isReservedTag||lo;this.maybeComponent=function(t){return!e(t.tag)},this.onceId=0,this.staticRenderFns=[]},$l=(new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)"),function(t){return function(e){function r(r,i){var n=Object.create(e),o=[],a=[];if(n.warn=function(t,e){(e?a:o).push(t)},i){i.modules&&(n.modules=(e.modules||[]).concat(i.modules)),i.directives&&(n.directives=x(Object.create(e.directives),i.directives));for(var s in i)"modules"!==s&&"directives"!==s&&(n[s]=i[s])}var l=t(r,n);return l.errors=o,l.tips=a,l}return{compile:r,compileToFunctions:Jn(r)}}}(function(t,e){var r=Ui(t.trim(),e);mn(r,e);var i=Cn(r,e);return{ast:r,render:i.render,staticRenderFns:i.staticRenderFns}})),ql=$l(Rl),Zl=ql.compileToFunctions,Gl=y(function(t){var e=Ke(t);return e&&e.innerHTML}),Wl=Me.prototype.$mount;Me.prototype.$mount=function(t,e){if((t=t&&Ke(t))===document.body||t===document.documentElement)return this;var r=this.$options;if(!r.render){var i=r.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=Gl(i));else{if(!i.nodeType)return this;i=i.innerHTML}else t&&(i=Yn(t));if(i){var n=Zl(i,{shouldDecodeNewlines:Fs,delimiters:r.delimiters,comments:r.comments},this),o=n.render,a=n.staticRenderFns;r.render=o,r.staticRenderFns=a}}return Wl.call(this,t,e)},Me.compile=Zl,e.a=Me}).call(e,r(0),r(4).setImmediate)},function(t,e,r){function i(t,e){this._id=t,this._clearFn=e}var n=Function.prototype.apply;e.setTimeout=function(){return new i(n.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(n.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},r(5),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,r){(function(t,e){!function(t,r){"use strict";function i(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),r=0;r<e.length;r++)e[r]=arguments[r+1];var i={callback:t,args:e};return u[l]=i,s(l),l++}function n(t){delete u[t]}function o(t){var e=t.callback,i=t.args;switch(i.length){case 0:e();break;case 1:e(i[0]);break;case 2:e(i[0],i[1]);break;case 3:e(i[0],i[1],i[2]);break;default:e.apply(r,i)}}function a(t){if(c)setTimeout(a,0,t);else{var e=u[t];if(e){c=!0;try{o(e)}finally{n(t),c=!1}}}}if(!t.setImmediate){var s,l=1,u={},c=!1,p=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=r,e}}()?function(){var e="setImmediate$"+Math.random()+"$",r=function(r){r.source===t&&"string"==typeof r.data&&0===r.data.indexOf(e)&&a(+r.data.slice(e.length))};t.addEventListener?t.addEventListener("message",r,!1):t.attachEvent("onmessage",r),s=function(r){t.postMessage(e+r,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():p&&"onreadystatechange"in p.createElement("script")?function(){var t=p.documentElement;s=function(e){var r=p.createElement("script");r.onreadystatechange=function(){a(e),r.onreadystatechange=null,t.removeChild(r),r=null},t.appendChild(r)}}():function(){s=function(t){setTimeout(a,0,t)}}(),h.setImmediate=i,h.clearImmediate=n}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,r(0),r(6))},function(t,e){function r(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function n(t){if(c===setTimeout)return setTimeout(t,0);if((c===r||!c)&&setTimeout)return c=setTimeout,setTimeout(t,0);try{return c(t,0)}catch(e){try{return c.call(null,t,0)}catch(e){return c.call(this,t,0)}}}function o(t){if(p===clearTimeout)return clearTimeout(t);if((p===i||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(t);try{return p(t)}catch(e){try{return p.call(null,t)}catch(e){return p.call(this,t)}}}function a(){m&&f&&(m=!1,f.length?d=f.concat(d):v=-1,d.length&&s())}function s(){if(!m){var t=n(a);m=!0;for(var e=d.length;e;){for(f=d,d=[];++v<e;)f&&f[v].run();v=-1,e=d.length}f=null,m=!1,o(t)}}function l(t,e){this.fun=t,this.array=e}function u(){}var c,p,h=t.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:r}catch(t){c=r}try{p="function"==typeof clearTimeout?clearTimeout:i}catch(t){p=i}}();var f,d=[],m=!1,v=-1;h.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];d.push(new l(t,e)),1!==d.length||m||n(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},h.title="browser",h.browser=!0,h.env={},h.argv=[],h.version="",h.versions={},h.on=u,h.addListener=u,h.once=u,h.off=u,h.removeListener=u,h.removeAllListeners=u,h.emit=u,h.prependListener=u,h.prependOnceListener=u,h.listeners=function(t){return[]},h.binding=function(t){throw new Error("process.binding is not supported")},h.cwd=function(){return"/"},h.chdir=function(t){throw new Error("process.chdir is not supported")},h.umask=function(){return 0}},function(t,e,r){"use strict";function i(t){r(8)}var n=r(14),o=r(16),a=r(13),s=i,l=a(n.a,o.a,!1,s,null,null);e.a=l.exports},function(t,e,r){var i=r(9);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);r(11)("1cc1a7d4",i,!0)},function(t,e,r){e=t.exports=r(10)(void 0),e.push([t.i,"#geshem #datetime{position:absolute;margin:20px 0 0 20px;color:#fff;font-family:monospace}#geshem #datetime #date{font-size:1.4em}#geshem #datetime #time{font-size:1.8em}#geshem #slider{position:absolute;bottom:8vh;width:30vw;margin-left:35vw}@media only screen and (max-device-width:812px){#geshem #slider{width:80vw;margin-left:8vw}}",""])},function(t,e){function r(t,e){var r=t[1]||"",n=t[3];if(!n)return r;if(e&&"function"==typeof btoa){var o=i(n);return[r].concat(n.sources.map(function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"})).concat([o]).join("\n")}return[r].join("\n")}function i(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var i=r(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i}).join("")},e.i=function(t,r){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},n=0;n<this.length;n++){var o=this[n][0];"number"==typeof o&&(i[o]=!0)}for(n=0;n<t.length;n++){var a=t[n];"number"==typeof a[0]&&i[a[0]]||(r&&!a[2]?a[2]=r:r&&(a[2]="("+a[2]+") and ("+r+")"),e.push(a))}},e}},function(t,e,r){function i(t){for(var e=0;e<t.length;e++){var r=t[e],i=c[r.id];if(i){i.refs++;for(var n=0;n<i.parts.length;n++)i.parts[n](r.parts[n]);for(;n<r.parts.length;n++)i.parts.push(o(r.parts[n]));i.parts.length>r.parts.length&&(i.parts.length=r.parts.length)}else{for(var a=[],n=0;n<r.parts.length;n++)a.push(o(r.parts[n]));c[r.id]={id:r.id,refs:1,parts:a}}}}function n(){var t=document.createElement("style");return t.type="text/css",p.appendChild(t),t}function o(t){var e,r,i=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(i){if(d)return m;i.parentNode.removeChild(i)}if(v){var o=f++;i=h||(h=n()),e=a.bind(null,i,o,!1),r=a.bind(null,i,o,!0)}else i=n(),e=s.bind(null,i),r=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else r()}}function a(t,e,r,i){var n=r?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,n);else{var o=document.createTextNode(n),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function s(t,e){var r=e.css,i=e.media,n=e.sourceMap;if(i&&t.setAttribute("media",i),n&&(r+="\n/*# sourceURL="+n.sources[0]+" */",r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var u=r(12),c={},p=l&&(document.head||document.getElementsByTagName("head")[0]),h=null,f=0,d=!1,m=function(){},v="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,r){d=r;var n=u(t,e);return i(n),function(e){for(var r=[],o=0;o<n.length;o++){var a=n[o],s=c[a.id];s.refs--,r.push(s)}e?(n=u(t,e),i(n)):n=[];for(var o=0;o<r.length;o++){var s=r[o];if(0===s.refs){for(var l=0;l<s.parts.length;l++)s.parts[l]();delete c[s.id]}}}};var y=function(){var t=[];return function(e,r){return t[e]=r,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t,e){for(var r=[],i={},n=0;n<e.length;n++){var o=e[n],a=o[0],s=o[1],l=o[2],u=o[3],c={id:t+":"+n,css:s,media:l,sourceMap:u};i[a]?i[a].parts.push(c):r.push(i[a]={id:a,parts:[c]})}return r}},function(t,e){t.exports=function(t,e,r,i,n,o){var a,s=t=t||{},l=typeof t.default;"object"!==l&&"function"!==l||(a=t,s=t.default);var u="function"==typeof s?s.options:s;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),r&&(u.functional=!0),n&&(u._scopeId=n);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=c):i&&(c=i),c){var p=u.functional,h=p?u.render:u.beforeCreate;p?(u._injectStyles=c,u.render=function(t,e){return c.call(e),h(t,e)}):u.beforeCreate=h?[].concat(h,c):[c]}return{esModule:a,exports:s,options:u}}},function(t,e,r){"use strict";function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var n=r(15),o=r.n(n),a=r(1),s=r.n(a);e.a={name:"geshem",components:{"vue-slider":o.a},data:function(){var t;return{imgs:window.imgs,res:280,slider:7,rasterCoords:{140:[[33.35317413,33.27232471],[36.32243686,33.27232471],[36.32243686,30.72293428],[33.35317413,30.72293428]],280:[[31.93095218,34.5156862],[37.86644267,34.5156862],[37.86644267,29.42911589],[31.93095218,29.42911589]]},map:new s.a.Map((t={container:"map",style:"mapbox://styles/mapbox/dark-v9"},i(t,"container","map"),i(t,"maxZoom",10),i(t,"minZoom",5),i(t,"zoom",6.3),i(t,"center",[35,31.9]),i(t,"hash",!1),t))}},computed:{date:function(){var t=this.imgs[this.res][7-this.slider].substr(0,8);return t.substr(6,2)+"-"+t.substr(4,2)+"-"+t.substr(0,4)},time:function(){var t=this.imgs[this.res][7-this.slider].substr(9,6);return t.substr(0,2)+":"+t.substr(2,2)},curImg:function(){return 7-this.slider}},created:function(){var t=this;this.map.on("style.load",function(){for(var e=0;e<t.imgs[140].length;)t.addRadarSource("140",e,t.imgs[140][e++]);for(var e=0;e<t.imgs[280].length;)t.addRadarSource("280",e,t.imgs[280][e++]);t.addRadarLayer("280",0)}),this.map.on("zoom",function(){var e=t.map.getZoom()>7,r=e?"280":"140",i=e?"140":"280";i!=t.res&&(console.log("Zoom event from "+r+" to "+i),t.removeRadarLayer(r,t.curImg),t.addRadarLayer(i,t.curImg),t.res=i)})},methods:{addRadarSource:function(t,e,r){this.map.addSource("radar-"+t+"-"+e,{type:"image",url:"/static/img/"+r,coordinates:this.rasterCoords[t]})},addRadarLayer:function(t,e){this.map.addLayer({id:"radar-"+t+"-"+e,source:"radar-"+t+"-"+e,type:"raster",paint:{"raster-opacity":.85}})},removeRadarLayer:function(t,e){this.map.removeLayer("radar-"+t+"-"+e)}},watch:{slider:function(t,e){this.removeRadarLayer(this.res,7-e),this.addRadarLayer(this.res,7-t)}}}},function(t,e,r){!function(e,r){t.exports=r()}(0,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=2)}([function(t,e,r){r(7);var i=r(5)(r(1),r(6),null,null);t.exports=i.exports},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={data:function(){return{flag:!1,size:0,currentValue:0,currentSlider:0,dotWidthVal:"number"==typeof this.dotWidth?this.dotWidth:this.dotSize,dotHeightVal:"number"==typeof this.dotHeight?this.dotHeight:this.dotSize}},props:{width:{type:[Number,String],default:"auto"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:"always"},eventType:{type:String,default:"auto"},direction:{type:String,default:"horizontal"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},value:{type:[String,Number,Array],default:0},piecewiseLabel:{type:Boolean,default:!1},sliderStyle:[Array,Object],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object],labelStyle:Object,labelActiveStyle:Object},computed:{flowDirection:function(){return"vue-slider-"+this.direction+(this.reverse?"-reverse":"")},tooltipDirection:function(){var t=this.tooltipDir||("vertical"===this.direction?"left":"top");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return"hover"===this.tooltip&&this.flag?"vue-slider-always":this.tooltip?"vue-slider-"+this.tooltip:""},tooltipClass:function(){return["vue-slider-tooltip-"+this.tooltipDirection,"vue-slider-tooltip"]},isDisabled:function(){return"none"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?"vue-slider-disabled":""},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),r=this.data.indexOf(t[1]);e>-1&&r>-1&&(this.currentValue=[e,r])}else{var i=this.data.indexOf(t);i>-1&&(this.currentValue=i)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(""+this.interval).split(".")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(~~((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&console.error("[Vue-slider warn]: Prop[interval] is illegal, Please make sure that the interval can be divisible"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},wrapStyles:function(){return"vertical"===this.direction?{height:"number"==typeof this.height?this.height+"px":this.height,padding:this.dotHeightVal/2+"px "+this.dotWidthVal/2+"px"}:{width:"number"==typeof this.width?this.width+"px":this.width,padding:this.dotHeightVal/2+"px "+this.dotWidthVal/2+"px"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return"vertical"===this.direction?{width:this.width+"px",height:"100%"}:{height:this.height+"px"}},dotStyles:function(){return"vertical"===this.direction?{width:this.dotWidthVal+"px",height:this.dotHeightVal+"px",left:-(this.dotWidthVal-this.width)/2+"px"}:{width:this.dotWidthVal+"px",height:this.dotHeightVal+"px",top:-(this.dotHeightVal-this.height)/2+"px"}},piecewiseDotStyle:function(){return"vertical"===this.direction?{width:this.width+"px",height:this.width+"px"}:{width:this.height+"px",height:this.height+"px"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var r="vertical"===this.direction?{bottom:this.gap*e-this.width/2+"px",left:0}:{left:this.gap*e-this.height/2+"px",top:0},i=this.reverse?this.total-e:e,n=this.data?this.data[i]:this.spacing*i+this.min;t.push({style:r,label:this.formatter?this.formatting(n):n,inRange:i>=this.indexRange[0]&&i<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},min:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})}},methods:{bindEvents:function(){document.addEventListener("touchmove",this.moving,{passive:!1}),document.addEventListener("touchend",this.moveEnd,{passive:!1}),document.addEventListener("mousemove",this.moving),document.addEventListener("mouseup",this.moveEnd),document.addEventListener("mouseleave",this.moveEnd),window.addEventListener("resize",this.refresh)},unbindEvents:function(){window.removeEventListener("resize",this.refresh),document.removeEventListener("touchmove",this.moving),document.removeEventListener("touchend",this.moveEnd),document.removeEventListener("mousemove",this.moving),document.removeEventListener("mouseup",this.moveEnd),document.removeEventListener("mouseleave",this.moveEnd)},formatting:function(t){return"string"==typeof this.formatter?this.formatter.replace(/\{value\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),"vertical"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},wrapClick:function(t){if(this.isDisabled||!this.clickable)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){if(this.isDisabled)return!1;this.isRange&&(this.currentSlider=t),this.flag=!0,this.$emit("drag-start",this)},moving:function(t){if(!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){if(!this.flag)return!1;this.$emit("drag-end",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,this.setPosition()},setValueOnPos:function(t,e){var r=this.isRange?this.limit[this.currentSlider]:this.limit,i=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=r[0]&&t<=r[1]){this.setTransform(t);var n=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(n,e)}else t<r[0]?(this.setTransform(r[0]),this.setCurrentValue(i[0]),1===this.currentSlider&&(this.currentSlider=0)):(this.setTransform(r[1]),this.setCurrentValue(i[1]),0===this.currentSlider&&(this.currentSlider=1))},isDiff:function(t,e){return Object.prototype.toString.call(t)!==Object.prototype.toString.call(e)||(Array.isArray(t)&&t.length===e.length?t.some(function(t,r){return t!==e[r]}):t!==e)},setCurrentValue:function(t,e){if(t<this.minimum||t>this.maximum)return!1;this.isRange?this.isDiff(this.currentValue[this.currentSlider],t)&&(this.currentValue.splice(this.currentSlider,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,r){var i=this;if(this.isDiff(this.val,t)){var n=this.limitValue(t);this.val=!1!==n?this.isRange?n.concat():n:this.isRange?t.concat():t,this.syncValue(e)}this.$nextTick(function(){return i.setPosition(r)})},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.currentSlider=0,this.setTransform(this.position[this.currentSlider]),this.currentSlider=1,this.setTransform(this.position[this.currentSlider])):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t){var e=("vertical"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1),r="vertical"===this.direction?"translateY("+e+"px)":"translateX("+e+"px)",i=(0===this.currentSlider?this.position[1]-t:t-this.position[0])+"px",n=(0===this.currentSlider?t:this.position[0])+"px";this.isRange?(this.slider[this.currentSlider].style.transform=r,this.slider[this.currentSlider].style.WebkitTransform=r,this.slider[this.currentSlider].style.msTransform=r,"vertical"===this.direction?(this.$refs.process.style.height=i,this.$refs.process.style[this.reverse?"top":"bottom"]=n):(this.$refs.process.style.width=i,this.$refs.process.style[this.reverse?"right":"left"]=n)):(this.slider.style.transform=r,this.slider.style.WebkitTransform=r,this.slider.style.msTransform=r,"vertical"===this.direction?(this.$refs.process.style.height=t+"px",this.$refs.process.style[this.reverse?"top":"bottom"]=0):(this.$refs.process.style.width=t+"px",this.$refs.process.style[this.reverse?"right":"left"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;e<this.slider.length;e++)this.slider[e].style.transitionDuration=t+"s",this.slider[e].style.WebkitTransitionDuration=t+"s";this.$refs.process.style.transitionDuration=t+"s",this.$refs.process.style.WebkitTransitionDuration=t+"s"}else this.slider.style.transitionDuration=t+"s",this.slider.style.WebkitTransitionDuration=t+"s",this.$refs.process.style.transitionDuration=t+"s",this.$refs.process.style.WebkitTransitionDuration=t+"s"},limitValue:function(t){var e=this;if(this.data)return t;var r=!1;return this.isRange?t=t.map(function(t){return t<e.min?(r=!0,e.min):t>e.max?(r=!0,e.max):t}):t>this.max?(r=!0,t=this.max):t<this.min&&(r=!0,t=this.min),r&&t},syncValue:function(t){t||this.$emit("callback",this.val),this.$emit("input",this.isRange?this.val.concat():this.val)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size="vertical"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset="vertical"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.setPosition())}},mounted:function(){var t=this;"undefined"!=typeof window&&"undefined"!=typeof document&&this.$nextTick(function(){t.getStaticData(),t.setValue(t.value,!0,0),t.bindEvents()})},beforeDestroy:function(){this.unbindEvents()}}},function(t,e,r){"use strict";var i=r(0);t.exports=i},function(t,e,r){e=t.exports=r(4)(),e.push([t.i,'.vue-slider-component{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;-webkit-transition:all 0s;transition:all 0s;z-index:1}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;-webkit-box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);-webkit-transition:all 0s;transition:all 0s;will-change:transform;cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:"";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:"";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:"";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:"";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;-webkit-transition:all .3s;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',""])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var r=this[e];r[2]?t.push("@media "+r[2]+"{"+r[1]+"}"):t.push(r[1])}return t.join("")},t.i=function(e,r){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},n=0;n<this.length;n++){var o=this[n][0];"number"==typeof o&&(i[o]=!0)}for(n=0;n<e.length;n++){var a=e[n];"number"==typeof a[0]&&i[a[0]]||(r&&!a[2]?a[2]=r:r&&(a[2]="("+a[2]+") and ("+r+")"),t.push(a))}},t}},function(t,e){t.exports=function(t,e,r,i){var n,o=t=t||{},a=typeof t.default;"object"!==a&&"function"!==a||(n=t,o=t.default);var s="function"==typeof o?o.options:o;if(e&&(s.render=e.render,s.staticRenderFns=e.staticRenderFns),r&&(s._scopeId=r),i){var l=Object.create(s.computed||null);Object.keys(i).forEach(function(t){var e=i[t];l[t]=function(){return e}}),s.computed=l}return{esModule:n,exports:o,options:s}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{directives:[{name:"show",rawName:"v-show",value:t.show,expression:"show"}],ref:"wrap",class:["vue-slider-component",t.flowDirection,t.disabledClass,{"vue-slider-has-label":t.piecewiseLabel}],style:t.wrapStyles,on:{click:t.wrapClick}},[r("div",{ref:"elem",staticClass:"vue-slider",style:[t.elemStyles,t.bgStyle],attrs:{"aria-hidden":"true"}},[t.isRange?[r("div",{ref:"dot0",class:[t.tooltipStatus,"vue-slider-dot"],style:[t.dotStyles,t.sliderStyles[0]],on:{mousedown:function(e){t.moveStart(0)},touchstart:function(e){t.moveStart(0)}}},[r("span",{class:["vue-slider-tooltip-"+t.tooltipDirection[0],"vue-slider-tooltip-wrap"]},[t._t("tooltip",[r("span",{staticClass:"vue-slider-tooltip",style:t.tooltipStyles[0]},[t._v(t._s(t.formatter?t.formatting(t.val[0]):t.val[0]))])],{value:t.val[0],index:0})],2)]),t._v(" "),r("div",{ref:"dot1",class:[t.tooltipStatus,"vue-slider-dot"],style:[t.dotStyles,t.sliderStyles[1]],on:{mousedown:function(e){t.moveStart(1)},touchstart:function(e){t.moveStart(1)}}},[r("span",{class:["vue-slider-tooltip-"+t.tooltipDirection[1],"vue-slider-tooltip-wrap"]},[t._t("tooltip",[r("span",{staticClass:"vue-slider-tooltip",style:t.tooltipStyles[1]},[t._v(t._s(t.formatter?t.formatting(t.val[1]):t.val[1]))])],{value:t.val[1],index:1})],2)])]:[r("div",{ref:"dot",class:[t.tooltipStatus,"vue-slider-dot"],style:[t.dotStyles,t.sliderStyles],on:{mousedown:t.moveStart,touchstart:t.moveStart}},[r("span",{class:["vue-slider-tooltip-"+t.tooltipDirection,"vue-slider-tooltip-wrap"]},[t._t("tooltip",[r("span",{staticClass:"vue-slider-tooltip",style:t.tooltipStyles},[t._v(t._s(t.formatter?t.formatting(t.val):t.val))])],{value:t.val})],2)])],t._v(" "),r("ul",{staticClass:"vue-slider-piecewise"},t._l(t.piecewiseDotWrap,function(e,i){return r("li",{key:i,staticClass:"vue-slider-piecewise-item",style:[t.piecewiseDotStyle,e.style]},[t._t("piecewise",[t.piecewise?r("span",{staticClass:"vue-slider-piecewise-dot",style:[t.piecewiseStyle,e.inRange?t.piecewiseActiveStyle:null]}):t._e()],{label:e.label,index:i,first:0===i,last:i===t.piecewiseDotWrap.length-1}),t._v(" "),t._t("label",[t.piecewiseLabel?r("span",{staticClass:"vue-slider-piecewise-label",style:[t.labelStyle,e.inRange?t.labelActiveStyle:null]},[t._v("\n\t\t\t\t\t\t"+t._s(e.label)+"\n\t\t\t\t\t")]):t._e()],{label:e.label,index:i,first:0===i,last:i===t.piecewiseDotWrap.length-1})],2)})),t._v(" "),r("div",{ref:"process",staticClass:"vue-slider-process",style:t.processStyle})],2),t._v(" "),t.isRange||t.data?t._e():r("input",{directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],staticClass:"vue-slider-sr-only",attrs:{type:"range",min:t.min,max:t.max},domProps:{value:t.val},on:{__r:function(e){t.val=e.target.value}}})])},staticRenderFns:[]}},function(t,e,r){var i=r(3);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),r(8)("743d98f5",i,!0)},function(t,e,r){function i(t){for(var e=0;e<t.length;e++){var r=t[e],i=c[r.id];if(i){i.refs++;for(var n=0;n<i.parts.length;n++)i.parts[n](r.parts[n]);for(;n<r.parts.length;n++)i.parts.push(o(r.parts[n]));i.parts.length>r.parts.length&&(i.parts.length=r.parts.length)}else{for(var a=[],n=0;n<r.parts.length;n++)a.push(o(r.parts[n]));c[r.id]={id:r.id,refs:1,parts:a}}}}function n(){var t=document.createElement("style");return t.type="text/css",p.appendChild(t),t}function o(t){var e,r,i=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(i){if(d)return m;i.parentNode.removeChild(i)}if(v){var o=f++;i=h||(h=n()),e=a.bind(null,i,o,!1),r=a.bind(null,i,o,!0)}else i=n(),e=s.bind(null,i),r=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else r()}}function a(t,e,r,i){var n=r?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,n);else{var o=document.createTextNode(n),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function s(t,e){var r=e.css,i=e.media,n=e.sourceMap;if(i&&t.setAttribute("media",i),n&&(r+="\n/*# sourceURL="+n.sources[0]+" */",r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var u=r(9),c={},p=l&&(document.head||document.getElementsByTagName("head")[0]),h=null,f=0,d=!1,m=function(){},v="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,r){d=r;var n=u(t,e);return i(n),function(e){for(var r=[],o=0;o<n.length;o++){var a=n[o],s=c[a.id];s.refs--,r.push(s)}e?(n=u(t,e),i(n)):n=[];for(var o=0;o<r.length;o++){var s=r[o];if(0===s.refs){for(var l=0;l<s.parts.length;l++)s.parts[l]();delete c[s.id]}}}};var y=function(){var t=[];return function(e,r){return t[e]=r,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t,e){for(var r=[],i={},n=0;n<e.length;n++){var o=e[n],a=o[0],s=o[1],l=o[2],u=o[3],c={id:t+":"+n,css:s,media:l,sourceMap:u};i[a]?i[a].parts.push(c):r.push(i[a]={id:a,parts:[c]})}return r}}])})},function(t,e,r){"use strict";var i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{attrs:{id:"geshem"}},[r("div",{attrs:{id:"datetime"}},[r("div",{attrs:{id:"date"}},[t._v(t._s(t.date))]),t._v(" "),r("div",{attrs:{id:"time"}},[t._v(t._s(t.time))])]),t._v(" "),r("div",{attrs:{id:"slider"}},[r("vue-slider",{ref:"slider",attrs:{min:1,max:7,height:20,"dot-size":45,tooltip:!1},model:{value:t.slider,callback:function(e){t.slider=e},expression:"slider"}})],1)])},n=[],o={render:i,staticRenderFns:n};e.a=o}]);
+//# sourceMappingURL=build.js.map \ No newline at end of file
diff --git a/static/js/build.js.map b/static/js/build.js.map
new file mode 100644
index 0000000..91041c4
--- /dev/null
+++ b/static/js/build.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///build.js","webpack:///webpack/bootstrap 28c446f8136708d15869","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/mapbox-gl/dist/mapbox-gl.js","webpack:///./geshem.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js","webpack:///./Geshem.vue","webpack:///./Geshem.vue?1f22","webpack:///./Geshem.vue?09cd","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-loader/lib/component-normalizer.js","webpack:///Geshem.vue","webpack:///./node_modules/vue-slider-component/dist/index.js","webpack:///./Geshem.vue?f1f8"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","g","this","Function","eval","e","window","global","require","f","define","t","r","u","a","Error","code","length","1","_dereq_","amd","glMatrix","Float32Array","Math","sin","cos","v","M","h","y","w","A","F","x","b","j","R","X","Z","k","q","tan","vec3","transformMat3","vec4","transformMat4","mat2","create","rotate","scale","mat3","fromRotation","mat4","identity","translate","multiply","perspective","rotateX","rotateZ","invert","ortho","2","Point","clone","add","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","_rotate","rotateAround","_rotateAround","matMult","_matMult","unit","_unit","perp","_perp","round","_round","mag","sqrt","equals","dist","distSqr","angle","atan2","angleTo","angleWith","angleWithSep","convert","Array","isArray","3","ShelfPack","autoResize","shelves","freebins","stats","bins","maxId","free","id","maxw","maxh","refcount","pack","concat","width","height","packOne","inPlace","push","shrink","freebin","shelf","waste","getBin","ref","max","allocFreebin","allocShelf","resize","splice","alloc","unref","clear","4","TinySDF","fontSize","buffer","cutoff","fontFamily","fontWeight","radius","size","canvas","document","createElement","ctx","getContext","font","textBaseline","fillStyle","gridOuter","Float64Array","gridInner","z","Int16Array","middle","navigator","userAgent","indexOf","edt","edt1d","INF","draw","clearRect","fillText","getImageData","Uint8ClampedArray","data","pow","min","5","UnitBezier","cx","bx","ax","cy","by","ay","p1x","p1y","p2x","p2y","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","abs","solve","6","VectorTile","VectorTileFeature","VectorTileLayer","./lib/vectortile.js","./lib/vectortilefeature.js","./lib/vectortilelayer.js","7","layers","readFields","readTile","readVarint","pos","./vectortilelayer","8","properties","extent","type","_pbf","_geometry","_keys","_values","readFeature","readTag","classifyRings","signedArea","types","loadGeometry","readSVarint","bbox","toGeoJSON","PI","atan","exp","geometry","coordinates","@mapbox/point-geometry","9","version","_features","readLayer","readString","readValueMessage","readFloat","readDouble","readVarint64","readBoolean","feature","./vectortilefeature.js","10","WhooTS","format","service","request","srs","join","getURL","getTileBBox","getMercCoords","value","11","earcut","linkedList","eliminateHoles","earcutLinked","insertNode","next","removeNode","filterPoints","steiner","area","prev","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","zOrder","nextZ","prevZ","intersects","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","sort","compareX","eliminateHole","findHoleBridge","sortLinked","intersectsPolygon","middleInside","Node","deviation","flatten","vertices","holes","dimensions","12","polygonArea","ringArea","rad","wgs84","RADIUS","ring","13","rewind","features","map","curryOuter","correct","correctRings","wind","cw","reverse","geojsonArea","geojson-area","14","clip","clipPoints","clipGeometry","createFeature","tags","outer","S","newSlice","./feature","15","convertFeature","projectPoint","project","geometries","simplify","calcSize","log","./simplify","16","calcBBox","calcRingBBox","17","geojsonvt","GeoJSONVT","options","extend","debug","console","time","maxZoom","tolerance","tiles","tileCoords","timeEnd","indexMaxZoom","indexMaxPoints","total","wrap","intersectX","splitTile","numFeatures","numPoints","JSON","stringify","toID","intersectY","isClippedSquare","source","transform","point","z2","createTile","solidChildren","pop","numSimplified","floor","T","getTile","tile","./clip","./convert","./tile","./transform","./wrap","18","getSqSegDist","19","transformed","addFeature","20","transformTile","transformPoint","21","shiftFeatureCoords","shiftCoords","22","GridIndex","cells","ArrayBuffer","arrayBuffer","Int32Array","NUM_PARAMS","subarray","keys","bboxes","insert","_insertReadonly","padding","uid","_forEachCell","_insertCell","query","slice","_queryCell","_convertToCellCoord","toArrayBuffer","set","23","read","N","NaN","write","isNaN","LN2","24","kdbush","KDBush","defaultGetX","defaultGetY","nodeSize","points","ids","coords","range","within","./range","./sort","./within","25","26","sortKD","select","swapItem","swap","27","sqDist","D","28","isSupported","isBrowser","isArraySupported","isFunctionSupported","isObjectSupported","isJSONSupported","isWorkerSupported","isUint8ClampedArraySupported","isWebGLSupportedCached","failIfMajorPerformanceCaveat","every","filter","forEach","lastIndexOf","some","reduce","reduceRight","bind","getPrototypeOf","getOwnPropertyNames","isSealed","isFrozen","isExtensible","getOwnPropertyDescriptor","defineProperties","seal","freeze","preventExtensions","isWebGLSupportedCache","isWebGLSupported","webGLContextAttributes","probablySupportsContext","supportsContext","mapboxgl","supported","antialias","alpha","stencil","depth","29","Pbf","buf","isView","Uint8Array","readVarintRemainder","toNum","readPackedEnd","Bytes","writeBigVarint","realloc","writeBigVarintLow","writeBigVarintHigh","makeRoomForExtraLength","ceil","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","readUtf8","String","fromCharCode","writeUtf8","charCodeAt","ieee754","Varint","Fixed64","Fixed32","destroy","skip","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","Boolean","readBytes","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeString","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","30","defaultSetTimout","defaultClearTimeout","runTimeout","cachedSetTimeout","setTimeout","runClearTimeout","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","run","Item","fun","array","noop","process","nextTick","arguments","apply","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","31","partialSort","defaultCompare","32","supercluster","SuperCluster","trees","createCluster","zoom","parentId","createPointCluster","lngX","latY","getClusterJSON","getClusterProperties","xLng","yLat","cluster","cluster_id","point_count","point_count_abbreviated","getX","getY","minZoom","initial","load","Date","now","_cluster","getClusters","_limitZoom","getChildren","getLeaves","_appendLeaves","_addTileFeatures","getClusterExpansionZoom","_accumulate","33","TinyQueue","compare","_down","_up","peek","34","super_","constructor","writable","35","copy","fill","readUInt8","36","inspect","seen","stylize","stylizeNoColor","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styles","arrayToHash","isFunction","isString","formatPrimitive","isError","formatError","isRegExp","RegExp","toString","isDate","toUTCString","formatArray","formatProperty","reduceToSingleString","replace","isNumber","isNull","match","split","substr","isNullOrUndefined","isSymbol","isObject","objectToString","isPrimitive","pad","timestamp","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","Number","deprecate","throwDeprecation","traceDeprecation","trace","error","noDeprecation","debugEnviron","debugs","debuglog","NODE_DEBUG","toUpperCase","test","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","number","boolean","undefined","null","string","date","regexp","isBuffer","inherits","self","./support/isBuffer","_process","37","fromVectorTileJs","writeTile","fromGeojsonVt","GeoJSONWrapper","writeLayer","values","keycache","valuecache","writeFeature","writeValue","writeProperties","writeGeometry","command","zigzag","./lib/geojson_wrapper","pbf","38","FeatureWrapper","rawGeometry","@mapbox/vector-tile","39","bundleFn","sources","cache","default","random","URL","webkitURL","mozURL","msURL","Blob","bare","createObjectURL","Worker","objectURL","40","FLATTENING","POLAR_RADIUS","41","42","util","deserialize","layerIds","getLayer","createBucket","../util/util","43","addCircleVertex","emplaceBack","SegmentVector","VertexBuffer","IndexBuffer","ref$1","ProgramConfigurationSet","createVertexArrayType","ref$2","TriangleIndexArray","EXTENT","circleInterface","layoutAttributes","components","indexArrayType","paintAttributes","LayoutVertexArrayType","CircleBucket","overscaling","index","layoutVertexArray","indexArray","programConfigurations","segments","populate","sourceLayerIndex","featureIndex","isEmpty","serialize","upload","layoutVertexBuffer","indexBuffer","prepareSegment","vertexLength","primitiveLength","populatePaintArrays","programInterface","../../gl/index_buffer","../../gl/vertex_buffer","../extent","../index_array_type","../load_geometry","../program_configuration","../segment","../vertex_array_type","44","LineIndexArray","fillInterface","indexArrayType2","FillBucket","indexArray2","segments2","indexBuffer2","B","../../util/classify_rings","45","addVertex","FACTOR","isBoundaryEdge","MAX_VERTEX_ARRAY_LENGTH","fillExtrusionInterface","FillExtrusionBucket","V","E","_","I","C","46","addLineVertex","EXTRUDE_SCALE","LINE_DISTANCE_SCALE","vectorTileFeatureTypes","COS_HALF_SHARP_CORNER","MAX_LINE_DISTANCE","LINE_DISTANCE_BUFFER_BITS","lineInterface","useIntegerZoom","LineBucket","layout","getLayoutValue","addLine","distance","e1","e2","e3","L","addCurrentVertex","P","addPieSliceVertex","O","47","addDynamicAttributes","packUint8ToFloat","addCollisionBoxVertex","getSizeData","isFeatureConstant","isLayoutValueFeatureConstant","isZoomConstant","isLayoutValueZoomConstant","layoutSize","getLayoutValueStopZoomLevels","coveringZoomRange","coveringStopValues","functionBase","getLayoutProperty","base","functionType","getSizeVertexData","ref$3","Anchor","getAnchors","resolveTokens","ref$4","getGlyphQuads","getIconQuads","ref$5","shapeText","shapeIcon","WritingMode","transformText","mergeLines","clipLine","scriptDetection","CollisionFeature","findPoleOfInaccessibility","createStructArrayType","verticalizePunctuation","PlacedSymbolArray","members","GlyphOffsetArray","LineVertexArray","dynamicLayoutAttributes","symbolInterfaces","text","icon","collisionBox","SymbolBuffers","dynamicLayoutVertexArray","dynamicLayoutVertexBuffer","SymbolBucket","collisionBoxArray","sdfIcons","iconsNeedLinear","pixelRatio","textSizeData","iconSizeData","placedGlyphArray","placedIconArray","glyphOffsetArray","lineVertexArray","iconDependencies","glyphDependencies","allowsVerticalWritingMode","lookup","charAt","prepare","symbolInstances","tilePixelRatio","compareText","allowsLetterSpacing","horizontal","vertical","sdf","warnOnce","addSymbolInstance","anchorIsTooClose","W","G","$","U","place","maxScale","anchor","boxStartIndex","textBoxStartIndex","boxEndIndex","textBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","placeCollisionFeature","minScale","line","insertCollisionFeature","featureProperties","addSymbols","glyphQuads","textOffset","writingModes","iconQuads","iconOffset","addToDebugBuffers","writingMode","tl","tr","bl","br","tex","glyphOffset","segment","yStretch","textCollisionFeature","iconCollisionFeature","perspectiveRatio","anchorPoint","x1","y1","x2","y2","placementScale","parseInt","MAX_INSTANCES","programInterfaces","../../shaders/encode_attribute","../../symbol/anchor","../../symbol/clip_line","../../symbol/collision_feature","../../symbol/get_anchors","../../symbol/mergelines","../../symbol/quads","../../symbol/shaping","../../symbol/transform_text","../../util/find_pole_of_inaccessibility","../../util/script_detection","../../util/struct_array","../../util/token","../../util/util","../../util/verticalize_punctuation","48","49","topDownFeatureComparator","featureFilter","Grid","DictionaryCoder","vt","Protobuf","GeoJSONFeature","arraysIntersect","FeatureIndexArray","FeatureIndex","coord","grid","featureIndexArray","rawTileData","bucketLayerIDs","setCollisionTile","collisionTile","vtLayers","sourceLayerCoder","params","tileSize","queryGeometry","additionalRadius","filterMatching","bearing","queryRenderedSymbols","bucketIndex","decode","queryIntersectsFeature","layer","hasLayer","../style-spec/feature_filter","../util/dictionary_coder","../util/struct_array","../util/vectortile_to_geojson","./extent","./load_geometry","grid-index","50","createIndexArrayType","51","bounds","52","PosArray","53","packColor","interpolationFactor","ConstantBinder","defines","populatePaintArray","setUniforms","getPaintValue","uniform4fv","uniforms","uniform1f","SourceFunctionBinder","CompositeFunctionBinder","ProgramConfiguration","binders","cacheKey","createDynamic","_paintSpecifications","isPaintValueFeatureConstant","isPaintValueZoomConstant","PaintVertexArray","interface","createBasicFill","color","opacity","createPaintPropertyStatistics","paintVertexArray","bytesPerElement","paintPropertyStatistics","statistics","paintVertexBuffer","../gl/vertex_buffer","../shaders/encode_attribute","../style-spec/function","./vertex_array_type","54","RasterBoundsArray","55","vertexOffset","primitiveOffset","vaos","56","alignment","57","Coordinate","column","row","zoomTo","_zoomTo","58","LngLat","lng","lat","toArray","toBounds","./lng_lat_bounds","59","LngLatBounds","setSouthWest","setNorthEast","_ne","_sw","getCenter","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","./lng_lat","60","interp","TileCoord","glmatrix","Transform","_renderWorldCopies","_minZoom","_maxZoom","latRange","_center","_fov","_pitch","_unmodified","prototypeAccessors","renderWorldCopies","worldSize","centerPoint","pitch","fov","center","unmodified","_calcMatrices","rotationMatrix","clamp","_zoom","zoomScale","tileZoom","zoomFraction","_constrain","coveringZoomLevel","roundZoom","scaleZoom","getVisibleWrappedCoordinates","pointCoordinate","coveringTiles","minzoom","maxzoom","cover","reparseOverscaled","pixelsToGLUnits","unproject","setLocationAtPoint","coordinateLocation","locationCoordinate","locationPoint","coordinatePoint","pointLocation","pixelMatrixInverse","pixelMatrix","calculatePosMatrix","toCoordinate","projMatrix","cameraToTileDistance","sourceMaxZoom","_constraining","lngRange","cameraToCenterDistance","../data/extent","../source/tile_coord","../style-spec/util/interpolate","./coordinate","@mapbox/gl-matrix","61","gl","createBuffer","extVertexArrayObject","getExtension","bindVertexArrayOES","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","STATIC_DRAW","deleteBuffer","62","AttributeType","Int8","Uint8","Int16","Uint16","Int32","Uint32","Float32","attributes","itemSize","dynamicDraw","ARRAY_BUFFER","DYNAMIC_DRAW","updateData","bufferSubData","enableAttributes","enableVertexAttribArray","setVertexAttribPointers","vertexAttribPointer","offset","63","Map","NavigationControl","GeolocateControl","AttributionControl","ScaleControl","FullscreenControl","Popup","Marker","Style","Evented","config","rtlTextPlugin","workerCount","hardwareConcurrency","setRTLTextPlugin","accessToken","ACCESS_TOKEN","../package.json","./geo/lng_lat","./geo/lng_lat_bounds","./source/rtl_text_plugin","./style/style","./ui/control/attribution_control","./ui/control/fullscreen_control","./ui/control/geolocate_control","./ui/control/navigation_control","./ui/control/scale_control","./ui/map","./ui/marker","./ui/popup","./util/browser","./util/config","./util/evented","mapbox-gl-supported","64","drawBackground","paint","renderPass","disable","STENCIL_TEST","setDepthSublayer","pattern","isPatternMissing","useProgram","basicFillProgramConfiguration","tileExtentPatternVAO","tileExtentBuffer","u_color","tileExtentVAO","u_opacity","setTile","uniformMatrix4fv","u_matrix","drawArrays","TRIANGLE_STRIP","./pattern","65","drawCircles","depthMask","getBucket","u_camera_to_center_distance","uniform1i","u_scale_with_map","u_pitch_with_map","pixelsToTileUnits","uniform2f","u_extrude_scale","uniform2fv","u_devicepixelratio","devicePixelRatio","translatePosMatrix","posMatrix","TRIANGLES","../source/pixels_to_tile_units","../util/browser","66","drawCollisionDebug","enable","activeTexture","TEXTURE1","frameHistory","u_fadetexture","enableTileClippingMask","lineWidth","u_scale","u_zoom","u_maxzoom","u_collision_y_stretch","u_pitch","LINES","67","drawDebug","drawDebugTile","uniform4f","debugVAO","debugBuffer","LINE_STRIP","createTextVerticies","VertexArrayObject","simplexFont"," ","!","\"","#","%","&","'","(",")","*","+",",","-",".","/","0",":",";","<","=",">","?","@","H","J","K","Q","Y","[","\\","]","^","`","{","|","}","~","../data/pos_array","./vertex_array_object","68","drawFill","drawFillTiles","drawFillTile","getPaintProperty","drawStrokeTile","setFillProgram","u_world","drawingBufferWidth","drawingBufferHeight","currentProgram","69","DEPTH_TEST","clearColor","drawExtrusion","drawExtrusionTexture","prerenderedFrames","TEXTURE0","bindTexture","TEXTURE_2D","texture","u_image","vao","viewportFrames","u_height_factor","setLight","style","light","calculated","position","uniform3fv","u_lightpos","u_lightintensity","intensity","u_lightcolor","70","drawLineTile","lineAtlas","getDash","from","to","fromScale","toScale","u_patternscale_a","u_patternscale_b","u_sdfgamma","imageManager","getPattern","u_pattern_size_a","displaySize","u_pattern_size_b","getPixelSize","u_texsize","u_gl_units_to_pixels","u_tex_y_a","u_tex_y_b","u_mix","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_fade","u_ratio","71","drawRaster","getSource","depthFunc","LESS","u_brightness_low","u_brightness_high","u_saturation_factor","saturationFactor","u_contrast_factor","contrastFactor","u_spin_weights","spinWeights","u_buffer_scale","u_image0","u_image1","registerFadeDuration","animationLoop","findLoadedParent","getFadeValues","u_tl_parent","u_scale_parent","u_fade_t","mix","ImageSource","boundsBuffer","boundsVAO","rasterBoundsBuffer","rasterBoundsVAO","LEQUAL","timeAdded","refreshedUponExpiration","../source/image_source","72","drawSymbols","drawLayerSymbols","showCollisionBoxes","setSymbolDrawState","u_texture","glyphAtlasTexture","LINEAR","CLAMP_TO_EDGE","iconAtlasTexture","rotating","zooming","NEAREST","symbolProjection","getLabelPlaneMatrix","getGlCoordMatrix","u_gl_coord_matrix","u_label_plane_matrix","identityMat4","updateLineLabels","drawTileSymbols","u_is_text","u_is_size_zoom_constant","u_is_size_feature_constant","symbolSize","evaluateSizeForZoom","uSizeT","u_size_t","uSize","u_size","u_aspect_ratio","u_rotate_symbol","u_gamma_scale","u_is_halo","drawSymbolElements","../symbol/projection","../symbol/symbol_size","./draw_collision_debug","73","FrameHistory","changeTimes","changeOpacities","opacities","previousZoom","firstFrame","record","changed","isVisible","texSubImage2D","ALPHA","UNSIGNED_BYTE","createTexture","texParameteri","TEXTURE_WRAP_S","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","texImage2D","74","makeGlyphAtlas","AlphaImage","bitmap","rect","metrics","image","positions","../util/image","@mapbox/shelf-pack","75","loadGlyphRange","isChar","asyncAll","GlyphManager","requestTransform","localIdeographFontFamily","entries","setURL","url","getGlyphs","stack","glyphs","requests","glyph","_tinySDF","tinySDF","left","top","advance","../style/load_glyph_range","../util/is_char_in_unicode_block","@mapbox/tiny-sdf","76","imagePosition","textureRect","makeImageAtlas","RGBAImage","77","Texture","ImageManager","images","loaded","requestors","shelfPack","patterns","atlasImage","dirty","isLoaded","setLoaded","callback","_notify","getImage","addImage","removeImage","bin","getImages","atlasTexture","update","RGBA","./image_atlas","./texture","78","LineAtlas","nextRow","bytes","addDash","REPEAT","79","SourceCache","shaders","Program","RenderTexture","symbol","circle","fill-extrusion","raster","background","Painter","_tileTextures","setup","numSublayers","maxUnderzooming","maxOverzooming","depthEpsilon","lineWidthRange","getParameter","ALIASED_LINE_WIDTH_RANGE","emptyProgramConfiguration","viewport","deleteTexture","deleteFramebuffer","fbo","depthRbo","deleteRenderbuffer","BLEND","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","_depthMask","extTextureFilterAnisotropic","extTextureFilterAnisotropicMax","MAX_TEXTURE_MAX_ANISOTROPY_EXT","COLOR_BUFFER_BIT","clearStencil","stencilMask","STENCIL_BUFFER_BIT","clearDepth","DEPTH_BUFFER_BIT","_renderTileClippingMasks","colorMask","stencilOp","KEEP","REPLACE","_tileClippingMaskIDs","stencilFunc","ALWAYS","EQUAL","render","glyphManager","getTransition","duration","sourceCaches","used","_order","_layers","has3DPass","isHidden","getVisibleCoordinates","_setup3DRenderbuffer","bindWithDepth","renderLayer","unbind","showOverdrawInspector","depthRange","currentLayer","_showOverdrawInspector","isTileClipped","showTileBoundaries","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","depthRboAttached","saveTileTexture","getTileTexture","CONSTANT_COLOR","blendColor","_createProgramCached","program","../data/program_configuration","../data/raster_bounds_array","../shaders","../source/source_cache","./draw_background","./draw_circle","./draw_debug","./draw_fill","./draw_fill_extrusion","./draw_line","./draw_raster","./draw_symbol","./frame_history","./program","./render_texture","80","u_scale_a","u_scale_b","u_tile_units_to_pixels","u_pixel_coord_upper","u_pixel_coord_lower","81","createProgram","toFixed","prelude","fragmentSource","vertexSource","createShader","FRAGMENT_SHADER","shaderSource","compileShader","attachShader","VERTEX_SHADER","bindAttribLocation","linkProgram","numAttributes","getProgramParameter","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","drawElements","UNSIGNED_SHORT","82","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","attachedRbo","framebufferRenderbuffer","DEPTH_ATTACHMENT","83","pixelStorei","UNPACK_ALIGNMENT","UNPACK_PREMULTIPLY_ALPHA_WEBGL","84","boundProgram","boundVertexBuffer","boundVertexBuffer2","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","freshBind","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","deleteVertexArrayOES","85","86","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","extrusionTexture","linePattern","lineSDF","symbolIcon","symbolSDF","re","programName","87","CanvasSource","animate","__proto__","getElementById","contextType","fire","context","_hasInvalidDimensions","play","_rerender","pause","cancel","_finishLoading","getCanvas","onAdd","onRemove","readCanvas","CanvasRenderingContext2D","canvasData","WebGLRenderingContext","readPixels","secondaryContext","createImageData","_prepareImage","painter","../util/window","./image_source","88","resolveURL","href","ResourceType","GeoJSONSource","dispatcher","setEventedParent","_data","_options","workerOptions","geojsonVtOptions","superclusterOptions","clusterMaxZoom","clusterRadius","dataType","_updateWorkerData","sourceDataType","setData","_transformRequest","Source","workerID","send","_loaded","loadTile","state","unloadVectorData","aborted","loadVectorData","redoWhenDone","redoPlacement","abortTile","unloadTile","broadcast","../util/ajax","../util/evented","89","loadGeoJSONTile","_geoJSONIndexes","vtpbf","byteOffset","byteLength","vectorTile","rawData","ajax","VectorTileWorkerSource","GeoJSONWorkerSource","loadGeoJSON","loadData","reloadTile","getJSON","parse","removeSource","./geojson_wrapper","./vector_tile_worker_source","geojson-rewind","geojson-vt","vt-pbf","90","_feature","_geojsonTileLayer","91","textureLoaded","Image","setCoordinates","centerCoord","getCoordinatesCenter","_boundsArray","HTMLVideoElement","ImageData","buckets","../geo/lng_lat","../render/vertex_array_object","./tile_coord","92","normalizeURL","normalizeSourceURL","pick","vector_layers","vectorLayers","vectorLayerIds","frame","../util/mapbox","93","94","sortTilesIn","mergeRenderedFeatureLayers","queryResults","wrappedTileID","rendered","tilesIn","wrapped","queryRenderedFeatures","getRenderableIds","getTileByID","querySourceFeatures","95","loadTileJSON","normalizeTileURL","TileBounds","RasterTileSource","scheme","tileBounds","hasTile","contains","Tile","_refreshExpiredTiles","setExpiryData","cacheControl","expires","LINEAR_MIPMAP_NEAREST","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","generateMipmap","abort","./load_tilejson","./tile_bounds","96","pluginRequested","pluginBlobURL","evented","registerForPluginAvailability","errorCallback","createBlobURL","clearRTLTextPlugin","getArrayBuffer","applyArabicShaping","processBidirectionalText","97","sourceTypes","vector","geojson","video","bindAll","getType","setType","../source/canvas_source","../source/geojson_source","../source/raster_tile_source","../source/vector_tile_source","../source/video_source","98","coordinateToTilePoint","compareKeyZoom","isRasterType","createSource","Cache","_sourceLoaded","_paused","reload","_sourceErrored","_source","_tiles","_cache","_unloadTile","_timers","_cacheTimers","_maxTileCacheSize","_isIdRenderable","resume","_shouldReloadOnResume","_loadTile","_abortTile","getIds","hasData","_coveredTiles","reset","_reloadTile","_tileLoaded","status","getTime","_setTileReloadTimer","getZoom","_findLoadedChildren","parent","has","getWithoutRemoving","updateCacheSize","setMaxSize","_updateRetainedTiles","fromID","fadeEndTime","_addTile","keysDifference","_removeTile","wasRequested","children","scaledTo","uses","getExpiryTimeout","_setCacheInvalidationTimer","remove","stopPlacementThrottler","clearTiles","../geo/coordinate","../util/lru_cache","./source","99","deserializeBucket","CollisionTile","CollisionBoxArray","Throttler","uniqueId","expirationTime","expiredRequestCount","placementThrottler","_immediateRedoPlacement","iconAtlasImage","glyphAtlasImage","reloadSymbolData","placementSource","invoke","uploaded","queryRadius","sourceLayer","parseCacheControl","stop","../data/bucket","../data/bucket/symbol_bucket","../data/feature_index","../render/texture","../symbol/collision_box","../symbol/collision_tile","../util/throttler","100","validateBounds","minX","minY","maxX","maxY","../geo/lng_lat_bounds","101","edge","x0","y0","dx","dy","scanSpans","scanTriangle","getQuadkey","@mapbox/whoots-js","102","VectorTileSource","reloadCallback","103","loadVectorTile","WorkerTile","actor","layerIndex","loading","removeTile","result","transferables","./worker_tile","104","VideoSource","urls","getVideo","loop","addEventListener","readyState","105","Actor","StyleLayerIndex","globalRTLTextPlugin","layerIndexes","workerSourceTypes","workerSources","registerWorkerSource","registerRTLTextPlugin","setLayers","getLayerIndex","updateLayers","removedIds","symbolOrder","getWorkerSource","loadWorkerSource","importScripts","loadRTLTextPlugin","../style/style_layer_index","../util/actor","./geojson_worker_source","./rtl_text_plugin","106","recalculateLayers","recalculate","serializeBuckets","symbolBuckets","familiesBySource","encode","visibility","mapObject","stacks","icons","../render/glyph_atlas","../render/image_atlas","107","deref","refProperties","derefLayers","./util/ref_properties","108","diffSources","operations","args","isEqual","addSource","diffLayerPropertyChanges","pluckId","indexById","diffLayers","removeLayer","addLayer","setLayoutProperty","setPaintProperty","setFilter","setLayerZoomRange","setLayerProperty","diffStyles","setStyle","setCenter","setZoom","setBearing","setPitch","sprite","setSprite","setGlyphs","transition","setTransition","warn","lodash.isequal","109","ValidationError","message","__line__","110","createFilter","compile","compileComparisonOp","compileLogicalOp","compileNegation","compileInOp","compileHasOp","compilePropertyReference","111","xyz2lab","t3","t2","t0","lab2xyz","t1","xyz2rgb","rgb2xyz","rgbToLab","Xn","Yn","Zn","labToRgb","rgbToHcl","rad2deg","hclToRgb","deg2rad","lab","forward","hcl","112","identityFunction","createFunction","isFunctionDefinition","stops","function","parseColor","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","evaluateIdentityFunction","colorSpace","colorSpaces","coalesce","findStopLessThanOrEqualTo","interpolate","../util/extend","../util/get_type","../util/interpolate","../util/parse_color","./color_spaces","113","getKey","groupByLayout","114","clamp_css_byte","clamp_css_float","parse_css_int","parseFloat","parse_css_float","css_hue_to_rgb","parseCSSColor","toLowerCase","kCSSColorTable","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","115","isObjectLike","arraySome","baseIsEqual","baseIsEqualDeep","arrayTag","objToString","argsTag","objectTag","isTypedArray","equalByTag","equalArrays","equalObjects","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","objectProto","lodash.isarray","lodash.istypedarray","lodash.keys","116","bindCallback","117","getNative","isNative","funcTag","reIsNative","fnToString","reIsHostCtor","118","isArguments","isArrayLikeObject","propertyIsEnumerable","isArrayLike","isLength","genTag","MAX_SAFE_INTEGER","119","nativeIsArray","120","lodash._baseisequal","lodash._bindcallback","121","typedArrayTags","122","getLength","isIndex","reIsUint","shimKeys","keysIn","nativeKeys","lodash._getnative","lodash.isarguments","123","./v8.json","124","$version","$root","required","metadata","period","units","source_tile","source_geojson","maximum","minimum","source_video","source_image","source_canvas","2d","webgl","experimental-webgl","webgl2","source-layer","paint.*","layout_background","visible","none","layout_fill","layout_circle","layout_fill-extrusion","layout_line","line-cap","zoom-function","butt","square","line-join","property-function","bevel","miter","line-miter-limit","requires","line-round-limit","layout_symbol","symbol-placement","symbol-spacing","symbol-avoid-edges","icon-allow-overlap","icon-ignore-placement","icon-optional","icon-rotation-alignment","auto","icon-size","icon-text-fit","both","icon-text-fit-padding","icon-image","tokens","icon-rotate","icon-padding","icon-keep-upright","icon-offset","icon-anchor","right","bottom","top-left","top-right","bottom-left","bottom-right","icon-pitch-alignment","text-pitch-alignment","text-rotation-alignment","text-field","text-font","text-size","text-max-width","text-line-height","text-letter-spacing","text-justify","text-anchor","text-max-angle","text-rotate","text-padding","text-keep-upright","text-transform","uppercase","lowercase","text-offset","text-allow-overlap","text-ignore-placement","text-optional","layout_raster","filter_operator","==","!=",">=","<=","in","!in","all","any","!has","geometry_type","LineString","Polygon","exponential","interval","categorical","rgb","function_stop","paint_fill","fill-antialias","fill-opacity","fill-color","fill-outline-color","fill-translate","fill-translate-anchor","fill-pattern","paint_fill-extrusion","fill-extrusion-opacity","fill-extrusion-color","fill-extrusion-translate","fill-extrusion-translate-anchor","fill-extrusion-pattern","fill-extrusion-height","fill-extrusion-base","paint_line","line-opacity","line-color","line-translate","line-translate-anchor","line-width","line-gap-width","line-offset","line-blur","line-dasharray","line-pattern","paint_circle","circle-radius","circle-color","circle-blur","circle-opacity","circle-translate","circle-translate-anchor","circle-pitch-scale","circle-pitch-alignment","circle-stroke-width","circle-stroke-color","circle-stroke-opacity","paint_symbol","icon-opacity","icon-color","icon-halo-color","icon-halo-width","icon-halo-blur","icon-translate","icon-translate-anchor","text-opacity","text-color","text-halo-color","text-halo-width","text-halo-blur","text-translate","text-translate-anchor","paint_raster","raster-opacity","raster-hue-rotate","raster-brightness-min","raster-brightness-max","raster-saturation","raster-contrast","raster-fade-duration","paint_background","background-color","background-pattern","background-opacity","delay","125","126","127","vec2","128","parseColorString","csscolorparser","129","130","valueOf","131","constants","enum","valueSpec","key","styleSpec","../error/validation_error","./validate_array","./validate_boolean","./validate_color","./validate_constants","./validate_enum","./validate_filter","./validate_function","./validate_layer","./validate_light","./validate_number","./validate_object","./validate_source","./validate_string","132","validate","arrayElementValidator","arrayIndex","./validate","133","134","135","136","unbundle","../util/unbundle_jsonlint","137","validateEnum","138","validateObject","validateArray","validateNumber","objectElementValidators","isFinite","139","validateString","140","validateFilter","validatePaintProperty","validateLayoutProperty","layerType","./validate_layout_property","./validate_paint_property","141","validateProperty","./validate_property","142","143","144","validateSpec","objectKey","145","146","exec","147","148","149","validateStyleMin","latestStyleSpec","validateGlyphsURL","validateConstants","sortErrors","wrapCleanErrors","paintProperty","layoutProperty","./reference/latest","./validate/validate","./validate/validate_constants","./validate/validate_filter","./validate/validate_glyphs_url","./validate/validate_layer","./validate/validate_layout_property","./validate/validate_light","./validate/validate_paint_property","./validate/validate_source","150","AnimationLoop","times","stopped","151","validateStyle","StyleDeclaration","StyleTransition","specifications","Light","_validate","_declarations","_transitions","_transitionOptions","getLight","getLightProperty","endsWith","getLightValue","calculate","sphericalToCartesian","_applyLightDeclaration","declaration","json","instant","loopID","endTime","updateLightTransitions","emitErrors","../style-spec/reference/latest","./style_declaration","./style_transition","./validate_style","152","normalizeGlyphsURL","parseGlyphPBF","Glyphs","./parse_glyph_pbf","153","normalizeSpriteURL","SpriteJSON","SpriteImage","154","readFontstacks","readFontstack","readGlyph","border","GLYPH_PBF_BORDER","155","getMaximumPaintValue","translateDistance","156","StyleLayer","loadSprite","mapbox","Dispatcher","getSourceType","setSourceType","QueryFeatures","MapboxGLFunction","getWorkerPool","diff","supportedDiffOperations","ignoredDiffOperations","isMapboxURL","zoomHistory","_resetUpdates","_rtlTextPluginCallback","stylesheet","updateClasses","_resolve","normalizeStyleURL","sourceId","_validateLayer","_updatedSources","_serializeLayers","_applyClasses","_updatedAllPaintProps","_updatedPaintProps","updatePaintTransitions","updatePaintTransition","_recalculate","_updateZoomHistory","lastIntegerZoom","lastIntegerZoomTime","lastZoom","_checkLoaded","_changed","_updatedLayers","_removedLayers","_updatedSymbolOrder","_updateWorkerLayers","_reloadSource","_clearSource","setState","isSourceLoaded","_updateLayer","moveLayer","deepEqual","getFilter","filterObject","_flattenRenderedFeatures","addSourceType","workerSourceURL","_remove","_updateSources","_redoPlacement","../render/glyph_manager","../render/image_manager","../render/line_atlas","../source/query_features","../source/rtl_text_plugin","../source/source","../style-spec/deref","../style-spec/diff","../util/dispatcher","../util/global_worker_pool","./animation_loop","./light","./load_sprite","./style_layer","157","stopZoomLevels","_functionInterpolationT","calculateInterpolationT","158","getDeclarationValue","_layoutSpecifications","_paintTransitions","_paintTransitionOptions","_paintDeclarations","_layoutDeclarations","_layoutFunctions","_updateLayoutValue","getPaintValueStopZoomLevels","getPaintInterpolationT","getLayoutInterpolationT","_applyPaintDeclaration","subclasses","./../style-spec/util/parse_color","./style_layer/circle_style_layer","./style_layer/fill_extrusion_style_layer","./style_layer/fill_style_layer","./style_layer/line_style_layer","./style_layer/symbol_style_layer","159","multiPolygonIntersectsBufferedMultiPoint","CircleStyleLayer","../../data/bucket/circle_bucket","../../util/intersection_tests","../query_utils","../style_layer","160","multiPolygonIntersectsMultiPolygon","FillExtrusionStyleLayer","../../data/bucket/fill_extrusion_bucket","161","FillStyleLayer","oldTransition","../../data/bucket/fill_bucket","162","getLineWidth","offsetLine","multiPolygonIntersectsBufferedMultiLine","LineStyleLayer","../../data/bucket/line_bucket","163","SymbolStyleLayer","../../data/bucket/symbol_bucket","164","_layerConfigs","../style-spec/group_by_layout","165","interpZoomTransitioned","fakeZoomHistory","startTime","zoomTransitioned","_calculateTargetValue","easeCubicInOut","166","../style-spec/validate_style.min","167","168","checkMaxAngle","angleDelta","shift","169","170","StructType","anchorPointX","anchorPointY","171","_addLineCollisionBoxes","172","intersectionTests","ignoredGrid","reverseRotationMatrix","tempCollisionBox","edges","bbox0","bbox1","bbox2","bbox3","offsetX","offsetY","unadjustedMaxScale","getPlacementScale","polygonIntersectsPolygon","../util/intersection_tests","173","resample","../symbol/anchor","./check_max_angle","174","175","signedDistanceFromCamera","anchorX","anchorY","placementZoom","evaluateSizeForFeature","placeGlyphsAlongLine","notEnoughRoom","needsFlipping","hideGlyphs","numGlyphs","lineOffsetX","lineOffsetY","glyphStartIndex","lineStartIndex","lineLength","placeGlyphAlongLine","projectTruncatedLineSegment","offscreenPoint","./symbol_size","176","positionedGlyphs","../style/parse_glyph_pbf","177","breakLines","substring","trim","determineLineBreaks","shapeLines","determineAverageLineWidth","calculateBadness","calculatePenalty","evaluateBreak","badness","priorBreak","leastBadBreaks","whitespace","breakable","charAllowsIdeographicBreaking","getAnchorAlignment","horizontalAlign","verticalAlign","charHasUprightVerticalOrientation","justifyLine","align","../util/script_detection","../util/verticalize_punctuation","178","lowerSize","upperSize","179","toLocaleUpperCase","toLocaleLowerCase","180","DOM","handlers","scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","mousePos","isActive","toElement","target","parentNode","touches","preventDefault","lngLat","originalEvent","touchPos","lngLats","getCanvasContainer","interactive","../util/dom","./handler/box_zoom","./handler/dblclick_zoom","./handler/drag_pan","./handler/drag_rotate","./handler/keyboard","./handler/scroll_zoom","./handler/touch_zoom_rotate","181","Camera","moving","_bearingSnap","bearingSnap","jumpTo","panBy","panTo","easeTo","zoomIn","zoomOut","getBearing","rotateTo","resetNorth","snapToNorth","getPitch","fitBounds","linear","flyTo","easing","ease","smoothEasing","_smoothOutEasing","_normalizeBearing","_normalizeCenter","around","pitching","_prepareEase","noMoveStart","_onEaseEnd","_ease","_fireMoveEvents","delayEndEvents","_easeToEnd","speed","curve","screenSpeed","isEasing","_abortFn","isMoving","_finishEase","_finishFn","timed","_prevEase","start","bezier","182","getDefaultPosition","compact","_map","_container","classList","_updateAttributions","_updateEditLink","_updateData","_updateCompact","_editLink","querySelector","styleOwner","styleId","_hash","getHashString","owner","attribution","innerHTML","offsetWidth","../../util/config","../../util/dom","183","_fullscreen","_fullscreenchange","_className","_mapContainer","getContainer","_checkFullscreenSupport","_setupUI","display","removeEventListener","_changeIcon","fullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","setAttribute","_onClickFullscreen","_isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggle","exitFullscreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","../../util/window","184","checkGeolocationSupport","supportsGeolocation","permissions","then","geolocation","defaultOptions","positionOptions","enableHighAccuracy","timeout","fitBoundsOptions","trackUserLocation","showUserLocation","className","_geolocationWatchID","clearWatch","_userLocationDotMarker","_onSuccess","_lastKnownPosition","_watchState","_geolocateButton","_updateMarker","_updateCamera","_dotElement","_finish","longitude","latitude","accuracy","geolocateSource","setLngLat","addTo","_onError","_clearWatch","_timeoutId","_onClickGeolocate","watchPosition","getCurrentPosition","../../geo/lng_lat","../../util/evented","../marker","185","LogoControl","appendChild","_updateLogo","_logoRequired","mapbox_logo","186","DragRotateHandler","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassArrow","_rotateCompassArrow","_handler","button","element","pitchWithRotate","../handler/drag_rotate","187","updateScale","maxWidth","clientHeight","getDistance","setScale","getRoundNum","acos","_onMove","188","189","BoxZoomHandler","_el","isEnabled","_enabled","_active","_onMouseDown","shiftKey","_onMouseMove","_onKeyDown","_onMouseUp","disableDrag","_startPos","_box","_fireEvent","setTransform","boxZoomBounds","keyCode","enableDrag","../../geo/lng_lat_bounds","190","DoubleClickZoomHandler","_onDblClick","191","inertiaEasing","DragPanHandler","_onDown","_ignoreEvent","_onTouchEnd","_pos","_inertia","_drainInertiaBuffer","_onUp","ctrlKey","192","_button","_pitchWithRotate","InstallTrigger","platform","capture","193","easeOut","KeyboardHandler","altKey","metaKey","194","ua","firefox","safari","ScrollZoomHandler","_onWheel","_aroundCenter","deltaY","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","wheelDeltaY","_time","_type","_lastValue","_timeout","_onTimeout","../../util/browser","195","TouchZoomRotateHandler","_onStart","disableRotation","_rotationDisabled","enableRotation","_startVec","_startScale","_startBearing","_gestureIntent","_onEnd","196","Hash","_onHashChange","_updateHash","location","hash","history","replaceState","197","removeChild","HTMLImageElement","bindHandlers","attributionControl","preserveDrawingBuffer","trackResize","refreshExpiredTiles","maxTileCacheSize","transformRequest","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_trackResize","container","maxBounds","setMaxBounds","_setupContainer","_setupPainter","_update","_onWindowOnline","_onWindowResize","_classes","classes","setClasses","addControl","logoPosition","_onData","_onDataLoading","repaint","_controlPositions","insertBefore","firstChild","removeControl","addClass","_classOptions","removeClass","hasClass","getClasses","_containerDimensions","_resizeCanvas","getBounds","getMaxBounds","setMinZoom","getMinZoom","setMaxZoom","getMaxZoom","listener","delegates","mousemove","mouseout","_delegatedListeners","_makeQueryGeometry","getStyle","isStyleLoaded","areTilesLoaded","loadImage","_canvasContainer","_canvas","offsetHeight","_contextLost","_contextRestored","_controlContainer","_frameId","cancelFrame","_styleDirty","_sourcesDirty","_render","_repaint","loseContext","_showTileBoundaries","_showCollisionBoxes","_vertices","../geo/transform","../render/painter","../style/animation_loop","../style/style","./bind_handlers","./camera","./control/attribution_control","./control/logo_control","./events","./hash","198","smartWrap","_offset","_element","_popup","_onMapClick","getLngLat","_lngLat","getElement","setPopup","togglePopup","getPopup","isOpen","../util/smart_wrap","199","normalizeOffset","closeButton","closeOnClick","_onClickClose","_content","setText","setDOMContent","createTextNode","setHTML","createDocumentFragment","_createContent","_closeButton","_tip","200","mapId","callbacks","callbackID","receive","postMessage","targetMapId","sourceMapId","./util","201","makeRequest","XMLHttpRequest","open","headers","setRequestHeader","withCredentials","credentials","sameOrigin","protocol","host","Unknown","AJAXError","onerror","statusText","onload","response","responseType","getResponseHeader","revokeObjectURL","src","onloadstart","crossOrigin","./window","202","performance","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","msCancelAnimationFrame","drawImage","supportsWebp","webpImgTest","203","WebWorkify","workerURL","../../source/worker","../window","webworkify","204","205","compareAreas","quickselect","calculateSignedArea","206","API_URL","REQUIRE_ACCESS_TOKEN","207","_stringToNumber","_numberToString","208","workerPool","actors","currentActor","acquire","release","./actor","209","testProp","docStyle","userSelect","documentElement","selectProp","transformProp","suppressClick","stopPropagation","getBoundingClientRect","clientX","clientLeft","clientY","clientTop","changedTouches","210","_addEventListener","_removeEventListener","_listeners","_oneTimeListeners","listens","_eventedParent","_eventedParentData","211","compareMax","Cell","pointToPolygonDist","SQRT2","distToSegmentSquared","getCentroidCell","Queue","./intersection_tests","tinyqueue","212","globalWorkerPool","WorkerPool","./worker_pool","213","createImage","RangeError","resizeImage","copyImage","214","polygonContainsPoint","lineIntersectsLine","pointIntersectsBufferedLine","multiPolygonContainsPoint","lineIntersectsBufferedLine","lineSegmentIntersectsLineSegment","isCounterClockwise","215","unicodeBlockLookup","Latin-1 Supplement","Arabic","Arabic Supplement","Arabic Extended-A","Hangul Jamo","Unified Canadian Aboriginal Syllabics","Unified Canadian Aboriginal Syllabics Extended","General Punctuation","Letterlike Symbols","Number Forms","Miscellaneous Technical","Control Pictures","Optical Character Recognition","Enclosed Alphanumerics","Geometric Shapes","Miscellaneous Symbols","Miscellaneous Symbols and Arrows","CJK Radicals Supplement","Kangxi Radicals","Ideographic Description Characters","CJK Symbols and Punctuation","Hiragana","Katakana","Bopomofo","Hangul Compatibility Jamo","Kanbun","Bopomofo Extended","CJK Strokes","Katakana Phonetic Extensions","Enclosed CJK Letters and Months","CJK Compatibility","CJK Unified Ideographs Extension A","Yijing Hexagram Symbols","CJK Unified Ideographs","Yi Syllables","Yi Radicals","Hangul Jamo Extended-A","Hangul Syllables","Hangul Jamo Extended-B","Private Use Area","CJK Compatibility Ideographs","Arabic Presentation Forms-A","Vertical Forms","CJK Compatibility Forms","Small Form Variants","Arabic Presentation Forms-B","Halfwidth and Fullwidth Forms","216","LRUCache","order","217","makeAPIURL","parseUrl","authority","path","formatUrl","help","replaceTempAccessToken","urlRe","imageExtensionRe","./browser","./config","218","allowsIdeographicBreaking","charAllowsLetterSpacing","charHasNeutralVerticalOrientation","charHasRotatedVerticalOrientation","./is_char_in_unicode_block","219","220","structArrayTypeCache","sizeOf","Struct","createAccessors","StructArray","createEmplaceBack","_usedTypes","viewTypes","BYTES_PER_ELEMENT","getArrayViewName","createMemberComponentString","Int8Array","Uint16Array","Uint32Array","_structArray","_pos1","_pos2","_pos4","_pos8","isTransferred","capacity","_refreshViews","_trim","uint8","221","frequency","throttledFunction","lastInvocation","pendingInvocation","222","223","warnOnceHistory","isClosedPolygon","@mapbox/unitbezier","224","Feature","_vectorTileFeature","_z","_x","_y","toJSON","225","¢","£","¥","¦","¬","¯","–","—","‘","’","“","”","…","‧","₩","、","。","〈","〉","《","》","「","」","『","』","【","】","〔","〕","〖","〗","!","(",")",",","-",".",":",";","<",">","?","[","]","_","{","|","}","⦅","⦆","。","「","」","./script_detection","226","WebWorker","active","workers","terminate","../","./web_worker","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_mapbox_gl__","__WEBPACK_IMPORTED_MODULE_0_mapbox_gl___default","__WEBPACK_IMPORTED_MODULE_1_vue__","__WEBPACK_IMPORTED_MODULE_2__Geshem_vue__","el","setImmediate","isUndef","isDef","isTrue","isFalse","obj","isPlainObject","_toString","isValidArrayIndex","val","toNumber","makeMap","str","expectsLowerCase","list","arr","item","hasOwn","cached","fn","boundFn","_length","ret","_from","toObject","res","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","called","isReserved","def","parsePath","bailRE","Ctor","pushTarget","_target","Dep","targetStack","popTarget","createTextVNode","VNode","cloneVNode","vnode","deep","cloned","tag","elm","componentOptions","asyncFactory","ns","isStatic","isComment","isCloned","cloneVNodes","vnodes","len","protoAugment","copyAugment","observe","asRootData","ob","__ob__","Observer","observerState","shouldConvert","isServerRendering","_isVue","vmCount","defineReactive","customSetter","shallow","dep","setter","childOb","depend","dependArray","newVal","notify","del","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","mergeAssets","normalizeProps","props","camelize","normalizeInject","inject","normalized","normalizeDirectives","dirs","directives","mergeOptions","child","mergeField","strat","strats","defaultStrat","extendsFrom","extends","mixins","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","capitalize","validateProp","propOptions","propsData","prop","absent","isType","hyphenate","getPropDefaultValue","prevShouldConvert","$options","_props","handleError","err","info","cur","$parent","hooks","errorCaptured","globalHandleError","errorHandler","logError","inBrowser","flushCallbacks","pending","copies","withMacroTask","_withTask","useMacroTask","cb","macroTimerFunc","microTimerFunc","Promise","resolve","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","old","event","normalizeEvent","passive","mergeVNodeHook","hookKey","hook","wrappedHook","oldHook","merged","extractPropsFromVNodeData","attrs","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","node","nestedIndex","lastIndex","last","_isVList","ensureCtor","comp","hasSymbol","Symbol","toStringTag","createAsyncPlaceholder","factory","createEmptyVNode","asyncMeta","resolveAsyncComponent","baseCtor","errorComp","resolved","loadingComp","contexts","sync","forceRender","$forceUpdate","reject","reason","component","isAsyncPlaceholder","getFirstComponentChild","initEvents","_events","_hasHookEvent","_parentListeners","updateComponentListeners","$once","$on","remove$1","$off","oldListeners","resolveSlots","slots","defaultSlot","slot","functionalContext","isWhitespace","resolveScopedSlots","initLifecycle","abstract","$children","$refs","_watcher","_inactive","_directInactive","_isMounted","_isDestroyed","_isBeingDestroyed","mountComponent","hydrating","$el","callHook","updateComponent","Watcher","$vnode","updateChildComponent","parentVnode","renderChildren","hasChildren","_renderChildren","scopedSlots","$scopedSlots","emptyObject","_parentVnode","_vnode","$attrs","$listeners","propKeys","_propKeys","$slots","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","$emit","resetSchedulerState","activatedChildren","waiting","flushing","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","devtools","queueActivatedComponent","queueWatcher","traverse","seenObjects","_traverse","isA","depId","proxy","sourceKey","sharedPropertyDefinition","initState","_watchers","opts","initProps","methods","initMethods","initData","computed","initComputed","watch","nativeWatch","initWatch","propsOptions","isRoot","getData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","shouldCache","createComputedGetter","evaluate","handler","createWatcher","keyOrFn","$watch","initProvide","provide","_provided","initInjections","resolveInject","Reflect","ownKeys","provideKey","provideDefault","renderList","renderSlot","fallback","bindObject","scopedSlotFn","slotNodes","resolveFilter","checkKeyCodes","eventKeyCode","builtInAlias","eventKeyName","keyCodes","bindObjectProps","asProp","isSync","isReservedAttribute","mustUseProp","domProps","$event","renderStatic","isInFor","renderFns","staticRenderFns","tree","_renderProxy","markStatic","markOnce","isOnce","markStaticNode","bindObjectListeners","existing","ours","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","FunctionalRenderContext","injections","contextVm","isCompiled","_compiled","needNormalization","_scopeId","_c","functionalScopeId","createFunctionalComponent","mergeProps","renderContext","functionalOptions","createComponent","_base","cid","resolveConstructorOptions","model","transformModel","functional","nativeOn","mergeHooks","createComponentInstanceForVnode","parentElm","refElm","vnodeComponentOptions","_isComponent","_componentTag","_parentElm","_refElm","inlineTemplate","hooksToMerge","fromParent","componentVNodeHooks","mergeHook$1","one","two","normalizationType","alwaysNormalize","ALWAYS_NORMALIZE","_createElement","is","SIMPLE_NORMALIZE","getTagNamespace","isReservedTag","parsePlatformTagName","applyNS","force","initRender","$createElement","parentData","initInternalComponent","super","superOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","extended","sealed","sealedOptions","dedupe","Vue$3","_init","initUse","Vue","use","plugin","installedPlugins","_installedPlugins","unshift","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","ASSET_TYPES","Comp","initAssetRegisters","definition","getComponentName","matches","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","componentInstance","$destroy","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","class","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","isSVG","isUnknownElement","unknownElementCache","HTMLUnknownElement","HTMLElement","selected","createElement$1","tagName","multiple","createElementNS","namespace","namespaceMap","createComment","newNode","referenceNode","nextSibling","setTextContent","textContent","registerRef","isRemoval","refs","refInFor","sameVnode","sameInputType","typeA","typeB","isTextInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldVnode","oldDir","dir","isCreate","emptyNode","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldValue","callHook$1","componentUpdated","inserted","callInsert","modifiers","emptyModifiers","getRawDirName","rawName","updateAttrs","inheritAttrs","oldAttrs","setAttr","isIE9","isEdge","isXlink","removeAttributeNS","xlinkNS","getXlinkProp","isEnumeratedAttr","removeAttribute","isBooleanAttr","isFalsyAttrValue","setAttributeNS","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","parseFilters","pushFilter","filters","lastFilterIndex","expression","inSingle","inDouble","inTemplateString","inRegex","curly","paren","validDivisionCharRE","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","addAttr","addDirective","arg","addHandler","important","events","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","attrsMap","attrsList","genComponentModel","valueExpression","assignment","genAssignmentCode","parseModel","index$1","expressionPos","expressionEndPos","eof","chr","isStringStart","parseString","parseBracket","inBracket","stringQuote","_warn","warn$1","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","selectedVal","lazy","needCompositionGuard","RANGE_TOKEN","normalizeEvents","isIE","CHECKBOX_RADIO_TOKEN","change","createOnceHandler","target$1","onceHandler","remove$2","add$1","once$$1","supportsPassive","updateDOMListeners","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","isDirty","isInputChanged","notInFocus","activeElement","_vModifiers","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","parseStyleText","checkChild","styleData","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","setProp","getAttribute","tar","resolveTransition","css","autoCssTransition","nextFrame","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","TRANSITION","transitionEndEvent","animationEndEvent","ended","end","onEnd","getComputedStyle","transitionDelays","transitionProp","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationProp","animationDurations","animationTimeout","ANIMATION","hasTransform","transformRE","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","_enterCb","nodeType","enterClass","enterToClass","enterActiveClass","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","activeInstance","transitionNode","isAppear","isRootInsert","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","performLeave","beforeLeave","leaveClass","leaveActiveClass","leaveToClass","explicitLeaveDuration","afterLeave","leaveCancelled","delayLeave","invokerFns","_enter","setSelected","actuallySetSelected","isMultiple","option","getValue","selectedIndex","hasNoMatchingOption","onCompositionStart","onCompositionEnd","trigger","createEvent","initEvent","dispatchEvent","locateNode","getRealChild","compOptions","extractTransitionData","key$1","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","moved","WebkitTransform","transitionDuration","parseText","delimiters","tagRE","buildRegex","defaultTagRE","transformNode","classBinding","genData","transformNode$1","styleBinding","genData$1","decodeAttr","shouldDecodeNewlines","encodedAttrWithNewLines","encodedAttr","decodingMap","parseHTML","html","parseEndTag","lowerCasedTagName","lowerCasedTag","lastTag","expectHTML","isUnaryTag$$1","isUnaryTag","no","canBeLeftOpenTag$$1","canBeLeftOpenTag","isPlainTextElement","endTagLength","stackedTag","reStackedTag","reCache","rest$1","endTag","shouldIgnoreFirstNewline","chars","textEnd","comment","commentEnd","shouldKeepComment","conditionalComment","conditionalEnd","doctypeMatch","doctype","endTagMatch","curIndex","startTagMatch","startTagOpen","attr","startTagClose","attribute","unarySlash","isNonPhrasingTag","unary","IS_REGEX_CAPTURING_BROKEN","rest","createASTElement","makeAttrsMap","template","endPre","pre","inVPre","platformIsPreTag","inPre","warn$2","isPreTag","platformMustUseProp","platformGetTagNamespace","transforms","preTransforms","postTransforms","root","currentParent","preserveWhitespace","comments","guardIESVGBug","isForbiddenTag","forbidden","processPre","processRawAttrs","processed","processFor","processIf","processOnce","processElement","if","elseif","else","addIfCondition","block","processIfConditions","slotScope","plain","slotTarget","i$1","lastNode","isTextTag","decodeHTMLCached","processKey","processRef","processSlot","processComponent","processAttrs","checkInFor","inMatch","forAliasRE","for","alias","iteratorMatch","forIteratorRE","iterator1","iterator2","findPrevElement","condition","ifConditions","slotName","isProp","dirRE","hasBindings","parseModifiers","modifierRE","bindRE","camel","onRE","argMatch","argRE","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","branch0","cloneASTElement","addRawAttr","branch1","branch2","optimize","isStaticKey","genStaticKeysCached","staticKeys","isPlatformReservedTag","markStatic$1","markStaticRoots","genStaticKeys$1","static","l$1","staticInFor","staticRoot","isBuiltInTag","isDirectChildOfTemplateFor","genHandlers","genHandler","isMethodPath","simplePathRE","isFunctionExpression","fnExpRE","genModifierCode","modifierCode","genGuard","keyModifier","genKeyFilter","genFilterCode","keyVal","wrapListeners","bind$1","wrapData","generate","ast","CodegenState","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData$2","genChildren","onceId","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","dataGenFns","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","genScopedSlot","genForScopedSlot","checkSkip","altGenElement","altGenNode","el$1","getNormalizationType","maybeComponent","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","bind$$1","componentName","errors","createCompileToFunctionFn","compiled","fnGenErrors","getOuterHTML","outerHTML","cloneNode","camelizeRE","hyphenateRE","SSR_ATTR","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","warnHandler","ignoredElements","isReservedAttr","_lifecycleHooks","hasProto","UA","isAndroid","isIOS","_isServer","_Set","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","Set","subs","addSub","removeSub","addDep","raw","arrayProto","arrayMethods","method","original","observeArray","arrayKeys","walk","items","MessageChannel","channel","port","port2","port1","onmessage","uid$2","expOrFn","user","deps","newDeps","depIds","newDepIds","cleanupDeps","this$1","tmp","teardown","init","$mount","keepAlive","mountedNode","prepatch","uid$1","_uid","_self","dataDef","propsDef","$set","$delete","immediate","hookRE","cbs","prevEl","prevVnode","prevActiveInstance","__patch__","__vue__","$nextTick","_rendered","patternTypes","KeepAlive","include","exclude","created","destroyed","builtInComponents","configDef","delete","ssrContext","emptyStyle","acceptValue","svg","math","isHTMLTag","nodeOps","baseModules","klass","cssText","listDelimiter","propertyDelimiter","cssVarRE","importantRE","setProperty","normalizedName","normalize","vendorNames","capName","hasTransition","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","activate","platformModules","patch","backend","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","nested","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","hasChildNodes","childrenMatch","isRenderedModule","isInitialPatch","isRealElement","hasAttribute","oldElm","parentElm$1","patchable","i$2","vmodel","model$1","_vOptions","prevOptions","curOptions","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","mode","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","prevChildren","rawChildren","transitionData","kept","removed","c$1","beforeUpdate","updated","hasMove","_reflow","body","propertyName","_hasMove","platformComponents","decoder","content","encoded","regexEscapeRE","close","klass$1","style$1","he","ncname","qnameCapture","&lt;","&gt;","&quot;","&amp;","&#10;","isIgnoreNewlineTag","model$2","modules$1","directives$1","baseOptions","esc","tab","space","up","down","prevent","ctrl","alt","meta","baseDirectives","cloak","createCompiler","baseCompile","finalOptions","tips","tip","compileToFunctions","idToTemplate","mount","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","clearImmediate","task","tasksByHandle","nextHandle","registerImmediate","handle","runIfPresent","currentlyRunningATask","doc","attachTo","postMessageIsAsynchronous","oldOnMessage","messagePrefix","onGlobalMessage","attachEvent","script","onreadystatechange","marker","injectStyle","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Geshem_vue__","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7d220ade_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Geshem_vue__","normalizeComponent","__vue_styles__","Component","locals","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sourceRoot","sourceMap","unescape","encodeURIComponent","mediaQuery","alreadyImportedModules","addStylesToDom","domStyle","stylesInDom","parts","addStyle","createStyleElement","styleElement","head","isProduction","isOldIE","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","applyToTag","newObj","media","styleSheet","replaceText","cssNode","hasDocument","DEBUG","listToStyles","getElementsByTagName","_isProduction","newList","mayRemove","textStore","replacement","newStyles","part","rawScriptExports","compiledTemplate","functionalTemplate","injectStyles","scopeId","moduleIdentifier","esModule","scriptExports","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","_defineProperty","__WEBPACK_IMPORTED_MODULE_0_vue_slider_component__","__WEBPACK_IMPORTED_MODULE_0_vue_slider_component___default","__WEBPACK_IMPORTED_MODULE_1_mapbox_gl__","__WEBPACK_IMPORTED_MODULE_1_mapbox_gl___default","vue-slider","_ref","imgs","slider","rasterCoords","280","curImg","addRadarSource","addRadarLayer","removeRadarLayer","flag","currentValue","currentSlider","dotWidthVal","dotWidth","dotSize","dotHeightVal","dotHeight","disabled","piecewise","tooltip","eventType","direction","clickable","realTime","piecewiseLabel","sliderStyle","tooltipDir","formatter","piecewiseStyle","piecewiseActiveStyle","processStyle","bgStyle","tooltipStyle","labelStyle","labelActiveStyle","flowDirection","tooltipDirection","isRange","tooltipStatus","tooltipClass","isDisabled","disabledClass","dot0","dot1","dot","currentIndex","spacing","indexRange","gap","limit","valueLimit","wrapStyles","sliderStyles","tooltipStyles","elemStyles","dotStyles","piecewiseDotStyle","piecewiseDotWrap","label","formatting","inRange","setValue","limitValue","refresh","bindEvents","moveEnd","unbindEvents","getPos","getStaticData","pageY","wrapClick","setValueOnPos","moveStart","targetTouches","isDiff","syncValue","setPosition","setCurrentValue","setIndex","setTransitionTime","msTransform","WebkitTransitionDuration","getIndex","elem","pageYOffset","scrollTop","mounted","beforeDestroy","vue-slider-has-label","click","aria-hidden","mousedown","touchstart","first","__r","_vm","_h","dot-size","$$v","esExports"],"mappings":"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","file":"build.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/static/js/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var require;var require;(function(f){if(true){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.mapboxgl = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.glMatrix=n()}(this,function(){\"use strict\";function t(t,n,r){var e=n[0],a=n[1],o=n[2];return t[0]=e*r[0]+a*r[3]+o*r[6],t[1]=e*r[1]+a*r[4]+o*r[7],t[2]=e*r[2]+a*r[5]+o*r[8],t}function n(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3];return t[0]=r[0]*e+r[4]*a+r[8]*o+r[12]*u,t[1]=r[1]*e+r[5]*a+r[9]*o+r[13]*u,t[2]=r[2]*e+r[6]*a+r[10]*o+r[14]*u,t[3]=r[3]*e+r[7]*a+r[11]*o+r[15]*u,t}function r(){var t=new Float32Array(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function e(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=e*c+o*i,t[1]=a*c+u*i,t[2]=e*-i+o*c,t[3]=a*-i+u*c,t}function a(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=r[0],c=r[1];return t[0]=e*i,t[1]=a*i,t[2]=o*c,t[3]=u*c,t}function o(){var t=new Float32Array(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function u(t,n){var r=Math.sin(n),e=Math.cos(n);return t[0]=e,t[1]=r,t[2]=0,t[3]=-r,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function i(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function f(t,n){var r=n[0],e=n[1],a=n[2],o=n[3],u=n[4],i=n[5],c=n[6],f=n[7],v=n[8],s=n[9],l=n[10],M=n[11],h=n[12],m=n[13],y=n[14],d=n[15],p=r*i-e*u,w=r*c-a*u,A=r*f-o*u,F=e*c-a*i,x=e*f-o*i,b=a*f-o*c,g=v*m-s*h,j=v*y-l*h,R=v*d-M*h,X=s*y-l*m,Z=s*d-M*m,k=l*d-M*y,q=p*k-w*Z+A*X+F*R-x*j+b*g;return q?(q=1/q,t[0]=(i*k-c*Z+f*X)*q,t[1]=(a*Z-e*k-o*X)*q,t[2]=(m*b-y*x+d*F)*q,t[3]=(l*x-s*b-M*F)*q,t[4]=(c*R-u*k-f*j)*q,t[5]=(r*k-a*R+o*j)*q,t[6]=(y*A-h*b-d*w)*q,t[7]=(v*b-l*A+M*w)*q,t[8]=(u*Z-i*R+f*g)*q,t[9]=(e*R-r*Z-o*g)*q,t[10]=(h*x-m*A+d*p)*q,t[11]=(s*A-v*x-M*p)*q,t[12]=(i*j-u*X-c*g)*q,t[13]=(r*X-e*j+a*g)*q,t[14]=(m*w-h*F-y*p)*q,t[15]=(v*F-s*w+l*p)*q,t):null}function v(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],m=n[12],y=n[13],d=n[14],p=n[15],w=r[0],A=r[1],F=r[2],x=r[3];return t[0]=w*e+A*i+F*s+x*m,t[1]=w*a+A*c+F*l+x*y,t[2]=w*o+A*f+F*M+x*d,t[3]=w*u+A*v+F*h+x*p,w=r[4],A=r[5],F=r[6],x=r[7],t[4]=w*e+A*i+F*s+x*m,t[5]=w*a+A*c+F*l+x*y,t[6]=w*o+A*f+F*M+x*d,t[7]=w*u+A*v+F*h+x*p,w=r[8],A=r[9],F=r[10],x=r[11],t[8]=w*e+A*i+F*s+x*m,t[9]=w*a+A*c+F*l+x*y,t[10]=w*o+A*f+F*M+x*d,t[11]=w*u+A*v+F*h+x*p,w=r[12],A=r[13],F=r[14],x=r[15],t[12]=w*e+A*i+F*s+x*m,t[13]=w*a+A*c+F*l+x*y,t[14]=w*o+A*f+F*M+x*d,t[15]=w*u+A*v+F*h+x*p,t}function s(t,n,r){var e,a,o,u,i,c,f,v,s,l,M,h,m=r[0],y=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*y+n[8]*d+n[12],t[13]=n[1]*m+n[5]*y+n[9]*d+n[13],t[14]=n[2]*m+n[6]*y+n[10]*d+n[14],t[15]=n[3]*m+n[7]*y+n[11]*d+n[15]):(e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],t[0]=e,t[1]=a,t[2]=o,t[3]=u,t[4]=i,t[5]=c,t[6]=f,t[7]=v,t[8]=s,t[9]=l,t[10]=M,t[11]=h,t[12]=e*m+i*y+s*d+n[12],t[13]=a*m+c*y+l*d+n[13],t[14]=o*m+f*y+M*d+n[14],t[15]=u*m+v*y+h*d+n[15]),t}function l(t,n,r){var e=r[0],a=r[1],o=r[2];return t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t[3]=n[3]*e,t[4]=n[4]*a,t[5]=n[5]*a,t[6]=n[6]*a,t[7]=n[7]*a,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=n[11]*o,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function M(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[4],u=n[5],i=n[6],c=n[7],f=n[8],v=n[9],s=n[10],l=n[11];return n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=o*a+f*e,t[5]=u*a+v*e,t[6]=i*a+s*e,t[7]=c*a+l*e,t[8]=f*a-o*e,t[9]=v*a-u*e,t[10]=s*a-i*e,t[11]=l*a-c*e,t}function h(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[0],u=n[1],i=n[2],c=n[3],f=n[4],v=n[5],s=n[6],l=n[7];return n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=o*a+f*e,t[1]=u*a+v*e,t[2]=i*a+s*e,t[3]=c*a+l*e,t[4]=f*a-o*e,t[5]=v*a-u*e,t[6]=s*a-i*e,t[7]=l*a-c*e,t}function m(t,n,r,e,a){var o=1/Math.tan(n/2),u=1/(e-a);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(a+e)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*a*e*u,t[15]=0,t}function y(t,n,r,e,a,o,u){var i=1/(n-r),c=1/(e-a),f=1/(o-u);return t[0]=-2*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(n+r)*i,t[13]=(a+e)*c,t[14]=(u+o)*f,t[15]=1,t}(function(){var t=new Float32Array(3);t[0]=0,t[1]=0,t[2]=0})(),function(){var t=new Float32Array(4);t[0]=0,t[1]=0,t[2]=0,t[3]=0}();return{vec3:{transformMat3:t},vec4:{transformMat4:n},mat2:{create:r,rotate:e,scale:a},mat3:{create:o,fromRotation:u},mat4:{create:i,identity:c,translate:s,scale:l,multiply:v,perspective:m,rotateX:M,rotateZ:h,invert:f,ortho:y}}});\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";function Point(t,n){this.x=t,this.y=n}module.exports=Point,Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,n){return this.clone()._rotateAround(t,n)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var n=t.x-this.x,i=t.y-this.y;return n*n+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,n){return Math.atan2(this.x*n-this.y*t,this.x*t+this.y*n)},_matMult:function(t){var n=t[0]*this.x+t[1]*this.y,i=t[2]*this.x+t[3]*this.y;return this.x=n,this.y=i,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var n=Math.cos(t),i=Math.sin(t),s=n*this.x-i*this.y,r=i*this.x+n*this.y;return this.x=s,this.y=r,this},_rotateAround:function(t,n){var i=Math.cos(t),s=Math.sin(t),r=n.x+i*(this.x-n.x)-s*(this.y-n.y),h=n.y+s*(this.x-n.x)+i*(this.y-n.y);return this.x=r,this.y=h,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Point.convert=function(t){return t instanceof Point?t:Array.isArray(t)?new Point(t[0],t[1]):t};\n},{}],3:[function(_dereq_,module,exports){\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.ShelfPack=e()}(this,function(){function t(t,e,i){i=i||{},this.w=t||64,this.h=e||64,this.autoResize=!!i.autoResize,this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0}function e(t,e,i){this.x=0,this.y=t,this.w=this.free=e,this.h=i}function i(t,e,i,s,h,n,r){this.id=t,this.x=e,this.y=i,this.w=s,this.h=h,this.maxw=n||s,this.maxh=r||h,this.refcount=0}return t.prototype.pack=function(t,e){t=[].concat(t),e=e||{};for(var i,s,h,n,r=[],f=0;f<t.length;f++)if(i=t[f].w||t[f].width,s=t[f].h||t[f].height,h=t[f].id,i&&s){if(!(n=this.packOne(i,s,h)))continue;e.inPlace&&(t[f].x=n.x,t[f].y=n.y,t[f].id=n.id),r.push(n)}return this.shrink(),r},t.prototype.packOne=function(t,i,s){var h,n,r,f,o={freebin:-1,shelf:-1,waste:1/0},a=0;if(\"string\"==typeof s||\"number\"==typeof s){if(h=this.getBin(s))return this.ref(h),h;\"number\"==typeof s&&(this.maxId=Math.max(s,this.maxId))}else s=++this.maxId;for(f=0;f<this.freebins.length;f++){if(h=this.freebins[f],i===h.maxh&&t===h.maxw)return this.allocFreebin(f,t,i,s);i>h.maxh||t>h.maxw||i<=h.maxh&&t<=h.maxw&&(r=h.maxw*h.maxh-t*i)<o.waste&&(o.waste=r,o.freebin=f)}for(f=0;f<this.shelves.length;f++)if(n=this.shelves[f],a+=n.h,!(t>n.free)){if(i===n.h)return this.allocShelf(f,t,i,s);i>n.h||i<n.h&&(r=(n.h-i)*t)<o.waste&&(o.freebin=-1,o.waste=r,o.shelf=f)}if(-1!==o.freebin)return this.allocFreebin(o.freebin,t,i,s);if(-1!==o.shelf)return this.allocShelf(o.shelf,t,i,s);if(i<=this.h-a&&t<=this.w)return n=new e(a,this.w,i),this.allocShelf(this.shelves.push(n)-1,t,i,s);if(this.autoResize){var u,l,c,p;return u=l=this.h,c=p=this.w,(c<=u||t>c)&&(p=2*Math.max(t,c)),(u<c||i>u)&&(l=2*Math.max(i,u)),this.resize(p,l),this.packOne(t,i,s)}return null},t.prototype.allocFreebin=function(t,e,i,s){var h=this.freebins.splice(t,1)[0];return h.id=s,h.w=e,h.h=i,h.refcount=0,this.bins[s]=h,this.ref(h),h},t.prototype.allocShelf=function(t,e,i,s){var h=this.shelves[t],n=h.alloc(e,i,s);return this.bins[s]=n,this.ref(n),n},t.prototype.shrink=function(){if(this.shelves.length>0){for(var t=0,e=0,i=0;i<this.shelves.length;i++){var s=this.shelves[i];e+=s.h,t=Math.max(s.w-s.free,t)}this.resize(t,e)}},t.prototype.getBin=function(t){return this.bins[t]},t.prototype.ref=function(t){if(1==++t.refcount){var e=t.h;this.stats[e]=1+(0|this.stats[e])}return t.refcount},t.prototype.unref=function(t){return 0===t.refcount?0:(0==--t.refcount&&(this.stats[t.h]--,delete this.bins[t.id],this.freebins.push(t)),t.refcount)},t.prototype.clear=function(){this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var i=0;i<this.shelves.length;i++)this.shelves[i].resize(t);return!0},e.prototype.alloc=function(t,e,s){if(t>this.free||e>this.h)return null;var h=this.x;return this.x+=t,this.free-=t,new i(s,h,this.y,t,e,t,this.h)},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t});\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";function TinySDF(t,i,s,e,h,r){this.fontSize=t||24,this.buffer=void 0===i?3:i,this.cutoff=e||.25,this.fontFamily=h||\"sans-serif\",this.fontWeight=r||\"normal\",this.radius=s||8;var a=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=a,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.d=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Int16Array(a),this.middle=Math.round(a/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1))}function edt(t,i,s,e,h,r,a){for(var n=0;n<i;n++){for(var o=0;o<s;o++)e[o]=t[o*i+n];for(edt1d(e,h,r,a,s),o=0;o<s;o++)t[o*i+n]=h[o]}for(o=0;o<s;o++){for(n=0;n<i;n++)e[n]=t[o*i+n];for(edt1d(e,h,r,a,i),n=0;n<i;n++)t[o*i+n]=Math.sqrt(h[n])}}function edt1d(t,i,s,e,h){s[0]=0,e[0]=-INF,e[1]=+INF;for(var r=1,a=0;r<h;r++){for(var n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);n<=e[a];)a--,n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);a++,s[a]=r,e[a]=n,e[a+1]=+INF}for(r=0,a=0;r<h;r++){for(;e[a+1]<r;)a++;i[r]=(r-s[a])*(r-s[a])+t[s[a]]}}module.exports=TinySDF;var INF=1e20;TinySDF.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var i=this.ctx.getImageData(0,0,this.size,this.size),s=new Uint8ClampedArray(this.size*this.size),e=0;e<this.size*this.size;e++){var h=i.data[4*e+3]/255;this.gridOuter[e]=1===h?0:0===h?INF:Math.pow(Math.max(0,.5-h),2),this.gridInner[e]=1===h?INF:0===h?0:Math.pow(Math.max(0,h-.5),2)}for(edt(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),edt(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),e=0;e<this.size*this.size;e++){var r=this.gridOuter[e]-this.gridInner[e];s[e]=Math.max(0,Math.min(255,Math.round(255-255*(r/this.radius+this.cutoff))))}return s};\n},{}],5:[function(_dereq_,module,exports){\nfunction UnitBezier(t,i,e,r){this.cx=3*t,this.bx=3*(e-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(r-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=e,this.p2y=r}module.exports=UnitBezier,UnitBezier.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},UnitBezier.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},UnitBezier.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},UnitBezier.prototype.solveCurveX=function(t,i){void 0===i&&(i=1e-6);var e,r,s,h,n;for(s=t,n=0;n<8;n++){if(h=this.sampleCurveX(s)-t,Math.abs(h)<i)return s;var u=this.sampleCurveDerivativeX(s);if(Math.abs(u)<1e-6)break;s-=h/u}if(e=0,r=1,(s=t)<e)return e;if(s>r)return r;for(;e<r;){if(h=this.sampleCurveX(s),Math.abs(h-t)<i)return s;t>h?e=s:r=s,s=.5*(r-e)+e}return s},UnitBezier.prototype.solve=function(t,i){return this.sampleCurveY(this.solveCurveX(t,i))};\n},{}],6:[function(_dereq_,module,exports){\nmodule.exports.VectorTile=_dereq_(\"./lib/vectortile.js\"),module.exports.VectorTileFeature=_dereq_(\"./lib/vectortilefeature.js\"),module.exports.VectorTileLayer=_dereq_(\"./lib/vectortilelayer.js\");\n},{\"./lib/vectortile.js\":7,\"./lib/vectortilefeature.js\":8,\"./lib/vectortilelayer.js\":9}],7:[function(_dereq_,module,exports){\n\"use strict\";function VectorTile(e,r){this.layers=e.readFields(readTile,{},r)}function readTile(e,r,i){if(3===e){var t=new VectorTileLayer(i,i.readVarint()+i.pos);t.length&&(r[t.name]=t)}}var VectorTileLayer=_dereq_(\"./vectortilelayer\");module.exports=VectorTile;\n},{\"./vectortilelayer\":9}],8:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileFeature(e,t,r,a,i){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=a,this._values=i,e.readFields(readFeature,this,t)}function readFeature(e,t,r){1==e?t.id=r.readVarint():2==e?readTag(r,t):3==e?t.type=r.readVarint():4==e&&(t._geometry=r.pos)}function readTag(e,t){for(var r=e.readVarint()+e.pos;e.pos<r;){var a=t._keys[e.readVarint()],i=t._values[e.readVarint()];t.properties[a]=i}}function classifyRings(e){var t=e.length;if(t<=1)return[e];for(var r,a,i=[],o=0;o<t;o++){var n=signedArea(e[o]);0!==n&&(void 0===a&&(a=n<0),a===n<0?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function signedArea(e){for(var t,r,a=0,i=0,o=e.length,n=o-1;i<o;n=i++)t=e[i],r=e[n],a+=(r.x-t.x)*(t.y+r.y);return a}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=VectorTileFeature,VectorTileFeature.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],VectorTileFeature.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,a=1,i=0,o=0,n=0,s=[];e.pos<r;){if(!i){var p=e.readVarint();a=7&p,i=p>>3}if(i--,1===a||2===a)o+=e.readSVarint(),n+=e.readSVarint(),1===a&&(t&&s.push(t),t=[]),t.push(new Point(o,n));else{if(7!==a)throw new Error(\"unknown command \"+a);t&&t.push(t[0].clone())}}return t&&s.push(t),s},VectorTileFeature.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,a=0,i=0,o=0,n=1/0,s=-1/0,p=1/0,h=-1/0;e.pos<t;){if(!a){var u=e.readVarint();r=7&u,a=u>>3}if(a--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),i<n&&(n=i),i>s&&(s=i),o<p&&(p=o),o>h&&(h=o);else if(7!==r)throw new Error(\"unknown command \"+r)}return[n,p,s,h]},VectorTileFeature.prototype.toGeoJSON=function(e,t,r){function a(e){for(var t=0;t<e.length;t++){var r=e[t],a=180-360*(r.y+p)/n;e[t]=[360*(r.x+s)/n-180,360/Math.PI*Math.atan(Math.exp(a*Math.PI/180))-90]}}var i,o,n=this.extent*Math.pow(2,r),s=this.extent*e,p=this.extent*t,h=this.loadGeometry(),u=VectorTileFeature.types[this.type];switch(this.type){case 1:var d=[];for(i=0;i<h.length;i++)d[i]=h[i][0];h=d,a(h);break;case 2:for(i=0;i<h.length;i++)a(h[i]);break;case 3:for(h=classifyRings(h),i=0;i<h.length;i++)for(o=0;o<h[i].length;o++)a(h[i][o])}1===h.length?h=h[0]:u=\"Multi\"+u;var f={type:\"Feature\",geometry:{type:u,coordinates:h},properties:this.properties};return\"id\"in this&&(f.id=this.id),f};\n},{\"@mapbox/point-geometry\":2}],9:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileLayer(e,t){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(readLayer,this,t),this.length=this._features.length}function readLayer(e,t,r){15===e?t.version=r.readVarint():1===e?t.name=r.readString():5===e?t.extent=r.readVarint():2===e?t._features.push(r.pos):3===e?t._keys.push(r.readString()):4===e&&t._values.push(readValueMessage(r))}function readValueMessage(e){for(var t=null,r=e.readVarint()+e.pos;e.pos<r;){var a=e.readVarint()>>3;t=1===a?e.readString():2===a?e.readFloat():3===a?e.readDouble():4===a?e.readVarint64():5===a?e.readVarint():6===a?e.readSVarint():7===a?e.readBoolean():null}return t}var VectorTileFeature=_dereq_(\"./vectortilefeature.js\");module.exports=VectorTileLayer,VectorTileLayer.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new VectorTileFeature(this._pbf,t,this.extent,this._keys,this._values)};\n},{\"./vectortilefeature.js\":8}],10:[function(_dereq_,module,exports){\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.WhooTS=e.WhooTS||{})}(this,function(e){function t(e,t,r,n,i,s){return s=s||{},e+\"?\"+[\"bbox=\"+o(r,n,i),\"format=\"+(s.format||\"image/png\"),\"service=\"+(s.service||\"WMS\"),\"version=\"+(s.version||\"1.1.1\"),\"request=\"+(s.request||\"GetMap\"),\"srs=\"+(s.srs||\"EPSG:3857\"),\"width=\"+(s.width||256),\"height=\"+(s.height||256),\"layers=\"+t].join(\"&\")}function o(e,t,o){t=Math.pow(2,o)-t-1;var n=r(256*e,256*t,o),i=r(256*(e+1),256*(t+1),o);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}function r(e,t,o){var r=2*Math.PI*6378137/256/Math.pow(2,o);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}e.getURL=t,e.getTileBBox=o,e.getMercCoords=r,Object.defineProperty(e,\"__esModule\",{value:!0})});\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";function earcut(e,n,r){r=r||2;var t=n&&n.length,i=t?n[0]*r:e.length,x=linkedList(e,0,i,r,!0),a=[];if(!x)return a;var o,l,u,s,v,f,y;if(t&&(x=eliminateHoles(e,n,x,r)),e.length>80*r){o=u=e[0],l=s=e[1];for(var d=r;d<i;d+=r)v=e[d],f=e[d+1],v<o&&(o=v),f<l&&(l=f),v>u&&(u=v),f>s&&(s=f);y=Math.max(u-o,s-l)}return earcutLinked(x,a,r,o,l,y),a}function linkedList(e,n,r,t,i){var x,a;if(i===signedArea(e,n,r,t)>0)for(x=n;x<r;x+=t)a=insertNode(x,e[x],e[x+1],a);else for(x=r-t;x>=n;x-=t)a=insertNode(x,e[x],e[x+1],a);return a&&equals(a,a.next)&&(removeNode(a),a=a.next),a}function filterPoints(e,n){if(!e)return e;n||(n=e);var r,t=e;do{if(r=!1,t.steiner||!equals(t,t.next)&&0!==area(t.prev,t,t.next))t=t.next;else{if(removeNode(t),(t=n=t.prev)===t.next)return null;r=!0}}while(r||t!==n);return n}function earcutLinked(e,n,r,t,i,x,a){if(e){!a&&x&&indexCurve(e,t,i,x);for(var o,l,u=e;e.prev!==e.next;)if(o=e.prev,l=e.next,x?isEarHashed(e,t,i,x):isEar(e))n.push(o.i/r),n.push(e.i/r),n.push(l.i/r),removeNode(e),e=l.next,u=l.next;else if((e=l)===u){a?1===a?(e=cureLocalIntersections(e,n,r),earcutLinked(e,n,r,t,i,x,2)):2===a&&splitEarcut(e,n,r,t,i,x):earcutLinked(filterPoints(e),n,r,t,i,x,1);break}}}function isEar(e){var n=e.prev,r=e,t=e.next;if(area(n,r,t)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(pointInTriangle(n.x,n.y,r.x,r.y,t.x,t.y,i.x,i.y)&&area(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function isEarHashed(e,n,r,t){var i=e.prev,x=e,a=e.next;if(area(i,x,a)>=0)return!1;for(var o=i.x<x.x?i.x<a.x?i.x:a.x:x.x<a.x?x.x:a.x,l=i.y<x.y?i.y<a.y?i.y:a.y:x.y<a.y?x.y:a.y,u=i.x>x.x?i.x>a.x?i.x:a.x:x.x>a.x?x.x:a.x,s=i.y>x.y?i.y>a.y?i.y:a.y:x.y>a.y?x.y:a.y,v=zOrder(o,l,n,r,t),f=zOrder(u,s,n,r,t),y=e.nextZ;y&&y.z<=f;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.nextZ}for(y=e.prevZ;y&&y.z>=v;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.prevZ}return!0}function cureLocalIntersections(e,n,r){var t=e;do{var i=t.prev,x=t.next.next;!equals(i,x)&&intersects(i,t,t.next,x)&&locallyInside(i,x)&&locallyInside(x,i)&&(n.push(i.i/r),n.push(t.i/r),n.push(x.i/r),removeNode(t),removeNode(t.next),t=e=x),t=t.next}while(t!==e);return t}function splitEarcut(e,n,r,t,i,x){var a=e;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&isValidDiagonal(a,o)){var l=splitPolygon(a,o);return a=filterPoints(a,a.next),l=filterPoints(l,l.next),earcutLinked(a,n,r,t,i,x),void earcutLinked(l,n,r,t,i,x)}o=o.next}a=a.next}while(a!==e)}function eliminateHoles(e,n,r,t){var i,x,a,o,l,u=[];for(i=0,x=n.length;i<x;i++)a=n[i]*t,o=i<x-1?n[i+1]*t:e.length,l=linkedList(e,a,o,t,!1),l===l.next&&(l.steiner=!0),u.push(getLeftmost(l));for(u.sort(compareX),i=0;i<u.length;i++)eliminateHole(u[i],r),r=filterPoints(r,r.next);return r}function compareX(e,n){return e.x-n.x}function eliminateHole(e,n){if(n=findHoleBridge(e,n)){var r=splitPolygon(n,e);filterPoints(r,r.next)}}function findHoleBridge(e,n){var r,t=n,i=e.x,x=e.y,a=-1/0;do{if(x<=t.y&&x>=t.next.y){var o=t.x+(x-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(o<=i&&o>a){if(a=o,o===i){if(x===t.y)return t;if(x===t.next.y)return t.next}r=t.x<t.next.x?t:t.next}}t=t.next}while(t!==n);if(!r)return null;if(i===a)return r.prev;var l,u=r,s=r.x,v=r.y,f=1/0;for(t=r.next;t!==u;)i>=t.x&&t.x>=s&&pointInTriangle(x<v?i:a,x,s,v,x<v?a:i,x,t.x,t.y)&&((l=Math.abs(x-t.y)/(i-t.x))<f||l===f&&t.x>r.x)&&locallyInside(t,e)&&(r=t,f=l),t=t.next;return r}function indexCurve(e,n,r,t){var i=e;do{null===i.z&&(i.z=zOrder(i.x,i.y,n,r,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,sortLinked(i)}function sortLinked(e){var n,r,t,i,x,a,o,l,u=1;do{for(r=e,e=null,x=null,a=0;r;){for(a++,t=r,o=0,n=0;n<u&&(o++,t=t.nextZ);n++);for(l=u;o>0||l>0&&t;)0===o?(i=t,t=t.nextZ,l--):0!==l&&t?r.z<=t.z?(i=r,r=r.nextZ,o--):(i=t,t=t.nextZ,l--):(i=r,r=r.nextZ,o--),x?x.nextZ=i:e=i,i.prevZ=x,x=i;r=t}x.nextZ=null,u*=2}while(a>1);return e}function zOrder(e,n,r,t,i){return e=32767*(e-r)/i,n=32767*(n-t)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),n=16711935&(n|n<<8),n=252645135&(n|n<<4),n=858993459&(n|n<<2),n=1431655765&(n|n<<1),e|n<<1}function getLeftmost(e){var n=e,r=e;do{n.x<r.x&&(r=n),n=n.next}while(n!==e);return r}function pointInTriangle(e,n,r,t,i,x,a,o){return(i-a)*(n-o)-(e-a)*(x-o)>=0&&(e-a)*(t-o)-(r-a)*(n-o)>=0&&(r-a)*(x-o)-(i-a)*(t-o)>=0}function isValidDiagonal(e,n){return e.next.i!==n.i&&e.prev.i!==n.i&&!intersectsPolygon(e,n)&&locallyInside(e,n)&&locallyInside(n,e)&&middleInside(e,n)}function area(e,n,r){return(n.y-e.y)*(r.x-n.x)-(n.x-e.x)*(r.y-n.y)}function equals(e,n){return e.x===n.x&&e.y===n.y}function intersects(e,n,r,t){return!!(equals(e,n)&&equals(r,t)||equals(e,t)&&equals(r,n))||area(e,n,r)>0!=area(e,n,t)>0&&area(r,t,e)>0!=area(r,t,n)>0}function intersectsPolygon(e,n){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==n.i&&r.next.i!==n.i&&intersects(r,r.next,e,n))return!0;r=r.next}while(r!==e);return!1}function locallyInside(e,n){return area(e.prev,e,e.next)<0?area(e,n,e.next)>=0&&area(e,e.prev,n)>=0:area(e,n,e.prev)<0||area(e,e.next,n)<0}function middleInside(e,n){var r=e,t=!1,i=(e.x+n.x)/2,x=(e.y+n.y)/2;do{r.y>x!=r.next.y>x&&i<(r.next.x-r.x)*(x-r.y)/(r.next.y-r.y)+r.x&&(t=!t),r=r.next}while(r!==e);return t}function splitPolygon(e,n){var r=new Node(e.i,e.x,e.y),t=new Node(n.i,n.x,n.y),i=e.next,x=n.prev;return e.next=n,n.prev=e,r.next=i,i.prev=r,t.next=r,r.prev=t,x.next=t,t.prev=x,t}function insertNode(e,n,r,t){var i=new Node(e,n,r);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function removeNode(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Node(e,n,r){this.i=e,this.x=n,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(e,n,r,t){for(var i=0,x=n,a=r-t;x<r;x+=t)i+=(e[a]-e[x])*(e[x+1]+e[a+1]),a=x;return i}module.exports=earcut,earcut.deviation=function(e,n,r,t){var i=n&&n.length,x=i?n[0]*r:e.length,a=Math.abs(signedArea(e,0,x,r));if(i)for(var o=0,l=n.length;o<l;o++){var u=n[o]*r,s=o<l-1?n[o+1]*r:e.length;a-=Math.abs(signedArea(e,u,s,r))}var v=0;for(o=0;o<t.length;o+=3){var f=t[o]*r,y=t[o+1]*r,d=t[o+2]*r;v+=Math.abs((e[f]-e[d])*(e[y+1]-e[f+1])-(e[f]-e[y])*(e[d+1]-e[f+1]))}return 0===a&&0===v?0:Math.abs((v-a)/a)},earcut.flatten=function(e){for(var n=e[0][0].length,r={vertices:[],holes:[],dimensions:n},t=0,i=0;i<e.length;i++){for(var x=0;x<e[i].length;x++)for(var a=0;a<n;a++)r.vertices.push(e[i][x][a]);i>0&&(t+=e[i-1].length,r.holes.push(t))}return r};\n},{}],12:[function(_dereq_,module,exports){\nfunction geometry(r){if(\"Polygon\"===r.type)return polygonArea(r.coordinates);if(\"MultiPolygon\"===r.type){for(var e=0,n=0;n<r.coordinates.length;n++)e+=polygonArea(r.coordinates[n]);return e}return null}function polygonArea(r){var e=0;if(r&&r.length>0){e+=Math.abs(ringArea(r[0]));for(var n=1;n<r.length;n++)e-=Math.abs(ringArea(r[n]))}return e}function ringArea(r){var e=0;if(r.length>2){for(var n,t,o=0;o<r.length-1;o++)n=r[o],t=r[o+1],e+=rad(t[0]-n[0])*(2+Math.sin(rad(n[1]))+Math.sin(rad(t[1])));e=e*wgs84.RADIUS*wgs84.RADIUS/2}return e}function rad(r){return r*Math.PI/180}var wgs84=_dereq_(\"wgs84\");module.exports.geometry=geometry,module.exports.ring=ringArea;\n},{\"wgs84\":40}],13:[function(_dereq_,module,exports){\nfunction rewind(r,e){switch(r&&r.type||null){case\"FeatureCollection\":return r.features=r.features.map(curryOuter(rewind,e)),r;case\"Feature\":return r.geometry=rewind(r.geometry,e),r;case\"Polygon\":case\"MultiPolygon\":return correct(r,e);default:return r}}function curryOuter(r,e){return function(n){return r(n,e)}}function correct(r,e){return\"Polygon\"===r.type?r.coordinates=correctRings(r.coordinates,e):\"MultiPolygon\"===r.type&&(r.coordinates=r.coordinates.map(curryOuter(correctRings,e))),r}function correctRings(r,e){e=!!e,r[0]=wind(r[0],e);for(var n=1;n<r.length;n++)r[n]=wind(r[n],!e);return r}function wind(r,e){return cw(r)===e?r:r.reverse()}function cw(r){return geojsonArea.ring(r)>=0}var geojsonArea=_dereq_(\"geojson-area\");module.exports=rewind;\n},{\"geojson-area\":12}],14:[function(_dereq_,module,exports){\n\"use strict\";function clip(e,r,t,n,u,i,l,s){if(t/=r,n/=r,l>=t&&s<=n)return e;if(l>n||s<t)return null;for(var h=[],p=0;p<e.length;p++){var a,c,o=e[p],f=o.geometry,g=o.type;if(a=o.min[u],c=o.max[u],a>=t&&c<=n)h.push(o);else if(!(a>n||c<t)){var v=1===g?clipPoints(f,t,n,u):clipGeometry(f,t,n,u,i,3===g);v.length&&h.push(createFeature(o.tags,g,v,o.id))}}return h.length?h:null}function clipPoints(e,r,t,n){for(var u=[],i=0;i<e.length;i++){var l=e[i],s=l[n];s>=r&&s<=t&&u.push(l)}return u}function clipGeometry(e,r,t,n,u,i){for(var l=[],s=0;s<e.length;s++){var h,p,a,c=0,o=0,f=null,g=e[s],v=g.area,m=g.dist,w=g.outer,S=g.length,d=[];for(p=0;p<S-1;p++)h=f||g[p],f=g[p+1],c=o||h[n],o=f[n],c<r?o>t?(d.push(u(h,f,r),u(h,f,t)),i||(d=newSlice(l,d,v,m,w))):o>=r&&d.push(u(h,f,r)):c>t?o<r?(d.push(u(h,f,t),u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o<=t&&d.push(u(h,f,t)):(d.push(h),o<r?(d.push(u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o>t&&(d.push(u(h,f,t)),i||(d=newSlice(l,d,v,m,w))));h=g[S-1],c=h[n],c>=r&&c<=t&&d.push(h),a=d[d.length-1],i&&a&&(d[0][0]!==a[0]||d[0][1]!==a[1])&&d.push(d[0]),newSlice(l,d,v,m,w)}return l}function newSlice(e,r,t,n,u){return r.length&&(r.area=t,r.dist=n,void 0!==u&&(r.outer=u),e.push(r)),[]}module.exports=clip;var createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16}],15:[function(_dereq_,module,exports){\n\"use strict\";function convert(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)convertFeature(r,e.features[o],t);else\"Feature\"===e.type?convertFeature(r,e,t):convertFeature(r,{geometry:e},t);return r}function convertFeature(e,t,r){if(null!==t.geometry){var o,a,i,n,u=t.geometry,c=u.type,l=u.coordinates,s=t.properties,p=t.id;if(\"Point\"===c)e.push(createFeature(s,1,[projectPoint(l)],p));else if(\"MultiPoint\"===c)e.push(createFeature(s,1,project(l),p));else if(\"LineString\"===c)e.push(createFeature(s,2,[project(l,r)],p));else if(\"MultiLineString\"===c||\"Polygon\"===c){for(i=[],o=0;o<l.length;o++)n=project(l[o],r),\"Polygon\"===c&&(n.outer=0===o),i.push(n);e.push(createFeature(s,\"Polygon\"===c?3:2,i,p))}else if(\"MultiPolygon\"===c){for(i=[],o=0;o<l.length;o++)for(a=0;a<l[o].length;a++)n=project(l[o][a],r),n.outer=0===a,i.push(n);e.push(createFeature(s,3,i,p))}else{if(\"GeometryCollection\"!==c)throw new Error(\"Input data is not a valid GeoJSON object.\");for(o=0;o<u.geometries.length;o++)convertFeature(e,{geometry:u.geometries[o],properties:s},r)}}}function project(e,t){for(var r=[],o=0;o<e.length;o++)r.push(projectPoint(e[o]));return t&&(simplify(r,t),calcSize(r)),r}function projectPoint(e){var t=Math.sin(e[1]*Math.PI/180),r=e[0]/360+.5,o=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return o=o<0?0:o>1?1:o,[r,o,0]}function calcSize(e){for(var t,r,o=0,a=0,i=0;i<e.length-1;i++)t=r||e[i],r=e[i+1],o+=t[0]*r[1]-r[0]*t[1],a+=Math.abs(r[0]-t[0])+Math.abs(r[1]-t[1]);e.area=Math.abs(o/2),e.dist=a}module.exports=convert;var simplify=_dereq_(\"./simplify\"),createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16,\"./simplify\":18}],16:[function(_dereq_,module,exports){\n\"use strict\";function createFeature(e,t,a,n){var r={id:n||null,type:t,geometry:a,tags:e||null,min:[1/0,1/0],max:[-1/0,-1/0]};return calcBBox(r),r}function calcBBox(e){var t=e.geometry,a=e.min,n=e.max;if(1===e.type)calcRingBBox(a,n,t);else for(var r=0;r<t.length;r++)calcRingBBox(a,n,t[r]);return e}function calcRingBBox(e,t,a){for(var n,r=0;r<a.length;r++)n=a[r],e[0]=Math.min(n[0],e[0]),t[0]=Math.max(n[0],t[0]),e[1]=Math.min(n[1],e[1]),t[1]=Math.max(n[1],t[1])}module.exports=createFeature;\n},{}],17:[function(_dereq_,module,exports){\n\"use strict\";function geojsonvt(e,t){return new GeoJSONVT(e,t)}function GeoJSONVT(e,t){t=this.options=extend(Object.create(this.options),t);var i=t.debug;i&&console.time(\"preprocess data\");var o=1<<t.maxZoom,n=convert(e,t.tolerance/(o*t.extent));this.tiles={},this.tileCoords=[],i&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),n=wrap(n,t.buffer/t.extent,intersectX),n.length&&this.splitTile(n,0,0,0),i&&(n.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)))}function toID(e,t,i){return 32*((1<<e)*i+t)+e}function intersectX(e,t,i){return[i,(i-e[0])*(t[1]-e[1])/(t[0]-e[0])+e[1],1]}function intersectY(e,t,i){return[(i-e[1])*(t[0]-e[0])/(t[1]-e[1])+e[0],i,1]}function extend(e,t){for(var i in t)e[i]=t[i];return e}function isClippedSquare(e,t,i){var o=e.source;if(1!==o.length)return!1;var n=o[0];if(3!==n.type||n.geometry.length>1)return!1;var r=n.geometry[0].length;if(5!==r)return!1;for(var s=0;s<r;s++){var l=transform.point(n.geometry[0][s],t,e.z2,e.x,e.y);if(l[0]!==-i&&l[0]!==t+i||l[1]!==-i&&l[1]!==t+i)return!1}return!0}module.exports=geojsonvt;var convert=_dereq_(\"./convert\"),transform=_dereq_(\"./transform\"),clip=_dereq_(\"./clip\"),wrap=_dereq_(\"./wrap\"),createTile=_dereq_(\"./tile\");GeoJSONVT.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},GeoJSONVT.prototype.splitTile=function(e,t,i,o,n,r,s){for(var l=[e,t,i,o],a=this.options,u=a.debug,c=null;l.length;){o=l.pop(),i=l.pop(),t=l.pop(),e=l.pop();var p=1<<t,d=toID(t,i,o),m=this.tiles[d],f=t===a.maxZoom?0:a.tolerance/(p*a.extent);if(!m&&(u>1&&console.time(\"creation\"),m=this.tiles[d]=createTile(e,p,i,o,f,t===a.maxZoom),this.tileCoords.push({z:t,x:i,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,i,o,m.numFeatures,m.numPoints,m.numSimplified),console.timeEnd(\"creation\"));var h=\"z\"+t;this.stats[h]=(this.stats[h]||0)+1,this.total++}if(m.source=e,n){if(t===a.maxZoom||t===n)continue;var x=1<<n-t;if(i!==Math.floor(r/x)||o!==Math.floor(s/x))continue}else if(t===a.indexMaxZoom||m.numPoints<=a.indexMaxPoints)continue;if(a.solidChildren||!isClippedSquare(m,a.extent,a.buffer)){m.source=null,u>1&&console.time(\"clipping\");var g,v,M,T,b,y,S=.5*a.buffer/a.extent,Z=.5-S,q=.5+S,w=1+S;g=v=M=T=null,b=clip(e,p,i-S,i+q,0,intersectX,m.min[0],m.max[0]),y=clip(e,p,i+Z,i+w,0,intersectX,m.min[0],m.max[0]),b&&(g=clip(b,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),v=clip(b,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),y&&(M=clip(y,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),T=clip(y,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),u>1&&console.timeEnd(\"clipping\"),e.length&&(l.push(g||[],t+1,2*i,2*o),l.push(v||[],t+1,2*i,2*o+1),l.push(M||[],t+1,2*i+1,2*o),l.push(T||[],t+1,2*i+1,2*o+1))}else n&&(c=t)}return c},GeoJSONVT.prototype.getTile=function(e,t,i){var o=this.options,n=o.extent,r=o.debug,s=1<<e;t=(t%s+s)%s;var l=toID(e,t,i);if(this.tiles[l])return transform.tile(this.tiles[l],n);r>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,i);for(var a,u=e,c=t,p=i;!a&&u>0;)u--,c=Math.floor(c/2),p=Math.floor(p/2),a=this.tiles[toID(u,c,p)];if(!a||!a.source)return null;if(r>1&&console.log(\"found parent tile z%d-%d-%d\",u,c,p),isClippedSquare(a,n,o.buffer))return transform.tile(a,n);r>1&&console.time(\"drilling down\");var d=this.splitTile(a.source,u,c,p,e,t,i);if(r>1&&console.timeEnd(\"drilling down\"),null!==d){var m=1<<e-d;l=toID(d,Math.floor(t/m),Math.floor(i/m))}return this.tiles[l]?transform.tile(this.tiles[l],n):null};\n},{\"./clip\":14,\"./convert\":15,\"./tile\":19,\"./transform\":20,\"./wrap\":21}],18:[function(_dereq_,module,exports){\n\"use strict\";function simplify(t,i){var e,p,r,s,o=i*i,f=t.length,u=0,n=f-1,g=[];for(t[u][2]=1,t[n][2]=1;n;){for(p=0,e=u+1;e<n;e++)(r=getSqSegDist(t[e],t[u],t[n]))>p&&(s=e,p=r);p>o?(t[s][2]=p,g.push(u),g.push(s),u=s):(n=g.pop(),u=g.pop())}}function getSqSegDist(t,i,e){var p=i[0],r=i[1],s=e[0],o=e[1],f=t[0],u=t[1],n=s-p,g=o-r;if(0!==n||0!==g){var l=((f-p)*n+(u-r)*g)/(n*n+g*g);l>1?(p=s,r=o):l>0&&(p+=n*l,r+=g*l)}return n=f-p,g=u-r,n*n+g*g}module.exports=simplify;\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";function createTile(e,n,r,i,t,u){for(var a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:n,transformed:!1,min:[2,1],max:[-1,0]},m=0;m<e.length;m++){a.numFeatures++,addFeature(a,e[m],t,u);var s=e[m].min,l=e[m].max;s[0]<a.min[0]&&(a.min[0]=s[0]),s[1]<a.min[1]&&(a.min[1]=s[1]),l[0]>a.max[0]&&(a.max[0]=l[0]),l[1]>a.max[1]&&(a.max[1]=l[1])}return a}function addFeature(e,n,r,i){var t,u,a,m,s=n.geometry,l=n.type,o=[],f=r*r;if(1===l)for(t=0;t<s.length;t++)o.push(s[t]),e.numPoints++,e.numSimplified++;else for(t=0;t<s.length;t++)if(a=s[t],i||!(2===l&&a.dist<r||3===l&&a.area<f)){var d=[];for(u=0;u<a.length;u++)m=a[u],(i||m[2]>f)&&(d.push(m),e.numSimplified++),e.numPoints++;3===l&&rewind(d,a.outer),o.push(d)}else e.numPoints+=a.length;if(o.length){var g={geometry:o,type:l,tags:n.tags||null};null!==n.id&&(g.id=n.id),e.features.push(g)}}function rewind(e,n){signedArea(e)<0===n&&e.reverse()}function signedArea(e){for(var n,r,i=0,t=0,u=e.length,a=u-1;t<u;a=t++)n=e[t],r=e[a],i+=(r[0]-n[0])*(n[1]+r[1]);return i}module.exports=createTile;\n},{}],20:[function(_dereq_,module,exports){\n\"use strict\";function transformTile(r,t){if(r.transformed)return r;var n,e,o,f=r.z2,a=r.x,s=r.y;for(n=0;n<r.features.length;n++){var i=r.features[n],u=i.geometry;if(1===i.type)for(e=0;e<u.length;e++)u[e]=transformPoint(u[e],t,f,a,s);else for(e=0;e<u.length;e++){var m=u[e];for(o=0;o<m.length;o++)m[o]=transformPoint(m[o],t,f,a,s)}}return r.transformed=!0,r}function transformPoint(r,t,n,e,o){return[Math.round(t*(r[0]*n-e)),Math.round(t*(r[1]*n-o))]}exports.tile=transformTile,exports.point=transformPoint;\n},{}],21:[function(_dereq_,module,exports){\n\"use strict\";function wrap(r,e,t){var o=r,a=clip(r,1,-1-e,e,0,t,-1,2),s=clip(r,1,1-e,2+e,0,t,-1,2);return(a||s)&&(o=clip(r,1,-e,1+e,0,t,-1,2)||[],a&&(o=shiftFeatureCoords(a,1).concat(o)),s&&(o=o.concat(shiftFeatureCoords(s,-1)))),o}function shiftFeatureCoords(r,e){for(var t=[],o=0;o<r.length;o++){var a,s=r[o],i=s.type;if(1===i)a=shiftCoords(s.geometry,e);else{a=[];for(var u=0;u<s.geometry.length;u++)a.push(shiftCoords(s.geometry[u],e))}t.push(createFeature(s.tags,i,a,s.id))}return t}function shiftCoords(r,e){var t=[];t.area=r.area,t.dist=r.dist;for(var o=0;o<r.length;o++)t.push([r[o][0]+e,r[o][1],r[o][2]]);return t}var clip=_dereq_(\"./clip\"),createFeature=_dereq_(\"./feature\");module.exports=wrap;\n},{\"./clip\":14,\"./feature\":16}],22:[function(_dereq_,module,exports){\n\"use strict\";function GridIndex(t,r,e){var s=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],r=i[1],e=i[2],this.d=r+2*e;for(var h=0;h<this.d*this.d;h++){var n=i[NUM_PARAMS+h],o=i[NUM_PARAMS+h+1];s.push(n===o?null:i.subarray(n,o))}var l=i[NUM_PARAMS+s.length],a=i[NUM_PARAMS+s.length+1];this.keys=i.subarray(l,a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly}else{this.d=r+2*e;for(var d=0;d<this.d*this.d;d++)s.push([]);this.keys=[],this.bboxes=[]}this.n=r,this.extent=t,this.padding=e,this.scale=r/t,this.uid=0;var f=e/r*t;this.min=-f,this.max=t+f}module.exports=GridIndex;var NUM_PARAMS=3;GridIndex.prototype.insert=function(t,r,e,s,i){this._forEachCell(r,e,s,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(r),this.bboxes.push(e),this.bboxes.push(s),this.bboxes.push(i)},GridIndex.prototype._insertReadonly=function(){throw\"Cannot insert into a GridIndex created from an ArrayBuffer.\"},GridIndex.prototype._insertCell=function(t,r,e,s,i,h){this.cells[i].push(h)},GridIndex.prototype.query=function(t,r,e,s){var i=this.min,h=this.max;if(t<=i&&r<=i&&h<=e&&h<=s)return Array.prototype.slice.call(this.keys);var n=[],o={};return this._forEachCell(t,r,e,s,this._queryCell,n,o),n},GridIndex.prototype._queryCell=function(t,r,e,s,i,h,n){var o=this.cells[i];if(null!==o)for(var l=this.keys,a=this.bboxes,d=0;d<o.length;d++){var f=o[d];if(void 0===n[f]){var u=4*f;t<=a[u+2]&&r<=a[u+3]&&e>=a[u+0]&&s>=a[u+1]?(n[f]=!0,h.push(l[f])):n[f]=!1}}},GridIndex.prototype._forEachCell=function(t,r,e,s,i,h,n){for(var o=this._convertToCellCoord(t),l=this._convertToCellCoord(r),a=this._convertToCellCoord(e),d=this._convertToCellCoord(s),f=o;f<=a;f++)for(var u=l;u<=d;u++){var y=this.d*u+f;if(i.call(this,t,r,e,s,y,h,n))return}},GridIndex.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},GridIndex.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,r=NUM_PARAMS+this.cells.length+1+1,e=0,s=0;s<this.cells.length;s++)e+=this.cells[s].length;var i=new Int32Array(r+e+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var h=r,n=0;n<t.length;n++){var o=t[n];i[NUM_PARAMS+n]=h,i.set(o,h),h+=o.length}return i[NUM_PARAMS+t.length]=h,i.set(this.keys,h),h+=this.keys.length,i[NUM_PARAMS+t.length+1]=h,i.set(this.bboxes,h),h+=this.bboxes.length,i.buffer};\n},{}],23:[function(_dereq_,module,exports){\nexports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),o+=p+N>=1?n/f:n*Math.pow(2,1-N),o*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};\n},{}],24:[function(_dereq_,module,exports){\n\"use strict\";function kdbush(t,i,e,s,n){return new KDBush(t,i,e,s,n)}function KDBush(t,i,e,s,n){i=i||defaultGetX,e=e||defaultGetY,n=n||Array,this.nodeSize=s||64,this.points=t,this.ids=new n(t.length),this.coords=new n(2*t.length);for(var r=0;r<t.length;r++)this.ids[r]=r,this.coords[2*r]=i(t[r]),this.coords[2*r+1]=e(t[r]);sort(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function defaultGetX(t){return t[0]}function defaultGetY(t){return t[1]}var sort=_dereq_(\"./sort\"),range=_dereq_(\"./range\"),within=_dereq_(\"./within\");module.exports=kdbush,KDBush.prototype={range:function(t,i,e,s){return range(this.ids,this.coords,t,i,e,s,this.nodeSize)},within:function(t,i,e){return within(this.ids,this.coords,t,i,e,this.nodeSize)}};\n},{\"./range\":25,\"./sort\":26,\"./within\":27}],25:[function(_dereq_,module,exports){\n\"use strict\";function range(p,r,s,u,h,e,o){for(var a,t,n=[0,p.length-1,0],f=[];n.length;){var l=n.pop(),v=n.pop(),g=n.pop();if(v-g<=o)for(var i=g;i<=v;i++)a=r[2*i],t=r[2*i+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[i]);else{var c=Math.floor((g+v)/2);a=r[2*c],t=r[2*c+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[c]);var d=(l+1)%2;(0===l?s<=a:u<=t)&&(n.push(g),n.push(c-1),n.push(d)),(0===l?h>=a:e>=t)&&(n.push(c+1),n.push(v),n.push(d))}}return f}module.exports=range;\n},{}],26:[function(_dereq_,module,exports){\n\"use strict\";function sortKD(t,a,o,s,r,e){if(!(r-s<=o)){var f=Math.floor((s+r)/2);select(t,a,f,s,r,e%2),sortKD(t,a,o,s,f-1,e+1),sortKD(t,a,o,f+1,r,e+1)}}function select(t,a,o,s,r,e){for(;r>s;){if(r-s>600){var f=r-s+1,p=o-s+1,w=Math.log(f),m=.5*Math.exp(2*w/3),n=.5*Math.sqrt(w*m*(f-m)/f)*(p-f/2<0?-1:1);select(t,a,o,Math.max(s,Math.floor(o-p*m/f+n)),Math.min(r,Math.floor(o+(f-p)*m/f+n)),e)}var c=a[2*o+e],h=s,i=r;for(swapItem(t,a,s,o),a[2*r+e]>c&&swapItem(t,a,s,r);h<i;){for(swapItem(t,a,h,i),h++,i--;a[2*h+e]<c;)h++;for(;a[2*i+e]>c;)i--}a[2*s+e]===c?swapItem(t,a,s,i):(i++,swapItem(t,a,i,r)),i<=o&&(s=i+1),o<=i&&(r=i-1)}}function swapItem(t,a,o,s){swap(t,o,s),swap(a,2*o,2*s),swap(a,2*o+1,2*s+1)}function swap(t,a,o){var s=t[a];t[a]=t[o],t[o]=s}module.exports=sortKD;\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";function within(s,p,r,t,u,h){for(var i=[0,s.length-1,0],o=[],n=u*u;i.length;){var e=i.pop(),a=i.pop(),f=i.pop();if(a-f<=h)for(var v=f;v<=a;v++)sqDist(p[2*v],p[2*v+1],r,t)<=n&&o.push(s[v]);else{var l=Math.floor((f+a)/2),c=p[2*l],q=p[2*l+1];sqDist(c,q,r,t)<=n&&o.push(s[l]);var D=(e+1)%2;(0===e?r-u<=c:t-u<=q)&&(i.push(f),i.push(l-1),i.push(D)),(0===e?r+u>=c:t+u>=q)&&(i.push(l+1),i.push(a),i.push(D))}}return o}function sqDist(s,p,r,t){var u=s-r,h=p-t;return u*u+h*h}module.exports=within;\n},{}],28:[function(_dereq_,module,exports){\n\"use strict\";function isSupported(e){return!!(isBrowser()&&isArraySupported()&&isFunctionSupported()&&isObjectSupported()&&isJSONSupported()&&isWorkerSupported()&&isUint8ClampedArraySupported()&&isWebGLSupportedCached(e&&e.failIfMajorPerformanceCaveat))}function isBrowser(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}function isArraySupported(){return Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray}function isFunctionSupported(){return Function.prototype&&Function.prototype.bind}function isObjectSupported(){return Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions}function isJSONSupported(){return\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON}function isWorkerSupported(){return\"Worker\"in window}function isUint8ClampedArraySupported(){return\"Uint8ClampedArray\"in window}function isWebGLSupportedCached(e){return void 0===isWebGLSupportedCache[e]&&(isWebGLSupportedCache[e]=isWebGLSupported(e)),isWebGLSupportedCache[e]}function isWebGLSupported(e){var t=document.createElement(\"canvas\"),r=Object.create(isSupported.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=e,t.probablySupportsContext?t.probablySupportsContext(\"webgl\",r)||t.probablySupportsContext(\"experimental-webgl\",r):t.supportsContext?t.supportsContext(\"webgl\",r)||t.supportsContext(\"experimental-webgl\",r):t.getContext(\"webgl\",r)||t.getContext(\"experimental-webgl\",r)}\"undefined\"!=typeof module&&module.exports?module.exports=isSupported:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=isSupported);var isWebGLSupportedCache={};isSupported.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};\n},{}],29:[function(_dereq_,module,exports){\n\"use strict\";function Pbf(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}function readVarintRemainder(t,i,e){var r,s,n=e.buf;if(s=n[e.pos++],r=(112&s)>>4,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<3,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<10,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<17,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<24,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(1&s)<<31,s<128)return toNum(t,r,i);throw new Error(\"Expected varint not more than 10 bytes\")}function readPackedEnd(t){return t.type===Pbf.Bytes?t.readVarint()+t.pos:t.pos+1}function toNum(t,i,e){return e?4294967296*i+(t>>>0):4294967296*(i>>>0)+(t>>>0)}function writeBigVarint(t,i){var e,r;if(t>=0?(e=t%4294967296|0,r=t/4294967296|0):(e=~(-t%4294967296),r=~(-t/4294967296),4294967295^e?e=e+1|0:(e=0,r=r+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");i.realloc(10),writeBigVarintLow(e,r,i),writeBigVarintHigh(r,i)}function writeBigVarintLow(t,i,e){e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos]=127&t}function writeBigVarintHigh(t,i){var e=(7&t)<<4;i.buf[i.pos++]|=e|((t>>>=3)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t)))))}function makeRoomForExtraLength(t,i,e){var r=i<=16383?1:i<=2097151?2:i<=268435455?3:Math.ceil(Math.log(i)/(7*Math.LN2));e.realloc(r);for(var s=e.pos-1;s>=t;s--)e.buf[s+r]=e.buf[s]}function writePackedVarint(t,i){for(var e=0;e<t.length;e++)i.writeVarint(t[e])}function writePackedSVarint(t,i){for(var e=0;e<t.length;e++)i.writeSVarint(t[e])}function writePackedFloat(t,i){for(var e=0;e<t.length;e++)i.writeFloat(t[e])}function writePackedDouble(t,i){for(var e=0;e<t.length;e++)i.writeDouble(t[e])}function writePackedBoolean(t,i){for(var e=0;e<t.length;e++)i.writeBoolean(t[e])}function writePackedFixed32(t,i){for(var e=0;e<t.length;e++)i.writeFixed32(t[e])}function writePackedSFixed32(t,i){for(var e=0;e<t.length;e++)i.writeSFixed32(t[e])}function writePackedFixed64(t,i){for(var e=0;e<t.length;e++)i.writeFixed64(t[e])}function writePackedSFixed64(t,i){for(var e=0;e<t.length;e++)i.writeSFixed64(t[e])}function readUInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+16777216*t[i+3]}function writeInt32(t,i,e){t[e]=i,t[e+1]=i>>>8,t[e+2]=i>>>16,t[e+3]=i>>>24}function readInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+(t[i+3]<<24)}function readUtf8(t,i,e){for(var r=\"\",s=i;s<e;){var n=t[s],o=null,a=n>239?4:n>223?3:n>191?2:1;if(s+a>e)break;var h,u,f;1===a?n<128&&(o=n):2===a?128==(192&(h=t[s+1]))&&(o=(31&n)<<6|63&h)<=127&&(o=null):3===a?(h=t[s+1],u=t[s+2],128==(192&h)&&128==(192&u)&&((o=(15&n)<<12|(63&h)<<6|63&u)<=2047||o>=55296&&o<=57343)&&(o=null)):4===a&&(h=t[s+1],u=t[s+2],f=t[s+3],128==(192&h)&&128==(192&u)&&128==(192&f)&&((o=(15&n)<<18|(63&h)<<12|(63&u)<<6|63&f)<=65535||o>=1114112)&&(o=null)),null===o?(o=65533,a=1):o>65535&&(o-=65536,r+=String.fromCharCode(o>>>10&1023|55296),o=56320|1023&o),r+=String.fromCharCode(o),s+=a}return r}function writeUtf8(t,i,e){for(var r,s,n=0;n<i.length;n++){if((r=i.charCodeAt(n))>55295&&r<57344){if(!s){r>56319||n+1===i.length?(t[e++]=239,t[e++]=191,t[e++]=189):s=r;continue}if(r<56320){t[e++]=239,t[e++]=191,t[e++]=189,s=r;continue}r=s-55296<<10|r-56320|65536,s=null}else s&&(t[e++]=239,t[e++]=191,t[e++]=189,s=null);r<128?t[e++]=r:(r<2048?t[e++]=r>>6|192:(r<65536?t[e++]=r>>12|224:(t[e++]=r>>18|240,t[e++]=r>>12&63|128),t[e++]=r>>6&63|128),t[e++]=63&r|128)}return e}module.exports=Pbf;var ieee754=_dereq_(\"ieee754\");Pbf.Varint=0,Pbf.Fixed64=1,Pbf.Bytes=2,Pbf.Fixed32=5;var SHIFT_LEFT_32=4294967296,SHIFT_RIGHT_32=1/SHIFT_LEFT_32;Pbf.prototype={destroy:function(){this.buf=null},readFields:function(t,i,e){for(e=e||this.length;this.pos<e;){var r=this.readVarint(),s=r>>3,n=this.pos;this.type=7&r,t(s,i,this),this.pos===n&&this.skip(r)}return i},readMessage:function(t,i){return this.readFields(t,i,this.readVarint()+this.pos)},readFixed32:function(){var t=readUInt32(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=readInt32(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=readUInt32(this.buf,this.pos)+readUInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readSFixed64:function(){var t=readUInt32(this.buf,this.pos)+readInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readFloat:function(){var t=ieee754.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=ieee754.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var i,e,r=this.buf;return e=r[this.pos++],i=127&e,e<128?i:(e=r[this.pos++],i|=(127&e)<<7,e<128?i:(e=r[this.pos++],i|=(127&e)<<14,e<128?i:(e=r[this.pos++],i|=(127&e)<<21,e<128?i:(e=r[this.pos],i|=(15&e)<<28,readVarintRemainder(i,t,this)))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,i=readUtf8(this.buf,this.pos,t);return this.pos=t,i},readBytes:function(){var t=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,t);return this.pos=t,i},readPackedVarint:function(t,i){var e=readPackedEnd(this);for(t=t||[];this.pos<e;)t.push(this.readVarint(i));return t},readPackedSVarint:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readBoolean());return t},readPackedFloat:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFloat());return t},readPackedDouble:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readDouble());return t},readPackedFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed64());return t},skip:function(t){var i=7&t;if(i===Pbf.Varint)for(;this.buf[this.pos++]>127;);else if(i===Pbf.Bytes)this.pos=this.readVarint()+this.pos;else if(i===Pbf.Fixed32)this.pos+=4;else{if(i!==Pbf.Fixed64)throw new Error(\"Unimplemented type: \"+i);this.pos+=8}},writeTag:function(t,i){this.writeVarint(t<<3|i)},realloc:function(t){for(var i=this.length||16;i<this.pos+t;)i*=2;if(i!==this.length){var e=new Uint8Array(i);e.set(this.buf),this.buf=e,this.length=i}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeVarint:function(t){if((t=+t||0)>268435455||t<0)return void writeBigVarint(t,this);this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127)))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var i=this.pos;this.pos=writeUtf8(this.buf,t,this.pos);var e=this.pos-i;e>=128&&makeRoomForExtraLength(i,e,this),this.pos=i-1,this.writeVarint(e),this.pos+=e},writeFloat:function(t){this.realloc(4),ieee754.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),ieee754.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var i=t.length;this.writeVarint(i),this.realloc(i);for(var e=0;e<i;e++)this.buf[this.pos++]=t[e]},writeRawMessage:function(t,i){this.pos++;var e=this.pos;t(i,this);var r=this.pos-e;r>=128&&makeRoomForExtraLength(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,i,e){this.writeTag(t,Pbf.Bytes),this.writeRawMessage(i,e)},writePackedVarint:function(t,i){this.writeMessage(t,writePackedVarint,i)},writePackedSVarint:function(t,i){this.writeMessage(t,writePackedSVarint,i)},writePackedBoolean:function(t,i){this.writeMessage(t,writePackedBoolean,i)},writePackedFloat:function(t,i){this.writeMessage(t,writePackedFloat,i)},writePackedDouble:function(t,i){this.writeMessage(t,writePackedDouble,i)},writePackedFixed32:function(t,i){this.writeMessage(t,writePackedFixed32,i)},writePackedSFixed32:function(t,i){this.writeMessage(t,writePackedSFixed32,i)},writePackedFixed64:function(t,i){this.writeMessage(t,writePackedFixed64,i)},writePackedSFixed64:function(t,i){this.writeMessage(t,writePackedSFixed64,i)},writeBytesField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeBytes(i)},writeFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFixed32(i)},writeSFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeSFixed32(i)},writeFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeFixed64(i)},writeSFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeSFixed64(i)},writeVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeVarint(i)},writeSVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeSVarint(i)},writeStringField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeString(i)},writeFloatField:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFloat(i)},writeDoubleField:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeDouble(i)},writeBooleanField:function(t,i){this.writeVarintField(t,Boolean(i))}};\n},{\"ieee754\":23}],30:[function(_dereq_,module,exports){\nfunction defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex<t;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,t=queue.length}currentQueue=null,draining=!1,runClearTimeout(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}var process=module.exports={},cachedSetTimeout,cachedClearTimeout;!function(){try{cachedSetTimeout=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var queue=[],draining=!1,currentQueue,queueIndex=-1;process.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];queue.push(new Item(e,t)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.version=\"\",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(e){return[]},process.binding=function(e){throw new Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(e){throw new Error(\"process.chdir is not supported\")},process.umask=function(){return 0};\n},{}],31:[function(_dereq_,module,exports){\n\"use strict\";function partialSort(a,t,r,o,p){for(r=r||0,o=o||a.length-1,p=p||defaultCompare;o>r;){if(o-r>600){var f=o-r+1,e=t-r+1,l=Math.log(f),s=.5*Math.exp(2*l/3),i=.5*Math.sqrt(l*s*(f-s)/f)*(e-f/2<0?-1:1);partialSort(a,t,Math.max(r,Math.floor(t-e*s/f+i)),Math.min(o,Math.floor(t+(f-e)*s/f+i)),p)}var n=a[t],h=r,u=o;for(swap(a,r,t),p(a[o],n)>0&&swap(a,r,o);h<u;){for(swap(a,h,u),h++,u--;p(a[h],n)<0;)h++;for(;p(a[u],n)>0;)u--}0===p(a[r],n)?swap(a,r,u):(u++,swap(a,u,o)),u<=t&&(r=u+1),t<=u&&(o=u-1)}}function swap(a,t,r){var o=a[t];a[t]=a[r],a[r]=o}function defaultCompare(a,t){return a<t?-1:a>t?1:0}module.exports=partialSort;\n},{}],32:[function(_dereq_,module,exports){\n\"use strict\";function supercluster(t){return new SuperCluster(t)}function SuperCluster(t){this.options=extend(Object.create(this.options),t),this.trees=new Array(this.options.maxZoom+1)}function createCluster(t,e,n,o,i){return{x:t,y:e,zoom:1/0,id:o,properties:i,parentId:-1,numPoints:n}}function createPointCluster(t,e){var n=t.geometry.coordinates;return{x:lngX(n[0]),y:latY(n[1]),zoom:1/0,id:e,parentId:-1}}function getClusterJSON(t){return{type:\"Feature\",properties:getClusterProperties(t),geometry:{type:\"Point\",coordinates:[xLng(t.x),yLat(t.y)]}}}function getClusterProperties(t){var e=t.numPoints,n=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return extend(extend({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:n})}function lngX(t){return t/360+.5}function latY(t){var e=Math.sin(t*Math.PI/180),n=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return n<0?0:n>1?1:n}function xLng(t){return 360*(t-.5)}function yLat(t){var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function extend(t,e){for(var n in e)t[n]=e[n];return t}function getX(t){return t.x}function getY(t){return t.y}var kdbush=_dereq_(\"kdbush\");module.exports=supercluster,SuperCluster.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time(\"total time\");var n=\"prepare \"+t.length+\" points\";e&&console.time(n),this.points=t;var o=t.map(createPointCluster);e&&console.timeEnd(n);for(var i=this.options.maxZoom;i>=this.options.minZoom;i--){var r=+Date.now();this.trees[i+1]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),o=this._cluster(o,i),e&&console.log(\"z%d: %d clusters in %dms\",i,o.length,+Date.now()-r)}return this.trees[this.options.minZoom]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),e&&console.timeEnd(\"total time\"),this},getClusters:function(t,e){for(var n=this.trees[this._limitZoom(e)],o=n.range(lngX(t[0]),latY(t[3]),lngX(t[2]),latY(t[1])),i=[],r=0;r<o.length;r++){var s=n.points[o[r]];i.push(s.numPoints?getClusterJSON(s):this.points[s.id])}return i},getChildren:function(t,e){for(var n=this.trees[e+1].points[t],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=this.trees[e+1].within(n.x,n.y,o),r=[],s=0;s<i.length;s++){var u=this.trees[e+1].points[i[s]];u.parentId===t&&r.push(u.numPoints?getClusterJSON(u):this.points[u.id])}return r},getLeaves:function(t,e,n,o){n=n||10,o=o||0;var i=[];return this._appendLeaves(i,t,e,n,o,0),i},getTile:function(t,e,n){var o=this.trees[this._limitZoom(t)],i=Math.pow(2,t),r=this.options.extent,s=this.options.radius,u=s/r,a=(n-u)/i,p=(n+1+u)/i,h={features:[]};return this._addTileFeatures(o.range((e-u)/i,a,(e+1+u)/i,p),o.points,e,n,i,h),0===e&&this._addTileFeatures(o.range(1-u/i,a,1,p),o.points,i,n,i,h),e===i-1&&this._addTileFeatures(o.range(0,a,u/i,p),o.points,-1,n,i,h),h.features.length?h:null},getClusterExpansionZoom:function(t,e){for(;e<this.options.maxZoom;){var n=this.getChildren(t,e);if(e++,1!==n.length)break;t=n[0].properties.cluster_id}return e},_appendLeaves:function(t,e,n,o,i,r){for(var s=this.getChildren(e,n),u=0;u<s.length;u++){var a=s[u].properties;if(a.cluster?r+a.point_count<=i?r+=a.point_count:r=this._appendLeaves(t,a.cluster_id,n+1,o,i,r):r<i?r++:t.push(s[u]),t.length===o)break}return r},_addTileFeatures:function(t,e,n,o,i,r){for(var s=0;s<t.length;s++){var u=e[t[s]];r.features.push({type:1,geometry:[[Math.round(this.options.extent*(u.x*i-n)),Math.round(this.options.extent*(u.y*i-o))]],tags:u.numPoints?getClusterProperties(u):this.points[u.id].properties})}},_limitZoom:function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},_cluster:function(t,e){for(var n=[],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=0;i<t.length;i++){var r=t[i];if(!(r.zoom<=e)){r.zoom=e;var s=this.trees[e+1],u=s.within(r.x,r.y,o),a=r.numPoints||1,p=r.x*a,h=r.y*a,l=null;this.options.reduce&&(l=this.options.initial(),this._accumulate(l,r));for(var c=0;c<u.length;c++){var d=s.points[u[c]];if(e<d.zoom){var m=d.numPoints||1;d.zoom=e,p+=d.x*m,h+=d.y*m,a+=m,d.parentId=i,this.options.reduce&&this._accumulate(l,d)}}1===a?n.push(r):(r.parentId=i,n.push(createCluster(p/a,h/a,a,i,l)))}}return n},_accumulate:function(t,e){var n=e.numPoints?e.properties:this.options.map(this.points[e.id].properties);this.options.reduce(t,n)}};\n},{\"kdbush\":24}],33:[function(_dereq_,module,exports){\n\"use strict\";function TinyQueue(t,i){if(!(this instanceof TinyQueue))return new TinyQueue(t,i);if(this.data=t||[],this.length=this.data.length,this.compare=i||defaultCompare,this.length>0)for(var e=this.length>>1;e>=0;e--)this._down(e)}function defaultCompare(t,i){return t<i?-1:t>i?1:0}module.exports=TinyQueue,TinyQueue.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var i=this.data,e=this.compare,h=i[t];t>0;){var n=t-1>>1,a=i[n];if(e(h,a)>=0)break;i[t]=a,t=n}i[t]=h},_down:function(t){for(var i=this.data,e=this.compare,h=this.length,n=h>>1,a=i[t];t<n;){var s=1+(t<<1),u=s+1,r=i[s];if(u<h&&e(i[u],r)<0&&(s=u,r=i[u]),e(r,a)>=0)break;i[t]=r,t=s}i[t]=a}};\n},{}],34:[function(_dereq_,module,exports){\n\"function\"==typeof Object.create?module.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:module.exports=function(t,e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t};\n},{}],35:[function(_dereq_,module,exports){\nmodule.exports=function(o){return o&&\"object\"==typeof o&&\"function\"==typeof o.copy&&\"function\"==typeof o.fill&&\"function\"==typeof o.readUInt8};\n},{}],36:[function(_dereq_,module,exports){\n(function (process,global){\nfunction inspect(e,r){var t={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),isBoolean(r)?t.showHidden=r:r&&exports._extend(t,r),isUndefined(t.showHidden)&&(t.showHidden=!1),isUndefined(t.depth)&&(t.depth=2),isUndefined(t.colors)&&(t.colors=!1),isUndefined(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=stylizeWithColor),formatValue(t,e,t.depth)}function stylizeWithColor(e,r){var t=inspect.styles[r];return t?\"\u001b[\"+inspect.colors[t][0]+\"m\"+e+\"\u001b[\"+inspect.colors[t][1]+\"m\":e}function stylizeNoColor(e,r){return e}function arrayToHash(e){var r={};return e.forEach(function(e,t){r[e]=!0}),r}function formatValue(e,r,t){if(e.customInspect&&r&&isFunction(r.inspect)&&r.inspect!==exports.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(t,e);return isString(n)||(n=formatValue(e,n,t)),n}var i=formatPrimitive(e,r);if(i)return i;var o=Object.keys(r),s=arrayToHash(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),isError(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return formatError(r);if(0===o.length){if(isFunction(r)){var u=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+u+\"]\",\"special\")}if(isRegExp(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(isDate(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(isError(r))return formatError(r)}var c=\"\",a=!1,l=[\"{\",\"}\"];if(isArray(r)&&(a=!0,l=[\"[\",\"]\"]),isFunction(r)){c=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\"}if(isRegExp(r)&&(c=\" \"+RegExp.prototype.toString.call(r)),isDate(r)&&(c=\" \"+Date.prototype.toUTCString.call(r)),isError(r)&&(c=\" \"+formatError(r)),0===o.length&&(!a||0==r.length))return l[0]+c+l[1];if(t<0)return isRegExp(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\");e.seen.push(r);var p;return p=a?formatArray(e,r,t,s,o):o.map(function(n){return formatProperty(e,r,t,s,n,a)}),e.seen.pop(),reduceToSingleString(p,c,l)}function formatPrimitive(e,r){if(isUndefined(r))return e.stylize(\"undefined\",\"undefined\");if(isString(r)){var t=\"'\"+JSON.stringify(r).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(t,\"string\")}return isNumber(r)?e.stylize(\"\"+r,\"number\"):isBoolean(r)?e.stylize(\"\"+r,\"boolean\"):isNull(r)?e.stylize(\"null\",\"null\"):void 0}function formatError(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function formatArray(e,r,t,n,i){for(var o=[],s=0,u=r.length;s<u;++s)hasOwnProperty(r,String(s))?o.push(formatProperty(e,r,t,n,String(s),!0)):o.push(\"\");return i.forEach(function(i){i.match(/^\\d+$/)||o.push(formatProperty(e,r,t,n,i,!0))}),o}function formatProperty(e,r,t,n,i,o){var s,u,c;if(c=Object.getOwnPropertyDescriptor(r,i)||{value:r[i]},c.get?u=c.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):c.set&&(u=e.stylize(\"[Setter]\",\"special\")),hasOwnProperty(n,i)||(s=\"[\"+i+\"]\"),u||(e.seen.indexOf(c.value)<0?(u=isNull(t)?formatValue(e,c.value,null):formatValue(e,c.value,t-1),u.indexOf(\"\\n\")>-1&&(u=o?u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\"))):u=e.stylize(\"[Circular]\",\"special\")),isUndefined(s)){if(o&&i.match(/^\\d+$/))return u;s=JSON.stringify(\"\"+i),s.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,\"name\")):(s=s.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),s=e.stylize(s,\"string\"))}return s+\": \"+u}function reduceToSingleString(e,r,t){var n=0;return e.reduce(function(e,r){return n++,r.indexOf(\"\\n\")>=0&&n++,e+r.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60?t[0]+(\"\"===r?\"\":r+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+t[1]:t[0]+r+\" \"+e.join(\", \")+\" \"+t[1]}function isArray(e){return Array.isArray(e)}function isBoolean(e){return\"boolean\"==typeof e}function isNull(e){return null===e}function isNullOrUndefined(e){return null==e}function isNumber(e){return\"number\"==typeof e}function isString(e){return\"string\"==typeof e}function isSymbol(e){return\"symbol\"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&\"[object RegExp]\"===objectToString(e)}function isObject(e){return\"object\"==typeof e&&null!==e}function isDate(e){return isObject(e)&&\"[object Date]\"===objectToString(e)}function isError(e){return isObject(e)&&(\"[object Error]\"===objectToString(e)||e instanceof Error)}function isFunction(e){return\"function\"==typeof e}function isPrimitive(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?\"0\"+e.toString(10):e.toString(10)}function timestamp(){var e=new Date,r=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(\":\");return[e.getDate(),months[e.getMonth()],r].join(\" \")}function hasOwnProperty(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var formatRegExp=/%[sdj%]/g;exports.format=function(e){if(!isString(e)){for(var r=[],t=0;t<arguments.length;t++)r.push(inspect(arguments[t]));return r.join(\" \")}for(var t=1,n=arguments,i=n.length,o=String(e).replace(formatRegExp,function(e){if(\"%%\"===e)return\"%\";if(t>=i)return e;switch(e){case\"%s\":return String(n[t++]);case\"%d\":return Number(n[t++]);case\"%j\":try{return JSON.stringify(n[t++])}catch(e){return\"[Circular]\"}default:return e}}),s=n[t];t<i;s=n[++t])isNull(s)||!isObject(s)?o+=\" \"+s:o+=\" \"+inspect(s);return o},exports.deprecate=function(e,r){function t(){if(!n){if(process.throwDeprecation)throw new Error(r);process.traceDeprecation?console.trace(r):console.error(r),n=!0}return e.apply(this,arguments)}if(isUndefined(global.process))return function(){return exports.deprecate(e,r).apply(this,arguments)};if(!0===process.noDeprecation)return e;var n=!1;return t};var debugs={},debugEnviron;exports.debuglog=function(e){if(isUndefined(debugEnviron)&&(debugEnviron=process.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!debugs[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(debugEnviron)){var r=process.pid;debugs[e]=function(){var t=exports.format.apply(exports,arguments);console.error(\"%s %d: %s\",e,r,t)}}else debugs[e]=function(){};return debugs[e]},exports.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},exports.isArray=isArray,exports.isBoolean=isBoolean,exports.isNull=isNull,exports.isNullOrUndefined=isNullOrUndefined,exports.isNumber=isNumber,exports.isString=isString,exports.isSymbol=isSymbol,exports.isUndefined=isUndefined,exports.isRegExp=isRegExp,exports.isObject=isObject,exports.isDate=isDate,exports.isError=isError,exports.isFunction=isFunction,exports.isPrimitive=isPrimitive,exports.isBuffer=_dereq_(\"./support/isBuffer\");var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];exports.log=function(){console.log(\"%s - %s\",timestamp(),exports.format.apply(exports,arguments))},exports.inherits=_dereq_(\"inherits\"),exports._extend=function(e,r){if(!r||!isObject(r))return e;for(var t=Object.keys(r),n=t.length;n--;)e[t[n]]=r[t[n]];return e};\n}).call(this,_dereq_('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./support/isBuffer\":35,\"_process\":30,\"inherits\":34}],37:[function(_dereq_,module,exports){\nfunction fromVectorTileJs(e){var r=new Pbf;return writeTile(e,r),r.finish()}function fromGeojsonVt(e){var r={};for(var t in e)r[t]=new GeoJSONWrapper(e[t].features),r[t].name=t;return fromVectorTileJs({layers:r})}function writeTile(e,r){for(var t in e.layers)r.writeMessage(3,writeLayer,e.layers[t])}function writeLayer(e,r){r.writeVarintField(15,e.version||1),r.writeStringField(1,e.name||\"\"),r.writeVarintField(5,e.extent||4096);var t,i={keys:[],values:[],keycache:{},valuecache:{}};for(t=0;t<e.length;t++)i.feature=e.feature(t),r.writeMessage(2,writeFeature,i);var a=i.keys;for(t=0;t<a.length;t++)r.writeStringField(3,a[t]);var o=i.values;for(t=0;t<o.length;t++)r.writeMessage(4,writeValue,o[t])}function writeFeature(e,r){var t=e.feature;void 0!==t.id&&r.writeVarintField(1,t.id),r.writeMessage(2,writeProperties,e),r.writeVarintField(3,t.type),r.writeMessage(4,writeGeometry,t)}function writeProperties(e,r){var t=e.feature,i=e.keys,a=e.values,o=e.keycache,n=e.valuecache;for(var l in t.properties){var s=o[l];void 0===s&&(i.push(l),s=i.length-1,o[l]=s),r.writeVarint(s);var u=t.properties[l],f=typeof u;\"string\"!==f&&\"boolean\"!==f&&\"number\"!==f&&(u=JSON.stringify(u));var w=f+\":\"+u,v=n[w];void 0===v&&(a.push(u),v=a.length-1,n[w]=v),r.writeVarint(v)}}function command(e,r){return(r<<3)+(7&e)}function zigzag(e){return e<<1^e>>31}function writeGeometry(e,r){for(var t=e.loadGeometry(),i=e.type,a=0,o=0,n=t.length,l=0;l<n;l++){var s=t[l],u=1;1===i&&(u=s.length),r.writeVarint(command(1,u));for(var f=0;f<s.length;f++){1===f&&1!==i&&r.writeVarint(command(2,s.length-1));var w=s[f].x-a,v=s[f].y-o;r.writeVarint(zigzag(w)),r.writeVarint(zigzag(v)),a+=w,o+=v}}}function writeValue(e,r){var t=typeof e;\"string\"===t?r.writeStringField(1,e):\"boolean\"===t?r.writeBooleanField(7,e):\"number\"===t&&(e%1!=0?r.writeDoubleField(3,e):e<0?r.writeSVarintField(6,e):r.writeVarintField(5,e))}var Pbf=_dereq_(\"pbf\"),GeoJSONWrapper=_dereq_(\"./lib/geojson_wrapper\");module.exports=fromVectorTileJs,module.exports.fromVectorTileJs=fromVectorTileJs,module.exports.fromGeojsonVt=fromGeojsonVt,module.exports.GeoJSONWrapper=GeoJSONWrapper;\n},{\"./lib/geojson_wrapper\":38,\"pbf\":29}],38:[function(_dereq_,module,exports){\n\"use strict\";function GeoJSONWrapper(e){this.features=e,this.length=e.length}function FeatureWrapper(e){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=4096}var Point=_dereq_(\"@mapbox/point-geometry\"),VectorTileFeature=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature;module.exports=GeoJSONWrapper,GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this.features[e])},FeatureWrapper.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var r=e[t],o=[],a=0;a<r.length;a++)o.push(new Point(r[a][0],r[a][1]));this.geometry.push(o)}return this.geometry},FeatureWrapper.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,a=-1/0,p=0;p<e.length;p++)for(var i=e[p],n=0;n<i.length;n++){var h=i[n];t=Math.min(t,h.x),r=Math.max(r,h.x),o=Math.min(o,h.y),a=Math.max(a,h.y)}return[t,o,r,a]},FeatureWrapper.prototype.toGeoJSON=VectorTileFeature.prototype.toGeoJSON;\n},{\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],39:[function(_dereq_,module,exports){\nvar bundleFn=arguments[3],sources=arguments[4],cache=arguments[5],stringify=JSON.stringify;module.exports=function(r,e){function t(r){d[r]=!0;for(var e in sources[r][1]){var n=sources[r][1][e];d[n]||t(n)}}for(var n,o=Object.keys(cache),a=0,i=o.length;a<i;a++){var s=o[a],u=cache[s].exports;if(u===r||u&&u.default===r){n=s;break}}if(!n){n=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},a=0,i=o.length;a<i;a++){var s=o[a];f[s]=s}sources[n]=[Function([\"require\",\"module\",\"exports\"],\"(\"+r+\")(self)\"),f]}var c=Math.floor(Math.pow(16,8)*Math.random()).toString(16),l={};l[n]=n,sources[c]=[Function([\"require\"],\"var f = require(\"+stringify(n)+\");(f.default ? f.default : f)(self);\"),l];var d={};t(c);var g=\"(\"+bundleFn+\")({\"+Object.keys(d).map(function(r){return stringify(r)+\":[\"+sources[r][0]+\",\"+stringify(sources[r][1])+\"]\"}).join(\",\")+\"},{},[\"+stringify(c)+\"])\",v=window.URL||window.webkitURL||window.mozURL||window.msURL,w=new Blob([g],{type:\"text/javascript\"});if(e&&e.bare)return w;var h=v.createObjectURL(w),b=new Worker(h);return b.objectURL=h,b};\n},{}],40:[function(_dereq_,module,exports){\nmodule.exports.RADIUS=6378137,module.exports.FLATTENING=1/298.257223563,module.exports.POLAR_RADIUS=6356752.3142;\n},{}],41:[function(_dereq_,module,exports){\nmodule.exports={\"version\":\"0.40.1\"}\n},{}],42:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");module.exports={deserialize:function(e,r){var t={};if(!r)return t;for(var i=0,a=e;i<a.length;i+=1){var l=a[i],u=l.layerIds.map(function(e){return r.getLayer(e)}).filter(Boolean);if(0!==u.length)for(var n=u[0].createBucket(util.extend({layers:u},l)),o=0,f=u;o<f.length;o+=1){var s=f[o];t[s.id]=n}}return t}};\n},{\"../util/util\":223}],43:[function(_dereq_,module,exports){\n\"use strict\";function addCircleVertex(e,r,t,i,a){e.emplaceBack(2*r+(i+1)/2,2*t+(a+1)/2)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),circleInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"circle-color\"},{property:\"circle-radius\"},{property:\"circle-blur\"},{property:\"circle-opacity\"},{property:\"circle-stroke-color\"},{property:\"circle-stroke-width\"},{property:\"circle-stroke-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(circleInterface.layoutAttributes),CircleBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(circleInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};CircleBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var o=a[i],n=o.feature,y=o.index,u=o.sourceLayerIndex;if(t.layers[0].filter(n)){var s=loadGeometry(n);t.addFeature(n,s),r.featureIndex.insert(n,s,y,u,t.index)}}},CircleBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},CircleBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},CircleBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},CircleBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},CircleBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=r;i<a.length;i+=1)for(var o=a[i],n=0,y=o;n<y.length;n+=1){var u=y[n],s=u.x,c=u.y;if(!(s<0||s>=EXTENT||c<0||c>=EXTENT)){var l=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),p=l.vertexLength;addCircleVertex(t.layoutVertexArray,s,c,-1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,1),addCircleVertex(t.layoutVertexArray,s,c,-1,1),t.indexArray.emplaceBack(p,p+1,p+2),t.indexArray.emplaceBack(p,p+3,p+2),l.vertexLength+=4,l.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},CircleBucket.programInterface=circleInterface,module.exports=CircleBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56}],44:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),LineIndexArray=ref$2.LineIndexArray,TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,indexArrayType2:LineIndexArray,paintAttributes:[{property:\"fill-color\"},{property:\"fill-outline-color\"},{property:\"fill-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(fillInterface.layoutAttributes),FillBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.indexArray2=new LineIndexArray(e.indexArray2),this.programConfigurations=new ProgramConfigurationSet(fillInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments),this.segments2=new SegmentVector(e.segments2)};FillBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var n=a[i],o=n.feature,s=n.index,y=n.sourceLayerIndex;if(t.layers[0].filter(o)){var l=loadGeometry(o);t.addFeature(o,l),r.featureIndex.insert(o,l,s,y,t.index)}}},FillBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),indexArray2:this.indexArray2.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),segments2:this.segments2.get()}},FillBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.indexBuffer2=new IndexBuffer(e,this.indexArray2),this.programConfigurations.upload(e)},FillBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},FillBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=classifyRings(r,EARCUT_MAX_RINGS);i<a.length;i+=1){for(var n=a[i],o=0,s=0,y=n;s<y.length;s+=1){o+=y[s].length}for(var l=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray),u=l.vertexLength,f=[],g=[],x=0,p=n;x<p.length;x+=1){var h=p[x];if(0!==h.length){h!==n[0]&&g.push(f.length/2);var d=t.segments2.prepareSegment(h.length,t.layoutVertexArray,t.indexArray2),c=d.vertexLength;t.layoutVertexArray.emplaceBack(h[0].x,h[0].y),t.indexArray2.emplaceBack(c+h.length-1,c),f.push(h[0].x),f.push(h[0].y);for(var m=1;m<h.length;m++)t.layoutVertexArray.emplaceBack(h[m].x,h[m].y),t.indexArray2.emplaceBack(c+m-1,c+m),f.push(h[m].x),f.push(h[m].y);d.vertexLength+=h.length,d.primitiveLength+=h.length}}for(var A=earcut(f,g),B=0;B<A.length;B+=3)t.indexArray.emplaceBack(u+A[B],u+A[B+1],u+A[B+2]);l.vertexLength+=o,l.primitiveLength+=A.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillBucket.programInterface=fillInterface,module.exports=FillBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],45:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,r,t,a,i,n,o,s){e.emplaceBack(r,t,2*Math.floor(a*FACTOR)+o,i*FACTOR*2,n*FACTOR*2,Math.round(s))}function isBoundaryEdge(e,r){return e.x===r.x&&(e.x<0||e.x>EXTENT)||e.y===r.y&&(e.y<0||e.y>EXTENT)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,MAX_VERTEX_ARRAY_LENGTH=ref.MAX_VERTEX_ARRAY_LENGTH,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillExtrusionInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal\",components:3,type:\"Int16\"},{name:\"a_edgedistance\",components:1,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"fill-extrusion-base\"},{property:\"fill-extrusion-height\"},{property:\"fill-extrusion-color\"}]},FACTOR=Math.pow(2,13),LayoutVertexArrayType=createVertexArrayType(fillExtrusionInterface.layoutAttributes),FillExtrusionBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(fillExtrusionInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};FillExtrusionBucket.prototype.populate=function(e,r){for(var t=this,a=0,i=e;a<i.length;a+=1){var n=i[a],o=n.feature,s=n.index,u=n.sourceLayerIndex;if(t.layers[0].filter(o)){var y=loadGeometry(o);t.addFeature(o,y),r.featureIndex.insert(o,y,s,u,t.index)}}},FillExtrusionBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillExtrusionBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},FillExtrusionBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},FillExtrusionBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},FillExtrusionBucket.prototype.addFeature=function(e,r){for(var t=this,a=0,i=classifyRings(r,EARCUT_MAX_RINGS);a<i.length;a+=1){for(var n=i[a],o=0,s=0,u=n;s<u.length;s+=1){o+=u[s].length}for(var y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),l=0,x=n;l<x.length;l+=1){var f=x[l];if(0!==f.length)for(var g=0,p=0;p<f.length;p++){var d=f[p];if(p>=1){var h=f[p-1];if(!isBoundaryEdge(d,h)){y.vertexLength+4>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray));var A=d.sub(h)._perp()._unit();addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,1,g),g+=h.dist(d),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,1,g);var c=y.vertexLength;t.indexArray.emplaceBack(c,c+1,c+2),t.indexArray.emplaceBack(c+1,c+2,c+3),y.vertexLength+=4,y.primitiveLength+=2}}}}y.vertexLength+o>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray));for(var m=[],V=[],E=y.vertexLength,v=0,_=n;v<_.length;v+=1){var T=_[v];if(0!==T.length){T!==n[0]&&V.push(m.length/2);for(var B=0;B<T.length;B++){var R=T[B];addVertex(t.layoutVertexArray,R.x,R.y,0,0,1,1,0),m.push(R.x),m.push(R.y)}}}for(var I=earcut(m,V),C=0;C<I.length;C+=3)t.indexArray.emplaceBack(E+I[C],E+I[C+1],E+I[C+2]);y.primitiveLength+=I.length/3,y.vertexLength+=o}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillExtrusionBucket.programInterface=fillExtrusionInterface,module.exports=FillExtrusionBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],46:[function(_dereq_,module,exports){\n\"use strict\";function addLineVertex(e,t,r,i,a,n,s){e.emplaceBack(t.x,t.y,i?1:0,a?1:-1,Math.round(EXTRUDE_SCALE*r.x)+128,Math.round(EXTRUDE_SCALE*r.y)+128,1+(0===n?0:n<0?-1:1)|(s*LINE_DISTANCE_SCALE&63)<<2,s*LINE_DISTANCE_SCALE>>6)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,EXTRUDE_SCALE=63,COS_HALF_SHARP_CORNER=Math.cos(Math.PI/180*37.5),SHARP_CORNER_OFFSET=15,LINE_DISTANCE_BUFFER_BITS=15,LINE_DISTANCE_SCALE=.5,MAX_LINE_DISTANCE=Math.pow(2,LINE_DISTANCE_BUFFER_BITS-1)/LINE_DISTANCE_SCALE,lineInterface={layoutAttributes:[{name:\"a_pos_normal\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],paintAttributes:[{property:\"line-color\"},{property:\"line-blur\"},{property:\"line-opacity\"},{property:\"line-gap-width\",name:\"gapwidth\"},{property:\"line-offset\"},{property:\"line-width\"},{property:\"line-width\",name:\"floorwidth\",useIntegerZoom:!0}],indexArrayType:TriangleIndexArray},LayoutVertexArrayType=createVertexArrayType(lineInterface.layoutAttributes),LineBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(lineInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};LineBucket.prototype.populate=function(e,t){for(var r=this,i=0,a=e;i<a.length;i+=1){var n=a[i],s=n.feature,o=n.index,u=n.sourceLayerIndex;if(r.layers[0].filter(s)){var d=loadGeometry(s);r.addFeature(s,d),t.featureIndex.insert(s,d,o,u,r.index)}}},LineBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},LineBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},LineBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},LineBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},LineBucket.prototype.addFeature=function(e,t){for(var r=this,i=this.layers[0].layout,a=this.layers[0].getLayoutValue(\"line-join\",{zoom:this.zoom},e.properties),n=i[\"line-cap\"],s=i[\"line-miter-limit\"],o=i[\"line-round-limit\"],u=0,d=t;u<d.length;u+=1){var l=d[u];r.addLine(l,e,a,n,s,o)}},LineBucket.prototype.addLine=function(e,t,r,i,a,n){for(var s=this,o=t.properties,u=\"Polygon\"===vectorTileFeatureTypes[t.type],d=e.length;d>=2&&e[d-1].equals(e[d-2]);)d--;for(var l=0;l<d-1&&e[l].equals(e[l+1]);)l++;if(!(d<(u?3:2))){\"bevel\"===r&&(a=1.05);var y=SHARP_CORNER_OFFSET*(EXTENT/(512*this.overscaling)),h=e[l],p=this.segments.prepareSegment(10*d,this.layoutVertexArray,this.indexArray);this.distance=0;var c,f,x,m=i,g=u?\"butt\":i,_=!0,A=void 0,v=void 0,V=void 0,C=void 0;this.e1=this.e2=this.e3=-1,u&&(c=e[d-2],C=h.sub(c)._unit()._perp());for(var L=l;L<d;L++)if(!(v=u&&L===d-1?e[l+1]:e[L+1])||!e[L].equals(v)){C&&(V=C),c&&(A=c),c=e[L],C=v?v.sub(c)._unit()._perp():V,V=V||C;var E=V.add(C);0===E.x&&0===E.y||E._unit();var S=E.x*C.x+E.y*C.y,I=0!==S?1/S:1/0,T=S<COS_HALF_SHARP_CORNER&&A&&v;if(T&&L>l){var B=c.dist(A);if(B>2*y){var b=c.sub(c.sub(A)._mult(y/B)._round());s.distance+=b.dist(A),s.addCurrentVertex(b,s.distance,V.mult(1),0,0,!1,p),A=b}}var N=A&&v,k=N?r:v?m:g;if(N&&\"round\"===k&&(I<n?k=\"miter\":I<=2&&(k=\"fakeround\")),\"miter\"===k&&I>a&&(k=\"bevel\"),\"bevel\"===k&&(I>2&&(k=\"flipbevel\"),I<a&&(k=\"miter\")),A&&(s.distance+=c.dist(A)),\"miter\"===k)E._mult(I),s.addCurrentVertex(c,s.distance,E,0,0,!1,p);else if(\"flipbevel\"===k){if(I>100)E=C.clone().mult(-1);else{var R=V.x*C.y-V.y*C.x>0?-1:1,F=I*V.add(C).mag()/V.sub(C).mag();E._perp()._mult(F*R)}s.addCurrentVertex(c,s.distance,E,0,0,!1,p),s.addCurrentVertex(c,s.distance,E.mult(-1),0,0,!1,p)}else if(\"bevel\"===k||\"fakeround\"===k){var q=V.x*C.y-V.y*C.x>0,P=-Math.sqrt(I*I-1);if(q?(x=0,f=P):(f=0,x=P),_||s.addCurrentVertex(c,s.distance,V,f,x,!1,p),\"fakeround\"===k){for(var w=Math.floor(8*(.5-(S-.5))),z=void 0,D=0;D<w;D++)z=C.mult((D+1)/(w+1))._add(V)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p);s.addPieSliceVertex(c,s.distance,E,q,p);for(var M=w-1;M>=0;M--)z=V.mult((M+1)/(w+1))._add(C)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p)}v&&s.addCurrentVertex(c,s.distance,C,-f,-x,!1,p)}else\"butt\"===k?(_||s.addCurrentVertex(c,s.distance,V,0,0,!1,p),v&&s.addCurrentVertex(c,s.distance,C,0,0,!1,p)):\"square\"===k?(_||(s.addCurrentVertex(c,s.distance,V,1,1,!1,p),s.e1=s.e2=-1),v&&s.addCurrentVertex(c,s.distance,C,-1,-1,!1,p)):\"round\"===k&&(_||(s.addCurrentVertex(c,s.distance,V,0,0,!1,p),s.addCurrentVertex(c,s.distance,V,1,1,!0,p),s.e1=s.e2=-1),v&&(s.addCurrentVertex(c,s.distance,C,-1,-1,!0,p),s.addCurrentVertex(c,s.distance,C,0,0,!1,p)));if(T&&L<d-1){var O=c.dist(v);if(O>2*y){var X=c.add(v.sub(c)._mult(y/O)._round());s.distance+=X.dist(c),s.addCurrentVertex(X,s.distance,C.mult(1),0,0,!1,p),c=X}}_=!1}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,o)}},LineBucket.prototype.addCurrentVertex=function(e,t,r,i,a,n,s){var o,u=this.layoutVertexArray,d=this.indexArray;o=r.clone(),i&&o._sub(r.perp()._mult(i)),addLineVertex(u,e,o,n,!1,i,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,o=r.mult(-1),a&&o._sub(r.perp()._mult(a)),addLineVertex(u,e,o,n,!0,-a,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,t>MAX_LINE_DISTANCE/2&&(this.distance=0,this.addCurrentVertex(e,this.distance,r,i,a,n,s))},LineBucket.prototype.addPieSliceVertex=function(e,t,r,i,a){r=r.mult(i?-1:1);var n=this.layoutVertexArray,s=this.indexArray;addLineVertex(n,e,r,!1,i,0,t),this.e3=a.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),a.primitiveLength++),i?this.e2=this.e3:this.e1=this.e3},LineBucket.programInterface=lineInterface,module.exports=LineBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/vector-tile\":6}],47:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,t,o,r,a,i,n,s){e.emplaceBack(t,o,Math.round(64*r),Math.round(64*a),i,n,s?s[0]:void 0,s?s[1]:void 0)}function addDynamicAttributes(e,t,o,r){var a=2*Math.PI,i=packUint8ToFloat((o+a)%a/a*255,10*r);e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i)}function addCollisionBoxVertex(e,t,o,r,a,i){return e.emplaceBack(t.x,t.y,o.x,o.y,Math.round(r.x),Math.round(r.y),10*a,10*i)}function getSizeData(e,t,o){var r={};if(r.isFeatureConstant=t.isLayoutValueFeatureConstant(o),r.isZoomConstant=t.isLayoutValueZoomConstant(o),r.isFeatureConstant&&(r.layoutSize=t.getLayoutValue(o,{zoom:e+1})),!r.isZoomConstant){for(var a=t.getLayoutValueStopZoomLevels(o),i=0;i<a.length&&a[i]<=e;)i++;i=Math.max(0,i-1);for(var n=i;n<a.length&&a[n]<e+1;)n++;n=Math.min(a.length-1,n),r.coveringZoomRange=[a[i],a[n]],t.isLayoutValueFeatureConstant(o)&&(r.coveringStopValues=[t.getLayoutValue(o,{zoom:a[i]}),t.getLayoutValue(o,{zoom:a[n]})]),r.functionBase=t.getLayoutProperty(o).base,void 0===r.functionBase&&(r.functionBase=1),r.functionType=t.getLayoutProperty(o).type||\"exponential\"}return r}function getSizeVertexData(e,t,o,r,a){return e.isLayoutValueZoomConstant(r)&&!e.isLayoutValueFeatureConstant(r)?[10*e.getLayoutValue(r,{},a)]:e.isLayoutValueZoomConstant(r)||e.isLayoutValueFeatureConstant(r)?null:[10*e.getLayoutValue(r,{zoom:o[0]},a),10*e.getLayoutValue(r,{zoom:o[1]},a)]}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,LineIndexArray=ref$2.LineIndexArray,EXTENT=_dereq_(\"../extent\"),ref$3=_dereq_(\"../../shaders/encode_attribute\"),packUint8ToFloat=ref$3.packUint8ToFloat,Anchor=_dereq_(\"../../symbol/anchor\"),getAnchors=_dereq_(\"../../symbol/get_anchors\"),resolveTokens=_dereq_(\"../../util/token\"),ref$4=_dereq_(\"../../symbol/quads\"),getGlyphQuads=ref$4.getGlyphQuads,getIconQuads=ref$4.getIconQuads,ref$5=_dereq_(\"../../symbol/shaping\"),shapeText=ref$5.shapeText,shapeIcon=ref$5.shapeIcon,WritingMode=ref$5.WritingMode,transformText=_dereq_(\"../../symbol/transform_text\"),mergeLines=_dereq_(\"../../symbol/mergelines\"),clipLine=_dereq_(\"../../symbol/clip_line\"),util=_dereq_(\"../../util/util\"),scriptDetection=_dereq_(\"../../util/script_detection\"),loadGeometry=_dereq_(\"../load_geometry\"),CollisionFeature=_dereq_(\"../../symbol/collision_feature\"),findPoleOfInaccessibility=_dereq_(\"../../util/find_pole_of_inaccessibility\"),classifyRings=_dereq_(\"../../util/classify_rings\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,createStructArrayType=_dereq_(\"../../util/struct_array\"),verticalizePunctuation=_dereq_(\"../../util/verticalize_punctuation\"),PlacedSymbolArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Float32\",name:\"placementZoom\"},{type:\"Uint8\",name:\"vertical\"}]}),GlyphOffsetArray=createStructArrayType({members:[{type:\"Float32\",name:\"offsetX\"}]}),LineVertexArray=createStructArrayType({members:[{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"}]}),layoutAttributes=[{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}],dynamicLayoutAttributes=[{name:\"a_projected_pos\",components:3,type:\"Float32\"}],symbolInterfaces={text:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"text-color\",name:\"fill_color\"},{property:\"text-halo-color\",name:\"halo_color\"},{property:\"text-halo-width\",name:\"halo_width\"},{property:\"text-halo-blur\",name:\"halo_blur\"},{property:\"text-opacity\",name:\"opacity\"}]},icon:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"icon-color\",name:\"fill_color\"},{property:\"icon-halo-color\",name:\"halo_color\"},{property:\"icon-halo-width\",name:\"halo_width\"},{property:\"icon-halo-blur\",name:\"halo_blur\"},{property:\"icon-opacity\",name:\"opacity\"}]},collisionBox:{layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"},{name:\"a_data\",components:2,type:\"Uint8\"}],indexArrayType:LineIndexArray}},SymbolBuffers=function(e,t,o,r){this.programInterface=e;var a=createVertexArrayType(e.layoutAttributes),i=e.indexArrayType;if(this.layoutVertexArray=new a(r&&r.layoutVertexArray),this.indexArray=new i(r&&r.indexArray),this.programConfigurations=new ProgramConfigurationSet(e,t,o,r&&r.programConfigurations),this.segments=new SegmentVector(r&&r.segments),e.dynamicLayoutAttributes){var n=createVertexArrayType(e.dynamicLayoutAttributes);this.dynamicLayoutVertexArray=new n(r&&r.dynamicLayoutVertexArray)}};SymbolBuffers.prototype.serialize=function(e){return{layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),dynamicLayoutVertexArray:this.dynamicLayoutVertexArray&&this.dynamicLayoutVertexArray.serialize(e)}},SymbolBuffers.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e),this.programInterface.dynamicLayoutAttributes&&(this.dynamicLayoutVertexBuffer=new VertexBuffer(e,this.dynamicLayoutVertexArray,!0))},SymbolBuffers.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer&&this.dynamicLayoutVertexBuffer.destroy())};var SymbolBucket=function(e){if(this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.sdfIcons=e.sdfIcons,this.iconsNeedLinear=e.iconsNeedLinear,this.pixelRatio=e.pixelRatio,e.text)this.text=new SymbolBuffers(symbolInterfaces.text,e.layers,e.zoom,e.text),this.icon=new SymbolBuffers(symbolInterfaces.icon,e.layers,e.zoom,e.icon),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,e.layers,e.zoom,e.collisionBox),this.textSizeData=e.textSizeData,this.iconSizeData=e.iconSizeData,this.placedGlyphArray=new PlacedSymbolArray(e.placedGlyphArray),this.placedIconArray=new PlacedSymbolArray(e.placedIconArray),this.glyphOffsetArray=new GlyphOffsetArray(e.glyphOffsetArray),this.lineVertexArray=new LineVertexArray(e.lineVertexArray);else{var t=this.layers[0];this.textSizeData=getSizeData(this.zoom,t,\"text-size\"),this.iconSizeData=getSizeData(this.zoom,t,\"icon-size\")}};SymbolBucket.prototype.populate=function(e,t){var o=this,r=this.layers[0],a=r.layout,i=a[\"text-font\"],n=(!r.isLayoutValueFeatureConstant(\"text-field\")||a[\"text-field\"])&&i,s=!r.isLayoutValueFeatureConstant(\"icon-image\")||a[\"icon-image\"];if(this.features=[],n||s){for(var l=t.iconDependencies,y=t.glyphDependencies,c=y[i]=y[i]||{},u={zoom:this.zoom},p=0,x=e;p<x.length;p+=1){var m=x[p],h=m.feature,d=m.index,f=m.sourceLayerIndex;if(r.filter(h)){var g=void 0;n&&(g=r.getLayoutValue(\"text-field\",u,h.properties),r.isLayoutValueFeatureConstant(\"text-field\")&&(g=resolveTokens(h.properties,g)),g=transformText(g,r,u,h.properties));var b=void 0;if(s&&(b=r.getLayoutValue(\"icon-image\",u,h.properties),r.isLayoutValueFeatureConstant(\"icon-image\")&&(b=resolveTokens(h.properties,b))),(g||b)&&(o.features.push({text:g,icon:b,index:d,sourceLayerIndex:f,geometry:loadGeometry(h),properties:h.properties,type:vectorTileFeatureTypes[h.type]}),b&&(l[b]=!0),g))for(var A=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],v=scriptDetection.allowsVerticalWritingMode(g),S=0;S<g.length;S++)if(c[g.charCodeAt(S)]=!0,A&&v){var I=verticalizePunctuation.lookup[g.charAt(S)];I&&(c[I.charCodeAt(0)]=!0)}}}\"line\"===a[\"symbol-placement\"]&&(this.features=mergeLines(this.features))}},SymbolBucket.prototype.isEmpty=function(){return 0===this.icon.layoutVertexArray.length&&0===this.text.layoutVertexArray.length&&0===this.collisionBox.layoutVertexArray.length},SymbolBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),sdfIcons:this.sdfIcons,iconsNeedLinear:this.iconsNeedLinear,textSizeData:this.textSizeData,iconSizeData:this.iconSizeData,placedGlyphArray:this.placedGlyphArray.serialize(e),placedIconArray:this.placedIconArray.serialize(e),glyphOffsetArray:this.glyphOffsetArray.serialize(e),lineVertexArray:this.lineVertexArray.serialize(e),text:this.text.serialize(e),icon:this.icon.serialize(e),collisionBox:this.collisionBox.serialize(e)}},SymbolBucket.prototype.upload=function(e){this.text.upload(e),this.icon.upload(e),this.collisionBox.upload(e)},SymbolBucket.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.collisionBox.destroy()},SymbolBucket.prototype.prepare=function(e,t,o,r){var a=this;this.symbolInstances=[];var i=512*this.overscaling;this.tilePixelRatio=EXTENT/i,this.compareText={},this.iconsNeedLinear=!1;for(var n=this.layers[0].layout,s=24*n[\"text-line-height\"],l=n[\"text-font\"].join(\",\"),y=\"map\"===n[\"text-rotation-alignment\"]&&\"line\"===n[\"symbol-placement\"],c=e[l]||{},u=t[l]||{},p=0,x=a.features;p<x.length;p+=1){var m=x[p],h={},d=m.text;if(d){var f=a.layers[0].getLayoutValue(\"text-offset\",{zoom:a.zoom},m.properties).map(function(e){return 24*e}),g=24*a.layers[0].getLayoutValue(\"text-letter-spacing\",{zoom:a.zoom},m.properties),b=scriptDetection.allowsLetterSpacing(d)?g:0,A=a.layers[0].getLayoutValue(\"text-anchor\",{zoom:a.zoom},m.properties),v=a.layers[0].getLayoutValue(\"text-justify\",{zoom:a.zoom},m.properties),S=\"line\"!==n[\"symbol-placement\"]?24*a.layers[0].getLayoutValue(\"text-max-width\",{zoom:a.zoom},m.properties):0,I=function(e,t){return shapeText(e,c,S,s,A,v,b,f,24,t)};h[WritingMode.horizontal]=I(d,WritingMode.horizontal),scriptDetection.allowsVerticalWritingMode(d)&&y&&(h[WritingMode.vertical]=I(d,WritingMode.vertical))}var B=void 0;if(m.icon){var z=o[m.icon];z&&(B=shapeIcon(r[m.icon],a.layers[0].getLayoutValue(\"icon-offset\",{zoom:a.zoom},m.properties),a.layers[0].getLayoutValue(\"icon-anchor\",{zoom:a.zoom},m.properties)),void 0===a.sdfIcons?a.sdfIcons=z.sdf:a.sdfIcons!==z.sdf&&util.warnOnce(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),z.pixelRatio!==a.pixelRatio?a.iconsNeedLinear=!0:0===n[\"icon-rotate\"]&&a.layers[0].isLayoutValueFeatureConstant(\"icon-rotate\")||(a.iconsNeedLinear=!0))}(h[WritingMode.horizontal]||B)&&a.addFeature(m,h,B,u)}},SymbolBucket.prototype.addFeature=function(e,t,o,r){var a=this,i=this.layers[0].getLayoutValue(\"text-size\",{zoom:this.zoom+1},e.properties),n=this.layers[0].getLayoutValue(\"icon-size\",{zoom:this.zoom+1},e.properties),s=this.layers[0].getLayoutValue(\"text-offset\",{zoom:this.zoom},e.properties),l=this.layers[0].getLayoutValue(\"icon-offset\",{zoom:this.zoom},e.properties),y=this.layers[0].getLayoutValue(\"text-size\",{zoom:18},e.properties);void 0===y&&(y=i);var c=this.layers[0].layout,u=i/24,p=this.tilePixelRatio*u,x=this.tilePixelRatio*y/24,m=this.tilePixelRatio*n,h=this.tilePixelRatio*c[\"symbol-spacing\"],d=c[\"symbol-avoid-edges\"],f=c[\"text-padding\"]*this.tilePixelRatio,g=c[\"icon-padding\"]*this.tilePixelRatio,b=c[\"text-max-angle\"]/180*Math.PI,A=\"map\"===c[\"text-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],v=\"map\"===c[\"icon-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],S=c[\"text-allow-overlap\"]||c[\"icon-allow-overlap\"]||c[\"text-ignore-placement\"]||c[\"icon-ignore-placement\"],I=c[\"symbol-placement\"],B=h/2,z=function(i,n){var y=!(n.x<0||n.x>EXTENT||n.y<0||n.y>EXTENT);if(!d||y){var c=y||S;a.addSymbolInstance(n,i,t,o,a.layers[0],c,a.collisionBoxArray,e.index,e.sourceLayerIndex,a.index,p,f,A,s,m,g,v,l,{zoom:a.zoom},e.properties,r)}};if(\"line\"===I)for(var V=0,L=clipLine(e.geometry,0,0,EXTENT,EXTENT);V<L.length;V+=1)for(var T=L[V],w=getAnchors(T,h,b,t[WritingMode.vertical]||t[WritingMode.horizontal],o,24,x,a.overscaling,EXTENT),M=0,C=w;M<C.length;M+=1){var _=C[M],k=t[WritingMode.horizontal];k&&a.anchorIsTooClose(k.text,B,_)||z(T,_)}else if(\"Polygon\"===e.type)for(var P=0,F=classifyRings(e.geometry,0);P<F.length;P+=1){var E=F[P],D=findPoleOfInaccessibility(E,16);z(E[0],new Anchor(D.x,D.y,0))}else if(\"LineString\"===e.type)for(var q=0,O=e.geometry;q<O.length;q+=1){var N=O[q];z(N,new Anchor(N[0].x,N[0].y,0))}else if(\"Point\"===e.type)for(var W=0,R=e.geometry;W<R.length;W+=1)for(var G=R[W],$=0,U=G;$<U.length;$+=1){var X=U[$];z([X],new Anchor(X.x,X.y,0))}},SymbolBucket.prototype.anchorIsTooClose=function(e,t,o){var r=this.compareText;if(e in r){for(var a=r[e],i=a.length-1;i>=0;i--)if(o.dist(a[i])<t)return!0}else r[e]=[];return r[e].push(o),!1},SymbolBucket.prototype.place=function(e,t){var o=this;this.text=new SymbolBuffers(symbolInterfaces.text,this.layers,this.zoom),this.icon=new SymbolBuffers(symbolInterfaces.icon,this.layers,this.zoom),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,this.layers,this.zoom),this.placedGlyphArray=new PlacedSymbolArray,this.placedIconArray=new PlacedSymbolArray,this.glyphOffsetArray=new GlyphOffsetArray,this.lineVertexArray=new LineVertexArray;var r=this.layers[0],a=r.layout,i=e.maxScale,n=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],s=\"map\"===a[\"icon-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"];if(a[\"text-allow-overlap\"]||a[\"icon-allow-overlap\"]||a[\"text-ignore-placement\"]||a[\"icon-ignore-placement\"]){var l=e.angle,y=Math.sin(l),c=Math.cos(l);this.symbolInstances.sort(function(e,t){return(y*e.anchor.x+c*e.anchor.y|0)-(y*t.anchor.x+c*t.anchor.y|0)||t.featureIndex-e.featureIndex})}for(var u=0,p=o.symbolInstances;u<p.length;u+=1){var x=p[u],m={boxStartIndex:x.textBoxStartIndex,boxEndIndex:x.textBoxEndIndex},h={boxStartIndex:x.iconBoxStartIndex,boxEndIndex:x.iconBoxEndIndex},d=!(x.textBoxStartIndex===x.textBoxEndIndex),f=!(x.iconBoxStartIndex===x.iconBoxEndIndex),g=a[\"text-optional\"]||!d,b=a[\"icon-optional\"]||!f,A=d?e.placeCollisionFeature(m,a[\"text-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale,v=f?e.placeCollisionFeature(h,a[\"icon-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale;if(g||b?!b&&A?A=Math.max(v,A):!g&&v&&(v=Math.max(v,A)):v=A=Math.max(v,A),d||f){for(var S=x.line,I=o.lineVertexArray.length,B=0;B<S.length;B++)o.lineVertexArray.emplaceBack(S[B].x,S[B].y);var z=o.lineVertexArray.length-I;if(d&&(e.insertCollisionFeature(m,A,a[\"text-ignore-placement\"]),A<=i)){var V=getSizeVertexData(r,o.zoom,o.textSizeData.coveringZoomRange,\"text-size\",x.featureProperties);o.addSymbols(o.text,x.glyphQuads,A,V,a[\"text-keep-upright\"],x.textOffset,n,e.angle,x.featureProperties,x.writingModes,x.anchor,I,z,o.placedGlyphArray)}if(f&&(e.insertCollisionFeature(h,v,a[\"icon-ignore-placement\"]),v<=i)){var L=getSizeVertexData(r,o.zoom,o.iconSizeData.coveringZoomRange,\"icon-size\",x.featureProperties);o.addSymbols(o.icon,x.iconQuads,v,L,a[\"icon-keep-upright\"],x.iconOffset,s,e.angle,x.featureProperties,0,x.anchor,I,z,o.placedIconArray)}}}t&&this.addToDebugBuffers(e)},SymbolBucket.prototype.addSymbols=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x){for(var m=this,h=e.indexArray,d=e.layoutVertexArray,f=e.dynamicLayoutVertexArray,g=this.zoom,b=Math.max(Math.log(o)/Math.LN2+g,0),A=this.glyphOffsetArray.length,v=(c.angle+s+2*Math.PI)%(2*Math.PI),S=v>1*Math.PI/4&&v<=3*Math.PI/4||v>5*Math.PI/4&&v<=7*Math.PI/4,I=Boolean(y&WritingMode.vertical)&&S,B=0,z=t;B<z.length;B+=1){var V=z[B];if(!n||!a||V.writingMode===WritingMode.vertical===I){var L=V.tl,T=V.tr,w=V.bl,M=V.br,C=V.tex,_=e.segments.prepareSegment(4,e.layoutVertexArray,e.indexArray),k=_.vertexLength,P=V.glyphOffset[1];addVertex(d,c.x,c.y,L.x,P+L.y,C.x,C.y,r),addVertex(d,c.x,c.y,T.x,P+T.y,C.x+C.w,C.y,r),addVertex(d,c.x,c.y,w.x,P+w.y,C.x,C.y+C.h,r),addVertex(d,c.x,c.y,M.x,P+M.y,C.x+C.w,C.y+C.h,r),addDynamicAttributes(f,c,0,b),h.emplaceBack(k,k+1,k+2),h.emplaceBack(k+1,k+2,k+3),_.vertexLength+=4,_.primitiveLength+=2,m.glyphOffsetArray.emplaceBack(V.glyphOffset[0])}}x.emplaceBack(c.x,c.y,A,this.glyphOffsetArray.length-A,u,p,c.segment,r?r[0]:0,r?r[1]:0,i[0],i[1],b,I),e.programConfigurations.populatePaintArrays(e.layoutVertexArray.length,l)},SymbolBucket.prototype.addToDebugBuffers=function(e){for(var t=this,o=this.collisionBox,r=o.layoutVertexArray,a=o.indexArray,i=-e.angle,n=e.yStretch,s=0,l=t.symbolInstances;s<l.length;s+=1){var y=l[s];y.textCollisionFeature={boxStartIndex:y.textBoxStartIndex,boxEndIndex:y.textBoxEndIndex},y.iconCollisionFeature={boxStartIndex:y.iconBoxStartIndex,boxEndIndex:y.iconBoxEndIndex};for(var c=0;c<2;c++){var u=y[0===c?\"textCollisionFeature\":\"iconCollisionFeature\"];if(u)for(var p=u.boxStartIndex;p<u.boxEndIndex;p++){var x=t.collisionBoxArray.get(p);if(!(1===e.perspectiveRatio&&x.maxScale<1)){var m=x.anchorPoint,h=new Point(x.x1,x.y1*n)._rotate(i),d=new Point(x.x2,x.y1*n)._rotate(i),f=new Point(x.x1,x.y2*n)._rotate(i),g=new Point(x.x2,x.y2*n)._rotate(i),b=Math.max(0,Math.min(25,t.zoom+Math.log(x.maxScale)/Math.LN2)),A=Math.max(0,Math.min(25,t.zoom+Math.log(x.placementScale)/Math.LN2)),v=o.segments.prepareSegment(4,o.layoutVertexArray,o.indexArray),S=v.vertexLength;addCollisionBoxVertex(r,m,y.anchor,h,b,A),addCollisionBoxVertex(r,m,y.anchor,d,b,A),addCollisionBoxVertex(r,m,y.anchor,g,b,A),addCollisionBoxVertex(r,m,y.anchor,f,b,A),a.emplaceBack(S,S+1),a.emplaceBack(S+1,S+2),a.emplaceBack(S+2,S+3),a.emplaceBack(S+3,S),v.vertexLength+=4,v.primitiveLength+=4}}}}},SymbolBucket.prototype.addSymbolInstance=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x,m,h,d,f,g,b,A){var v,S,I=[],B=[];for(var z in o){var V=parseInt(z,10);o[V]&&(B=B.concat(i?getGlyphQuads(e,o[V],a,p,g,b,A):[]),v=new CollisionFeature(n,t,e,s,l,y,o[V],c,u,p,!1))}var L=v?v.boxStartIndex:this.collisionBoxArray.length,T=v?v.boxEndIndex:this.collisionBoxArray.length;r&&(I=i?getIconQuads(e,r,a,d,o[WritingMode.horizontal],g,b):[],S=new CollisionFeature(n,t,e,s,l,y,r,m,h,d,!0));var w=S?S.boxStartIndex:this.collisionBoxArray.length,M=S?S.boxEndIndex:this.collisionBoxArray.length;T>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),M>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");var C=(o[WritingMode.vertical]?WritingMode.vertical:0)|(o[WritingMode.horizontal]?WritingMode.horizontal:0);this.symbolInstances.push({textBoxStartIndex:L,textBoxEndIndex:T,iconBoxStartIndex:w,iconBoxEndIndex:M,glyphQuads:B,iconQuads:I,textOffset:x,iconOffset:f,anchor:e,line:t,featureIndex:s,featureProperties:b,writingModes:C})},SymbolBucket.programInterfaces=symbolInterfaces,SymbolBucket.MAX_INSTANCES=65535,SymbolBucket.addDynamicAttributes=addDynamicAttributes,module.exports=SymbolBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../shaders/encode_attribute\":85,\"../../symbol/anchor\":167,\"../../symbol/clip_line\":169,\"../../symbol/collision_feature\":171,\"../../symbol/get_anchors\":173,\"../../symbol/mergelines\":174,\"../../symbol/quads\":176,\"../../symbol/shaping\":177,\"../../symbol/transform_text\":179,\"../../util/classify_rings\":205,\"../../util/find_pole_of_inaccessibility\":211,\"../../util/script_detection\":218,\"../../util/struct_array\":220,\"../../util/token\":222,\"../../util/util\":223,\"../../util/verticalize_punctuation\":225,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],48:[function(_dereq_,module,exports){\n\"use strict\";module.exports=8192;\n},{}],49:[function(_dereq_,module,exports){\n\"use strict\";function topDownFeatureComparator(e,r){return r-e}var Point=_dereq_(\"@mapbox/point-geometry\"),loadGeometry=_dereq_(\"./load_geometry\"),EXTENT=_dereq_(\"./extent\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),createStructArrayType=_dereq_(\"../util/struct_array\"),Grid=_dereq_(\"grid-index\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),arraysIntersect=_dereq_(\"../util/util\").arraysIntersect,FeatureIndexArray=createStructArrayType({members:[{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]}),FeatureIndex=function(e,r,t,a){this.coord=e,this.overscaling=r,this.x=e.x,this.y=e.y,this.z=e.z-Math.log(r)/Math.LN2,this.grid=t||new Grid(EXTENT,16,0),this.featureIndexArray=a||new FeatureIndexArray};FeatureIndex.deserialize=function(e,r,t){var a=new FeatureIndex(e.coord,e.overscaling,new Grid(e.grid),new FeatureIndexArray(e.featureIndexArray));return a.rawTileData=r,a.bucketLayerIDs=e.bucketLayerIDs,a.setCollisionTile(t),a},FeatureIndex.prototype.insert=function(e,r,t,a,i){var n=this,o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(t,a,i);for(var s=0;s<r.length;s++){for(var u=r[s],y=[1/0,1/0,-1/0,-1/0],l=0;l<u.length;l++){var d=u[l];y[0]=Math.min(y[0],d.x),y[1]=Math.min(y[1],d.y),y[2]=Math.max(y[2],d.x),y[3]=Math.max(y[3],d.y)}n.grid.insert(o,y[0],y[1],y[2],y[3])}},FeatureIndex.prototype.setCollisionTile=function(e){this.collisionTile=e},FeatureIndex.prototype.serialize=function(e){var r=this.grid.toArrayBuffer();return e&&e.push(r),{coord:this.coord,overscaling:this.overscaling,grid:r,featureIndexArray:this.featureIndexArray.serialize(e),bucketLayerIDs:this.bucketLayerIDs}},FeatureIndex.prototype.query=function(e,r){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers,this.sourceLayerCoder=new DictionaryCoder(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]));for(var t={},a=e.params||{},i=EXTENT/e.tileSize/e.scale,n=featureFilter(a.filter),o=e.queryGeometry,s=e.additionalRadius*i,u=1/0,y=1/0,l=-1/0,d=-1/0,c=0;c<o.length;c++)for(var h=o[c],f=0;f<h.length;f++){var x=h[f];u=Math.min(u,x.x),y=Math.min(y,x.y),l=Math.max(l,x.x),d=Math.max(d,x.y)}var v=this.grid.query(u-s,y-s,l+s,d+s);v.sort(topDownFeatureComparator),this.filterMatching(t,v,this.featureIndexArray,o,n,a.layers,r,e.bearing,i);var I=this.collisionTile.queryRenderedSymbols(o,e.scale);return I.sort(),this.filterMatching(t,I,this.collisionTile.collisionBoxArray,o,n,a.layers,r,e.bearing,i),t},FeatureIndex.prototype.filterMatching=function(e,r,t,a,i,n,o,s,u){for(var y,l=this,d=0;d<r.length;d++){var c=r[d];if(c!==y){y=c;var h=t.get(c),f=l.bucketLayerIDs[h.bucketIndex];if(!n||arraysIntersect(n,f)){var x=l.sourceLayerCoder.decode(h.sourceLayerIndex),v=l.vtLayers[x],I=v.feature(h.featureIndex);if(i(I))for(var p=null,g=0;g<f.length;g++){var m=f[g];if(!(n&&n.indexOf(m)<0)){var F=o[m];if(F&&(\"symbol\"===F.type||(p||(p=loadGeometry(I)),F.queryIntersectsFeature(a,I,p,l.z,s,u)))){var b=new GeoJSONFeature(I,l.z,l.x,l.y);b.layer=F.serialize();var L=e[m];void 0===L&&(L=e[m]=[]),L.push({featureIndex:c,feature:b})}}}}}}},FeatureIndex.prototype.hasLayer=function(e){for(var r=this,t=0,a=r.bucketLayerIDs;t<a.length;t+=1)for(var i=a[t],n=0,o=i;n<o.length;n+=1){var s=o[n];if(e===s)return!0}return!1},module.exports=FeatureIndex;\n},{\"../style-spec/feature_filter\":110,\"../util/dictionary_coder\":207,\"../util/struct_array\":220,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"./extent\":48,\"./load_geometry\":51,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6,\"grid-index\":22,\"pbf\":29}],50:[function(_dereq_,module,exports){\n\"use strict\";function createIndexArrayType(e){return createStructArrayType({members:[{type:\"Uint16\",name:\"vertices\",components:e}]})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports={LineIndexArray:createIndexArrayType(2),TriangleIndexArray:createIndexArrayType(3)};\n},{\"../util/struct_array\":220}],51:[function(_dereq_,module,exports){\n\"use strict\";function createBounds(e){return{min:-1*Math.pow(2,e-1),max:Math.pow(2,e-1)-1}}var util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"./extent\"),bounds=createBounds(16);module.exports=function(e){for(var t=EXTENT/e.extent,r=e.loadGeometry(),n=0;n<r.length;n++)for(var u=r[n],o=0;o<u.length;o++){var a=u[o];a.x=Math.round(a.x*t),a.y=Math.round(a.y*t),(a.x<bounds.min||a.x>bounds.max||a.y<bounds.min||a.y>bounds.max)&&util.warnOnce(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}return r};\n},{\"../util/util\":223,\"./extent\":48}],52:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),PosArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2}]});module.exports=PosArray;\n},{\"../util/struct_array\":220}],53:[function(_dereq_,module,exports){\n\"use strict\";function packColor(r){return[packUint8ToFloat(255*r[0],255*r[1]),packUint8ToFloat(255*r[2],255*r[3])]}var createVertexArrayType=_dereq_(\"./vertex_array_type\"),interpolationFactor=_dereq_(\"../style-spec/function\").interpolationFactor,packUint8ToFloat=_dereq_(\"../shaders/encode_attribute\").packUint8ToFloat,VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),ConstantBinder=function(r,t,o,e){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e};ConstantBinder.prototype.defines=function(){return[\"#define HAS_UNIFORM_u_\"+this.name]},ConstantBinder.prototype.populatePaintArray=function(){},ConstantBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=o.getPaintValue(this.property,{zoom:this.useIntegerZoom?Math.floor(i):i});\"color\"===this.type?r.uniform4fv(t.uniforms[\"u_\"+this.name],n):r.uniform1f(t.uniforms[\"u_\"+this.name],n)};var SourceFunctionBinder=function(r,t,o){this.name=r,this.type=t,this.property=o};SourceFunctionBinder.prototype.defines=function(){return[]},SourceFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,void 0,n);if(\"color\"===this.type)for(var p=packColor(s),u=e;u<i;u++){var f=t.get(u);f[\"a_\"+a.name+\"0\"]=p[0],f[\"a_\"+a.name+\"1\"]=p[1]}else{for(var c=e;c<i;c++){t.get(c)[\"a_\"+a.name]=s}var m=o[this.property];m.max=Math.max(m.max,s)}},SourceFunctionBinder.prototype.setUniforms=function(r,t){r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],0)};var CompositeFunctionBinder=function(r,t,o,e,i){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e,this.zoom=i};CompositeFunctionBinder.prototype.defines=function(){return[]},CompositeFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,{zoom:this.zoom},n),p=r.getPaintValue(this.property,{zoom:this.zoom+1},n);if(\"color\"===this.type)for(var u=packColor(s),f=packColor(p),c=e;c<i;c++){var m=t.get(c);m[\"a_\"+a.name+\"0\"]=u[0],m[\"a_\"+a.name+\"1\"]=u[1],m[\"a_\"+a.name+\"2\"]=f[0],m[\"a_\"+a.name+\"3\"]=f[1]}else{for(var y=e;y<i;y++){var g=t.get(y);g[\"a_\"+a.name+\"0\"]=s,g[\"a_\"+a.name+\"1\"]=p}var h=o[this.property];h.max=Math.max(h.max,s,p)}},CompositeFunctionBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=interpolationFactor(this.useIntegerZoom?Math.floor(i):i,1,this.zoom,this.zoom+1);r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],n)};var ProgramConfiguration=function(){this.binders={},this.cacheKey=\"\"};ProgramConfiguration.createDynamic=function(r,t,o){for(var e=new ProgramConfiguration,i=[],n=0,a=r.paintAttributes||[];n<a.length;n+=1){var s=a[n],p=s.property,u=s.useIntegerZoom||!1,f=s.name||p.replace(t.type+\"-\",\"\").replace(/-/g,\"_\"),c=t._paintSpecifications[p].type;t.isPaintValueFeatureConstant(p)?(e.binders[f]=new ConstantBinder(f,c,p,u),e.cacheKey+=\"/u_\"+f):t.isPaintValueZoomConstant(p)?(e.binders[f]=new SourceFunctionBinder(f,c,p),e.cacheKey+=\"/a_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?2:1})):(e.binders[f]=new CompositeFunctionBinder(f,c,p,u,o),e.cacheKey+=\"/z_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?4:2}))}return e.PaintVertexArray=createVertexArrayType(i),e.interface=r,e.layer=t,e},ProgramConfiguration.createBasicFill=function(){var r=new ProgramConfiguration;return r.binders.color=new ConstantBinder(\"color\",\"color\",\"fill-color\",!1),r.cacheKey+=\"/u_color\",r.binders.opacity=new ConstantBinder(\"opacity\",\"number\",\"fill-opacity\",!1),r.cacheKey+=\"/u_opacity\",r},ProgramConfiguration.prototype.createPaintPropertyStatistics=function(){var r=this,t={};for(var o in r.binders)t[r.binders[o].property]={max:-1/0};return t},ProgramConfiguration.prototype.populatePaintArray=function(r,t){var o=this,e=this.paintVertexArray;if(0!==e.bytesPerElement){var i=e.length;e.resize(r);for(var n in o.binders)o.binders[n].populatePaintArray(o.layer,e,o.paintPropertyStatistics,i,r,t)}},ProgramConfiguration.prototype.defines=function(){var r=this,t=[];for(var o in r.binders)t.push.apply(t,r.binders[o].defines());return t},ProgramConfiguration.prototype.setUniforms=function(r,t,o,e){var i=this;for(var n in i.binders)i.binders[n].setUniforms(r,t,o,e)},ProgramConfiguration.prototype.serialize=function(r){return 0===this.paintVertexArray.length?null:{array:this.paintVertexArray.serialize(r),type:this.paintVertexArray.constructor.serialize(),statistics:this.paintPropertyStatistics}},ProgramConfiguration.deserialize=function(r,t,o,e){var i=ProgramConfiguration.createDynamic(r,t,o);return e&&(i.PaintVertexArray=createVertexArrayType(e.type.members),i.paintVertexArray=new i.PaintVertexArray(e.array),i.paintPropertyStatistics=e.statistics),i},ProgramConfiguration.prototype.upload=function(r){this.paintVertexArray&&(this.paintVertexBuffer=new VertexBuffer(r,this.paintVertexArray))},ProgramConfiguration.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()};var ProgramConfigurationSet=function(r,t,o,e){var i=this;if(this.programConfigurations={},e)for(var n=0,a=t;n<a.length;n+=1){var s=a[n];i.programConfigurations[s.id]=ProgramConfiguration.deserialize(r,s,o,e[s.id])}else for(var p=0,u=t;p<u.length;p+=1){var f=u[p],c=ProgramConfiguration.createDynamic(r,f,o);c.paintVertexArray=new c.PaintVertexArray,c.paintPropertyStatistics=c.createPaintPropertyStatistics(),i.programConfigurations[f.id]=c}};ProgramConfigurationSet.prototype.populatePaintArrays=function(r,t){var o=this;for(var e in o.programConfigurations)o.programConfigurations[e].populatePaintArray(r,t)},ProgramConfigurationSet.prototype.serialize=function(r){var t=this,o={};for(var e in t.programConfigurations){var i=t.programConfigurations[e].serialize(r);i&&(o[e]=i)}return o},ProgramConfigurationSet.prototype.get=function(r){return this.programConfigurations[r]},ProgramConfigurationSet.prototype.upload=function(r){var t=this;for(var o in t.programConfigurations)t.programConfigurations[o].upload(r)},ProgramConfigurationSet.prototype.destroy=function(){var r=this;for(var t in r.programConfigurations)r.programConfigurations[t].destroy()},module.exports={ProgramConfiguration:ProgramConfiguration,ProgramConfigurationSet:ProgramConfigurationSet};\n},{\"../gl/vertex_buffer\":62,\"../shaders/encode_attribute\":85,\"../style-spec/function\":112,\"./vertex_array_type\":56}],54:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),RasterBoundsArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]});module.exports=RasterBoundsArray;\n},{\"../util/struct_array\":220}],55:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/util\"),warnOnce=ref.warnOnce,MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,SegmentVector=function(e){void 0===e&&(e=[]),this.segments=e};SegmentVector.prototype.prepareSegment=function(e,t,r){var n=this.segments[this.segments.length-1];return e>MAX_VERTEX_ARRAY_LENGTH&&warnOnce(\"Max vertices per segment is \"+MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+e),(!n||n.vertexLength+e>module.exports.MAX_VERTEX_ARRAY_LENGTH)&&(n={vertexOffset:t.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},this.segments.push(n)),n},SegmentVector.prototype.get=function(){return this.segments},SegmentVector.prototype.destroy=function(){for(var e=this,t=0,r=e.segments;t<r.length;t+=1){var n=r[t];for(var s in n.vaos)n.vaos[s].destroy()}},module.exports={SegmentVector:SegmentVector,MAX_VERTEX_ARRAY_LENGTH:MAX_VERTEX_ARRAY_LENGTH};\n},{\"../util/util\":223}],56:[function(_dereq_,module,exports){\n\"use strict\";function createVertexArrayType(r){return createStructArrayType({members:r,alignment:4})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports=createVertexArrayType;\n},{\"../util/struct_array\":220}],57:[function(_dereq_,module,exports){\n\"use strict\";var Coordinate=function(o,t,n){this.column=o,this.row=t,this.zoom=n};Coordinate.prototype.clone=function(){return new Coordinate(this.column,this.row,this.zoom)},Coordinate.prototype.zoomTo=function(o){return this.clone()._zoomTo(o)},Coordinate.prototype.sub=function(o){return this.clone()._sub(o)},Coordinate.prototype._zoomTo=function(o){var t=Math.pow(2,o-this.zoom);return this.column*=t,this.row*=t,this.zoom=o,this},Coordinate.prototype._sub=function(o){return o=o.zoomTo(this.zoom),this.column-=o.column,this.row-=o.row,this},module.exports=Coordinate;\n},{}],58:[function(_dereq_,module,exports){\n\"use strict\";var wrap=_dereq_(\"../util/util\").wrap,LngLat=function(t,n){if(isNaN(t)||isNaN(n))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+n+\")\");if(this.lng=+t,this.lat=+n,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};LngLat.prototype.wrap=function(){return new LngLat(wrap(this.lng,-180,180),this.lat)},LngLat.prototype.toArray=function(){return[this.lng,this.lat]},LngLat.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},LngLat.prototype.toBounds=function(t){var n=360*t/40075017,r=n/Math.cos(Math.PI/180*this.lat);return new(_dereq_(\"./lng_lat_bounds\"))(new LngLat(this.lng-r,this.lat-n),new LngLat(this.lng+r,this.lat+n))},LngLat.convert=function(t){if(t instanceof LngLat)return t;if(Array.isArray(t)&&2===t.length)return new LngLat(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new LngLat(Number(t.lng),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")},module.exports=LngLat;\n},{\"../util/util\":223,\"./lng_lat_bounds\":59}],59:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),LngLatBounds=function(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};LngLatBounds.prototype.setNorthEast=function(t){return this._ne=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.setSouthWest=function(t){return this._sw=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.extend=function(t){var n,e,s=this._sw,o=this._ne;if(t instanceof LngLat)n=t,e=t;else{if(!(t instanceof LngLatBounds))return Array.isArray(t)?t.every(Array.isArray)?this.extend(LngLatBounds.convert(t)):this.extend(LngLat.convert(t)):this;if(n=t._sw,e=t._ne,!n||!e)return this}return s||o?(s.lng=Math.min(n.lng,s.lng),s.lat=Math.min(n.lat,s.lat),o.lng=Math.max(e.lng,o.lng),o.lat=Math.max(e.lat,o.lat)):(this._sw=new LngLat(n.lng,n.lat),this._ne=new LngLat(e.lng,e.lat)),this},LngLatBounds.prototype.getCenter=function(){return new LngLat((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},LngLatBounds.prototype.getSouthWest=function(){return this._sw},LngLatBounds.prototype.getNorthEast=function(){return this._ne},LngLatBounds.prototype.getNorthWest=function(){return new LngLat(this.getWest(),this.getNorth())},LngLatBounds.prototype.getSouthEast=function(){return new LngLat(this.getEast(),this.getSouth())},LngLatBounds.prototype.getWest=function(){return this._sw.lng},LngLatBounds.prototype.getSouth=function(){return this._sw.lat},LngLatBounds.prototype.getEast=function(){return this._ne.lng},LngLatBounds.prototype.getNorth=function(){return this._ne.lat},LngLatBounds.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},LngLatBounds.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},LngLatBounds.convert=function(t){return!t||t instanceof LngLatBounds?t:new LngLatBounds(t)},module.exports=LngLatBounds;\n},{\"./lng_lat\":58}],60:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Coordinate=_dereq_(\"./coordinate\"),util=_dereq_(\"../util/util\"),interp=_dereq_(\"../style-spec/util/interpolate\"),TileCoord=_dereq_(\"../source/tile_coord\"),EXTENT=_dereq_(\"../data/extent\"),glmatrix=_dereq_(\"@mapbox/gl-matrix\"),vec4=glmatrix.vec4,mat4=glmatrix.mat4,mat2=glmatrix.mat2,Transform=function(t,o,i){this.tileSize=512,this._renderWorldCopies=void 0===i||i,this._minZoom=t||0,this._maxZoom=o||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0},prototypeAccessors={minZoom:{},maxZoom:{},renderWorldCopies:{},worldSize:{},centerPoint:{},size:{},bearing:{},pitch:{},fov:{},zoom:{},center:{},unmodified:{},x:{},y:{},point:{}};prototypeAccessors.minZoom.get=function(){return this._minZoom},prototypeAccessors.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},prototypeAccessors.maxZoom.get=function(){return this._maxZoom},prototypeAccessors.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},prototypeAccessors.renderWorldCopies.get=function(){return this._renderWorldCopies},prototypeAccessors.worldSize.get=function(){return this.tileSize*this.scale},prototypeAccessors.centerPoint.get=function(){return this.size._div(2)},prototypeAccessors.size.get=function(){return new Point(this.width,this.height)},prototypeAccessors.bearing.get=function(){return-this.angle/Math.PI*180},prototypeAccessors.bearing.set=function(t){var o=-util.wrap(t,-180,180)*Math.PI/180;this.angle!==o&&(this._unmodified=!1,this.angle=o,this._calcMatrices(),this.rotationMatrix=mat2.create(),mat2.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},prototypeAccessors.pitch.get=function(){return this._pitch/Math.PI*180},prototypeAccessors.pitch.set=function(t){var o=util.clamp(t,0,60)/180*Math.PI;this._pitch!==o&&(this._unmodified=!1,this._pitch=o,this._calcMatrices())},prototypeAccessors.fov.get=function(){return this._fov/Math.PI*180},prototypeAccessors.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},prototypeAccessors.zoom.get=function(){return this._zoom},prototypeAccessors.zoom.set=function(t){var o=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==o&&(this._unmodified=!1,this._zoom=o,this.scale=this.zoomScale(o),this.tileZoom=Math.floor(o),this.zoomFraction=o-this.tileZoom,this._constrain(),this._calcMatrices())},prototypeAccessors.center.get=function(){return this._center},prototypeAccessors.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Transform.prototype.coveringZoomLevel=function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},Transform.prototype.getVisibleWrappedCoordinates=function(t){for(var o=this.pointCoordinate(new Point(0,0),0),i=this.pointCoordinate(new Point(this.width,0),0),e=Math.floor(o.column),r=Math.floor(i.column),n=[t],s=e;s<=r;s++)0!==s&&n.push(new TileCoord(t.z,t.x,t.y,s));return n},Transform.prototype.coveringTiles=function(t){var o=this.coveringZoomLevel(t),i=o;if(void 0!==t.minzoom&&o<t.minzoom)return[];void 0!==t.maxzoom&&o>t.maxzoom&&(o=t.maxzoom);var e=this.pointCoordinate(this.centerPoint,o),r=new Point(e.column-.5,e.row-.5),n=[this.pointCoordinate(new Point(0,0),o),this.pointCoordinate(new Point(this.width,0),o),this.pointCoordinate(new Point(this.width,this.height),o),this.pointCoordinate(new Point(0,this.height),o)];return TileCoord.cover(o,n,t.reparseOverscaled?i:o,this._renderWorldCopies).sort(function(t,o){return r.dist(t)-r.dist(o)})},Transform.prototype.resize=function(t,o){this.width=t,this.height=o,this.pixelsToGLUnits=[2/t,-2/o],this._constrain(),this._calcMatrices()},prototypeAccessors.unmodified.get=function(){return this._unmodified},Transform.prototype.zoomScale=function(t){return Math.pow(2,t)},Transform.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},Transform.prototype.project=function(t){return new Point(this.lngX(t.lng),this.latY(t.lat))},Transform.prototype.unproject=function(t){return new LngLat(this.xLng(t.x),this.yLat(t.y))},prototypeAccessors.x.get=function(){return this.lngX(this.center.lng)},prototypeAccessors.y.get=function(){return this.latY(this.center.lat)},prototypeAccessors.point.get=function(){return new Point(this.x,this.y)},Transform.prototype.lngX=function(t){return(180+t)*this.worldSize/360},Transform.prototype.latY=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*this.worldSize/360},Transform.prototype.xLng=function(t){return 360*t/this.worldSize-180},Transform.prototype.yLat=function(t){var o=180-360*t/this.worldSize;return 360/Math.PI*Math.atan(Math.exp(o*Math.PI/180))-90},Transform.prototype.setLocationAtPoint=function(t,o){var i=this.pointCoordinate(o)._sub(this.pointCoordinate(this.centerPoint));this.center=this.coordinateLocation(this.locationCoordinate(t)._sub(i)),this._renderWorldCopies&&(this.center=this.center.wrap())},Transform.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},Transform.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},Transform.prototype.locationCoordinate=function(t){return new Coordinate(this.lngX(t.lng)/this.tileSize,this.latY(t.lat)/this.tileSize,this.zoom).zoomTo(this.tileZoom)},Transform.prototype.coordinateLocation=function(t){var o=t.zoomTo(this.zoom);return new LngLat(this.xLng(o.column*this.tileSize),this.yLat(o.row*this.tileSize))},Transform.prototype.pointCoordinate=function(t,o){void 0===o&&(o=this.tileZoom);var i=[t.x,t.y,0,1],e=[t.x,t.y,1,1];vec4.transformMat4(i,i,this.pixelMatrixInverse),vec4.transformMat4(e,e,this.pixelMatrixInverse);var r=i[3],n=e[3],s=i[0]/r,a=e[0]/n,h=i[1]/r,c=e[1]/n,m=i[2]/r,p=e[2]/n,l=m===p?0:(0-m)/(p-m);return new Coordinate(interp(s,a,l)/this.tileSize,interp(h,c,l)/this.tileSize,this.zoom)._zoomTo(o)},Transform.prototype.coordinatePoint=function(t){var o=t.zoomTo(this.zoom),i=[o.column*this.tileSize,o.row*this.tileSize,0,1];return vec4.transformMat4(i,i,this.pixelMatrix),new Point(i[0]/i[3],i[1]/i[3])},Transform.prototype.calculatePosMatrix=function(t,o){var i=t.toCoordinate(o),e=this.worldSize/this.zoomScale(i.zoom),r=mat4.identity(new Float64Array(16));return mat4.translate(r,r,[i.column*e,i.row*e,0]),mat4.scale(r,r,[e/EXTENT,e/EXTENT,1]),mat4.multiply(r,this.projMatrix,r),new Float32Array(r)},Transform.prototype.cameraToTileDistance=function(t){var o=this.calculatePosMatrix(t.coord,t.sourceMaxZoom),i=[t.tileSize/2,t.tileSize/2,0,1];return vec4.transformMat4(i,i,o),i[3]},Transform.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var t,o,i,e,r=-90,n=90,s=-180,a=180,h=this.size,c=this._unmodified;if(this.latRange){var m=this.latRange;r=this.latY(m[1]),n=this.latY(m[0]),t=n-r<h.y?h.y/(n-r):0}if(this.lngRange){var p=this.lngRange;s=this.lngX(p[0]),a=this.lngX(p[1]),o=a-s<h.x?h.x/(a-s):0}var l=Math.max(o||0,t||0);if(l)return this.center=this.unproject(new Point(o?(a+s)/2:this.x,t?(n+r)/2:this.y)),this.zoom+=this.scaleZoom(l),this._unmodified=c,void(this._constraining=!1);if(this.latRange){var u=this.y,f=h.y/2;u-f<r&&(e=r+f),u+f>n&&(e=n-f)}if(this.lngRange){var d=this.x,g=h.x/2;d-g<s&&(i=s+g),d+g>a&&(i=a-g)}void 0===i&&void 0===e||(this.center=this.unproject(new Point(void 0!==i?i:this.x,void 0!==e?e:this.y))),this._unmodified=c,this._constraining=!1}},Transform.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var t=this._fov/2,o=Math.PI/2+this._pitch,i=Math.sin(t)*this.cameraToCenterDistance/Math.sin(Math.PI-o-t),e=Math.cos(Math.PI/2-this._pitch)*i+this.cameraToCenterDistance,r=1.01*e,n=new Float64Array(16);mat4.perspective(n,this._fov,this.width/this.height,1,r),mat4.scale(n,n,[1,-1,1]),mat4.translate(n,n,[0,0,-this.cameraToCenterDistance]),mat4.rotateX(n,n,this._pitch),mat4.rotateZ(n,n,this.angle),mat4.translate(n,n,[-this.x,-this.y,0]);var s=this.worldSize/(2*Math.PI*6378137*Math.abs(Math.cos(this.center.lat*(Math.PI/180))));if(mat4.scale(n,n,[1,1,s,1]),this.projMatrix=n,n=mat4.create(),mat4.scale(n,n,[this.width/2,-this.height/2,1]),mat4.translate(n,n,[1,-1,0]),this.pixelMatrix=mat4.multiply(new Float64Array(16),n,this.projMatrix),!(n=mat4.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=n}},Object.defineProperties(Transform.prototype,prototypeAccessors),module.exports=Transform;\n},{\"../data/extent\":48,\"../source/tile_coord\":101,\"../style-spec/util/interpolate\":127,\"../util/util\":223,\"./coordinate\":57,\"./lng_lat\":58,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],61:[function(_dereq_,module,exports){\n\"use strict\";var IndexBuffer=function(e,r){this.gl=e,this.buffer=e.createBuffer(),void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\")),e.extVertexArrayObject&&e.extVertexArrayObject.bindVertexArrayOES(null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.buffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,r.arrayBuffer,e.STATIC_DRAW),delete r.arrayBuffer};IndexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.buffer)},IndexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=IndexBuffer;\n},{}],62:[function(_dereq_,module,exports){\n\"use strict\";var AttributeType={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},VertexBuffer=function(t,e,r){this.length=e.length,this.attributes=e.members,this.itemSize=e.bytesPerElement,this.dynamicDraw=r,this.gl=t,this.buffer=t.createBuffer(),this.gl.bindBuffer(t.ARRAY_BUFFER,this.buffer),this.gl.bufferData(t.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?t.DYNAMIC_DRAW:t.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};VertexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer)},VertexBuffer.prototype.updateData=function(t){this.bind(),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,t.arrayBuffer)},VertexBuffer.prototype.enableAttributes=function(t,e){for(var r=this,i=0;i<this.attributes.length;i++){var f=r.attributes[i],s=e.attributes[f.name];void 0!==s&&t.enableVertexAttribArray(s)}},VertexBuffer.prototype.setVertexAttribPointers=function(t,e,r){for(var i=this,f=0;f<this.attributes.length;f++){var s=i.attributes[f],u=e.attributes[s.name];void 0!==u&&t.vertexAttribPointer(u,s.components,t[AttributeType[s.type]],!1,i.itemSize,s.offset+i.itemSize*(r||0))}},VertexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=VertexBuffer;\n},{}],63:[function(_dereq_,module,exports){\n\"use strict\";var supported=_dereq_(\"mapbox-gl-supported\"),browser=_dereq_(\"./util/browser\"),version=_dereq_(\"../package.json\").version,Map=_dereq_(\"./ui/map\"),NavigationControl=_dereq_(\"./ui/control/navigation_control\"),GeolocateControl=_dereq_(\"./ui/control/geolocate_control\"),AttributionControl=_dereq_(\"./ui/control/attribution_control\"),ScaleControl=_dereq_(\"./ui/control/scale_control\"),FullscreenControl=_dereq_(\"./ui/control/fullscreen_control\"),Popup=_dereq_(\"./ui/popup\"),Marker=_dereq_(\"./ui/marker\"),Style=_dereq_(\"./style/style\"),LngLat=_dereq_(\"./geo/lng_lat\"),LngLatBounds=_dereq_(\"./geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"./util/evented\"),config=_dereq_(\"./util/config\"),rtlTextPlugin=_dereq_(\"./source/rtl_text_plugin\");module.exports={version:version,supported:supported,workerCount:Math.max(Math.floor(browser.hardwareConcurrency/2),1),setRTLTextPlugin:rtlTextPlugin.setRTLTextPlugin,Map:Map,NavigationControl:NavigationControl,GeolocateControl:GeolocateControl,AttributionControl:AttributionControl,ScaleControl:ScaleControl,FullscreenControl:FullscreenControl,Popup:Popup,Marker:Marker,Style:Style,LngLat:LngLat,LngLatBounds:LngLatBounds,Point:Point,Evented:Evented,config:config,get accessToken(){return config.ACCESS_TOKEN},set accessToken(o){config.ACCESS_TOKEN=o}};\n},{\"../package.json\":41,\"./geo/lng_lat\":58,\"./geo/lng_lat_bounds\":59,\"./source/rtl_text_plugin\":96,\"./style/style\":156,\"./ui/control/attribution_control\":182,\"./ui/control/fullscreen_control\":183,\"./ui/control/geolocate_control\":184,\"./ui/control/navigation_control\":186,\"./ui/control/scale_control\":187,\"./ui/map\":197,\"./ui/marker\":198,\"./ui/popup\":199,\"./util/browser\":202,\"./util/config\":206,\"./util/evented\":210,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],64:[function(_dereq_,module,exports){\n\"use strict\";function drawBackground(r,t,e){var i=r.gl,a=r.transform,n=a.tileSize,o=e.paint[\"background-color\"],l=e.paint[\"background-pattern\"],u=e.paint[\"background-opacity\"],f=l||1!==o[3]||1!==u?\"translucent\":\"opaque\";if(r.renderPass===f){i.disable(i.STENCIL_TEST),r.setDepthSublayer(0);var s;if(l){if(pattern.isPatternMissing(l,r))return;s=r.useProgram(\"fillPattern\",r.basicFillProgramConfiguration),pattern.prepare(l,r,s),r.tileExtentPatternVAO.bind(i,s,r.tileExtentBuffer)}else s=r.useProgram(\"fill\",r.basicFillProgramConfiguration),i.uniform4fv(s.uniforms.u_color,o),r.tileExtentVAO.bind(i,s,r.tileExtentBuffer);i.uniform1f(s.uniforms.u_opacity,u);for(var c=a.coveringTiles({tileSize:n}),g=0,p=c;g<p.length;g+=1){var d=p[g];l&&pattern.setTile({coord:d,tileSize:n},r,s),i.uniformMatrix4fv(s.uniforms.u_matrix,!1,r.transform.calculatePosMatrix(d)),i.drawArrays(i.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}}}var pattern=_dereq_(\"./pattern\");module.exports=drawBackground;\n},{\"./pattern\":80}],65:[function(_dereq_,module,exports){\n\"use strict\";function drawCircles(r,i,e,t){if(\"translucent\"===r.renderPass){var a=r.gl;r.setDepthSublayer(0),r.depthMask(!1),a.disable(a.STENCIL_TEST);for(var s=0;s<t.length;s++){var o=t[s],n=i.getTile(o),u=n.getBucket(e);if(u){var m=u.programConfigurations.get(e.id),f=r.useProgram(\"circle\",m);if(m.setUniforms(a,f,e,{zoom:r.transform.zoom}),a.uniform1f(f.uniforms.u_camera_to_center_distance,r.transform.cameraToCenterDistance),a.uniform1i(f.uniforms.u_scale_with_map,\"map\"===e.paint[\"circle-pitch-scale\"]?1:0),\"map\"===e.paint[\"circle-pitch-alignment\"]){a.uniform1i(f.uniforms.u_pitch_with_map,1);var l=pixelsToTileUnits(n,1,r.transform.zoom);a.uniform2f(f.uniforms.u_extrude_scale,l,l)}else a.uniform1i(f.uniforms.u_pitch_with_map,0),a.uniform2fv(f.uniforms.u_extrude_scale,r.transform.pixelsToGLUnits);a.uniform1f(f.uniforms.u_devicepixelratio,browser.devicePixelRatio),a.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(o.posMatrix,n,e.paint[\"circle-translate\"],e.paint[\"circle-translate-anchor\"])),f.draw(a,a.TRIANGLES,e.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,m)}}}}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=drawCircles;\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],66:[function(_dereq_,module,exports){\n\"use strict\";function drawCollisionDebug(o,i,r,e){var n=o.gl;n.enable(n.STENCIL_TEST);var t=o.useProgram(\"collisionBox\");n.activeTexture(n.TEXTURE1),o.frameHistory.bind(n),n.uniform1i(t.uniforms.u_fadetexture,1);for(var a=0;a<e.length;a++){var f=e[a],u=i.getTile(f),m=u.getBucket(r);if(m){n.uniformMatrix4fv(t.uniforms.u_matrix,!1,f.posMatrix),o.enableTileClippingMask(f),o.lineWidth(1),n.uniform1f(t.uniforms.u_scale,Math.pow(2,o.transform.zoom-u.coord.z)),n.uniform1f(t.uniforms.u_zoom,10*o.transform.zoom);var s=Math.max(0,Math.min(25,u.coord.z+Math.log(u.collisionTile.maxScale)/Math.LN2));n.uniform1f(t.uniforms.u_maxzoom,10*s),n.uniform1f(t.uniforms.u_collision_y_stretch,u.collisionTile.yStretch),n.uniform1f(t.uniforms.u_pitch,o.transform.pitch/360*2*Math.PI),n.uniform1f(t.uniforms.u_camera_to_center_distance,o.transform.cameraToCenterDistance),t.draw(n,n.LINES,r.id,m.collisionBox.layoutVertexBuffer,m.collisionBox.indexBuffer,m.collisionBox.segments)}}}module.exports=drawCollisionDebug;\n},{}],67:[function(_dereq_,module,exports){\n\"use strict\";function drawDebug(r,e,t){for(var a=0;a<t.length;a++)drawDebugTile(r,e,t[a])}function drawDebugTile(r,e,t){var a=r.gl;a.disable(a.STENCIL_TEST),r.lineWidth(1*browser.devicePixelRatio);var i=t.posMatrix,u=r.useProgram(\"debug\");a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.uniform4f(u.uniforms.u_color,1,0,0,1),r.debugVAO.bind(a,u,r.debugBuffer),a.drawArrays(a.LINE_STRIP,0,r.debugBuffer.length);for(var o=createTextVerticies(t.toString(),50,200,5),n=new PosArray,f=0;f<o.length;f+=2)n.emplaceBack(o[f],o[f+1]);var l=new VertexBuffer(a,n);(new VertexArrayObject).bind(a,u,l),a.uniform4f(u.uniforms.u_color,1,1,1,1);for(var s=e.getTile(t).tileSize,m=EXTENT/(Math.pow(2,r.transform.zoom-t.z)*s),x=[[-1,-1],[-1,1],[1,-1],[1,1]],g=0;g<x.length;g++){var b=x[g];a.uniformMatrix4fv(u.uniforms.u_matrix,!1,mat4.translate([],i,[m*b[0],m*b[1],0])),a.drawArrays(a.LINES,0,l.length)}a.uniform4f(u.uniforms.u_color,0,0,0,1),a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.drawArrays(a.LINES,0,l.length)}function createTextVerticies(r,e,t,a){a=a||1;var i,u,o,n,f,l,s,m,x=[];for(i=0,u=r.length;i<u;i++)if(f=simplexFont[r[i]]){for(m=null,o=0,n=f[1].length;o<n;o+=2)-1===f[1][o]&&-1===f[1][o+1]?m=null:(l=e+f[1][o]*a,s=t-f[1][o+1]*a,m&&x.push(m.x,m.y,l,s),m={x:l,y:s});e+=f[0]*a}return x}var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,EXTENT=_dereq_(\"../data/extent\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\");module.exports=drawDebug;var simplexFont={\" \":[16,[]],\"!\":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'\"':[16,[4,21,4,14,-1,-1,12,21,12,14]],\"#\":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],\"%\":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],\"&\":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],\"'\":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],\"(\":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],\")\":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],\"*\":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],\"+\":[26,[13,18,13,0,-1,-1,4,9,22,9]],\",\":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"-\":[26,[4,9,22,9]],\".\":[10,[5,2,4,1,5,0,6,1,5,2]],\"/\":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],\":\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],\";\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"<\":[24,[20,18,4,9,20,0]],\"=\":[26,[4,12,22,12,-1,-1,4,6,22,6]],\">\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"../util/browser\":202,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],68:[function(_dereq_,module,exports){\n\"use strict\";function drawFill(r,t,e,a){var i=r.gl;i.enable(i.STENCIL_TEST);var l=!e.paint[\"fill-pattern\"]&&e.isPaintValueFeatureConstant(\"fill-color\")&&e.isPaintValueFeatureConstant(\"fill-opacity\")&&1===e.paint[\"fill-color\"][3]&&1===e.paint[\"fill-opacity\"]?\"opaque\":\"translucent\";r.renderPass===l&&(r.setDepthSublayer(1),r.depthMask(\"opaque\"===r.renderPass),drawFillTiles(r,t,e,a,drawFillTile)),\"translucent\"===r.renderPass&&e.paint[\"fill-antialias\"]&&(r.lineWidth(2),r.depthMask(!1),r.setDepthSublayer(e.getPaintProperty(\"fill-outline-color\")?2:0),drawFillTiles(r,t,e,a,drawStrokeTile))}function drawFillTiles(r,t,e,a,i){if(!pattern.isPatternMissing(e.paint[\"fill-pattern\"],r))for(var l=!0,n=0,o=a;n<o.length;n+=1){var s=o[n],f=t.getTile(s),u=f.getBucket(e);u&&(r.enableTileClippingMask(s),i(r,t,e,f,s,u,l),l=!1)}}function drawFillTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id);setFillProgram(\"fill\",e.paint[\"fill-pattern\"],r,s,e,a,i,n).draw(o,o.TRIANGLES,e.id,l.layoutVertexBuffer,l.indexBuffer,l.segments,s)}function drawStrokeTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id),f=e.paint[\"fill-pattern\"]&&!e.getPaintProperty(\"fill-outline-color\"),u=setFillProgram(\"fillOutline\",f,r,s,e,a,i,n);o.uniform2f(u.uniforms.u_world,o.drawingBufferWidth,o.drawingBufferHeight),u.draw(o,o.LINES,e.id,l.layoutVertexBuffer,l.indexBuffer2,l.segments2,s)}function setFillProgram(r,t,e,a,i,l,n,o){var s,f=e.currentProgram;return t?(s=e.useProgram(r+\"Pattern\",a),(o||s!==f)&&(a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom}),pattern.prepare(i.paint[\"fill-pattern\"],e,s)),pattern.setTile(l,e,s)):(s=e.useProgram(r,a),(o||s!==f)&&a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom})),e.gl.uniformMatrix4fv(s.uniforms.u_matrix,!1,e.translatePosMatrix(n.posMatrix,l,i.paint[\"fill-translate\"],i.paint[\"fill-translate-anchor\"])),s}var pattern=_dereq_(\"./pattern\");module.exports=drawFill;\n},{\"./pattern\":80}],69:[function(_dereq_,module,exports){\n\"use strict\";function draw(r,t,e,i){if(\"3d\"===r.renderPass){var a=r.gl;a.disable(a.STENCIL_TEST),a.enable(a.DEPTH_TEST),r.clearColor(),r.depthMask(!0);for(var n=0;n<i.length;n++)drawExtrusion(r,t,e,i[n])}else\"translucent\"===r.renderPass&&drawExtrusionTexture(r,e)}function drawExtrusionTexture(r,t){var e=r.prerenderedFrames[t.id];if(e){var i=r.gl,a=r.useProgram(\"extrusionTexture\");i.disable(i.STENCIL_TEST),i.disable(i.DEPTH_TEST),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,e.texture),i.uniform1f(a.uniforms.u_opacity,t.paint[\"fill-extrusion-opacity\"]),i.uniform1i(a.uniforms.u_image,0);var n=mat4.create();mat4.ortho(n,0,r.width,r.height,0,0,1),i.uniformMatrix4fv(a.uniforms.u_matrix,!1,n),i.uniform2f(a.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),e.vao.bind(i,a,e.buffer),i.drawArrays(i.TRIANGLE_STRIP,0,4),r.viewportFrames.push(e),delete r.prerenderedFrames[t.id]}}function drawExtrusion(r,t,e,i){var a=t.getTile(i),n=a.getBucket(e);if(n){var o=r.gl,u=e.paint[\"fill-extrusion-pattern\"],s=n.programConfigurations.get(e.id),f=r.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",s);if(s.setUniforms(o,f,e,{zoom:r.transform.zoom}),u){if(pattern.isPatternMissing(u,r))return;pattern.prepare(u,r,f),pattern.setTile(a,r,f),o.uniform1f(f.uniforms.u_height_factor,-Math.pow(2,i.z)/a.tileSize/8)}r.gl.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(i.posMatrix,a,e.paint[\"fill-extrusion-translate\"],e.paint[\"fill-extrusion-translate-anchor\"])),setLight(f,r),f.draw(o,o.TRIANGLES,e.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,s)}}function setLight(r,t){var e=t.gl,i=t.style.light,a=i.calculated.position,n=[a.x,a.y,a.z],o=mat3.create();\"viewport\"===i.calculated.anchor&&mat3.fromRotation(o,-t.transform.angle),vec3.transformMat3(n,n,o),e.uniform3fv(r.uniforms.u_lightpos,n),e.uniform1f(r.uniforms.u_lightintensity,i.calculated.intensity),e.uniform3fv(r.uniforms.u_lightcolor,i.calculated.color.slice(0,3))}var glMatrix=_dereq_(\"@mapbox/gl-matrix\"),pattern=_dereq_(\"./pattern\"),mat3=glMatrix.mat3,mat4=glMatrix.mat4,vec3=glMatrix.vec3;module.exports=draw;\n},{\"./pattern\":80,\"@mapbox/gl-matrix\":1}],70:[function(_dereq_,module,exports){\n\"use strict\";function drawLineTile(i,r,e,t,n,a,o,u,f){var s,l,m,_,p=r.gl,g=n.paint[\"line-dasharray\"],d=n.paint[\"line-pattern\"];if(u||f){var x=1/pixelsToTileUnits(e,1,r.transform.tileZoom);if(g){s=r.lineAtlas.getDash(g.from,\"round\"===n.layout[\"line-cap\"]),l=r.lineAtlas.getDash(g.to,\"round\"===n.layout[\"line-cap\"]);var T=s.width*g.fromScale,c=l.width*g.toScale;p.uniform2f(i.uniforms.u_patternscale_a,x/T,-s.height/2),p.uniform2f(i.uniforms.u_patternscale_b,x/c,-l.height/2),p.uniform1f(i.uniforms.u_sdfgamma,r.lineAtlas.width/(256*Math.min(T,c)*browser.devicePixelRatio)/2)}else if(d){if(m=r.imageManager.getPattern(d.from),_=r.imageManager.getPattern(d.to),!m||!_)return;p.uniform2f(i.uniforms.u_pattern_size_a,m.displaySize[0]*d.fromScale/x,_.displaySize[1]),p.uniform2f(i.uniforms.u_pattern_size_b,_.displaySize[0]*d.toScale/x,_.displaySize[1]);var h=r.imageManager.getPixelSize(),v=h.width,b=h.height;p.uniform2fv(i.uniforms.u_texsize,[v,b])}p.uniform2f(i.uniforms.u_gl_units_to_pixels,1/r.transform.pixelsToGLUnits[0],1/r.transform.pixelsToGLUnits[1])}u&&(g?(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.lineAtlas.bind(p),p.uniform1f(i.uniforms.u_tex_y_a,s.y),p.uniform1f(i.uniforms.u_tex_y_b,l.y),p.uniform1f(i.uniforms.u_mix,g.t)):d&&(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.imageManager.bind(p),p.uniform2fv(i.uniforms.u_pattern_tl_a,m.tl),p.uniform2fv(i.uniforms.u_pattern_br_a,m.br),p.uniform2fv(i.uniforms.u_pattern_tl_b,_.tl),p.uniform2fv(i.uniforms.u_pattern_br_b,_.br),p.uniform1f(i.uniforms.u_fade,d.t))),r.enableTileClippingMask(a);var y=r.translatePosMatrix(a.posMatrix,e,n.paint[\"line-translate\"],n.paint[\"line-translate-anchor\"]);p.uniformMatrix4fv(i.uniforms.u_matrix,!1,y),p.uniform1f(i.uniforms.u_ratio,1/pixelsToTileUnits(e,1,r.transform.zoom)),i.draw(p,p.TRIANGLES,n.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,o)}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=function(i,r,e,t){if(\"translucent\"===i.renderPass){i.setDepthSublayer(0),i.depthMask(!1);var n=i.gl;if(n.enable(n.STENCIL_TEST),!(e.paint[\"line-width\"]<=0))for(var a,o=e.paint[\"line-dasharray\"]?\"lineSDF\":e.paint[\"line-pattern\"]?\"linePattern\":\"line\",u=!0,f=0,s=t;f<s.length;f+=1){var l=s[f],m=r.getTile(l),_=m.getBucket(e);if(_){var p=_.programConfigurations.get(e.id),g=i.currentProgram,d=i.useProgram(o,p),x=u||d!==g,T=a!==m.coord.z;x&&p.setUniforms(i.gl,d,e,{zoom:i.transform.zoom}),drawLineTile(d,i,m,_,e,l,p,x,T),a=m.coord.z,u=!1}}}};\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],71:[function(_dereq_,module,exports){\n\"use strict\";function drawRaster(r,t,e,a){if(\"translucent\"===r.renderPass){var i=r.gl,o=t.getSource(),n=r.useProgram(\"raster\");i.enable(i.DEPTH_TEST),r.depthMask(!0),i.depthFunc(i.LESS),i.disable(i.STENCIL_TEST),i.uniform1f(n.uniforms.u_brightness_low,e.paint[\"raster-brightness-min\"]),i.uniform1f(n.uniforms.u_brightness_high,e.paint[\"raster-brightness-max\"]),i.uniform1f(n.uniforms.u_saturation_factor,saturationFactor(e.paint[\"raster-saturation\"])),i.uniform1f(n.uniforms.u_contrast_factor,contrastFactor(e.paint[\"raster-contrast\"])),i.uniform3fv(n.uniforms.u_spin_weights,spinWeights(e.paint[\"raster-hue-rotate\"])),i.uniform1f(n.uniforms.u_buffer_scale,1),i.uniform1i(n.uniforms.u_image0,0),i.uniform1i(n.uniforms.u_image1,1);for(var u=a.length&&a[0].z,s=0,f=a;s<f.length;s+=1){var m=f[s];r.setDepthSublayer(m.z-u);var d=t.getTile(m),c=r.transform.calculatePosMatrix(m,t.getSource().maxzoom);d.registerFadeDuration(r.style.animationLoop,e.paint[\"raster-fade-duration\"]),i.uniformMatrix4fv(n.uniforms.u_matrix,!1,c);var p=t.findLoadedParent(m,0,{}),_=getFadeValues(d,p,t,e,r.transform),h=void 0,l=void 0;if(i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,d.texture),i.activeTexture(i.TEXTURE1),p?(i.bindTexture(i.TEXTURE_2D,p.texture),h=Math.pow(2,p.coord.z-d.coord.z),l=[d.coord.x*h%1,d.coord.y*h%1]):i.bindTexture(i.TEXTURE_2D,d.texture),i.uniform2fv(n.uniforms.u_tl_parent,l||[0,0]),i.uniform1f(n.uniforms.u_scale_parent,h||1),i.uniform1f(n.uniforms.u_fade_t,_.mix),i.uniform1f(n.uniforms.u_opacity,_.opacity*e.paint[\"raster-opacity\"]),o instanceof ImageSource){var g=o.boundsBuffer;o.boundsVAO.bind(i,n,g),i.drawArrays(i.TRIANGLE_STRIP,0,g.length)}else{var T=r.rasterBoundsBuffer;r.rasterBoundsVAO.bind(i,n,T),i.drawArrays(i.TRIANGLE_STRIP,0,T.length)}}i.depthFunc(i.LEQUAL)}}function spinWeights(r){r*=Math.PI/180;var t=Math.sin(r),e=Math.cos(r);return[(2*e+1)/3,(-Math.sqrt(3)*t-e+1)/3,(Math.sqrt(3)*t-e+1)/3]}function contrastFactor(r){return r>0?1/(1-r):1+r}function saturationFactor(r){return r>0?1-1/(1.001-r):-r}function getFadeValues(r,t,e,a,i){var o=a.paint[\"raster-fade-duration\"];if(o>0){var n=Date.now(),u=(n-r.timeAdded)/o,s=t?(n-t.timeAdded)/o:-1,f=e.getSource(),m=i.coveringZoomLevel({tileSize:f.tileSize,roundZoom:f.roundZoom}),d=!t||Math.abs(t.coord.z-m)>Math.abs(r.coord.z-m),c=d&&r.refreshedUponExpiration?1:util.clamp(d?u:1-s,0,1);return r.refreshedUponExpiration&&u>=1&&(r.refreshedUponExpiration=!1),t?{opacity:1,mix:1-c}:{opacity:c,mix:0}}return{opacity:1,mix:0}}var util=_dereq_(\"../util/util\"),ImageSource=_dereq_(\"../source/image_source\");module.exports=drawRaster;\n},{\"../source/image_source\":91,\"../util/util\":223}],72:[function(_dereq_,module,exports){\n\"use strict\";function drawSymbols(t,i,o,e){if(\"translucent\"===t.renderPass){var a=!(o.layout[\"text-allow-overlap\"]||o.layout[\"icon-allow-overlap\"]||o.layout[\"text-ignore-placement\"]||o.layout[\"icon-ignore-placement\"]),r=t.gl;a?r.disable(r.STENCIL_TEST):r.enable(r.STENCIL_TEST),t.setDepthSublayer(0),t.depthMask(!1),drawLayerSymbols(t,i,o,e,!1,o.paint[\"icon-translate\"],o.paint[\"icon-translate-anchor\"],o.layout[\"icon-rotation-alignment\"],o.layout[\"icon-pitch-alignment\"],o.layout[\"icon-keep-upright\"]),drawLayerSymbols(t,i,o,e,!0,o.paint[\"text-translate\"],o.paint[\"text-translate-anchor\"],o.layout[\"text-rotation-alignment\"],o.layout[\"text-pitch-alignment\"],o.layout[\"text-keep-upright\"]),i.map.showCollisionBoxes&&drawCollisionDebug(t,i,o,e)}}function drawLayerSymbols(t,i,o,e,a,r,n,s,u,l){var m=t.gl,f=t.transform,c=\"map\"===s,_=\"map\"===u,y=c&&\"line\"===o.layout[\"symbol-placement\"],p=c&&!_&&!y,x=_;x?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST);for(var b,d=0,T=e;d<T.length;d+=1){var g=T[d],S=i.getTile(g),h=S.getBucket(o);if(h){var z=a?h.text:h.icon;if(z&&z.segments.get().length){var v=z.programConfigurations.get(o.id),E=a||h.sdfIcons,w=a?h.textSizeData:h.iconSizeData;if(b||(b=t.useProgram(E?\"symbolSDF\":\"symbolIcon\",v),v.setUniforms(m,b,o,{zoom:t.transform.zoom}),setSymbolDrawState(b,t,o,a,p,_,w)),m.activeTexture(m.TEXTURE0),m.uniform1i(b.uniforms.u_texture,0),a)S.glyphAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.glyphAtlasTexture.size);else{var M=!o.isLayoutValueFeatureConstant(\"icon-size\")||!o.isLayoutValueZoomConstant(\"icon-size\")||1!==o.getLayoutValue(\"icon-size\",{zoom:f.zoom})||h.iconsNeedLinear,C=_||0!==f.pitch;S.iconAtlasTexture.bind(E||t.options.rotating||t.options.zooming||M||C?m.LINEAR:m.NEAREST,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.iconAtlasTexture.size)}t.enableTileClippingMask(g),m.uniformMatrix4fv(b.uniforms.u_matrix,!1,t.translatePosMatrix(g.posMatrix,S,r,n));var L=pixelsToTileUnits(S,1,t.transform.zoom),P=symbolProjection.getLabelPlaneMatrix(g.posMatrix,_,c,t.transform,L),D=symbolProjection.getGlCoordMatrix(g.posMatrix,_,c,t.transform,L);m.uniformMatrix4fv(b.uniforms.u_gl_coord_matrix,!1,t.translatePosMatrix(D,S,r,n,!0)),y?(m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,identityMat4),symbolProjection.updateLineLabels(h,g.posMatrix,t,a,P,D,_,l,L,o)):m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,P),m.uniform1f(b.uniforms.u_collision_y_stretch,S.collisionTile.yStretch),drawTileSymbols(b,v,t,o,S,z,a,E,_)}}}x||m.enable(m.DEPTH_TEST)}function setSymbolDrawState(t,i,o,e,a,r,n){var s=i.gl,u=i.transform;s.uniform1i(t.uniforms.u_pitch_with_map,r?1:0),s.uniform1f(t.uniforms.u_is_text,e?1:0),s.activeTexture(s.TEXTURE1),i.frameHistory.bind(s),s.uniform1i(t.uniforms.u_fadetexture,1),s.uniform1f(t.uniforms.u_pitch,u.pitch/360*2*Math.PI),s.uniform1i(t.uniforms.u_is_size_zoom_constant,n.isZoomConstant?1:0),s.uniform1i(t.uniforms.u_is_size_feature_constant,n.isFeatureConstant?1:0),s.uniform1f(t.uniforms.u_camera_to_center_distance,u.cameraToCenterDistance);var l=symbolSize.evaluateSizeForZoom(n,u,o,e);void 0!==l.uSizeT&&s.uniform1f(t.uniforms.u_size_t,l.uSizeT),void 0!==l.uSize&&s.uniform1f(t.uniforms.u_size,l.uSize),s.uniform1f(t.uniforms.u_aspect_ratio,u.width/u.height),s.uniform1i(t.uniforms.u_rotate_symbol,a?1:0)}function drawTileSymbols(t,i,o,e,a,r,n,s,u){var l=o.gl,m=o.transform;if(s){var f=(n?\"text\":\"icon\")+\"-halo-width\",c=!e.isPaintValueFeatureConstant(f)||e.paint[f],_=u?Math.cos(m._pitch)*m.cameraToCenterDistance:1;l.uniform1f(t.uniforms.u_gamma_scale,_),c&&(l.uniform1f(t.uniforms.u_is_halo,1),drawSymbolElements(r,e,l,t)),l.uniform1f(t.uniforms.u_is_halo,0)}drawSymbolElements(r,e,l,t)}function drawSymbolElements(t,i,o,e){e.draw(o,o.TRIANGLES,i.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer)}var drawCollisionDebug=_dereq_(\"./draw_collision_debug\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),symbolProjection=_dereq_(\"../symbol/projection\"),symbolSize=_dereq_(\"../symbol/symbol_size\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,identityMat4=mat4.identity(new Float32Array(16));module.exports=drawSymbols;\n},{\"../source/pixels_to_tile_units\":93,\"../symbol/projection\":175,\"../symbol/symbol_size\":178,\"./draw_collision_debug\":66,\"@mapbox/gl-matrix\":1}],73:[function(_dereq_,module,exports){\n\"use strict\";var FrameHistory=function(){this.changeTimes=new Float64Array(256),this.changeOpacities=new Uint8Array(256),this.opacities=new Uint8ClampedArray(256),this.array=new Uint8Array(this.opacities.buffer),this.previousZoom=0,this.firstFrame=!0};FrameHistory.prototype.record=function(e,t,i){var r=this;this.firstFrame&&(e=0,this.firstFrame=!1),t=Math.floor(10*t);var a;if(t<this.previousZoom)for(a=t+1;a<=this.previousZoom;a++)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];else for(a=t;a>this.previousZoom;a--)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];for(a=0;a<256;a++){var s=e-r.changeTimes[a],o=255*(i?s/i:1);r.opacities[a]=a<=t?r.changeOpacities[a]+o:r.changeOpacities[a]-o}this.changed=!0,this.previousZoom=t},FrameHistory.prototype.isVisible=function(e){return 0!==this.opacities[Math.floor(10*e)]},FrameHistory.prototype.bind=function(e){this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.changed&&(e.texSubImage2D(e.TEXTURE_2D,0,0,0,256,1,e.ALPHA,e.UNSIGNED_BYTE,this.array),this.changed=!1)):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,256,1,0,e.ALPHA,e.UNSIGNED_BYTE,this.array))},module.exports=FrameHistory;\n},{}],74:[function(_dereq_,module,exports){\n\"use strict\";function makeGlyphAtlas(a){var e=AlphaImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var h in a){var p=a[h],r=i[h]={};for(var m in p){var g=p[+m];if(g&&0!==g.bitmap.width&&0!==g.bitmap.height){var l=t.packOne(g.bitmap.width+2*padding,g.bitmap.height+2*padding);AlphaImage.resize(e,{width:t.w,height:t.h}),AlphaImage.copy(g.bitmap,e,{x:0,y:0},{x:l.x+padding,y:l.y+padding},g.bitmap),r[m]={rect:l,metrics:g.metrics}}}}return t.shrink(),AlphaImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,padding=1;module.exports={makeGlyphAtlas:makeGlyphAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],75:[function(_dereq_,module,exports){\n\"use strict\";var loadGlyphRange=_dereq_(\"../style/load_glyph_range\"),TinySDF=_dereq_(\"@mapbox/tiny-sdf\"),isChar=_dereq_(\"../util/is_char_in_unicode_block\"),ref=_dereq_(\"../util/util\"),asyncAll=ref.asyncAll,ref$1=_dereq_(\"../util/image\"),AlphaImage=ref$1.AlphaImage,GlyphManager=function(r,e){this.requestTransform=r,this.localIdeographFontFamily=e,this.entries={}};GlyphManager.prototype.setURL=function(r){this.url=r},GlyphManager.prototype.getGlyphs=function(r,e){var t=this,i=[];for(var a in r)for(var l=0,n=r[a];l<n.length;l+=1){var s=n[l];i.push({stack:a,id:s})}asyncAll(i,function(r,e){var i=r.stack,a=r.id,l=t.entries[i];l||(l=t.entries[i]={glyphs:{},requests:{}});var n=l.glyphs[a];if(void 0!==n)return void e(null,{stack:i,id:a,glyph:n});if(n=t._tinySDF(l,i,a))return void e(null,{stack:i,id:a,glyph:n});var s=Math.floor(a/256);if(256*s>65535)return void e(new Error(\"glyphs > 65535 not supported\"));var o=l.requests[s];o||(o=l.requests[s]=[],loadGlyphRange(i,s,t.url,t.requestTransform,function(r,e){if(e)for(var t in e)l.glyphs[+t]=e[+t];for(var i=0,a=o;i<a.length;i+=1){(0,a[i])(r,e)}delete l.requests[s]})),o.push(function(r,t){r?e(r):t&&e(null,{stack:i,id:a,glyph:t[a]||null})})},function(r,t){if(r)e(r);else if(t){for(var i={},a=0,l=t;a<l.length;a+=1){var n=l[a],s=n.stack,o=n.id,h=n.glyph;(i[s]||(i[s]={}))[o]=h}e(null,i)}})},GlyphManager.prototype._tinySDF=function(r,e,t){var i=this.localIdeographFontFamily;if(i&&(isChar[\"CJK Unified Ideographs\"](t)||isChar[\"Hangul Syllables\"](t))){var a=r.tinySDF;if(!a){var l=\"400\";/bold/i.test(e)?l=\"900\":/medium/i.test(e)?l=\"500\":/light/i.test(e)&&(l=\"200\"),a=r.tinySDF=new TinySDF(24,3,8,.25,i,l)}return{id:t,bitmap:AlphaImage.create({width:30,height:30},a.draw(String.fromCharCode(t))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},module.exports=GlyphManager;\n},{\"../style/load_glyph_range\":152,\"../util/image\":213,\"../util/is_char_in_unicode_block\":215,\"../util/util\":223,\"@mapbox/tiny-sdf\":4}],76:[function(_dereq_,module,exports){\n\"use strict\";function imagePosition(a,e){var i=e.pixelRatio,t={x:a.x+padding,y:a.y+padding,w:a.w-2*padding,h:a.h-2*padding};return{pixelRatio:i,textureRect:t,tl:[t.x,t.y],br:[t.x+t.w,t.y+t.h],displaySize:[t.w/i,t.h/i]}}function makeImageAtlas(a){var e=RGBAImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var d in a){var g=a[d],n=t.packOne(g.data.width+2*padding,g.data.height+2*padding);RGBAImage.resize(e,{width:t.w,height:t.h}),RGBAImage.copy(g.data,e,{x:0,y:0},{x:n.x+padding,y:n.y+padding},g.data),i[d]=imagePosition(n,g)}return t.shrink(),RGBAImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,padding=1;module.exports={imagePosition:imagePosition,makeImageAtlas:makeImageAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],77:[function(_dereq_,module,exports){\n\"use strict\";var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,ref$1=_dereq_(\"./image_atlas\"),imagePosition=ref$1.imagePosition,Texture=_dereq_(\"./texture\"),padding=1,ImageManager=function(){this.images={},this.loaded=!1,this.requestors=[],this.shelfPack=new ShelfPack(64,64,{autoResize:!0}),this.patterns={},this.atlasImage=RGBAImage.create({width:64,height:64}),this.dirty=!0};ImageManager.prototype.isLoaded=function(){return this.loaded},ImageManager.prototype.setLoaded=function(e){var t=this;if(this.loaded!==e&&(this.loaded=e,e)){for(var a=0,i=t.requestors;a<i.length;a+=1){var r=i[a],s=r.ids,h=r.callback;t._notify(s,h)}this.requestors=[]}},ImageManager.prototype.getImage=function(e){return this.images[e]},ImageManager.prototype.addImage=function(e,t){this.images[e]=t},ImageManager.prototype.removeImage=function(e){delete this.images[e];var t=this.patterns[e];t&&(this.shelfPack.unref(t.bin),delete this.patterns[e])},ImageManager.prototype.getImages=function(e,t){var a=this,i=!0;if(!this.isLoaded())for(var r=0,s=e;r<s.length;r+=1){var h=s[r];a.images[h]||(i=!1)}this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t})},ImageManager.prototype._notify=function(e,t){for(var a=this,i={},r=0,s=e;r<s.length;r+=1){var h=s[r],g=a.images[h];g&&(i[h]=g)}t(null,i)},ImageManager.prototype.getPixelSize=function(){return{width:this.shelfPack.w,height:this.shelfPack.h}},ImageManager.prototype.getPattern=function(e){var t=this.patterns[e];if(t)return t.position;var a=this.getImage(e);if(!a)return null;var i=a.data.width+2*padding,r=a.data.height+2*padding,s=this.shelfPack.packOne(i,r);if(!s)return null;RGBAImage.resize(this.atlasImage,this.getPixelSize());var h=a.data,g=this.atlasImage,n=s.x+padding,o=s.y+padding,d=h.width,m=h.height;RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o},{width:d,height:m}),RGBAImage.copy(h,g,{x:0,y:m-1},{x:n,y:o-1},{width:d,height:1}),RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o+m},{width:d,height:1}),RGBAImage.copy(h,g,{x:d-1,y:0},{x:n-1,y:o},{width:1,height:m}),RGBAImage.copy(h,g,{x:0,y:0},{x:n+d,y:o},{width:1,height:m}),this.dirty=!0;var p=imagePosition(s,a);return this.patterns[e]={bin:s,position:p},p},ImageManager.prototype.bind=function(e){this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Texture(e,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE)},module.exports=ImageManager;\n},{\"../util/image\":213,\"./image_atlas\":76,\"./texture\":83,\"@mapbox/shelf-pack\":3}],78:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),LineAtlas=function(t,i){this.width=t,this.height=i,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}};LineAtlas.prototype.getDash=function(t,i){var e=t.join(\",\")+String(i);return this.positions[e]||(this.positions[e]=this.addDash(t,i)),this.positions[e]},LineAtlas.prototype.addDash=function(t,i){var e=this,h=i?7:0,s=2*h+1;if(this.nextRow+s>this.height)return util.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,r=0;r<t.length;r++)a+=t[r];for(var n=this.width/a,E=n/2,T=t.length%2==1,o=-h;o<=h;o++)for(var R=e.nextRow+h+o,d=e.width*R,u=T?-t[t.length-1]:0,x=t[0],l=1,_=0;_<this.width;_++){for(;x<_/n;)u=x,x+=t[l],T&&l===t.length-1&&(x+=t[0]),l++;var A=Math.abs(_-u*n),g=Math.abs(_-x*n),w=Math.min(A,g),D=l%2==1,U=void 0;if(i){var f=h?o/h*(E+1):0;if(D){var p=E-Math.abs(f);U=Math.sqrt(w*w+p*p)}else U=E-Math.sqrt(w*w+f*f)}else U=(D?1:-1)*w;e.data[3+4*(d+_)]=Math.max(0,Math.min(255,U+128))}var X={y:(this.nextRow+h+.5)/this.height,height:2*h/this.height,width:a};return this.nextRow+=s,this.dirty=!0,X},LineAtlas.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.RGBA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,this.data))},module.exports=LineAtlas;\n},{\"../util/util\":223}],79:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,FrameHistory=_dereq_(\"./frame_history\"),SourceCache=_dereq_(\"../source/source_cache\"),EXTENT=_dereq_(\"../data/extent\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),util=_dereq_(\"../util/util\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),PosArray=_dereq_(\"../data/pos_array\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,shaders=_dereq_(\"../shaders\"),Program=_dereq_(\"./program\"),RenderTexture=_dereq_(\"./render_texture\"),draw={symbol:_dereq_(\"./draw_symbol\"),circle:_dereq_(\"./draw_circle\"),line:_dereq_(\"./draw_line\"),fill:_dereq_(\"./draw_fill\"),\"fill-extrusion\":_dereq_(\"./draw_fill_extrusion\"),raster:_dereq_(\"./draw_raster\"),background:_dereq_(\"./draw_background\"),debug:_dereq_(\"./draw_debug\")},Painter=function(e,r){this.gl=e,this.transform=r,this._tileTextures={},this.prerenderedFrames={},this.viewportFrames=[],this.frameHistory=new FrameHistory,this.setup(),this.numSublayers=SourceCache.maxUnderzooming+SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.lineWidthRange=e.getParameter(e.ALIASED_LINE_WIDTH_RANGE),this.basicFillProgramConfiguration=ProgramConfiguration.createBasicFill(),this.emptyProgramConfiguration=new ProgramConfiguration};Painter.prototype.resize=function(e,r){var t=this,i=this.gl;this.width=e*browser.devicePixelRatio,this.height=r*browser.devicePixelRatio,i.viewport(0,0,this.width,this.height);for(var a=0,s=t.viewportFrames;a<s.length;a+=1){var n=s[a];t.gl.deleteTexture(n.texture),t.gl.deleteFramebuffer(n.fbo)}this.viewportFrames=[],this.depthRbo&&(this.gl.deleteRenderbuffer(this.depthRbo),this.depthRbo=null)},Painter.prototype.setup=function(){var e=this.gl;e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.enable(e.STENCIL_TEST),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),this._depthMask=!1,e.depthMask(!1);var r=new PosArray;r.emplaceBack(0,0),r.emplaceBack(EXTENT,0),r.emplaceBack(0,EXTENT),r.emplaceBack(EXTENT,EXTENT),this.tileExtentBuffer=new VertexBuffer(e,r),this.tileExtentVAO=new VertexArrayObject,this.tileExtentPatternVAO=new VertexArrayObject;var t=new PosArray;t.emplaceBack(0,0),t.emplaceBack(EXTENT,0),t.emplaceBack(EXTENT,EXTENT),t.emplaceBack(0,EXTENT),t.emplaceBack(0,0),this.debugBuffer=new VertexBuffer(e,t),this.debugVAO=new VertexArrayObject;var i=new RasterBoundsArray;i.emplaceBack(0,0,0,0),i.emplaceBack(EXTENT,0,EXTENT,0),i.emplaceBack(0,EXTENT,0,EXTENT),i.emplaceBack(EXTENT,EXTENT,EXTENT,EXTENT),this.rasterBoundsBuffer=new VertexBuffer(e,i),this.rasterBoundsVAO=new VertexArrayObject,this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT))},Painter.prototype.clearColor=function(){var e=this.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},Painter.prototype.clearStencil=function(){var e=this.gl;e.clearStencil(0),e.stencilMask(255),e.clear(e.STENCIL_BUFFER_BIT)},Painter.prototype.clearDepth=function(){var e=this.gl;e.clearDepth(1),this.depthMask(!0),e.clear(e.DEPTH_BUFFER_BIT)},Painter.prototype._renderTileClippingMasks=function(e){var r=this,t=this.gl;t.colorMask(!1,!1,!1,!1),this.depthMask(!1),t.disable(t.DEPTH_TEST),t.enable(t.STENCIL_TEST),t.stencilMask(255),t.stencilOp(t.KEEP,t.KEEP,t.REPLACE);var i=1;this._tileClippingMaskIDs={};for(var a=0,s=e;a<s.length;a+=1){var n=s[a],o=r._tileClippingMaskIDs[n.id]=i++;t.stencilFunc(t.ALWAYS,o,255);var l=r.useProgram(\"fill\",r.basicFillProgramConfiguration);t.uniformMatrix4fv(l.uniforms.u_matrix,!1,n.posMatrix),r.tileExtentVAO.bind(t,l,r.tileExtentBuffer),t.drawArrays(t.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}t.stencilMask(0),t.colorMask(!0,!0,!0,!0),this.depthMask(!0),t.enable(t.DEPTH_TEST)},Painter.prototype.enableTileClippingMask=function(e){var r=this.gl;r.stencilFunc(r.EQUAL,this._tileClippingMaskIDs[e.id],255)},Painter.prototype.render=function(e,r){var t=this;this.style=e,this.options=r,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.frameHistory.record(Date.now(),this.transform.zoom,e.getTransition().duration);for(var i in t.style.sourceCaches){var a=t.style.sourceCaches[i];a.used&&a.prepare(t.gl)}var s=this.style._order;this.renderPass=\"3d\";for(var n,o=!0,l=[],h=0;h<s.length;h++){var c=t.style._layers[s[h]];if(c.has3DPass()&&!c.isHidden(t.transform.zoom)&&(c.source!==(n&&n.id)&&(n=t.style.sourceCaches[c.source],l=[],n&&(t.clearStencil(),l=n.getVisibleCoordinates()),l.reverse()),l.length)){t._setup3DRenderbuffer();var u=t.viewportFrames.pop()||new RenderTexture(t);u.bindWithDepth(t.depthRbo),o&&(t.clearDepth(),o=!1),t.renderLayer(t,n,c,l),u.unbind(),t.prerenderedFrames[c.id]=u}}this.clearColor(),this.clearDepth(),this.showOverdrawInspector(r.showOverdrawInspector),this.depthRange=(e._order.length+2)*this.numSublayers*this.depthEpsilon,this.renderPass=\"opaque\";var p,d=[];for(this.currentLayer=s.length-1,this._showOverdrawInspector||this.gl.disable(this.gl.BLEND),this.currentLayer;this.currentLayer>=0;this.currentLayer--){var g=t.style._layers[s[t.currentLayer]];g.source!==(p&&p.id)&&(p=t.style.sourceCaches[g.source],d=[],p&&(t.clearStencil(),d=p.getVisibleCoordinates(),p.getSource().isTileClipped&&t._renderTileClippingMasks(d))),t.renderLayer(t,p,g,d)}this.renderPass=\"translucent\";var f,E=[];for(this.gl.enable(this.gl.BLEND),this.currentLayer=0,this.currentLayer;this.currentLayer<s.length;this.currentLayer++){var T=t.style._layers[s[t.currentLayer]];T.source!==(f&&f.id)&&(f=t.style.sourceCaches[T.source],E=[],f&&(t.clearStencil(),E=f.getVisibleCoordinates(),f.getSource().isTileClipped&&t._renderTileClippingMasks(E)),E.reverse()),t.renderLayer(t,f,T,E)}if(this.options.showTileBoundaries){var _=this.style.sourceCaches[Object.keys(this.style.sourceCaches)[0]];_&&draw.debug(this,_,_.getVisibleCoordinates())}},Painter.prototype._setup3DRenderbuffer=function(){if(!this.depthRbo){var e=this.gl;this.depthRbo=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,this.depthRbo),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,this.width,this.height),e.bindRenderbuffer(e.RENDERBUFFER,null)}this.depthRboAttached=!0},Painter.prototype.depthMask=function(e){e!==this._depthMask&&(this._depthMask=e,this.gl.depthMask(e))},Painter.prototype.renderLayer=function(e,r,t,i){t.isHidden(this.transform.zoom)||(\"background\"===t.type||i.length)&&(this.id=t.id,draw[t.type](e,r,t,i))},Painter.prototype.setDepthSublayer=function(e){var r=1-((1+this.currentLayer)*this.numSublayers+e)*this.depthEpsilon,t=r-1+this.depthRange;this.gl.depthRange(t,r)},Painter.prototype.translatePosMatrix=function(e,r,t,i,a){if(!t[0]&&!t[1])return e;var s=a?\"map\"===i?this.transform.angle:0:\"viewport\"===i?-this.transform.angle:0;if(s){var n=Math.sin(s),o=Math.cos(s);t=[t[0]*o-t[1]*n,t[0]*n+t[1]*o]}var l=[a?t[0]:pixelsToTileUnits(r,t[0],this.transform.zoom),a?t[1]:pixelsToTileUnits(r,t[1],this.transform.zoom),0],h=new Float32Array(16);return mat4.translate(h,e,l),h},Painter.prototype.saveTileTexture=function(e){var r=this._tileTextures[e.size];r?r.push(e):this._tileTextures[e.size]=[e]},Painter.prototype.getTileTexture=function(e){var r=this._tileTextures[e];return r&&r.length>0?r.pop():null},Painter.prototype.lineWidth=function(e){this.gl.lineWidth(util.clamp(e,this.lineWidthRange[0],this.lineWidthRange[1]))},Painter.prototype.showOverdrawInspector=function(e){if(e||this._showOverdrawInspector){this._showOverdrawInspector=e;var r=this.gl;if(e){r.blendFunc(r.CONSTANT_COLOR,r.ONE);r.blendColor(1/8,1/8,1/8,0),r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}else r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA)}},Painter.prototype._createProgramCached=function(e,r){this.cache=this.cache||{};var t=\"\"+e+(r.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[t]||(this.cache[t]=new Program(this.gl,shaders[e],r,this._showOverdrawInspector)),this.cache[t]},Painter.prototype.useProgram=function(e,r){var t=this.gl,i=this._createProgramCached(e,r||this.emptyProgramConfiguration);return this.currentProgram!==i&&(t.useProgram(i.program),this.currentProgram=i),i},module.exports=Painter;\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../data/program_configuration\":53,\"../data/raster_bounds_array\":54,\"../gl/vertex_buffer\":62,\"../shaders\":86,\"../source/pixels_to_tile_units\":93,\"../source/source_cache\":98,\"../util/browser\":202,\"../util/util\":223,\"./draw_background\":64,\"./draw_circle\":65,\"./draw_debug\":67,\"./draw_fill\":68,\"./draw_fill_extrusion\":69,\"./draw_line\":70,\"./draw_raster\":71,\"./draw_symbol\":72,\"./frame_history\":73,\"./program\":81,\"./render_texture\":82,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],80:[function(_dereq_,module,exports){\n\"use strict\";var pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");exports.isPatternMissing=function(r,i){if(!r)return!1;var e=i.imageManager.getPattern(r.from),o=i.imageManager.getPattern(r.to);return!e||!o},exports.prepare=function(r,i,e){var o=i.gl,t=i.imageManager.getPattern(r.from),n=i.imageManager.getPattern(r.to);o.uniform1i(e.uniforms.u_image,0),o.uniform2fv(e.uniforms.u_pattern_tl_a,t.tl),o.uniform2fv(e.uniforms.u_pattern_br_a,t.br),o.uniform2fv(e.uniforms.u_pattern_tl_b,n.tl),o.uniform2fv(e.uniforms.u_pattern_br_b,n.br);var u=i.imageManager.getPixelSize(),a=u.width,f=u.height;o.uniform2fv(e.uniforms.u_texsize,[a,f]),o.uniform1f(e.uniforms.u_mix,r.t),o.uniform2fv(e.uniforms.u_pattern_size_a,t.displaySize),o.uniform2fv(e.uniforms.u_pattern_size_b,n.displaySize),o.uniform1f(e.uniforms.u_scale_a,r.fromScale),o.uniform1f(e.uniforms.u_scale_b,r.toScale),o.activeTexture(o.TEXTURE0),i.imageManager.bind(o)},exports.setTile=function(r,i,e){var o=i.gl;o.uniform1f(e.uniforms.u_tile_units_to_pixels,1/pixelsToTileUnits(r,1,i.transform.tileZoom));var t=Math.pow(2,r.coord.z),n=r.tileSize*Math.pow(2,i.transform.tileZoom)/t,u=n*(r.coord.x+r.coord.w*t),a=n*r.coord.y;o.uniform2f(e.uniforms.u_pixel_coord_upper,u>>16,a>>16),o.uniform2f(e.uniforms.u_pixel_coord_lower,65535&u,65535&a)};\n},{\"../source/pixels_to_tile_units\":93}],81:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),shaders=_dereq_(\"../shaders\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,VertexArrayObject=_dereq_(\"./vertex_array_object\"),Program=function(r,e,t,a){var o=this;this.gl=r,this.program=r.createProgram();var i=t.defines().concat(\"#define DEVICE_PIXEL_RATIO \"+browser.devicePixelRatio.toFixed(1));a&&i.push(\"#define OVERDRAW_INSPECTOR;\");var n=i.concat(shaders.prelude.fragmentSource,e.fragmentSource).join(\"\\n\"),s=i.concat(shaders.prelude.vertexSource,e.vertexSource).join(\"\\n\"),m=r.createShader(r.FRAGMENT_SHADER);r.shaderSource(m,n),r.compileShader(m),r.attachShader(this.program,m);var g=r.createShader(r.VERTEX_SHADER);r.shaderSource(g,s),r.compileShader(g),r.attachShader(this.program,g);for(var c=t.interface?t.interface.layoutAttributes:[],u=0;u<c.length;u++)r.bindAttribLocation(o.program,u,c[u].name);r.linkProgram(this.program),this.numAttributes=r.getProgramParameter(this.program,r.ACTIVE_ATTRIBUTES),this.attributes={},this.uniforms={};for(var h=0;h<this.numAttributes;h++){var f=r.getActiveAttrib(o.program,h);f&&(o.attributes[f.name]=r.getAttribLocation(o.program,f.name))}for(var d=r.getProgramParameter(this.program,r.ACTIVE_UNIFORMS),p=0;p<d;p++){var v=r.getActiveUniform(o.program,p);v&&(o.uniforms[v.name]=r.getUniformLocation(o.program,v.name))}};Program.prototype.draw=function(r,e,t,a,o,i,n,s){for(var m,g=this,c=(m={},m[r.LINES]=2,m[r.TRIANGLES]=3,m)[e],u=0,h=i.get();u<h.length;u+=1){var f=h[u],d=f.vaos||(f.vaos={});(d[t]||(d[t]=new VertexArrayObject)).bind(r,g,a,o,n&&n.paintVertexBuffer,f.vertexOffset,s),r.drawElements(e,f.primitiveLength*c,r.UNSIGNED_SHORT,f.primitiveOffset*c*2)}},module.exports=Program;\n},{\"../data/program_configuration\":53,\"../shaders\":86,\"../util/browser\":202,\"./vertex_array_object\":84}],82:[function(_dereq_,module,exports){\n\"use strict\";var VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\"),RenderTexture=function(e){var r=this.gl=e.gl,t=this.texture=r.createTexture();r.bindTexture(r.TEXTURE_2D,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e.width,e.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.bindTexture(r.TEXTURE_2D,null);var E=this.fbo=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,E),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0);var a=new PosArray;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.buffer=new VertexBuffer(r,a),this.vao=new VertexArrayObject};RenderTexture.prototype.bindWithDepth=function(e){var r=this.gl;r.bindFramebuffer(r.FRAMEBUFFER,this.fbo),this.attachedRbo!==e&&(r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,e),this.attachedRbo=e)},RenderTexture.prototype.unbind=function(){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,null)},module.exports=RenderTexture;\n},{\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"./vertex_array_object\":84}],83:[function(_dereq_,module,exports){\n\"use strict\";var Texture=function(t,e,i){this.gl=t;var r=e.width,T=e.height;this.size=[r,T],this.format=i,this.texture=t.createTexture(),this.update(e)};Texture.prototype.update=function(t){var e=t.width,i=t.height,r=t.data;this.size=[e,i];var T=this,E=T.gl;E.bindTexture(E.TEXTURE_2D,this.texture),E.pixelStorei(E.UNPACK_ALIGNMENT,1),this.format===E.RGBA&&E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),E.texImage2D(E.TEXTURE_2D,0,this.format,e,i,0,this.format,E.UNSIGNED_BYTE,r)},Texture.prototype.bind=function(t,e){var i=this,r=i.gl;r.bindTexture(r.TEXTURE_2D,this.texture),t!==this.filter&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,t),this.filter=t),e!==this.wrap&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,e),this.wrap=e)},Texture.prototype.destroy=function(){this.gl.deleteTexture(this.texture),this.texture=null},module.exports=Texture;\n},{}],84:[function(_dereq_,module,exports){\n\"use strict\";var VertexArrayObject=function(){this.boundProgram=null,this.boundVertexBuffer=null,this.boundVertexBuffer2=null,this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};VertexArrayObject.prototype.bind=function(e,t,r,i,n,s,u){void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\"));var b=!this.vao||this.boundProgram!==t||this.boundVertexBuffer!==r||this.boundVertexBuffer2!==n||this.boundIndexBuffer!==i||this.boundVertexOffset!==s||this.boundDynamicVertexBuffer!==u;!e.extVertexArrayObject||b?(this.freshBind(e,t,r,i,n,s,u),this.gl=e):(e.extVertexArrayObject.bindVertexArrayOES(this.vao),u&&u.bind())},VertexArrayObject.prototype.freshBind=function(e,t,r,i,n,s,u){var b,o=t.numAttributes;if(e.extVertexArrayObject)this.vao&&this.destroy(),this.vao=e.extVertexArrayObject.createVertexArrayOES(),e.extVertexArrayObject.bindVertexArrayOES(this.vao),b=0,this.boundProgram=t,this.boundVertexBuffer=r,this.boundVertexBuffer2=n,this.boundIndexBuffer=i,this.boundVertexOffset=s,this.boundDynamicVertexBuffer=u;else{b=e.currentNumAttributes||0;for(var x=o;x<b;x++)e.disableVertexAttribArray(x)}r.enableAttributes(e,t),n&&n.enableAttributes(e,t),u&&u.enableAttributes(e,t),r.bind(),r.setVertexAttribPointers(e,t,s),n&&(n.bind(),n.setVertexAttribPointers(e,t,s)),u&&(u.bind(),u.setVertexAttribPointers(e,t,s)),i&&i.bind(),e.currentNumAttributes=o},VertexArrayObject.prototype.destroy=function(){this.vao&&(this.gl.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)},module.exports=VertexArrayObject;\n},{}],85:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");exports.packUint8ToFloat=function(t,l){return t=util.clamp(Math.floor(t),0,255),l=util.clamp(Math.floor(l),0,255),256*t+l};\n},{\"../util/util\":223}],86:[function(_dereq_,module,exports){\n\"use strict\";var shaders={prelude:{fragmentSource:\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\",vertexSource:\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\\n// Unpack a pair of values that have been packed into a single float.\\n// The packed values are assumed to be 8-bit unsigned integers, and are\\n// packed like so:\\n// packedValue = floor(input[0]) * 256 + input[1],\\nvec2 unpack_float(const float packedValue) {\\n int packedIntValue = int(packedValue);\\n int v0 = packedIntValue / 256;\\n return vec2(v0, packedIntValue - v0 * 256);\\n}\\n\\n\\n// To minimize the number of attributes needed, we encode a 4-component\\n// color into a pair of floats (i.e. a vec2) as follows:\\n// [ floor(color.r * 255) * 256 + color.g * 255,\\n// floor(color.b * 255) * 256 + color.g * 255 ]\\nvec4 decode_color(const vec2 encodedColor) {\\n return vec4(\\n unpack_float(encodedColor[0]) / 255.0,\\n unpack_float(encodedColor[1]) / 255.0\\n );\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nfloat unpack_mix_vec2(const vec2 packedValue, const float t) {\\n return mix(packedValue[0], packedValue[1], t);\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nvec4 unpack_mix_vec4(const vec4 packedColors, const float t) {\\n vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));\\n vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));\\n return mix(minColor, maxColor, t);\\n}\\n\\n// The offset depends on how many pixels are between the world origin and the edge of the tile:\\n// vec2 offset = mod(pixel_coord, size)\\n//\\n// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.\\n// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.\\n//\\n// The pixel_coord is passed in as two 16 bit values:\\n// pixel_coord_upper = floor(pixel_coord / 2^16)\\n// pixel_coord_lower = mod(pixel_coord, 2^16)\\n//\\n// The offset is calculated in a series of steps that should preserve this precision:\\nvec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,\\n const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {\\n\\n vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);\\n return (tile_units_to_pixels * pos + offset) / pattern_size;\\n}\\n\"},circle:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n vec2 extrude = v_data.xy;\\n float extrude_length = length(extrude);\\n\\n lowp float antialiasblur = v_data.z;\\n float antialiased_blur = -max(blur, antialiasblur);\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);\\n\\n float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n extrude_length - radius / (radius + stroke_width)\\n );\\n\\n gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform bool u_scale_with_map;\\nuniform bool u_pitch_with_map;\\nuniform vec2 u_extrude_scale;\\nuniform highp float u_camera_to_center_distance;\\n\\nattribute vec2 a_pos;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main(void) {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n // unencode the extrusion vector that we snuck into the a_pos vector\\n vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\\n\\n // multiply a_pos by 0.5, since we had it * 2 in order to sneak\\n // in extrusion data\\n vec2 circle_center = floor(a_pos * 0.5);\\n if (u_pitch_with_map) {\\n vec2 corner_position = circle_center;\\n if (u_scale_with_map) {\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale;\\n } else {\\n // Pitching the circle with the map effectively scales it with the map\\n // To counteract the effect for pitch-scale: viewport, we rescale the\\n // whole circle based on the pitch scaling effect at its central point\\n vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);\\n }\\n\\n gl_Position = u_matrix * vec4(corner_position, 0, 1);\\n } else {\\n gl_Position = u_matrix * vec4(circle_center, 0, 1);\\n\\n if (u_scale_with_map) {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;\\n } else {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;\\n }\\n }\\n\\n // This is a minimum blur distance that serves as a faux-antialiasing for\\n // the circle. since blur is a ratio of the circle's size and the intent is\\n // to keep the blur at roughly 1px, the two are inversely related.\\n lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);\\n\\n v_data = vec3(extrude.x, extrude.y, antialiasblur);\\n}\\n\"},collisionBox:{fragmentSource:\"uniform float u_zoom;\\n// u_maxzoom is derived from the maximum scale considered by the CollisionTile\\n// Labels with placement zoom greater than this value will not be placed,\\n// regardless of perspective effects.\\nuniform float u_maxzoom;\\nuniform sampler2D u_fadetexture;\\n\\n// v_max_zoom is a collision-box-specific value that controls when line-following\\n// collision boxes are used.\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n\\n float alpha = 0.5;\\n\\n // Green = no collisions, label is showing\\n gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0) * alpha;\\n\\n // Red = collision, label hidden\\n if (texture2D(u_fadetexture, v_fade_tex).a < 1.0) {\\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\\n }\\n\\n // Faded black = this collision box is not used at this zoom (for curved labels)\\n if (u_zoom >= v_max_zoom + v_perspective_zoom_adjust) {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\\n }\\n\\n // Faded blue = the placement scale for this label is beyond the CollisionTile\\n // max scale, so it's impossible for this label to show without collision detection\\n // being run again (the label's glyphs haven't even been added to the symbol bucket)\\n if (v_placement_zoom >= u_maxzoom) {\\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\\n }\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\nattribute vec2 a_anchor_pos;\\nattribute vec2 a_extrude;\\nattribute vec2 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform float u_scale;\\nuniform float u_pitch;\\nuniform float u_collision_y_stretch;\\nuniform float u_camera_to_center_distance;\\n\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n highp float collision_perspective_ratio = 1.0 + 0.5 * ((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n gl_Position = u_matrix * vec4(a_pos + a_extrude * collision_perspective_ratio * collision_adjustment / u_scale, 0.0, 1.0);\\n\\n v_max_zoom = a_data.x;\\n v_placement_zoom = a_data.y;\\n\\n v_perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((v_placement_zoom + v_perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},debug:{fragmentSource:\"uniform highp vec4 u_color;\\n\\nvoid main() {\\n gl_FragColor = u_color;\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n gl_Position = u_matrix * vec4(a_pos, step(8192.0, a_pos.x), 1);\\n}\\n\"},fill:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_FragColor = color * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},fillOutline:{fragmentSource:\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n gl_FragColor = outline_color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_world;\\n\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillOutlinePattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n // find distance to outline for alpha interpolation\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n\\n\\n gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n gl_FragColor = mix(color1, color2, u_mix) * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n}\\n\"},fillExtrusion:{fragmentSource:\"varying vec4 v_color;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n gl_FragColor = v_color;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec4 v_color;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float ed = a_edgedistance; // use each attrib in order to not trip a VAO assert\\n float t = mod(a_normal.x, 2.0);\\n\\n gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);\\n\\n // Relative luminance (how dark/bright is the surface color?)\\n float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\\n\\n v_color = vec4(0.0, 0.0, 0.0, 1.0);\\n\\n // Add slight ambient lighting so no extrusions are totally black\\n vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\\n color += ambientlight;\\n\\n // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\\n float directional = clamp(dot(a_normal / 16384.0, u_lightpos), 0.0, 1.0);\\n\\n // Adjust directional so that\\n // the range of values for highlight/shading is narrower\\n // with lower light intensity\\n // and with lighter/brighter surface colors\\n directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\\n\\n // Add gradient along z axis of side surfaces\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n // Assign final color based on surface + ambient light color, diffuse light directional, and light color\\n // with lower bounds adjusted to hue of light\\n // so that shading is tinted with the complementary (opposite) color to the light color\\n v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\\n v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\\n v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\\n}\\n\"},fillExtrusionPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n vec4 mixedColor = mix(color1, color2, u_mix);\\n\\n gl_FragColor = mixedColor * v_lighting;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\nuniform float u_height_factor;\\n\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\nvarying float v_directional;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float t = mod(a_normal.x, 2.0);\\n float z = t > 0.0 ? height : base;\\n\\n gl_Position = u_matrix * vec4(a_pos, z, 1);\\n\\n vec2 pos = a_normal.x == 1.0 && a_normal.y == 0.0 && a_normal.z == 16384.0\\n ? a_pos // extrusion top\\n : vec2(a_edgedistance, z * u_height_factor); // extrusion side\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, pos);\\n\\n v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\\n float directional = clamp(dot(a_normal / 16383.0, u_lightpos), 0.0, 1.0);\\n directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\\n\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\\n}\\n\"},extrusionTexture:{fragmentSource:\"uniform sampler2D u_image;\\nuniform float u_opacity;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(0.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nattribute vec2 a_pos;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\\n\\n v_pos.x = a_pos.x;\\n v_pos.y = 1.0 - a_pos.y;\\n}\\n\"},line:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_width2;\\nvarying vec2 v_normal;\\nvarying float v_gamma_scale;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\n// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},linePattern:{fragmentSource:\"uniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_fade;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\\n float y_a = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_a.y);\\n float y_b = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_b.y);\\n vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a));\\n vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b));\\n\\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\\n\\n gl_FragColor = color * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_linesofar = a_linesofar;\\n v_width2 = vec2(outset, inset);\\n}\\n\"},lineSDF:{\nfragmentSource:\"\\nuniform sampler2D u_image;\\nuniform float u_sdfgamma;\\nuniform float u_mix;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\\n alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_patternscale_a;\\nuniform float u_tex_y_a;\\nuniform vec2 u_patternscale_b;\\nuniform float u_tex_y_b;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist =outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);\\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},raster:{fragmentSource:\"uniform float u_fade_t;\\nuniform float u_opacity;\\nuniform sampler2D u_image0;\\nuniform sampler2D u_image1;\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nuniform float u_brightness_low;\\nuniform float u_brightness_high;\\n\\nuniform float u_saturation_factor;\\nuniform float u_contrast_factor;\\nuniform vec3 u_spin_weights;\\n\\nvoid main() {\\n\\n // read and cross-fade colors from the main and parent tiles\\n vec4 color0 = texture2D(u_image0, v_pos0);\\n vec4 color1 = texture2D(u_image1, v_pos1);\\n if (color0.a > 0.0) {\\n color0.rgb = color0.rgb / color0.a;\\n }\\n if (color1.a > 0.0) {\\n color1.rgb = color1.rgb / color1.a;\\n }\\n vec4 color = mix(color0, color1, u_fade_t);\\n color.a *= u_opacity;\\n vec3 rgb = color.rgb;\\n\\n // spin\\n rgb = vec3(\\n dot(rgb, u_spin_weights.xyz),\\n dot(rgb, u_spin_weights.zxy),\\n dot(rgb, u_spin_weights.yzx));\\n\\n // saturation\\n float average = (color.r + color.g + color.b) / 3.0;\\n rgb += (average - rgb) * u_saturation_factor;\\n\\n // contrast\\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\\n\\n // brightness\\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\\n\\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_tl_parent;\\nuniform float u_scale_parent;\\nuniform float u_buffer_scale;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;\\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\\n}\\n\"},symbolIcon:{fragmentSource:\"uniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * opacity;\\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_collision_y_stretch;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n\\n float size;\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // See comments in symbol_sdf.vertex\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // See comments in symbol_sdf.vertex\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n\\n v_tex = a_tex / u_texsize;\\n // See comments in symbol_sdf.vertex\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},symbolSDF:{fragmentSource:\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\n\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\nuniform highp float u_gamma_scale;\\nuniform bool u_is_text;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 tex = v_data0.xy;\\n vec2 fade_tex = v_data0.zw;\\n float gamma_scale = v_data1.x;\\n float size = v_data1.y;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n lowp vec4 color = fill_color;\\n highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);\\n lowp float buff = (256.0 - 64.0) / 256.0;\\n if (u_is_halo) {\\n color = halo_color;\\n gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);\\n buff = (6.0 - halo_width / fontScale) / SDF_PX;\\n }\\n\\n lowp float dist = texture2D(u_texture, tex).a;\\n lowp float fade_alpha = texture2D(u_fadetexture, fade_tex).a;\\n highp float gamma_scaled = gamma * gamma_scale;\\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist) * fade_alpha;\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\n// contents of a_size vary based on the type of property value\\n// used for {text,icon}-size.\\n// For constants, a_size is disabled.\\n// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.\\n// For composite functions:\\n// [ text-size(lowerZoomStop, feature),\\n// text-size(upperZoomStop, feature) ]\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\n\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_collision_y_stretch;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n float size;\\n\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // If the label is pitched with the map, layout is done in pitched space,\\n // which makes labels in the distance smaller relative to viewport space.\\n // We counteract part of that effect by multiplying by the perspective ratio.\\n // If the label isn't pitched with the map, we do layout in viewport space,\\n // which makes labels in the distance larger relative to the features around\\n // them. We counteract part of that effect by dividing by the perspective ratio.\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units\\n // To figure out that angle in projected space, we draw a short horizontal line in tile\\n // space, project it, and measure its angle in projected space.\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n float gamma_scale = gl_Position.w;\\n\\n vec2 tex = a_tex / u_texsize;\\n // incidence_stretch is the ratio of how much y space a label takes up on a tile while drawn perpendicular to the viewport vs\\n // how much space it would take up if it were drawn flat on the tile\\n // Using law of sines, camera_to_anchor/sin(ground_angle) = camera_to_center/sin(incidence_angle)\\n // sin(incidence_angle) = 1/incidence_stretch\\n // Incidence angle 90 -> head on, sin(incidence_angle) = 1, no incidence stretch\\n // Incidence angle 1 -> very oblique, sin(incidence_angle) =~ 0, lots of incidence stretch\\n // ground_angle = u_pitch + PI/2 -> sin(ground_angle) = cos(u_pitch)\\n // This 2D calculation is only exactly correct when gl_Position.x is in the center of the viewport,\\n // but it's a close enough approximation for our purposes\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n // incidence_stretch only applies to the y-axis, but without re-calculating the collision tile, we can't\\n // adjust the size of only one axis. So, we do a crude approximation at placement time to get the aspect ratio\\n // about right, and then do the rest of the adjustment here: there will be some extra padding on the x-axis,\\n // but hopefully not too much.\\n // Never make the adjustment less than 1.0: instead of allowing collisions on the x-axis, be conservative on\\n // the y-axis.\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n // Floor to 1/10th zoom to dodge precision issues that can cause partially hidden labels\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n vec2 fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n\\n v_data0 = vec4(tex.x, tex.y, fade_tex.x, fade_tex.y);\\n v_data1 = vec2(gamma_scale, size);\\n}\\n\"}},re=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,loop=function(e){var n=shaders[e],a={};n.fragmentSource=n.fragmentSource.replace(re,function(e,n,o,t,i){return a[i]=!0,\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"}),n.vertexSource=n.vertexSource.replace(re,function(e,n,o,t,i){var r=\"float\"===t?\"vec2\":\"vec4\";return a[i]?\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\":\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"})};for(var programName in shaders)loop(programName);module.exports=shaders;\n},{}],87:[function(_dereq_,module,exports){\n\"use strict\";var ImageSource=_dereq_(\"./image_source\"),window=_dereq_(\"../util/window\"),CanvasSource=function(t){function i(i,a,e,s){t.call(this,i,a,e,s),this.options=a,this.animate=void 0===a.animate||a.animate}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.load=function(){this.canvas=this.canvas||window.document.getElementById(this.options.canvas);var t=this.canvas.getContext(this.options.contextType);if(!t)return this.fire(\"error\",new Error(\"Canvas context not found.\"));if(this.context=t,this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions())return this.fire(\"error\",new Error(\"Canvas dimensions cannot be less than or equal to zero.\"));var i;this.play=function(){void 0===i&&(i=this.map.style.animationLoop.set(1/0),this.map._rerender())},this.pause=function(){void 0!==i&&(i=this.map.style.animationLoop.cancel(i))},this._finishLoading()},i.prototype.getCanvas=function(){return this.canvas},i.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},i.prototype.onRemove=function(){this.pause()},i.prototype.readCanvas=function(t){var i=this;if(this.context instanceof CanvasRenderingContext2D)this.canvasData=this.context.getImageData(0,0,this.width,this.height);else if(this.context instanceof WebGLRenderingContext){var a=this.context,e=new Uint8Array(this.width*this.height*4);a.readPixels(0,0,this.width,this.height,a.RGBA,a.UNSIGNED_BYTE,e),this.secondaryContext||(this.secondaryContext=window.document.createElement(\"canvas\").getContext(\"2d\")),this.canvasData&&!t||(this.canvasData=this.secondaryContext.createImageData(this.width,this.height));for(var s=this.height-1,n=0;s>=0;s--,n++)i.canvasData.data.set(e.subarray(s*i.width*4,(s+1)*i.width*4),n*i.width*4)}},i.prototype.prepare=function(){var t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){if((this.animate||!this.canvasData||t)&&this.readCanvas(t),!this.canvasData)return void this.fire(\"error\",new Error(\"Could not read canvas data.\"));this._prepareImage(this.map.painter.gl,this.canvasData,t)}},i.prototype.serialize=function(){return{type:\"canvas\",canvas:this.canvas,coordinates:this.coordinates}},i.prototype._hasInvalidDimensions=function(){for(var t=this,i=0,a=[t.canvas.width,t.canvas.height];i<a.length;i+=1){var e=a[i];if(isNaN(e)||e<=0)return!0}return!1},i}(ImageSource);module.exports=CanvasSource;\n},{\"../util/window\":204,\"./image_source\":91}],88:[function(_dereq_,module,exports){\n\"use strict\";function resolveURL(t){var e=window.document.createElement(\"a\");return e.href=t,e.href}var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),EXTENT=_dereq_(\"../data/extent\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),GeoJSONSource=function(t){function e(e,o,r,i){t.call(this),this.id=e,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this.dispatcher=r,this.setEventedParent(i),this._data=o.data,this._options=util.extend({},o),void 0!==o.maxzoom&&(this.maxzoom=o.maxzoom),o.type&&(this.type=o.type);var a=EXTENT/this.tileSize;this.workerOptions=util.extend({source:this.id,cluster:o.cluster||!1,geojsonVtOptions:{buffer:(void 0!==o.buffer?o.buffer:128)*a,tolerance:(void 0!==o.tolerance?o.tolerance:.375)*a,extent:EXTENT,maxZoom:this.maxzoom},superclusterOptions:{maxZoom:void 0!==o.clusterMaxZoom?Math.min(o.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:EXTENT,radius:(o.clusterRadius||50)*a,log:!1}},o.workerOptions)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(e){if(e)return void t.fire(\"error\",{error:e});t.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})})},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.setData=function(t){var e=this;return this._data=t,this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(t){if(t)return e.fire(\"error\",{error:t});e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"})}),this},e.prototype._updateWorkerData=function(t){var e=this,o=util.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?o.request=this.map._transformRequest(resolveURL(r),ResourceType.Source):o.data=JSON.stringify(r),this.workerID=this.dispatcher.send(this.type+\".loadData\",o,function(o){e._loaded=!0,t(o)},this.workerID)},e.prototype.loadTile=function(t,e){var o=this,r=t.workerID&&\"expired\"!==t.state?\"reloadTile\":\"loadTile\",i={type:this.type,uid:t.uid,coord:t.coord,zoom:t.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:t.coord.z>this.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(t),showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send(r,i,function(r,i){if(t.unloadVectorData(),!t.aborted)return r?e(r):(t.loadVectorData(i,o.map.painter),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(o)),e(null))},this.workerID)},e.prototype.abortTile=function(t){t.aborted=!0},e.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},function(){},t.workerID)},e.prototype.onRemove=function(){this.dispatcher.broadcast(\"removeSource\",{type:this.type,source:this.id},function(){})},e.prototype.serialize=function(){return util.extend({},this._options,{type:this.type,data:this._data})},e}(Evented);module.exports=GeoJSONSource;\n},{\"../data/extent\":48,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204}],89:[function(_dereq_,module,exports){\n\"use strict\";function loadGeoJSONTile(e,r){var t=e.source,o=e.coord;if(!this._geoJSONIndexes[t])return r(null,null);var n=this._geoJSONIndexes[t].getTile(Math.min(o.z,e.maxZoom),o.x,o.y);if(!n)return r(null,null);var u=new GeoJSONWrapper(n.features),i=vtpbf(u);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),r(null,{vectorTile:u,rawData:i.buffer})}var ajax=_dereq_(\"../util/ajax\"),rewind=_dereq_(\"geojson-rewind\"),GeoJSONWrapper=_dereq_(\"./geojson_wrapper\"),vtpbf=_dereq_(\"vt-pbf\"),supercluster=_dereq_(\"supercluster\"),geojsonvt=_dereq_(\"geojson-vt\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=function(e){function r(r,t,o){e.call(this,r,t,loadGeoJSONTile),o&&(this.loadGeoJSON=o),this._geoJSONIndexes={}}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,r){var t=this;this.loadGeoJSON(e,function(o,n){if(o||!n)return r(o);if(\"object\"!=typeof n)return r(new Error(\"Input data is not a valid GeoJSON object.\"));rewind(n,!0);try{t._geoJSONIndexes[e.source]=e.cluster?supercluster(e.superclusterOptions).load(n.features):geojsonvt(n,e.geojsonVtOptions)}catch(o){return r(o)}t.loaded[e.source]={},r(null)})},r.prototype.reloadTile=function(r,t){var o=this.loaded[r.source],n=r.uid;return o&&o[n]?e.prototype.reloadTile.call(this,r,t):this.loadTile(r,t)},r.prototype.loadGeoJSON=function(e,r){if(e.request)ajax.getJSON(e.request,r);else{if(\"string\"!=typeof e.data)return r(new Error(\"Input data is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(e.data))}catch(e){return r(new Error(\"Input data is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(e){this._geoJSONIndexes[e.source]&&delete this._geoJSONIndexes[e.source]},r}(VectorTileWorkerSource);module.exports=GeoJSONWorkerSource;\n},{\"../util/ajax\":201,\"./geojson_wrapper\":90,\"./vector_tile_worker_source\":103,\"geojson-rewind\":13,\"geojson-vt\":17,\"supercluster\":32,\"vt-pbf\":37}],90:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),toGeoJSON=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.prototype.toGeoJSON,EXTENT=_dereq_(\"../data/extent\"),FeatureWrapper=function(e){this._feature=e,this.extent=EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};FeatureWrapper.prototype.loadGeometry=function(){var e=this;if(1===this._feature.type){for(var t=[],r=0,o=e._feature.geometry;r<o.length;r+=1){var a=o[r];t.push([new Point(a[0],a[1])])}return t}for(var i=[],p=0,n=e._feature.geometry;p<n.length;p+=1){for(var s=n[p],u=[],h=0,f=s;h<f.length;h+=1){var l=f[h];u.push(new Point(l[0],l[1]))}i.push(u)}return i},FeatureWrapper.prototype.toGeoJSON=function(e,t,r){return toGeoJSON.call(this,e,t,r)};var GeoJSONWrapper=function(e){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=EXTENT,this.length=e.length,this._features=e};GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this._features[e])},module.exports=GeoJSONWrapper;\n},{\"../data/extent\":48,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],91:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),TileCoord=_dereq_(\"./tile_coord\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),EXTENT=_dereq_(\"../data/extent\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"../render/vertex_array_object\"),ImageSource=function(e){function t(t,r,o,i){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(i),this.options=r,this.textureLoaded=!1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),this.url=this.options.url,ajax.getImage(this.map._transformRequest(this.url,ajax.ResourceType.Image),function(t,r){t?e.fire(\"error\",{error:t}):r&&(e.image=browser.getImageData(r),e._finishLoading())})},t.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}))},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.setCoordinates=function(e){this.coordinates=e;var t=this.map,r=e.map(function(e){return t.transform.locationCoordinate(LngLat.convert(e)).zoomTo(0)}),o=this.centerCoord=util.getCoordinatesCenter(r);o.column=Math.floor(o.column),o.row=Math.floor(o.row),this.coord=new TileCoord(o.zoom,o.column,o.row),this.minzoom=this.maxzoom=o.zoom;var i=r.map(function(e){var t=e.zoomTo(o.zoom);return new Point(Math.round((t.column-o.column)*EXTENT),Math.round((t.row-o.row)*EXTENT))});return this._boundsArray=new RasterBoundsArray,this._boundsArray.emplaceBack(i[0].x,i[0].y,0,0),this._boundsArray.emplaceBack(i[1].x,i[1].y,EXTENT,0),this._boundsArray.emplaceBack(i[3].x,i[3].y,0,EXTENT),this._boundsArray.emplaceBack(i[2].x,i[2].y,EXTENT,EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}),this},t.prototype.prepare=function(){0!==Object.keys(this.tiles).length&&this.image&&this._prepareImage(this.map.painter.gl,this.image)},t.prototype._prepareImage=function(e,t,r){var o=this;this.boundsBuffer||(this.boundsBuffer=new VertexBuffer(e,this._boundsArray)),this.boundsVAO||(this.boundsVAO=new VertexArrayObject),this.textureLoaded?r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t):(t instanceof window.HTMLVideoElement||t instanceof window.ImageData)&&(e.bindTexture(e.TEXTURE_2D,this.texture),e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,t)):(this.textureLoaded=!0,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t));for(var i in o.tiles){var a=o.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=o.texture)}},t.prototype.loadTile=function(e,t){this.coord&&this.coord.toString()===e.coord.toString()?(this.tiles[String(e.coord.w)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null))},t.prototype.serialize=function(){return{type:\"image\",url:this.options.url,coordinates:this.coordinates}},t}(Evented);module.exports=ImageSource;\n},{\"../data/extent\":48,\"../data/raster_bounds_array\":54,\"../geo/lng_lat\":58,\"../gl/vertex_buffer\":62,\"../render/vertex_array_object\":84,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],92:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeSourceURL;module.exports=function(r,e,o){var u=function(r,e){if(r)return o(r);if(e){var u=util.pick(e,[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\"]);e.vector_layers&&(u.vectorLayers=e.vector_layers,u.vectorLayerIds=u.vectorLayers.map(function(r){return r.id})),o(null,u)}};r.url?ajax.getJSON(e(normalizeURL(r.url),ajax.ResourceType.Source),u):browser.frame(function(){return u(null,r)})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/mapbox\":217,\"../util/util\":223}],93:[function(_dereq_,module,exports){\n\"use strict\";var EXTENT=_dereq_(\"../data/extent\");module.exports=function(e,t,r){return t*(EXTENT/(e.tileSize*Math.pow(2,r-e.coord.z)))};\n},{\"../data/extent\":48}],94:[function(_dereq_,module,exports){\n\"use strict\";function sortTilesIn(e,r){var o=e.coord,t=r.coord;return o.z-t.z||o.y-t.y||o.w-t.w||o.x-t.x}function mergeRenderedFeatureLayers(e){for(var r={},o={},t=0,n=e;t<n.length;t+=1){var u=n[t],a=u.queryResults,d=u.wrappedTileID,s=o[d]=o[d]||{};for(var i in a)for(var l=a[i],c=s[i]=s[i]||{},f=r[i]=r[i]||[],v=0,y=l;v<y.length;v+=1){var p=y[v];c[p.featureIndex]||(c[p.featureIndex]=!0,f.push(p.feature))}}return r}var TileCoord=_dereq_(\"./tile_coord\");exports.rendered=function(e,r,o,t,n,u){var a=e.tilesIn(o);a.sort(sortTilesIn);for(var d=[],s=0,i=a;s<i.length;s+=1){var l=i[s];d.push({wrappedTileID:l.coord.wrapped().id,queryResults:l.tile.queryRenderedFeatures(r,l.queryGeometry,l.scale,t,u)})}return mergeRenderedFeatureLayers(d)},exports.source=function(e,r){for(var o=e.getRenderableIds().map(function(r){return e.getTileByID(r)}),t=[],n={},u=0;u<o.length;u++){var a=o[u],d=new TileCoord(Math.min(a.sourceMaxZoom,a.coord.z),a.coord.x,a.coord.y,0).id;n[d]||(n[d]=!0,a.querySourceFeatures(t,r))}return t};\n},{\"./tile_coord\":101}],95:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),RasterTileSource=function(e){function t(t,i,r,o){e.call(this),this.id=t,this.dispatcher=r,this.setEventedParent(o),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=util.extend({},i),util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"]))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.loadTile=function(e,t){var i=this,r=normalizeURL(e.coord.url(this.tiles,null,this.scheme),this.url,this.tileSize);e.request=ajax.getImage(this.map._transformRequest(r,ajax.ResourceType.Tile),function(r,o){if(delete e.request,e.aborted)i.state=\"unloaded\",t(null);else if(r)i.state=\"errored\",t(r);else if(o){i.map._refreshExpiredTiles&&e.setExpiryData(o),delete o.cacheControl,delete o.expires;var a=i.map.painter.gl;e.texture=i.map.painter.getTileTexture(o.width),e.texture?(a.bindTexture(a.TEXTURE_2D,e.texture),a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,o)):(e.texture=a.createTexture(),a.bindTexture(a.TEXTURE_2D,e.texture),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),i.map.painter.extTextureFilterAnisotropic&&a.texParameterf(a.TEXTURE_2D,i.map.painter.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.map.painter.extTextureFilterAnisotropicMax),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,o),e.texture.size=o.width),a.generateMipmap(a.TEXTURE_2D),e.state=\"loaded\",t(null)}})},t.prototype.abortTile=function(e){e.request&&(e.request.abort(),delete e.request)},t.prototype.unloadTile=function(e){e.texture&&this.map.painter.saveTileTexture(e.texture)},t}(Evented);module.exports=RasterTileSource;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],96:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),window=_dereq_(\"../util/window\"),pluginRequested=!1,pluginBlobURL=null;module.exports.evented=new Evented,module.exports.registerForPluginAvailability=function(e){return pluginBlobURL?e({pluginBlobURL:pluginBlobURL,errorCallback:module.exports.errorCallback}):module.exports.evented.once(\"pluginAvailable\",e),e},module.exports.createBlobURL=function(e){return window.URL.createObjectURL(new window.Blob([e.data],{type:\"text/javascript\"}))},module.exports.clearRTLTextPlugin=function(){pluginRequested=!1,pluginBlobURL=null},module.exports.setRTLTextPlugin=function(e,l){if(pluginRequested)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");pluginRequested=!0,module.exports.errorCallback=l,ajax.getArrayBuffer({url:e},function(e,t){e?l(e):t&&(pluginBlobURL=module.exports.createBlobURL(t),module.exports.evented.fire(\"pluginAvailable\",{pluginBlobURL:pluginBlobURL,errorCallback:l}))})},module.exports.applyArabicShaping=null,module.exports.processBidirectionalText=null;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/window\":204}],97:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),sourceTypes={vector:_dereq_(\"../source/vector_tile_source\"),raster:_dereq_(\"../source/raster_tile_source\"),geojson:_dereq_(\"../source/geojson_source\"),video:_dereq_(\"../source/video_source\"),image:_dereq_(\"../source/image_source\"),canvas:_dereq_(\"../source/canvas_source\")};exports.create=function(e,r,o,u){var s=new sourceTypes[r.type](e,r,o,u);if(s.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+s.id);return util.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],s),s},exports.getType=function(e){return sourceTypes[e]},exports.setType=function(e,r){sourceTypes[e]=r};\n},{\"../source/canvas_source\":87,\"../source/geojson_source\":88,\"../source/image_source\":91,\"../source/raster_tile_source\":95,\"../source/vector_tile_source\":102,\"../source/video_source\":104,\"../util/util\":223}],98:[function(_dereq_,module,exports){\n\"use strict\";function coordinateToTilePoint(e,t,o){var i=o.zoomTo(Math.min(e.z,t));return new Point((i.column-(e.x+e.w*Math.pow(2,e.z)))*EXTENT,(i.row-e.y)*EXTENT)}function compareKeyZoom(e,t){return e%32-t%32}function isRasterType(e){return\"raster\"===e||\"image\"===e||\"video\"===e}var createSource=_dereq_(\"./source\").create,Tile=_dereq_(\"./tile\"),Evented=_dereq_(\"../util/evented\"),TileCoord=_dereq_(\"./tile_coord\"),Cache=_dereq_(\"../util/lru_cache\"),Coordinate=_dereq_(\"../geo/coordinate\"),util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"../data/extent\"),Point=_dereq_(\"@mapbox/point-geometry\"),SourceCache=function(e){function t(t,o,i){var r=this;e.call(this),this.id=t,this.dispatcher=i,this.on(\"data\",function(e){\"source\"===e.dataType&&\"metadata\"===e.sourceDataType&&(r._sourceLoaded=!0),r._sourceLoaded&&!r._paused&&\"source\"===e.dataType&&\"content\"===e.sourceDataType&&(r.reload(),r.transform&&r.update(r.transform))}),this.on(\"error\",function(){r._sourceErrored=!0}),this._source=createSource(t,o,i,this),this._tiles={},this._cache=new Cache(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._isIdRenderable=this._isIdRenderable.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.onAdd=function(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(e)},t.prototype.onRemove=function(e){this._source&&this._source.onRemove&&this._source.onRemove(e)},t.prototype.loaded=function(){var e=this;if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;for(var t in e._tiles){var o=e._tiles[t];if(\"loaded\"!==o.state&&\"errored\"!==o.state)return!1}return!0},t.prototype.getSource=function(){return this._source},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){if(this._paused){var e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}},t.prototype._loadTile=function(e,t){return this._source.loadTile(e,t)},t.prototype._unloadTile=function(e){if(this._source.unloadTile)return this._source.unloadTile(e)},t.prototype._abortTile=function(e){if(this._source.abortTile)return this._source.abortTile(e)},t.prototype.serialize=function(){return this._source.serialize()},t.prototype.prepare=function(e){var t=this;this._source.prepare&&this._source.prepare();for(var o in t._tiles)t._tiles[o].upload(e)},t.prototype.getIds=function(){return Object.keys(this._tiles).map(Number).sort(compareKeyZoom)},t.prototype.getRenderableIds=function(){return this.getIds().filter(this._isIdRenderable)},t.prototype._isIdRenderable=function(e){return this._tiles[e].hasData()&&!this._coveredTiles[e]},t.prototype.reload=function(){var e=this;if(this._paused)return void(this._shouldReloadOnResume=!0);this._cache.reset();for(var t in e._tiles)e._reloadTile(t,\"reloading\")},t.prototype._reloadTile=function(e,t){var o=this._tiles[e];o&&(\"loading\"!==o.state&&(o.state=t),this._loadTile(o,this._tileLoaded.bind(this,o,e,t)))},t.prototype._tileLoaded=function(e,t,o,i){if(i)return e.state=\"errored\",void(404!==i.status?this._source.fire(\"error\",{tile:e,error:i}):this.update(this.transform));e.timeAdded=(new Date).getTime(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),this._source.fire(\"data\",{dataType:\"source\",tile:e,coord:e.coord}),this.map&&(this.map.painter.tileExtentVAO.vao=null)},t.prototype.getTile=function(e){return this.getTileByID(e.id)},t.prototype.getTileByID=function(e){return this._tiles[e]},t.prototype.getZoom=function(e){return e.zoom+e.scaleZoom(e.tileSize/this._source.tileSize)},t.prototype._findLoadedChildren=function(e,t,o){var i=this,r=!1;for(var s in i._tiles){var a=i._tiles[s];if(!(o[s]||!a.hasData()||a.coord.z<=e.z||a.coord.z>t)){var n=Math.pow(2,Math.min(a.coord.z,i._source.maxzoom)-Math.min(e.z,i._source.maxzoom));if(Math.floor(a.coord.x/n)===e.x&&Math.floor(a.coord.y/n)===e.y)for(o[s]=!0,r=!0;a&&a.coord.z-1>e.z;){var d=a.coord.parent(i._source.maxzoom);if(!d)break;a=i._tiles[d.id],a&&a.hasData()&&(delete o[s],o[d.id]=!0)}}}return r},t.prototype.findLoadedParent=function(e,t,o){for(var i=this,r=e.z-1;r>=t;r--){var s=e.parent(i._source.maxzoom);if(!s)return;e=s;var a=String(e.id),n=i._tiles[a];if(n&&n.hasData())return o[a]=!0,n;if(i._cache.has(a))return o[a]=!0,i._cache.getWithoutRemoving(a)}},t.prototype.updateCacheSize=function(e){var t=Math.ceil(e.width/e.tileSize)+1,o=Math.ceil(e.height/e.tileSize)+1,i=t*o,r=Math.floor(5*i),s=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(s)},t.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){this.updateCacheSize(e),this._coveredTiles={};var i;this.used?this._source.coord?i=e.getVisibleWrappedCoordinates(this._source.coord):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(e){return o._source.hasTile(e)}))):i=[];var r=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),s=Math.max(r-t.maxOverzooming,this._source.minzoom),a=Math.max(r+t.maxUnderzooming,this._source.minzoom),n=this._updateRetainedTiles(i,r),d={};if(isRasterType(this._source.type))for(var h=Object.keys(n),u=0;u<h.length;u++){var c=h[u],l=TileCoord.fromID(+c),_=o._tiles[c];if(_&&(void 0===_.fadeEndTime||_.fadeEndTime>=Date.now())){o._findLoadedChildren(l,a,n)&&(n[c]=!0);var m=o.findLoadedParent(l,s,d);m&&o._addTile(m.coord)}}var p;for(p in d)n[p]||(o._coveredTiles[p]=!0);for(p in d)n[p]=!0;for(var f=util.keysDifference(this._tiles,n),T=0;T<f.length;T++)o._removeTile(f[T])}},t.prototype._updateRetainedTiles=function(e,o){var i,r,s,a,n=this,d={},h={},u=Math.max(o-t.maxOverzooming,this._source.minzoom);for(i=0;i<e.length;i++){r=e[i],s=n._addTile(r);var c=!1;if(s.hasData())d[r.id]=!0;else{c=s.wasRequested(),d[r.id]=!0,a=!0;if(o+1>n._source.maxzoom){var l=r.children(n._source.maxzoom)[0],_=n.getTile(l);_&&_.hasData()?d[l.id]=!0:a=!1}else for(var m=r.children(n._source.maxzoom),p=0;p<m.length;p++){var f=m[p],T=f?n.getTile(f):null;T&&T.hasData()?d[f.id]=!0:a=!1}if(!a)for(var v=o-1;v>=u;--v){var y=r.scaledTo(v,n._source.maxzoom);if(h[y.id])break;if(h[y.id]=!0,s=n.getTile(y),!s&&c&&(s=n._addTile(y)),s&&(d[y.id]=!0,c=s.wasRequested(),s.hasData()))break}}}return d},t.prototype._addTile=function(e){var t=this._tiles[e.id];if(t)return t;(t=this._cache.get(e.id))&&(t.redoPlacement(this._source),this._cacheTimers[e.id]&&(clearTimeout(this._cacheTimers[e.id]),delete this._cacheTimers[e.id],this._setTileReloadTimer(e.id,t)));var o=Boolean(t);if(!o){var i=e.z,r=i>this._source.maxzoom?Math.pow(2,i-this._source.maxzoom):1;t=new Tile(e,this._source.tileSize*r,this._source.maxzoom),this._loadTile(t,this._tileLoaded.bind(this,t,e.id,t.state))}return t?(t.uses++,this._tiles[e.id]=t,o||this._source.fire(\"dataloading\",{tile:t,coord:t.coord,dataType:\"source\"}),t):null},t.prototype._setTileReloadTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout(function(){o._reloadTile(e,\"expired\"),delete o._timers[e]},i))},t.prototype._setCacheInvalidationTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._cacheTimers[e]=setTimeout(function(){o._cache.remove(e),delete o._cacheTimers[e]},i))},t.prototype._removeTile=function(e){var t=this._tiles[e];if(t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),!(t.uses>0)))if(t.stopPlacementThrottler(),t.hasData()){var o=t.coord.wrapped().id;this._cache.add(o,t),this._setCacheInvalidationTimer(o,t)}else t.aborted=!0,this._abortTile(t),this._unloadTile(t)},t.prototype.clearTiles=function(){var e=this;this._shouldReloadOnResume=!1,this._paused=!1;for(var t in e._tiles)e._removeTile(t);this._cache.reset()},t.prototype.tilesIn=function(e){for(var t=this,o=[],i=this.getIds(),r=1/0,s=1/0,a=-1/0,n=-1/0,d=e[0].zoom,h=0;h<e.length;h++){var u=e[h];r=Math.min(r,u.column),s=Math.min(s,u.row),a=Math.max(a,u.column),n=Math.max(n,u.row)}for(var c=0;c<i.length;c++){var l=t._tiles[i[c]],_=TileCoord.fromID(i[c]),m=[coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(r,s,d)),coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(a,n,d))];if(m[0].x<EXTENT&&m[0].y<EXTENT&&m[1].x>=0&&m[1].y>=0){for(var p=[],f=0;f<e.length;f++)p.push(coordinateToTilePoint(_,l.sourceMaxZoom,e[f]));o.push({tile:l,coord:_,queryGeometry:[p],scale:Math.pow(2,t.transform.zoom-l.coord.z)})}}return o},t.prototype.redoPlacement=function(){for(var e=this,t=this.getIds(),o=0;o<t.length;o++){e.getTileByID(t[o]).redoPlacement(e._source)}},t.prototype.getVisibleCoordinates=function(){for(var e=this,t=this.getRenderableIds().map(TileCoord.fromID),o=0,i=t;o<i.length;o+=1){var r=i[o];r.posMatrix=e.transform.calculatePosMatrix(r,e._source.maxzoom)}return t},t}(Evented);SourceCache.maxOverzooming=10,SourceCache.maxUnderzooming=3,module.exports=SourceCache;\n},{\"../data/extent\":48,\"../geo/coordinate\":57,\"../util/evented\":210,\"../util/lru_cache\":216,\"../util/util\":223,\"./source\":97,\"./tile\":99,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],99:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),deserializeBucket=_dereq_(\"../data/bucket\").deserialize,SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),FeatureIndex=_dereq_(\"../data/feature_index\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),Throttler=_dereq_(\"../util/throttler\"),Texture=_dereq_(\"../render/texture\"),CLOCK_SKEW_RETRY_TIMEOUT=3e4,Tile=function(e,t,i){this.coord=e,this.uid=util.uniqueId(),this.uses=0,this.tileSize=t,this.sourceMaxZoom=i,this.buckets={},this.expirationTime=null,this.expiredRequestCount=0,this.state=\"loading\",this.placementThrottler=new Throttler(300,this._immediateRedoPlacement.bind(this))};Tile.prototype.registerFadeDuration=function(e,t){var i=t+this.timeAdded;i<Date.now()||this.fadeEndTime&&i<this.fadeEndTime||(this.fadeEndTime=i,e.set(this.fadeEndTime-Date.now()))},Tile.prototype.wasRequested=function(){return\"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},Tile.prototype.loadVectorData=function(e,t){this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e&&(e.rawTileData&&(this.rawTileData=e.rawTileData),this.collisionBoxArray=new CollisionBoxArray(e.collisionBoxArray),this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex=FeatureIndex.deserialize(e.featureIndex,this.rawTileData,this.collisionTile),this.buckets=deserializeBucket(e.buckets,t.style),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage))},Tile.prototype.reloadSymbolData=function(e,t){var i=this;if(\"unloaded\"!==this.state){this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex&&this.featureIndex.setCollisionTile(this.collisionTile);for(var a in i.buckets){var s=i.buckets[a];s instanceof SymbolBucket&&(s.destroy(),delete i.buckets[a])}util.extend(this.buckets,deserializeBucket(e.buckets,t)),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage)}},Tile.prototype.unloadVectorData=function(){var e=this;for(var t in e.buckets)e.buckets[t].destroy();this.buckets={},this.iconAtlasTexture&&this.iconAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.collisionBoxArray=null,this.collisionTile=null,this.featureIndex=null,this.state=\"unloaded\"},Tile.prototype.redoPlacement=function(e){if(\"vector\"===e.type||\"geojson\"===e.type){if(\"loaded\"!==this.state)return void(this.redoWhenDone=!0);if(this.collisionTile){var t=e.map.transform.cameraToTileDistance(this);if(this.angle===e.map.transform.angle&&this.pitch===e.map.transform.pitch&&this.showCollisionBoxes===e.map.showCollisionBoxes){if(this.cameraToTileDistance===t&&this.cameraToCenterDistance===e.map.transform.cameraToCenterDistance)return;if(this.pitch<25)return this.cameraToTileDistance=t,void(this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance)}this.angle=e.map.transform.angle,this.pitch=e.map.transform.pitch,this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance,this.cameraToTileDistance=t,this.showCollisionBoxes=e.map.showCollisionBoxes,this.placementSource=e,this.state=\"reloading\",this.placementThrottler.invoke()}}},Tile.prototype._immediateRedoPlacement=function(){var e=this;this.placementSource.dispatcher.send(\"redoPlacement\",{type:this.placementSource.type,uid:this.uid,source:this.placementSource.id,angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,showCollisionBoxes:this.showCollisionBoxes},function(t,i){\"reloading\"===e.state&&(e.state=\"loaded\",e.reloadSymbolData(i,e.placementSource.map.style),e.placementSource.fire(\"data\",{tile:e,coord:e.coord,dataType:\"source\"}),e.placementSource.map&&(e.placementSource.map.painter.tileExtentVAO.vao=null),e.redoWhenDone&&(e.state=\"reloading\",e.redoWhenDone=!1,e._immediateRedoPlacement()))},this.workerID)},Tile.prototype.getBucket=function(e){return this.buckets[e.id]},Tile.prototype.upload=function(e){var t=this;for(var i in t.buckets){var a=t.buckets[i];a.uploaded||(a.upload(e),a.uploaded=!0)}this.iconAtlasImage&&(this.iconAtlasTexture=new Texture(e,this.iconAtlasImage,e.RGBA),this.iconAtlasImage=null),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Texture(e,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null)},Tile.prototype.queryRenderedFeatures=function(e,t,i,a,s){var o=this;if(!this.featureIndex)return{};var r=0;for(var l in e){var n=o.getBucket(e[l]);n&&(r=Math.max(r,e[l].queryRadius(n)))}return this.featureIndex.query({queryGeometry:t,bearing:s,params:a,scale:i,additionalRadius:r,tileSize:this.tileSize},e)},Tile.prototype.querySourceFeatures=function(e,t){var i=this;if(this.rawTileData){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers);var a=t?t.sourceLayer:\"\",s=this.vtLayers._geojsonTileLayer||this.vtLayers[a];if(s)for(var o=featureFilter(t&&t.filter),r={z:this.coord.z,x:this.coord.x,y:this.coord.y},l=0;l<s.length;l++){var n=s.feature(l);if(o(n)){var h=new GeoJSONFeature(n,i.coord.z,i.coord.x,i.coord.y);h.tile=r,e.push(h)}}}},Tile.prototype.hasData=function(){return\"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},Tile.prototype.setExpiryData=function(e){var t=this.expirationTime;if(e.cacheControl){var i=util.parseCacheControl(e.cacheControl);i[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*i[\"max-age\"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){var a=Date.now(),s=!1;if(this.expirationTime>a)s=!1;else if(t)if(this.expirationTime<t)s=!0;else{var o=this.expirationTime-t;o?this.expirationTime=a+Math.max(o,CLOCK_SKEW_RETRY_TIMEOUT):s=!0}else s=!0;s?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0}},Tile.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},Tile.prototype.stopPlacementThrottler=function(){this.placementThrottler.stop(),\"reloading\"===this.state&&(this.state=\"loaded\")},module.exports=Tile;\n},{\"../data/bucket\":42,\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/texture\":83,\"../style-spec/feature_filter\":110,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/throttler\":221,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"@mapbox/vector-tile\":6,\"pbf\":29}],100:[function(_dereq_,module,exports){\n\"use strict\";var LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),clamp=_dereq_(\"../util/util\").clamp,TileBounds=function(t,n,o){this.bounds=LngLatBounds.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=o||24};TileBounds.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},TileBounds.prototype.contains=function(t,n){var o=n?Math.min(t.z,n):t.z,a={minX:Math.floor(this.lngX(this.bounds.getWest(),o)),minY:Math.floor(this.latY(this.bounds.getNorth(),o)),maxX:Math.ceil(this.lngX(this.bounds.getEast(),o)),maxY:Math.ceil(this.latY(this.bounds.getSouth(),o))};return t.x>=a.minX&&t.x<a.maxX&&t.y>=a.minY&&t.y<a.maxY},TileBounds.prototype.lngX=function(t,n){return(t+180)*(Math.pow(2,n)/360)},TileBounds.prototype.latY=function(t,n){var o=clamp(Math.sin(Math.PI/180*t),-.9999,.9999),a=Math.pow(2,n)/(2*Math.PI);return Math.pow(2,n-1)+.5*Math.log((1+o)/(1-o))*-a},module.exports=TileBounds;\n},{\"../geo/lng_lat_bounds\":59,\"../util/util\":223}],101:[function(_dereq_,module,exports){\n\"use strict\";function edge(t,i){if(t.row>i.row){var o=t;t=i,i=o}return{x0:t.column,y0:t.row,x1:i.column,y1:i.row,dx:i.column-t.column,dy:i.row-t.row}}function scanSpans(t,i,o,r,e){var h=Math.max(o,Math.floor(i.y0)),n=Math.min(r,Math.ceil(i.y1));if(t.x0===i.x0&&t.y0===i.y0?t.x0+i.dy/t.dy*t.dx<i.x1:t.x1-i.dy/t.dy*t.dx<i.x0){var s=t;t=i,i=s}for(var a=t.dx/t.dy,d=i.dx/i.dy,l=t.dx>0,y=i.dx<0,x=h;x<n;x++){var u=a*Math.max(0,Math.min(t.dy,x+l-t.y0))+t.x0,c=d*Math.max(0,Math.min(i.dy,x+y-i.y0))+i.x0;e(Math.floor(c),Math.ceil(u),x)}}function scanTriangle(t,i,o,r,e,h){var n,s=edge(t,i),a=edge(i,o),d=edge(o,t);s.dy>a.dy&&(n=s,s=a,a=n),s.dy>d.dy&&(n=s,s=d,d=n),a.dy>d.dy&&(n=a,a=d,d=n),s.dy&&scanSpans(d,s,r,e,h),a.dy&&scanSpans(d,a,r,e,h)}function getQuadkey(t,i,o){for(var r,e=\"\",h=t;h>0;h--)r=1<<h-1,e+=(i&r?1:0)+(o&r?2:0);return e}var WhooTS=_dereq_(\"@mapbox/whoots-js\"),Coordinate=_dereq_(\"../geo/coordinate\"),TileCoord=function(t,i,o,r){(void 0===r||isNaN(r))&&(r=0),this.z=+t,this.x=+i,this.y=+o,this.w=+r,(r*=2)<0&&(r=-1*r-1);var e=1<<this.z;this.id=32*(e*e*r+e*this.y+this.x)+this.z,this.posMatrix=null};TileCoord.prototype.toString=function(){return this.z+\"/\"+this.x+\"/\"+this.y},TileCoord.prototype.toCoordinate=function(t){var i=Math.min(this.z,void 0===t?this.z:t),o=Math.pow(2,i),r=this.y,e=this.x+o*this.w;return new Coordinate(e,r,i)},TileCoord.prototype.url=function(t,i,o){var r=WhooTS.getTileBBox(this.x,this.y,this.z),e=getQuadkey(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(Math.min(this.z,i||this.z))).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===o?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",e).replace(\"{bbox-epsg-3857}\",r)},TileCoord.prototype.parent=function(t){return 0===this.z?null:this.z>t?new TileCoord(this.z-1,this.x,this.y,this.w):new TileCoord(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)},TileCoord.prototype.wrapped=function(){return new TileCoord(this.z,this.x,this.y,0)},TileCoord.prototype.children=function(t){if(this.z>=t)return[new TileCoord(this.z+1,this.x,this.y,this.w)];var i=this.z+1,o=2*this.x,r=2*this.y;return[new TileCoord(i,o,r,this.w),new TileCoord(i,o+1,r,this.w),new TileCoord(i,o,r+1,this.w),new TileCoord(i,o+1,r+1,this.w)]},TileCoord.prototype.scaledTo=function(t,i){return this.z>i?new TileCoord(t,this.x,this.y,this.w):t<=this.z?new TileCoord(t,this.x>>this.z-t,this.y>>this.z-t,this.w):new TileCoord(t,this.x<<t-this.z,this.y<<t-this.z,this.w)},TileCoord.cover=function(t,i,o,r){function e(t,i,e){var s,a,d,l;if(e>=0&&e<=h)for(s=t;s<i;s++)a=Math.floor(s/h),d=(s%h+h)%h,0!==a&&!0!==r||(l=new TileCoord(o,d,e,a),n[l.id]=l)}void 0===r&&(r=!0);var h=1<<t,n={};return scanTriangle(i[0],i[1],i[2],0,h,e),scanTriangle(i[2],i[3],i[0],0,h,e),Object.keys(n).map(function(t){return n[t]})},TileCoord.fromID=function(t){var i=t%32,o=1<<i,r=(t-i)/32,e=r%o,h=(r-e)/o%o,n=Math.floor(r/(o*o));return n%2!=0&&(n=-1*n-1),n/=2,new TileCoord(i,e,h,n)},module.exports=TileCoord;\n},{\"../geo/coordinate\":57,\"@mapbox/whoots-js\":10}],102:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),VectorTileSource=function(e){function t(t,i,o,r){if(e.call(this),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"])),this._options=util.extend({type:\"vector\"},i),512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.loadTile=function(e,t){function i(i,o){if(!e.aborted){if(i)return t(i);this.map._refreshExpiredTiles&&e.setExpiryData(o),e.loadVectorData(o,this.map.painter),e.redoWhenDone&&(e.redoWhenDone=!1,e.redoPlacement(this)),t(null),e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)}}var o=e.coord.z>this.maxzoom?Math.pow(2,e.coord.z-this.maxzoom):1,r=normalizeURL(e.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),s={request:this.map._transformRequest(r,ResourceType.Tile),uid:e.uid,coord:e.coord,zoom:e.coord.z,tileSize:this.tileSize*o,type:this.type,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:o,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(e),showCollisionBoxes:this.map.showCollisionBoxes};e.workerID&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=t:this.dispatcher.send(\"reloadTile\",s,i.bind(this),e.workerID):e.workerID=this.dispatcher.send(\"loadTile\",s,i.bind(this))},t.prototype.abortTile=function(e){this.dispatcher.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t.prototype.unloadTile=function(e){e.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t}(Evented);module.exports=VectorTileSource;\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],103:[function(_dereq_,module,exports){\n\"use strict\";function loadVectorTile(e,r){var o=ajax.getArrayBuffer(e.request,function(e,o){e?r(e):o&&r(null,{vectorTile:new vt.VectorTile(new Protobuf(o.data)),rawData:o.data,cacheControl:o.cacheControl,expires:o.expires})});return function(){o.abort()}}var ajax=_dereq_(\"../util/ajax\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),WorkerTile=_dereq_(\"./worker_tile\"),util=_dereq_(\"../util/util\"),VectorTileWorkerSource=function(e,r,o){this.actor=e,this.layerIndex=r,this.loadVectorData=o||loadVectorTile,this.loading={},this.loaded={}};VectorTileWorkerSource.prototype.loadTile=function(e,r){var o=this,t=e.source,a=e.uid;this.loading[t]||(this.loading[t]={});var i=this.loading[t][a]=new WorkerTile(e);i.abort=this.loadVectorData(e,function(e,l){if(delete o.loading[t][a],e||!l)return r(e);var c=l.rawData,n={};l.expires&&(n.expires=l.expires),l.cacheControl&&(n.cacheControl=l.cacheControl),i.vectorTile=l.vectorTile,i.parse(l.vectorTile,o.layerIndex,o.actor,function(e,o,t){if(e||!o)return r(e);r(null,util.extend({rawTileData:c},o,n),t)}),o.loaded[t]=o.loaded[t]||{},o.loaded[t][a]=i})},VectorTileWorkerSource.prototype.reloadTile=function(e,r){function o(e,o){if(this.reloadCallback){var t=this.reloadCallback;delete this.reloadCallback,this.parse(this.vectorTile,i.layerIndex,i.actor,t)}r(e,o)}var t=this.loaded[e.source],a=e.uid,i=this;if(t&&t[a]){var l=t[a];\"parsing\"===l.status?l.reloadCallback=r:\"done\"===l.status&&l.parse(l.vectorTile,this.layerIndex,this.actor,o.bind(l))}},VectorTileWorkerSource.prototype.abortTile=function(e){var r=this.loading[e.source],o=e.uid;r&&r[o]&&r[o].abort&&(r[o].abort(),delete r[o])},VectorTileWorkerSource.prototype.removeTile=function(e){var r=this.loaded[e.source],o=e.uid;r&&r[o]&&delete r[o]},VectorTileWorkerSource.prototype.redoPlacement=function(e,r){var o=this.loaded[e.source],t=this.loading[e.source],a=e.uid;if(o&&o[a]){var i=o[a],l=i.redoPlacement(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,e.showCollisionBoxes);l.result&&r(null,l.result,l.transferables)}else t&&t[a]&&(t[a].angle=e.angle)},module.exports=VectorTileWorkerSource;\n},{\"../util/ajax\":201,\"../util/util\":223,\"./worker_tile\":106,\"@mapbox/vector-tile\":6,\"pbf\":29}],104:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),ImageSource=_dereq_(\"./image_source\"),VideoSource=function(e){function t(t,o,i,r){e.call(this,t,o,i,r),this.roundZoom=!0,this.type=\"video\",this.options=o}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this,t=this.options;this.urls=t.urls,ajax.getVideo(t.urls,function(t,o){if(t)e.fire(\"error\",{error:t});else if(o){e.video=o,e.video.loop=!0;var i;e.video.addEventListener(\"playing\",function(){i=e.map.style.animationLoop.set(1/0),e.map._rerender()}),e.video.addEventListener(\"pause\",function(){e.map.style.animationLoop.cancel(i)}),e.map&&e.video.play(),e._finishLoading()}})},t.prototype.getVideo=function(){return this.video},t.prototype.onAdd=function(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},t.prototype.prepare=function(){0===Object.keys(this.tiles).length||this.video.readyState<2||this._prepareImage(this.map.painter.gl,this.video)},t.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},t}(ImageSource);module.exports=VideoSource;\n},{\"../util/ajax\":201,\"./image_source\":91}],105:[function(_dereq_,module,exports){\n\"use strict\";var Actor=_dereq_(\"../util/actor\"),StyleLayerIndex=_dereq_(\"../style/style_layer_index\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=_dereq_(\"./geojson_worker_source\"),globalRTLTextPlugin=_dereq_(\"./rtl_text_plugin\"),Worker=function(e){var r=this;this.self=e,this.actor=new Actor(e,this),this.layerIndexes={},this.workerSourceTypes={vector:VectorTileWorkerSource,geojson:GeoJSONWorkerSource},this.workerSources={},this.self.registerWorkerSource=function(e,o){if(r.workerSourceTypes[e])throw new Error('Worker source with name \"'+e+'\" already registered.');r.workerSourceTypes[e]=o},this.self.registerRTLTextPlugin=function(e){if(globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText)throw new Error(\"RTL text plugin already registered.\");globalRTLTextPlugin.applyArabicShaping=e.applyArabicShaping,globalRTLTextPlugin.processBidirectionalText=e.processBidirectionalText}};Worker.prototype.setLayers=function(e,r){this.getLayerIndex(e).replace(r)},Worker.prototype.updateLayers=function(e,r){this.getLayerIndex(e).update(r.layers,r.removedIds,r.symbolOrder)},Worker.prototype.loadTile=function(e,r,o){this.getWorkerSource(e,r.type).loadTile(r,o)},Worker.prototype.reloadTile=function(e,r,o){this.getWorkerSource(e,r.type).reloadTile(r,o)},Worker.prototype.abortTile=function(e,r){this.getWorkerSource(e,r.type).abortTile(r)},Worker.prototype.removeTile=function(e,r){this.getWorkerSource(e,r.type).removeTile(r)},Worker.prototype.removeSource=function(e,r){var o=this.getWorkerSource(e,r.type);void 0!==o.removeSource&&o.removeSource(r)},Worker.prototype.redoPlacement=function(e,r,o){this.getWorkerSource(e,r.type).redoPlacement(r,o)},Worker.prototype.loadWorkerSource=function(e,r,o){try{this.self.importScripts(r.url),o()}catch(e){o(e)}},Worker.prototype.loadRTLTextPlugin=function(e,r,o){try{globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText||(this.self.importScripts(r),globalRTLTextPlugin.applyArabicShaping&&globalRTLTextPlugin.processBidirectionalText||o(new Error(\"RTL Text Plugin failed to import scripts from \"+r)))}catch(e){o(e)}},Worker.prototype.getLayerIndex=function(e){var r=this.layerIndexes[e];return r||(r=this.layerIndexes[e]=new StyleLayerIndex),r},Worker.prototype.getWorkerSource=function(e,r){var o=this;if(this.workerSources[e]||(this.workerSources[e]={}),!this.workerSources[e][r]){var t={send:function(r,t,i,n){o.actor.send(r,t,i,n,e)}};this.workerSources[e][r]=new this.workerSourceTypes[r](t,this.getLayerIndex(e))}return this.workerSources[e][r]},module.exports=function(e){return new Worker(e)};\n},{\"../style/style_layer_index\":164,\"../util/actor\":200,\"./geojson_worker_source\":89,\"./rtl_text_plugin\":96,\"./vector_tile_worker_source\":103}],106:[function(_dereq_,module,exports){\n\"use strict\";function recalculateLayers(e,i){for(var r=0,t=e.layers;r<t.length;r+=1){t[r].recalculate(i)}}function serializeBuckets(e,i){return e.filter(function(e){return!e.isEmpty()}).map(function(e){return e.serialize(i)})}var FeatureIndex=_dereq_(\"../data/feature_index\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),util=_dereq_(\"../util/util\"),ref=_dereq_(\"../render/image_atlas\"),makeImageAtlas=ref.makeImageAtlas,ref$1=_dereq_(\"../render/glyph_atlas\"),makeGlyphAtlas=ref$1.makeGlyphAtlas,WorkerTile=function(e){this.coord=e.coord,this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=e.overscaling,this.angle=e.angle,this.pitch=e.pitch,this.cameraToCenterDistance=e.cameraToCenterDistance,this.cameraToTileDistance=e.cameraToTileDistance,this.showCollisionBoxes=e.showCollisionBoxes};WorkerTile.prototype.parse=function(e,i,r,t){function a(){var e=this;if(D)return t(D);if(A&&C){for(var i=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),r=makeGlyphAtlas(A),a=makeImageAtlas(C),o=0,s=e.symbolBuckets;o<s.length;o+=1){var c=s[o];recalculateLayers(c,e.zoom),c.prepare(A,r.positions,C,a.positions),c.place(i,e.showCollisionBoxes)}this.status=\"done\";var u=[r.image.data.buffer,a.image.data.buffer];t(null,{buckets:serializeBuckets(util.values(n),u),featureIndex:l.serialize(u),collisionTile:i.serialize(u),collisionBoxArray:this.collisionBoxArray.serialize(),glyphAtlasImage:r.image,iconAtlasImage:a.image},u)}}var o=this;this.status=\"parsing\",this.data=e,this.collisionBoxArray=new CollisionBoxArray;var s=new DictionaryCoder(Object.keys(e.layers).sort()),l=new FeatureIndex(this.coord,this.overscaling);l.bucketLayerIDs=[];var n={},c={featureIndex:l,iconDependencies:{},glyphDependencies:{}},u=i.familiesBySource[this.source];for(var h in u){var m=e.layers[h];if(m){1===m.version&&util.warnOnce('Vector tile source \"'+o.source+'\" layer \"'+h+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var y=s.encode(h),p=[],d=0;d<m.length;d++){var f=m.feature(d);p.push({feature:f,index:d,sourceLayerIndex:y})}for(var g=0,v=u[h];g<v.length;g+=1){var k=v[g],b=k[0];if(!(b.minzoom&&o.zoom<Math.floor(b.minzoom))&&!(b.maxzoom&&o.zoom>=b.maxzoom||b.layout&&\"none\"===b.layout.visibility)){for(var x=0,T=k;x<T.length;x+=1){T[x].recalculate(o.zoom)}(n[b.id]=b.createBucket({index:l.bucketLayerIDs.length,layers:k,zoom:o.zoom,pixelRatio:o.pixelRatio,overscaling:o.overscaling,collisionBoxArray:o.collisionBoxArray})).populate(p,c),l.bucketLayerIDs.push(k.map(function(e){return e.id}))}}}}this.symbolBuckets=[];for(var z=i.symbolOrder.length-1;z>=0;z--){var B=n[i.symbolOrder[z]];B&&o.symbolBuckets.push(B)}var D,A,C,I=util.mapObject(c.glyphDependencies,function(e){return Object.keys(e).map(Number)});Object.keys(I).length?r.send(\"getGlyphs\",{uid:this.uid,stacks:I},function(e,i){D||(D=e,A=i,a.call(o))}):A={};var w=Object.keys(c.iconDependencies);w.length?r.send(\"getImages\",{icons:w},function(e,i){D||(D=e,C=i,a.call(o))}):C={},a.call(this)},WorkerTile.prototype.redoPlacement=function(e,i,r,t,a){var o=this;if(this.angle=e,this.pitch=i,this.cameraToCenterDistance=r,this.cameraToTileDistance=t,\"done\"!==this.status)return{};for(var s=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),l=0,n=o.symbolBuckets;l<n.length;l+=1){var c=n[l];recalculateLayers(c,o.zoom),c.place(s,a)}var u=[];return{result:{buckets:serializeBuckets(this.symbolBuckets,u),collisionTile:s.serialize(u)},transferables:u}},module.exports=WorkerTile;\n},{\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/glyph_atlas\":74,\"../render/image_atlas\":76,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/dictionary_coder\":207,\"../util/util\":223}],107:[function(_dereq_,module,exports){\n\"use strict\";function deref(r,e){var f={};for(var t in r)\"ref\"!==t&&(f[t]=r[t]);return refProperties.forEach(function(r){r in e&&(f[r]=e[r])}),f}function derefLayers(r){r=r.slice();for(var e=Object.create(null),f=0;f<r.length;f++)e[r[f].id]=r[f];for(var t=0;t<r.length;t++)\"ref\"in r[t]&&(r[t]=deref(r[t],e[r[t].ref]));return r}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=derefLayers;\n},{\"./util/ref_properties\":129}],108:[function(_dereq_,module,exports){\n\"use strict\";function diffSources(e,r,o,a){e=e||{},r=r||{};var s;for(s in e)e.hasOwnProperty(s)&&(r.hasOwnProperty(s)||(o.push({command:operations.removeSource,args:[s]}),a[s]=!0));for(s in r)r.hasOwnProperty(s)&&(e.hasOwnProperty(s)?isEqual(e[s],r[s])||(o.push({command:operations.removeSource,args:[s]}),o.push({command:operations.addSource,args:[s,r[s]]}),a[s]=!0):o.push({command:operations.addSource,args:[s,r[s]]}))}function diffLayerPropertyChanges(e,r,o,a,s,t){e=e||{},r=r||{};var n;for(n in e)e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}));for(n in r)r.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}))}function pluckId(e){return e.id}function indexById(e,r){return e[r.id]=r,e}function diffLayers(e,r,o){e=e||[],r=r||[];var a,s,t,n,i,p,m,u=e.map(pluckId),l=r.map(pluckId),y=e.reduce(indexById,{}),c=r.reduce(indexById,{}),d=u.slice(),h=Object.create(null);for(a=0,s=0;a<u.length;a++)t=u[a],c.hasOwnProperty(t)?s++:(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.indexOf(t,s),1));for(a=0,s=0;a<l.length;a++)t=l[l.length-1-a],d[d.length-1-a]!==t&&(y.hasOwnProperty(t)?(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.lastIndexOf(t,d.length-s),1)):s++,p=d[d.length-a],o.push({command:operations.addLayer,args:[c[t],p]}),d.splice(d.length-a,0,t),h[t]=!0);for(a=0;a<l.length;a++)if(t=l[a],n=y[t],i=c[t],!h[t]&&!isEqual(n,i))if(isEqual(n.source,i.source)&&isEqual(n[\"source-layer\"],i[\"source-layer\"])&&isEqual(n.type,i.type)){diffLayerPropertyChanges(n.layout,i.layout,o,t,null,operations.setLayoutProperty),diffLayerPropertyChanges(n.paint,i.paint,o,t,null,operations.setPaintProperty),isEqual(n.filter,i.filter)||o.push({command:operations.setFilter,args:[t,i.filter]}),isEqual(n.minzoom,i.minzoom)&&isEqual(n.maxzoom,i.maxzoom)||o.push({command:operations.setLayerZoomRange,args:[t,i.minzoom,i.maxzoom]});for(m in n)n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}));for(m in i)i.hasOwnProperty(m)&&!n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}))}else o.push({command:operations.removeLayer,args:[t]}),p=d[d.lastIndexOf(t)+1],o.push({command:operations.addLayer,args:[i,p]})}function diffStyles(e,r){if(!e)return[{command:operations.setStyle,args:[r]}];var o=[];try{if(!isEqual(e.version,r.version))return[{command:operations.setStyle,args:[r]}];isEqual(e.center,r.center)||o.push({command:operations.setCenter,args:[r.center]}),isEqual(e.zoom,r.zoom)||o.push({command:operations.setZoom,args:[r.zoom]}),isEqual(e.bearing,r.bearing)||o.push({command:operations.setBearing,args:[r.bearing]}),isEqual(e.pitch,r.pitch)||o.push({command:operations.setPitch,args:[r.pitch]}),isEqual(e.sprite,r.sprite)||o.push({command:operations.setSprite,args:[r.sprite]}),isEqual(e.glyphs,r.glyphs)||o.push({command:operations.setGlyphs,args:[r.glyphs]}),isEqual(e.transition,r.transition)||o.push({command:operations.setTransition,args:[r.transition]}),isEqual(e.light,r.light)||o.push({command:operations.setLight,args:[r.light]});var a={},s=[];diffSources(e.sources,r.sources,s,a);var t=[];e.layers&&e.layers.forEach(function(e){a[e.source]?o.push({command:operations.removeLayer,args:[e.id]}):t.push(e)}),o=o.concat(s),diffLayers(t,r.layers,o)}catch(e){console.warn(\"Unable to compute style diff:\",e),o=[{command:operations.setStyle,args:[r]}]}return o}var isEqual=_dereq_(\"lodash.isequal\"),operations={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};module.exports=diffStyles,module.exports.operations=operations;\n},{\"lodash.isequal\":120}],109:[function(_dereq_,module,exports){\n\"use strict\";function ValidationError(r,i){for(var t=[],o=arguments.length-2;o-- >0;)t[o]=arguments[o+2];this.message=(r?r+\": \":\"\")+format.apply(format,t),null!==i&&void 0!==i&&i.__line__&&(this.line=i.__line__)}var format=_dereq_(\"util\").format;module.exports=ValidationError;\n},{\"util\":36}],110:[function(_dereq_,module,exports){\n\"use strict\";function createFilter(e){return new Function(\"f\",\"var p = (f && f.properties || {}); return \"+compile(e))}function compile(e){if(!e)return\"true\";var i=e[0];return e.length<=1?\"any\"===i?\"false\":\"true\":\"(\"+(\"==\"===i?compileComparisonOp(e[1],e[2],\"===\",!1):\"!=\"===i?compileComparisonOp(e[1],e[2],\"!==\",!1):\"<\"===i||\">\"===i||\"<=\"===i||\">=\"===i?compileComparisonOp(e[1],e[2],i,!0):\"any\"===i?compileLogicalOp(e.slice(1),\"||\"):\"all\"===i?compileLogicalOp(e.slice(1),\"&&\"):\"none\"===i?compileNegation(compileLogicalOp(e.slice(1),\"||\")):\"in\"===i?compileInOp(e[1],e.slice(2)):\"!in\"===i?compileNegation(compileInOp(e[1],e.slice(2))):\"has\"===i?compileHasOp(e[1]):\"!has\"===i?compileNegation(compileHasOp(e[1])):\"true\")+\")\"}function compilePropertyReference(e){return\"$type\"===e?\"f.type\":\"$id\"===e?\"f.id\":\"p[\"+JSON.stringify(e)+\"]\"}function compileComparisonOp(e,i,n,o){var r=compilePropertyReference(e),p=\"$type\"===e?types.indexOf(i):JSON.stringify(i);return(o?\"typeof \"+r+\"=== typeof \"+p+\"&&\":\"\")+r+n+p}function compileLogicalOp(e,i){return e.map(compile).join(i)}function compileInOp(e,i){\"$type\"===e&&(i=i.map(function(e){return types.indexOf(e)}));var n=JSON.stringify(i.sort(compare)),o=compilePropertyReference(e);return i.length<=200?n+\".indexOf(\"+o+\") !== -1\":\"function(v, a, i, j) {while (i <= j) { var m = (i + j) >> 1; if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;}return false; }(\"+o+\", \"+n+\",0,\"+(i.length-1)+\")\"}function compileHasOp(e){return\"$id\"===e?'\"id\" in f':JSON.stringify(e)+\" in p\"}function compileNegation(e){return\"!(\"+e+\")\"}function compare(e,i){return e<i?-1:e>i?1:0}module.exports=createFilter;var types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];\n},{}],111:[function(_dereq_,module,exports){\n\"use strict\";function xyz2lab(r){return r>t3?Math.pow(r,1/3):r/t2+t0}function lab2xyz(r){return r>t1?r*r*r:t2*(r-t0)}function xyz2rgb(r){return 255*(r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055)}function rgb2xyz(r){return r/=255,r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function rgbToLab(r){var t=rgb2xyz(r[0]),a=rgb2xyz(r[1]),n=rgb2xyz(r[2]),b=xyz2lab((.4124564*t+.3575761*a+.1804375*n)/Xn),o=xyz2lab((.2126729*t+.7151522*a+.072175*n)/Yn);return[116*o-16,500*(b-o),200*(o-xyz2lab((.0193339*t+.119192*a+.9503041*n)/Zn)),r[3]]}function labToRgb(r){var t=(r[0]+16)/116,a=isNaN(r[1])?t:t+r[1]/500,n=isNaN(r[2])?t:t-r[2]/200;return t=Yn*lab2xyz(t),a=Xn*lab2xyz(a),n=Zn*lab2xyz(n),[xyz2rgb(3.2404542*a-1.5371385*t-.4985314*n),xyz2rgb(-.969266*a+1.8760108*t+.041556*n),xyz2rgb(.0556434*a-.2040259*t+1.0572252*n),r[3]]}function rgbToHcl(r){var t=rgbToLab(r),a=t[0],n=t[1],b=t[2],o=Math.atan2(b,n)*rad2deg;return[o<0?o+360:o,Math.sqrt(n*n+b*b),a,r[3]]}function hclToRgb(r){var t=r[0]*deg2rad,a=r[1];return labToRgb([r[2],Math.cos(t)*a,Math.sin(t)*a,r[3]])}var Xn=.95047,Yn=1,Zn=1.08883,t0=4/29,t1=6/29,t2=3*t1*t1,t3=t1*t1*t1,deg2rad=Math.PI/180,rad2deg=180/Math.PI;module.exports={lab:{forward:rgbToLab,reverse:labToRgb},hcl:{forward:rgbToHcl,reverse:hclToRgb}};\n},{}],112:[function(_dereq_,module,exports){\n\"use strict\";function identityFunction(t){return t}function createFunction(t,e){var o,n=\"color\"===e.type;if(isFunctionDefinition(t)){var r=t.stops&&\"object\"==typeof t.stops[0][0],a=r||void 0!==t.property,i=r||!a,s=t.type||(\"interpolated\"===e.function?\"exponential\":\"interval\");n&&(t=extend({},t),t.stops&&(t.stops=t.stops.map(function(t){return[t[0],parseColor(t[1])]})),t.default?t.default=parseColor(t.default):t.default=parseColor(e.default));var u,p,l;if(\"exponential\"===s)u=evaluateExponentialFunction;else if(\"interval\"===s)u=evaluateIntervalFunction;else if(\"categorical\"===s){u=evaluateCategoricalFunction,p=Object.create(null);for(var c=0,f=t.stops;c<f.length;c+=1){var v=f[c];p[v[0]]=v[1]}l=typeof t.stops[0][0]}else{if(\"identity\"!==s)throw new Error('Unknown function type \"'+s+'\"');u=evaluateIdentityFunction}var d;if(t.colorSpace&&\"rgb\"!==t.colorSpace){if(!colorSpaces[t.colorSpace])throw new Error(\"Unknown color space: \"+t.colorSpace);var y=colorSpaces[t.colorSpace];t=JSON.parse(JSON.stringify(t));for(var F=0;F<t.stops.length;F++)t.stops[F]=[t.stops[F][0],y.forward(t.stops[F][1])];d=y.reverse}else d=identityFunction;if(r){for(var h={},g=[],m=0;m<t.stops.length;m++){var C=t.stops[m],S=C[0].zoom;void 0===h[S]&&(h[S]={zoom:S,type:t.type,property:t.property,default:t.default,stops:[]},g.push(S)),h[S].stops.push([C[0].value,C[1]])}for(var T=[],x=0,b=g;x<b.length;x+=1){var q=b[x];T.push([h[q].zoom,createFunction(h[q],e)])}o=function(o,n){return d(evaluateExponentialFunction({stops:T,base:t.base},e,o)(o,n))},o.isFeatureConstant=!1,o.isZoomConstant=!1}else i?(o=function(o){return d(u(t,e,o,p,l))},o.isFeatureConstant=!0,o.isZoomConstant=!1):(o=function(o,n){var r=n[t.property];return void 0===r?coalesce(t.default,e.default):d(u(t,e,r,p,l))},o.isFeatureConstant=!1,o.isZoomConstant=!0)}else n&&t&&(t=parseColor(t)),o=function(){return t},o.isFeatureConstant=!0,o.isZoomConstant=!0;return o}function coalesce(t,e,o){return void 0!==t?t:void 0!==e?e:void 0!==o?o:void 0}function evaluateCategoricalFunction(t,e,o,n,r){return coalesce(typeof o===r?n[o]:void 0,t.default,e.default)}function evaluateIntervalFunction(t,e,o){if(\"number\"!==getType(o))return coalesce(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[n-1][0])return t.stops[n-1][1];var r=findStopLessThanOrEqualTo(t.stops,o);return t.stops[r][1]}function evaluateExponentialFunction(t,e,o){var n=void 0!==t.base?t.base:1;if(\"number\"!==getType(o))return coalesce(t.default,e.default);var r=t.stops.length;if(1===r)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[r-1][0])return t.stops[r-1][1];var a=findStopLessThanOrEqualTo(t.stops,o),i=interpolationFactor(o,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],p=interpolate[e.type]||identityFunction;return\"function\"==typeof s?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o=s.apply(void 0,t),n=u.apply(void 0,t);if(void 0!==o&&void 0!==n)return p(o,n,i)}:p(s,u,i)}function evaluateIdentityFunction(t,e,o){return\"color\"===e.type?o=parseColor(o):getType(o)===e.type||\"enum\"===e.type&&e.values[o]||(o=void 0),coalesce(o,t.default,e.default)}function findStopLessThanOrEqualTo(t,e){for(var o,n,r=t.length,a=0,i=r-1,s=0;a<=i;){if(s=Math.floor((a+i)/2),o=t[s][0],n=t[s+1][0],e===o||e>o&&e<n)return s;o<e?a=s+1:o>e&&(i=s-1)}return Math.max(s-1,0)}function isFunctionDefinition(t){return\"object\"==typeof t&&(t.stops||\"identity\"===t.type)}function interpolationFactor(t,e,o,n){var r=n-o,a=t-o;return 0===r?0:1===e?a/r:(Math.pow(e,a)-1)/(Math.pow(e,r)-1)}var colorSpaces=_dereq_(\"./color_spaces\"),parseColor=_dereq_(\"../util/parse_color\"),extend=_dereq_(\"../util/extend\"),getType=_dereq_(\"../util/get_type\"),interpolate=_dereq_(\"../util/interpolate\");module.exports=createFunction,module.exports.isFunctionDefinition=isFunctionDefinition,module.exports.interpolationFactor=interpolationFactor,module.exports.findStopLessThanOrEqualTo=findStopLessThanOrEqualTo;\n},{\"../util/extend\":125,\"../util/get_type\":126,\"../util/interpolate\":127,\"../util/parse_color\":128,\"./color_spaces\":111}],113:[function(_dereq_,module,exports){\n\"use strict\";function stringify(r){var t=typeof r;if(\"number\"===t||\"boolean\"===t||\"string\"===t||void 0===r||null===r)return JSON.stringify(r);if(Array.isArray(r)){for(var e=\"[\",i=0,n=r;i<n.length;i+=1){e+=stringify(n[i])+\",\"}return e+\"]\"}for(var o=Object.keys(r).sort(),f=\"{\",u=0;u<o.length;u++)f+=JSON.stringify(o[u])+\":\"+stringify(r[o[u]])+\",\";return f+\"}\"}function getKey(r){for(var t=\"\",e=0,i=refProperties;e<i.length;e+=1){t+=\"/\"+stringify(r[i[e]])}return t}function groupByLayout(r){for(var t={},e=0;e<r.length;e++){var i=getKey(r[e]),n=t[i];n||(n=t[i]=[]),n.push(r[e])}var o=[];for(var f in t)o.push(t[f]);return o}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=groupByLayout;\n},{\"./util/ref_properties\":129}],114:[function(_dereq_,module,exports){\nfunction clamp_css_byte(e){return e=Math.round(e),e<0?0:e>255?255:e}function clamp_css_float(e){return e<0?0:e>1?1:e}function parse_css_int(e){return clamp_css_byte(\"%\"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function parse_css_float(e){return clamp_css_float(\"%\"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function css_hue_to_rgb(e,r,l){return l<0?l+=1:l>1&&(l-=1),6*l<1?e+(r-e)*l*6:2*l<1?r:3*l<2?e+(r-e)*(2/3-l)*6:e}function parseCSSColor(e){var r=e.replace(/ /g,\"\").toLowerCase();if(r in kCSSColorTable)return kCSSColorTable[r].slice();if(\"#\"===r[0]){if(4===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=4095?[(3840&l)>>4|(3840&l)>>8,240&l|(240&l)>>4,15&l|(15&l)<<4,1]:null}if(7===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=16777215?[(16711680&l)>>16,(65280&l)>>8,255&l,1]:null}return null}var a=r.indexOf(\"(\"),t=r.indexOf(\")\");if(-1!==a&&t+1===r.length){var n=r.substr(0,a),s=r.substr(a+1,t-(a+1)).split(\",\"),o=1;switch(n){case\"rgba\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"rgb\":return 3!==s.length?null:[parse_css_int(s[0]),parse_css_int(s[1]),parse_css_int(s[2]),o];case\"hsla\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"hsl\":if(3!==s.length)return null;var i=(parseFloat(s[0])%360+360)%360/360,u=parse_css_float(s[1]),g=parse_css_float(s[2]),d=g<=.5?g*(u+1):g+u-g*u,c=2*g-d;return[clamp_css_byte(255*css_hue_to_rgb(c,d,i+1/3)),clamp_css_byte(255*css_hue_to_rgb(c,d,i)),clamp_css_byte(255*css_hue_to_rgb(c,d,i-1/3)),o];default:return null}}return null}var kCSSColorTable={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{exports.parseCSSColor=parseCSSColor}catch(e){}\n},{}],115:[function(_dereq_,module,exports){\nfunction isObjectLike(r){return!!r&&\"object\"==typeof r}function arraySome(r,e){for(var a=-1,t=r.length;++a<t;)if(e(r[a],a,r))return!0;return!1}function baseIsEqual(r,e,a,t,o,n){return r===e||(null==r||null==e||!isObject(r)&&!isObjectLike(e)?r!==r&&e!==e:baseIsEqualDeep(r,e,baseIsEqual,a,t,o,n))}function baseIsEqualDeep(r,e,a,t,o,n,u){var c=isArray(r),s=isArray(e),i=arrayTag,g=arrayTag;c||(i=objToString.call(r),i==argsTag?i=objectTag:i!=objectTag&&(c=isTypedArray(r))),s||(g=objToString.call(e),g==argsTag?g=objectTag:g!=objectTag&&(s=isTypedArray(e)));var b=i==objectTag,l=g==objectTag,f=i==g;if(f&&!c&&!b)return equalByTag(r,e,i);if(!o){var y=b&&hasOwnProperty.call(r,\"__wrapped__\"),T=l&&hasOwnProperty.call(e,\"__wrapped__\");if(y||T)return a(y?r.value():r,T?e.value():e,t,o,n,u)}if(!f)return!1;n||(n=[]),u||(u=[]);for(var j=n.length;j--;)if(n[j]==r)return u[j]==e;n.push(r),u.push(e);var p=(c?equalArrays:equalObjects)(r,e,a,t,o,n,u);return n.pop(),u.pop(),p}function equalArrays(r,e,a,t,o,n,u){var c=-1,s=r.length,i=e.length;if(s!=i&&!(o&&i>s))return!1;for(;++c<s;){var g=r[c],b=e[c],l=t?t(o?b:g,o?g:b,c):void 0;if(void 0!==l){if(l)continue;return!1}if(o){if(!arraySome(e,function(r){return g===r||a(g,r,t,o,n,u)}))return!1}else if(g!==b&&!a(g,b,t,o,n,u))return!1}return!0}function equalByTag(r,e,a){switch(a){case boolTag:case dateTag:return+r==+e;case errorTag:return r.name==e.name&&r.message==e.message;case numberTag:return r!=+r?e!=+e:r==+e;case regexpTag:case stringTag:return r==e+\"\"}return!1}function equalObjects(r,e,a,t,o,n,u){var c=keys(r),s=c.length;if(s!=keys(e).length&&!o)return!1;for(var i=s;i--;){var g=c[i];if(!(o?g in e:hasOwnProperty.call(e,g)))return!1}for(var b=o;++i<s;){g=c[i];var l=r[g],f=e[g],y=t?t(o?f:l,o?l:f,g):void 0;if(!(void 0===y?a(l,f,t,o,n,u):y))return!1;b||(b=\"constructor\"==g)}if(!b){var T=r.constructor,j=e.constructor;if(T!=j&&\"constructor\"in r&&\"constructor\"in e&&!(\"function\"==typeof T&&T instanceof T&&\"function\"==typeof j&&j instanceof j))return!1}return!0}function isObject(r){var e=typeof r;return!!r&&(\"object\"==e||\"function\"==e)}var isArray=_dereq_(\"lodash.isarray\"),isTypedArray=_dereq_(\"lodash.istypedarray\"),keys=_dereq_(\"lodash.keys\"),argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",stringTag=\"[object String]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString;module.exports=baseIsEqual;\n},{\"lodash.isarray\":119,\"lodash.istypedarray\":121,\"lodash.keys\":122}],116:[function(_dereq_,module,exports){\nfunction bindCallback(n,t,r){if(\"function\"!=typeof n)return identity;if(void 0===t)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,c){return n.call(t,r,e,u,c)};case 5:return function(r,e,u,c,i){return n.call(t,r,e,u,c,i)}}return function(){return n.apply(t,arguments)}}function identity(n){return n}module.exports=bindCallback;\n},{}],117:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,o){var e=null==t?void 0:t[o];return isNative(e)?e:void 0}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var o=typeof t;return!!t&&(\"object\"==o||\"function\"==o)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");module.exports=getNative;\n},{}],118:[function(_dereq_,module,exports){\nfunction isArguments(t){return isArrayLikeObject(t)&&hasOwnProperty.call(t,\"callee\")&&(!propertyIsEnumerable.call(t,\"callee\")||objectToString.call(t)==argsTag)}function isArrayLike(t){return null!=t&&isLength(t.length)&&!isFunction(t)}function isArrayLikeObject(t){return isObjectLike(t)&&isArrayLike(t)}function isFunction(t){var e=isObject(t)?objectToString.call(t):\"\";return e==funcTag||e==genTag}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isObject(t){var e=typeof t;return!!t&&(\"object\"==e||\"function\"==e)}function isObjectLike(t){return!!t&&\"object\"==typeof t}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",funcTag=\"[object Function]\",genTag=\"[object GeneratorFunction]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objectToString=objectProto.toString,propertyIsEnumerable=objectProto.propertyIsEnumerable;module.exports=isArguments;\n},{}],119:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,r){var e=null==t?void 0:t[r];return isNative(e)?e:void 0}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var r=typeof t;return!!t&&(\"object\"==r||\"function\"==r)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var arrayTag=\"[object Array]\",funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),nativeIsArray=getNative(Array,\"isArray\"),MAX_SAFE_INTEGER=9007199254740991,isArray=nativeIsArray||function(t){return isObjectLike(t)&&isLength(t.length)&&objToString.call(t)==arrayTag};module.exports=isArray;\n},{}],120:[function(_dereq_,module,exports){\nfunction isEqual(a,l,i,e){i=\"function\"==typeof i?bindCallback(i,e,3):void 0;var s=i?i(a,l):void 0;return void 0===s?baseIsEqual(a,l,i):!!s}var baseIsEqual=_dereq_(\"lodash._baseisequal\"),bindCallback=_dereq_(\"lodash._bindcallback\");module.exports=isEqual;\n},{\"lodash._baseisequal\":115,\"lodash._bindcallback\":116}],121:[function(_dereq_,module,exports){\nfunction isLength(a){return\"number\"==typeof a&&a>-1&&a%1==0&&a<=MAX_SAFE_INTEGER}function isObjectLike(a){return!!a&&\"object\"==typeof a}function isTypedArray(a){return isObjectLike(a)&&isLength(a.length)&&!!typedArrayTags[objectToString.call(a)]}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",funcTag=\"[object Function]\",mapTag=\"[object Map]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",setTag=\"[object Set]\",stringTag=\"[object String]\",weakMapTag=\"[object WeakMap]\",arrayBufferTag=\"[object ArrayBuffer]\",dataViewTag=\"[object DataView]\",float32Tag=\"[object Float32Array]\",float64Tag=\"[object Float64Array]\",int8Tag=\"[object Int8Array]\",int16Tag=\"[object Int16Array]\",int32Tag=\"[object Int32Array]\",uint8Tag=\"[object Uint8Array]\",uint8ClampedTag=\"[object Uint8ClampedArray]\",uint16Tag=\"[object Uint16Array]\",uint32Tag=\"[object Uint32Array]\",typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var objectProto=Object.prototype,objectToString=objectProto.toString;module.exports=isTypedArray;\n},{}],122:[function(_dereq_,module,exports){\nfunction baseProperty(e){return function(t){return null==t?void 0:t[e]}}function isArrayLike(e){return null!=e&&isLength(getLength(e))}function isIndex(e,t){return e=\"number\"==typeof e||reIsUint.test(e)?+e:-1,t=null==t?MAX_SAFE_INTEGER:t,e>-1&&e%1==0&&e<t}function isLength(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function shimKeys(e){for(var t=keysIn(e),r=t.length,n=r&&e.length,s=!!n&&isLength(n)&&(isArray(e)||isArguments(e)),o=-1,i=[];++o<r;){var u=t[o];(s&&isIndex(u,n)||hasOwnProperty.call(e,u))&&i.push(u)}return i}function isObject(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function keysIn(e){if(null==e)return[];isObject(e)||(e=Object(e));var t=e.length;t=t&&isLength(t)&&(isArray(e)||isArguments(e))&&t||0;for(var r=e.constructor,n=-1,s=\"function\"==typeof r&&r.prototype===e,o=Array(t),i=t>0;++n<t;)o[n]=n+\"\";for(var u in e)i&&isIndex(u,t)||\"constructor\"==u&&(s||!hasOwnProperty.call(e,u))||o.push(u);return o}var getNative=_dereq_(\"lodash._getnative\"),isArguments=_dereq_(\"lodash.isarguments\"),isArray=_dereq_(\"lodash.isarray\"),reIsUint=/^\\d+$/,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeKeys=getNative(Object,\"keys\"),MAX_SAFE_INTEGER=9007199254740991,getLength=baseProperty(\"length\"),keys=nativeKeys?function(e){var t=null==e?void 0:e.constructor;return\"function\"==typeof t&&t.prototype===e||\"function\"!=typeof e&&isArrayLike(e)?shimKeys(e):isObject(e)?nativeKeys(e):[]}:shimKeys;module.exports=keys;\n},{\"lodash._getnative\":117,\"lodash.isarguments\":118,\"lodash.isarray\":119}],123:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"./v8.json\");\n},{\"./v8.json\":124}],124:[function(_dereq_,module,exports){\nmodule.exports={\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_tile\",\"source_geojson\",\"source_video\",\"source_image\",\"source_canvas\"],\"source_tile\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{},\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.0511,180,85.0511]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_canvas\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"canvas\":{}}},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}},\"animate\":{\"type\":\"boolean\",\"default\":\"true\"},\"canvas\":{\"type\":\"string\",\"required\":true},\"contextType\":{\"required\":true,\"type\":\"enum\",\"values\":{\"2d\":{},\"webgl\":{},\"experimental-webgl\":{},\"webgl2\":{}}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"fill-extrusion\":{},\"raster\":{},\"background\":{}}},\"metadata\":{\"type\":\"*\"},\"ref\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"},\"paint.*\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_background\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_circle\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\"},\"line-join\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"miter\"}]},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"round\"}]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"point\":{},\"line\":{}},\"default\":\"point\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}]},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false},\"icon-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",\"text-field\"]},\"icon-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"]},\"icon-text-fit\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"]},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}]},\"icon-image\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"tokens\":true},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"degrees\",\"requires\":[\"icon-image\"]},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"icon-image\"]},\"icon-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"]},\"icon-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"text-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-field\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"default\":\"\",\"tokens\":true},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"]},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-justify\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\",{\"symbol-placement\":\"line\"}]},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"text-transform\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"]},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\"]},\"text-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\",\"icon-image\"]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":22,\"value\":[\"number\",\"color\"],\"length\":2},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"transition\":false,\"zoom-function\":true,\"property-function\":false,\"function\":\"piecewise-constant\"},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"transition\":true,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false},\"color\":{\"type\":\"color\",\"default\":\"#ffffff\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true},\"intensity\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_background\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true},\"fill-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}]},\"fill-outline-color\":{\"type\":\"color\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}]},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"]},\"fill-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}]},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"]},\"fill-extrusion-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"fill-extrusion-height\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true},\"fill-extrusion-base\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"maximum\":65535,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"]}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}]},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"]},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}]},\"line-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"]},\"circle-pitch-scale\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"]},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"]}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"degrees\"},\"raster-brightness-min\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-brightness-max\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"milliseconds\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}]},\"background-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}}}\n},{}],125:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];for(var n=0,o=t;n<o.length;n+=1){var a=o[n];for(var f in a)r[f]=a[f]}return r};\n},{}],126:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number?\"number\":n instanceof String?\"string\":n instanceof Boolean?\"boolean\":Array.isArray(n)?\"array\":null===n?\"null\":typeof n};\n},{}],127:[function(_dereq_,module,exports){\n\"use strict\";function interpolate(t,e,n){return t*(1-n)+e*n}module.exports=interpolate,interpolate.number=interpolate,interpolate.vec2=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n)]},interpolate.color=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n),interpolate(t[2],e[2],n),interpolate(t[3],e[3],n)]},interpolate.array=function(t,e,n){return t.map(function(t,r){return interpolate(t,e[r],n)})};\n},{}],128:[function(_dereq_,module,exports){\n\"use strict\";var parseColorString=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){if(\"string\"==typeof r){var e=parseColorString(r);if(!e)return;return[e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]]}return Array.isArray(r)?r:void 0};\n},{\"csscolorparser\":114}],129:[function(_dereq_,module,exports){\n\"use strict\";module.exports=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];\n},{}],130:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number||n instanceof String||n instanceof Boolean?n.valueOf():n};\n},{}],131:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=_dereq_(\"./validate_function\"),t=_dereq_(\"./validate_object\"),i={\"*\":function(){return[]},array:_dereq_(\"./validate_array\"),boolean:_dereq_(\"./validate_boolean\"),number:_dereq_(\"./validate_number\"),color:_dereq_(\"./validate_color\"),constants:_dereq_(\"./validate_constants\"),enum:_dereq_(\"./validate_enum\"),filter:_dereq_(\"./validate_filter\"),function:_dereq_(\"./validate_function\"),layer:_dereq_(\"./validate_layer\"),object:_dereq_(\"./validate_object\"),source:_dereq_(\"./validate_source\"),light:_dereq_(\"./validate_light\"),string:_dereq_(\"./validate_string\")},a=e.value,n=e.valueSpec,u=e.key,o=e.styleSpec,l=e.style;if(\"string\"===getType(a)&&\"@\"===a[0]){if(o.$version>7)return[new ValidationError(u,a,\"constants have been deprecated as of v8\")];if(!(a in l.constants))return[new ValidationError(u,a,'constant \"%s\" not found',a)];e=extend({},e,{value:l.constants[a]})}return n.function&&\"object\"===getType(a)?r(e):n.type&&i[n.type]?i[n.type](e):t(extend({},e,{valueSpec:n.type?o[n.type]:n}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/get_type\":126,\"./validate_array\":132,\"./validate_boolean\":133,\"./validate_color\":134,\"./validate_constants\":135,\"./validate_enum\":136,\"./validate_filter\":137,\"./validate_function\":138,\"./validate_layer\":140,\"./validate_light\":142,\"./validate_number\":143,\"./validate_object\":144,\"./validate_source\":147,\"./validate_string\":148}],132:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,t=e.valueSpec,a=e.style,n=e.styleSpec,l=e.key,i=e.arrayElementValidator||validate;if(\"array\"!==getType(r))return[new ValidationError(l,r,\"array expected, %s found\",getType(r))];if(t.length&&r.length!==t.length)return[new ValidationError(l,r,\"array length %d expected, length %d found\",t.length,r.length)];if(t[\"min-length\"]&&r.length<t[\"min-length\"])return[new ValidationError(l,r,\"array length at least %d expected, length %d found\",t[\"min-length\"],r.length)];var o={type:t.value};n.$version<7&&(o.function=t.function),\"object\"===getType(t.value)&&(o=t.value);for(var u=[],d=0;d<r.length;d++)u=u.concat(i({array:r,arrayIndex:d,value:r[d],valueSpec:o,style:a,styleSpec:n,key:l+\"[\"+d+\"]\"}));return u};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],133:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,o=e.key,t=getType(r);return\"boolean\"!==t?[new ValidationError(o,r,\"boolean expected, %s found\",t)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],134:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),parseCSSColor=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){var e=r.key,o=r.value,t=getType(o);return\"string\"!==t?[new ValidationError(e,o,\"color expected, %s found\",t)]:null===parseCSSColor(o)?[new ValidationError(e,o,'color expected, \"%s\" found',o)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"csscolorparser\":114}],135:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(r){var e=r.key,t=r.value;if(r.styleSpec.$version>7)return t?[new ValidationError(e,t,\"constants have been deprecated as of v8\")]:[];var a=getType(t);if(\"object\"!==a)return[new ValidationError(e,t,\"object expected, %s found\",a)];var o=[];for(var n in t)\"@\"!==n[0]&&o.push(new ValidationError(e+\".\"+n,t[n],'constants must start with \"@\"'));return o};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],136:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){var r=e.key,n=e.value,u=e.valueSpec,o=[];return Array.isArray(u.values)?-1===u.values.indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",u.values.join(\", \"),n)):-1===Object.keys(u.values).indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",Object.keys(u.values).join(\", \"),n)),o};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130}],137:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateEnum=_dereq_(\"./validate_enum\"),getType=_dereq_(\"../util/get_type\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function e(r){var t,a=r.value,n=r.key,l=r.styleSpec,s=[];if(\"array\"!==getType(a))return[new ValidationError(n,a,\"array expected, %s found\",getType(a))];if(a.length<1)return[new ValidationError(n,a,\"filter array must have at least 1 element\")];switch(s=s.concat(validateEnum({key:n+\"[0]\",value:a[0],valueSpec:l.filter_operator,style:r.style,styleSpec:r.styleSpec})),unbundle(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&\"$type\"===unbundle(a[1])&&s.push(new ValidationError(n,a,'\"$type\" cannot be use with operator \"%s\"',a[0]));case\"==\":case\"!=\":3!==a.length&&s.push(new ValidationError(n,a,'filter array for operator \"%s\" must have 3 elements',a[0]));case\"in\":case\"!in\":a.length>=2&&\"string\"!==(t=getType(a[1]))&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t));for(var o=2;o<a.length;o++)t=getType(a[o]),\"$type\"===unbundle(a[1])?s=s.concat(validateEnum({key:n+\"[\"+o+\"]\",value:a[o],valueSpec:l.geometry_type,style:r.style,styleSpec:r.styleSpec})):\"string\"!==t&&\"number\"!==t&&\"boolean\"!==t&&s.push(new ValidationError(n+\"[\"+o+\"]\",a[o],\"string, number, or boolean expected, %s found\",t));break;case\"any\":case\"all\":case\"none\":for(var i=1;i<a.length;i++)s=s.concat(e({key:n+\"[\"+i+\"]\",value:a[i],style:r.style,styleSpec:r.styleSpec}));break;case\"has\":case\"!has\":t=getType(a[1]),2!==a.length?s.push(new ValidationError(n,a,'filter array for \"%s\" operator must have 2 elements',a[0])):\"string\"!==t&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t))}return s};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136}],138:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),validateObject=_dereq_(\"./validate_object\"),validateArray=_dereq_(\"./validate_array\"),validateNumber=_dereq_(\"./validate_number\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){function t(e){if(\"identity\"===p)return[new ValidationError(e.key,e.value,'identity function may not have a \"stops\" property')];var t=[],a=e.value;return t=t.concat(validateArray({key:e.key,value:a,valueSpec:e.valueSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:r})),\"array\"===getType(a)&&0===a.length&&t.push(new ValidationError(e.key,a,\"array must have at least one stop\")),t}function r(e){var t=[],r=e.value,o=e.key;if(\"array\"!==getType(r))return[new ValidationError(o,r,\"array expected, %s found\",getType(r))];if(2!==r.length)return[new ValidationError(o,r,\"array length %d expected, length %d found\",2,r.length)];if(c){if(\"object\"!==getType(r[0]))return[new ValidationError(o,r,\"object expected, %s found\",getType(r[0]))];if(void 0===r[0].zoom)return[new ValidationError(o,r,\"object stop key must have zoom\")];if(void 0===r[0].value)return[new ValidationError(o,r,\"object stop key must have value\")];if(l&&l>unbundle(r[0].zoom))return[new ValidationError(o,r[0].zoom,\"stop zoom values must appear in ascending order\")];unbundle(r[0].zoom)!==l&&(l=unbundle(r[0].zoom),i=void 0,s={}),t=t.concat(validateObject({key:o+\"[0]\",value:r[0],valueSpec:{zoom:{}},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:validateNumber,value:a}}))}else t=t.concat(a({key:o+\"[0]\",value:r[0],valueSpec:{},style:e.style,styleSpec:e.styleSpec}));return t.concat(validate({key:o+\"[1]\",value:r[1],valueSpec:u,style:e.style,styleSpec:e.styleSpec}))}function a(e){var t=getType(e.value),r=unbundle(e.value);if(n){if(t!==n)return[new ValidationError(e.key,e.value,\"%s stop domain type must match previous stop domain type %s\",t,n)]}else n=t;if(\"number\"!==t&&\"string\"!==t&&\"boolean\"!==t)return[new ValidationError(e.key,e.value,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==t&&\"categorical\"!==p){var a=\"number expected, %s found\";return u[\"property-function\"]&&void 0===p&&(a+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ValidationError(e.key,e.value,a,t)]}return\"categorical\"!==p||\"number\"!==t||isFinite(r)&&Math.floor(r)===r?\"categorical\"!==p&&\"number\"===t&&void 0!==i&&r<i?[new ValidationError(e.key,e.value,\"stop domain values must appear in ascending order\")]:(i=r,\"categorical\"===p&&r in s?[new ValidationError(e.key,e.value,\"stop domain values must be unique\")]:(s[r]=!0,[])):[new ValidationError(e.key,e.value,\"integer expected, found %s\",r)]}function o(e){return validate({key:e.key,value:e.value,valueSpec:u,style:e.style,styleSpec:e.styleSpec})}var n,i,l,u=e.valueSpec,p=unbundle(e.value.type),s={},y=\"categorical\"!==p&&void 0===e.value.property,d=!y,c=\"array\"===getType(e.value.stops)&&\"array\"===getType(e.value.stops[0])&&\"object\"===getType(e.value.stops[0][0]),v=validateObject({key:e.key,value:e.value,valueSpec:e.styleSpec.function,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:t,default:o}});return\"identity\"===p&&y&&v.push(new ValidationError(e.key,e.value,'missing required property \"property\"')),\"identity\"===p||e.value.stops||v.push(new ValidationError(e.key,e.value,'missing required property \"stops\"')),\"exponential\"===p&&\"piecewise-constant\"===e.valueSpec.function&&v.push(new ValidationError(e.key,e.value,\"exponential functions not supported\")),e.styleSpec.$version>=8&&(d&&!e.valueSpec[\"property-function\"]?v.push(new ValidationError(e.key,e.value,\"property functions not supported\")):y&&!e.valueSpec[\"zoom-function\"]&&v.push(new ValidationError(e.key,e.value,\"zoom functions not supported\"))),\"categorical\"!==p&&!c||void 0!==e.value.property||v.push(new ValidationError(e.key,e.value,'\"property\" property is required')),v};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate\":131,\"./validate_array\":132,\"./validate_number\":143,\"./validate_object\":144}],139:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateString=_dereq_(\"./validate_string\");module.exports=function(r){var e=r.value,t=r.key,a=validateString(r);return a.length?a:(-1===e.indexOf(\"{fontstack}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{range}\" token')),a)};\n},{\"../error/validation_error\":109,\"./validate_string\":148}],140:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateFilter=_dereq_(\"./validate_filter\"),validatePaintProperty=_dereq_(\"./validate_paint_property\"),validateLayoutProperty=_dereq_(\"./validate_layout_property\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=[],t=e.value,a=e.key,i=e.style,l=e.styleSpec;t.type||t.ref||r.push(new ValidationError(a,t,'either \"type\" or \"ref\" is required'));var u=unbundle(t.type),n=unbundle(t.ref);if(t.id)for(var o=unbundle(t.id),s=0;s<e.arrayIndex;s++){var d=i.layers[s];unbundle(d.id)===o&&r.push(new ValidationError(a,t.id,'duplicate layer id \"%s\", previously used at line %d',t.id,d.id.__line__))}if(\"ref\"in t){[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach(function(e){e in t&&r.push(new ValidationError(a,t[e],'\"%s\" is prohibited for ref layers',e))});var y;i.layers.forEach(function(e){unbundle(e.id)===n&&(y=e)}),y?y.ref?r.push(new ValidationError(a,t.ref,\"ref cannot reference another ref layer\")):u=unbundle(y.type):r.push(new ValidationError(a,t.ref,'ref layer \"%s\" not found',n))}else if(\"background\"!==u)if(t.source){var c=i.sources&&i.sources[t.source],p=c&&unbundle(c.type);c?\"vector\"===p&&\"raster\"===u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a raster source',t.id)):\"raster\"===p&&\"raster\"!==u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a vector source',t.id)):\"vector\"!==p||t[\"source-layer\"]||r.push(new ValidationError(a,t,'layer \"%s\" must specify a \"source-layer\"',t.id)):r.push(new ValidationError(a,t.source,'source \"%s\" not found',t.source))}else r.push(new ValidationError(a,t,'missing required property \"source\"'));return r=r.concat(validateObject({key:a,value:t,valueSpec:l.layer,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(){return[]},filter:validateFilter,layout:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validateLayoutProperty(extend({layerType:u},e))}}})},paint:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validatePaintProperty(extend({layerType:u},e))}}})}}}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/unbundle_jsonlint\":130,\"./validate_filter\":137,\"./validate_layout_property\":141,\"./validate_object\":144,\"./validate_paint_property\":145}],141:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"layout\")};\n},{\"./validate_property\":146}],142:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\");module.exports=function(e){var t=e.value,r=e.styleSpec,a=r.light,i=e.style,n=[],o=getType(t);if(void 0===t)return n;if(\"object\"!==o)return n=n.concat([new ValidationError(\"light\",t,\"object expected, %s found\",o)]);for(var l in t){var c=l.match(/^(.*)-transition$/);n=c&&a[c[1]]&&a[c[1]].transition?n.concat(validate({key:l,value:t[l],valueSpec:r.transition,style:i,styleSpec:r})):a[l]?n.concat(validate({key:l,value:t[l],valueSpec:a[l],style:i,styleSpec:r})):n.concat([new ValidationError(l,t[l],'unknown property \"%s\"',l)])}return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],143:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.key,i=e.value,m=e.valueSpec,a=getType(i);return\"number\"!==a?[new ValidationError(r,i,\"number expected, %s found\",a)]:\"minimum\"in m&&i<m.minimum?[new ValidationError(r,i,\"%s is less than the minimum value %s\",i,m.minimum)]:\"maximum\"in m&&i>m.maximum?[new ValidationError(r,i,\"%s is greater than the maximum value %s\",i,m.maximum)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],144:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validateSpec=_dereq_(\"./validate\");module.exports=function(e){var r=e.key,t=e.value,i=e.valueSpec||{},a=e.objectElementValidators||{},o=e.style,l=e.styleSpec,n=[],u=getType(t);if(\"object\"!==u)return[new ValidationError(r,t,\"object expected, %s found\",u)];for(var d in t){var p=d.split(\".\")[0],s=i[p]||i[\"*\"],c=void 0;if(a[p])c=a[p];else if(i[p])c=validateSpec;else if(a[\"*\"])c=a[\"*\"];else{if(!i[\"*\"]){n.push(new ValidationError(r,t[d],'unknown property \"%s\"',d));continue}c=validateSpec}n=n.concat(c({key:(r?r+\".\":r)+d,value:t[d],valueSpec:s,style:o,styleSpec:l,object:t,objectKey:d}))}for(var v in i)i[v].required&&void 0===i[v].default&&void 0===t[v]&&n.push(new ValidationError(r,t,'missing required property \"%s\"',v));return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],145:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"paint\")};\n},{\"./validate_property\":146}],146:[function(_dereq_,module,exports){\n\"use strict\";var validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(e,t){var r=e.key,i=e.style,a=e.styleSpec,n=e.value,o=e.objectKey,l=a[t+\"_\"+e.layerType];if(!l)return[];var y=o.match(/^(.*)-transition$/);if(\"paint\"===t&&y&&l[y[1]]&&l[y[1]].transition)return validate({key:r,value:n,valueSpec:a.transition,style:i,styleSpec:a});var p=e.valueSpec||l[o];if(!p)return[new ValidationError(r,n,'unknown property \"%s\"',o)];var s;if(\"string\"===getType(n)&&p[\"property-function\"]&&!p.tokens&&(s=/^{([^}]+)}$/.exec(n)))return[new ValidationError(r,n,'\"%s\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": %s` }`.',o,JSON.stringify(s[1]))];var u=[];return\"symbol\"===e.layerType&&\"text-field\"===o&&i&&!i.glyphs&&u.push(new ValidationError(r,n,'use of \"text-field\" requires a style \"glyphs\" property')),u.concat(validate({key:e.key,value:n,valueSpec:p,style:i,styleSpec:a}))};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],147:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateEnum=_dereq_(\"./validate_enum\");module.exports=function(e){var a=e.value,t=e.key,r=e.styleSpec,l=e.style;if(!a.type)return[new ValidationError(t,a,'\"type\" is required')];var u=unbundle(a.type),i=[];switch(u){case\"vector\":case\"raster\":if(i=i.concat(validateObject({key:t,value:a,valueSpec:r.source_tile,style:e.style,styleSpec:r})),\"url\"in a)for(var s in a)[\"type\",\"url\",\"tileSize\"].indexOf(s)<0&&i.push(new ValidationError(t+\".\"+s,a[s],'a source with a \"url\" property may not include a \"%s\" property',s));return i;case\"geojson\":return validateObject({key:t,value:a,valueSpec:r.source_geojson,style:l,styleSpec:r});case\"video\":return validateObject({key:t,value:a,valueSpec:r.source_video,style:l,styleSpec:r});case\"image\":return validateObject({key:t,value:a,valueSpec:r.source_image,style:l,styleSpec:r});case\"canvas\":return validateObject({key:t,value:a,valueSpec:r.source_canvas,style:l,styleSpec:r});default:return validateEnum({key:t+\".type\",value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"]},style:l,styleSpec:r})}};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136,\"./validate_object\":144}],148:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(r){var e=r.value,t=r.key,i=getType(e);return\"string\"!==i?[new ValidationError(t,e,\"string expected, %s found\",i)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],149:[function(_dereq_,module,exports){\n\"use strict\";function validateStyleMin(e,a){a=a||latestStyleSpec;var t=[];return t=t.concat(validate({key:\"\",value:e,valueSpec:a.$root,styleSpec:a,style:e,objectElementValidators:{glyphs:validateGlyphsURL,\"*\":function(){return[]}}})),a.$version>7&&e.constants&&(t=t.concat(validateConstants({key:\"constants\",value:e.constants,style:e,styleSpec:a}))),sortErrors(t)}function sortErrors(e){return[].concat(e).sort(function(e,a){return e.line-a.line})}function wrapCleanErrors(e){return function(){return sortErrors(e.apply(this,arguments))}}var validateConstants=_dereq_(\"./validate/validate_constants\"),validate=_dereq_(\"./validate/validate\"),latestStyleSpec=_dereq_(\"./reference/latest\"),validateGlyphsURL=_dereq_(\"./validate/validate_glyphs_url\");validateStyleMin.source=wrapCleanErrors(_dereq_(\"./validate/validate_source\")),validateStyleMin.light=wrapCleanErrors(_dereq_(\"./validate/validate_light\")),validateStyleMin.layer=wrapCleanErrors(_dereq_(\"./validate/validate_layer\")),validateStyleMin.filter=wrapCleanErrors(_dereq_(\"./validate/validate_filter\")),validateStyleMin.paintProperty=wrapCleanErrors(_dereq_(\"./validate/validate_paint_property\")),validateStyleMin.layoutProperty=wrapCleanErrors(_dereq_(\"./validate/validate_layout_property\")),module.exports=validateStyleMin;\n},{\"./reference/latest\":123,\"./validate/validate\":131,\"./validate/validate_constants\":135,\"./validate/validate_filter\":137,\"./validate/validate_glyphs_url\":139,\"./validate/validate_layer\":140,\"./validate/validate_layout_property\":141,\"./validate/validate_light\":142,\"./validate/validate_paint_property\":145,\"./validate/validate_source\":147}],150:[function(_dereq_,module,exports){\n\"use strict\";var AnimationLoop=function(){this.n=0,this.times=[]};AnimationLoop.prototype.stopped=function(){return this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()}),!this.times.length},AnimationLoop.prototype.set=function(t){return this.times.push({id:this.n,time:t+(new Date).getTime()}),this.n++},AnimationLoop.prototype.cancel=function(t){this.times=this.times.filter(function(i){return i.id!==t})},module.exports=AnimationLoop;\n},{}],151:[function(_dereq_,module,exports){\n\"use strict\";var styleSpec=_dereq_(\"../style-spec/reference/latest\"),util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),validateStyle=_dereq_(\"./validate_style\"),StyleDeclaration=_dereq_(\"./style_declaration\"),StyleTransition=_dereq_(\"./style_transition\"),TRANSITION_SUFFIX=\"-transition\",properties=[\"anchor\",\"color\",\"position\",\"intensity\"],specifications=styleSpec.light,Light=function(t){function i(i){t.call(this),this.set(i)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.set=function(t){var i=this;if(!this._validate(validateStyle.light,t)){this._declarations={},this._transitions={},this._transitionOptions={},this.calculated={},t=util.extend({anchor:specifications.anchor.default,color:specifications.color.default,position:specifications.position.default,intensity:specifications.intensity.default},t);for(var e=0,o=properties;e<o.length;e+=1){var n=o[e];i._declarations[n]=new StyleDeclaration(specifications[n],t[n])}return this}},i.prototype.getLight=function(){return{anchor:this.getLightProperty(\"anchor\"),color:this.getLightProperty(\"color\"),position:this.getLightProperty(\"position\"),intensity:this.getLightProperty(\"intensity\")}},i.prototype.getLightProperty=function(t){return util.endsWith(t,TRANSITION_SUFFIX)?this._transitionOptions[t]:this._declarations[t]&&this._declarations[t].value},i.prototype.getLightValue=function(t,i){if(\"position\"===t){var e=this._transitions[t].calculate(i),o=util.sphericalToCartesian(e);return{x:o[0],y:o[1],z:o[2]}}return this._transitions[t].calculate(i)},i.prototype.setLight=function(t){var i=this;if(!this._validate(validateStyle.light,t))for(var e in t){var o=t[e];util.endsWith(e,TRANSITION_SUFFIX)?i._transitionOptions[e]=o:null===o||void 0===o?delete i._declarations[e]:i._declarations[e]=new StyleDeclaration(specifications[e],o)}},i.prototype.recalculate=function(t){var i=this;for(var e in i._declarations)i.calculated[e]=i.getLightValue(e,{zoom:t})},i.prototype._applyLightDeclaration=function(t,i,e,o,n){var r=e.transition?this._transitions[t]:void 0,a=specifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(a,a.default)),!r||r.declaration.json!==i.json){var s=util.extend({duration:300,delay:0},o,this.getLightProperty(t+TRANSITION_SUFFIX)),l=this._transitions[t]=new StyleTransition(a,i,r,s);l.instant()||(l.loopID=n.set(l.endTime-Date.now())),r&&n.cancel(r.loopID)}},i.prototype.updateLightTransitions=function(t,i,e){var o,n=this;for(o in n._declarations)n._applyLightDeclaration(o,n._declarations[o],t,i,e)},i.prototype._validate=function(t,i){return validateStyle.emitErrors(this,t.call(validateStyle,util.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:styleSpec})))},i}(Evented);module.exports=Light;\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./style_declaration\":157,\"./style_transition\":165,\"./validate_style\":166}],152:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/mapbox\"),normalizeGlyphsURL=ref.normalizeGlyphsURL,ajax=_dereq_(\"../util/ajax\"),parseGlyphPBF=_dereq_(\"./parse_glyph_pbf\");module.exports=function(e,r,a,l,p){var i=256*r,s=i+255,t=l(normalizeGlyphsURL(a).replace(\"{fontstack}\",e).replace(\"{range}\",i+\"-\"+s),ajax.ResourceType.Glyphs);ajax.getArrayBuffer(t,function(e,r){if(e)p(e);else if(r){for(var a={},l=0,i=parseGlyphPBF(r.data);l<i.length;l+=1){var s=i[l];a[s.id]=s}p(null,a)}})};\n},{\"../util/ajax\":201,\"../util/mapbox\":217,\"./parse_glyph_pbf\":154}],153:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),ref=_dereq_(\"../util/mapbox\"),normalizeSpriteURL=ref.normalizeSpriteURL,ref$1=_dereq_(\"../util/image\"),RGBAImage=ref$1.RGBAImage;module.exports=function(e,r,i){function a(){if(u)i(u);else if(t&&o){var e=browser.getImageData(o),r={};for(var a in t){var n=t[a],l=n.width,g=n.height,x=n.x,f=n.y,m=n.sdf,p=n.pixelRatio,s=RGBAImage.create({width:l,height:g});RGBAImage.copy(e,s,{x:x,y:f},{x:0,y:0},{width:l,height:g}),r[a]={data:s,pixelRatio:p,sdf:m}}i(null,r)}}if(!e)return void i(null,{});var t,o,u,n=browser.devicePixelRatio>1?\"@2x\":\"\";ajax.getJSON(r(normalizeSpriteURL(e,n,\".json\"),ajax.ResourceType.SpriteJSON),function(e,r){u||(u=e,t=r,a())}),ajax.getImage(r(normalizeSpriteURL(e,n,\".png\"),ajax.ResourceType.SpriteImage),function(e,r){u||(u=e,o=r,a())})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/image\":213,\"../util/mapbox\":217}],154:[function(_dereq_,module,exports){\n\"use strict\";function readFontstacks(e,a,r){1===e&&r.readMessage(readFontstack,a)}function readFontstack(e,a,r){if(3===e){var t=r.readMessage(readGlyph,{}),d=t.id,i=t.bitmap,n=t.width,o=t.height,h=t.left,s=t.top,p=t.advance;a.push({id:d,bitmap:AlphaImage.create({width:n+2*border,height:o+2*border},i),metrics:{width:n,height:o,left:h,top:s,advance:p}})}}function readGlyph(e,a,r){1===e?a.id=r.readVarint():2===e?a.bitmap=r.readBytes():3===e?a.width=r.readVarint():4===e?a.height=r.readVarint():5===e?a.left=r.readSVarint():6===e?a.top=r.readSVarint():7===e&&(a.advance=r.readVarint())}var ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,Protobuf=_dereq_(\"pbf\"),border=3;module.exports=function(e){return new Protobuf(e).readFields(readFontstacks,[])},module.exports.GLYPH_PBF_BORDER=border;\n},{\"../util/image\":213,\"pbf\":29}],155:[function(_dereq_,module,exports){\n\"use strict\";function getMaximumPaintValue(t,a,e){return a.isPaintValueFeatureConstant(t)?a.paint[t]:e.programConfigurations.get(a.id).paintPropertyStatistics[t].max}function translateDistance(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function translate(t,a,e,n,r){if(!a[0]&&!a[1])return t;var i=Point.convert(a);\"viewport\"===e&&i._rotate(-n);for(var u=[],s=0;s<t.length;s++){for(var o=t[s],l=[],m=0;m<o.length;m++)l.push(o[m].sub(i._mult(r)));u.push(l)}return u}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports={getMaximumPaintValue:getMaximumPaintValue,translateDistance:translateDistance,translate:translate};\n},{\"@mapbox/point-geometry\":2}],156:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),StyleLayer=_dereq_(\"./style_layer\"),loadSprite=_dereq_(\"./load_sprite\"),ImageManager=_dereq_(\"../render/image_manager\"),GlyphManager=_dereq_(\"../render/glyph_manager\"),Light=_dereq_(\"./light\"),LineAtlas=_dereq_(\"../render/line_atlas\"),util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),mapbox=_dereq_(\"../util/mapbox\"),browser=_dereq_(\"../util/browser\"),Dispatcher=_dereq_(\"../util/dispatcher\"),AnimationLoop=_dereq_(\"./animation_loop\"),validateStyle=_dereq_(\"./validate_style\"),getSourceType=_dereq_(\"../source/source\").getType,setSourceType=_dereq_(\"../source/source\").setType,QueryFeatures=_dereq_(\"../source/query_features\"),SourceCache=_dereq_(\"../source/source_cache\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),MapboxGLFunction=_dereq_(\"../style-spec/function\"),getWorkerPool=_dereq_(\"../util/global_worker_pool\"),deref=_dereq_(\"../style-spec/deref\"),diff=_dereq_(\"../style-spec/diff\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),supportedDiffOperations=util.pick(diff.operations,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\"]),ignoredDiffOperations=util.pick(diff.operations,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Style=function(e){function t(t,r,a){var i=this;e.call(this),a=util.extend({validate:\"string\"!=typeof t||!mapbox.isMapboxURL(t)},a);var o=function(e,t){return i.map?i.map._transformRequest(e,t):{url:e}};this.map=r,this.animationLoop=r&&r.animationLoop||new AnimationLoop,this.dispatcher=new Dispatcher(getWorkerPool(),this),this.imageManager=new ImageManager,this.glyphManager=new GlyphManager(o,a.localIdeographFontFamily),this.lineAtlas=new LineAtlas(256,512),this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory={},this._loaded=!1,util.bindAll([\"_redoPlacement\"],this),this._resetUpdates(),this.setEventedParent(r),this.fire(\"dataloading\",{dataType:\"style\"});var s=this;this._rtlTextPluginCallback=rtlTextPlugin.registerForPluginAvailability(function(e){s.dispatcher.broadcast(\"loadRTLTextPlugin\",e.pluginBlobURL,e.errorCallback);for(var t in s.sourceCaches)s.sourceCaches[t].reload()});var n=function(e,t){if(e)i.fire(\"error\",{error:e});else if(t){if(a.validate&&validateStyle.emitErrors(i,validateStyle(t)))return;i._loaded=!0,i.stylesheet=t,i.updateClasses();for(var r in t.sources)i.addSource(r,t.sources[r],a);loadSprite(t.sprite,o,function(e,t){if(e)i.fire(\"error\",e);else if(t)for(var r in t)i.imageManager.addImage(r,t[r]);i.imageManager.setLoaded(!0)}),i.glyphManager.setURL(t.glyphs),i._resolve(),i.fire(\"data\",{dataType:\"style\"}),i.fire(\"style.load\")}};\"string\"==typeof t?ajax.getJSON(o(mapbox.normalizeStyleURL(t),ajax.ResourceType.Style),n):browser.frame(function(){return n(null,t)}),this.on(\"data\",function(e){if(\"source\"===e.dataType&&\"metadata\"===e.sourceDataType){var t=i.sourceCaches[e.sourceId];if(t){var r=t.getSource();if(r&&r.vectorLayerIds)for(var a in i._layers){var o=i._layers[a];o.source===r.id&&i._validateLayer(o)}}}})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype._validateLayer=function(e){var t=this.sourceCaches[e.source];if(t){var r=e.sourceLayer;if(r){var a=t.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(r))&&this.fire(\"error\",{error:new Error('Source layer \"'+r+'\" does not exist on source \"'+a.id+'\" as specified by style layer \"'+e.id+'\"')})}}},t.prototype.loaded=function(){var e=this;if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in e.sourceCaches)if(!e.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},t.prototype._resolve=function(){var e=this,t=deref(this.stylesheet.layers);this._order=t.map(function(e){return e.id}),this._layers={};for(var r=0,a=t;r<a.length;r+=1){var i=a[r];i=StyleLayer.create(i),i.setEventedParent(e,{layer:{id:i.id}}),e._layers[i.id]=i}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new Light(this.stylesheet.light)},t.prototype._serializeLayers=function(e){var t=this;return e.map(function(e){return t._layers[e].serialize()})},t.prototype._applyClasses=function(e,t){var r=this;if(this._loaded){e=e||[],t=t||{transition:!0};var a=this.stylesheet.transition||{},i=this._updatedAllPaintProps?this._layers:this._updatedPaintProps;for(var o in i){var s=r._layers[o],n=r._updatedPaintProps[o];if(r._updatedAllPaintProps||n.all)s.updatePaintTransitions(e,t,a,r.animationLoop,r.zoomHistory);else for(var l in n)r._layers[o].updatePaintTransition(l,e,t,a,r.animationLoop,r.zoomHistory)}this.light.updateLightTransitions(t,a,this.animationLoop)}},t.prototype._recalculate=function(e){var t=this;if(this._loaded){for(var r in t.sourceCaches)t.sourceCaches[r].used=!1;this._updateZoomHistory(e);for(var a=0,i=t._order;a<i.length;a+=1){var o=i[a],s=t._layers[o];s.recalculate(e),!s.isHidden(e)&&s.source&&(t.sourceCaches[s.source].used=!0)}this.light.recalculate(e);Math.floor(this.z)!==Math.floor(e)&&this.animationLoop.set(300),this.z=e}},t.prototype._updateZoomHistory=function(e){var t=this.zoomHistory;void 0===t.lastIntegerZoom&&(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=0,t.lastZoom=e),Math.floor(t.lastZoom)<Math.floor(e)?(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=Date.now()):Math.floor(t.lastZoom)>Math.floor(e)&&(t.lastIntegerZoom=Math.floor(e+1),t.lastIntegerZoomTime=Date.now()),t.lastZoom=e},t.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},t.prototype.update=function(e,t){var r=this;if(this._changed){var a=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(a.length||i.length||this._updatedSymbolOrder)&&this._updateWorkerLayers(a,i);for(var o in r._updatedSources){var s=r._updatedSources[o];\"reload\"===s?r._reloadSource(o):\"clear\"===s&&r._clearSource(o)}this._applyClasses(e,t),this._resetUpdates(),this.fire(\"data\",{dataType:\"style\"})}},t.prototype._updateWorkerLayers=function(e,t){var r=this,a=this._updatedSymbolOrder?this._order.filter(function(e){return\"symbol\"===r._layers[e].type}):null;this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t,symbolOrder:a})},t.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSymbolOrder=!1,this._updatedSources={},this._updatedPaintProps={},this._updatedAllPaintProps=!1},t.prototype.setState=function(e){var t=this;if(this._checkLoaded(),validateStyle.emitErrors(this,validateStyle(e)))return!1;e=util.clone(e),e.layers=deref(e.layers);var r=diff(this.serialize(),e).filter(function(e){return!(e.command in ignoredDiffOperations)});if(0===r.length)return!1;var a=r.filter(function(e){return!(e.command in supportedDiffOperations)});if(a.length>0)throw new Error(\"Unimplemented: \"+a.map(function(e){return e.command}).join(\", \")+\".\");return r.forEach(function(e){\"setTransition\"!==e.command&&t[e.command].apply(t,e.args)}),this.stylesheet=e,!0},t.prototype.addImage=function(e,t){if(this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"An image with this name already exists.\")});this.imageManager.addImage(e,t),this.fire(\"data\",{dataType:\"style\"})},t.prototype.removeImage=function(e){if(!this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"No image with this name exists.\")});this.imageManager.removeImage(e),this.fire(\"data\",{dataType:\"style\"})},t.prototype.addSource=function(e,t,r){var a=this;if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!t.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(t).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"].indexOf(t.type)>=0&&this._validate(validateStyle.source,\"sources.\"+e,t,null,r))){var i=this.sourceCaches[e]=new SourceCache(e,t,this.dispatcher);i.style=this,i.setEventedParent(this,function(){return{isSourceLoaded:a.loaded(),source:i.serialize(),sourceId:e}}),i.onAdd(this.map),this._changed=!0}},t.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");var t=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],t.fire(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e}),t.setEventedParent(null),t.clearTiles(),t.onRemove&&t.onRemove(this.map),this._changed=!0},t.prototype.getSource=function(e){return this.sourceCaches[e]&&this.sourceCaches[e].getSource()},t.prototype.addLayer=function(e,t,r){this._checkLoaded();var a=e.id;if(\"object\"==typeof e.source&&(this.addSource(a,e.source),e=util.clone(e),e=util.extend(e,{source:a})),!this._validate(validateStyle.layer,\"layers.\"+a,e,{arrayIndex:-1},r)){var i=StyleLayer.create(e);this._validateLayer(i),i.setEventedParent(this,{layer:{id:a}});var o=t?this._order.indexOf(t):this._order.length;if(this._order.splice(o,0,a),this._layers[a]=i,this._removedLayers[a]&&i.source){var s=this._removedLayers[a];delete this._removedLayers[a],s.type!==i.type?this._updatedSources[i.source]=\"clear\":(this._updatedSources[i.source]=\"reload\",this.sourceCaches[i.source].pause())}this._updateLayer(i),\"symbol\"===i.type&&(this._updatedSymbolOrder=!0),this.updateClasses(a)}},t.prototype.moveLayer=function(e,t){this._checkLoaded(),this._changed=!0;var r=this._layers[e];if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")});var a=this._order.indexOf(e);this._order.splice(a,1);var i=t?this._order.indexOf(t):this._order.length;this._order.splice(i,0,e),\"symbol\"===r.type&&(this._updatedSymbolOrder=!0,r.source&&!this._updatedSources[r.source]&&(this._updatedSources[r.source]=\"reload\",this.sourceCaches[r.source].pause()))},t.prototype.removeLayer=function(e){this._checkLoaded();var t=this._layers[e];if(!t)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")});t.setEventedParent(null);var r=this._order.indexOf(e);this._order.splice(r,1),\"symbol\"===t.type&&(this._updatedSymbolOrder=!0),this._changed=!0,this._removedLayers[e]=t,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e]},t.prototype.getLayer=function(e){return this._layers[e]},t.prototype.setLayerZoomRange=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")});a.minzoom===t&&a.maxzoom===r||(null!=t&&(a.minzoom=t),null!=r&&(a.maxzoom=r),this._updateLayer(a))},t.prototype.setFilter=function(e,t){this._checkLoaded();var r=this.getLayer(e);if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")});null!==t&&void 0!==t&&this._validate(validateStyle.filter,\"layers.\"+r.id+\".filter\",t)||util.deepEqual(r.filter,t)||(r.filter=util.clone(t),this._updateLayer(r))},t.prototype.getFilter=function(e){return util.clone(this.getLayer(e).filter)},t.prototype.setLayoutProperty=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});util.deepEqual(a.getLayoutProperty(t),r)||(a.setLayoutProperty(t,r),this._updateLayer(a))},t.prototype.getLayoutProperty=function(e,t){return this.getLayer(e).getLayoutProperty(t)},t.prototype.setPaintProperty=function(e,t,r,a){this._checkLoaded();var i=this.getLayer(e);if(!i)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});if(!util.deepEqual(i.getPaintProperty(t,a),r)){var o=i.isPaintValueFeatureConstant(t);i.setPaintProperty(t,r,a);!(r&&MapboxGLFunction.isFunctionDefinition(r)&&\"$zoom\"!==r.property&&void 0!==r.property)&&o||this._updateLayer(i),this.updateClasses(e,t)}},t.prototype.getPaintProperty=function(e,t,r){return this.getLayer(e).getPaintProperty(t,r)},t.prototype.getTransition=function(){return util.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},t.prototype.updateClasses=function(e,t){if(this._changed=!0,e){var r=this._updatedPaintProps;r[e]||(r[e]={}),r[e][t||\"all\"]=!0}else this._updatedAllPaintProps=!0},t.prototype.serialize=function(){var e=this;return util.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:util.mapObject(this.sourceCaches,function(e){return e.serialize()}),layers:this._order.map(function(t){return e._layers[t].serialize()})},function(e){return void 0!==e})},t.prototype._updateLayer=function(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&(this._updatedSources[e.source]=\"reload\",this.sourceCaches[e.source].pause()),this._changed=!0},t.prototype._flattenRenderedFeatures=function(e){for(var t=this,r=[],a=this._order.length-1;a>=0;a--)for(var i=t._order[a],o=0,s=e;o<s.length;o+=1){var n=s[o],l=n[i];if(l)for(var u=0,d=l;u<d.length;u+=1){var h=d[u];r.push(h)}}return r},t.prototype.queryRenderedFeatures=function(e,t,r,a){var i=this;t&&t.filter&&this._validate(validateStyle.filter,\"queryRenderedFeatures.filter\",t.filter);var o={};if(t&&t.layers){if(!Array.isArray(t.layers))return this.fire(\"error\",{error:\"parameters.layers must be an Array.\"}),[];for(var s=0,n=t.layers;s<n.length;s+=1){var l=n[s],u=i._layers[l];if(!u)return i.fire(\"error\",{error:\"The layer '\"+l+\"' does not exist in the map's style and cannot be queried for features.\"}),[];o[u.source]=!0}}var d=[];for(var h in i.sourceCaches)if(!t.layers||o[h]){var c=QueryFeatures.rendered(i.sourceCaches[h],i._layers,e,t,r,a);d.push(c)}return this._flattenRenderedFeatures(d)},t.prototype.querySourceFeatures=function(e,t){t&&t.filter&&this._validate(validateStyle.filter,\"querySourceFeatures.filter\",t.filter);var r=this.sourceCaches[e];return r?QueryFeatures.source(r,t):[]},t.prototype.addSourceType=function(e,t,r){return getSourceType(e)?r(new Error('A source type called \"'+e+'\" already exists.')):(setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},r):r(null,null))},t.prototype.getLight=function(){return this.light.getLight()},t.prototype.setLight=function(e,t){this._checkLoaded();var r=this.light.getLight(),a=!1;for(var i in e)if(!util.deepEqual(e[i],r[i])){a=!0;break}if(a){var o=this.stylesheet.transition||{};this.light.setLight(e),this.light.updateLightTransitions(t||{transition:!0},o,this.animationLoop)}},t.prototype._validate=function(e,t,r,a,i){return(!i||!1!==i.validate)&&validateStyle.emitErrors(this,e.call(validateStyle,util.extend({key:t,style:this.serialize(),value:r,styleSpec:styleSpec},a)))},t.prototype._remove=function(){var e=this;rtlTextPlugin.evented.off(\"pluginAvailable\",this._rtlTextPluginCallback);for(var t in e.sourceCaches)e.sourceCaches[t].clearTiles();this.dispatcher.remove()},t.prototype._clearSource=function(e){this.sourceCaches[e].clearTiles()},t.prototype._reloadSource=function(e){this.sourceCaches[e].resume(),this.sourceCaches[e].reload()},t.prototype._updateSources=function(e){var t=this;for(var r in t.sourceCaches)t.sourceCaches[r].update(e)},t.prototype._redoPlacement=function(){var e=this;for(var t in e.sourceCaches)e.sourceCaches[t].redoPlacement()},t.prototype.getImages=function(e,t,r){this.imageManager.getImages(t.icons,r)},t.prototype.getGlyphs=function(e,t,r){this.glyphManager.getGlyphs(t.stacks,r)},t}(Evented);module.exports=Style;\n},{\"../render/glyph_manager\":75,\"../render/image_manager\":77,\"../render/line_atlas\":78,\"../source/query_features\":94,\"../source/rtl_text_plugin\":96,\"../source/source\":97,\"../source/source_cache\":98,\"../style-spec/deref\":107,\"../style-spec/diff\":108,\"../style-spec/function\":112,\"../style-spec/reference/latest\":123,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dispatcher\":208,\"../util/evented\":210,\"../util/global_worker_pool\":212,\"../util/mapbox\":217,\"../util/util\":223,\"./animation_loop\":150,\"./light\":151,\"./load_sprite\":153,\"./style_layer\":158,\"./validate_style\":166}],157:[function(_dereq_,module,exports){\n\"use strict\";var createFunction=_dereq_(\"../style-spec/function\"),util=_dereq_(\"../util/util\"),StyleDeclaration=function(t,i){var o=this;if(this.value=util.clone(i),this.isFunction=createFunction.isFunctionDefinition(i),this.json=JSON.stringify(this.value),this.minimum=t.minimum,this.function=createFunction(this.value,t),this.isFeatureConstant=this.function.isFeatureConstant,this.isZoomConstant=this.function.isZoomConstant,this.isFeatureConstant||this.isZoomConstant){if(!this.isZoomConstant){this.stopZoomLevels=[];for(var n=0,s=o.value.stops;n<s.length;n+=1){var e=s[n];o.stopZoomLevels.indexOf(e[0])<0&&o.stopZoomLevels.push(e[0])}}}else{this.stopZoomLevels=[];for(var a=[],u=0,l=o.value.stops;u<l.length;u+=1){var r=l[u],c=r[0].zoom;o.stopZoomLevels.indexOf(c)<0&&(o.stopZoomLevels.push(c),a.push([c,a.length]))}this._functionInterpolationT=createFunction({type:\"exponential\",stops:a,base:i.base},{type:\"number\"})}};StyleDeclaration.prototype.calculate=function(t,i){var o=this.function(t&&t.zoom,i||{});return void 0!==this.minimum&&o<this.minimum?this.minimum:o},StyleDeclaration.prototype.calculateInterpolationT=function(t){return this.isFeatureConstant||this.isZoomConstant?0:this._functionInterpolationT(t&&t.zoom,{})},module.exports=StyleDeclaration;\n},{\"../style-spec/function\":112,\"../util/util\":223}],158:[function(_dereq_,module,exports){\n\"use strict\";function getDeclarationValue(t){return t.value}var util=_dereq_(\"../util/util\"),StyleTransition=_dereq_(\"./style_transition\"),StyleDeclaration=_dereq_(\"./style_declaration\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),validateStyle=_dereq_(\"./validate_style\"),parseColor=_dereq_(\"./../style-spec/util/parse_color\"),Evented=_dereq_(\"../util/evented\"),TRANSITION_SUFFIX=\"-transition\",StyleLayer=function(t){function i(i){var e=this;t.call(this),this.id=i.id,this.metadata=i.metadata,this.type=i.type,this.minzoom=i.minzoom,this.maxzoom=i.maxzoom,\"background\"!==i.type&&(this.source=i.source,this.sourceLayer=i[\"source-layer\"],this.filter=i.filter),this.paint={},this.layout={},this._paintSpecifications=styleSpec[\"paint_\"+this.type],this._layoutSpecifications=styleSpec[\"layout_\"+this.type],this._paintTransitions={},this._paintTransitionOptions={},this._paintDeclarations={},this._layoutDeclarations={},this._layoutFunctions={};var a,o,n={validate:!1};for(var r in i){var s=r.match(/^paint(?:\\.(.*))?$/);if(s){var l=s[1]||\"\";for(a in i[r])e.setPaintProperty(a,i[r][a],l,n)}}for(o in i.layout)e.setLayoutProperty(o,i.layout[o],n);for(a in e._paintSpecifications)e.paint[a]=e.getPaintValue(a);for(o in e._layoutSpecifications)e._updateLayoutValue(o)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.setLayoutProperty=function(t,i,e){if(null==i)delete this._layoutDeclarations[t];else{var a=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(validateStyle.layoutProperty,a,t,i,e))return;this._layoutDeclarations[t]=new StyleDeclaration(this._layoutSpecifications[t],i)}this._updateLayoutValue(t)},i.prototype.getLayoutProperty=function(t){return this._layoutDeclarations[t]&&this._layoutDeclarations[t].value},i.prototype.getLayoutValue=function(t,i,e){var a=this._layoutSpecifications[t],o=this._layoutDeclarations[t];return o?o.calculate(i,e):a.default},i.prototype.setPaintProperty=function(t,i,e,a){var o=\"layers.\"+this.id+(e?'[\"paint.'+e+'\"].':\".paint.\")+t;if(util.endsWith(t,TRANSITION_SUFFIX))if(this._paintTransitionOptions[e||\"\"]||(this._paintTransitionOptions[e||\"\"]={}),null===i||void 0===i)delete this._paintTransitionOptions[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintTransitionOptions[e||\"\"][t]=i}else if(this._paintDeclarations[e||\"\"]||(this._paintDeclarations[e||\"\"]={}),null===i||void 0===i)delete this._paintDeclarations[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintDeclarations[e||\"\"][t]=new StyleDeclaration(this._paintSpecifications[t],i)}},i.prototype.getPaintProperty=function(t,i){return i=i||\"\",util.endsWith(t,TRANSITION_SUFFIX)?this._paintTransitionOptions[i]&&this._paintTransitionOptions[i][t]:this._paintDeclarations[i]&&this._paintDeclarations[i][t]&&this._paintDeclarations[i][t].value},i.prototype.getPaintValue=function(t,i,e){var a=this._paintSpecifications[t],o=this._paintTransitions[t];return o?o.calculate(i,e):\"color\"===a.type&&a.default?parseColor(a.default):a.default},i.prototype.getPaintValueStopZoomLevels=function(t){var i=this._paintTransitions[t];return i?i.declaration.stopZoomLevels:[]},i.prototype.getLayoutValueStopZoomLevels=function(t){var i=this._layoutDeclarations[t];return i?i.stopZoomLevels:[]},i.prototype.getPaintInterpolationT=function(t,i){return this._paintTransitions[t].declaration.calculateInterpolationT(i)},i.prototype.getLayoutInterpolationT=function(t,i){return this._layoutDeclarations[t].calculateInterpolationT(i)},i.prototype.isPaintValueFeatureConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isFeatureConstant},i.prototype.isLayoutValueFeatureConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isFeatureConstant},i.prototype.isPaintValueZoomConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isZoomConstant},i.prototype.isLayoutValueZoomConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isZoomConstant},i.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||(!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.layout.visibility)},i.prototype.updatePaintTransitions=function(t,i,e,a,o){for(var n=this,r=util.extend({},this._paintDeclarations[\"\"]),s=0;s<t.length;s++)util.extend(r,n._paintDeclarations[t[s]]);var l;for(l in r)n._applyPaintDeclaration(l,r[l],i,e,a,o);for(l in n._paintTransitions)l in r||n._applyPaintDeclaration(l,null,i,e,a,o)},i.prototype.updatePaintTransition=function(t,i,e,a,o,n){for(var r=this,s=this._paintDeclarations[\"\"][t],l=0;l<i.length;l++){var u=r._paintDeclarations[i[l]];u&&u[t]&&(s=u[t])}this._applyPaintDeclaration(t,s,e,a,o,n)},i.prototype.recalculate=function(t){var i=this;for(var e in i._paintTransitions)i.paint[e]=i.getPaintValue(e,{zoom:t});for(var a in i._layoutFunctions)i.layout[a]=i.getLayoutValue(a,{zoom:t})},i.prototype.serialize=function(){var t=this,i={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:util.mapObject(this._layoutDeclarations,getDeclarationValue)};for(var e in t._paintDeclarations){i[\"\"===e?\"paint\":\"paint.\"+e]=util.mapObject(t._paintDeclarations[e],getDeclarationValue)}return util.filterObject(i,function(t,i){return void 0!==t&&!(\"layout\"===i&&!Object.keys(t).length)})},i.prototype._applyPaintDeclaration=function(t,i,e,a,o,n){var r=e.transition?this._paintTransitions[t]:void 0,s=this._paintSpecifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(s,s.default)),!r||r.declaration.json!==i.json){var l=util.extend({duration:300,delay:0},a,this.getPaintProperty(t+TRANSITION_SUFFIX)),u=this._paintTransitions[t]=new StyleTransition(s,i,r,l,n);u.instant()||(u.loopID=o.set(u.endTime-Date.now())),r&&o.cancel(r.loopID)}},i.prototype._updateLayoutValue=function(t){var i=this._layoutDeclarations[t];i&&i.isFunction?this._layoutFunctions[t]=!0:(delete this._layoutFunctions[t],this.layout[t]=this.getLayoutValue(t))},i.prototype._validate=function(t,i,e,a,o){return(!o||!1!==o.validate)&&validateStyle.emitErrors(this,t.call(validateStyle,{key:i,layerType:this.type,objectKey:e,value:a,styleSpec:styleSpec,style:{glyphs:!0,sprite:!0}}))},i.prototype.has3DPass=function(){return!1},i}(Evented);module.exports=StyleLayer;var subclasses={circle:_dereq_(\"./style_layer/circle_style_layer\"),fill:_dereq_(\"./style_layer/fill_style_layer\"),\"fill-extrusion\":_dereq_(\"./style_layer/fill_extrusion_style_layer\"),line:_dereq_(\"./style_layer/line_style_layer\"),symbol:_dereq_(\"./style_layer/symbol_style_layer\"),background:StyleLayer,raster:StyleLayer};StyleLayer.create=function(t){return new subclasses[t.type](t)};\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./../style-spec/util/parse_color\":128,\"./style_declaration\":157,\"./style_layer/circle_style_layer\":159,\"./style_layer/fill_extrusion_style_layer\":160,\"./style_layer/fill_style_layer\":161,\"./style_layer/line_style_layer\":162,\"./style_layer/symbol_style_layer\":163,\"./style_transition\":165,\"./validate_style\":166}],159:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),CircleBucket=_dereq_(\"../../data/bucket/circle_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiPoint=ref.multiPolygonIntersectsBufferedMultiPoint,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,CircleStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new CircleBucket(e)},t.prototype.queryRadius=function(e){return getMaximumPaintValue(\"circle-radius\",this,e)+translateDistance(this.paint[\"circle-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,r,i,a,n){var u=translate(e,this.getPaintValue(\"circle-translate\",{zoom:i},t.properties),this.getPaintValue(\"circle-translate-anchor\",{zoom:i},t.properties),a,n),l=this.getPaintValue(\"circle-radius\",{zoom:i},t.properties)*n;return multiPolygonIntersectsBufferedMultiPoint(u,r,l)},t}(StyleLayer);module.exports=CircleStyleLayer;\n},{\"../../data/bucket/circle_bucket\":43,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],160:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillExtrusionBucket=_dereq_(\"../../data/bucket/fill_extrusion_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillExtrusionStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,r,i){var o=t.prototype.getPaintValue.call(this,e,r,i);return\"fill-extrusion-color\"===e&&o&&(o[3]=1),o},e.prototype.createBucket=function(t){return new FillExtrusionBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-extrusion-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,n){var l=translate(t,this.getPaintValue(\"fill-extrusion-translate\",{zoom:i},e.properties),this.getPaintValue(\"fill-extrusion-translate-anchor\",{zoom:i},e.properties),o,n);return multiPolygonIntersectsMultiPolygon(l,r)},e.prototype.has3DPass=function(){return 0!==this.paint[\"fill-extrusion-opacity\"]&&\"none\"!==this.layout.visibility},e}(StyleLayer);module.exports=FillExtrusionStyleLayer;\n},{\"../../data/bucket/fill_extrusion_bucket\":45,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],161:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillBucket=_dereq_(\"../../data/bucket/fill_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,o,l){var i=this;if(\"fill-outline-color\"===e){if(void 0===this.getPaintProperty(\"fill-outline-color\"))return t.prototype.getPaintValue.call(this,\"fill-color\",o,l);for(var r=this._paintTransitions[\"fill-outline-color\"];r;){if(!(r&&r.declaration&&r.declaration.value))return t.prototype.getPaintValue.call(i,\"fill-color\",o,l);r=r.oldTransition}}return t.prototype.getPaintValue.call(this,e,o,l)},e.prototype.getPaintValueStopZoomLevels=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintValueStopZoomLevels.call(this,\"fill-color\"):t.prototype.getPaintValueStopZoomLevels.call(this,e)},e.prototype.getPaintInterpolationT=function(e,o){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintInterpolationT.call(this,\"fill-color\",o):t.prototype.getPaintInterpolationT.call(this,e,o)},e.prototype.isPaintValueFeatureConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueFeatureConstant.call(this,\"fill-color\"):t.prototype.isPaintValueFeatureConstant.call(this,e)},e.prototype.isPaintValueZoomConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueZoomConstant.call(this,\"fill-color\"):t.prototype.isPaintValueZoomConstant.call(this,e)},e.prototype.createBucket=function(t){return new FillBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,o,l,i,r){var n=translate(t,this.getPaintValue(\"fill-translate\",{zoom:l},e.properties),this.getPaintValue(\"fill-translate-anchor\",{zoom:l},e.properties),i,r);return multiPolygonIntersectsMultiPolygon(n,o)},e}(StyleLayer);module.exports=FillStyleLayer;\n},{\"../../data/bucket/fill_bucket\":44,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],162:[function(_dereq_,module,exports){\n\"use strict\";function getLineWidth(e,t){return t>0?t+2*e:e}function offsetLine(e,t){for(var i=[],r=new Point(0,0),n=0;n<e.length;n++){for(var a=e[n],u=[],o=0;o<a.length;o++){var s=a[o-1],l=a[o],p=a[o+1],f=0===o?r:l.sub(s)._unit()._perp(),c=o===a.length-1?r:p.sub(l)._unit()._perp(),y=f._add(c)._unit(),h=y.x*c.x+y.y*c.y;y._mult(1/h),u.push(y._mult(t)._add(l))}i.push(u)}return i}var Point=_dereq_(\"@mapbox/point-geometry\"),StyleLayer=_dereq_(\"../style_layer\"),LineBucket=_dereq_(\"../../data/bucket/line_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiLine=ref.multiPolygonIntersectsBufferedMultiLine,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,LineStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new LineBucket(e)},t.prototype.queryRadius=function(e){var t=e,i=getLineWidth(getMaximumPaintValue(\"line-width\",this,t),getMaximumPaintValue(\"line-gap-width\",this,t)),r=getMaximumPaintValue(\"line-offset\",this,t);return i/2+Math.abs(r)+translateDistance(this.paint[\"line-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,i,r,n,a){var u=translate(e,this.getPaintValue(\"line-translate\",{zoom:r},t.properties),this.getPaintValue(\"line-translate-anchor\",{zoom:r},t.properties),n,a),o=a/2*getLineWidth(this.getPaintValue(\"line-width\",{zoom:r},t.properties),this.getPaintValue(\"line-gap-width\",{zoom:r},t.properties)),s=this.getPaintValue(\"line-offset\",{zoom:r},t.properties);return s&&(i=offsetLine(i,s*a)),multiPolygonIntersectsBufferedMultiLine(u,i,o)},t}(StyleLayer);module.exports=LineStyleLayer;\n},{\"../../data/bucket/line_bucket\":46,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158,\"@mapbox/point-geometry\":2}],163:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),SymbolBucket=_dereq_(\"../../data/bucket/symbol_bucket\"),SymbolStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getLayoutValue=function(e,r,o){var n=t.prototype.getLayoutValue.call(this,e,r,o);if(\"auto\"!==n)return n;switch(e){case\"text-rotation-alignment\":case\"icon-rotation-alignment\":return\"line\"===this.getLayoutValue(\"symbol-placement\",r,o)?\"map\":\"viewport\";case\"text-pitch-alignment\":return this.getLayoutValue(\"text-rotation-alignment\",r,o);case\"icon-pitch-alignment\":return this.getLayoutValue(\"icon-rotation-alignment\",r,o);default:return n}},e.prototype.createBucket=function(t){return new SymbolBucket(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e}(StyleLayer);module.exports=SymbolStyleLayer;\n},{\"../../data/bucket/symbol_bucket\":47,\"../style_layer\":158}],164:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"./style_layer\"),util=_dereq_(\"../util/util\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),groupByLayout=_dereq_(\"../style-spec/group_by_layout\"),StyleLayerIndex=function(e){e&&this.replace(e)};StyleLayerIndex.prototype.replace=function(e){var r=this;this.symbolOrder=[];for(var t=0,i=e;t<i.length;t+=1){var a=i[t];\"symbol\"===a.type&&r.symbolOrder.push(a.id)}this._layerConfigs={},this._layers={},this.update(e,[])},StyleLayerIndex.prototype.update=function(e,r,t){for(var i=this,a=0,l=e;a<l.length;a+=1){var y=l[a];i._layerConfigs[y.id]=y;var s=i._layers[y.id]=StyleLayer.create(y);s.updatePaintTransitions({},{transition:!1}),s.filter=featureFilter(s.filter)}for(var o=0,u=r;o<u.length;o+=1){var n=u[o];delete i._layerConfigs[n],delete i._layers[n]}t&&(this.symbolOrder=t),this.familiesBySource={};for(var f=groupByLayout(util.values(this._layerConfigs)),p=0,d=f;p<d.length;p+=1){var h=d[p],c=h.map(function(e){return i._layers[e.id]}),v=c[0];if(!v.layout||\"none\"!==v.layout.visibility){var _=v.source||\"\",g=i.familiesBySource[_];g||(g=i.familiesBySource[_]={});var L=v.sourceLayer||\"_geojsonTileLayer\",m=g[L];m||(m=g[L]=[]),m.push(c)}}},module.exports=StyleLayerIndex;\n},{\"../style-spec/feature_filter\":110,\"../style-spec/group_by_layout\":113,\"../util/util\":223,\"./style_layer\":158}],165:[function(_dereq_,module,exports){\n\"use strict\";function interpZoomTransitioned(t,i,e){if(void 0!==t&&void 0!==i)return{from:t.to,fromScale:t.toScale,to:i.to,toScale:i.toScale,t:e}}var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),fakeZoomHistory={lastIntegerZoom:0,lastIntegerZoomTime:0,lastZoom:0},StyleTransition=function(t,i,e,o,a){this.declaration=i,this.startTime=this.endTime=(new Date).getTime(),this.oldTransition=e,this.duration=o.duration||0,this.delay=o.delay||0,this.zoomTransitioned=\"piecewise-constant\"===t.function&&t.transition,this.interp=this.zoomTransitioned?interpZoomTransitioned:interpolate[t.type],this.zoomHistory=a||fakeZoomHistory,this.instant()||(this.endTime=this.startTime+this.duration+this.delay),e&&e.endTime<=this.startTime&&delete e.oldTransition};StyleTransition.prototype.instant=function(){return!this.oldTransition||!this.interp||0===this.duration&&0===this.delay},StyleTransition.prototype.calculate=function(t,i,e){var o=this._calculateTargetValue(t,i);if(this.instant())return o;if((e=e||Date.now())>=this.endTime)return o;var a=this.oldTransition.calculate(t,i,this.startTime),n=util.easeCubicInOut((e-this.startTime-this.delay)/this.duration);return this.interp(a,o,n)},StyleTransition.prototype._calculateTargetValue=function(t,i){if(!this.zoomTransitioned)return this.declaration.calculate(t,i);var e=t.zoom,o=this.zoomHistory.lastIntegerZoom,a=e>o?2:.5,n=this.declaration.calculate({zoom:e>o?e-1:e+1},i),r=this.declaration.calculate({zoom:e},i),s=Math.min((Date.now()-this.zoomHistory.lastIntegerZoomTime)/this.duration,1),l=Math.abs(e-o),u=interpolate(s,1,l);return void 0!==n&&void 0!==r?{from:n,fromScale:a,to:r,toScale:1,t:u}:void 0},module.exports=StyleTransition;\n},{\"../style-spec/util/interpolate\":127,\"../util/util\":223}],166:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"../style-spec/validate_style.min\"),module.exports.emitErrors=function(r,e){if(e&&e.length){for(var t=0,o=e;t<o.length;t+=1){var s=o[t],i=s.message;r.fire(\"error\",{error:new Error(i)})}return!0}return!1};\n},{\"../style-spec/validate_style.min\":149}],167:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),Anchor=function(t){function o(o,e,n,r){t.call(this,o,e),this.angle=n,void 0!==r&&(this.segment=r)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.clone=function(){return new o(this.x,this.y,this.angle,this.segment)},o}(Point);module.exports=Anchor;\n},{\"@mapbox/point-geometry\":2}],168:[function(_dereq_,module,exports){\n\"use strict\";function checkMaxAngle(e,t,a,r,n){if(void 0===t.segment)return!0;for(var i=t,s=t.segment+1,f=0;f>-a/2;){if(--s<0)return!1;f-=e[s].dist(i),i=e[s]}f+=e[s].dist(e[s+1]),s++;for(var l=[],o=0;f<a/2;){var u=e[s-1],c=e[s],g=e[s+1];if(!g)return!1;var h=u.angleTo(c)-c.angleTo(g);for(h=Math.abs((h+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:f,angleDelta:h}),o+=h;f-l[0].distance>r;)o-=l.shift().angleDelta;if(o>n)return!1;s++,f+=c.dist(g)}return!0}module.exports=checkMaxAngle;\n},{}],169:[function(_dereq_,module,exports){\n\"use strict\";function clipLine(n,x,y,o,e){for(var r=[],t=0;t<n.length;t++)for(var i=n[t],u=void 0,d=0;d<i.length-1;d++){var P=i[d],w=i[d+1];P.x<x&&w.x<x||(P.x<x?P=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round():w.x<x&&(w=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round()),P.y<y&&w.y<y||(P.y<y?P=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round():w.y<y&&(w=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round()),P.x>=o&&w.x>=o||(P.x>=o?P=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round():w.x>=o&&(w=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round()),P.y>=e&&w.y>=e||(P.y>=e?P=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round():w.y>=e&&(w=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round()),u&&P.equals(u[u.length-1])||(u=[P],r.push(u)),u.push(w)))))}return r}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=clipLine;\n},{\"@mapbox/point-geometry\":2}],170:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),Point=_dereq_(\"@mapbox/point-geometry\"),CollisionBoxArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"offsetX\"},{type:\"Int16\",name:\"offsetY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Float32\",name:\"unadjustedMaxScale\"},{type:\"Float32\",name:\"maxScale\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"bbox0\"},{type:\"Int16\",name:\"bbox1\"},{type:\"Int16\",name:\"bbox2\"},{type:\"Int16\",name:\"bbox3\"},{type:\"Float32\",name:\"placementScale\"}]});Object.defineProperty(CollisionBoxArray.prototype.StructType.prototype,\"anchorPoint\",{get:function(){return new Point(this.anchorPointX,this.anchorPointY)}}),module.exports=CollisionBoxArray;\n},{\"../util/struct_array\":220,\"@mapbox/point-geometry\":2}],171:[function(_dereq_,module,exports){\n\"use strict\";var CollisionFeature=function(t,e,i,o,a,n,s,l,r,d,u){var h=s.top*l-r,f=s.bottom*l+r,x=s.left*l-r,m=s.right*l+r;if(this.boxStartIndex=t.length,d){var _=f-h,b=m-x;if(_>0)if(_=Math.max(10*l,_),u){var v=e[i.segment+1].sub(e[i.segment])._unit()._mult(b),c=[i.sub(v),i.add(v)];this._addLineCollisionBoxes(t,c,i,0,b,_,o,a,n)}else this._addLineCollisionBoxes(t,e,i,i.segment,b,_,o,a,n)}else t.emplaceBack(i.x,i.y,0,0,x,h,m,f,1/0,1/0,o,a,n,0,0,0,0,0);this.boxEndIndex=t.length};CollisionFeature.prototype._addLineCollisionBoxes=function(t,e,i,o,a,n,s,l,r){var d=n/2,u=Math.floor(a/d),h=Math.floor(u/2),f=-n/2,x=i,m=o+1,_=f,b=-a/2,v=b-a/8;do{if(--m<0){if(_>b)return;m=0;break}_-=e[m].dist(x),x=e[m]}while(_>v);for(var c=e[m].dist(e[m+1]),g=-h;g<u+h;g++){var p=g*d,C=b+p;if(p<0&&(C+=p),p>a&&(C+=p-a),!(C<_)){for(;_+c<C;){if(_+=c,++m+1>=e.length)return;c=e[m].dist(e[m+1])}var M=C-_,y=e[m],B=e[m+1],k=B.sub(y)._unit()._mult(M)._add(y)._round(),F=Math.max(Math.abs(C-f)-d/2,0),L=a/2/F;(g<0||g>=u)&&(L=Math.min(L,.99)),t.emplaceBack(k.x,k.y,k.x-i.x,k.y-i.y,-n/2,-n/2,n/2,n/2,L,L,s,l,r,0,0,0,0,0)}}},module.exports=CollisionFeature;\n},{}],172:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),EXTENT=_dereq_(\"../data/extent\"),Grid=_dereq_(\"grid-index\"),intersectionTests=_dereq_(\"../util/intersection_tests\"),CollisionTile=function(e,t,i,a,r,o,n){void 0===o&&(o=new Grid(EXTENT,12,6)),void 0===n&&(n=new Grid(EXTENT,12,0)),this.angle=e,this.pitch=t,this.cameraToCenterDistance=i,this.cameraToTileDistance=a,this.grid=o,this.ignoredGrid=n,this.perspectiveRatio=1+.5*(a/i-1),this.minScale=.5/this.perspectiveRatio,this.maxScale=2/this.perspectiveRatio;var s=Math.sin(this.angle),l=Math.cos(this.angle);this.rotationMatrix=[l,-s,s,l],this.reverseRotationMatrix=[l,s,-s,l],this.yStretch=Math.max(1,a/(i*Math.cos(t/180*Math.PI))),this.collisionBoxArray=r,0===r.length&&(r.emplaceBack(),r.emplaceBack(0,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(EXTENT,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,0,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,EXTENT,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0)),this.tempCollisionBox=r.get(0),this.edges=[r.get(1),r.get(2),r.get(3),r.get(4)]};CollisionTile.deserialize=function(e,t){return new CollisionTile(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,t,new Grid(e.grid),new Grid(e.ignoredGrid))},CollisionTile.prototype.serialize=function(e){var t=this.grid.toArrayBuffer(),i=this.ignoredGrid.toArrayBuffer();return e&&(e.push(t),e.push(i)),{angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,grid:t,ignoredGrid:i}},CollisionTile.prototype.placeCollisionFeature=function(e,t,i){for(var a=this,r=this.collisionBoxArray,o=this.minScale,n=this.rotationMatrix,s=this.yStretch,l=e.boxStartIndex;l<e.boxEndIndex;l++){var c=r.get(l),h=c.anchorPoint._matMult(n),x=h.x,m=h.y,p=x+c.x1*a.perspectiveRatio,y=m+c.y1*s*a.perspectiveRatio,g=x+c.x2*a.perspectiveRatio,d=m+c.y2*s*a.perspectiveRatio;c.bbox0=p,c.bbox1=y,c.bbox2=g,c.bbox3=d;var T=new Point(c.offsetX,c.offsetY)._matMult(n),u=T.x*T.x,v=T.y*T.y,M=v*s*s,f=Math.sqrt((u+M)/(u+v))||1;if(c.maxScale=c.unadjustedMaxScale*f,!t)for(var E=a.grid.query(p,y,g,d),S=0;S<E.length;S++){var P=r.get(E[S]),b=P.anchorPoint._matMult(n);if((o=a.getPlacementScale(o,h,c,b,P))>=a.maxScale)return o}if(i){var N=void 0;if(a.angle){var C=a.reverseRotationMatrix,w=new Point(c.x1,c.y1).matMult(C),X=new Point(c.x2,c.y1).matMult(C),B=new Point(c.x1,c.y2).matMult(C),G=new Point(c.x2,c.y2).matMult(C);N=a.tempCollisionBox,N.anchorPointX=c.anchorPoint.x,N.anchorPointY=c.anchorPoint.y,N.x1=Math.min(w.x,X.x,B.x,G.x),N.y1=Math.min(w.y,X.x,B.x,G.x),N.x2=Math.max(w.x,X.x,B.x,G.x),N.y2=Math.max(w.y,X.x,B.x,G.x),N.maxScale=c.maxScale}else N=c;for(var R=0;R<this.edges.length;R++){var q=a.edges[R];if((o=a.getPlacementScale(o,c.anchorPoint,N,q.anchorPoint,q))>=a.maxScale)return o}}}return o},CollisionTile.prototype.queryRenderedSymbols=function(e,t){var i={},a=[];if(0===e.length||0===this.grid.keys.length&&0===this.ignoredGrid.keys.length)return a;for(var r=this.collisionBoxArray,o=this.rotationMatrix,n=this.yStretch,s=[],l=1/0,c=1/0,h=-1/0,x=-1/0,m=0;m<e.length;m++)for(var p=e[m],y=0;y<p.length;y++){var g=p[y].matMult(o);l=Math.min(l,g.x),c=Math.min(c,g.y),h=Math.max(h,g.x),x=Math.max(x,g.y),s.push(g)}for(var d=this.grid.query(l,c,h,x),T=this.ignoredGrid.query(l,c,h,x),u=0;u<T.length;u++)d.push(T[u]);for(var v=t/this.perspectiveRatio,M=Math.pow(2,Math.ceil(Math.log(v)/Math.LN2*10)/10),f=0;f<d.length;f++){var E=r.get(d[f]),S=E.sourceLayerIndex,P=E.featureIndex;if(void 0===i[S]&&(i[S]={}),!i[S][P]&&!(M<E.placementScale||M>E.maxScale)){var b=E.anchorPoint.matMult(o),N=b.x+E.x1/v,C=b.y+E.y1/v*n,w=b.x+E.x2/v,X=b.y+E.y2/v*n,B=[new Point(N,C),new Point(w,C),new Point(w,X),new Point(N,X)];intersectionTests.polygonIntersectsPolygon(s,B)&&(i[S][P]=!0,a.push(d[f]))}}return a},CollisionTile.prototype.getPlacementScale=function(e,t,i,a,r){var o=t.x-a.x,n=t.y-a.y,s=(r.x1-i.x2)/o,l=(r.x2-i.x1)/o,c=(r.y1-i.y2)*this.yStretch/n,h=(r.y2-i.y1)*this.yStretch/n;(isNaN(s)||isNaN(l))&&(s=l=1),(isNaN(c)||isNaN(h))&&(c=h=1);var x=Math.min(Math.max(s,l),Math.max(c,h)),m=r.maxScale,p=i.maxScale;return x>m&&(x=m),x>p&&(x=p),x>e&&x>=r.placementScale&&(e=x),e},CollisionTile.prototype.insertCollisionFeature=function(e,t,i){for(var a=this,r=i?this.ignoredGrid:this.grid,o=this.collisionBoxArray,n=e.boxStartIndex;n<e.boxEndIndex;n++){var s=o.get(n);s.placementScale=t,t<a.maxScale&&(1===a.perspectiveRatio||s.maxScale>=1)&&r.insert(n,s.bbox0,s.bbox1,s.bbox2,s.bbox3)}},module.exports=CollisionTile;\n},{\"../data/extent\":48,\"../util/intersection_tests\":214,\"@mapbox/point-geometry\":2,\"grid-index\":22}],173:[function(_dereq_,module,exports){\n\"use strict\";function getAnchors(e,r,t,n,a,l,o,i,c){var h=n?.6*l*o:0,s=Math.max(n?n.right-n.left:0,a?a.right-a.left:0),u=0===e[0].x||e[0].x===c||0===e[0].y||e[0].y===c;r-s*o<r/4&&(r=s*o+r/4);var g=2*l;return resample(e,u?r/2*i%r:(s/2+g)*o*i%r,r,h,t,s*o,u,!1,c)}function resample(e,r,t,n,a,l,o,i,c){for(var h=l/2,s=0,u=0;u<e.length-1;u++)s+=e[u].dist(e[u+1]);for(var g=0,p=r-t,x=[],f=0;f<e.length-1;f++){for(var v=e[f],m=e[f+1],y=v.dist(m),A=m.angleTo(v);p+t<g+y;){p+=t;var d=(p-g)/y,k=interpolate(v.x,m.x,d),q=interpolate(v.y,m.y,d);if(k>=0&&k<c&&q>=0&&q<c&&p-h>=0&&p+h<=s){var M=new Anchor(k,q,A,f);M._round(),n&&!checkMaxAngle(e,M,l,n,a)||x.push(M)}}g+=y}return i||x.length||o||(x=resample(e,g/2,t,n,a,l,o,!0,c)),x}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),Anchor=_dereq_(\"../symbol/anchor\"),checkMaxAngle=_dereq_(\"./check_max_angle\");module.exports=getAnchors;\n},{\"../style-spec/util/interpolate\":127,\"../symbol/anchor\":167,\"./check_max_angle\":168}],174:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(e){function t(t){g.push(e[t]),l++}function r(e,t,r){var n=u[e];return delete u[e],u[t]=n,g[n].geometry[0].pop(),g[n].geometry[0]=g[n].geometry[0].concat(r[0]),n}function n(e,t,r){var n=i[t];return delete i[t],i[e]=n,g[n].geometry[0].shift(),g[n].geometry[0]=r[0].concat(g[n].geometry[0]),n}function o(e,t,r){var n=r?t[0][t[0].length-1]:t[0][0];return e+\":\"+n.x+\":\"+n.y}for(var i={},u={},g=[],l=0,m=0;m<e.length;m++){var y=e[m],c=y.geometry,f=y.text;if(f){var a=o(f,c),s=o(f,c,!0);if(a in u&&s in i&&u[a]!==i[s]){var v=n(a,s,c),d=r(a,s,g[v].geometry);delete i[a],delete u[s],u[o(f,g[d].geometry,!0)]=d,g[v].geometry=null}else a in u?r(a,s,c):s in i?n(a,s,c):(t(m),i[a]=l-1,u[s]=l-1)}else t(m)}return g.filter(function(e){return e.geometry})};\n},{}],175:[function(_dereq_,module,exports){\n\"use strict\";function getLabelPlaneMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.identity(i),mat4.scale(i,i,[1/r,1/r,1]),a||mat4.rotateZ(i,i,n.angle)):(mat4.scale(i,i,[n.width/2,-n.height/2,1]),mat4.translate(i,i,[1,-1,0]),mat4.multiply(i,i,e)),i}function getGlCoordMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.multiply(i,i,e),mat4.scale(i,i,[r,r,1]),a||mat4.rotateZ(i,i,-n.angle)):(mat4.scale(i,i,[1,-1,1]),mat4.translate(i,i,[-1,-1,0]),mat4.scale(i,i,[2/n.width,2/n.height,1])),i}function project(e,t){var a=[e.x,e.y,0,1];vec4.transformMat4(a,a,t);var n=a[3];return{point:new Point(a[0]/n,a[1]/n),signedDistanceFromCamera:n}}function isVisible(e,t,a,n){var r=e[0]/e[3],i=e[1]/e[3];return r>=-a[0]&&r<=a[0]&&i>=-a[1]&&i<=a[1]&&n.frameHistory.isVisible(t)}function updateLineLabels(e,t,a,n,r,i,o,l,s,p){var m=n?e.textSizeData:e.iconSizeData,c=symbolSize.evaluateSizeForZoom(m,a.transform,p,n),u=[256/a.width*2+1,256/a.height*2+1],y=n?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;y.clear();for(var g=e.lineVertexArray,d=n?e.placedGlyphArray:e.placedIconArray,f=0;f<d.length;f++){var h=d.get(f),x=[h.anchorX,h.anchorY,0,1];if(vec4.transformMat4(x,x,t),isVisible(x,h.placementZoom,u,a)){var v=x[3],b=1+.5*(v/a.transform.cameraToCenterDistance-1),L=symbolSize.evaluateSizeForFeature(m,c,h),A=o?L*b:L/b,G=new Point(h.anchorX,h.anchorY),S=project(G,r).point,P={},D=placeGlyphsAlongLine(h,A,!1,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P);(D.notEnoughRoom||D.needsFlipping&&placeGlyphsAlongLine(h,A,!0,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P).notEnoughRoom)&&hideGlyphs(h.numGlyphs,y)}else hideGlyphs(h.numGlyphs,y)}n?e.text.dynamicLayoutVertexBuffer.updateData(y.serialize()):e.icon.dynamicLayoutVertexBuffer.updateData(y.serialize())}function placeGlyphsAlongLine(e,t,a,n,r,i,o,l,s,p,m,c,u){var y,g=t/24,d=e.lineOffsetX*t,f=e.lineOffsetY*t;if(e.numGlyphs>1){var h=e.glyphStartIndex+e.numGlyphs,x=l.get(e.glyphStartIndex).offsetX,v=l.get(h-1).offsetX,b=e.lineStartIndex,L=e.lineStartIndex+e.lineLength,A=placeGlyphAlongLine(g*x,d,f,a,m,c,e.segment,b,L,s,i,u);if(!A)return{notEnoughRoom:!0};var G=placeGlyphAlongLine(g*v,d,f,a,m,c,e.segment,b,L,s,i,u);if(!G)return{notEnoughRoom:!0};var S=project(A.point,o).point,P=project(G.point,o).point;if(n&&!a&&(e.vertical?S.y<P.y:S.x>P.x))return{needsFlipping:!0};y=[A];for(var D=e.glyphStartIndex+1;D<h-1;D++){var I=l.get(D);y.push(placeGlyphAlongLine(g*I.offsetX,d,f,a,m,c,e.segment,b,L,s,i,u))}y.push(G)}else{if(n&&!a){var M=project(c,r).point,j=s.get(e.lineStartIndex+e.segment+1),w=project(j,r),F=w.signedDistanceFromCamera>0?w.point:projectTruncatedLineSegment(c,new Point(j.x,j.y),M,1,r);if(e.vertical?F.y>M.y:F.x<M.x)return{needsFlipping:!0}}var z=l.get(e.glyphStartIndex),_=placeGlyphAlongLine(g*z.offsetX,d,f,a,m,c,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,s,i,u);if(!_)return{notEnoughRoom:!0};y=[_]}for(var V=e.placementZoom,C=0,X=y;C<X.length;C+=1){var E=X[C];addDynamicAttributes(p,E.point,E.angle,V)}return{}}function projectTruncatedLineSegment(e,t,a,n,r){var i=project(e.add(e.sub(t)._unit()),r).point,o=a.sub(i);return a.add(o._mult(n/o.mag()))}function placeGlyphAlongLine(e,t,a,n,r,i,o,l,s,p,m,c){var u=n?e-t:e+t,y=u>0?1:-1,g=0;n&&(y*=-1,g=Math.PI),y<0&&(g+=Math.PI);for(var d=y>0?l+o:l+o+1,f=r,h=r,x=0,v=0,b=Math.abs(u);x+v<=b;){if((d+=y)<l||d>=s)return null;if(h=f,void 0===(f=c[d])){var L=project(p.get(d),m);if(L.signedDistanceFromCamera>0)f=c[d]=L.point;else{f=projectTruncatedLineSegment(0===x?i:new Point(p.get(d-y).x,p.get(d-y).y),new Point(p.get(d).x,p.get(d).y),h,b-x+1,m)}}x+=v,v=h.dist(f)}var A=(b-x)/v,G=f.sub(h),S=G.mult(A)._add(h);return S._add(G._unit()._perp()._mult(a*y)),{point:S,angle:g+Math.atan2(f.y-h.y,f.x-h.x)}}function hideGlyphs(e,t){for(var a=0;a<e;a++)addDynamicAttributes(t,offscreenPoint,0,25)}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"@mapbox/gl-matrix\"),mat4=ref.mat4,vec4=ref.vec4,symbolSize=_dereq_(\"./symbol_size\"),ref$1=_dereq_(\"../data/bucket/symbol_bucket\"),addDynamicAttributes=ref$1.addDynamicAttributes;module.exports={updateLineLabels:updateLineLabels,getLabelPlaneMatrix:getLabelPlaneMatrix,getGlCoordMatrix:getGlCoordMatrix};var offscreenPoint=new Point(-1/0,-1/0);\n},{\"../data/bucket/symbol_bucket\":47,\"./symbol_size\":178,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],176:[function(_dereq_,module,exports){\n\"use strict\";function getIconQuads(t,e,i,o,n,a,r){var u,l,d,f,c=e.image,h=i.layout,x=e.top-1/c.pixelRatio,g=e.left-1/c.pixelRatio,p=e.bottom+1/c.pixelRatio,s=e.right+1/c.pixelRatio;if(\"none\"!==h[\"icon-text-fit\"]&&n){var P=s-g,_=p-x,w=h[\"text-size\"]/24,m=n.left*w,y=n.right*w,M=n.top*w,v=n.bottom*w,R=y-m,b=v-M,G=h[\"icon-text-fit-padding\"][0],B=h[\"icon-text-fit-padding\"][1],I=h[\"icon-text-fit-padding\"][2],L=h[\"icon-text-fit-padding\"][3],Q=\"width\"===h[\"icon-text-fit\"]?.5*(b-_):0,O=\"height\"===h[\"icon-text-fit\"]?.5*(R-P):0,A=\"width\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?R:P,D=\"height\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?b:_;u=new Point(m+O-L,M+Q-G),l=new Point(m+O+B+A,M+Q-G),d=new Point(m+O+B+A,M+Q+I+D),f=new Point(m+O-L,M+Q+I+D)}else u=new Point(g,x),l=new Point(s,x),d=new Point(s,p),f=new Point(g,p);var E=i.getLayoutValue(\"icon-rotate\",a,r)*Math.PI/180;if(E){var F=Math.sin(E),H=Math.cos(E),V=[H,-F,F,H];u._matMult(V),l._matMult(V),f._matMult(V),d._matMult(V)}return[{tl:u,tr:l,bl:f,br:d,tex:{x:c.textureRect.x-1,y:c.textureRect.y-1,w:c.textureRect.w+2,h:c.textureRect.h+2},writingMode:void 0,glyphOffset:[0,0]}]}function getGlyphQuads(t,e,i,o,n,a,r){for(var u=i.getLayoutValue(\"text-rotate\",n,a)*Math.PI/180,l=i.getLayoutValue(\"text-offset\",n,a).map(function(t){return 24*t}),d=e.positionedGlyphs,f=[],c=0;c<d.length;c++){var h=d[c],x=r[h.glyph];if(x){var g=x.rect;if(g){var p=GLYPH_PBF_BORDER+1,s=x.metrics.advance/2,P=o?[h.x+s,h.y]:[0,0],_=o?[0,0]:[h.x+s+l[0],h.y+l[1]],w=x.metrics.left-p-s+_[0],m=-x.metrics.top-p+_[1],y=w+g.w,M=m+g.h,v=new Point(w,m),R=new Point(y,m),b=new Point(w,M),G=new Point(y,M);if(o&&h.vertical){var B=new Point(-s,s),I=-Math.PI/2,L=new Point(5,0);v._rotateAround(I,B)._add(L),R._rotateAround(I,B)._add(L),b._rotateAround(I,B)._add(L),G._rotateAround(I,B)._add(L)}if(u){var Q=Math.sin(u),O=Math.cos(u),A=[O,-Q,Q,O];v._matMult(A),R._matMult(A),b._matMult(A),G._matMult(A)}f.push({tl:v,tr:R,bl:b,br:G,tex:g,writingMode:e.writingMode,glyphOffset:P})}}}return f}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../style/parse_glyph_pbf\"),GLYPH_PBF_BORDER=ref.GLYPH_PBF_BORDER;module.exports={getIconQuads:getIconQuads,getGlyphQuads:getGlyphQuads};\n},{\"../style/parse_glyph_pbf\":154,\"@mapbox/point-geometry\":2}],177:[function(_dereq_,module,exports){\n\"use strict\";function breakLines(e,t){for(var a=[],r=0,i=0,n=t;i<n.length;i+=1){var l=n[i];a.push(e.substring(r,l)),r=l}return r<e.length&&a.push(e.substring(r,e.length)),a}function shapeText(e,t,a,r,i,n,l,c,o,s){var h=e.trim();s===WritingMode.vertical&&(h=verticalizePunctuation(h));var g,u=[],p={positionedGlyphs:u,text:h,top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:s},b=rtlTextPlugin.processBidirectionalText;return g=b?b(h,determineLineBreaks(h,l,a,t)):breakLines(h,determineLineBreaks(h,l,a,t)),shapeLines(p,t,g,r,i,n,s,l,o),!!u.length&&p}function determineAverageLineWidth(e,t,a,r){for(var i=0,n=0;n<e.length;n++){var l=r[e.charCodeAt(n)];l&&(i+=l.metrics.advance+t)}return i/Math.max(1,Math.ceil(i/a))}function calculateBadness(e,t,a,r){var i=Math.pow(e-t,2);return r?e<t?i/2:2*i:i+Math.abs(a)*a}function calculatePenalty(e,t){var a=0;return 10===e&&(a-=1e4),40!==e&&65288!==e||(a+=50),41!==t&&65289!==t||(a+=50),a}function evaluateBreak(e,t,a,r,i,n){for(var l=null,c=calculateBadness(t,a,i,n),o=0,s=r;o<s.length;o+=1){var h=s[o],g=t-h.x,u=calculateBadness(g,a,i,n)+h.badness;u<=c&&(l=h,c=u)}return{index:e,x:t,priorBreak:l,badness:c}}function leastBadBreaks(e){return e?leastBadBreaks(e.priorBreak).concat(e.index):[]}function determineLineBreaks(e,t,a,r){if(!a)return[];if(!e)return[];for(var i=[],n=determineAverageLineWidth(e,t,a,r),l=0,c=0;c<e.length;c++){var o=e.charCodeAt(c),s=r[o];s&&!whitespace[o]&&(l+=s.metrics.advance+t),c<e.length-1&&(breakable[o]||scriptDetection.charAllowsIdeographicBreaking(o))&&i.push(evaluateBreak(c+1,l,n,i,calculatePenalty(o,e.charCodeAt(c+1)),!1))}return leastBadBreaks(evaluateBreak(e.length,l,n,i,0,!0))}function getAnchorAlignment(e){var t=.5,a=.5;switch(e){case\"right\":case\"top-right\":case\"bottom-right\":t=1;break;case\"left\":case\"top-left\":case\"bottom-left\":t=0}switch(e){case\"bottom\":case\"bottom-right\":case\"bottom-left\":a=1;break;case\"top\":case\"top-right\":case\"top-left\":a=0}return{horizontalAlign:t,verticalAlign:a}}function shapeLines(e,t,a,r,i,n,l,c,o){for(var s=0,h=-17,g=0,u=e.positionedGlyphs,p=\"right\"===n?1:\"left\"===n?0:.5,b=0,v=a;b<v.length;b+=1){var d=v[b];if(d=d.trim(),d.length){for(var f=u.length,k=0;k<d.length;k++){var m=d.charCodeAt(k),x=t[m];x&&(scriptDetection.charHasUprightVerticalOrientation(m)&&l!==WritingMode.horizontal?(u.push({glyph:m,x:s,y:0,vertical:!0}),s+=o+c):(u.push({glyph:m,x:s,y:h,vertical:!1}),s+=x.metrics.advance+c))}if(u.length!==f){var A=s-c;g=Math.max(A,g),justifyLine(u,t,f,u.length-1,p)}s=0,h+=r}else h+=r}var B=getAnchorAlignment(i),y=B.horizontalAlign,w=B.verticalAlign;align(u,p,y,w,g,r,a.length);var z=a.length*r;e.top+=-w*z,e.bottom=e.top+z,e.left+=-y*g,e.right=e.left+g}function justifyLine(e,t,a,r,i){if(i){var n=t[e[r].glyph];if(n)for(var l=n.metrics.advance,c=(e[r].x+l)*i,o=a;o<=r;o++)e[o].x-=c}}function align(e,t,a,r,i,n,l){for(var c=(t-a)*i,o=(-r*l+.5)*n,s=0;s<e.length;s++)e[s].x+=c,e[s].y+=o}function shapeIcon(e,t,a){var r=getAnchorAlignment(a),i=r.horizontalAlign,n=r.verticalAlign,l=t[0],c=t[1],o=l-e.displaySize[0]*i,s=o+e.displaySize[0],h=c-e.displaySize[1]*n;return{image:e,top:h,bottom:h+e.displaySize[1],left:o,right:s}}var scriptDetection=_dereq_(\"../util/script_detection\"),verticalizePunctuation=_dereq_(\"../util/verticalize_punctuation\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),WritingMode={horizontal:1,vertical:2};module.exports={shapeText:shapeText,shapeIcon:shapeIcon,WritingMode:WritingMode};var whitespace={};whitespace[9]=!0,whitespace[10]=!0,whitespace[11]=!0,whitespace[12]=!0,whitespace[13]=!0,whitespace[32]=!0;var breakable={};breakable[10]=!0,breakable[32]=!0,breakable[38]=!0,breakable[40]=!0,breakable[41]=!0,breakable[43]=!0,breakable[45]=!0,breakable[47]=!0,breakable[173]=!0,breakable[183]=!0,breakable[8203]=!0,breakable[8208]=!0,breakable[8211]=!0,breakable[8231]=!0;\n},{\"../source/rtl_text_plugin\":96,\"../util/script_detection\":218,\"../util/verticalize_punctuation\":225}],178:[function(_dereq_,module,exports){\n\"use strict\";function evaluateSizeForFeature(e,o,t){var i=o;return e.isFeatureConstant?i.uSize:e.isZoomConstant?t.lowerSize/10:interpolate.number(t.lowerSize/10,t.upperSize/10,i.uSizeT)}function evaluateSizeForZoom(e,o,t,i){var a={};if(e.isZoomConstant||e.isFeatureConstant)if(e.isFeatureConstant&&!e.isZoomConstant){var n;if(\"interval\"===e.functionType)n=t.getLayoutValue(i?\"text-size\":\"icon-size\",{zoom:o.zoom});else{var r=\"interval\"===e.functionType?0:interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]),u=e.coveringStopValues[0],l=e.coveringStopValues[1];n=u+(l-u)*util.clamp(r,0,1)}a.uSize=n}else e.isFeatureConstant&&e.isZoomConstant&&(a.uSize=e.layoutSize);else{var s=interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]);a.uSizeT=util.clamp(s,0,1)}return a}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),ref=_dereq_(\"../style-spec/function\"),interpolationFactor=ref.interpolationFactor,util=_dereq_(\"../util/util\");module.exports={evaluateSizeForFeature:evaluateSizeForFeature,evaluateSizeForZoom:evaluateSizeForZoom};\n},{\"../style-spec/function\":112,\"../style-spec/util/interpolate\":127,\"../util/util\":223}],179:[function(_dereq_,module,exports){\n\"use strict\";var rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\");module.exports=function(e,r,t,a){var l=r.getLayoutValue(\"text-transform\",t,a);return\"uppercase\"===l?e=e.toLocaleUpperCase():\"lowercase\"===l&&(e=e.toLocaleLowerCase()),rtlTextPlugin.applyArabicShaping&&(e=rtlTextPlugin.applyArabicShaping(e)),e};\n},{\"../source/rtl_text_plugin\":96}],180:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),Point=_dereq_(\"@mapbox/point-geometry\"),handlers={scrollZoom:_dereq_(\"./handler/scroll_zoom\"),boxZoom:_dereq_(\"./handler/box_zoom\"),dragRotate:_dereq_(\"./handler/drag_rotate\"),dragPan:_dereq_(\"./handler/drag_pan\"),keyboard:_dereq_(\"./handler/keyboard\"),doubleClickZoom:_dereq_(\"./handler/dblclick_zoom\"),touchZoomRotate:_dereq_(\"./handler/touch_zoom_rotate\")};module.exports=function(e,t){function n(e){h(\"mouseout\",e)}function o(t){e.stop(),L=DOM.mousePos(g,t),h(\"mousedown\",t),E=!0}function r(t){var n=e.dragRotate&&e.dragRotate.isActive();p&&!n&&h(\"contextmenu\",p),p=null,E=!1,h(\"mouseup\",t)}function a(t){if(!(e.dragPan&&e.dragPan.isActive()||e.dragRotate&&e.dragRotate.isActive())){for(var n=t.toElement||t.target;n&&n!==g;)n=n.parentNode;n===g&&h(\"mousemove\",t)}}function u(t){e.stop(),f(\"touchstart\",t),!t.touches||t.touches.length>1||(b?(clearTimeout(b),b=null,h(\"dblclick\",t)):b=setTimeout(l,300))}function i(e){f(\"touchmove\",e)}function c(e){f(\"touchend\",e)}function d(e){f(\"touchcancel\",e)}function l(){b=null}function s(e){DOM.mousePos(g,e).equals(L)&&h(\"click\",e)}function m(e){h(\"dblclick\",e),e.preventDefault()}function v(t){var n=e.dragRotate&&e.dragRotate.isActive();E||n?E&&(p=t):h(\"contextmenu\",t),t.preventDefault()}function h(t,n){var o=DOM.mousePos(g,n);return e.fire(t,{lngLat:e.unproject(o),point:o,originalEvent:n})}function f(t,n){var o=DOM.touchPos(g,n),r=o.reduce(function(e,t,n,o){return e.add(t.div(o.length))},new Point(0,0));return e.fire(t,{lngLat:e.unproject(r),point:r,lngLats:o.map(function(t){return e.unproject(t)},this),points:o,originalEvent:n})}var g=e.getCanvasContainer(),p=null,E=!1,L=null,b=null;for(var q in handlers)e[q]=new handlers[q](e,t),t.interactive&&t[q]&&e[q].enable(t[q]);g.addEventListener(\"mouseout\",n,!1),g.addEventListener(\"mousedown\",o,!1),g.addEventListener(\"mouseup\",r,!1),g.addEventListener(\"mousemove\",a,!1),g.addEventListener(\"touchstart\",u,!1),g.addEventListener(\"touchend\",c,!1),g.addEventListener(\"touchmove\",i,!1),g.addEventListener(\"touchcancel\",d,!1),g.addEventListener(\"click\",s,!1),g.addEventListener(\"dblclick\",m,!1),g.addEventListener(\"contextmenu\",v,!1)};\n},{\"../util/dom\":209,\"./handler/box_zoom\":189,\"./handler/dblclick_zoom\":190,\"./handler/drag_pan\":191,\"./handler/drag_rotate\":192,\"./handler/keyboard\":193,\"./handler/scroll_zoom\":194,\"./handler/touch_zoom_rotate\":195,\"@mapbox/point-geometry\":2}],181:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),browser=_dereq_(\"../util/browser\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),Camera=function(t){function e(e,i){t.call(this),this.moving=!1,this.transform=e,this._bearingSnap=i.bearingSnap}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCenter=function(){return this.transform.center},e.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},e.prototype.panBy=function(t,e,i){return t=Point.convert(t).mult(-1),this.panTo(this.transform.center,util.extend({offset:t},e),i)},e.prototype.panTo=function(t,e,i){return this.easeTo(util.extend({center:t},e),i)},e.prototype.getZoom=function(){return this.transform.zoom},e.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},e.prototype.zoomTo=function(t,e,i){return this.easeTo(util.extend({zoom:t},e),i)},e.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},e.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},e.prototype.getBearing=function(){return this.transform.bearing},e.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},e.prototype.rotateTo=function(t,e,i){return this.easeTo(util.extend({bearing:t},e),i)},e.prototype.resetNorth=function(t,e){return this.rotateTo(0,util.extend({duration:1e3},t),e),this},e.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},e.prototype.getPitch=function(){return this.transform.pitch},e.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},e.prototype.fitBounds=function(t,e,i){if(e=util.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},e),\"number\"==typeof e.padding){var o=e.padding;e.padding={top:o,bottom:o,right:o,left:o}}if(!util.deepEqual(Object.keys(e.padding).sort(function(t,e){return t<e?-1:t>e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"]))return util.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\"),this;t=LngLatBounds.convert(t);var n=[e.padding.left-e.padding.right,e.padding.top-e.padding.bottom],r=Math.min(e.padding.right,e.padding.left),a=Math.min(e.padding.top,e.padding.bottom);e.offset=[e.offset[0]+n[0],e.offset[1]+n[1]];var s=Point.convert(e.offset),h=this.transform,p=h.project(t.getNorthWest()),u=h.project(t.getSouthEast()),c=u.sub(p),m=(h.width-2*r-2*Math.abs(s.x))/c.x,f=(h.height-2*a-2*Math.abs(s.y))/c.y;return f<0||m<0?(util.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\"),this):(e.center=h.unproject(p.add(u).div(2)),e.zoom=Math.min(h.scaleZoom(h.scale*Math.min(m,f)),e.maxZoom),e.bearing=0,e.linear?this.easeTo(e,i):this.flyTo(e,i))},e.prototype.jumpTo=function(t,e){this.stop();var i=this.transform,o=!1,n=!1,r=!1;return\"zoom\"in t&&i.zoom!==+t.zoom&&(o=!0,i.zoom=+t.zoom),void 0!==t.center&&(i.center=LngLat.convert(t.center)),\"bearing\"in t&&i.bearing!==+t.bearing&&(n=!0,i.bearing=+t.bearing),\"pitch\"in t&&i.pitch!==+t.pitch&&(r=!0,i.pitch=+t.pitch),this.fire(\"movestart\",e).fire(\"move\",e),o&&this.fire(\"zoomstart\",e).fire(\"zoom\",e).fire(\"zoomend\",e),n&&this.fire(\"rotate\",e),r&&this.fire(\"pitchstart\",e).fire(\"pitch\",e).fire(\"pitchend\",e),this.fire(\"moveend\",e)},e.prototype.easeTo=function(t,e){var i=this;this.stop(),t=util.extend({offset:[0,0],duration:500,easing:util.ease},t),!1===t.animate&&(t.duration=0),t.smoothEasing&&0!==t.duration&&(t.easing=this._smoothOutEasing(t.duration));var o=this.transform,n=this.getZoom(),r=this.getBearing(),a=this.getPitch(),s=\"zoom\"in t?+t.zoom:n,h=\"bearing\"in t?this._normalizeBearing(t.bearing,r):r,p=\"pitch\"in t?+t.pitch:a,u=o.centerPoint.add(Point.convert(t.offset)),c=o.pointLocation(u),m=LngLat.convert(t.center||c);this._normalizeCenter(m);var f,g,d=o.project(c),l=o.project(m).sub(d),v=o.zoomScale(s-n);return t.around&&(f=LngLat.convert(t.around),g=o.locationPoint(f)),this.zooming=s!==n,this.rotating=r!==h,this.pitching=p!==a,this._prepareEase(e,t.noMoveStart),clearTimeout(this._onEaseEnd),this._ease(function(t){if(this.zooming&&(o.zoom=interpolate(n,s,t)),this.rotating&&(o.bearing=interpolate(r,h,t)),this.pitching&&(o.pitch=interpolate(a,p,t)),f)o.setLocationAtPoint(f,g);else{var i=o.zoomScale(o.zoom-n),c=s>n?Math.min(2,v):Math.max(.5,v),m=Math.pow(c,1-t),b=o.unproject(d.add(l.mult(t*m)).mult(i));o.setLocationAtPoint(o.renderWorldCopies?b.wrap():b,u)}this._fireMoveEvents(e)},function(){t.delayEndEvents?i._onEaseEnd=setTimeout(function(){return i._easeToEnd(e)},t.delayEndEvents):i._easeToEnd(e)},t),this},e.prototype._prepareEase=function(t,e){this.moving=!0,e||this.fire(\"movestart\",t),this.zooming&&this.fire(\"zoomstart\",t),this.pitching&&this.fire(\"pitchstart\",t)},e.prototype._fireMoveEvents=function(t){this.fire(\"move\",t),this.zooming&&this.fire(\"zoom\",t),this.rotating&&this.fire(\"rotate\",t),this.pitching&&this.fire(\"pitch\",t)},e.prototype._easeToEnd=function(t){var e=this.zooming,i=this.pitching;this.moving=!1,this.zooming=!1,this.rotating=!1,this.pitching=!1,e&&this.fire(\"zoomend\",t),i&&this.fire(\"pitchend\",t),this.fire(\"moveend\",t)},e.prototype.flyTo=function(t,e){function i(t){var e=(M*M-z*z+(t?-1:1)*L*L*E*E)/(2*(t?M:z)*L*E);return Math.log(Math.sqrt(e*e+1)-e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function n(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/n(t)}var a=this;this.stop(),t=util.extend({offset:[0,0],speed:1.2,curve:1.42,easing:util.ease},t);var s=this.transform,h=this.getZoom(),p=this.getBearing(),u=this.getPitch(),c=\"zoom\"in t?util.clamp(+t.zoom,s.minZoom,s.maxZoom):h,m=\"bearing\"in t?this._normalizeBearing(t.bearing,p):p,f=\"pitch\"in t?+t.pitch:u,g=s.zoomScale(c-h),d=s.centerPoint.add(Point.convert(t.offset)),l=s.pointLocation(d),v=LngLat.convert(t.center||l);this._normalizeCenter(v);var b=s.project(l),y=s.project(v).sub(b),_=t.curve,z=Math.max(s.width,s.height),M=z/g,E=y.mag();if(\"minZoom\"in t){var T=util.clamp(Math.min(t.minZoom,h,c),s.minZoom,s.maxZoom),x=z/s.zoomScale(T-h);_=Math.sqrt(x/E*2)}var L=_*_,j=i(0),Z=function(t){return n(j)/n(j+_*t)},w=function(t){return z*((n(j)*r(j+_*t)-o(j))/L)/E},P=(i(1)-j)/_;if(Math.abs(E)<1e-6||isNaN(P)){if(Math.abs(z-M)<1e-6)return this.easeTo(t,e);var q=M<z?-1:1;P=Math.abs(Math.log(M/z))/_,w=function(){return 0},Z=function(t){return Math.exp(q*_*t)}}if(\"duration\"in t)t.duration=+t.duration;else{var B=\"screenSpeed\"in t?+t.screenSpeed/_:+t.speed;t.duration=1e3*P/B}return this.zooming=!0,this.rotating=p!==m,this.pitching=f!==u,this._prepareEase(e,!1),this._ease(function(t){var i=t*P,o=1/Z(i);s.zoom=h+s.scaleZoom(o),this.rotating&&(s.bearing=interpolate(p,m,t)),this.pitching&&(s.pitch=interpolate(u,f,t));var n=s.unproject(b.add(y.mult(w(i))).mult(o));s.setLocationAtPoint(s.renderWorldCopies?n.wrap():n,d),this._fireMoveEvents(e)},function(){return a._easeToEnd(e)},t),this},e.prototype.isEasing=function(){return!!this._abortFn},e.prototype.isMoving=function(){return this.moving},e.prototype.stop=function(){return this._abortFn&&(this._abortFn(),this._finishEase()),this},e.prototype._ease=function(t,e,i){this._finishFn=e,this._abortFn=browser.timed(function(e){t.call(this,i.easing(e)),1===e&&this._finishEase()},!1===i.animate?0:i.duration,this)},e.prototype._finishEase=function(){delete this._abortFn;var t=this._finishFn;delete this._finishFn,t.call(this)},e.prototype._normalizeBearing=function(t,e){t=util.wrap(t,-180,180);var i=Math.abs(t-e);return Math.abs(t-360-e)<i&&(t-=360),Math.abs(t+360-e)<i&&(t+=360),t},e.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0}},e.prototype._smoothOutEasing=function(t){var e=util.ease;if(this._prevEase){var i=this._prevEase,o=(Date.now()-i.start)/i.duration,n=i.easing(o+.01)-i.easing(o),r=.27/Math.sqrt(n*n+1e-4)*.01,a=Math.sqrt(.0729-r*r);e=util.bezier(r,a,.25,1)}return this._prevEase={start:(new Date).getTime(),duration:t,easing:e},e},e}(Evented);module.exports=Camera;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../style-spec/util/interpolate\":127,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"@mapbox/point-geometry\":2}],182:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),config=_dereq_(\"../../util/config\"),AttributionControl=function(t){this.options=t,util.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};AttributionControl.prototype.getDefaultPosition=function(){return\"bottom-right\"},AttributionControl.prototype.onAdd=function(t){var i=this.options&&this.options.compact;return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),i&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===i&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},AttributionControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0},AttributionControl.prototype._updateEditLink=function(){var t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:config.ACCESS_TOKEN}];if(t){var o=i.reduce(function(t,o,e){return o.value&&(t+=o.key+\"=\"+o.value+(e<i.length-1?\"&\":\"\")),t},\"?\");t.href=\"https://www.mapbox.com/feedback/\"+o+(this._map._hash?this._map._hash.getHashString(!0):\"\")}},AttributionControl.prototype._updateData=function(t){t&&\"metadata\"===t.sourceDataType&&(this._updateAttributions(),this._updateEditLink())},AttributionControl.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this._map.style.stylesheet){var i=this._map.style.stylesheet;this.styleOwner=i.owner,this.styleId=i.id}var o=this._map.style.sourceCaches;for(var e in o){var n=o[e].getSource();n.attribution&&t.indexOf(n.attribution)<0&&t.push(n.attribution)}t.sort(function(t,i){return t.length-i.length}),t=t.filter(function(i,o){for(var e=o+1;e<t.length;e++)if(t[e].indexOf(i)>=0)return!1;return!0}),this._container.innerHTML=t.join(\" | \"),this._editLink=null}},AttributionControl.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")},module.exports=AttributionControl;\n},{\"../../util/config\":206,\"../../util/dom\":209,\"../../util/util\":223}],183:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),FullscreenControl=function(){this._fullscreen=!1,util.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in window.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\"};FullscreenControl.prototype.onAdd=function(e){return this._map=e,this._mapContainer=this._map.getContainer(),this._container=DOM.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._container.style.display=\"none\",util.warnOnce(\"This device does not support fullscreen mode.\")),this._container},FullscreenControl.prototype.onRemove=function(){DOM.remove(this._container),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._checkFullscreenSupport=function(){return!!(window.document.fullscreenEnabled||window.document.mozFullScreenEnabled||window.document.msFullscreenEnabled||window.document.webkitFullscreenEnabled)},FullscreenControl.prototype._setupUI=function(){var e=this._fullscreenButton=DOM.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._container);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._isFullscreen=function(){return this._fullscreen},FullscreenControl.prototype._changeIcon=function(){(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._mapContainer!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"))},FullscreenControl.prototype._onClickFullscreen=function(){this._isFullscreen()?window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen&&window.document.webkitCancelFullScreen():this._mapContainer.requestFullscreen?this._mapContainer.requestFullscreen():this._mapContainer.mozRequestFullScreen?this._mapContainer.mozRequestFullScreen():this._mapContainer.msRequestFullscreen?this._mapContainer.msRequestFullscreen():this._mapContainer.webkitRequestFullscreen&&this._mapContainer.webkitRequestFullscreen()},module.exports=FullscreenControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],184:[function(_dereq_,module,exports){\n\"use strict\";function checkGeolocationSupport(t){void 0!==supportsGeolocation?t(supportsGeolocation):void 0!==window.navigator.permissions?window.navigator.permissions.query({name:\"geolocation\"}).then(function(o){supportsGeolocation=\"denied\"!==o.state,t(supportsGeolocation)}):(supportsGeolocation=!!window.navigator.geolocation,t(supportsGeolocation))}var Evented=_dereq_(\"../../util/evented\"),DOM=_dereq_(\"../../util/dom\"),window=_dereq_(\"../../util/window\"),util=_dereq_(\"../../util/util\"),LngLat=_dereq_(\"../../geo/lng_lat\"),Marker=_dereq_(\"../marker\"),defaultOptions={positionOptions:{enableHighAccuracy:!1,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0},className=\"mapboxgl-ctrl\",supportsGeolocation,GeolocateControl=function(t){function o(o){t.call(this),this.options=util.extend({},defaultOptions,o),util.bindAll([\"_onSuccess\",\"_onError\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_onClickGeolocate\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",className+\" \"+className+\"-group\"),checkGeolocationSupport(this._setupUI),this._container},o.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker.remove(),DOM.remove(this._container),this._map=void 0},o.prototype._onSuccess=function(t){if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(\"geolocate\",t),this._finish()},o.prototype._updateCamera=function(t){var o=new LngLat(t.coords.longitude,t.coords.latitude),e=t.coords.accuracy;this._map.fitBounds(o.toBounds(e),this.options.fitBoundsOptions,{geolocateSource:!0})},o.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove()},o.prototype._onError=function(t){if(this.options.trackUserLocation)if(1===t.code)this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),void 0!==this._geolocationWatchID&&this._clearWatch();else switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(\"error\",t),this._finish()},o.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},o.prototype._setupUI=function(t){var o=this;!1!==t&&(this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._geolocateButton=DOM.create(\"button\",className+\"-icon \"+className+\"-geolocate\",this._container),this._geolocateButton.type=\"button\",this._geolocateButton.setAttribute(\"aria-label\",\"Geolocate\"),this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=DOM.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Marker(this._dotElement),this.options.trackUserLocation&&(this._watchState=\"OFF\")),this._geolocateButton.addEventListener(\"click\",this._onClickGeolocate.bind(this)),this.options.trackUserLocation&&this._map.on(\"movestart\",function(t){t.geolocateSource||\"ACTIVE_LOCK\"!==o._watchState||(o._watchState=\"BACKGROUND\",o._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),o._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),o.fire(\"trackuserlocationend\"))}))},o.prototype._onClickGeolocate=function(){if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(\"trackuserlocationstart\");break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(\"trackuserlocationend\");break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(\"trackuserlocationstart\")}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions))}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4)},o.prototype._clearWatch=function(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},o}(Evented);module.exports=GeolocateControl;\n},{\"../../geo/lng_lat\":58,\"../../util/dom\":209,\"../../util/evented\":210,\"../../util/util\":223,\"../../util/window\":204,\"../marker\":198}],185:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),LogoControl=function(){util.bindAll([\"_updateLogo\"],this)};LogoControl.prototype.onAdd=function(o){this._map=o,this._container=DOM.create(\"div\",\"mapboxgl-ctrl\");var t=DOM.create(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",\"Mapbox logo\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._container},LogoControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo)},LogoControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},LogoControl.prototype._updateLogo=function(o){o&&\"metadata\"!==o.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},LogoControl.prototype._logoRequired=function(){if(this._map.style){var o=this._map.style.sourceCaches;for(var t in o){if(o[t].getSource().mapbox_logo)return!0}return!1}},module.exports=LogoControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],186:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),DragRotateHandler=_dereq_(\"../handler/drag_rotate\"),NavigationControl=function(){var t=this;util.bindAll([\"_rotateCompassArrow\"],this),this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in\",\"Zoom In\",function(){return t._map.zoomIn()}),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out\",\"Zoom Out\",function(){return t._map.zoomOut()}),this._compass=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-compass\",\"Reset North\",function(){return t._map.resetNorth()}),this._compassArrow=DOM.create(\"span\",\"mapboxgl-ctrl-compass-arrow\",this._compass)};NavigationControl.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t},NavigationControl.prototype.onAdd=function(t){return this._map=t,this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new DragRotateHandler(t,{button:\"left\",element:this._compass,pitchWithRotate:!1}),this._handler.enable(),this._container},NavigationControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"rotate\",this._rotateCompassArrow),delete this._map,this._handler.disable(),delete this._handler},NavigationControl.prototype._createButton=function(t,o,r){var e=DOM.create(\"button\",t,this._container);return e.type=\"button\",e.setAttribute(\"aria-label\",o),e.addEventListener(\"click\",r),e},module.exports=NavigationControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../handler/drag_rotate\":192}],187:[function(_dereq_,module,exports){\n\"use strict\";function updateScale(t,e,o){var n=o&&o.maxWidth||100,i=t._container.clientHeight/2,a=getDistance(t.unproject([0,i]),t.unproject([n,i]));if(o&&\"imperial\"===o.unit){var l=3.2808*a;if(l>5280){setScale(e,n,l/5280,\"mi\")}else setScale(e,n,l,\"ft\")}else if(o&&\"nautical\"===o.unit){var r=a/1852;setScale(e,n,r,\"nm\")}else setScale(e,n,a,\"m\")}function setScale(t,e,o,n){var i=getRoundNum(o),a=i/o;\"m\"===n&&i>=1e3&&(i/=1e3,n=\"km\"),t.style.width=e*a+\"px\",t.innerHTML=i+n}function getDistance(t,e){var o=Math.PI/180,n=t.lat*o,i=e.lat*o,a=Math.sin(n)*Math.sin(i)+Math.cos(n)*Math.cos(i)*Math.cos((e.lng-t.lng)*o);return 6371e3*Math.acos(Math.min(a,1))}function getRoundNum(t){var e=Math.pow(10,(\"\"+Math.floor(t)).length-1),o=t/e;return o=o>=10?10:o>=5?5:o>=3?3:o>=2?2:1,e*o}var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),ScaleControl=function(t){this.options=t,util.bindAll([\"_onMove\"],this)};ScaleControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},ScaleControl.prototype._onMove=function(){updateScale(this._map,this._container,this.options)},ScaleControl.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},ScaleControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},module.exports=ScaleControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],188:[function(_dereq_,module,exports){\n\"use strict\";\n},{}],189:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),LngLatBounds=_dereq_(\"../../geo/lng_lat_bounds\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),BoxZoomHandler=function(o){this._map=o,this._el=o.getCanvasContainer(),this._container=o.getContainer(),util.bindAll([\"_onMouseDown\",\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this)};BoxZoomHandler.prototype.isEnabled=function(){return!!this._enabled},BoxZoomHandler.prototype.isActive=function(){return!!this._active},BoxZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.dragPan&&this._map.dragPan.disable(),this._el.addEventListener(\"mousedown\",this._onMouseDown,!1),this._map.dragPan&&this._map.dragPan.enable(),this._enabled=!0)},BoxZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onMouseDown),this._enabled=!1)},BoxZoomHandler.prototype._onMouseDown=function(o){o.shiftKey&&0===o.button&&(window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),window.document.addEventListener(\"keydown\",this._onKeyDown,!1),window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),DOM.disableDrag(),this._startPos=DOM.mousePos(this._el,o),this._active=!0)},BoxZoomHandler.prototype._onMouseMove=function(o){var e=this._startPos,t=DOM.mousePos(this._el,o);this._box||(this._box=DOM.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",o));var n=Math.min(e.x,t.x),i=Math.max(e.x,t.x),s=Math.min(e.y,t.y),a=Math.max(e.y,t.y);DOM.setTransform(this._box,\"translate(\"+n+\"px,\"+s+\"px)\"),this._box.style.width=i-n+\"px\",this._box.style.height=a-s+\"px\"},BoxZoomHandler.prototype._onMouseUp=function(o){if(0===o.button){var e=this._startPos,t=DOM.mousePos(this._el,o),n=(new LngLatBounds).extend(this._map.unproject(e)).extend(this._map.unproject(t));this._finish(),e.x===t.x&&e.y===t.y?this._fireEvent(\"boxzoomcancel\",o):this._map.fitBounds(n,{linear:!0}).fire(\"boxzoomend\",{originalEvent:o,boxZoomBounds:n})}},BoxZoomHandler.prototype._onKeyDown=function(o){27===o.keyCode&&(this._finish(),this._fireEvent(\"boxzoomcancel\",o))},BoxZoomHandler.prototype._finish=function(){this._active=!1,window.document.removeEventListener(\"mousemove\",this._onMouseMove,!1),window.document.removeEventListener(\"keydown\",this._onKeyDown,!1),window.document.removeEventListener(\"mouseup\",this._onMouseUp,!1),this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(DOM.remove(this._box),this._box=null),DOM.enableDrag()},BoxZoomHandler.prototype._fireEvent=function(o,e){return this._map.fire(o,{originalEvent:e})},module.exports=BoxZoomHandler;\n},{\"../../geo/lng_lat_bounds\":59,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],190:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../../util/util\"),DoubleClickZoomHandler=function(l){this._map=l,util.bindAll([\"_onDblClick\"],this)};DoubleClickZoomHandler.prototype.isEnabled=function(){return!!this._enabled},DoubleClickZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.on(\"dblclick\",this._onDblClick),this._enabled=!0)},DoubleClickZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._map.off(\"dblclick\",this._onDblClick),this._enabled=!1)},DoubleClickZoomHandler.prototype._onDblClick=function(l){this._map.zoomTo(this._map.getZoom()+(l.originalEvent.shiftKey?-1:1),{around:l.lngLat},l)},module.exports=DoubleClickZoomHandler;\n},{\"../../util/util\":223}],191:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.3,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=1400,inertiaDeceleration=2500,DragPanHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\",\"_onTouchEnd\",\"_onMouseUp\"],this)};DragPanHandler.prototype.isEnabled=function(){return!!this._enabled},DragPanHandler.prototype.isActive=function(){return!!this._active},DragPanHandler.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._el.addEventListener(\"mousedown\",this._onDown),this._el.addEventListener(\"touchstart\",this._onDown),this._enabled=!0)},DragPanHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._el.removeEventListener(\"mousedown\",this._onDown),this._el.removeEventListener(\"touchstart\",this._onDown),this._enabled=!1)},DragPanHandler.prototype._onDown=function(t){this._ignoreEvent(t)||this.isActive()||(t.touches?(window.document.addEventListener(\"touchmove\",this._onMove),window.document.addEventListener(\"touchend\",this._onTouchEnd)):(window.document.addEventListener(\"mousemove\",this._onMove),window.document.addEventListener(\"mouseup\",this._onMouseUp)),window.addEventListener(\"blur\",this._onMouseUp),this._active=!1,this._startPos=this._pos=DOM.mousePos(this._el,t),this._inertia=[[Date.now(),this._pos]])},DragPanHandler.prototype._onMove=function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"dragstart\",t),this._fireEvent(\"movestart\",t));var e=DOM.mousePos(this._el,t),n=this._map;n.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),e]),n.transform.setLocationAtPoint(n.transform.pointLocation(this._pos),e),this._fireEvent(\"drag\",t),this._fireEvent(\"move\",t),this._pos=e,t.preventDefault()}},DragPanHandler.prototype._onUp=function(t){var e=this;if(this.isActive()){this._active=!1,this._fireEvent(\"dragend\",t),this._drainInertiaBuffer();var n=function(){e._map.moving=!1,e._fireEvent(\"moveend\",t)},i=this._inertia;if(i.length<2)return void n();var o=i[i.length-1],r=i[0],a=o[1].sub(r[1]),s=(o[0]-r[0])/1e3;if(0===s||o[1].equals(r[1]))return void n();var u=a.mult(inertiaLinearity/s),d=u.mag();d>inertiaMaxSpeed&&(d=inertiaMaxSpeed,u._unit()._mult(d));var h=d/(inertiaDeceleration*inertiaLinearity),v=u.mult(-h/2);this._map.panBy(v,{duration:1e3*h,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragPanHandler.prototype._onMouseUp=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"mousemove\",this._onMove),window.document.removeEventListener(\"mouseup\",this._onMouseUp),window.removeEventListener(\"blur\",this._onMouseUp))},DragPanHandler.prototype._onTouchEnd=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onTouchEnd))},DragPanHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragPanHandler.prototype._ignoreEvent=function(t){var e=this._map;return!(!e.boxZoom||!e.boxZoom.isActive())||(!(!e.dragRotate||!e.dragRotate.isActive())||(t.touches?t.touches.length>1:!!t.ctrlKey||\"mousemove\"!==t.type&&t.button&&0!==t.button))},DragPanHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragPanHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],192:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.25,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=180,inertiaDeceleration=720,DragRotateHandler=function(t,e){this._map=t,this._el=e.element||t.getCanvasContainer(),this._button=e.button||\"right\",this._bearingSnap=e.bearingSnap||0,this._pitchWithRotate=!1!==e.pitchWithRotate,util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\"],this)};DragRotateHandler.prototype.isEnabled=function(){return!!this._enabled},DragRotateHandler.prototype.isActive=function(){return!!this._active},DragRotateHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"mousedown\",this._onDown),this._enabled=!0)},DragRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onDown),this._enabled=!1)},DragRotateHandler.prototype._onDown=function(t){if(!(this._map.boxZoom&&this._map.boxZoom.isActive()||this._map.dragPan&&this._map.dragPan.isActive()||this.isActive())){if(\"right\"===this._button){var e=t.ctrlKey?0:2,i=t.button;if(void 0!==window.InstallTrigger&&2===t.button&&t.ctrlKey&&window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0&&(i=0),i!==e)return}else if(t.ctrlKey||0!==t.button)return;DOM.disableDrag(),window.document.addEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.addEventListener(\"mouseup\",this._onUp),window.addEventListener(\"blur\",this._onUp),this._active=!1,this._inertia=[[Date.now(),this._map.getBearing()]],this._startPos=this._pos=DOM.mousePos(this._el,t),this._center=this._map.transform.centerPoint,t.preventDefault()}},DragRotateHandler.prototype._onMove=function(t){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"rotatestart\",t),this._fireEvent(\"movestart\",t),this._pitchWithRotate&&this._fireEvent(\"pitchstart\",t));var e=this._map;e.stop();var i=this._pos,n=DOM.mousePos(this._el,t),r=.8*(i.x-n.x),a=-.5*(i.y-n.y),o=e.getBearing()-r,s=e.getPitch()-a,h=this._inertia,_=h[h.length-1];this._drainInertiaBuffer(),h.push([Date.now(),e._normalizeBearing(o,_[1])]),e.transform.bearing=o,this._pitchWithRotate&&(this._fireEvent(\"pitch\",t),e.transform.pitch=s),this._fireEvent(\"rotate\",t),this._fireEvent(\"move\",t),this._pos=n},DragRotateHandler.prototype._onUp=function(t){var e=this;if(window.document.removeEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.removeEventListener(\"mouseup\",this._onUp),window.removeEventListener(\"blur\",this._onUp),DOM.enableDrag(),this.isActive()){this._active=!1,this._fireEvent(\"rotateend\",t),this._drainInertiaBuffer();var i=this._map,n=i.getBearing(),r=this._inertia,a=function(){Math.abs(n)<e._bearingSnap?i.resetNorth({noMoveStart:!0},{originalEvent:t}):(e._map.moving=!1,e._fireEvent(\"moveend\",t)),e._pitchWithRotate&&e._fireEvent(\"pitchend\",t)};if(r.length<2)return void a();var o=r[0],s=r[r.length-1],h=r[r.length-2],_=i._normalizeBearing(n,h[1]),p=s[1]-o[1],v=p<0?-1:1,d=(s[0]-o[0])/1e3;if(0===p||0===d)return void a();var l=Math.abs(p*(inertiaLinearity/d));l>inertiaMaxSpeed&&(l=inertiaMaxSpeed);var u=l/(inertiaDeceleration*inertiaLinearity);_+=v*l*(u/2),Math.abs(i._normalizeBearing(_,0))<this._bearingSnap&&(_=i._normalizeBearing(0,_)),i.rotateTo(_,{duration:1e3*u,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragRotateHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],193:[function(_dereq_,module,exports){\n\"use strict\";function easeOut(e){return e*(2-e)}var util=_dereq_(\"../../util/util\"),panStep=100,bearingStep=15,pitchStep=10,KeyboardHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onKeyDown\"],this)};KeyboardHandler.prototype.isEnabled=function(){return!!this._enabled},KeyboardHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0)},KeyboardHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1)},KeyboardHandler.prototype._onKeyDown=function(e){if(!(e.altKey||e.ctrlKey||e.metaKey)){var t=0,a=0,n=0,r=0,i=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?a=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?a=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?n=1:(e.preventDefault(),i=-1);break;case 40:e.shiftKey?n=-1:(i=1,e.preventDefault());break;default:return}var s=this._map,o=s.getZoom(),l={duration:300,delayEndEvents:500,easing:easeOut,zoom:t?Math.round(o)+t*(e.shiftKey?2:1):o,bearing:s.getBearing()+a*bearingStep,pitch:s.getPitch()+n*pitchStep,offset:[-r*panStep,-i*panStep],center:s.getCenter()};s.easeTo(l,{originalEvent:e})}},module.exports=KeyboardHandler;\n},{\"../../util/util\":223}],194:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),browser=_dereq_(\"../../util/browser\"),window=_dereq_(\"../../util/window\"),ua=window.navigator.userAgent.toLowerCase(),firefox=-1!==ua.indexOf(\"firefox\"),safari=-1!==ua.indexOf(\"safari\")&&-1===ua.indexOf(\"chrom\"),ScrollZoomHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onWheel\",\"_onTimeout\"],this)};ScrollZoomHandler.prototype.isEnabled=function(){return!!this._enabled},ScrollZoomHandler.prototype.enable=function(e){this.isEnabled()||(this._el.addEventListener(\"wheel\",this._onWheel,!1),this._el.addEventListener(\"mousewheel\",this._onWheel,!1),this._enabled=!0,this._aroundCenter=e&&\"center\"===e.around)},ScrollZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"wheel\",this._onWheel),this._el.removeEventListener(\"mousewheel\",this._onWheel),this._enabled=!1)},ScrollZoomHandler.prototype._onWheel=function(e){var t=0;\"wheel\"===e.type?(t=e.deltaY,firefox&&e.deltaMode===window.WheelEvent.DOM_DELTA_PIXEL&&(t/=browser.devicePixelRatio),e.deltaMode===window.WheelEvent.DOM_DELTA_LINE&&(t*=40)):\"mousewheel\"===e.type&&(t=-e.wheelDeltaY,safari&&(t/=3));var o=browser.now(),i=o-(this._time||0);this._pos=DOM.mousePos(this._el,e),this._time=o,0!==t&&t%4.000244140625==0?this._type=\"wheel\":0!==t&&Math.abs(t)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40)):this._type||(this._type=Math.abs(i*t)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&this._zoom(-t,e),e.preventDefault()},ScrollZoomHandler.prototype._onTimeout=function(){this._type=\"wheel\",this._zoom(-this._lastValue)},ScrollZoomHandler.prototype._zoom=function(e,t){if(0!==e){var o=this._map,i=2/(1+Math.exp(-Math.abs(e/100)));e<0&&0!==i&&(i=1/i);var l=o.ease?o.ease.to:o.transform.scale,s=o.transform.scaleZoom(l*i);o.zoomTo(s,{duration:\"wheel\"===this._type?200:0,around:this._aroundCenter?o.getCenter():o.unproject(this._pos),delayEndEvents:200,smoothEasing:!0},{originalEvent:t})}},module.exports=ScrollZoomHandler;\n},{\"../../util/browser\":202,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],195:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.15,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaDeceleration=12,inertiaMaxSpeed=2.5,significantScaleThreshold=.15,significantRotateThreshold=10,TouchZoomRotateHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onStart\",\"_onMove\",\"_onEnd\"],this)};TouchZoomRotateHandler.prototype.isEnabled=function(){return!!this._enabled},TouchZoomRotateHandler.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._el.addEventListener(\"touchstart\",this._onStart,!1),this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},TouchZoomRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._el.removeEventListener(\"touchstart\",this._onStart),this._enabled=!1)},TouchZoomRotateHandler.prototype.disableRotation=function(){this._rotationDisabled=!0},TouchZoomRotateHandler.prototype.enableRotation=function(){this._rotationDisabled=!1},TouchZoomRotateHandler.prototype._onStart=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]);this._startVec=e.sub(o),this._startScale=this._map.transform.scale,this._startBearing=this._map.transform.bearing,this._gestureIntent=void 0,this._inertia=[],window.document.addEventListener(\"touchmove\",this._onMove,!1),window.document.addEventListener(\"touchend\",this._onEnd,!1)}},TouchZoomRotateHandler.prototype._onMove=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]),i=e.add(o).div(2),n=e.sub(o),a=n.mag()/this._startVec.mag(),r=this._rotationDisabled?0:180*n.angleWith(this._startVec)/Math.PI,s=this._map;if(this._gestureIntent){var h={duration:0,around:s.unproject(i)};\"rotate\"===this._gestureIntent&&(h.bearing=this._startBearing+r),\"zoom\"!==this._gestureIntent&&\"rotate\"!==this._gestureIntent||(h.zoom=s.transform.scaleZoom(this._startScale*a)),s.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),a,i]),s.easeTo(h,{originalEvent:t})}else{var u=Math.abs(1-a)>significantScaleThreshold;Math.abs(r)>significantRotateThreshold?this._gestureIntent=\"rotate\":u&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._startVec=n,this._startScale=s.transform.scale,this._startBearing=s.transform.bearing)}t.preventDefault()}},TouchZoomRotateHandler.prototype._onEnd=function(t){window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onEnd),this._drainInertiaBuffer();var e=this._inertia,o=this._map;if(e.length<2)return void o.snapToNorth({},{originalEvent:t});var i=e[e.length-1],n=e[0],a=o.transform.scaleZoom(this._startScale*i[1]),r=o.transform.scaleZoom(this._startScale*n[1]),s=a-r,h=(i[0]-n[0])/1e3,u=i[2];if(0===h||a===r)return void o.snapToNorth({},{originalEvent:t});var l=s*inertiaLinearity/h;Math.abs(l)>inertiaMaxSpeed&&(l=l>0?inertiaMaxSpeed:-inertiaMaxSpeed);var d=1e3*Math.abs(l/(inertiaDeceleration*inertiaLinearity)),c=a+l*d/2e3;c<0&&(c=0),o.easeTo({zoom:c,duration:d,easing:inertiaEasing,around:this._aroundCenter?o.getCenter():o.unproject(u)},{originalEvent:t})},TouchZoomRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>2&&e-t[0][0]>160;)t.shift()},module.exports=TouchZoomRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],196:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),Hash=function(){util.bindAll([\"_onHashChange\",\"_updateHash\"],this)};Hash.prototype.addTo=function(t){return this._map=t,window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},Hash.prototype.remove=function(){return window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),delete this._map,this},Hash.prototype.getHashString=function(t){var a=this._map.getCenter(),h=Math.round(100*this._map.getZoom())/100,e=Math.max(0,Math.ceil(Math.log(h)/Math.LN2)),n=Math.round(a.lng*Math.pow(10,e))/Math.pow(10,e),o=Math.round(a.lat*Math.pow(10,e))/Math.pow(10,e),i=this._map.getBearing(),s=this._map.getPitch(),r=\"\";return r+=t?\"#/\"+n+\"/\"+o+\"/\"+h:\"#\"+h+\"/\"+o+\"/\"+n,(i||s)&&(r+=\"/\"+Math.round(10*i)/10),s&&(r+=\"/\"+Math.round(s)),r},Hash.prototype._onHashChange=function(){var t=window.location.hash.replace(\"#\",\"\").split(\"/\");return t.length>=3&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0),pitch:+(t[4]||0)}),!0)},Hash.prototype._updateHash=function(){var t=this.getHashString();window.history.replaceState(\"\",\"\",t)},module.exports=Hash;\n},{\"../util/util\":223,\"../util/window\":204}],197:[function(_dereq_,module,exports){\n\"use strict\";function removeNode(t){t.parentNode&&t.parentNode.removeChild(t)}var util=_dereq_(\"../util/util\"),browser=_dereq_(\"../util/browser\"),window=_dereq_(\"../util/window\"),ref=_dereq_(\"../util/window\"),HTMLImageElement=ref.HTMLImageElement,DOM=_dereq_(\"../util/dom\"),ajax=_dereq_(\"../util/ajax\"),Style=_dereq_(\"../style/style\"),AnimationLoop=_dereq_(\"../style/animation_loop\"),Painter=_dereq_(\"../render/painter\"),Transform=_dereq_(\"../geo/transform\"),Hash=_dereq_(\"./hash\"),bindHandlers=_dereq_(\"./bind_handlers\"),Camera=_dereq_(\"./camera\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),AttributionControl=_dereq_(\"./control/attribution_control\"),LogoControl=_dereq_(\"./control/logo_control\"),isSupported=_dereq_(\"mapbox-gl-supported\");_dereq_(\"./events\");var defaultMinZoom=0,defaultMaxZoom=22,defaultOptions={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:defaultMinZoom,maxZoom:defaultMaxZoom,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,transformRequest:null},Map=function(t){function e(e){var o=this;if(e=util.extend({},defaultOptions,e),null!=e.minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var r=new Transform(e.minZoom,e.maxZoom,e.renderWorldCopies);t.call(this,r,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles;var i=e.transformRequest;if(this._transformRequest=i?function(t,e){return i(t,e)||{url:t}}:function(t){return{url:t}},\"string\"==typeof e.container){var s=window.document.getElementById(e.container);if(!s)throw new Error(\"Container '\"+e.container+\"' not found.\");this._container=s}else this._container=e.container;this.animationLoop=new AnimationLoop,e.maxBounds&&this.setMaxBounds(e.maxBounds),util.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\",\"_update\",\"_render\",\"_onData\",\"_onDataLoading\"],this),this._setupContainer(),this._setupPainter(),this.on(\"move\",this._update.bind(this,!1)),this.on(\"zoom\",this._update.bind(this,!0)),this.on(\"moveend\",function(){o.animationLoop.set(300),o._rerender()}),void 0!==window&&(window.addEventListener(\"online\",this._onWindowOnline,!1),window.addEventListener(\"resize\",this._onWindowResize,!1)),bindHandlers(this,e),this._hash=e.hash&&(new Hash).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),this._classes=[],this.resize(),e.classes&&this.setClasses(e.classes),e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new AttributionControl),this.addControl(new LogoControl,e.logoPosition),this.on(\"style.load\",function(){this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this.style.update(this._classes,{transition:!1})}),this.on(\"data\",this._onData),this.on(\"dataloading\",this._onDataLoading)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var o={showTileBoundaries:{},showCollisionBoxes:{},showOverdrawInspector:{},repaint:{},vertices:{}};return e.prototype.addControl=function(t,e){void 0===e&&t.getDefaultPosition&&(e=t.getDefaultPosition()),void 0===e&&(e=\"top-right\");var o=t.onAdd(this),r=this._controlPositions[e];return-1!==e.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this},e.prototype.removeControl=function(t){return t.onRemove(this),this},e.prototype.addClass=function(t,e){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0||\"\"===t?this:(this._classes.push(t),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.removeClass=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");var o=this._classes.indexOf(t);return o<0||\"\"===t?this:(this._classes.splice(o,1),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.setClasses=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");for(var o={},r=0;r<t.length;r++)\"\"!==t[r]&&(o[t[r]]=!0);return this._classes=Object.keys(o),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0)},e.prototype.hasClass=function(t){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0},e.prototype.getClasses=function(){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes},e.prototype.resize=function(){var t=this._containerDimensions(),e=t[0],o=t[1];return this._resizeCanvas(e,o),this.transform.resize(e,o),this.painter.resize(e,o),this.fire(\"movestart\").fire(\"move\").fire(\"resize\").fire(\"moveend\")},e.prototype.getBounds=function(){var t=new LngLatBounds(this.transform.pointLocation(new Point(0,this.transform.height)),this.transform.pointLocation(new Point(this.transform.width,0)));return(this.transform.angle||this.transform.pitch)&&(t.extend(this.transform.pointLocation(new Point(this.transform.size.x,0))),t.extend(this.transform.pointLocation(new Point(0,this.transform.size.y)))),t},e.prototype.getMaxBounds=function(){return this.transform.latRange&&2===this.transform.latRange.length&&this.transform.lngRange&&2===this.transform.lngRange.length?new LngLatBounds([this.transform.lngRange[0],this.transform.latRange[0]],[this.transform.lngRange[1],this.transform.latRange[1]]):null},e.prototype.setMaxBounds=function(t){if(t){var e=LngLatBounds.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null!==t&&void 0!==t||(this.transform.lngRange=null,this.transform.latRange=null,this._update());return this},e.prototype.setMinZoom=function(t){if((t=null===t||void 0===t?defaultMinZoom:t)>=defaultMinZoom&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between \"+defaultMinZoom+\" and the current maxZoom, inclusive\")},e.prototype.getMinZoom=function(){return this.transform.minZoom},e.prototype.setMaxZoom=function(t){if((t=null===t||void 0===t?defaultMaxZoom:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},e.prototype.getMaxZoom=function(){return this.transform.maxZoom},e.prototype.project=function(t){return this.transform.locationPoint(LngLat.convert(t))},e.prototype.unproject=function(t){return this.transform.pointLocation(Point.convert(t))},e.prototype.on=function(e,o,r){var i=this;if(void 0===r)return t.prototype.on.call(this,e,o);var s=function(){if(\"mouseenter\"===e||\"mouseover\"===e){var t=!1;return{layer:o,listener:r,delegates:{mousemove:function(s){var n=i.getLayer(o)?i.queryRenderedFeatures(s.point,{layers:[o]}):[];n.length?t||(t=!0,r.call(i,util.extend({features:n},s,{type:e}))):t=!1},mouseout:function(){t=!1}}}}if(\"mouseleave\"===e||\"mouseout\"===e){var s=!1;return{layer:o,listener:r,delegates:{mousemove:function(t){(i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[]).length?s=!0:s&&(s=!1,r.call(i,util.extend({},t,{type:e})))},mouseout:function(t){s&&(s=!1,r.call(i,util.extend({},t,{type:e})))}}}}var n=function(t){var e=i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[];e.length&&r.call(i,util.extend({features:e},t))};return{layer:o,listener:r,delegates:(a={},a[e]=n,a)};var a}();this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(s);for(var n in s.delegates)i.on(n,s.delegates[n]);return this},e.prototype.off=function(e,o,r){var i=this;if(void 0===r)return t.prototype.off.call(this,e,o);if(this._delegatedListeners&&this._delegatedListeners[e])for(var s=this._delegatedListeners[e],n=0;n<s.length;n++){var a=s[n];if(a.layer===o&&a.listener===r){for(var h in a.delegates)i.off(h,a.delegates[h]);return s.splice(n,1),i}}return this},e.prototype.queryRenderedFeatures=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o,r={};return 2===t.length?(o=arguments[0],r=arguments[1]):1===t.length&&function(t){return t instanceof Point||Array.isArray(t)}(t[0])?o=t[0]:1===t.length&&(r=t[0]),this.style?this.style.queryRenderedFeatures(this._makeQueryGeometry(o),r,this.transform.zoom,this.transform.angle):[]},e.prototype._makeQueryGeometry=function(t){var e=this;void 0===t&&(t=[Point.convert([0,0]),Point.convert([this.transform.width,this.transform.height])]);var o;if(t instanceof Point||\"number\"==typeof t[0]){o=[Point.convert(t)]}else{var r=[Point.convert(t[0]),Point.convert(t[1])];o=[r[0],new Point(r[1].x,r[0].y),r[1],new Point(r[0].x,r[1].y),r[0]]}return o=o.map(function(t){return e.transform.pointCoordinate(t)})},e.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},e.prototype.setStyle=function(t,e){if((!e||!1!==e.diff&&!e.localIdeographFontFamily)&&this.style&&t&&!(t instanceof Style)&&\"string\"!=typeof t)try{return this.style.setState(t)&&this._update(!0),this}catch(t){util.warnOnce(\"Unable to perform style diff: \"+(t.message||t.error||t)+\". Rebuilding the style from scratch.\")}return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.off(\"rotate\",this.style._redoPlacement),this.off(\"pitch\",this.style._redoPlacement),this.off(\"move\",this.style._redoPlacement)),t?(this.style=t instanceof Style?t:new Style(t,this,e||{}),this.style.setEventedParent(this,{style:this.style}),this.on(\"rotate\",this.style._redoPlacement),this.on(\"pitch\",this.style._redoPlacement),this.on(\"move\",this.style._redoPlacement),this):(this.style=null,this)},e.prototype.getStyle=function(){if(this.style)return this.style.serialize()},e.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():util.warnOnce(\"There is no style added to the map.\")},e.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0),this},e.prototype.isSourceLoaded=function(t){var e=this.style&&this.style.sourceCaches[t];return void 0===e?void this.fire(\"error\",{error:new Error(\"There is no source with ID '\"+t+\"'\")}):e.loaded()},e.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var o=t[e],r=o._tiles;for(var i in r){var s=r[i];if(\"loaded\"!==s.state&&\"errored\"!==s.state)return!1}}return!0},e.prototype.addSourceType=function(t,e,o){return this.style.addSourceType(t,e,o)},e.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0),this},e.prototype.getSource=function(t){return this.style.getSource(t)},e.prototype.addImage=function(t,e,o){void 0===o&&(o={});var r=o.pixelRatio;void 0===r&&(r=1);var i=o.sdf;if(void 0===i&&(i=!1),e instanceof HTMLImageElement)e=browser.getImageData(e);else if(void 0===e.width||void 0===e.height)return this.fire(\"error\",{error:new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")});this.style.addImage(t,{data:e,pixelRatio:r,sdf:i})},e.prototype.removeImage=function(t){this.style.removeImage(t)},e.prototype.loadImage=function(t,e){ajax.getImage(this._transformRequest(t,ajax.ResourceType.Image),e)},e.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0),this},e.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0),this},e.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0),this},e.prototype.getLayer=function(t){return this.style.getLayer(t)},e.prototype.setFilter=function(t,e){return this.style.setFilter(t,e),this._update(!0),this},e.prototype.setLayerZoomRange=function(t,e,o){return this.style.setLayerZoomRange(t,e,o),this._update(!0),this},e.prototype.getFilter=function(t){return this.style.getFilter(t)},e.prototype.setPaintProperty=function(t,e,o,r){return this.style.setPaintProperty(t,e,o,r),this._update(!0),this},e.prototype.getPaintProperty=function(t,e,o){return this.style.getPaintProperty(t,e,o)},e.prototype.setLayoutProperty=function(t,e,o){return this.style.setLayoutProperty(t,e,o),this._update(!0),this},e.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},e.prototype.setLight=function(t){return this.style.setLight(t),this._update(!0),this},e.prototype.getLight=function(){return this.style.getLight()},e.prototype.getContainer=function(){return this._container},e.prototype.getCanvasContainer=function(){return this._canvasContainer},e.prototype.getCanvas=function(){return this._canvas},e.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),[t,e]},e.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\");var e=this._canvasContainer=DOM.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=DOM.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.style.position=\"absolute\",this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\");var o=this._containerDimensions();this._resizeCanvas(o[0],o[1]);var r=this._controlContainer=DOM.create(\"div\",\"mapboxgl-control-container\",t),i=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(function(t){i[t]=DOM.create(\"div\",\"mapboxgl-ctrl-\"+t,r)})},e.prototype._resizeCanvas=function(t,e){var o=window.devicePixelRatio||1;this._canvas.width=o*t,this._canvas.height=o*e,this._canvas.style.width=t+\"px\",this._canvas.style.height=e+\"px\"},e.prototype._setupPainter=function(){var t=util.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},isSupported.webGLContextAttributes),e=this._canvas.getContext(\"webgl\",t)||this._canvas.getContext(\"experimental-webgl\",t);if(!e)return void this.fire(\"error\",{error:new Error(\"Failed to initialize WebGL\")});this.painter=new Painter(e,this.transform)},e.prototype._contextLost=function(t){t.preventDefault(),this._frameId&&(browser.cancelFrame(this._frameId),this._frameId=null),this.fire(\"webglcontextlost\",{originalEvent:t})},e.prototype._contextRestored=function(t){this._setupPainter(),this.resize(),this._update(),this.fire(\"webglcontextrestored\",{originalEvent:t})},e.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},e.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender(),this):this},e.prototype._render=function(){return this.style&&this._styleDirty&&(this._styleDirty=!1,this.style.update(this._classes,this._classOptions),this._classOptions=null,this.style._recalculate(this.transform.zoom)),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.rotating,zooming:this.zooming}),this.fire(\"render\"),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(\"load\")),this._frameId=null,this.animationLoop.stopped()||(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty)&&this._rerender(),this},e.prototype.remove=function(){this._hash&&this._hash.remove(),browser.cancelFrame(this._frameId),this._frameId=null,this.setStyle(null),void 0!==window&&(window.removeEventListener(\"resize\",this._onWindowResize,!1),window.removeEventListener(\"online\",this._onWindowOnline,!1));var t=this.painter.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),removeNode(this._canvasContainer),removeNode(this._controlContainer),this._container.classList.remove(\"mapboxgl-map\"),this.fire(\"remove\")},e.prototype._rerender=function(){this.style&&!this._frameId&&(this._frameId=browser.frame(this._render))},e.prototype._onWindowOnline=function(){this._update()},e.prototype._onWindowResize=function(){this._trackResize&&this.stop().resize()._update()},o.showTileBoundaries.get=function(){return!!this._showTileBoundaries},o.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},o.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},o.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,this.style._redoPlacement())},o.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},o.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},o.repaint.get=function(){return!!this._repaint},o.repaint.set=function(t){this._repaint=t,this._update()},o.vertices.get=function(){return!!this._vertices},o.vertices.set=function(t){this._vertices=t,this._update()},e.prototype._onData=function(t){this._update(\"style\"===t.dataType),this.fire(t.dataType+\"data\",t)},e.prototype._onDataLoading=function(t){this.fire(t.dataType+\"dataloading\",t)},Object.defineProperties(e.prototype,o),e}(Camera);module.exports=Map;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../geo/transform\":60,\"../render/painter\":79,\"../style/animation_loop\":150,\"../style/style\":156,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dom\":209,\"../util/util\":223,\"../util/window\":204,\"./bind_handlers\":180,\"./camera\":181,\"./control/attribution_control\":182,\"./control/logo_control\":185,\"./events\":188,\"./hash\":196,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],198:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),smartWrap=_dereq_(\"../util/smart_wrap\"),ref=_dereq_(\"../util/util\"),bindAll=ref.bindAll,Marker=function(t,e){this._offset=Point.convert(e&&e.offset||[0,0]),bindAll([\"_update\",\"_onMapClick\"],this),t||(t=DOM.create(\"div\")),t.classList.add(\"mapboxgl-marker\"),this._element=t,this._popup=null};Marker.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this._update(),this._map.on(\"click\",this._onMapClick),this},Marker.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),delete this._map),DOM.remove(this._element),this._popup&&this._popup.remove(),this},Marker.prototype.getLngLat=function(){return this._lngLat},Marker.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},Marker.prototype.getElement=function(){return this._element},Marker.prototype.setPopup=function(t){return this._popup&&(this._popup.remove(),this._popup=null),t&&(\"offset\"in t.options||(t.options.offset=this._offset),this._popup=t,this._popup.setLngLat(this._lngLat)),this},Marker.prototype._onMapClick=function(t){var e=t.originalEvent.target,p=this._element;this._popup&&(e===p||p.contains(e))&&this.togglePopup()},Marker.prototype.getPopup=function(){return this._popup},Marker.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},Marker.prototype._update=function(t){this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),DOM.setTransform(this._element,\"translate(-50%, -50%) translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px)\"))},module.exports=Marker;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/smart_wrap\":219,\"../util/util\":223,\"@mapbox/point-geometry\":2}],199:[function(_dereq_,module,exports){\n\"use strict\";function normalizeOffset(t){if(t){if(\"number\"==typeof t){var o=Math.round(Math.sqrt(.5*Math.pow(t,2)));return{top:new Point(0,t),\"top-left\":new Point(o,o),\"top-right\":new Point(-o,o),bottom:new Point(0,-t),\"bottom-left\":new Point(o,-o),\"bottom-right\":new Point(-o,-o),left:new Point(t,0),right:new Point(-t,0)}}if(t instanceof Point||Array.isArray(t)){var e=Point.convert(t);return{top:e,\"top-left\":e,\"top-right\":e,bottom:e,\"bottom-left\":e,\"bottom-right\":e,left:e,right:e}}return{top:Point.convert(t.top||[0,0]),\"top-left\":Point.convert(t[\"top-left\"]||[0,0]),\"top-right\":Point.convert(t[\"top-right\"]||[0,0]),bottom:Point.convert(t.bottom||[0,0]),\"bottom-left\":Point.convert(t[\"bottom-left\"]||[0,0]),\"bottom-right\":Point.convert(t[\"bottom-right\"]||[0,0]),left:Point.convert(t.left||[0,0]),right:Point.convert(t.right||[0,0])}}return normalizeOffset(new Point(0,0))}var util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"../util/window\"),smartWrap=_dereq_(\"../util/smart_wrap\"),defaultOptions={closeButton:!0,closeOnClick:!0},Popup=function(t){function o(o){t.call(this),this.options=util.extend(Object.create(defaultOptions),o),util.bindAll([\"_update\",\"_onClickClose\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.addTo=function(t){return this._map=t,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._update(),this},o.prototype.isOpen=function(){return!!this._map},o.prototype.remove=function(){return this._content&&DOM.remove(this._content),this._container&&(DOM.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),delete this._map),this.fire(\"close\"),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._update(),this},o.prototype.setText=function(t){return this.setDOMContent(window.document.createTextNode(t))},o.prototype.setHTML=function(t){var o,e=window.document.createDocumentFragment(),n=window.document.createElement(\"body\");for(n.innerHTML=t;;){if(!(o=n.firstChild))break;e.appendChild(o)}return this.setDOMContent(e)},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype._createContent=function(){this._content&&DOM.remove(this._content),this._content=DOM.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=DOM.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClickClose))},o.prototype._update=function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=DOM.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=DOM.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content)),this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform));var t=this._pos=this._map.project(this._lngLat),o=this.options.anchor,e=normalizeOffset(this.options.offset);if(!o){var n=this._container.offsetWidth,i=this._container.offsetHeight;o=t.y+e.bottom.y<i?[\"top\"]:t.y>this._map.transform.height-i?[\"bottom\"]:[],t.x<n/2?o.push(\"left\"):t.x>this._map.transform.width-n/2&&o.push(\"right\"),o=0===o.length?\"bottom\":o.join(\"-\")}var r=t.add(e[o]).round(),s={top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"},p=this._container.classList;for(var a in s)p.remove(\"mapboxgl-popup-anchor-\"+a);p.add(\"mapboxgl-popup-anchor-\"+o),DOM.setTransform(this._container,s[o]+\" translate(\"+r.x+\"px,\"+r.y+\"px)\")}},o.prototype._onClickClose=function(){this.remove()},o}(Evented);module.exports=Popup;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/evented\":210,\"../util/smart_wrap\":219,\"../util/util\":223,\"../util/window\":204,\"@mapbox/point-geometry\":2}],200:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,util.bindAll([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1)};Actor.prototype.send=function(t,e,r,a,i){var s=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[s]=r),this.target.postMessage({targetMapId:i,sourceMapId:this.mapId,type:t,id:String(s),data:e},a)},Actor.prototype.receive=function(t){var e,r=this,a=t.data,i=a.id;if(!a.targetMapId||this.mapId===a.targetMapId){var s=function(t,e,a){r.target.postMessage({sourceMapId:r.mapId,type:\"<response>\",id:String(i),error:t?String(t):null,data:e},a)};if(\"<response>\"===a.type)e=this.callbacks[a.id],delete this.callbacks[a.id],e&&a.error?e(new Error(a.error)):e&&e(null,a.data);else if(void 0!==a.id&&this.parent[a.type])this.parent[a.type](a.sourceMapId,a.data,s);else if(void 0!==a.id&&this.parent.getWorkerSource){var o=a.type.split(\".\"),p=this.parent.getWorkerSource(a.sourceMapId,o[0]);p[o[1]](a.data,s)}else this.parent[a.type](a.data)}},Actor.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1)},module.exports=Actor;\n},{\"./util\":223}],201:[function(_dereq_,module,exports){\n\"use strict\";function makeRequest(e){var t=new window.XMLHttpRequest;t.open(\"GET\",e.url,!0);for(var r in e.headers)t.setRequestHeader(r,e.headers[r]);return t.withCredentials=\"include\"===e.credentials,t}function sameOrigin(e){var t=window.document.createElement(\"a\");return t.href=e,t.protocol===window.document.location.protocol&&t.host===window.document.location.host}var window=_dereq_(\"./window\"),ResourceType={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};exports.ResourceType=ResourceType,\"function\"==typeof Object.freeze&&Object.freeze(ResourceType);var AJAXError=function(e){function t(t,r){e.call(this,t),this.status=r}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(Error);exports.getJSON=function(e,t){var r=makeRequest(e);return r.setRequestHeader(\"Accept\",\"application/json\"),r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var e;try{e=JSON.parse(r.response)}catch(e){return t(e)}t(null,e)}else t(new AJAXError(r.statusText,r.status))},r.send(),r},exports.getArrayBuffer=function(e,t){var r=makeRequest(e);return r.responseType=\"arraybuffer\",r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){var e=r.response;if(0===e.byteLength&&200===r.status)return t(new Error(\"http status 200 returned without content.\"));r.status>=200&&r.status<300&&r.response?t(null,{data:e,cacheControl:r.getResponseHeader(\"Cache-Control\"),expires:r.getResponseHeader(\"Expires\")}):t(new AJAXError(r.statusText,r.status))},r.send(),r};var transparentPngUrl=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";exports.getImage=function(e,t){return exports.getArrayBuffer(e,function(e,r){if(e)t(e);else if(r){var n=new window.Image,o=window.URL||window.webkitURL;n.onload=function(){t(null,n),o.revokeObjectURL(n.src)};var s=new window.Blob([new Uint8Array(r.data)],{type:\"image/png\"});n.cacheControl=r.cacheControl,n.expires=r.expires,n.src=r.data.byteLength?o.createObjectURL(s):transparentPngUrl}})},exports.getVideo=function(e,t){var r=window.document.createElement(\"video\");r.onloadstart=function(){t(null,r)};for(var n=0;n<e.length;n++){var o=window.document.createElement(\"source\");sameOrigin(e[n])||(r.crossOrigin=\"Anonymous\"),o.src=e[n],r.appendChild(o)}return r};\n},{\"./window\":204}],202:[function(_dereq_,module,exports){\n\"use strict\";var window=_dereq_(\"./window\"),now=window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now.bind(Date),frame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,cancel=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame;module.exports={now:now,frame:function(e){return frame(e)},cancelFrame:function(e){return cancel(e)},timed:function(e,n,t){function a(){if(!i){var r=now();r>=o+n?e.call(t,1):(e.call(t,(r-o)/n),frame(a))}}if(!n)return e.call(t,1),null;var i=!1,o=now();return frame(a),function(){i=!0}},getImageData:function(e){var n=window.document.createElement(\"canvas\"),t=n.getContext(\"2d\");if(!t)throw new Error(\"failed to create canvas 2d context\");return n.width=e.width,n.height=e.height,t.drawImage(e,0,0,e.width,e.height),t.getImageData(0,0,e.width,e.height)},hardwareConcurrency:window.navigator.hardwareConcurrency||4,get devicePixelRatio(){return window.devicePixelRatio},supportsWebp:!1};var webpImgTest=window.document.createElement(\"img\");webpImgTest.onload=function(){module.exports.supportsWebp=!0},webpImgTest.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\";\n},{\"./window\":204}],203:[function(_dereq_,module,exports){\n\"use strict\";var WebWorkify=_dereq_(\"webworkify\"),window=_dereq_(\"../window\"),workerURL=window.URL.createObjectURL(new WebWorkify(_dereq_(\"../../source/worker\"),{bare:!0}));module.exports=function(){return new window.Worker(workerURL)};\n},{\"../../source/worker\":105,\"../window\":204,\"webworkify\":39}],204:[function(_dereq_,module,exports){\n\"use strict\";module.exports=self;\n},{}],205:[function(_dereq_,module,exports){\n\"use strict\";function compareAreas(e,r){return r.area-e.area}var quickselect=_dereq_(\"quickselect\"),calculateSignedArea=_dereq_(\"./util\").calculateSignedArea;module.exports=function(e,r){var a=e.length;if(a<=1)return[e];for(var t,u,c=[],i=0;i<a;i++){var l=calculateSignedArea(e[i]);0!==l&&(e[i].area=Math.abs(l),void 0===u&&(u=l<0),u===l<0?(t&&c.push(t),t=[e[i]]):t.push(e[i]))}if(t&&c.push(t),r>1)for(var n=0;n<c.length;n++)c[n].length<=r||(quickselect(c[n],r,1,c[n].length-1,compareAreas),c[n]=c[n].slice(0,r));return c};\n},{\"./util\":223,\"quickselect\":31}],206:[function(_dereq_,module,exports){\n\"use strict\";var config={API_URL:\"https://api.mapbox.com\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null};module.exports=config;\n},{}],207:[function(_dereq_,module,exports){\n\"use strict\";var DictionaryCoder=function(r){var t=this;this._stringToNumber={},this._numberToString=[];for(var o=0;o<r.length;o++){var i=r[o];t._stringToNumber[i]=o,t._numberToString[o]=i}};DictionaryCoder.prototype.encode=function(r){return this._stringToNumber[r]},DictionaryCoder.prototype.decode=function(r){return this._numberToString[r]},module.exports=DictionaryCoder;\n},{}],208:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=_dereq_(\"./actor\"),Dispatcher=function(t,r){var o=this;this.workerPool=t,this.actors=[],this.currentActor=0,this.id=util.uniqueId();for(var i=this.workerPool.acquire(this.id),e=0;e<i.length;e++){var s=i[e],c=new Actor(s,r,o.id);c.name=\"Worker \"+e,o.actors.push(c)}};Dispatcher.prototype.broadcast=function(t,r,o){o=o||function(){},util.asyncAll(this.actors,function(o,i){o.send(t,r,i)},o)},Dispatcher.prototype.send=function(t,r,o,i,e){return(\"number\"!=typeof i||isNaN(i))&&(i=this.currentActor=(this.currentActor+1)%this.actors.length),this.actors[i].send(t,r,o,e),i},Dispatcher.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},module.exports=Dispatcher;\n},{\"./actor\":200,\"./util\":223}],209:[function(_dereq_,module,exports){\n\"use strict\";function testProp(e){for(var t=0;t<e.length;t++)if(e[t]in docStyle)return e[t];return e[0]}var Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"./window\");exports.create=function(e,t,o){var n=window.document.createElement(e);return t&&(n.className=t),o&&o.appendChild(n),n};var docStyle=window.document.documentElement.style,selectProp=testProp([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]),userSelect;exports.disableDrag=function(){selectProp&&(userSelect=docStyle[selectProp],docStyle[selectProp]=\"none\")},exports.enableDrag=function(){selectProp&&(docStyle[selectProp]=userSelect)};var transformProp=testProp([\"transform\",\"WebkitTransform\"]);exports.setTransform=function(e,t){e.style[transformProp]=t};var suppressClick=function(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener(\"click\",suppressClick,!0)};exports.suppressClick=function(){window.addEventListener(\"click\",suppressClick,!0),window.setTimeout(function(){window.removeEventListener(\"click\",suppressClick,!0)},0)},exports.mousePos=function(e,t){var o=e.getBoundingClientRect();return t=t.touches?t.touches[0]:t,new Point(t.clientX-o.left-e.clientLeft,t.clientY-o.top-e.clientTop)},exports.touchPos=function(e,t){for(var o=e.getBoundingClientRect(),n=[],r=\"touchend\"===t.type?t.changedTouches:t.touches,s=0;s<r.length;s++)n.push(new Point(r[s].clientX-o.left-e.clientLeft,r[s].clientY-o.top-e.clientTop));return n},exports.remove=function(e){e.parentNode&&e.parentNode.removeChild(e)};\n},{\"./window\":204,\"@mapbox/point-geometry\":2}],210:[function(_dereq_,module,exports){\n\"use strict\";function _addEventListener(e,t,n){n[e]=n[e]||[],n[e].push(t)}function _removeEventListener(e,t,n){if(n&&n[e]){var i=n[e].indexOf(t);-1!==i&&n[e].splice(i,1)}}var util=_dereq_(\"./util\"),Evented=function(){};Evented.prototype.on=function(e,t){return this._listeners=this._listeners||{},_addEventListener(e,t,this._listeners),this},Evented.prototype.off=function(e,t){return _removeEventListener(e,t,this._listeners),_removeEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.once=function(e,t){return this._oneTimeListeners=this._oneTimeListeners||{},_addEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.fire=function(e,t){var n=this;if(this.listens(e)){t=util.extend({},t,{type:e,target:this});for(var i=this._listeners&&this._listeners[e]?this._listeners[e].slice():[],s=0;s<i.length;s++)i[s].call(n,t);for(var r=this._oneTimeListeners&&this._oneTimeListeners[e]?this._oneTimeListeners[e].slice():[],o=0;o<r.length;o++)r[o].call(n,t),_removeEventListener(e,r[o],n._oneTimeListeners);this._eventedParent&&this._eventedParent.fire(e,util.extend({},t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData))}else util.endsWith(e,\"error\")&&console.error(t&&t.error||t||\"Empty error event\");return this},Evented.prototype.listens=function(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)},Evented.prototype.setEventedParent=function(e,t){return this._eventedParent=e,this._eventedParentData=t,this},module.exports=Evented;\n},{\"./util\":223}],211:[function(_dereq_,module,exports){\n\"use strict\";function compareMax(e,t){return t.max-e.max}function Cell(e,t,n,o){this.p=new Point(e,t),this.h=n,this.d=pointToPolygonDist(this.p,o),this.max=this.d+this.h*Math.SQRT2}function pointToPolygonDist(e,t){for(var n=!1,o=1/0,r=0;r<t.length;r++)for(var i=t[r],l=0,u=i.length,a=u-1;l<u;a=l++){var s=i[l],p=i[a];s.y>e.y!=p.y>e.y&&e.x<(p.x-s.x)*(e.y-s.y)/(p.y-s.y)+s.x&&(n=!n),o=Math.min(o,distToSegmentSquared(e,s,p))}return(n?1:-1)*Math.sqrt(o)}function getCentroidCell(e){for(var t=0,n=0,o=0,r=e[0],i=0,l=r.length,u=l-1;i<l;u=i++){var a=r[i],s=r[u],p=a.x*s.y-s.x*a.y;n+=(a.x+s.x)*p,o+=(a.y+s.y)*p,t+=3*p}return new Cell(n/t,o/t,0,e)}var Queue=_dereq_(\"tinyqueue\"),Point=_dereq_(\"@mapbox/point-geometry\"),distToSegmentSquared=_dereq_(\"./intersection_tests\").distToSegmentSquared;module.exports=function(e,t,n){void 0===t&&(t=1),void 0===n&&(n=!1);for(var o=1/0,r=1/0,i=-1/0,l=-1/0,u=e[0],a=0;a<u.length;a++){var s=u[a];(!a||s.x<o)&&(o=s.x),(!a||s.y<r)&&(r=s.y),(!a||s.x>i)&&(i=s.x),(!a||s.y>l)&&(l=s.y)}var p=i-o,h=l-r,d=Math.min(p,h),x=d/2,y=new Queue(null,compareMax);if(0===d)return new Point(o,r);for(var g=o;g<i;g+=d)for(var f=r;f<l;f+=d)y.push(new Cell(g+x,f+x,x,e));for(var m=getCentroidCell(e),v=y.length;y.length;){var c=y.pop();(c.d>m.d||!m.d)&&(m=c,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*c.d)/1e4,v)),c.max-m.d<=t||(x=c.h/2,y.push(new Cell(c.p.x-x,c.p.y-x,x,e)),y.push(new Cell(c.p.x+x,c.p.y-x,x,e)),y.push(new Cell(c.p.x-x,c.p.y+x,x,e)),y.push(new Cell(c.p.x+x,c.p.y+x,x,e)),v+=4)}return n&&(console.log(\"num probes: \"+v),console.log(\"best distance: \"+m.d)),m.p};\n},{\"./intersection_tests\":214,\"@mapbox/point-geometry\":2,\"tinyqueue\":33}],212:[function(_dereq_,module,exports){\n\"use strict\";var WorkerPool=_dereq_(\"./worker_pool\"),globalWorkerPool;module.exports=function(){return globalWorkerPool||(globalWorkerPool=new WorkerPool),globalWorkerPool};\n},{\"./worker_pool\":226}],213:[function(_dereq_,module,exports){\n\"use strict\";function createImage(e,t,i){var h=e.width,a=e.height;if(i){if(i.length!==h*a*t)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(h*a*t);return{width:h,height:a,data:i}}function resizeImage(e,t,i){var h=t.width,a=t.height;if(h===e.width&&a===e.height)return e;var r=createImage({width:h,height:a},i);copyImage(e,r,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,h),height:Math.min(e.height,a)},i),e.width=h,e.height=a,e.data=r.data}function copyImage(e,t,i,h,a,r){if(0===a.width||0===a.height)return t;if(a.width>e.width||a.height>e.height||i.x>e.width-a.width||i.y>e.height-a.height)throw new RangeError(\"out of range source coordinates for image copy\");if(a.width>t.width||a.height>t.height||h.x>t.width-a.width||h.y>t.height-a.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var g=e.data,n=t.data,o=0;o<a.height;o++)for(var m=((i.y+o)*e.width+i.x)*r,c=((h.y+o)*t.width+h.x)*r,d=0;d<a.width*r;d++)n[c+d]=g[m+d];return t}var AlphaImage=function(){};AlphaImage.create=function(e,t){return createImage(e,1,t)},AlphaImage.resize=function(e,t){resizeImage(e,t,1)},AlphaImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,1)};var RGBAImage=function(){};RGBAImage.create=function(e,t){return createImage(e,4,t)},RGBAImage.resize=function(e,t){resizeImage(e,t,4)},RGBAImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,4)},module.exports={AlphaImage:AlphaImage,RGBAImage:RGBAImage};\n},{}],214:[function(_dereq_,module,exports){\n\"use strict\";function polygonIntersectsPolygon(n,t){for(var e=0;e<n.length;e++)if(polygonContainsPoint(t,n[e]))return!0;for(var r=0;r<t.length;r++)if(polygonContainsPoint(n,t[r]))return!0;return!!lineIntersectsLine(n,t)}function multiPolygonIntersectsBufferedMultiPoint(n,t,e){for(var r=0;r<n.length;r++)for(var o=n[r],i=0;i<t.length;i++)for(var l=t[i],u=0;u<l.length;u++){var s=l[u];if(polygonContainsPoint(o,s))return!0;if(pointIntersectsBufferedLine(s,o,e))return!0}return!1}function multiPolygonIntersectsMultiPolygon(n,t){if(1===n.length&&1===n[0].length)return multiPolygonContainsPoint(t,n[0][0]);for(var e=0;e<t.length;e++)for(var r=t[e],o=0;o<r.length;o++)if(multiPolygonContainsPoint(n,r[o]))return!0;for(var i=0;i<n.length;i++){for(var l=n[i],u=0;u<l.length;u++)if(multiPolygonContainsPoint(t,l[u]))return!0;for(var s=0;s<t.length;s++)if(lineIntersectsLine(l,t[s]))return!0}return!1}function multiPolygonIntersectsBufferedMultiLine(n,t,e){for(var r=0;r<t.length;r++)for(var o=t[r],i=0;i<n.length;i++){var l=n[i];if(l.length>=3)for(var u=0;u<o.length;u++)if(polygonContainsPoint(l,o[u]))return!0;if(lineIntersectsBufferedLine(l,o,e))return!0}return!1}function lineIntersectsBufferedLine(n,t,e){if(n.length>1){if(lineIntersectsLine(n,t))return!0;for(var r=0;r<t.length;r++)if(pointIntersectsBufferedLine(t[r],n,e))return!0}for(var o=0;o<n.length;o++)if(pointIntersectsBufferedLine(n[o],t,e))return!0;return!1}function lineIntersectsLine(n,t){if(0===n.length||0===t.length)return!1;for(var e=0;e<n.length-1;e++)for(var r=n[e],o=n[e+1],i=0;i<t.length-1;i++){var l=t[i],u=t[i+1];if(lineSegmentIntersectsLineSegment(r,o,l,u))return!0}return!1}function lineSegmentIntersectsLineSegment(n,t,e,r){return isCounterClockwise(n,e,r)!==isCounterClockwise(t,e,r)&&isCounterClockwise(n,t,e)!==isCounterClockwise(n,t,r)}function pointIntersectsBufferedLine(n,t,e){var r=e*e;if(1===t.length)return n.distSqr(t[0])<r;for(var o=1;o<t.length;o++){if(distToSegmentSquared(n,t[o-1],t[o])<r)return!0}return!1}function distToSegmentSquared(n,t,e){var r=t.distSqr(e);if(0===r)return n.distSqr(t);var o=((n.x-t.x)*(e.x-t.x)+(n.y-t.y)*(e.y-t.y))/r;return o<0?n.distSqr(t):o>1?n.distSqr(e):n.distSqr(e.sub(t)._mult(o)._add(t))}function multiPolygonContainsPoint(n,t){for(var e,r,o,i=!1,l=0;l<n.length;l++){e=n[l];for(var u=0,s=e.length-1;u<e.length;s=u++)r=e[u],o=e[s],r.y>t.y!=o.y>t.y&&t.x<(o.x-r.x)*(t.y-r.y)/(o.y-r.y)+r.x&&(i=!i)}return i}function polygonContainsPoint(n,t){for(var e=!1,r=0,o=n.length-1;r<n.length;o=r++){var i=n[r],l=n[o];i.y>t.y!=l.y>t.y&&t.x<(l.x-i.x)*(t.y-i.y)/(l.y-i.y)+i.x&&(e=!e)}return e}var ref=_dereq_(\"./util\"),isCounterClockwise=ref.isCounterClockwise;module.exports={multiPolygonIntersectsBufferedMultiPoint:multiPolygonIntersectsBufferedMultiPoint,multiPolygonIntersectsMultiPolygon:multiPolygonIntersectsMultiPolygon,multiPolygonIntersectsBufferedMultiLine:multiPolygonIntersectsBufferedMultiLine,polygonIntersectsPolygon:polygonIntersectsPolygon,distToSegmentSquared:distToSegmentSquared};\n},{\"./util\":223}],215:[function(_dereq_,module,exports){\n\"use strict\";var unicodeBlockLookup={\"Latin-1 Supplement\":function(n){return n>=128&&n<=255},Arabic:function(n){return n>=1536&&n<=1791},\"Arabic Supplement\":function(n){return n>=1872&&n<=1919},\"Arabic Extended-A\":function(n){return n>=2208&&n<=2303},\"Hangul Jamo\":function(n){return n>=4352&&n<=4607},\"Unified Canadian Aboriginal Syllabics\":function(n){return n>=5120&&n<=5759},\"Unified Canadian Aboriginal Syllabics Extended\":function(n){return n>=6320&&n<=6399},\"General Punctuation\":function(n){return n>=8192&&n<=8303},\"Letterlike Symbols\":function(n){return n>=8448&&n<=8527},\"Number Forms\":function(n){return n>=8528&&n<=8591},\"Miscellaneous Technical\":function(n){return n>=8960&&n<=9215},\"Control Pictures\":function(n){return n>=9216&&n<=9279},\"Optical Character Recognition\":function(n){return n>=9280&&n<=9311},\"Enclosed Alphanumerics\":function(n){return n>=9312&&n<=9471},\"Geometric Shapes\":function(n){return n>=9632&&n<=9727},\"Miscellaneous Symbols\":function(n){return n>=9728&&n<=9983},\"Miscellaneous Symbols and Arrows\":function(n){return n>=11008&&n<=11263},\"CJK Radicals Supplement\":function(n){return n>=11904&&n<=12031},\"Kangxi Radicals\":function(n){return n>=12032&&n<=12255},\"Ideographic Description Characters\":function(n){return n>=12272&&n<=12287},\"CJK Symbols and Punctuation\":function(n){return n>=12288&&n<=12351},Hiragana:function(n){return n>=12352&&n<=12447},Katakana:function(n){return n>=12448&&n<=12543},Bopomofo:function(n){return n>=12544&&n<=12591},\"Hangul Compatibility Jamo\":function(n){return n>=12592&&n<=12687},Kanbun:function(n){return n>=12688&&n<=12703},\"Bopomofo Extended\":function(n){return n>=12704&&n<=12735},\"CJK Strokes\":function(n){return n>=12736&&n<=12783},\"Katakana Phonetic Extensions\":function(n){return n>=12784&&n<=12799},\"Enclosed CJK Letters and Months\":function(n){return n>=12800&&n<=13055},\"CJK Compatibility\":function(n){return n>=13056&&n<=13311},\"CJK Unified Ideographs Extension A\":function(n){return n>=13312&&n<=19903},\"Yijing Hexagram Symbols\":function(n){return n>=19904&&n<=19967},\"CJK Unified Ideographs\":function(n){return n>=19968&&n<=40959},\"Yi Syllables\":function(n){return n>=40960&&n<=42127},\"Yi Radicals\":function(n){return n>=42128&&n<=42191},\"Hangul Jamo Extended-A\":function(n){return n>=43360&&n<=43391},\"Hangul Syllables\":function(n){return n>=44032&&n<=55215},\"Hangul Jamo Extended-B\":function(n){return n>=55216&&n<=55295},\"Private Use Area\":function(n){return n>=57344&&n<=63743},\"CJK Compatibility Ideographs\":function(n){return n>=63744&&n<=64255},\"Arabic Presentation Forms-A\":function(n){return n>=64336&&n<=65023},\"Vertical Forms\":function(n){return n>=65040&&n<=65055},\"CJK Compatibility Forms\":function(n){return n>=65072&&n<=65103},\"Small Form Variants\":function(n){return n>=65104&&n<=65135},\"Arabic Presentation Forms-B\":function(n){return n>=65136&&n<=65279},\"Halfwidth and Fullwidth Forms\":function(n){return n>=65280&&n<=65519}};module.exports=unicodeBlockLookup;\n},{}],216:[function(_dereq_,module,exports){\n\"use strict\";var LRUCache=function(t,e){this.max=t,this.onRemove=e,this.reset()};LRUCache.prototype.reset=function(){var t=this;for(var e in t.data)t.onRemove(t.data[e]);return this.data={},this.order=[],this},LRUCache.prototype.add=function(t,e){if(this.has(t))this.order.splice(this.order.indexOf(t),1),this.data[t]=e,this.order.push(t);else if(this.data[t]=e,this.order.push(t),this.order.length>this.max){var r=this.get(this.order[0]);r&&this.onRemove(r)}return this},LRUCache.prototype.has=function(t){return t in this.data},LRUCache.prototype.keys=function(){return this.order},LRUCache.prototype.get=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},LRUCache.prototype.getWithoutRemoving=function(t){return this.has(t)?this.data[t]:null},LRUCache.prototype.remove=function(t){if(!this.has(t))return this;var e=this.data[t];return delete this.data[t],this.onRemove(e),this.order.splice(this.order.indexOf(t),1),this},LRUCache.prototype.setMaxSize=function(t){var e=this;for(this.max=t;this.order.length>this.max;){var r=e.get(e.order[0]);r&&e.onRemove(r)}return this},module.exports=LRUCache;\n},{}],217:[function(_dereq_,module,exports){\n\"use strict\";function makeAPIURL(r,e){var t=parseUrl(config.API_URL);if(r.protocol=t.protocol,r.authority=t.authority,\"/\"!==t.path&&(r.path=\"\"+t.path+r.path),!config.REQUIRE_ACCESS_TOKEN)return formatUrl(r);if(!(e=e||config.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+help);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+help);return r.params.push(\"access_token=\"+e),formatUrl(r)}function isMapboxURL(r){return 0===r.indexOf(\"mapbox:\")}function replaceTempAccessToken(r){for(var e=0;e<r.length;e++)0===r[e].indexOf(\"access_token=tk.\")&&(r[e]=\"access_token=\"+(config.ACCESS_TOKEN||\"\"))}function parseUrl(r){var e=r.match(urlRe);if(!e)throw new Error(\"Unable to parse URL object\");return{protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function formatUrl(r){var e=r.params.length?\"?\"+r.params.join(\"&\"):\"\";return r.protocol+\"://\"+r.authority+r.path+e}var config=_dereq_(\"./config\"),browser=_dereq_(\"./browser\"),help=\"See https://www.mapbox.com/api-documentation/#access-tokens\";exports.isMapboxURL=isMapboxURL,exports.normalizeStyleURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/styles/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeGlyphsURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/fonts/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeSourceURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/v4/\"+t.authority+\".json\",t.params.push(\"secure\"),makeAPIURL(t,e)},exports.normalizeSpriteURL=function(r,e,t,a){var o=parseUrl(r);return isMapboxURL(r)?(o.path=\"/styles/v1\"+o.path+\"/sprite\"+e+t,makeAPIURL(o,a)):(o.path+=\"\"+e+t,formatUrl(o))};var imageExtensionRe=/(\\.(png|jpg)\\d*)(?=$)/;exports.normalizeTileURL=function(r,e,t){if(!e||!isMapboxURL(e))return r;var a=parseUrl(r),o=browser.devicePixelRatio>=2||512===t?\"@2x\":\"\",p=browser.supportsWebp?\".webp\":\"$1\";return a.path=a.path.replace(imageExtensionRe,\"\"+o+p),replaceTempAccessToken(a.params),formatUrl(a)};var urlRe=/^(\\w+):\\/\\/([^\\/?]*)(\\/[^?]+)?\\??(.+)?/;\n},{\"./browser\":202,\"./config\":206}],218:[function(_dereq_,module,exports){\n\"use strict\";var isChar=_dereq_(\"./is_char_in_unicode_block\");module.exports.allowsIdeographicBreaking=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsIdeographicBreaking(s.charCodeAt(0)))return!1}return!0},module.exports.allowsVerticalWritingMode=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(exports.charHasUprightVerticalOrientation(s.charCodeAt(0)))return!0}return!1},module.exports.allowsLetterSpacing=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsLetterSpacing(s.charCodeAt(0)))return!1}return!0},module.exports.charAllowsLetterSpacing=function(a){return!isChar.Arabic(a)&&(!isChar[\"Arabic Supplement\"](a)&&(!isChar[\"Arabic Extended-A\"](a)&&(!isChar[\"Arabic Presentation Forms-A\"](a)&&!isChar[\"Arabic Presentation Forms-B\"](a))))},module.exports.charAllowsIdeographicBreaking=function(a){return!(a<11904)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yi Radicals\"](a)||!!isChar[\"Yi Syllables\"](a))))))))))))))))))))},exports.charHasUprightVerticalOrientation=function(a){return 746===a||747===a||!(a<4352)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!(!isChar[\"CJK Compatibility Forms\"](a)||a>=65097&&a<=65103)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!(!isChar[\"CJK Symbols and Punctuation\"](a)||a>=12296&&a<=12305||a>=12308&&a<=12319||12336===a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Hangul Compatibility Jamo\"](a)||(!!isChar[\"Hangul Jamo Extended-A\"](a)||(!!isChar[\"Hangul Jamo Extended-B\"](a)||(!!isChar[\"Hangul Jamo\"](a)||(!!isChar[\"Hangul Syllables\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar.Kanbun(a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!(!isChar.Katakana(a)||12540===a)||(!(!isChar[\"Halfwidth and Fullwidth Forms\"](a)||65288===a||65289===a||65293===a||a>=65306&&a<=65310||65339===a||65341===a||65343===a||a>=65371&&a<=65503||65507===a||a>=65512&&a<=65519)||(!(!isChar[\"Small Form Variants\"](a)||a>=65112&&a<=65118||a>=65123&&a<=65126)||(!!isChar[\"Unified Canadian Aboriginal Syllabics\"](a)||(!!isChar[\"Unified Canadian Aboriginal Syllabics Extended\"](a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yijing Hexagram Symbols\"](a)||(!!isChar[\"Yi Syllables\"](a)||!!isChar[\"Yi Radicals\"](a))))))))))))))))))))))))))))))},exports.charHasNeutralVerticalOrientation=function(a){return!(!isChar[\"Latin-1 Supplement\"](a)||167!==a&&169!==a&&174!==a&&177!==a&&188!==a&&189!==a&&190!==a&&215!==a&&247!==a)||(!(!isChar[\"General Punctuation\"](a)||8214!==a&&8224!==a&&8225!==a&&8240!==a&&8241!==a&&8251!==a&&8252!==a&&8258!==a&&8263!==a&&8264!==a&&8265!==a&&8273!==a)||(!!isChar[\"Letterlike Symbols\"](a)||(!!isChar[\"Number Forms\"](a)||(!(!isChar[\"Miscellaneous Technical\"](a)||!(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||9003===a||a>=9085&&a<=9114||a>=9150&&a<=9165||9167===a||a>=9169&&a<=9179||a>=9186&&a<=9215))||(!(!isChar[\"Control Pictures\"](a)||9251===a)||(!!isChar[\"Optical Character Recognition\"](a)||(!!isChar[\"Enclosed Alphanumerics\"](a)||(!!isChar[\"Geometric Shapes\"](a)||(!(!isChar[\"Miscellaneous Symbols\"](a)||a>=9754&&a<=9759)||(!(!isChar[\"Miscellaneous Symbols and Arrows\"](a)||!(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243))||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Private Use Area\"](a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"Small Form Variants\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(8734===a||8756===a||8757===a||a>=9984&&a<=10087||a>=10102&&a<=10131||65532===a||65533===a)))))))))))))))))},exports.charHasRotatedVerticalOrientation=function(a){return!(exports.charHasUprightVerticalOrientation(a)||exports.charHasNeutralVerticalOrientation(a))};\n},{\"./is_char_in_unicode_block\":215}],219:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"../geo/lng_lat\");module.exports=function(n,t,l){if(n=new LngLat(n.lng,n.lat),t){var a=new LngLat(n.lng-360,n.lat),i=new LngLat(n.lng+360,n.lat),o=l.locationPoint(n).distSqr(t);l.locationPoint(a).distSqr(t)<o?n=a:l.locationPoint(i).distSqr(t)<o&&(n=i)}for(;Math.abs(n.lng-l.center.lng)>180;){var e=l.locationPoint(n);if(e.x>=0&&e.y>=0&&e.x<=l.width&&e.y<=l.height)break;n.lng>l.center.lng?n.lng-=360:n.lng+=360}return n};\n},{\"../geo/lng_lat\":58}],220:[function(_dereq_,module,exports){\n\"use strict\";function createStructArrayType(t){var r=JSON.stringify(t);if(structArrayTypeCache[r])return structArrayTypeCache[r];var e=void 0===t.alignment?1:t.alignment,i=0,n=0,a=[\"Uint8\"],s=t.members.map(function(t){a.indexOf(t.type)<0&&a.push(t.type);var r=sizeOf(t.type),s=i=align(i,Math.max(e,r)),o=t.components||1;return n=Math.max(n,r),i+=r*o,{name:t.name,type:t.type,components:o,offset:s}}),o=align(i,Math.max(n,e)),p=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(Struct);p.prototype.alignment=e,p.prototype.size=o;for(var y=0,c=s;y<c.length;y+=1)for(var h=c[y],u=0;u<h.components;u++){var f=h.name;if(h.components>1&&(f+=u),f in p.prototype)throw new Error(f+\" is a reserved name and cannot be used as a member name.\");Object.defineProperty(p.prototype,f,createAccessors(h,u))}var m=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(StructArray);return m.prototype.members=s,m.prototype.StructType=p,m.prototype.bytesPerElement=o,m.prototype.emplaceBack=createEmplaceBack(s,o),m.prototype._usedTypes=a,structArrayTypeCache[r]=m,m}function align(t,r){return Math.ceil(t/r)*r}function sizeOf(t){return viewTypes[t].BYTES_PER_ELEMENT}function getArrayViewName(t){return t.toLowerCase()}function createEmplaceBack(t,r){for(var e=[],i=[],n=\"var i = this.length;\\nthis.resize(this.length + 1);\\n\",a=0,s=t;a<s.length;a+=1){var o=s[a],p=sizeOf(o.type);e.indexOf(p)<0&&(e.push(p),n+=\"var o\"+p.toFixed(0)+\" = i * \"+(r/p).toFixed(0)+\";\\n\");for(var y=0;y<o.components;y++){var c=\"v\"+i.length,h=\"o\"+p.toFixed(0)+\" + \"+(o.offset/p+y).toFixed(0);n+=\"this.\"+getArrayViewName(o.type)+\"[\"+h+\"] = \"+c+\";\\n\",i.push(c)}}return n+=\"return i;\",new Function(i.toString(),n)}function createMemberComponentString(t,r){var e=\"this._pos\"+sizeOf(t.type).toFixed(0),i=(t.offset/sizeOf(t.type)+r).toFixed(0),n=e+\" + \"+i;return\"this._structArray.\"+getArrayViewName(t.type)+\"[\"+n+\"]\"}function createAccessors(t,r){var e=createMemberComponentString(t,r);return{get:new Function(\"return \"+e+\";\"),set:new Function(\"x\",e+\" = x;\")}}module.exports=createStructArrayType;var viewTypes={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Struct=function(t,r){this._structArray=t,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},DEFAULT_CAPACITY=128,RESIZE_MULTIPLIER=5,StructArray=function(t){this.isTransferred=!1,void 0!==t?(this.arrayBuffer=t.arrayBuffer,this.length=t.length,this.capacity=this.arrayBuffer.byteLength/this.bytesPerElement,this._refreshViews()):(this.capacity=-1,this.resize(0))};StructArray.serialize=function(){return{members:this.prototype.members,alignment:this.prototype.StructType.prototype.alignment}},StructArray.prototype.serialize=function(t){return this._trim(),t&&(this.isTransferred=!0,t.push(this.arrayBuffer)),{length:this.length,arrayBuffer:this.arrayBuffer}},StructArray.prototype.get=function(t){return new this.StructType(this,t)},StructArray.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},StructArray.prototype.clear=function(){this.length=0},StructArray.prototype.resize=function(t){if(this.length=t,t>this.capacity){this.capacity=Math.max(t,Math.floor(this.capacity*RESIZE_MULTIPLIER),DEFAULT_CAPACITY),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}},StructArray.prototype._refreshViews=function(){for(var t=this,r=0,e=t._usedTypes;r<e.length;r+=1){var i=e[r];t[getArrayViewName(i)]=new viewTypes[i](t.arrayBuffer)}},StructArray.prototype.toArray=function(t,r){for(var e=this,i=[],n=t;n<r;n++){var a=e.get(n);i.push(a)}return i};var structArrayTypeCache={};\n},{}],221:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"./browser\"),Throttler=function(t,o){this.frequency=t,this.throttledFunction=o,this.lastInvocation=0};Throttler.prototype.invoke=function(){var t=this;if(!this.pendingInvocation){var o=0===this.lastInvocation?0:this.lastInvocation+this.frequency-browser.now();o<=0?(this.lastInvocation=browser.now(),this.throttledFunction()):this.pendingInvocation=setTimeout(function(){t.pendingInvocation=void 0,t.lastInvocation=browser.now(),t.throttledFunction()},o)}},Throttler.prototype.stop=function(){this.pendingInvocation&&(clearTimeout(this.pendingInvocation),this.pendingInvocation=void 0)},module.exports=Throttler;\n},{\"./browser\":202}],222:[function(_dereq_,module,exports){\n\"use strict\";function resolveTokens(e,n){return n.replace(/{([^{}]+)}/g,function(n,r){return r in e?String(e[r]):\"\"})}module.exports=resolveTokens;\n},{}],223:[function(_dereq_,module,exports){\n\"use strict\";var UnitBezier=_dereq_(\"@mapbox/unitbezier\"),Coordinate=_dereq_(\"../geo/coordinate\"),Point=_dereq_(\"@mapbox/point-geometry\");exports.easeCubicInOut=function(r){if(r<=0)return 0;if(r>=1)return 1;var e=r*r,t=e*r;return 4*(r<.5?t:3*(r-e)+t-.75)},exports.bezier=function(r,e,t,n){var o=new UnitBezier(r,e,t,n);return function(r){return o.solve(r)}},exports.ease=exports.bezier(.25,.1,.25,1),exports.clamp=function(r,e,t){return Math.min(t,Math.max(e,r))},exports.wrap=function(r,e,t){var n=t-e,o=((r-e)%n+n)%n+e;return o===e?t:o},exports.asyncAll=function(r,e,t){if(!r.length)return t(null,[]);var n=r.length,o=new Array(r.length),a=null;r.forEach(function(r,i){e(r,function(r,e){r&&(a=r),o[i]=e,0==--n&&t(a,o)})})},exports.values=function(r){var e=[];for(var t in r)e.push(r[t]);return e},exports.keysDifference=function(r,e){var t=[];for(var n in r)n in e||t.push(n);return t},exports.extend=function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];for(var n=0,o=e;n<o.length;n+=1){var a=o[n];for(var i in a)r[i]=a[i]}return r},exports.pick=function(r,e){for(var t={},n=0;n<e.length;n++){var o=e[n];o in r&&(t[o]=r[o])}return t};var id=1;exports.uniqueId=function(){return id++},exports.bindAll=function(r,e){r.forEach(function(r){e[r]&&(e[r]=e[r].bind(e))})},exports.getCoordinatesCenter=function(r){for(var e=1/0,t=1/0,n=-1/0,o=-1/0,a=0;a<r.length;a++)e=Math.min(e,r[a].column),t=Math.min(t,r[a].row),n=Math.max(n,r[a].column),o=Math.max(o,r[a].row);var i=n-e,u=o-t,s=Math.max(i,u),c=Math.max(0,Math.floor(-Math.log(s)/Math.LN2));return new Coordinate((e+n)/2,(t+o)/2,0).zoomTo(c)},exports.endsWith=function(r,e){return-1!==r.indexOf(e,r.length-e.length)},exports.mapObject=function(r,e,t){var n=this,o={};for(var a in r)o[a]=e.call(t||n,r[a],a,r);return o},exports.filterObject=function(r,e,t){var n=this,o={};for(var a in r)e.call(t||n,r[a],a,r)&&(o[a]=r[a]);return o},exports.deepEqual=function(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(var t=0;t<r.length;t++)if(!exports.deepEqual(r[t],e[t]))return!1;return!0}if(\"object\"==typeof r&&null!==r&&null!==e){if(\"object\"!=typeof e)return!1;if(Object.keys(r).length!==Object.keys(e).length)return!1;for(var n in r)if(!exports.deepEqual(r[n],e[n]))return!1;return!0}return r===e},exports.clone=function(r){return Array.isArray(r)?r.map(exports.clone):\"object\"==typeof r&&r?exports.mapObject(r,exports.clone):r},exports.arraysIntersect=function(r,e){for(var t=0;t<r.length;t++)if(e.indexOf(r[t])>=0)return!0;return!1};var warnOnceHistory={};exports.warnOnce=function(r){warnOnceHistory[r]||(\"undefined\"!=typeof console&&console.warn(r),warnOnceHistory[r]=!0)},exports.isCounterClockwise=function(r,e,t){return(t.y-r.y)*(e.x-r.x)>(e.y-r.y)*(t.x-r.x)},exports.calculateSignedArea=function(r){for(var e=0,t=0,n=r.length,o=n-1,a=void 0,i=void 0;t<n;o=t++)a=r[t],i=r[o],e+=(i.x-a.x)*(a.y+i.y);return e},exports.isClosedPolygon=function(r){if(r.length<4)return!1;var e=r[0],t=r[r.length-1];return!(Math.abs(e.x-t.x)>0||Math.abs(e.y-t.y)>0)&&Math.abs(exports.calculateSignedArea(r))>.01},exports.sphericalToCartesian=function(r){var e=r[0],t=r[1],n=r[2];return t+=90,t*=Math.PI/180,n*=Math.PI/180,[e*Math.cos(t)*Math.sin(n),e*Math.sin(t)*Math.sin(n),e*Math.cos(n)]},exports.parseCacheControl=function(r){var e=/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,t={};if(r.replace(e,function(r,e,n,o){var a=n||o;return t[e]=!a||a.toLowerCase(),\"\"}),t[\"max-age\"]){var n=parseInt(t[\"max-age\"],10);isNaN(n)?delete t[\"max-age\"]:t[\"max-age\"]=n}return t};\n},{\"../geo/coordinate\":57,\"@mapbox/point-geometry\":2,\"@mapbox/unitbezier\":5}],224:[function(_dereq_,module,exports){\n\"use strict\";var Feature=function(e,t,r,o){this.type=\"Feature\",this._vectorTileFeature=e,e._z=t,e._x=r,e._y=o,this.properties=e.properties,null!=e.id&&(this.id=e.id)},prototypeAccessors={geometry:{}};prototypeAccessors.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},prototypeAccessors.geometry.set=function(e){this._geometry=e},Feature.prototype.toJSON=function(){var e=this,t={geometry:this.geometry};for(var r in e)\"_geometry\"!==r&&\"_vectorTileFeature\"!==r&&(t[r]=e[r]);return t},Object.defineProperties(Feature.prototype,prototypeAccessors),module.exports=Feature;\n},{}],225:[function(_dereq_,module,exports){\n\"use strict\";var scriptDetection=_dereq_(\"./script_detection\");module.exports=function(t){for(var o=\"\",e=0;e<t.length;e++){var r=t.charCodeAt(e+1)||null,l=t.charCodeAt(e-1)||null;(!r||!scriptDetection.charHasRotatedVerticalOrientation(r)||module.exports.lookup[t[e+1]])&&(!l||!scriptDetection.charHasRotatedVerticalOrientation(l)||module.exports.lookup[t[e-1]])&&module.exports.lookup[t[e]]?o+=module.exports.lookup[t[e]]:o+=t[e]}return o},module.exports.lookup={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};\n},{\"./script_detection\":218}],226:[function(_dereq_,module,exports){\n\"use strict\";var WebWorker=_dereq_(\"./web_worker\"),WorkerPool=function(){this.active={}};WorkerPool.prototype.acquire=function(r){var e=this;if(!this.workers){var o=_dereq_(\"../\").workerCount;for(this.workers=[];this.workers.length<o;)e.workers.push(new WebWorker)}return this.active[r]=!0,this.workers.slice()},WorkerPool.prototype.release=function(r){delete this.active[r],0===Object.keys(this.active).length&&(this.workers.forEach(function(r){r.terminate()}),this.workers=null)},module.exports=WorkerPool;\n},{\"../\":63,\"./web_worker\":203}]},{},[63])(63)\n});\n\n\n//# sourceMappingURL=mapbox-gl.js.map\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_mapbox_gl__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_mapbox_gl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_mapbox_gl__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Geshem_vue__ = __webpack_require__(7);\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_mapbox_gl___default.a.accessToken = 'pk.eyJ1IjoieXV2YWRtIiwiYSI6ImNpcnMxbzBuaTAwZWdoa25oczlzZmkwbHcifQ.UHtLngbKm9O8945pJm23Nw';\n\nvar vm = new __WEBPACK_IMPORTED_MODULE_1_vue__[\"a\" /* default */]({\n el: '#app',\n render: function render(h) {\n return h(__WEBPACK_IMPORTED_MODULE_2__Geshem_vue__[\"a\" /* default */]);\n }\n});\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*!\n * Vue.js v2.5.2\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n/* */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind, faster than native\n */\nfunction bind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n // record original fn length\n boundFn._length = fn.length;\n return boundFn\n}\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: \"production\" !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: \"production\" !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\nvar emptyObject = Object.freeze({});\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (false) {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.functionalContext = undefined;\n this.functionalOptions = undefined;\n this.functionalScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode, deep) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.isCloned = true;\n if (deep && vnode.children) {\n cloned.children = cloneVNodes(vnode.children);\n }\n return cloned\n}\n\nfunction cloneVNodes (vnodes, deep) {\n var len = vnodes.length;\n var res = new Array(len);\n for (var i = 0; i < len; i++) {\n res[i] = cloneVNode(vnodes[i], deep);\n }\n return res\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);[\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n]\n.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\nvar observerState = {\n shouldConvert: true\n};\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n observerState.shouldConvert &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (false) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (hasOwn(target, key)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n \"production\" !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n \"production\" !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (false) {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this) : parentVal\n )\n }\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n \"production\" !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn.call(this, parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n \"production\" !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (false) {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && \"production\" !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n var lower = key.toLowerCase();\n if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + key\n );\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (false) {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (false) {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (false) {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (false) {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (false) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // handle boolean props\n if (isType(Boolean, prop.type)) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldConvert = observerState.shouldConvert;\n observerState.shouldConvert = true;\n observe(value);\n observerState.shouldConvert = prevShouldConvert;\n }\n if (false) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (false) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isType (type, fn) {\n if (!Array.isArray(fn)) {\n return getType(fn) === getType(type)\n }\n for (var i = 0, len = fn.length; i < len; i++) {\n if (getType(fn[i]) === getType(type)) {\n return true\n }\n }\n /* istanbul ignore next */\n return false\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (false) {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if (inBrowser && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both micro and macro tasks.\n// In < 2.4 we used micro tasks everywhere, but there are some scenarios where\n// micro tasks have too high a priority and fires in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using macro tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use micro task by default, but expose a way to force macro task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) Task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine MicroTask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a Task instead of a MicroTask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (false) {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (false) {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' &&\n Proxy.toString().match(/native code/);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n \"production\" !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (false) {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n \"production\" !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n false\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (arguments.length === 1) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (false) {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n var defaultSlot = [];\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.functionalContext === context) &&\n data && data.slot != null\n ) {\n var name = child.data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children);\n } else {\n slot.push(child);\n }\n } else {\n defaultSlot.push(child);\n }\n }\n // ignore whitespace\n if (!defaultSlot.every(isWhitespace)) {\n slots.default = defaultSlot;\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return node.isComment || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (false) {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (false) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n vm._watcher = new Watcher(vm, updateComponent, noop);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (false) {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = (parentVnode.data && parentVnode.data.attrs) || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n observerState.shouldConvert = false;\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n props[key] = validateProp(key, vm.$options.props, propsData, vm);\n }\n observerState.shouldConvert = true;\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n if (listeners) {\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n }\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (false) {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (false) {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (false) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options\n) {\n this.vm = vm;\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = false\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n \"production\" !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nvar seenObjects = new _Set();\nfunction traverse (val) {\n seenObjects.clear();\n _traverse(val, seenObjects);\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n observerState.shouldConvert = isRoot;\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (false) {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n observerState.shouldConvert = true;\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n \"production\" !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (false) {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n \"production\" !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (false) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (false) {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (false) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (false) {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n keyOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(keyOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (false) {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n observerState.shouldConvert = false;\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (false) {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n observerState.shouldConvert = true;\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && provideKey in source._provided) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (false) {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (false) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n return scopedSlotFn(props) || fallback\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes && \"production\" !== 'production') {\n slotNodes._rendered && warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n slotNodes._rendered = true;\n }\n return slotNodes || fallback\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInAlias,\n eventKeyName\n) {\n var keyCodes = config.keyCodes[key] || builtInAlias;\n if (keyCodes) {\n if (Array.isArray(keyCodes)) {\n return keyCodes.indexOf(eventKeyCode) === -1\n } else {\n return keyCodes !== eventKeyCode\n }\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n \"production\" !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n // static trees can be rendered once and cached on the contructor options\n // so every instance shares the same cached trees\n var renderFns = this.$options.staticRenderFns;\n var cached = renderFns.cached || (renderFns.cached = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree by doing a shallow clone.\n if (tree && !isInFor) {\n return Array.isArray(tree)\n ? cloneVNodes(tree)\n : cloneVNode(tree)\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = renderFns[index].call(this._renderProxy, null, this);\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n \"production\" !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm = Object.create(parent);\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode) {\n vnode.functionalScopeId = options._scopeId;\n vnode.functionalContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n vnode.functionalContext = contextVm;\n vnode.functionalOptions = options;\n if (data.slot) {\n (vnode.data || (vnode.data = {})).slot = data.slot;\n }\n }\n\n return vnode\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n// hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n } else if (vnode.data.keepAlive) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (false) {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // merge component management hooks onto the placeholder node\n mergeHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var vnodeComponentOptions = vnode.componentOptions;\n var options = {\n _isComponent: true,\n parent: parent,\n propsData: vnodeComponentOptions.propsData,\n _componentTag: vnodeComponentOptions.tag,\n _parentVnode: vnode,\n _parentListeners: vnodeComponentOptions.listeners,\n _renderChildren: vnodeComponentOptions.children,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnodeComponentOptions.Ctor(options)\n}\n\nfunction mergeHooks (data) {\n if (!data.hook) {\n data.hook = {};\n }\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var fromParent = data.hook[key];\n var ours = componentVNodeHooks[key];\n data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n }\n}\n\nfunction mergeHook$1 (one, two) {\n return function (a, b, c, d) {\n one(a, b, c, d);\n two(a, b, c, d);\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n \"production\" !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (false\n ) {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (isDef(vnode)) {\n if (ns) { applyNS(vnode, ns); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (false) {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (vm._isMounted) {\n // if the parent didn't update, the slot nodes will be the ones from\n // last render. They need to be cloned to ensure \"freshness\" for this render.\n for (var key in vm.$slots) {\n var slot = vm.$slots[key];\n if (slot._rendered) {\n vm.$slots[key] = cloneVNodes(slot, true /* deep */);\n }\n }\n }\n\n vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (false) {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (false) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$1 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$1++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (false) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (false) {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (false) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n opts.parent = options.parent;\n opts.propsData = options.propsData;\n opts._parentVnode = options._parentVnode;\n opts._parentListeners = options._parentListeners;\n opts._renderChildren = options._renderChildren;\n opts._componentTag = options._componentTag;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue$3 (options) {\n if (false\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue$3);\nstateMixin(Vue$3);\neventsMixin(Vue$3);\nlifecycleMixin(Vue$3);\nrenderMixin(Vue$3);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (false) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (false) {\n if (type === 'component' && config.isReservedTag(id)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + id\n );\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && cached$$1 !== current) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n watch: {\n include: function include (val) {\n pruneCache(this, function (name) { return matches(val, name); });\n },\n exclude: function exclude (val) {\n pruneCache(this, function (name) { return !matches(val, name); });\n }\n },\n\n render: function render () {\n var vnode = getFirstComponentChild(this.$slots.default);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n if (name && (\n (this.include && !matches(this.include, name)) ||\n (this.exclude && matches(this.exclude, name))\n )) {\n return vnode\n }\n\n var ref = this;\n var cache = ref.cache;\n var keys = ref.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (false) {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue$3);\n\nObject.defineProperty(Vue$3.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue$3.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\nVue$3.version = '2.5.2';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n \"production\" !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setAttribute (node, key, val) {\n node.setAttribute(key, val);\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetAttribute: setAttribute\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!key) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n var inPre = 0;\n function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (false) {\n if (data && data.pre) {\n inPre++;\n }\n if (\n !inPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(tag)\n : ignore === tag\n })\n ) &&\n config.isUnknownElement(tag)\n ) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (false) {\n inPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.functionalScopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.functionalContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n } else {\n vnodeToMove = oldCh[idxInOld];\n /* istanbul ignore if */\n if (false) {\n warn(\n 'It seems there are duplicate keys that is causing an update error. ' +\n 'Make sure each v-for item has a unique key.'\n );\n }\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var bailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue) {\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.elm = elm;\n vnode.isAsyncPlaceholder = true;\n return true\n }\n if (false) {\n if (!assertNodeMatch(elm, vnode)) {\n return false\n }\n }\n vnode.elm = elm;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (false\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (false\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n for (var key in data) {\n if (!isRenderedModule(key)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode) {\n if (isDef(vnode.tag)) {\n return (\n vnode.tag.indexOf('vue-component') === 0 ||\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (false) {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n if (isDef(vnode.parent)) {\n // component root element replaced.\n // update parent placeholder node element, recursively\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE9 || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n false\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n // check capture modifier\n if (modifiers && modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers && modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers && modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n var events;\n if (modifiers && modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n var newHandler = { value: value, modifiers: modifiers };\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\n\n\nfunction parseModel (val) {\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (false) {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (false) {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + value + \"=$$a.concat([$$v]))}\" +\n \"else{$$i>-1&&(\" + value + \"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isDirty(elm, checkVal) ||\n isInputChanged(elm, checkVal)\n ))\n}\n\nfunction isDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isInputChanged (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers) && modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (isDef(modifiers) && modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (false) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n addTransitionClass(el, toClass);\n removeTransitionClass(el, startClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (false) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n addTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar model$1 = {\n inserted: function inserted (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n if (!isAndroid) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n }\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n \"production\" !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (value === oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: model$1,\n show: show\n};\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$options._renderChildren;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (false) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (false\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (false) {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue$3.config.mustUseProp = mustUseProp;\nVue$3.config.isReservedTag = isReservedTag;\nVue$3.config.isReservedAttr = isReservedAttr;\nVue$3.config.getTagNamespace = getTagNamespace;\nVue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue$3.options.directives, platformDirectives);\nextend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\nVue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nVue$3.nextTick(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue$3);\n } else if (false) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (false\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n}, 0);\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nfunction shouldDecode (content, encoded) {\n var div = document.createElement('div');\n div.innerHTML = \"<div a=\\\"\" + content + \"\\\"/>\";\n return div.innerHTML.indexOf(encoded) > 0\n}\n\n// #3663\n// IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? shouldDecode('\\n', '&#10;') : false;\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push(JSON.stringify(text.slice(lastIndex)));\n }\n return tokens.join('+')\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (false) {\n var expression = parseText(staticClass, options.delimiters);\n if (expression) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (false) {\n var expression = parseText(staticStyle, options.delimiters);\n if (expression) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\nvar comment = /^<!--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd));\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(lastTag, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!--([\\s\\S]*?)-->/g, '$1')\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (false) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n attrs[i] = {\n name: args[1],\n value: decodeAttr(\n value,\n options.shouldDecodeNewlines\n )\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (false\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /(.*?)\\s+(?:in|of)\\s+(.*)/;\nvar forIteratorRE = /\\((\\{[^}]*\\}|[^,]*),([^,]*)(?:,([^,]*))?\\)/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(he.decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function endPre (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldKeepComment: options.comments,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n \"production\" !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n // element-scope stuff\n processElement(element, options);\n }\n\n function checkRootConstraints (el) {\n if (false) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (false) {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n endPre(element);\n }\n // apply post-transforms\n for (var i$1 = 0; i$1 < postTransforms.length; i$1++) {\n postTransforms[i$1](element, options);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n endPre(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (false) {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var expression;\n if (!inVPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: expression,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n },\n comment: function comment (text) {\n currentParent.children.push({\n type: 3,\n text: text,\n isComment: true\n });\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (element, options) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !element.attrsList.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (false) {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) {\n \"production\" !== 'production' && warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n return\n }\n el.for = inMatch[2].trim();\n var alias = inMatch[1].trim();\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n el.alias = iteratorMatch[1].trim();\n el.iterator1 = iteratorMatch[2].trim();\n if (iteratorMatch[3]) {\n el.iterator2 = iteratorMatch[3].trim();\n }\n } else {\n el.alias = alias;\n }\n }\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (false) {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (false) {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (false) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (false) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n el.slotScope = slotScope;\n }\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (!el.slotScope) {\n addAttr(el, 'slot', slotTarget);\n }\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (false) {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (false) {\n var expression = parseText(value, delimiters);\n if (expression) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n false\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\n/**\n * Expand input[v-model] with dyanmic type bindings into v-if-else chains\n * Turn this:\n * <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n * <input v-else :type=\"type\" v-model=\"data[type]\">\n */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (map['v-model'] && (map['v-bind:type'] || map[':type'])) {\n var typeBinding = getBindingAttr(el, 'type');\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nfunction addRawAttr (el, name, value) {\n el.attrsMap[name] = value;\n el.attrsList.push({ name: name, value: value });\n}\n\nvar model$2 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$2\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/;\n\n// keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n var handler = events[name];\n // #5330: warn click.right, since right clicks do not actually fire click events.\n if (false\n ) {\n warn(\n \"Use \\\"contextmenu\\\" instead of \\\"click.right\\\" since right clicks \" +\n \"do not actually fire \\\"click\\\" events.\"\n );\n }\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, handler)) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n return isMethodPath || isFunctionExpression\n ? handler.value\n : (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? handler.value + '($event)'\n : isFunctionExpression\n ? (\"(\" + (handler.value) + \")($event)\")\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var code = keyCodes[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(code)) + \",\" +\n \"$event.key)\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (false) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data = el.plain ? undefined : genData$2(el, state);\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n \"production\" !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (false\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, state.warn)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (false) {\n state.warn('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n slots,\n state\n) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n return genScopedSlot(key, slots[key], state)\n }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (\n key,\n el,\n state\n) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el, state)\n }\n var fn = \"function(\" + (String(el.slotScope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if\n ? ((el.if) + \"?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n return (\"{key:\" + key + \",fn:\" + fn + \"}\")\n}\n\nfunction genForScopedSlot (\n key,\n el,\n state\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el, state)) +\n '})'\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return (altGenElement || genElement)(el$1, state)\n }\n var normalizationType = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// check valid identifier for v-for\nvar identRE = /[A-Za-z_$][\\w$]*/;\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (ident, type, text, errors) {\n if (typeof ident === 'string' && !identRE.test(ident)) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim())\n );\n } else {\n errors.push(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\"\n );\n }\n }\n}\n\n/* */\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (false) {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (false) {\n if (compiled.errors && compiled.errors.length) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (false) {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (false) {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n optimize(ast, options);\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue$3.prototype.$mount;\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n \"production\" !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (false) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (false) {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (false) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (false) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue$3.compile = compileToFunctions;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Vue$3);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(0), __webpack_require__(4).setImmediate))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(5);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(6)))\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Geshem_vue__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7d220ade_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Geshem_vue__ = __webpack_require__(16);\nfunction injectStyle (ssrContext) {\n __webpack_require__(8)\n}\nvar normalizeComponent = __webpack_require__(13)\n/* script */\n\n/* template */\n\n/* template functional */\n var __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Geshem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7d220ade_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Geshem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(9);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(11)(\"1cc1a7d4\", content, true);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(10)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \"#geshem #datetime{position:absolute;margin:20px 0 0 20px;color:#fff;font-family:monospace}#geshem #datetime #date{font-size:1.4em}#geshem #datetime #time{font-size:1.8em}#geshem #slider{position:absolute;bottom:8vh;width:30vw;margin-left:35vw}@media only screen and (max-device-width:812px){#geshem #slider{width:80vw;margin-left:8vw}}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(12)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction) {\n isProduction = _isProduction\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[data-vue-ssr-id~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_slider_component__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_slider_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_slider_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_mapbox_gl__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_mapbox_gl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_mapbox_gl__);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n name: 'geshem',\n components: {\n 'vue-slider': __WEBPACK_IMPORTED_MODULE_0_vue_slider_component___default.a\n },\n data: function data() {\n var _ref;\n\n return {\n imgs: window.imgs,\n res: 280,\n slider: 7,\n rasterCoords: {\n 140: [[33.35317413, 33.27232471], [36.32243686, 33.27232471], [36.32243686, 30.72293428], [33.35317413, 30.72293428]],\n 280: [[31.93095218, 34.5156862], [37.86644267, 34.5156862], [37.86644267, 29.42911589], [31.93095218, 29.42911589]]\n },\n map: new __WEBPACK_IMPORTED_MODULE_1_mapbox_gl___default.a.Map((_ref = {\n container: 'map',\n style: 'mapbox://styles/mapbox/dark-v9'\n }, _defineProperty(_ref, 'container', 'map'), _defineProperty(_ref, 'maxZoom', 10), _defineProperty(_ref, 'minZoom', 5), _defineProperty(_ref, 'zoom', 6.3), _defineProperty(_ref, 'center', [35, 31.9]), _defineProperty(_ref, 'hash', false), _ref))\n };\n },\n computed: {\n date: function date() {\n var d = this.imgs[this.res][7 - this.slider].substr(0, 8);\n return d.substr(6, 2) + '-' + d.substr(4, 2) + '-' + d.substr(0, 4);\n },\n time: function time() {\n var t = this.imgs[this.res][7 - this.slider].substr(9, 6);\n return t.substr(0, 2) + ':' + t.substr(2, 2);\n },\n curImg: function curImg() {\n return 7 - this.slider;\n }\n },\n created: function created() {\n var vm = this;\n this.map.on('style.load', function () {\n var i = 0;\n while (i < vm.imgs['140'].length) {\n vm.addRadarSource('140', i, vm.imgs['140'][i++]);\n }\n var i = 0;\n while (i < vm.imgs['280'].length) {\n vm.addRadarSource('280', i, vm.imgs['280'][i++]);\n }\n vm.addRadarLayer('280', 0);\n });\n this.map.on('zoom', function () {\n var zoomIn = vm.map.getZoom() > 7;\n var from = zoomIn ? '280' : '140';\n var to = zoomIn ? '140' : '280';\n if (to != vm.res) {\n console.log('Zoom event from ' + from + ' to ' + to);\n vm.removeRadarLayer(from, vm.curImg);\n vm.addRadarLayer(to, vm.curImg);\n vm.res = to;\n }\n });\n },\n methods: {\n addRadarSource: function addRadarSource(res, i, url) {\n this.map.addSource('radar-' + res + '-' + i, {\n type: 'image',\n url: '/static/img/' + url,\n coordinates: this.rasterCoords[res]\n });\n },\n addRadarLayer: function addRadarLayer(res, i) {\n this.map.addLayer({\n id: 'radar-' + res + '-' + i,\n source: 'radar-' + res + '-' + i,\n type: 'raster',\n paint: {\n 'raster-opacity': 0.85\n }\n });\n },\n removeRadarLayer: function removeRadarLayer(res, i) {\n this.map.removeLayer('radar-' + res + '-' + i);\n }\n },\n watch: {\n slider: function slider(to, from) {\n this.removeRadarLayer(this.res, 7 - from);\n this.addRadarLayer(this.res, 7 - to);\n }\n }\n});\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(t,e){ true?module.exports=e():\"function\"==typeof define&&define.amd?define(\"vue-slider-component\",[],e):\"object\"==typeof exports?exports[\"vue-slider-component\"]=e():t[\"vue-slider-component\"]=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var r=i[s]={i:s,l:!1,exports:{}};return t[s].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=2)}([function(t,e,i){i(7);var s=i(5)(i(1),i(6),null,null);t.exports=s.exports},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={data:function(){return{flag:!1,size:0,currentValue:0,currentSlider:0,dotWidthVal:\"number\"==typeof this.dotWidth?this.dotWidth:this.dotSize,dotHeightVal:\"number\"==typeof this.dotHeight?this.dotHeight:this.dotSize}},props:{width:{type:[Number,String],default:\"auto\"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:\"always\"},eventType:{type:String,default:\"auto\"},direction:{type:String,default:\"horizontal\"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},value:{type:[String,Number,Array],default:0},piecewiseLabel:{type:Boolean,default:!1},sliderStyle:[Array,Object],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object],labelStyle:Object,labelActiveStyle:Object},computed:{flowDirection:function(){return\"vue-slider-\"+this.direction+(this.reverse?\"-reverse\":\"\")},tooltipDirection:function(){var t=this.tooltipDir||(\"vertical\"===this.direction?\"left\":\"top\");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return\"hover\"===this.tooltip&&this.flag?\"vue-slider-always\":this.tooltip?\"vue-slider-\"+this.tooltip:\"\"},tooltipClass:function(){return[\"vue-slider-tooltip-\"+this.tooltipDirection,\"vue-slider-tooltip\"]},isDisabled:function(){return\"none\"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?\"vue-slider-disabled\":\"\"},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),i=this.data.indexOf(t[1]);e>-1&&i>-1&&(this.currentValue=[e,i])}else{var s=this.data.indexOf(t);s>-1&&(this.currentValue=s)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(\"\"+this.interval).split(\".\")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(~~((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&console.error(\"[Vue-slider warn]: Prop[interval] is illegal, Please make sure that the interval can be divisible\"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},wrapStyles:function(){return\"vertical\"===this.direction?{height:\"number\"==typeof this.height?this.height+\"px\":this.height,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}:{width:\"number\"==typeof this.width?this.width+\"px\":this.width,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:\"100%\"}:{height:this.height+\"px\"}},dotStyles:function(){return\"vertical\"===this.direction?{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",left:-(this.dotWidthVal-this.width)/2+\"px\"}:{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",top:-(this.dotHeightVal-this.height)/2+\"px\"}},piecewiseDotStyle:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:this.width+\"px\"}:{width:this.height+\"px\",height:this.height+\"px\"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var i=\"vertical\"===this.direction?{bottom:this.gap*e-this.width/2+\"px\",left:0}:{left:this.gap*e-this.height/2+\"px\",top:0},s=this.reverse?this.total-e:e,r=this.data?this.data[s]:this.spacing*s+this.min;t.push({style:i,label:this.formatter?this.formatting(r):r,inRange:s>=this.indexRange[0]&&s<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},min:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})}},methods:{bindEvents:function(){document.addEventListener(\"touchmove\",this.moving,{passive:!1}),document.addEventListener(\"touchend\",this.moveEnd,{passive:!1}),document.addEventListener(\"mousemove\",this.moving),document.addEventListener(\"mouseup\",this.moveEnd),document.addEventListener(\"mouseleave\",this.moveEnd),window.addEventListener(\"resize\",this.refresh)},unbindEvents:function(){window.removeEventListener(\"resize\",this.refresh),document.removeEventListener(\"touchmove\",this.moving),document.removeEventListener(\"touchend\",this.moveEnd),document.removeEventListener(\"mousemove\",this.moving),document.removeEventListener(\"mouseup\",this.moveEnd),document.removeEventListener(\"mouseleave\",this.moveEnd)},formatting:function(t){return\"string\"==typeof this.formatter?this.formatter.replace(/\\{value\\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),\"vertical\"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},wrapClick:function(t){if(this.isDisabled||!this.clickable)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){if(this.isDisabled)return!1;this.isRange&&(this.currentSlider=t),this.flag=!0,this.$emit(\"drag-start\",this)},moving:function(t){if(!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){if(!this.flag)return!1;this.$emit(\"drag-end\",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,this.setPosition()},setValueOnPos:function(t,e){var i=this.isRange?this.limit[this.currentSlider]:this.limit,s=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var r=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(r,e)}else t<i[0]?(this.setTransform(i[0]),this.setCurrentValue(s[0]),1===this.currentSlider&&(this.currentSlider=0)):(this.setTransform(i[1]),this.setCurrentValue(s[1]),0===this.currentSlider&&(this.currentSlider=1))},isDiff:function(t,e){return Object.prototype.toString.call(t)!==Object.prototype.toString.call(e)||(Array.isArray(t)&&t.length===e.length?t.some(function(t,i){return t!==e[i]}):t!==e)},setCurrentValue:function(t,e){if(t<this.minimum||t>this.maximum)return!1;this.isRange?this.isDiff(this.currentValue[this.currentSlider],t)&&(this.currentValue.splice(this.currentSlider,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,i){var s=this;if(this.isDiff(this.val,t)){var r=this.limitValue(t);this.val=!1!==r?this.isRange?r.concat():r:this.isRange?t.concat():t,this.syncValue(e)}this.$nextTick(function(){return s.setPosition(i)})},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.currentSlider=0,this.setTransform(this.position[this.currentSlider]),this.currentSlider=1,this.setTransform(this.position[this.currentSlider])):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t){var e=(\"vertical\"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1),i=\"vertical\"===this.direction?\"translateY(\"+e+\"px)\":\"translateX(\"+e+\"px)\",s=(0===this.currentSlider?this.position[1]-t:t-this.position[0])+\"px\",r=(0===this.currentSlider?t:this.position[0])+\"px\";this.isRange?(this.slider[this.currentSlider].style.transform=i,this.slider[this.currentSlider].style.WebkitTransform=i,this.slider[this.currentSlider].style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=s,this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=r):(this.$refs.process.style.width=s,this.$refs.process.style[this.reverse?\"right\":\"left\"]=r)):(this.slider.style.transform=i,this.slider.style.WebkitTransform=i,this.slider.style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=t+\"px\",this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=0):(this.$refs.process.style.width=t+\"px\",this.$refs.process.style[this.reverse?\"right\":\"left\"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;e<this.slider.length;e++)this.slider[e].style.transitionDuration=t+\"s\",this.slider[e].style.WebkitTransitionDuration=t+\"s\";this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"}else this.slider.style.transitionDuration=t+\"s\",this.slider.style.WebkitTransitionDuration=t+\"s\",this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"},limitValue:function(t){var e=this;if(this.data)return t;var i=!1;return this.isRange?t=t.map(function(t){return t<e.min?(i=!0,e.min):t>e.max?(i=!0,e.max):t}):t>this.max?(i=!0,t=this.max):t<this.min&&(i=!0,t=this.min),i&&t},syncValue:function(t){t||this.$emit(\"callback\",this.val),this.$emit(\"input\",this.isRange?this.val.concat():this.val)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size=\"vertical\"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset=\"vertical\"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.setPosition())}},mounted:function(){var t=this;\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&this.$nextTick(function(){t.getStaticData(),t.setValue(t.value,!0,0),t.bindEvents()})},beforeDestroy:function(){this.unbindEvents()}}},function(t,e,i){\"use strict\";var s=i(0);t.exports=s},function(t,e,i){e=t.exports=i(4)(),e.push([t.i,'.vue-slider-component{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;-webkit-transition:all 0s;transition:all 0s;z-index:1}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;-webkit-box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);-webkit-transition:all 0s;transition:all 0s;will-change:transform;cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:\"\";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:\"\";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;-webkit-transition:all .3s;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',\"\"])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var i=this[e];i[2]?t.push(\"@media \"+i[2]+\"{\"+i[1]+\"}\"):t.push(i[1])}return t.join(\"\")},t.i=function(e,i){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var s={},r=0;r<this.length;r++){var n=this[r][0];\"number\"==typeof n&&(s[n]=!0)}for(r=0;r<e.length;r++){var o=e[r];\"number\"==typeof o[0]&&s[o[0]]||(i&&!o[2]?o[2]=i:i&&(o[2]=\"(\"+o[2]+\") and (\"+i+\")\"),t.push(o))}},t}},function(t,e){t.exports=function(t,e,i,s){var r,n=t=t||{},o=typeof t.default;\"object\"!==o&&\"function\"!==o||(r=t,n=t.default);var l=\"function\"==typeof n?n.options:n;if(e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns),i&&(l._scopeId=i),s){var a=Object.create(l.computed||null);Object.keys(s).forEach(function(t){var e=s[t];a[t]=function(){return e}}),l.computed=a}return{esModule:r,exports:n,options:l}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.show,expression:\"show\"}],ref:\"wrap\",class:[\"vue-slider-component\",t.flowDirection,t.disabledClass,{\"vue-slider-has-label\":t.piecewiseLabel}],style:t.wrapStyles,on:{click:t.wrapClick}},[i(\"div\",{ref:\"elem\",staticClass:\"vue-slider\",style:[t.elemStyles,t.bgStyle],attrs:{\"aria-hidden\":\"true\"}},[t.isRange?[i(\"div\",{ref:\"dot0\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[0]],on:{mousedown:function(e){t.moveStart(0)},touchstart:function(e){t.moveStart(0)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[0],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[0]},[t._v(t._s(t.formatter?t.formatting(t.val[0]):t.val[0]))])],{value:t.val[0],index:0})],2)]),t._v(\" \"),i(\"div\",{ref:\"dot1\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[1]],on:{mousedown:function(e){t.moveStart(1)},touchstart:function(e){t.moveStart(1)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[1],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[1]},[t._v(t._s(t.formatter?t.formatting(t.val[1]):t.val[1]))])],{value:t.val[1],index:1})],2)])]:[i(\"div\",{ref:\"dot\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles],on:{mousedown:t.moveStart,touchstart:t.moveStart}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection,\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles},[t._v(t._s(t.formatter?t.formatting(t.val):t.val))])],{value:t.val})],2)])],t._v(\" \"),i(\"ul\",{staticClass:\"vue-slider-piecewise\"},t._l(t.piecewiseDotWrap,function(e,s){return i(\"li\",{key:s,staticClass:\"vue-slider-piecewise-item\",style:[t.piecewiseDotStyle,e.style]},[t._t(\"piecewise\",[t.piecewise?i(\"span\",{staticClass:\"vue-slider-piecewise-dot\",style:[t.piecewiseStyle,e.inRange?t.piecewiseActiveStyle:null]}):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1}),t._v(\" \"),t._t(\"label\",[t.piecewiseLabel?i(\"span\",{staticClass:\"vue-slider-piecewise-label\",style:[t.labelStyle,e.inRange?t.labelActiveStyle:null]},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\"+t._s(e.label)+\"\\n\\t\\t\\t\\t\\t\")]):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1})],2)})),t._v(\" \"),i(\"div\",{ref:\"process\",staticClass:\"vue-slider-process\",style:t.processStyle})],2),t._v(\" \"),t.isRange||t.data?t._e():i(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.val,expression:\"val\"}],staticClass:\"vue-slider-sr-only\",attrs:{type:\"range\",min:t.min,max:t.max},domProps:{value:t.val},on:{__r:function(e){t.val=e.target.value}}})])},staticRenderFns:[]}},function(t,e,i){var s=i(3);\"string\"==typeof s&&(s=[[t.i,s,\"\"]]),s.locals&&(t.exports=s.locals);i(8)(\"743d98f5\",s,!0)},function(t,e,i){function s(t){for(var e=0;e<t.length;e++){var i=t[e],s=h[i.id];if(s){s.refs++;for(var r=0;r<s.parts.length;r++)s.parts[r](i.parts[r]);for(;r<i.parts.length;r++)s.parts.push(n(i.parts[r]));s.parts.length>i.parts.length&&(s.parts.length=i.parts.length)}else{for(var o=[],r=0;r<i.parts.length;r++)o.push(n(i.parts[r]));h[i.id]={id:i.id,refs:1,parts:o}}}}function r(){var t=document.createElement(\"style\");return t.type=\"text/css\",d.appendChild(t),t}function n(t){var e,i,s=document.querySelector('style[data-vue-ssr-id~=\"'+t.id+'\"]');if(s){if(f)return v;s.parentNode.removeChild(s)}if(m){var n=c++;s=p||(p=r()),e=o.bind(null,s,n,!1),i=o.bind(null,s,n,!0)}else s=r(),e=l.bind(null,s),i=function(){s.parentNode.removeChild(s)};return e(t),function(s){if(s){if(s.css===t.css&&s.media===t.media&&s.sourceMap===t.sourceMap)return;e(t=s)}else i()}}function o(t,e,i,s){var r=i?\"\":s.css;if(t.styleSheet)t.styleSheet.cssText=g(e,r);else{var n=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(n,o[e]):t.appendChild(n)}}function l(t,e){var i=e.css,s=e.media,r=e.sourceMap;if(s&&t.setAttribute(\"media\",s),r&&(i+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",i+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\"),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var a=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!a)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var u=i(9),h={},d=a&&(document.head||document.getElementsByTagName(\"head\")[0]),p=null,c=0,f=!1,v=function(){},m=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,i){f=i;var r=u(t,e);return s(r),function(e){for(var i=[],n=0;n<r.length;n++){var o=r[n],l=h[o.id];l.refs--,i.push(l)}e?(r=u(t,e),s(r)):r=[];for(var n=0;n<i.length;n++){var l=i[n];if(0===l.refs){for(var a=0;a<l.parts.length;a++)l.parts[a]();delete h[l.id]}}}};var g=function(){var t=[];return function(e,i){return t[e]=i,t.filter(Boolean).join(\"\\n\")}}()},function(t,e){t.exports=function(t,e){for(var i=[],s={},r=0;r<e.length;r++){var n=e[r],o=n[0],l=n[1],a=n[2],u=n[3],h={id:t+\":\"+r,css:l,media:a,sourceMap:u};s[o]?s[o].parts.push(h):i.push(s[o]={id:o,parts:[h]})}return i}}])});\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"geshem\"}},[_c('div',{attrs:{\"id\":\"datetime\"}},[_c('div',{attrs:{\"id\":\"date\"}},[_vm._v(_vm._s(_vm.date))]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"time\"}},[_vm._v(_vm._s(_vm.time))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"slider\"}},[_c('vue-slider',{ref:\"slider\",attrs:{\"min\":1,\"max\":7,\"height\":20,\"dot-size\":45,\"tooltip\":false},model:{value:(_vm.slider),callback:function ($$v) {_vm.slider=$$v},expression:\"slider\"}})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// build.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/js/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 28c446f8136708d15869","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.mapboxgl = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.glMatrix=n()}(this,function(){\"use strict\";function t(t,n,r){var e=n[0],a=n[1],o=n[2];return t[0]=e*r[0]+a*r[3]+o*r[6],t[1]=e*r[1]+a*r[4]+o*r[7],t[2]=e*r[2]+a*r[5]+o*r[8],t}function n(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3];return t[0]=r[0]*e+r[4]*a+r[8]*o+r[12]*u,t[1]=r[1]*e+r[5]*a+r[9]*o+r[13]*u,t[2]=r[2]*e+r[6]*a+r[10]*o+r[14]*u,t[3]=r[3]*e+r[7]*a+r[11]*o+r[15]*u,t}function r(){var t=new Float32Array(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function e(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=e*c+o*i,t[1]=a*c+u*i,t[2]=e*-i+o*c,t[3]=a*-i+u*c,t}function a(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=r[0],c=r[1];return t[0]=e*i,t[1]=a*i,t[2]=o*c,t[3]=u*c,t}function o(){var t=new Float32Array(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function u(t,n){var r=Math.sin(n),e=Math.cos(n);return t[0]=e,t[1]=r,t[2]=0,t[3]=-r,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function i(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function f(t,n){var r=n[0],e=n[1],a=n[2],o=n[3],u=n[4],i=n[5],c=n[6],f=n[7],v=n[8],s=n[9],l=n[10],M=n[11],h=n[12],m=n[13],y=n[14],d=n[15],p=r*i-e*u,w=r*c-a*u,A=r*f-o*u,F=e*c-a*i,x=e*f-o*i,b=a*f-o*c,g=v*m-s*h,j=v*y-l*h,R=v*d-M*h,X=s*y-l*m,Z=s*d-M*m,k=l*d-M*y,q=p*k-w*Z+A*X+F*R-x*j+b*g;return q?(q=1/q,t[0]=(i*k-c*Z+f*X)*q,t[1]=(a*Z-e*k-o*X)*q,t[2]=(m*b-y*x+d*F)*q,t[3]=(l*x-s*b-M*F)*q,t[4]=(c*R-u*k-f*j)*q,t[5]=(r*k-a*R+o*j)*q,t[6]=(y*A-h*b-d*w)*q,t[7]=(v*b-l*A+M*w)*q,t[8]=(u*Z-i*R+f*g)*q,t[9]=(e*R-r*Z-o*g)*q,t[10]=(h*x-m*A+d*p)*q,t[11]=(s*A-v*x-M*p)*q,t[12]=(i*j-u*X-c*g)*q,t[13]=(r*X-e*j+a*g)*q,t[14]=(m*w-h*F-y*p)*q,t[15]=(v*F-s*w+l*p)*q,t):null}function v(t,n,r){var e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],m=n[12],y=n[13],d=n[14],p=n[15],w=r[0],A=r[1],F=r[2],x=r[3];return t[0]=w*e+A*i+F*s+x*m,t[1]=w*a+A*c+F*l+x*y,t[2]=w*o+A*f+F*M+x*d,t[3]=w*u+A*v+F*h+x*p,w=r[4],A=r[5],F=r[6],x=r[7],t[4]=w*e+A*i+F*s+x*m,t[5]=w*a+A*c+F*l+x*y,t[6]=w*o+A*f+F*M+x*d,t[7]=w*u+A*v+F*h+x*p,w=r[8],A=r[9],F=r[10],x=r[11],t[8]=w*e+A*i+F*s+x*m,t[9]=w*a+A*c+F*l+x*y,t[10]=w*o+A*f+F*M+x*d,t[11]=w*u+A*v+F*h+x*p,w=r[12],A=r[13],F=r[14],x=r[15],t[12]=w*e+A*i+F*s+x*m,t[13]=w*a+A*c+F*l+x*y,t[14]=w*o+A*f+F*M+x*d,t[15]=w*u+A*v+F*h+x*p,t}function s(t,n,r){var e,a,o,u,i,c,f,v,s,l,M,h,m=r[0],y=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*y+n[8]*d+n[12],t[13]=n[1]*m+n[5]*y+n[9]*d+n[13],t[14]=n[2]*m+n[6]*y+n[10]*d+n[14],t[15]=n[3]*m+n[7]*y+n[11]*d+n[15]):(e=n[0],a=n[1],o=n[2],u=n[3],i=n[4],c=n[5],f=n[6],v=n[7],s=n[8],l=n[9],M=n[10],h=n[11],t[0]=e,t[1]=a,t[2]=o,t[3]=u,t[4]=i,t[5]=c,t[6]=f,t[7]=v,t[8]=s,t[9]=l,t[10]=M,t[11]=h,t[12]=e*m+i*y+s*d+n[12],t[13]=a*m+c*y+l*d+n[13],t[14]=o*m+f*y+M*d+n[14],t[15]=u*m+v*y+h*d+n[15]),t}function l(t,n,r){var e=r[0],a=r[1],o=r[2];return t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t[3]=n[3]*e,t[4]=n[4]*a,t[5]=n[5]*a,t[6]=n[6]*a,t[7]=n[7]*a,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=n[11]*o,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function M(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[4],u=n[5],i=n[6],c=n[7],f=n[8],v=n[9],s=n[10],l=n[11];return n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=o*a+f*e,t[5]=u*a+v*e,t[6]=i*a+s*e,t[7]=c*a+l*e,t[8]=f*a-o*e,t[9]=v*a-u*e,t[10]=s*a-i*e,t[11]=l*a-c*e,t}function h(t,n,r){var e=Math.sin(r),a=Math.cos(r),o=n[0],u=n[1],i=n[2],c=n[3],f=n[4],v=n[5],s=n[6],l=n[7];return n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=o*a+f*e,t[1]=u*a+v*e,t[2]=i*a+s*e,t[3]=c*a+l*e,t[4]=f*a-o*e,t[5]=v*a-u*e,t[6]=s*a-i*e,t[7]=l*a-c*e,t}function m(t,n,r,e,a){var o=1/Math.tan(n/2),u=1/(e-a);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(a+e)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*a*e*u,t[15]=0,t}function y(t,n,r,e,a,o,u){var i=1/(n-r),c=1/(e-a),f=1/(o-u);return t[0]=-2*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(n+r)*i,t[13]=(a+e)*c,t[14]=(u+o)*f,t[15]=1,t}(function(){var t=new Float32Array(3);t[0]=0,t[1]=0,t[2]=0})(),function(){var t=new Float32Array(4);t[0]=0,t[1]=0,t[2]=0,t[3]=0}();return{vec3:{transformMat3:t},vec4:{transformMat4:n},mat2:{create:r,rotate:e,scale:a},mat3:{create:o,fromRotation:u},mat4:{create:i,identity:c,translate:s,scale:l,multiply:v,perspective:m,rotateX:M,rotateZ:h,invert:f,ortho:y}}});\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";function Point(t,n){this.x=t,this.y=n}module.exports=Point,Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,n){return this.clone()._rotateAround(t,n)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var n=t.x-this.x,i=t.y-this.y;return n*n+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,n){return Math.atan2(this.x*n-this.y*t,this.x*t+this.y*n)},_matMult:function(t){var n=t[0]*this.x+t[1]*this.y,i=t[2]*this.x+t[3]*this.y;return this.x=n,this.y=i,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var n=Math.cos(t),i=Math.sin(t),s=n*this.x-i*this.y,r=i*this.x+n*this.y;return this.x=s,this.y=r,this},_rotateAround:function(t,n){var i=Math.cos(t),s=Math.sin(t),r=n.x+i*(this.x-n.x)-s*(this.y-n.y),h=n.y+s*(this.x-n.x)+i*(this.y-n.y);return this.x=r,this.y=h,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Point.convert=function(t){return t instanceof Point?t:Array.isArray(t)?new Point(t[0],t[1]):t};\n},{}],3:[function(_dereq_,module,exports){\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.ShelfPack=e()}(this,function(){function t(t,e,i){i=i||{},this.w=t||64,this.h=e||64,this.autoResize=!!i.autoResize,this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0}function e(t,e,i){this.x=0,this.y=t,this.w=this.free=e,this.h=i}function i(t,e,i,s,h,n,r){this.id=t,this.x=e,this.y=i,this.w=s,this.h=h,this.maxw=n||s,this.maxh=r||h,this.refcount=0}return t.prototype.pack=function(t,e){t=[].concat(t),e=e||{};for(var i,s,h,n,r=[],f=0;f<t.length;f++)if(i=t[f].w||t[f].width,s=t[f].h||t[f].height,h=t[f].id,i&&s){if(!(n=this.packOne(i,s,h)))continue;e.inPlace&&(t[f].x=n.x,t[f].y=n.y,t[f].id=n.id),r.push(n)}return this.shrink(),r},t.prototype.packOne=function(t,i,s){var h,n,r,f,o={freebin:-1,shelf:-1,waste:1/0},a=0;if(\"string\"==typeof s||\"number\"==typeof s){if(h=this.getBin(s))return this.ref(h),h;\"number\"==typeof s&&(this.maxId=Math.max(s,this.maxId))}else s=++this.maxId;for(f=0;f<this.freebins.length;f++){if(h=this.freebins[f],i===h.maxh&&t===h.maxw)return this.allocFreebin(f,t,i,s);i>h.maxh||t>h.maxw||i<=h.maxh&&t<=h.maxw&&(r=h.maxw*h.maxh-t*i)<o.waste&&(o.waste=r,o.freebin=f)}for(f=0;f<this.shelves.length;f++)if(n=this.shelves[f],a+=n.h,!(t>n.free)){if(i===n.h)return this.allocShelf(f,t,i,s);i>n.h||i<n.h&&(r=(n.h-i)*t)<o.waste&&(o.freebin=-1,o.waste=r,o.shelf=f)}if(-1!==o.freebin)return this.allocFreebin(o.freebin,t,i,s);if(-1!==o.shelf)return this.allocShelf(o.shelf,t,i,s);if(i<=this.h-a&&t<=this.w)return n=new e(a,this.w,i),this.allocShelf(this.shelves.push(n)-1,t,i,s);if(this.autoResize){var u,l,c,p;return u=l=this.h,c=p=this.w,(c<=u||t>c)&&(p=2*Math.max(t,c)),(u<c||i>u)&&(l=2*Math.max(i,u)),this.resize(p,l),this.packOne(t,i,s)}return null},t.prototype.allocFreebin=function(t,e,i,s){var h=this.freebins.splice(t,1)[0];return h.id=s,h.w=e,h.h=i,h.refcount=0,this.bins[s]=h,this.ref(h),h},t.prototype.allocShelf=function(t,e,i,s){var h=this.shelves[t],n=h.alloc(e,i,s);return this.bins[s]=n,this.ref(n),n},t.prototype.shrink=function(){if(this.shelves.length>0){for(var t=0,e=0,i=0;i<this.shelves.length;i++){var s=this.shelves[i];e+=s.h,t=Math.max(s.w-s.free,t)}this.resize(t,e)}},t.prototype.getBin=function(t){return this.bins[t]},t.prototype.ref=function(t){if(1==++t.refcount){var e=t.h;this.stats[e]=1+(0|this.stats[e])}return t.refcount},t.prototype.unref=function(t){return 0===t.refcount?0:(0==--t.refcount&&(this.stats[t.h]--,delete this.bins[t.id],this.freebins.push(t)),t.refcount)},t.prototype.clear=function(){this.shelves=[],this.freebins=[],this.stats={},this.bins={},this.maxId=0},t.prototype.resize=function(t,e){this.w=t,this.h=e;for(var i=0;i<this.shelves.length;i++)this.shelves[i].resize(t);return!0},e.prototype.alloc=function(t,e,s){if(t>this.free||e>this.h)return null;var h=this.x;return this.x+=t,this.free-=t,new i(s,h,this.y,t,e,t,this.h)},e.prototype.resize=function(t){return this.free+=t-this.w,this.w=t,!0},t});\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";function TinySDF(t,i,s,e,h,r){this.fontSize=t||24,this.buffer=void 0===i?3:i,this.cutoff=e||.25,this.fontFamily=h||\"sans-serif\",this.fontWeight=r||\"normal\",this.radius=s||8;var a=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=a,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.d=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Int16Array(a),this.middle=Math.round(a/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1))}function edt(t,i,s,e,h,r,a){for(var n=0;n<i;n++){for(var o=0;o<s;o++)e[o]=t[o*i+n];for(edt1d(e,h,r,a,s),o=0;o<s;o++)t[o*i+n]=h[o]}for(o=0;o<s;o++){for(n=0;n<i;n++)e[n]=t[o*i+n];for(edt1d(e,h,r,a,i),n=0;n<i;n++)t[o*i+n]=Math.sqrt(h[n])}}function edt1d(t,i,s,e,h){s[0]=0,e[0]=-INF,e[1]=+INF;for(var r=1,a=0;r<h;r++){for(var n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);n<=e[a];)a--,n=(t[r]+r*r-(t[s[a]]+s[a]*s[a]))/(2*r-2*s[a]);a++,s[a]=r,e[a]=n,e[a+1]=+INF}for(r=0,a=0;r<h;r++){for(;e[a+1]<r;)a++;i[r]=(r-s[a])*(r-s[a])+t[s[a]]}}module.exports=TinySDF;var INF=1e20;TinySDF.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var i=this.ctx.getImageData(0,0,this.size,this.size),s=new Uint8ClampedArray(this.size*this.size),e=0;e<this.size*this.size;e++){var h=i.data[4*e+3]/255;this.gridOuter[e]=1===h?0:0===h?INF:Math.pow(Math.max(0,.5-h),2),this.gridInner[e]=1===h?INF:0===h?0:Math.pow(Math.max(0,h-.5),2)}for(edt(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),edt(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),e=0;e<this.size*this.size;e++){var r=this.gridOuter[e]-this.gridInner[e];s[e]=Math.max(0,Math.min(255,Math.round(255-255*(r/this.radius+this.cutoff))))}return s};\n},{}],5:[function(_dereq_,module,exports){\nfunction UnitBezier(t,i,e,r){this.cx=3*t,this.bx=3*(e-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(r-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=e,this.p2y=r}module.exports=UnitBezier,UnitBezier.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},UnitBezier.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},UnitBezier.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},UnitBezier.prototype.solveCurveX=function(t,i){void 0===i&&(i=1e-6);var e,r,s,h,n;for(s=t,n=0;n<8;n++){if(h=this.sampleCurveX(s)-t,Math.abs(h)<i)return s;var u=this.sampleCurveDerivativeX(s);if(Math.abs(u)<1e-6)break;s-=h/u}if(e=0,r=1,(s=t)<e)return e;if(s>r)return r;for(;e<r;){if(h=this.sampleCurveX(s),Math.abs(h-t)<i)return s;t>h?e=s:r=s,s=.5*(r-e)+e}return s},UnitBezier.prototype.solve=function(t,i){return this.sampleCurveY(this.solveCurveX(t,i))};\n},{}],6:[function(_dereq_,module,exports){\nmodule.exports.VectorTile=_dereq_(\"./lib/vectortile.js\"),module.exports.VectorTileFeature=_dereq_(\"./lib/vectortilefeature.js\"),module.exports.VectorTileLayer=_dereq_(\"./lib/vectortilelayer.js\");\n},{\"./lib/vectortile.js\":7,\"./lib/vectortilefeature.js\":8,\"./lib/vectortilelayer.js\":9}],7:[function(_dereq_,module,exports){\n\"use strict\";function VectorTile(e,r){this.layers=e.readFields(readTile,{},r)}function readTile(e,r,i){if(3===e){var t=new VectorTileLayer(i,i.readVarint()+i.pos);t.length&&(r[t.name]=t)}}var VectorTileLayer=_dereq_(\"./vectortilelayer\");module.exports=VectorTile;\n},{\"./vectortilelayer\":9}],8:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileFeature(e,t,r,a,i){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=a,this._values=i,e.readFields(readFeature,this,t)}function readFeature(e,t,r){1==e?t.id=r.readVarint():2==e?readTag(r,t):3==e?t.type=r.readVarint():4==e&&(t._geometry=r.pos)}function readTag(e,t){for(var r=e.readVarint()+e.pos;e.pos<r;){var a=t._keys[e.readVarint()],i=t._values[e.readVarint()];t.properties[a]=i}}function classifyRings(e){var t=e.length;if(t<=1)return[e];for(var r,a,i=[],o=0;o<t;o++){var n=signedArea(e[o]);0!==n&&(void 0===a&&(a=n<0),a===n<0?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function signedArea(e){for(var t,r,a=0,i=0,o=e.length,n=o-1;i<o;n=i++)t=e[i],r=e[n],a+=(r.x-t.x)*(t.y+r.y);return a}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=VectorTileFeature,VectorTileFeature.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],VectorTileFeature.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,a=1,i=0,o=0,n=0,s=[];e.pos<r;){if(!i){var p=e.readVarint();a=7&p,i=p>>3}if(i--,1===a||2===a)o+=e.readSVarint(),n+=e.readSVarint(),1===a&&(t&&s.push(t),t=[]),t.push(new Point(o,n));else{if(7!==a)throw new Error(\"unknown command \"+a);t&&t.push(t[0].clone())}}return t&&s.push(t),s},VectorTileFeature.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,a=0,i=0,o=0,n=1/0,s=-1/0,p=1/0,h=-1/0;e.pos<t;){if(!a){var u=e.readVarint();r=7&u,a=u>>3}if(a--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),i<n&&(n=i),i>s&&(s=i),o<p&&(p=o),o>h&&(h=o);else if(7!==r)throw new Error(\"unknown command \"+r)}return[n,p,s,h]},VectorTileFeature.prototype.toGeoJSON=function(e,t,r){function a(e){for(var t=0;t<e.length;t++){var r=e[t],a=180-360*(r.y+p)/n;e[t]=[360*(r.x+s)/n-180,360/Math.PI*Math.atan(Math.exp(a*Math.PI/180))-90]}}var i,o,n=this.extent*Math.pow(2,r),s=this.extent*e,p=this.extent*t,h=this.loadGeometry(),u=VectorTileFeature.types[this.type];switch(this.type){case 1:var d=[];for(i=0;i<h.length;i++)d[i]=h[i][0];h=d,a(h);break;case 2:for(i=0;i<h.length;i++)a(h[i]);break;case 3:for(h=classifyRings(h),i=0;i<h.length;i++)for(o=0;o<h[i].length;o++)a(h[i][o])}1===h.length?h=h[0]:u=\"Multi\"+u;var f={type:\"Feature\",geometry:{type:u,coordinates:h},properties:this.properties};return\"id\"in this&&(f.id=this.id),f};\n},{\"@mapbox/point-geometry\":2}],9:[function(_dereq_,module,exports){\n\"use strict\";function VectorTileLayer(e,t){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(readLayer,this,t),this.length=this._features.length}function readLayer(e,t,r){15===e?t.version=r.readVarint():1===e?t.name=r.readString():5===e?t.extent=r.readVarint():2===e?t._features.push(r.pos):3===e?t._keys.push(r.readString()):4===e&&t._values.push(readValueMessage(r))}function readValueMessage(e){for(var t=null,r=e.readVarint()+e.pos;e.pos<r;){var a=e.readVarint()>>3;t=1===a?e.readString():2===a?e.readFloat():3===a?e.readDouble():4===a?e.readVarint64():5===a?e.readVarint():6===a?e.readSVarint():7===a?e.readBoolean():null}return t}var VectorTileFeature=_dereq_(\"./vectortilefeature.js\");module.exports=VectorTileLayer,VectorTileLayer.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new VectorTileFeature(this._pbf,t,this.extent,this._keys,this._values)};\n},{\"./vectortilefeature.js\":8}],10:[function(_dereq_,module,exports){\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.WhooTS=e.WhooTS||{})}(this,function(e){function t(e,t,r,n,i,s){return s=s||{},e+\"?\"+[\"bbox=\"+o(r,n,i),\"format=\"+(s.format||\"image/png\"),\"service=\"+(s.service||\"WMS\"),\"version=\"+(s.version||\"1.1.1\"),\"request=\"+(s.request||\"GetMap\"),\"srs=\"+(s.srs||\"EPSG:3857\"),\"width=\"+(s.width||256),\"height=\"+(s.height||256),\"layers=\"+t].join(\"&\")}function o(e,t,o){t=Math.pow(2,o)-t-1;var n=r(256*e,256*t,o),i=r(256*(e+1),256*(t+1),o);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}function r(e,t,o){var r=2*Math.PI*6378137/256/Math.pow(2,o);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}e.getURL=t,e.getTileBBox=o,e.getMercCoords=r,Object.defineProperty(e,\"__esModule\",{value:!0})});\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";function earcut(e,n,r){r=r||2;var t=n&&n.length,i=t?n[0]*r:e.length,x=linkedList(e,0,i,r,!0),a=[];if(!x)return a;var o,l,u,s,v,f,y;if(t&&(x=eliminateHoles(e,n,x,r)),e.length>80*r){o=u=e[0],l=s=e[1];for(var d=r;d<i;d+=r)v=e[d],f=e[d+1],v<o&&(o=v),f<l&&(l=f),v>u&&(u=v),f>s&&(s=f);y=Math.max(u-o,s-l)}return earcutLinked(x,a,r,o,l,y),a}function linkedList(e,n,r,t,i){var x,a;if(i===signedArea(e,n,r,t)>0)for(x=n;x<r;x+=t)a=insertNode(x,e[x],e[x+1],a);else for(x=r-t;x>=n;x-=t)a=insertNode(x,e[x],e[x+1],a);return a&&equals(a,a.next)&&(removeNode(a),a=a.next),a}function filterPoints(e,n){if(!e)return e;n||(n=e);var r,t=e;do{if(r=!1,t.steiner||!equals(t,t.next)&&0!==area(t.prev,t,t.next))t=t.next;else{if(removeNode(t),(t=n=t.prev)===t.next)return null;r=!0}}while(r||t!==n);return n}function earcutLinked(e,n,r,t,i,x,a){if(e){!a&&x&&indexCurve(e,t,i,x);for(var o,l,u=e;e.prev!==e.next;)if(o=e.prev,l=e.next,x?isEarHashed(e,t,i,x):isEar(e))n.push(o.i/r),n.push(e.i/r),n.push(l.i/r),removeNode(e),e=l.next,u=l.next;else if((e=l)===u){a?1===a?(e=cureLocalIntersections(e,n,r),earcutLinked(e,n,r,t,i,x,2)):2===a&&splitEarcut(e,n,r,t,i,x):earcutLinked(filterPoints(e),n,r,t,i,x,1);break}}}function isEar(e){var n=e.prev,r=e,t=e.next;if(area(n,r,t)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(pointInTriangle(n.x,n.y,r.x,r.y,t.x,t.y,i.x,i.y)&&area(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function isEarHashed(e,n,r,t){var i=e.prev,x=e,a=e.next;if(area(i,x,a)>=0)return!1;for(var o=i.x<x.x?i.x<a.x?i.x:a.x:x.x<a.x?x.x:a.x,l=i.y<x.y?i.y<a.y?i.y:a.y:x.y<a.y?x.y:a.y,u=i.x>x.x?i.x>a.x?i.x:a.x:x.x>a.x?x.x:a.x,s=i.y>x.y?i.y>a.y?i.y:a.y:x.y>a.y?x.y:a.y,v=zOrder(o,l,n,r,t),f=zOrder(u,s,n,r,t),y=e.nextZ;y&&y.z<=f;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.nextZ}for(y=e.prevZ;y&&y.z>=v;){if(y!==e.prev&&y!==e.next&&pointInTriangle(i.x,i.y,x.x,x.y,a.x,a.y,y.x,y.y)&&area(y.prev,y,y.next)>=0)return!1;y=y.prevZ}return!0}function cureLocalIntersections(e,n,r){var t=e;do{var i=t.prev,x=t.next.next;!equals(i,x)&&intersects(i,t,t.next,x)&&locallyInside(i,x)&&locallyInside(x,i)&&(n.push(i.i/r),n.push(t.i/r),n.push(x.i/r),removeNode(t),removeNode(t.next),t=e=x),t=t.next}while(t!==e);return t}function splitEarcut(e,n,r,t,i,x){var a=e;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&isValidDiagonal(a,o)){var l=splitPolygon(a,o);return a=filterPoints(a,a.next),l=filterPoints(l,l.next),earcutLinked(a,n,r,t,i,x),void earcutLinked(l,n,r,t,i,x)}o=o.next}a=a.next}while(a!==e)}function eliminateHoles(e,n,r,t){var i,x,a,o,l,u=[];for(i=0,x=n.length;i<x;i++)a=n[i]*t,o=i<x-1?n[i+1]*t:e.length,l=linkedList(e,a,o,t,!1),l===l.next&&(l.steiner=!0),u.push(getLeftmost(l));for(u.sort(compareX),i=0;i<u.length;i++)eliminateHole(u[i],r),r=filterPoints(r,r.next);return r}function compareX(e,n){return e.x-n.x}function eliminateHole(e,n){if(n=findHoleBridge(e,n)){var r=splitPolygon(n,e);filterPoints(r,r.next)}}function findHoleBridge(e,n){var r,t=n,i=e.x,x=e.y,a=-1/0;do{if(x<=t.y&&x>=t.next.y){var o=t.x+(x-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(o<=i&&o>a){if(a=o,o===i){if(x===t.y)return t;if(x===t.next.y)return t.next}r=t.x<t.next.x?t:t.next}}t=t.next}while(t!==n);if(!r)return null;if(i===a)return r.prev;var l,u=r,s=r.x,v=r.y,f=1/0;for(t=r.next;t!==u;)i>=t.x&&t.x>=s&&pointInTriangle(x<v?i:a,x,s,v,x<v?a:i,x,t.x,t.y)&&((l=Math.abs(x-t.y)/(i-t.x))<f||l===f&&t.x>r.x)&&locallyInside(t,e)&&(r=t,f=l),t=t.next;return r}function indexCurve(e,n,r,t){var i=e;do{null===i.z&&(i.z=zOrder(i.x,i.y,n,r,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,sortLinked(i)}function sortLinked(e){var n,r,t,i,x,a,o,l,u=1;do{for(r=e,e=null,x=null,a=0;r;){for(a++,t=r,o=0,n=0;n<u&&(o++,t=t.nextZ);n++);for(l=u;o>0||l>0&&t;)0===o?(i=t,t=t.nextZ,l--):0!==l&&t?r.z<=t.z?(i=r,r=r.nextZ,o--):(i=t,t=t.nextZ,l--):(i=r,r=r.nextZ,o--),x?x.nextZ=i:e=i,i.prevZ=x,x=i;r=t}x.nextZ=null,u*=2}while(a>1);return e}function zOrder(e,n,r,t,i){return e=32767*(e-r)/i,n=32767*(n-t)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),n=16711935&(n|n<<8),n=252645135&(n|n<<4),n=858993459&(n|n<<2),n=1431655765&(n|n<<1),e|n<<1}function getLeftmost(e){var n=e,r=e;do{n.x<r.x&&(r=n),n=n.next}while(n!==e);return r}function pointInTriangle(e,n,r,t,i,x,a,o){return(i-a)*(n-o)-(e-a)*(x-o)>=0&&(e-a)*(t-o)-(r-a)*(n-o)>=0&&(r-a)*(x-o)-(i-a)*(t-o)>=0}function isValidDiagonal(e,n){return e.next.i!==n.i&&e.prev.i!==n.i&&!intersectsPolygon(e,n)&&locallyInside(e,n)&&locallyInside(n,e)&&middleInside(e,n)}function area(e,n,r){return(n.y-e.y)*(r.x-n.x)-(n.x-e.x)*(r.y-n.y)}function equals(e,n){return e.x===n.x&&e.y===n.y}function intersects(e,n,r,t){return!!(equals(e,n)&&equals(r,t)||equals(e,t)&&equals(r,n))||area(e,n,r)>0!=area(e,n,t)>0&&area(r,t,e)>0!=area(r,t,n)>0}function intersectsPolygon(e,n){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==n.i&&r.next.i!==n.i&&intersects(r,r.next,e,n))return!0;r=r.next}while(r!==e);return!1}function locallyInside(e,n){return area(e.prev,e,e.next)<0?area(e,n,e.next)>=0&&area(e,e.prev,n)>=0:area(e,n,e.prev)<0||area(e,e.next,n)<0}function middleInside(e,n){var r=e,t=!1,i=(e.x+n.x)/2,x=(e.y+n.y)/2;do{r.y>x!=r.next.y>x&&i<(r.next.x-r.x)*(x-r.y)/(r.next.y-r.y)+r.x&&(t=!t),r=r.next}while(r!==e);return t}function splitPolygon(e,n){var r=new Node(e.i,e.x,e.y),t=new Node(n.i,n.x,n.y),i=e.next,x=n.prev;return e.next=n,n.prev=e,r.next=i,i.prev=r,t.next=r,r.prev=t,x.next=t,t.prev=x,t}function insertNode(e,n,r,t){var i=new Node(e,n,r);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function removeNode(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Node(e,n,r){this.i=e,this.x=n,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(e,n,r,t){for(var i=0,x=n,a=r-t;x<r;x+=t)i+=(e[a]-e[x])*(e[x+1]+e[a+1]),a=x;return i}module.exports=earcut,earcut.deviation=function(e,n,r,t){var i=n&&n.length,x=i?n[0]*r:e.length,a=Math.abs(signedArea(e,0,x,r));if(i)for(var o=0,l=n.length;o<l;o++){var u=n[o]*r,s=o<l-1?n[o+1]*r:e.length;a-=Math.abs(signedArea(e,u,s,r))}var v=0;for(o=0;o<t.length;o+=3){var f=t[o]*r,y=t[o+1]*r,d=t[o+2]*r;v+=Math.abs((e[f]-e[d])*(e[y+1]-e[f+1])-(e[f]-e[y])*(e[d+1]-e[f+1]))}return 0===a&&0===v?0:Math.abs((v-a)/a)},earcut.flatten=function(e){for(var n=e[0][0].length,r={vertices:[],holes:[],dimensions:n},t=0,i=0;i<e.length;i++){for(var x=0;x<e[i].length;x++)for(var a=0;a<n;a++)r.vertices.push(e[i][x][a]);i>0&&(t+=e[i-1].length,r.holes.push(t))}return r};\n},{}],12:[function(_dereq_,module,exports){\nfunction geometry(r){if(\"Polygon\"===r.type)return polygonArea(r.coordinates);if(\"MultiPolygon\"===r.type){for(var e=0,n=0;n<r.coordinates.length;n++)e+=polygonArea(r.coordinates[n]);return e}return null}function polygonArea(r){var e=0;if(r&&r.length>0){e+=Math.abs(ringArea(r[0]));for(var n=1;n<r.length;n++)e-=Math.abs(ringArea(r[n]))}return e}function ringArea(r){var e=0;if(r.length>2){for(var n,t,o=0;o<r.length-1;o++)n=r[o],t=r[o+1],e+=rad(t[0]-n[0])*(2+Math.sin(rad(n[1]))+Math.sin(rad(t[1])));e=e*wgs84.RADIUS*wgs84.RADIUS/2}return e}function rad(r){return r*Math.PI/180}var wgs84=_dereq_(\"wgs84\");module.exports.geometry=geometry,module.exports.ring=ringArea;\n},{\"wgs84\":40}],13:[function(_dereq_,module,exports){\nfunction rewind(r,e){switch(r&&r.type||null){case\"FeatureCollection\":return r.features=r.features.map(curryOuter(rewind,e)),r;case\"Feature\":return r.geometry=rewind(r.geometry,e),r;case\"Polygon\":case\"MultiPolygon\":return correct(r,e);default:return r}}function curryOuter(r,e){return function(n){return r(n,e)}}function correct(r,e){return\"Polygon\"===r.type?r.coordinates=correctRings(r.coordinates,e):\"MultiPolygon\"===r.type&&(r.coordinates=r.coordinates.map(curryOuter(correctRings,e))),r}function correctRings(r,e){e=!!e,r[0]=wind(r[0],e);for(var n=1;n<r.length;n++)r[n]=wind(r[n],!e);return r}function wind(r,e){return cw(r)===e?r:r.reverse()}function cw(r){return geojsonArea.ring(r)>=0}var geojsonArea=_dereq_(\"geojson-area\");module.exports=rewind;\n},{\"geojson-area\":12}],14:[function(_dereq_,module,exports){\n\"use strict\";function clip(e,r,t,n,u,i,l,s){if(t/=r,n/=r,l>=t&&s<=n)return e;if(l>n||s<t)return null;for(var h=[],p=0;p<e.length;p++){var a,c,o=e[p],f=o.geometry,g=o.type;if(a=o.min[u],c=o.max[u],a>=t&&c<=n)h.push(o);else if(!(a>n||c<t)){var v=1===g?clipPoints(f,t,n,u):clipGeometry(f,t,n,u,i,3===g);v.length&&h.push(createFeature(o.tags,g,v,o.id))}}return h.length?h:null}function clipPoints(e,r,t,n){for(var u=[],i=0;i<e.length;i++){var l=e[i],s=l[n];s>=r&&s<=t&&u.push(l)}return u}function clipGeometry(e,r,t,n,u,i){for(var l=[],s=0;s<e.length;s++){var h,p,a,c=0,o=0,f=null,g=e[s],v=g.area,m=g.dist,w=g.outer,S=g.length,d=[];for(p=0;p<S-1;p++)h=f||g[p],f=g[p+1],c=o||h[n],o=f[n],c<r?o>t?(d.push(u(h,f,r),u(h,f,t)),i||(d=newSlice(l,d,v,m,w))):o>=r&&d.push(u(h,f,r)):c>t?o<r?(d.push(u(h,f,t),u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o<=t&&d.push(u(h,f,t)):(d.push(h),o<r?(d.push(u(h,f,r)),i||(d=newSlice(l,d,v,m,w))):o>t&&(d.push(u(h,f,t)),i||(d=newSlice(l,d,v,m,w))));h=g[S-1],c=h[n],c>=r&&c<=t&&d.push(h),a=d[d.length-1],i&&a&&(d[0][0]!==a[0]||d[0][1]!==a[1])&&d.push(d[0]),newSlice(l,d,v,m,w)}return l}function newSlice(e,r,t,n,u){return r.length&&(r.area=t,r.dist=n,void 0!==u&&(r.outer=u),e.push(r)),[]}module.exports=clip;var createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16}],15:[function(_dereq_,module,exports){\n\"use strict\";function convert(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)convertFeature(r,e.features[o],t);else\"Feature\"===e.type?convertFeature(r,e,t):convertFeature(r,{geometry:e},t);return r}function convertFeature(e,t,r){if(null!==t.geometry){var o,a,i,n,u=t.geometry,c=u.type,l=u.coordinates,s=t.properties,p=t.id;if(\"Point\"===c)e.push(createFeature(s,1,[projectPoint(l)],p));else if(\"MultiPoint\"===c)e.push(createFeature(s,1,project(l),p));else if(\"LineString\"===c)e.push(createFeature(s,2,[project(l,r)],p));else if(\"MultiLineString\"===c||\"Polygon\"===c){for(i=[],o=0;o<l.length;o++)n=project(l[o],r),\"Polygon\"===c&&(n.outer=0===o),i.push(n);e.push(createFeature(s,\"Polygon\"===c?3:2,i,p))}else if(\"MultiPolygon\"===c){for(i=[],o=0;o<l.length;o++)for(a=0;a<l[o].length;a++)n=project(l[o][a],r),n.outer=0===a,i.push(n);e.push(createFeature(s,3,i,p))}else{if(\"GeometryCollection\"!==c)throw new Error(\"Input data is not a valid GeoJSON object.\");for(o=0;o<u.geometries.length;o++)convertFeature(e,{geometry:u.geometries[o],properties:s},r)}}}function project(e,t){for(var r=[],o=0;o<e.length;o++)r.push(projectPoint(e[o]));return t&&(simplify(r,t),calcSize(r)),r}function projectPoint(e){var t=Math.sin(e[1]*Math.PI/180),r=e[0]/360+.5,o=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return o=o<0?0:o>1?1:o,[r,o,0]}function calcSize(e){for(var t,r,o=0,a=0,i=0;i<e.length-1;i++)t=r||e[i],r=e[i+1],o+=t[0]*r[1]-r[0]*t[1],a+=Math.abs(r[0]-t[0])+Math.abs(r[1]-t[1]);e.area=Math.abs(o/2),e.dist=a}module.exports=convert;var simplify=_dereq_(\"./simplify\"),createFeature=_dereq_(\"./feature\");\n},{\"./feature\":16,\"./simplify\":18}],16:[function(_dereq_,module,exports){\n\"use strict\";function createFeature(e,t,a,n){var r={id:n||null,type:t,geometry:a,tags:e||null,min:[1/0,1/0],max:[-1/0,-1/0]};return calcBBox(r),r}function calcBBox(e){var t=e.geometry,a=e.min,n=e.max;if(1===e.type)calcRingBBox(a,n,t);else for(var r=0;r<t.length;r++)calcRingBBox(a,n,t[r]);return e}function calcRingBBox(e,t,a){for(var n,r=0;r<a.length;r++)n=a[r],e[0]=Math.min(n[0],e[0]),t[0]=Math.max(n[0],t[0]),e[1]=Math.min(n[1],e[1]),t[1]=Math.max(n[1],t[1])}module.exports=createFeature;\n},{}],17:[function(_dereq_,module,exports){\n\"use strict\";function geojsonvt(e,t){return new GeoJSONVT(e,t)}function GeoJSONVT(e,t){t=this.options=extend(Object.create(this.options),t);var i=t.debug;i&&console.time(\"preprocess data\");var o=1<<t.maxZoom,n=convert(e,t.tolerance/(o*t.extent));this.tiles={},this.tileCoords=[],i&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),n=wrap(n,t.buffer/t.extent,intersectX),n.length&&this.splitTile(n,0,0,0),i&&(n.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)))}function toID(e,t,i){return 32*((1<<e)*i+t)+e}function intersectX(e,t,i){return[i,(i-e[0])*(t[1]-e[1])/(t[0]-e[0])+e[1],1]}function intersectY(e,t,i){return[(i-e[1])*(t[0]-e[0])/(t[1]-e[1])+e[0],i,1]}function extend(e,t){for(var i in t)e[i]=t[i];return e}function isClippedSquare(e,t,i){var o=e.source;if(1!==o.length)return!1;var n=o[0];if(3!==n.type||n.geometry.length>1)return!1;var r=n.geometry[0].length;if(5!==r)return!1;for(var s=0;s<r;s++){var l=transform.point(n.geometry[0][s],t,e.z2,e.x,e.y);if(l[0]!==-i&&l[0]!==t+i||l[1]!==-i&&l[1]!==t+i)return!1}return!0}module.exports=geojsonvt;var convert=_dereq_(\"./convert\"),transform=_dereq_(\"./transform\"),clip=_dereq_(\"./clip\"),wrap=_dereq_(\"./wrap\"),createTile=_dereq_(\"./tile\");GeoJSONVT.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},GeoJSONVT.prototype.splitTile=function(e,t,i,o,n,r,s){for(var l=[e,t,i,o],a=this.options,u=a.debug,c=null;l.length;){o=l.pop(),i=l.pop(),t=l.pop(),e=l.pop();var p=1<<t,d=toID(t,i,o),m=this.tiles[d],f=t===a.maxZoom?0:a.tolerance/(p*a.extent);if(!m&&(u>1&&console.time(\"creation\"),m=this.tiles[d]=createTile(e,p,i,o,f,t===a.maxZoom),this.tileCoords.push({z:t,x:i,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,i,o,m.numFeatures,m.numPoints,m.numSimplified),console.timeEnd(\"creation\"));var h=\"z\"+t;this.stats[h]=(this.stats[h]||0)+1,this.total++}if(m.source=e,n){if(t===a.maxZoom||t===n)continue;var x=1<<n-t;if(i!==Math.floor(r/x)||o!==Math.floor(s/x))continue}else if(t===a.indexMaxZoom||m.numPoints<=a.indexMaxPoints)continue;if(a.solidChildren||!isClippedSquare(m,a.extent,a.buffer)){m.source=null,u>1&&console.time(\"clipping\");var g,v,M,T,b,y,S=.5*a.buffer/a.extent,Z=.5-S,q=.5+S,w=1+S;g=v=M=T=null,b=clip(e,p,i-S,i+q,0,intersectX,m.min[0],m.max[0]),y=clip(e,p,i+Z,i+w,0,intersectX,m.min[0],m.max[0]),b&&(g=clip(b,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),v=clip(b,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),y&&(M=clip(y,p,o-S,o+q,1,intersectY,m.min[1],m.max[1]),T=clip(y,p,o+Z,o+w,1,intersectY,m.min[1],m.max[1])),u>1&&console.timeEnd(\"clipping\"),e.length&&(l.push(g||[],t+1,2*i,2*o),l.push(v||[],t+1,2*i,2*o+1),l.push(M||[],t+1,2*i+1,2*o),l.push(T||[],t+1,2*i+1,2*o+1))}else n&&(c=t)}return c},GeoJSONVT.prototype.getTile=function(e,t,i){var o=this.options,n=o.extent,r=o.debug,s=1<<e;t=(t%s+s)%s;var l=toID(e,t,i);if(this.tiles[l])return transform.tile(this.tiles[l],n);r>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,i);for(var a,u=e,c=t,p=i;!a&&u>0;)u--,c=Math.floor(c/2),p=Math.floor(p/2),a=this.tiles[toID(u,c,p)];if(!a||!a.source)return null;if(r>1&&console.log(\"found parent tile z%d-%d-%d\",u,c,p),isClippedSquare(a,n,o.buffer))return transform.tile(a,n);r>1&&console.time(\"drilling down\");var d=this.splitTile(a.source,u,c,p,e,t,i);if(r>1&&console.timeEnd(\"drilling down\"),null!==d){var m=1<<e-d;l=toID(d,Math.floor(t/m),Math.floor(i/m))}return this.tiles[l]?transform.tile(this.tiles[l],n):null};\n},{\"./clip\":14,\"./convert\":15,\"./tile\":19,\"./transform\":20,\"./wrap\":21}],18:[function(_dereq_,module,exports){\n\"use strict\";function simplify(t,i){var e,p,r,s,o=i*i,f=t.length,u=0,n=f-1,g=[];for(t[u][2]=1,t[n][2]=1;n;){for(p=0,e=u+1;e<n;e++)(r=getSqSegDist(t[e],t[u],t[n]))>p&&(s=e,p=r);p>o?(t[s][2]=p,g.push(u),g.push(s),u=s):(n=g.pop(),u=g.pop())}}function getSqSegDist(t,i,e){var p=i[0],r=i[1],s=e[0],o=e[1],f=t[0],u=t[1],n=s-p,g=o-r;if(0!==n||0!==g){var l=((f-p)*n+(u-r)*g)/(n*n+g*g);l>1?(p=s,r=o):l>0&&(p+=n*l,r+=g*l)}return n=f-p,g=u-r,n*n+g*g}module.exports=simplify;\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";function createTile(e,n,r,i,t,u){for(var a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:n,transformed:!1,min:[2,1],max:[-1,0]},m=0;m<e.length;m++){a.numFeatures++,addFeature(a,e[m],t,u);var s=e[m].min,l=e[m].max;s[0]<a.min[0]&&(a.min[0]=s[0]),s[1]<a.min[1]&&(a.min[1]=s[1]),l[0]>a.max[0]&&(a.max[0]=l[0]),l[1]>a.max[1]&&(a.max[1]=l[1])}return a}function addFeature(e,n,r,i){var t,u,a,m,s=n.geometry,l=n.type,o=[],f=r*r;if(1===l)for(t=0;t<s.length;t++)o.push(s[t]),e.numPoints++,e.numSimplified++;else for(t=0;t<s.length;t++)if(a=s[t],i||!(2===l&&a.dist<r||3===l&&a.area<f)){var d=[];for(u=0;u<a.length;u++)m=a[u],(i||m[2]>f)&&(d.push(m),e.numSimplified++),e.numPoints++;3===l&&rewind(d,a.outer),o.push(d)}else e.numPoints+=a.length;if(o.length){var g={geometry:o,type:l,tags:n.tags||null};null!==n.id&&(g.id=n.id),e.features.push(g)}}function rewind(e,n){signedArea(e)<0===n&&e.reverse()}function signedArea(e){for(var n,r,i=0,t=0,u=e.length,a=u-1;t<u;a=t++)n=e[t],r=e[a],i+=(r[0]-n[0])*(n[1]+r[1]);return i}module.exports=createTile;\n},{}],20:[function(_dereq_,module,exports){\n\"use strict\";function transformTile(r,t){if(r.transformed)return r;var n,e,o,f=r.z2,a=r.x,s=r.y;for(n=0;n<r.features.length;n++){var i=r.features[n],u=i.geometry;if(1===i.type)for(e=0;e<u.length;e++)u[e]=transformPoint(u[e],t,f,a,s);else for(e=0;e<u.length;e++){var m=u[e];for(o=0;o<m.length;o++)m[o]=transformPoint(m[o],t,f,a,s)}}return r.transformed=!0,r}function transformPoint(r,t,n,e,o){return[Math.round(t*(r[0]*n-e)),Math.round(t*(r[1]*n-o))]}exports.tile=transformTile,exports.point=transformPoint;\n},{}],21:[function(_dereq_,module,exports){\n\"use strict\";function wrap(r,e,t){var o=r,a=clip(r,1,-1-e,e,0,t,-1,2),s=clip(r,1,1-e,2+e,0,t,-1,2);return(a||s)&&(o=clip(r,1,-e,1+e,0,t,-1,2)||[],a&&(o=shiftFeatureCoords(a,1).concat(o)),s&&(o=o.concat(shiftFeatureCoords(s,-1)))),o}function shiftFeatureCoords(r,e){for(var t=[],o=0;o<r.length;o++){var a,s=r[o],i=s.type;if(1===i)a=shiftCoords(s.geometry,e);else{a=[];for(var u=0;u<s.geometry.length;u++)a.push(shiftCoords(s.geometry[u],e))}t.push(createFeature(s.tags,i,a,s.id))}return t}function shiftCoords(r,e){var t=[];t.area=r.area,t.dist=r.dist;for(var o=0;o<r.length;o++)t.push([r[o][0]+e,r[o][1],r[o][2]]);return t}var clip=_dereq_(\"./clip\"),createFeature=_dereq_(\"./feature\");module.exports=wrap;\n},{\"./clip\":14,\"./feature\":16}],22:[function(_dereq_,module,exports){\n\"use strict\";function GridIndex(t,r,e){var s=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],r=i[1],e=i[2],this.d=r+2*e;for(var h=0;h<this.d*this.d;h++){var n=i[NUM_PARAMS+h],o=i[NUM_PARAMS+h+1];s.push(n===o?null:i.subarray(n,o))}var l=i[NUM_PARAMS+s.length],a=i[NUM_PARAMS+s.length+1];this.keys=i.subarray(l,a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly}else{this.d=r+2*e;for(var d=0;d<this.d*this.d;d++)s.push([]);this.keys=[],this.bboxes=[]}this.n=r,this.extent=t,this.padding=e,this.scale=r/t,this.uid=0;var f=e/r*t;this.min=-f,this.max=t+f}module.exports=GridIndex;var NUM_PARAMS=3;GridIndex.prototype.insert=function(t,r,e,s,i){this._forEachCell(r,e,s,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(r),this.bboxes.push(e),this.bboxes.push(s),this.bboxes.push(i)},GridIndex.prototype._insertReadonly=function(){throw\"Cannot insert into a GridIndex created from an ArrayBuffer.\"},GridIndex.prototype._insertCell=function(t,r,e,s,i,h){this.cells[i].push(h)},GridIndex.prototype.query=function(t,r,e,s){var i=this.min,h=this.max;if(t<=i&&r<=i&&h<=e&&h<=s)return Array.prototype.slice.call(this.keys);var n=[],o={};return this._forEachCell(t,r,e,s,this._queryCell,n,o),n},GridIndex.prototype._queryCell=function(t,r,e,s,i,h,n){var o=this.cells[i];if(null!==o)for(var l=this.keys,a=this.bboxes,d=0;d<o.length;d++){var f=o[d];if(void 0===n[f]){var u=4*f;t<=a[u+2]&&r<=a[u+3]&&e>=a[u+0]&&s>=a[u+1]?(n[f]=!0,h.push(l[f])):n[f]=!1}}},GridIndex.prototype._forEachCell=function(t,r,e,s,i,h,n){for(var o=this._convertToCellCoord(t),l=this._convertToCellCoord(r),a=this._convertToCellCoord(e),d=this._convertToCellCoord(s),f=o;f<=a;f++)for(var u=l;u<=d;u++){var y=this.d*u+f;if(i.call(this,t,r,e,s,y,h,n))return}},GridIndex.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},GridIndex.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,r=NUM_PARAMS+this.cells.length+1+1,e=0,s=0;s<this.cells.length;s++)e+=this.cells[s].length;var i=new Int32Array(r+e+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var h=r,n=0;n<t.length;n++){var o=t[n];i[NUM_PARAMS+n]=h,i.set(o,h),h+=o.length}return i[NUM_PARAMS+t.length]=h,i.set(this.keys,h),h+=this.keys.length,i[NUM_PARAMS+t.length+1]=h,i.set(this.bboxes,h),h+=this.bboxes.length,i.buffer};\n},{}],23:[function(_dereq_,module,exports){\nexports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),o+=p+N>=1?n/f:n*Math.pow(2,1-N),o*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};\n},{}],24:[function(_dereq_,module,exports){\n\"use strict\";function kdbush(t,i,e,s,n){return new KDBush(t,i,e,s,n)}function KDBush(t,i,e,s,n){i=i||defaultGetX,e=e||defaultGetY,n=n||Array,this.nodeSize=s||64,this.points=t,this.ids=new n(t.length),this.coords=new n(2*t.length);for(var r=0;r<t.length;r++)this.ids[r]=r,this.coords[2*r]=i(t[r]),this.coords[2*r+1]=e(t[r]);sort(this.ids,this.coords,this.nodeSize,0,this.ids.length-1,0)}function defaultGetX(t){return t[0]}function defaultGetY(t){return t[1]}var sort=_dereq_(\"./sort\"),range=_dereq_(\"./range\"),within=_dereq_(\"./within\");module.exports=kdbush,KDBush.prototype={range:function(t,i,e,s){return range(this.ids,this.coords,t,i,e,s,this.nodeSize)},within:function(t,i,e){return within(this.ids,this.coords,t,i,e,this.nodeSize)}};\n},{\"./range\":25,\"./sort\":26,\"./within\":27}],25:[function(_dereq_,module,exports){\n\"use strict\";function range(p,r,s,u,h,e,o){for(var a,t,n=[0,p.length-1,0],f=[];n.length;){var l=n.pop(),v=n.pop(),g=n.pop();if(v-g<=o)for(var i=g;i<=v;i++)a=r[2*i],t=r[2*i+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[i]);else{var c=Math.floor((g+v)/2);a=r[2*c],t=r[2*c+1],a>=s&&a<=h&&t>=u&&t<=e&&f.push(p[c]);var d=(l+1)%2;(0===l?s<=a:u<=t)&&(n.push(g),n.push(c-1),n.push(d)),(0===l?h>=a:e>=t)&&(n.push(c+1),n.push(v),n.push(d))}}return f}module.exports=range;\n},{}],26:[function(_dereq_,module,exports){\n\"use strict\";function sortKD(t,a,o,s,r,e){if(!(r-s<=o)){var f=Math.floor((s+r)/2);select(t,a,f,s,r,e%2),sortKD(t,a,o,s,f-1,e+1),sortKD(t,a,o,f+1,r,e+1)}}function select(t,a,o,s,r,e){for(;r>s;){if(r-s>600){var f=r-s+1,p=o-s+1,w=Math.log(f),m=.5*Math.exp(2*w/3),n=.5*Math.sqrt(w*m*(f-m)/f)*(p-f/2<0?-1:1);select(t,a,o,Math.max(s,Math.floor(o-p*m/f+n)),Math.min(r,Math.floor(o+(f-p)*m/f+n)),e)}var c=a[2*o+e],h=s,i=r;for(swapItem(t,a,s,o),a[2*r+e]>c&&swapItem(t,a,s,r);h<i;){for(swapItem(t,a,h,i),h++,i--;a[2*h+e]<c;)h++;for(;a[2*i+e]>c;)i--}a[2*s+e]===c?swapItem(t,a,s,i):(i++,swapItem(t,a,i,r)),i<=o&&(s=i+1),o<=i&&(r=i-1)}}function swapItem(t,a,o,s){swap(t,o,s),swap(a,2*o,2*s),swap(a,2*o+1,2*s+1)}function swap(t,a,o){var s=t[a];t[a]=t[o],t[o]=s}module.exports=sortKD;\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";function within(s,p,r,t,u,h){for(var i=[0,s.length-1,0],o=[],n=u*u;i.length;){var e=i.pop(),a=i.pop(),f=i.pop();if(a-f<=h)for(var v=f;v<=a;v++)sqDist(p[2*v],p[2*v+1],r,t)<=n&&o.push(s[v]);else{var l=Math.floor((f+a)/2),c=p[2*l],q=p[2*l+1];sqDist(c,q,r,t)<=n&&o.push(s[l]);var D=(e+1)%2;(0===e?r-u<=c:t-u<=q)&&(i.push(f),i.push(l-1),i.push(D)),(0===e?r+u>=c:t+u>=q)&&(i.push(l+1),i.push(a),i.push(D))}}return o}function sqDist(s,p,r,t){var u=s-r,h=p-t;return u*u+h*h}module.exports=within;\n},{}],28:[function(_dereq_,module,exports){\n\"use strict\";function isSupported(e){return!!(isBrowser()&&isArraySupported()&&isFunctionSupported()&&isObjectSupported()&&isJSONSupported()&&isWorkerSupported()&&isUint8ClampedArraySupported()&&isWebGLSupportedCached(e&&e.failIfMajorPerformanceCaveat))}function isBrowser(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}function isArraySupported(){return Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray}function isFunctionSupported(){return Function.prototype&&Function.prototype.bind}function isObjectSupported(){return Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions}function isJSONSupported(){return\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON}function isWorkerSupported(){return\"Worker\"in window}function isUint8ClampedArraySupported(){return\"Uint8ClampedArray\"in window}function isWebGLSupportedCached(e){return void 0===isWebGLSupportedCache[e]&&(isWebGLSupportedCache[e]=isWebGLSupported(e)),isWebGLSupportedCache[e]}function isWebGLSupported(e){var t=document.createElement(\"canvas\"),r=Object.create(isSupported.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=e,t.probablySupportsContext?t.probablySupportsContext(\"webgl\",r)||t.probablySupportsContext(\"experimental-webgl\",r):t.supportsContext?t.supportsContext(\"webgl\",r)||t.supportsContext(\"experimental-webgl\",r):t.getContext(\"webgl\",r)||t.getContext(\"experimental-webgl\",r)}\"undefined\"!=typeof module&&module.exports?module.exports=isSupported:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=isSupported);var isWebGLSupportedCache={};isSupported.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};\n},{}],29:[function(_dereq_,module,exports){\n\"use strict\";function Pbf(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}function readVarintRemainder(t,i,e){var r,s,n=e.buf;if(s=n[e.pos++],r=(112&s)>>4,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<3,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<10,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<17,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(127&s)<<24,s<128)return toNum(t,r,i);if(s=n[e.pos++],r|=(1&s)<<31,s<128)return toNum(t,r,i);throw new Error(\"Expected varint not more than 10 bytes\")}function readPackedEnd(t){return t.type===Pbf.Bytes?t.readVarint()+t.pos:t.pos+1}function toNum(t,i,e){return e?4294967296*i+(t>>>0):4294967296*(i>>>0)+(t>>>0)}function writeBigVarint(t,i){var e,r;if(t>=0?(e=t%4294967296|0,r=t/4294967296|0):(e=~(-t%4294967296),r=~(-t/4294967296),4294967295^e?e=e+1|0:(e=0,r=r+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");i.realloc(10),writeBigVarintLow(e,r,i),writeBigVarintHigh(r,i)}function writeBigVarintLow(t,i,e){e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos++]=127&t|128,t>>>=7,e.buf[e.pos]=127&t}function writeBigVarintHigh(t,i){var e=(7&t)<<4;i.buf[i.pos++]|=e|((t>>>=3)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t|((t>>>=7)?128:0),t&&(i.buf[i.pos++]=127&t)))))}function makeRoomForExtraLength(t,i,e){var r=i<=16383?1:i<=2097151?2:i<=268435455?3:Math.ceil(Math.log(i)/(7*Math.LN2));e.realloc(r);for(var s=e.pos-1;s>=t;s--)e.buf[s+r]=e.buf[s]}function writePackedVarint(t,i){for(var e=0;e<t.length;e++)i.writeVarint(t[e])}function writePackedSVarint(t,i){for(var e=0;e<t.length;e++)i.writeSVarint(t[e])}function writePackedFloat(t,i){for(var e=0;e<t.length;e++)i.writeFloat(t[e])}function writePackedDouble(t,i){for(var e=0;e<t.length;e++)i.writeDouble(t[e])}function writePackedBoolean(t,i){for(var e=0;e<t.length;e++)i.writeBoolean(t[e])}function writePackedFixed32(t,i){for(var e=0;e<t.length;e++)i.writeFixed32(t[e])}function writePackedSFixed32(t,i){for(var e=0;e<t.length;e++)i.writeSFixed32(t[e])}function writePackedFixed64(t,i){for(var e=0;e<t.length;e++)i.writeFixed64(t[e])}function writePackedSFixed64(t,i){for(var e=0;e<t.length;e++)i.writeSFixed64(t[e])}function readUInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+16777216*t[i+3]}function writeInt32(t,i,e){t[e]=i,t[e+1]=i>>>8,t[e+2]=i>>>16,t[e+3]=i>>>24}function readInt32(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16)+(t[i+3]<<24)}function readUtf8(t,i,e){for(var r=\"\",s=i;s<e;){var n=t[s],o=null,a=n>239?4:n>223?3:n>191?2:1;if(s+a>e)break;var h,u,f;1===a?n<128&&(o=n):2===a?128==(192&(h=t[s+1]))&&(o=(31&n)<<6|63&h)<=127&&(o=null):3===a?(h=t[s+1],u=t[s+2],128==(192&h)&&128==(192&u)&&((o=(15&n)<<12|(63&h)<<6|63&u)<=2047||o>=55296&&o<=57343)&&(o=null)):4===a&&(h=t[s+1],u=t[s+2],f=t[s+3],128==(192&h)&&128==(192&u)&&128==(192&f)&&((o=(15&n)<<18|(63&h)<<12|(63&u)<<6|63&f)<=65535||o>=1114112)&&(o=null)),null===o?(o=65533,a=1):o>65535&&(o-=65536,r+=String.fromCharCode(o>>>10&1023|55296),o=56320|1023&o),r+=String.fromCharCode(o),s+=a}return r}function writeUtf8(t,i,e){for(var r,s,n=0;n<i.length;n++){if((r=i.charCodeAt(n))>55295&&r<57344){if(!s){r>56319||n+1===i.length?(t[e++]=239,t[e++]=191,t[e++]=189):s=r;continue}if(r<56320){t[e++]=239,t[e++]=191,t[e++]=189,s=r;continue}r=s-55296<<10|r-56320|65536,s=null}else s&&(t[e++]=239,t[e++]=191,t[e++]=189,s=null);r<128?t[e++]=r:(r<2048?t[e++]=r>>6|192:(r<65536?t[e++]=r>>12|224:(t[e++]=r>>18|240,t[e++]=r>>12&63|128),t[e++]=r>>6&63|128),t[e++]=63&r|128)}return e}module.exports=Pbf;var ieee754=_dereq_(\"ieee754\");Pbf.Varint=0,Pbf.Fixed64=1,Pbf.Bytes=2,Pbf.Fixed32=5;var SHIFT_LEFT_32=4294967296,SHIFT_RIGHT_32=1/SHIFT_LEFT_32;Pbf.prototype={destroy:function(){this.buf=null},readFields:function(t,i,e){for(e=e||this.length;this.pos<e;){var r=this.readVarint(),s=r>>3,n=this.pos;this.type=7&r,t(s,i,this),this.pos===n&&this.skip(r)}return i},readMessage:function(t,i){return this.readFields(t,i,this.readVarint()+this.pos)},readFixed32:function(){var t=readUInt32(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=readInt32(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=readUInt32(this.buf,this.pos)+readUInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readSFixed64:function(){var t=readUInt32(this.buf,this.pos)+readInt32(this.buf,this.pos+4)*SHIFT_LEFT_32;return this.pos+=8,t},readFloat:function(){var t=ieee754.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=ieee754.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var i,e,r=this.buf;return e=r[this.pos++],i=127&e,e<128?i:(e=r[this.pos++],i|=(127&e)<<7,e<128?i:(e=r[this.pos++],i|=(127&e)<<14,e<128?i:(e=r[this.pos++],i|=(127&e)<<21,e<128?i:(e=r[this.pos],i|=(15&e)<<28,readVarintRemainder(i,t,this)))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,i=readUtf8(this.buf,this.pos,t);return this.pos=t,i},readBytes:function(){var t=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,t);return this.pos=t,i},readPackedVarint:function(t,i){var e=readPackedEnd(this);for(t=t||[];this.pos<e;)t.push(this.readVarint(i));return t},readPackedSVarint:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readBoolean());return t},readPackedFloat:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFloat());return t},readPackedDouble:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readDouble());return t},readPackedFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){var i=readPackedEnd(this);for(t=t||[];this.pos<i;)t.push(this.readSFixed64());return t},skip:function(t){var i=7&t;if(i===Pbf.Varint)for(;this.buf[this.pos++]>127;);else if(i===Pbf.Bytes)this.pos=this.readVarint()+this.pos;else if(i===Pbf.Fixed32)this.pos+=4;else{if(i!==Pbf.Fixed64)throw new Error(\"Unimplemented type: \"+i);this.pos+=8}},writeTag:function(t,i){this.writeVarint(t<<3|i)},realloc:function(t){for(var i=this.length||16;i<this.pos+t;)i*=2;if(i!==this.length){var e=new Uint8Array(i);e.set(this.buf),this.buf=e,this.length=i}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),writeInt32(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),writeInt32(this.buf,-1&t,this.pos),writeInt32(this.buf,Math.floor(t*SHIFT_RIGHT_32),this.pos+4),this.pos+=8},writeVarint:function(t){if((t=+t||0)>268435455||t<0)return void writeBigVarint(t,this);this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127)))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var i=this.pos;this.pos=writeUtf8(this.buf,t,this.pos);var e=this.pos-i;e>=128&&makeRoomForExtraLength(i,e,this),this.pos=i-1,this.writeVarint(e),this.pos+=e},writeFloat:function(t){this.realloc(4),ieee754.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),ieee754.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var i=t.length;this.writeVarint(i),this.realloc(i);for(var e=0;e<i;e++)this.buf[this.pos++]=t[e]},writeRawMessage:function(t,i){this.pos++;var e=this.pos;t(i,this);var r=this.pos-e;r>=128&&makeRoomForExtraLength(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,i,e){this.writeTag(t,Pbf.Bytes),this.writeRawMessage(i,e)},writePackedVarint:function(t,i){this.writeMessage(t,writePackedVarint,i)},writePackedSVarint:function(t,i){this.writeMessage(t,writePackedSVarint,i)},writePackedBoolean:function(t,i){this.writeMessage(t,writePackedBoolean,i)},writePackedFloat:function(t,i){this.writeMessage(t,writePackedFloat,i)},writePackedDouble:function(t,i){this.writeMessage(t,writePackedDouble,i)},writePackedFixed32:function(t,i){this.writeMessage(t,writePackedFixed32,i)},writePackedSFixed32:function(t,i){this.writeMessage(t,writePackedSFixed32,i)},writePackedFixed64:function(t,i){this.writeMessage(t,writePackedFixed64,i)},writePackedSFixed64:function(t,i){this.writeMessage(t,writePackedSFixed64,i)},writeBytesField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeBytes(i)},writeFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFixed32(i)},writeSFixed32Field:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeSFixed32(i)},writeFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeFixed64(i)},writeSFixed64Field:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeSFixed64(i)},writeVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeVarint(i)},writeSVarintField:function(t,i){this.writeTag(t,Pbf.Varint),this.writeSVarint(i)},writeStringField:function(t,i){this.writeTag(t,Pbf.Bytes),this.writeString(i)},writeFloatField:function(t,i){this.writeTag(t,Pbf.Fixed32),this.writeFloat(i)},writeDoubleField:function(t,i){this.writeTag(t,Pbf.Fixed64),this.writeDouble(i)},writeBooleanField:function(t,i){this.writeVarintField(t,Boolean(i))}};\n},{\"ieee754\":23}],30:[function(_dereq_,module,exports){\nfunction defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex<t;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,t=queue.length}currentQueue=null,draining=!1,runClearTimeout(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}var process=module.exports={},cachedSetTimeout,cachedClearTimeout;!function(){try{cachedSetTimeout=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var queue=[],draining=!1,currentQueue,queueIndex=-1;process.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];queue.push(new Item(e,t)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.version=\"\",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(e){return[]},process.binding=function(e){throw new Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(e){throw new Error(\"process.chdir is not supported\")},process.umask=function(){return 0};\n},{}],31:[function(_dereq_,module,exports){\n\"use strict\";function partialSort(a,t,r,o,p){for(r=r||0,o=o||a.length-1,p=p||defaultCompare;o>r;){if(o-r>600){var f=o-r+1,e=t-r+1,l=Math.log(f),s=.5*Math.exp(2*l/3),i=.5*Math.sqrt(l*s*(f-s)/f)*(e-f/2<0?-1:1);partialSort(a,t,Math.max(r,Math.floor(t-e*s/f+i)),Math.min(o,Math.floor(t+(f-e)*s/f+i)),p)}var n=a[t],h=r,u=o;for(swap(a,r,t),p(a[o],n)>0&&swap(a,r,o);h<u;){for(swap(a,h,u),h++,u--;p(a[h],n)<0;)h++;for(;p(a[u],n)>0;)u--}0===p(a[r],n)?swap(a,r,u):(u++,swap(a,u,o)),u<=t&&(r=u+1),t<=u&&(o=u-1)}}function swap(a,t,r){var o=a[t];a[t]=a[r],a[r]=o}function defaultCompare(a,t){return a<t?-1:a>t?1:0}module.exports=partialSort;\n},{}],32:[function(_dereq_,module,exports){\n\"use strict\";function supercluster(t){return new SuperCluster(t)}function SuperCluster(t){this.options=extend(Object.create(this.options),t),this.trees=new Array(this.options.maxZoom+1)}function createCluster(t,e,n,o,i){return{x:t,y:e,zoom:1/0,id:o,properties:i,parentId:-1,numPoints:n}}function createPointCluster(t,e){var n=t.geometry.coordinates;return{x:lngX(n[0]),y:latY(n[1]),zoom:1/0,id:e,parentId:-1}}function getClusterJSON(t){return{type:\"Feature\",properties:getClusterProperties(t),geometry:{type:\"Point\",coordinates:[xLng(t.x),yLat(t.y)]}}}function getClusterProperties(t){var e=t.numPoints,n=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return extend(extend({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:n})}function lngX(t){return t/360+.5}function latY(t){var e=Math.sin(t*Math.PI/180),n=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return n<0?0:n>1?1:n}function xLng(t){return 360*(t-.5)}function yLat(t){var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function extend(t,e){for(var n in e)t[n]=e[n];return t}function getX(t){return t.x}function getY(t){return t.y}var kdbush=_dereq_(\"kdbush\");module.exports=supercluster,SuperCluster.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,initial:function(){return{}},map:function(t){return t}},load:function(t){var e=this.options.log;e&&console.time(\"total time\");var n=\"prepare \"+t.length+\" points\";e&&console.time(n),this.points=t;var o=t.map(createPointCluster);e&&console.timeEnd(n);for(var i=this.options.maxZoom;i>=this.options.minZoom;i--){var r=+Date.now();this.trees[i+1]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),o=this._cluster(o,i),e&&console.log(\"z%d: %d clusters in %dms\",i,o.length,+Date.now()-r)}return this.trees[this.options.minZoom]=kdbush(o,getX,getY,this.options.nodeSize,Float32Array),e&&console.timeEnd(\"total time\"),this},getClusters:function(t,e){for(var n=this.trees[this._limitZoom(e)],o=n.range(lngX(t[0]),latY(t[3]),lngX(t[2]),latY(t[1])),i=[],r=0;r<o.length;r++){var s=n.points[o[r]];i.push(s.numPoints?getClusterJSON(s):this.points[s.id])}return i},getChildren:function(t,e){for(var n=this.trees[e+1].points[t],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=this.trees[e+1].within(n.x,n.y,o),r=[],s=0;s<i.length;s++){var u=this.trees[e+1].points[i[s]];u.parentId===t&&r.push(u.numPoints?getClusterJSON(u):this.points[u.id])}return r},getLeaves:function(t,e,n,o){n=n||10,o=o||0;var i=[];return this._appendLeaves(i,t,e,n,o,0),i},getTile:function(t,e,n){var o=this.trees[this._limitZoom(t)],i=Math.pow(2,t),r=this.options.extent,s=this.options.radius,u=s/r,a=(n-u)/i,p=(n+1+u)/i,h={features:[]};return this._addTileFeatures(o.range((e-u)/i,a,(e+1+u)/i,p),o.points,e,n,i,h),0===e&&this._addTileFeatures(o.range(1-u/i,a,1,p),o.points,i,n,i,h),e===i-1&&this._addTileFeatures(o.range(0,a,u/i,p),o.points,-1,n,i,h),h.features.length?h:null},getClusterExpansionZoom:function(t,e){for(;e<this.options.maxZoom;){var n=this.getChildren(t,e);if(e++,1!==n.length)break;t=n[0].properties.cluster_id}return e},_appendLeaves:function(t,e,n,o,i,r){for(var s=this.getChildren(e,n),u=0;u<s.length;u++){var a=s[u].properties;if(a.cluster?r+a.point_count<=i?r+=a.point_count:r=this._appendLeaves(t,a.cluster_id,n+1,o,i,r):r<i?r++:t.push(s[u]),t.length===o)break}return r},_addTileFeatures:function(t,e,n,o,i,r){for(var s=0;s<t.length;s++){var u=e[t[s]];r.features.push({type:1,geometry:[[Math.round(this.options.extent*(u.x*i-n)),Math.round(this.options.extent*(u.y*i-o))]],tags:u.numPoints?getClusterProperties(u):this.points[u.id].properties})}},_limitZoom:function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},_cluster:function(t,e){for(var n=[],o=this.options.radius/(this.options.extent*Math.pow(2,e)),i=0;i<t.length;i++){var r=t[i];if(!(r.zoom<=e)){r.zoom=e;var s=this.trees[e+1],u=s.within(r.x,r.y,o),a=r.numPoints||1,p=r.x*a,h=r.y*a,l=null;this.options.reduce&&(l=this.options.initial(),this._accumulate(l,r));for(var c=0;c<u.length;c++){var d=s.points[u[c]];if(e<d.zoom){var m=d.numPoints||1;d.zoom=e,p+=d.x*m,h+=d.y*m,a+=m,d.parentId=i,this.options.reduce&&this._accumulate(l,d)}}1===a?n.push(r):(r.parentId=i,n.push(createCluster(p/a,h/a,a,i,l)))}}return n},_accumulate:function(t,e){var n=e.numPoints?e.properties:this.options.map(this.points[e.id].properties);this.options.reduce(t,n)}};\n},{\"kdbush\":24}],33:[function(_dereq_,module,exports){\n\"use strict\";function TinyQueue(t,i){if(!(this instanceof TinyQueue))return new TinyQueue(t,i);if(this.data=t||[],this.length=this.data.length,this.compare=i||defaultCompare,this.length>0)for(var e=this.length>>1;e>=0;e--)this._down(e)}function defaultCompare(t,i){return t<i?-1:t>i?1:0}module.exports=TinyQueue,TinyQueue.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var i=this.data,e=this.compare,h=i[t];t>0;){var n=t-1>>1,a=i[n];if(e(h,a)>=0)break;i[t]=a,t=n}i[t]=h},_down:function(t){for(var i=this.data,e=this.compare,h=this.length,n=h>>1,a=i[t];t<n;){var s=1+(t<<1),u=s+1,r=i[s];if(u<h&&e(i[u],r)<0&&(s=u,r=i[u]),e(r,a)>=0)break;i[t]=r,t=s}i[t]=a}};\n},{}],34:[function(_dereq_,module,exports){\n\"function\"==typeof Object.create?module.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:module.exports=function(t,e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t};\n},{}],35:[function(_dereq_,module,exports){\nmodule.exports=function(o){return o&&\"object\"==typeof o&&\"function\"==typeof o.copy&&\"function\"==typeof o.fill&&\"function\"==typeof o.readUInt8};\n},{}],36:[function(_dereq_,module,exports){\n(function (process,global){\nfunction inspect(e,r){var t={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),isBoolean(r)?t.showHidden=r:r&&exports._extend(t,r),isUndefined(t.showHidden)&&(t.showHidden=!1),isUndefined(t.depth)&&(t.depth=2),isUndefined(t.colors)&&(t.colors=!1),isUndefined(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=stylizeWithColor),formatValue(t,e,t.depth)}function stylizeWithColor(e,r){var t=inspect.styles[r];return t?\"\u001b[\"+inspect.colors[t][0]+\"m\"+e+\"\u001b[\"+inspect.colors[t][1]+\"m\":e}function stylizeNoColor(e,r){return e}function arrayToHash(e){var r={};return e.forEach(function(e,t){r[e]=!0}),r}function formatValue(e,r,t){if(e.customInspect&&r&&isFunction(r.inspect)&&r.inspect!==exports.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(t,e);return isString(n)||(n=formatValue(e,n,t)),n}var i=formatPrimitive(e,r);if(i)return i;var o=Object.keys(r),s=arrayToHash(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),isError(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return formatError(r);if(0===o.length){if(isFunction(r)){var u=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+u+\"]\",\"special\")}if(isRegExp(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(isDate(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(isError(r))return formatError(r)}var c=\"\",a=!1,l=[\"{\",\"}\"];if(isArray(r)&&(a=!0,l=[\"[\",\"]\"]),isFunction(r)){c=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\"}if(isRegExp(r)&&(c=\" \"+RegExp.prototype.toString.call(r)),isDate(r)&&(c=\" \"+Date.prototype.toUTCString.call(r)),isError(r)&&(c=\" \"+formatError(r)),0===o.length&&(!a||0==r.length))return l[0]+c+l[1];if(t<0)return isRegExp(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\");e.seen.push(r);var p;return p=a?formatArray(e,r,t,s,o):o.map(function(n){return formatProperty(e,r,t,s,n,a)}),e.seen.pop(),reduceToSingleString(p,c,l)}function formatPrimitive(e,r){if(isUndefined(r))return e.stylize(\"undefined\",\"undefined\");if(isString(r)){var t=\"'\"+JSON.stringify(r).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(t,\"string\")}return isNumber(r)?e.stylize(\"\"+r,\"number\"):isBoolean(r)?e.stylize(\"\"+r,\"boolean\"):isNull(r)?e.stylize(\"null\",\"null\"):void 0}function formatError(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function formatArray(e,r,t,n,i){for(var o=[],s=0,u=r.length;s<u;++s)hasOwnProperty(r,String(s))?o.push(formatProperty(e,r,t,n,String(s),!0)):o.push(\"\");return i.forEach(function(i){i.match(/^\\d+$/)||o.push(formatProperty(e,r,t,n,i,!0))}),o}function formatProperty(e,r,t,n,i,o){var s,u,c;if(c=Object.getOwnPropertyDescriptor(r,i)||{value:r[i]},c.get?u=c.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):c.set&&(u=e.stylize(\"[Setter]\",\"special\")),hasOwnProperty(n,i)||(s=\"[\"+i+\"]\"),u||(e.seen.indexOf(c.value)<0?(u=isNull(t)?formatValue(e,c.value,null):formatValue(e,c.value,t-1),u.indexOf(\"\\n\")>-1&&(u=o?u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+u.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\"))):u=e.stylize(\"[Circular]\",\"special\")),isUndefined(s)){if(o&&i.match(/^\\d+$/))return u;s=JSON.stringify(\"\"+i),s.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,\"name\")):(s=s.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),s=e.stylize(s,\"string\"))}return s+\": \"+u}function reduceToSingleString(e,r,t){var n=0;return e.reduce(function(e,r){return n++,r.indexOf(\"\\n\")>=0&&n++,e+r.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60?t[0]+(\"\"===r?\"\":r+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+t[1]:t[0]+r+\" \"+e.join(\", \")+\" \"+t[1]}function isArray(e){return Array.isArray(e)}function isBoolean(e){return\"boolean\"==typeof e}function isNull(e){return null===e}function isNullOrUndefined(e){return null==e}function isNumber(e){return\"number\"==typeof e}function isString(e){return\"string\"==typeof e}function isSymbol(e){return\"symbol\"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&\"[object RegExp]\"===objectToString(e)}function isObject(e){return\"object\"==typeof e&&null!==e}function isDate(e){return isObject(e)&&\"[object Date]\"===objectToString(e)}function isError(e){return isObject(e)&&(\"[object Error]\"===objectToString(e)||e instanceof Error)}function isFunction(e){return\"function\"==typeof e}function isPrimitive(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?\"0\"+e.toString(10):e.toString(10)}function timestamp(){var e=new Date,r=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(\":\");return[e.getDate(),months[e.getMonth()],r].join(\" \")}function hasOwnProperty(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var formatRegExp=/%[sdj%]/g;exports.format=function(e){if(!isString(e)){for(var r=[],t=0;t<arguments.length;t++)r.push(inspect(arguments[t]));return r.join(\" \")}for(var t=1,n=arguments,i=n.length,o=String(e).replace(formatRegExp,function(e){if(\"%%\"===e)return\"%\";if(t>=i)return e;switch(e){case\"%s\":return String(n[t++]);case\"%d\":return Number(n[t++]);case\"%j\":try{return JSON.stringify(n[t++])}catch(e){return\"[Circular]\"}default:return e}}),s=n[t];t<i;s=n[++t])isNull(s)||!isObject(s)?o+=\" \"+s:o+=\" \"+inspect(s);return o},exports.deprecate=function(e,r){function t(){if(!n){if(process.throwDeprecation)throw new Error(r);process.traceDeprecation?console.trace(r):console.error(r),n=!0}return e.apply(this,arguments)}if(isUndefined(global.process))return function(){return exports.deprecate(e,r).apply(this,arguments)};if(!0===process.noDeprecation)return e;var n=!1;return t};var debugs={},debugEnviron;exports.debuglog=function(e){if(isUndefined(debugEnviron)&&(debugEnviron=process.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!debugs[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(debugEnviron)){var r=process.pid;debugs[e]=function(){var t=exports.format.apply(exports,arguments);console.error(\"%s %d: %s\",e,r,t)}}else debugs[e]=function(){};return debugs[e]},exports.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},exports.isArray=isArray,exports.isBoolean=isBoolean,exports.isNull=isNull,exports.isNullOrUndefined=isNullOrUndefined,exports.isNumber=isNumber,exports.isString=isString,exports.isSymbol=isSymbol,exports.isUndefined=isUndefined,exports.isRegExp=isRegExp,exports.isObject=isObject,exports.isDate=isDate,exports.isError=isError,exports.isFunction=isFunction,exports.isPrimitive=isPrimitive,exports.isBuffer=_dereq_(\"./support/isBuffer\");var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];exports.log=function(){console.log(\"%s - %s\",timestamp(),exports.format.apply(exports,arguments))},exports.inherits=_dereq_(\"inherits\"),exports._extend=function(e,r){if(!r||!isObject(r))return e;for(var t=Object.keys(r),n=t.length;n--;)e[t[n]]=r[t[n]];return e};\n}).call(this,_dereq_('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./support/isBuffer\":35,\"_process\":30,\"inherits\":34}],37:[function(_dereq_,module,exports){\nfunction fromVectorTileJs(e){var r=new Pbf;return writeTile(e,r),r.finish()}function fromGeojsonVt(e){var r={};for(var t in e)r[t]=new GeoJSONWrapper(e[t].features),r[t].name=t;return fromVectorTileJs({layers:r})}function writeTile(e,r){for(var t in e.layers)r.writeMessage(3,writeLayer,e.layers[t])}function writeLayer(e,r){r.writeVarintField(15,e.version||1),r.writeStringField(1,e.name||\"\"),r.writeVarintField(5,e.extent||4096);var t,i={keys:[],values:[],keycache:{},valuecache:{}};for(t=0;t<e.length;t++)i.feature=e.feature(t),r.writeMessage(2,writeFeature,i);var a=i.keys;for(t=0;t<a.length;t++)r.writeStringField(3,a[t]);var o=i.values;for(t=0;t<o.length;t++)r.writeMessage(4,writeValue,o[t])}function writeFeature(e,r){var t=e.feature;void 0!==t.id&&r.writeVarintField(1,t.id),r.writeMessage(2,writeProperties,e),r.writeVarintField(3,t.type),r.writeMessage(4,writeGeometry,t)}function writeProperties(e,r){var t=e.feature,i=e.keys,a=e.values,o=e.keycache,n=e.valuecache;for(var l in t.properties){var s=o[l];void 0===s&&(i.push(l),s=i.length-1,o[l]=s),r.writeVarint(s);var u=t.properties[l],f=typeof u;\"string\"!==f&&\"boolean\"!==f&&\"number\"!==f&&(u=JSON.stringify(u));var w=f+\":\"+u,v=n[w];void 0===v&&(a.push(u),v=a.length-1,n[w]=v),r.writeVarint(v)}}function command(e,r){return(r<<3)+(7&e)}function zigzag(e){return e<<1^e>>31}function writeGeometry(e,r){for(var t=e.loadGeometry(),i=e.type,a=0,o=0,n=t.length,l=0;l<n;l++){var s=t[l],u=1;1===i&&(u=s.length),r.writeVarint(command(1,u));for(var f=0;f<s.length;f++){1===f&&1!==i&&r.writeVarint(command(2,s.length-1));var w=s[f].x-a,v=s[f].y-o;r.writeVarint(zigzag(w)),r.writeVarint(zigzag(v)),a+=w,o+=v}}}function writeValue(e,r){var t=typeof e;\"string\"===t?r.writeStringField(1,e):\"boolean\"===t?r.writeBooleanField(7,e):\"number\"===t&&(e%1!=0?r.writeDoubleField(3,e):e<0?r.writeSVarintField(6,e):r.writeVarintField(5,e))}var Pbf=_dereq_(\"pbf\"),GeoJSONWrapper=_dereq_(\"./lib/geojson_wrapper\");module.exports=fromVectorTileJs,module.exports.fromVectorTileJs=fromVectorTileJs,module.exports.fromGeojsonVt=fromGeojsonVt,module.exports.GeoJSONWrapper=GeoJSONWrapper;\n},{\"./lib/geojson_wrapper\":38,\"pbf\":29}],38:[function(_dereq_,module,exports){\n\"use strict\";function GeoJSONWrapper(e){this.features=e,this.length=e.length}function FeatureWrapper(e){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=4096}var Point=_dereq_(\"@mapbox/point-geometry\"),VectorTileFeature=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature;module.exports=GeoJSONWrapper,GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this.features[e])},FeatureWrapper.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var r=e[t],o=[],a=0;a<r.length;a++)o.push(new Point(r[a][0],r[a][1]));this.geometry.push(o)}return this.geometry},FeatureWrapper.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,a=-1/0,p=0;p<e.length;p++)for(var i=e[p],n=0;n<i.length;n++){var h=i[n];t=Math.min(t,h.x),r=Math.max(r,h.x),o=Math.min(o,h.y),a=Math.max(a,h.y)}return[t,o,r,a]},FeatureWrapper.prototype.toGeoJSON=VectorTileFeature.prototype.toGeoJSON;\n},{\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],39:[function(_dereq_,module,exports){\nvar bundleFn=arguments[3],sources=arguments[4],cache=arguments[5],stringify=JSON.stringify;module.exports=function(r,e){function t(r){d[r]=!0;for(var e in sources[r][1]){var n=sources[r][1][e];d[n]||t(n)}}for(var n,o=Object.keys(cache),a=0,i=o.length;a<i;a++){var s=o[a],u=cache[s].exports;if(u===r||u&&u.default===r){n=s;break}}if(!n){n=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},a=0,i=o.length;a<i;a++){var s=o[a];f[s]=s}sources[n]=[Function([\"require\",\"module\",\"exports\"],\"(\"+r+\")(self)\"),f]}var c=Math.floor(Math.pow(16,8)*Math.random()).toString(16),l={};l[n]=n,sources[c]=[Function([\"require\"],\"var f = require(\"+stringify(n)+\");(f.default ? f.default : f)(self);\"),l];var d={};t(c);var g=\"(\"+bundleFn+\")({\"+Object.keys(d).map(function(r){return stringify(r)+\":[\"+sources[r][0]+\",\"+stringify(sources[r][1])+\"]\"}).join(\",\")+\"},{},[\"+stringify(c)+\"])\",v=window.URL||window.webkitURL||window.mozURL||window.msURL,w=new Blob([g],{type:\"text/javascript\"});if(e&&e.bare)return w;var h=v.createObjectURL(w),b=new Worker(h);return b.objectURL=h,b};\n},{}],40:[function(_dereq_,module,exports){\nmodule.exports.RADIUS=6378137,module.exports.FLATTENING=1/298.257223563,module.exports.POLAR_RADIUS=6356752.3142;\n},{}],41:[function(_dereq_,module,exports){\nmodule.exports={\"version\":\"0.40.1\"}\n},{}],42:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");module.exports={deserialize:function(e,r){var t={};if(!r)return t;for(var i=0,a=e;i<a.length;i+=1){var l=a[i],u=l.layerIds.map(function(e){return r.getLayer(e)}).filter(Boolean);if(0!==u.length)for(var n=u[0].createBucket(util.extend({layers:u},l)),o=0,f=u;o<f.length;o+=1){var s=f[o];t[s.id]=n}}return t}};\n},{\"../util/util\":223}],43:[function(_dereq_,module,exports){\n\"use strict\";function addCircleVertex(e,r,t,i,a){e.emplaceBack(2*r+(i+1)/2,2*t+(a+1)/2)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),circleInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"circle-color\"},{property:\"circle-radius\"},{property:\"circle-blur\"},{property:\"circle-opacity\"},{property:\"circle-stroke-color\"},{property:\"circle-stroke-width\"},{property:\"circle-stroke-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(circleInterface.layoutAttributes),CircleBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(circleInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};CircleBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var o=a[i],n=o.feature,y=o.index,u=o.sourceLayerIndex;if(t.layers[0].filter(n)){var s=loadGeometry(n);t.addFeature(n,s),r.featureIndex.insert(n,s,y,u,t.index)}}},CircleBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},CircleBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},CircleBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},CircleBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},CircleBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=r;i<a.length;i+=1)for(var o=a[i],n=0,y=o;n<y.length;n+=1){var u=y[n],s=u.x,c=u.y;if(!(s<0||s>=EXTENT||c<0||c>=EXTENT)){var l=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),p=l.vertexLength;addCircleVertex(t.layoutVertexArray,s,c,-1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,-1),addCircleVertex(t.layoutVertexArray,s,c,1,1),addCircleVertex(t.layoutVertexArray,s,c,-1,1),t.indexArray.emplaceBack(p,p+1,p+2),t.indexArray.emplaceBack(p,p+3,p+2),l.vertexLength+=4,l.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},CircleBucket.programInterface=circleInterface,module.exports=CircleBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56}],44:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),LineIndexArray=ref$2.LineIndexArray,TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"}],indexArrayType:TriangleIndexArray,indexArrayType2:LineIndexArray,paintAttributes:[{property:\"fill-color\"},{property:\"fill-outline-color\"},{property:\"fill-opacity\"}]},LayoutVertexArrayType=createVertexArrayType(fillInterface.layoutAttributes),FillBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.indexArray2=new LineIndexArray(e.indexArray2),this.programConfigurations=new ProgramConfigurationSet(fillInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments),this.segments2=new SegmentVector(e.segments2)};FillBucket.prototype.populate=function(e,r){for(var t=this,i=0,a=e;i<a.length;i+=1){var n=a[i],o=n.feature,s=n.index,y=n.sourceLayerIndex;if(t.layers[0].filter(o)){var l=loadGeometry(o);t.addFeature(o,l),r.featureIndex.insert(o,l,s,y,t.index)}}},FillBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),indexArray2:this.indexArray2.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),segments2:this.segments2.get()}},FillBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.indexBuffer2=new IndexBuffer(e,this.indexArray2),this.programConfigurations.upload(e)},FillBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},FillBucket.prototype.addFeature=function(e,r){for(var t=this,i=0,a=classifyRings(r,EARCUT_MAX_RINGS);i<a.length;i+=1){for(var n=a[i],o=0,s=0,y=n;s<y.length;s+=1){o+=y[s].length}for(var l=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray),u=l.vertexLength,f=[],g=[],x=0,p=n;x<p.length;x+=1){var h=p[x];if(0!==h.length){h!==n[0]&&g.push(f.length/2);var d=t.segments2.prepareSegment(h.length,t.layoutVertexArray,t.indexArray2),c=d.vertexLength;t.layoutVertexArray.emplaceBack(h[0].x,h[0].y),t.indexArray2.emplaceBack(c+h.length-1,c),f.push(h[0].x),f.push(h[0].y);for(var m=1;m<h.length;m++)t.layoutVertexArray.emplaceBack(h[m].x,h[m].y),t.indexArray2.emplaceBack(c+m-1,c+m),f.push(h[m].x),f.push(h[m].y);d.vertexLength+=h.length,d.primitiveLength+=h.length}}for(var A=earcut(f,g),B=0;B<A.length;B+=3)t.indexArray.emplaceBack(u+A[B],u+A[B+1],u+A[B+2]);l.vertexLength+=o,l.primitiveLength+=A.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillBucket.programInterface=fillInterface,module.exports=FillBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],45:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,r,t,a,i,n,o,s){e.emplaceBack(r,t,2*Math.floor(a*FACTOR)+o,i*FACTOR*2,n*FACTOR*2,Math.round(s))}function isBoundaryEdge(e,r){return e.x===r.x&&(e.x<0||e.x>EXTENT)||e.y===r.y&&(e.y<0||e.y>EXTENT)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,MAX_VERTEX_ARRAY_LENGTH=ref.MAX_VERTEX_ARRAY_LENGTH,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),earcut=_dereq_(\"earcut\"),classifyRings=_dereq_(\"../../util/classify_rings\"),EARCUT_MAX_RINGS=500,fillExtrusionInterface={layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal\",components:3,type:\"Int16\"},{name:\"a_edgedistance\",components:1,type:\"Int16\"}],indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"fill-extrusion-base\"},{property:\"fill-extrusion-height\"},{property:\"fill-extrusion-color\"}]},FACTOR=Math.pow(2,13),LayoutVertexArrayType=createVertexArrayType(fillExtrusionInterface.layoutAttributes),FillExtrusionBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(fillExtrusionInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};FillExtrusionBucket.prototype.populate=function(e,r){for(var t=this,a=0,i=e;a<i.length;a+=1){var n=i[a],o=n.feature,s=n.index,u=n.sourceLayerIndex;if(t.layers[0].filter(o)){var y=loadGeometry(o);t.addFeature(o,y),r.featureIndex.insert(o,y,s,u,t.index)}}},FillExtrusionBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},FillExtrusionBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},FillExtrusionBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},FillExtrusionBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},FillExtrusionBucket.prototype.addFeature=function(e,r){for(var t=this,a=0,i=classifyRings(r,EARCUT_MAX_RINGS);a<i.length;a+=1){for(var n=i[a],o=0,s=0,u=n;s<u.length;s+=1){o+=u[s].length}for(var y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray),l=0,x=n;l<x.length;l+=1){var f=x[l];if(0!==f.length)for(var g=0,p=0;p<f.length;p++){var d=f[p];if(p>=1){var h=f[p-1];if(!isBoundaryEdge(d,h)){y.vertexLength+4>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(4,t.layoutVertexArray,t.indexArray));var A=d.sub(h)._perp()._unit();addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,d.x,d.y,A.x,A.y,0,1,g),g+=h.dist(d),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,0,g),addVertex(t.layoutVertexArray,h.x,h.y,A.x,A.y,0,1,g);var c=y.vertexLength;t.indexArray.emplaceBack(c,c+1,c+2),t.indexArray.emplaceBack(c+1,c+2,c+3),y.vertexLength+=4,y.primitiveLength+=2}}}}y.vertexLength+o>MAX_VERTEX_ARRAY_LENGTH&&(y=t.segments.prepareSegment(o,t.layoutVertexArray,t.indexArray));for(var m=[],V=[],E=y.vertexLength,v=0,_=n;v<_.length;v+=1){var T=_[v];if(0!==T.length){T!==n[0]&&V.push(m.length/2);for(var B=0;B<T.length;B++){var R=T[B];addVertex(t.layoutVertexArray,R.x,R.y,0,0,1,1,0),m.push(R.x),m.push(R.y)}}}for(var I=earcut(m,V),C=0;C<I.length;C+=3)t.indexArray.emplaceBack(E+I[C],E+I[C+1],E+I[C+2]);y.primitiveLength+=I.length/3,y.vertexLength+=o}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e.properties)},FillExtrusionBucket.programInterface=fillExtrusionInterface,module.exports=FillExtrusionBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../util/classify_rings\":205,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"earcut\":11}],46:[function(_dereq_,module,exports){\n\"use strict\";function addLineVertex(e,t,r,i,a,n,s){e.emplaceBack(t.x,t.y,i?1:0,a?1:-1,Math.round(EXTRUDE_SCALE*r.x)+128,Math.round(EXTRUDE_SCALE*r.y)+128,1+(0===n?0:n<0?-1:1)|(s*LINE_DISTANCE_SCALE&63)<<2,s*LINE_DISTANCE_SCALE>>6)}var ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,loadGeometry=_dereq_(\"../load_geometry\"),EXTENT=_dereq_(\"../extent\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,EXTRUDE_SCALE=63,COS_HALF_SHARP_CORNER=Math.cos(Math.PI/180*37.5),SHARP_CORNER_OFFSET=15,LINE_DISTANCE_BUFFER_BITS=15,LINE_DISTANCE_SCALE=.5,MAX_LINE_DISTANCE=Math.pow(2,LINE_DISTANCE_BUFFER_BITS-1)/LINE_DISTANCE_SCALE,lineInterface={layoutAttributes:[{name:\"a_pos_normal\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],paintAttributes:[{property:\"line-color\"},{property:\"line-blur\"},{property:\"line-opacity\"},{property:\"line-gap-width\",name:\"gapwidth\"},{property:\"line-offset\"},{property:\"line-width\"},{property:\"line-width\",name:\"floorwidth\",useIntegerZoom:!0}],indexArrayType:TriangleIndexArray},LayoutVertexArrayType=createVertexArrayType(lineInterface.layoutAttributes),LineBucket=function(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.layoutVertexArray=new LayoutVertexArrayType(e.layoutVertexArray),this.indexArray=new TriangleIndexArray(e.indexArray),this.programConfigurations=new ProgramConfigurationSet(lineInterface,e.layers,e.zoom,e.programConfigurations),this.segments=new SegmentVector(e.segments)};LineBucket.prototype.populate=function(e,t){for(var r=this,i=0,a=e;i<a.length;i+=1){var n=a[i],s=n.feature,o=n.index,u=n.sourceLayerIndex;if(r.layers[0].filter(s)){var d=loadGeometry(s);r.addFeature(s,d),t.featureIndex.insert(s,d,o,u,r.index)}}},LineBucket.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},LineBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get()}},LineBucket.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e)},LineBucket.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},LineBucket.prototype.addFeature=function(e,t){for(var r=this,i=this.layers[0].layout,a=this.layers[0].getLayoutValue(\"line-join\",{zoom:this.zoom},e.properties),n=i[\"line-cap\"],s=i[\"line-miter-limit\"],o=i[\"line-round-limit\"],u=0,d=t;u<d.length;u+=1){var l=d[u];r.addLine(l,e,a,n,s,o)}},LineBucket.prototype.addLine=function(e,t,r,i,a,n){for(var s=this,o=t.properties,u=\"Polygon\"===vectorTileFeatureTypes[t.type],d=e.length;d>=2&&e[d-1].equals(e[d-2]);)d--;for(var l=0;l<d-1&&e[l].equals(e[l+1]);)l++;if(!(d<(u?3:2))){\"bevel\"===r&&(a=1.05);var y=SHARP_CORNER_OFFSET*(EXTENT/(512*this.overscaling)),h=e[l],p=this.segments.prepareSegment(10*d,this.layoutVertexArray,this.indexArray);this.distance=0;var c,f,x,m=i,g=u?\"butt\":i,_=!0,A=void 0,v=void 0,V=void 0,C=void 0;this.e1=this.e2=this.e3=-1,u&&(c=e[d-2],C=h.sub(c)._unit()._perp());for(var L=l;L<d;L++)if(!(v=u&&L===d-1?e[l+1]:e[L+1])||!e[L].equals(v)){C&&(V=C),c&&(A=c),c=e[L],C=v?v.sub(c)._unit()._perp():V,V=V||C;var E=V.add(C);0===E.x&&0===E.y||E._unit();var S=E.x*C.x+E.y*C.y,I=0!==S?1/S:1/0,T=S<COS_HALF_SHARP_CORNER&&A&&v;if(T&&L>l){var B=c.dist(A);if(B>2*y){var b=c.sub(c.sub(A)._mult(y/B)._round());s.distance+=b.dist(A),s.addCurrentVertex(b,s.distance,V.mult(1),0,0,!1,p),A=b}}var N=A&&v,k=N?r:v?m:g;if(N&&\"round\"===k&&(I<n?k=\"miter\":I<=2&&(k=\"fakeround\")),\"miter\"===k&&I>a&&(k=\"bevel\"),\"bevel\"===k&&(I>2&&(k=\"flipbevel\"),I<a&&(k=\"miter\")),A&&(s.distance+=c.dist(A)),\"miter\"===k)E._mult(I),s.addCurrentVertex(c,s.distance,E,0,0,!1,p);else if(\"flipbevel\"===k){if(I>100)E=C.clone().mult(-1);else{var R=V.x*C.y-V.y*C.x>0?-1:1,F=I*V.add(C).mag()/V.sub(C).mag();E._perp()._mult(F*R)}s.addCurrentVertex(c,s.distance,E,0,0,!1,p),s.addCurrentVertex(c,s.distance,E.mult(-1),0,0,!1,p)}else if(\"bevel\"===k||\"fakeround\"===k){var q=V.x*C.y-V.y*C.x>0,P=-Math.sqrt(I*I-1);if(q?(x=0,f=P):(f=0,x=P),_||s.addCurrentVertex(c,s.distance,V,f,x,!1,p),\"fakeround\"===k){for(var w=Math.floor(8*(.5-(S-.5))),z=void 0,D=0;D<w;D++)z=C.mult((D+1)/(w+1))._add(V)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p);s.addPieSliceVertex(c,s.distance,E,q,p);for(var M=w-1;M>=0;M--)z=V.mult((M+1)/(w+1))._add(C)._unit(),s.addPieSliceVertex(c,s.distance,z,q,p)}v&&s.addCurrentVertex(c,s.distance,C,-f,-x,!1,p)}else\"butt\"===k?(_||s.addCurrentVertex(c,s.distance,V,0,0,!1,p),v&&s.addCurrentVertex(c,s.distance,C,0,0,!1,p)):\"square\"===k?(_||(s.addCurrentVertex(c,s.distance,V,1,1,!1,p),s.e1=s.e2=-1),v&&s.addCurrentVertex(c,s.distance,C,-1,-1,!1,p)):\"round\"===k&&(_||(s.addCurrentVertex(c,s.distance,V,0,0,!1,p),s.addCurrentVertex(c,s.distance,V,1,1,!0,p),s.e1=s.e2=-1),v&&(s.addCurrentVertex(c,s.distance,C,-1,-1,!0,p),s.addCurrentVertex(c,s.distance,C,0,0,!1,p)));if(T&&L<d-1){var O=c.dist(v);if(O>2*y){var X=c.add(v.sub(c)._mult(y/O)._round());s.distance+=X.dist(c),s.addCurrentVertex(X,s.distance,C.mult(1),0,0,!1,p),c=X}}_=!1}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,o)}},LineBucket.prototype.addCurrentVertex=function(e,t,r,i,a,n,s){var o,u=this.layoutVertexArray,d=this.indexArray;o=r.clone(),i&&o._sub(r.perp()._mult(i)),addLineVertex(u,e,o,n,!1,i,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,o=r.mult(-1),a&&o._sub(r.perp()._mult(a)),addLineVertex(u,e,o,n,!0,-a,t),this.e3=s.vertexLength++,this.e1>=0&&this.e2>=0&&(d.emplaceBack(this.e1,this.e2,this.e3),s.primitiveLength++),this.e1=this.e2,this.e2=this.e3,t>MAX_LINE_DISTANCE/2&&(this.distance=0,this.addCurrentVertex(e,this.distance,r,i,a,n,s))},LineBucket.prototype.addPieSliceVertex=function(e,t,r,i,a){r=r.mult(i?-1:1);var n=this.layoutVertexArray,s=this.indexArray;addLineVertex(n,e,r,!1,i,0,t),this.e3=a.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),a.primitiveLength++),i?this.e2=this.e3:this.e1=this.e3},LineBucket.programInterface=lineInterface,module.exports=LineBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/vector-tile\":6}],47:[function(_dereq_,module,exports){\n\"use strict\";function addVertex(e,t,o,r,a,i,n,s){e.emplaceBack(t,o,Math.round(64*r),Math.round(64*a),i,n,s?s[0]:void 0,s?s[1]:void 0)}function addDynamicAttributes(e,t,o,r){var a=2*Math.PI,i=packUint8ToFloat((o+a)%a/a*255,10*r);e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i)}function addCollisionBoxVertex(e,t,o,r,a,i){return e.emplaceBack(t.x,t.y,o.x,o.y,Math.round(r.x),Math.round(r.y),10*a,10*i)}function getSizeData(e,t,o){var r={};if(r.isFeatureConstant=t.isLayoutValueFeatureConstant(o),r.isZoomConstant=t.isLayoutValueZoomConstant(o),r.isFeatureConstant&&(r.layoutSize=t.getLayoutValue(o,{zoom:e+1})),!r.isZoomConstant){for(var a=t.getLayoutValueStopZoomLevels(o),i=0;i<a.length&&a[i]<=e;)i++;i=Math.max(0,i-1);for(var n=i;n<a.length&&a[n]<e+1;)n++;n=Math.min(a.length-1,n),r.coveringZoomRange=[a[i],a[n]],t.isLayoutValueFeatureConstant(o)&&(r.coveringStopValues=[t.getLayoutValue(o,{zoom:a[i]}),t.getLayoutValue(o,{zoom:a[n]})]),r.functionBase=t.getLayoutProperty(o).base,void 0===r.functionBase&&(r.functionBase=1),r.functionType=t.getLayoutProperty(o).type||\"exponential\"}return r}function getSizeVertexData(e,t,o,r,a){return e.isLayoutValueZoomConstant(r)&&!e.isLayoutValueFeatureConstant(r)?[10*e.getLayoutValue(r,{},a)]:e.isLayoutValueZoomConstant(r)||e.isLayoutValueFeatureConstant(r)?null:[10*e.getLayoutValue(r,{zoom:o[0]},a),10*e.getLayoutValue(r,{zoom:o[1]},a)]}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../segment\"),SegmentVector=ref.SegmentVector,VertexBuffer=_dereq_(\"../../gl/vertex_buffer\"),IndexBuffer=_dereq_(\"../../gl/index_buffer\"),ref$1=_dereq_(\"../program_configuration\"),ProgramConfigurationSet=ref$1.ProgramConfigurationSet,createVertexArrayType=_dereq_(\"../vertex_array_type\"),ref$2=_dereq_(\"../index_array_type\"),TriangleIndexArray=ref$2.TriangleIndexArray,LineIndexArray=ref$2.LineIndexArray,EXTENT=_dereq_(\"../extent\"),ref$3=_dereq_(\"../../shaders/encode_attribute\"),packUint8ToFloat=ref$3.packUint8ToFloat,Anchor=_dereq_(\"../../symbol/anchor\"),getAnchors=_dereq_(\"../../symbol/get_anchors\"),resolveTokens=_dereq_(\"../../util/token\"),ref$4=_dereq_(\"../../symbol/quads\"),getGlyphQuads=ref$4.getGlyphQuads,getIconQuads=ref$4.getIconQuads,ref$5=_dereq_(\"../../symbol/shaping\"),shapeText=ref$5.shapeText,shapeIcon=ref$5.shapeIcon,WritingMode=ref$5.WritingMode,transformText=_dereq_(\"../../symbol/transform_text\"),mergeLines=_dereq_(\"../../symbol/mergelines\"),clipLine=_dereq_(\"../../symbol/clip_line\"),util=_dereq_(\"../../util/util\"),scriptDetection=_dereq_(\"../../util/script_detection\"),loadGeometry=_dereq_(\"../load_geometry\"),CollisionFeature=_dereq_(\"../../symbol/collision_feature\"),findPoleOfInaccessibility=_dereq_(\"../../util/find_pole_of_inaccessibility\"),classifyRings=_dereq_(\"../../util/classify_rings\"),vectorTileFeatureTypes=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.types,createStructArrayType=_dereq_(\"../../util/struct_array\"),verticalizePunctuation=_dereq_(\"../../util/verticalize_punctuation\"),PlacedSymbolArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Float32\",name:\"placementZoom\"},{type:\"Uint8\",name:\"vertical\"}]}),GlyphOffsetArray=createStructArrayType({members:[{type:\"Float32\",name:\"offsetX\"}]}),LineVertexArray=createStructArrayType({members:[{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"}]}),layoutAttributes=[{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}],dynamicLayoutAttributes=[{name:\"a_projected_pos\",components:3,type:\"Float32\"}],symbolInterfaces={text:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"text-color\",name:\"fill_color\"},{property:\"text-halo-color\",name:\"halo_color\"},{property:\"text-halo-width\",name:\"halo_width\"},{property:\"text-halo-blur\",name:\"halo_blur\"},{property:\"text-opacity\",name:\"opacity\"}]},icon:{layoutAttributes:layoutAttributes,dynamicLayoutAttributes:dynamicLayoutAttributes,indexArrayType:TriangleIndexArray,paintAttributes:[{property:\"icon-color\",name:\"fill_color\"},{property:\"icon-halo-color\",name:\"halo_color\"},{property:\"icon-halo-width\",name:\"halo_width\"},{property:\"icon-halo-blur\",name:\"halo_blur\"},{property:\"icon-opacity\",name:\"opacity\"}]},collisionBox:{layoutAttributes:[{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"},{name:\"a_data\",components:2,type:\"Uint8\"}],indexArrayType:LineIndexArray}},SymbolBuffers=function(e,t,o,r){this.programInterface=e;var a=createVertexArrayType(e.layoutAttributes),i=e.indexArrayType;if(this.layoutVertexArray=new a(r&&r.layoutVertexArray),this.indexArray=new i(r&&r.indexArray),this.programConfigurations=new ProgramConfigurationSet(e,t,o,r&&r.programConfigurations),this.segments=new SegmentVector(r&&r.segments),e.dynamicLayoutAttributes){var n=createVertexArrayType(e.dynamicLayoutAttributes);this.dynamicLayoutVertexArray=new n(r&&r.dynamicLayoutVertexArray)}};SymbolBuffers.prototype.serialize=function(e){return{layoutVertexArray:this.layoutVertexArray.serialize(e),indexArray:this.indexArray.serialize(e),programConfigurations:this.programConfigurations.serialize(e),segments:this.segments.get(),dynamicLayoutVertexArray:this.dynamicLayoutVertexArray&&this.dynamicLayoutVertexArray.serialize(e)}},SymbolBuffers.prototype.upload=function(e){this.layoutVertexBuffer=new VertexBuffer(e,this.layoutVertexArray),this.indexBuffer=new IndexBuffer(e,this.indexArray),this.programConfigurations.upload(e),this.programInterface.dynamicLayoutAttributes&&(this.dynamicLayoutVertexBuffer=new VertexBuffer(e,this.dynamicLayoutVertexArray,!0))},SymbolBuffers.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer&&this.dynamicLayoutVertexBuffer.destroy())};var SymbolBucket=function(e){if(this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.index=e.index,this.sdfIcons=e.sdfIcons,this.iconsNeedLinear=e.iconsNeedLinear,this.pixelRatio=e.pixelRatio,e.text)this.text=new SymbolBuffers(symbolInterfaces.text,e.layers,e.zoom,e.text),this.icon=new SymbolBuffers(symbolInterfaces.icon,e.layers,e.zoom,e.icon),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,e.layers,e.zoom,e.collisionBox),this.textSizeData=e.textSizeData,this.iconSizeData=e.iconSizeData,this.placedGlyphArray=new PlacedSymbolArray(e.placedGlyphArray),this.placedIconArray=new PlacedSymbolArray(e.placedIconArray),this.glyphOffsetArray=new GlyphOffsetArray(e.glyphOffsetArray),this.lineVertexArray=new LineVertexArray(e.lineVertexArray);else{var t=this.layers[0];this.textSizeData=getSizeData(this.zoom,t,\"text-size\"),this.iconSizeData=getSizeData(this.zoom,t,\"icon-size\")}};SymbolBucket.prototype.populate=function(e,t){var o=this,r=this.layers[0],a=r.layout,i=a[\"text-font\"],n=(!r.isLayoutValueFeatureConstant(\"text-field\")||a[\"text-field\"])&&i,s=!r.isLayoutValueFeatureConstant(\"icon-image\")||a[\"icon-image\"];if(this.features=[],n||s){for(var l=t.iconDependencies,y=t.glyphDependencies,c=y[i]=y[i]||{},u={zoom:this.zoom},p=0,x=e;p<x.length;p+=1){var m=x[p],h=m.feature,d=m.index,f=m.sourceLayerIndex;if(r.filter(h)){var g=void 0;n&&(g=r.getLayoutValue(\"text-field\",u,h.properties),r.isLayoutValueFeatureConstant(\"text-field\")&&(g=resolveTokens(h.properties,g)),g=transformText(g,r,u,h.properties));var b=void 0;if(s&&(b=r.getLayoutValue(\"icon-image\",u,h.properties),r.isLayoutValueFeatureConstant(\"icon-image\")&&(b=resolveTokens(h.properties,b))),(g||b)&&(o.features.push({text:g,icon:b,index:d,sourceLayerIndex:f,geometry:loadGeometry(h),properties:h.properties,type:vectorTileFeatureTypes[h.type]}),b&&(l[b]=!0),g))for(var A=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],v=scriptDetection.allowsVerticalWritingMode(g),S=0;S<g.length;S++)if(c[g.charCodeAt(S)]=!0,A&&v){var I=verticalizePunctuation.lookup[g.charAt(S)];I&&(c[I.charCodeAt(0)]=!0)}}}\"line\"===a[\"symbol-placement\"]&&(this.features=mergeLines(this.features))}},SymbolBucket.prototype.isEmpty=function(){return 0===this.icon.layoutVertexArray.length&&0===this.text.layoutVertexArray.length&&0===this.collisionBox.layoutVertexArray.length},SymbolBucket.prototype.serialize=function(e){return{zoom:this.zoom,layerIds:this.layers.map(function(e){return e.id}),sdfIcons:this.sdfIcons,iconsNeedLinear:this.iconsNeedLinear,textSizeData:this.textSizeData,iconSizeData:this.iconSizeData,placedGlyphArray:this.placedGlyphArray.serialize(e),placedIconArray:this.placedIconArray.serialize(e),glyphOffsetArray:this.glyphOffsetArray.serialize(e),lineVertexArray:this.lineVertexArray.serialize(e),text:this.text.serialize(e),icon:this.icon.serialize(e),collisionBox:this.collisionBox.serialize(e)}},SymbolBucket.prototype.upload=function(e){this.text.upload(e),this.icon.upload(e),this.collisionBox.upload(e)},SymbolBucket.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.collisionBox.destroy()},SymbolBucket.prototype.prepare=function(e,t,o,r){var a=this;this.symbolInstances=[];var i=512*this.overscaling;this.tilePixelRatio=EXTENT/i,this.compareText={},this.iconsNeedLinear=!1;for(var n=this.layers[0].layout,s=24*n[\"text-line-height\"],l=n[\"text-font\"].join(\",\"),y=\"map\"===n[\"text-rotation-alignment\"]&&\"line\"===n[\"symbol-placement\"],c=e[l]||{},u=t[l]||{},p=0,x=a.features;p<x.length;p+=1){var m=x[p],h={},d=m.text;if(d){var f=a.layers[0].getLayoutValue(\"text-offset\",{zoom:a.zoom},m.properties).map(function(e){return 24*e}),g=24*a.layers[0].getLayoutValue(\"text-letter-spacing\",{zoom:a.zoom},m.properties),b=scriptDetection.allowsLetterSpacing(d)?g:0,A=a.layers[0].getLayoutValue(\"text-anchor\",{zoom:a.zoom},m.properties),v=a.layers[0].getLayoutValue(\"text-justify\",{zoom:a.zoom},m.properties),S=\"line\"!==n[\"symbol-placement\"]?24*a.layers[0].getLayoutValue(\"text-max-width\",{zoom:a.zoom},m.properties):0,I=function(e,t){return shapeText(e,c,S,s,A,v,b,f,24,t)};h[WritingMode.horizontal]=I(d,WritingMode.horizontal),scriptDetection.allowsVerticalWritingMode(d)&&y&&(h[WritingMode.vertical]=I(d,WritingMode.vertical))}var B=void 0;if(m.icon){var z=o[m.icon];z&&(B=shapeIcon(r[m.icon],a.layers[0].getLayoutValue(\"icon-offset\",{zoom:a.zoom},m.properties),a.layers[0].getLayoutValue(\"icon-anchor\",{zoom:a.zoom},m.properties)),void 0===a.sdfIcons?a.sdfIcons=z.sdf:a.sdfIcons!==z.sdf&&util.warnOnce(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),z.pixelRatio!==a.pixelRatio?a.iconsNeedLinear=!0:0===n[\"icon-rotate\"]&&a.layers[0].isLayoutValueFeatureConstant(\"icon-rotate\")||(a.iconsNeedLinear=!0))}(h[WritingMode.horizontal]||B)&&a.addFeature(m,h,B,u)}},SymbolBucket.prototype.addFeature=function(e,t,o,r){var a=this,i=this.layers[0].getLayoutValue(\"text-size\",{zoom:this.zoom+1},e.properties),n=this.layers[0].getLayoutValue(\"icon-size\",{zoom:this.zoom+1},e.properties),s=this.layers[0].getLayoutValue(\"text-offset\",{zoom:this.zoom},e.properties),l=this.layers[0].getLayoutValue(\"icon-offset\",{zoom:this.zoom},e.properties),y=this.layers[0].getLayoutValue(\"text-size\",{zoom:18},e.properties);void 0===y&&(y=i);var c=this.layers[0].layout,u=i/24,p=this.tilePixelRatio*u,x=this.tilePixelRatio*y/24,m=this.tilePixelRatio*n,h=this.tilePixelRatio*c[\"symbol-spacing\"],d=c[\"symbol-avoid-edges\"],f=c[\"text-padding\"]*this.tilePixelRatio,g=c[\"icon-padding\"]*this.tilePixelRatio,b=c[\"text-max-angle\"]/180*Math.PI,A=\"map\"===c[\"text-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],v=\"map\"===c[\"icon-rotation-alignment\"]&&\"line\"===c[\"symbol-placement\"],S=c[\"text-allow-overlap\"]||c[\"icon-allow-overlap\"]||c[\"text-ignore-placement\"]||c[\"icon-ignore-placement\"],I=c[\"symbol-placement\"],B=h/2,z=function(i,n){var y=!(n.x<0||n.x>EXTENT||n.y<0||n.y>EXTENT);if(!d||y){var c=y||S;a.addSymbolInstance(n,i,t,o,a.layers[0],c,a.collisionBoxArray,e.index,e.sourceLayerIndex,a.index,p,f,A,s,m,g,v,l,{zoom:a.zoom},e.properties,r)}};if(\"line\"===I)for(var V=0,L=clipLine(e.geometry,0,0,EXTENT,EXTENT);V<L.length;V+=1)for(var T=L[V],w=getAnchors(T,h,b,t[WritingMode.vertical]||t[WritingMode.horizontal],o,24,x,a.overscaling,EXTENT),M=0,C=w;M<C.length;M+=1){var _=C[M],k=t[WritingMode.horizontal];k&&a.anchorIsTooClose(k.text,B,_)||z(T,_)}else if(\"Polygon\"===e.type)for(var P=0,F=classifyRings(e.geometry,0);P<F.length;P+=1){var E=F[P],D=findPoleOfInaccessibility(E,16);z(E[0],new Anchor(D.x,D.y,0))}else if(\"LineString\"===e.type)for(var q=0,O=e.geometry;q<O.length;q+=1){var N=O[q];z(N,new Anchor(N[0].x,N[0].y,0))}else if(\"Point\"===e.type)for(var W=0,R=e.geometry;W<R.length;W+=1)for(var G=R[W],$=0,U=G;$<U.length;$+=1){var X=U[$];z([X],new Anchor(X.x,X.y,0))}},SymbolBucket.prototype.anchorIsTooClose=function(e,t,o){var r=this.compareText;if(e in r){for(var a=r[e],i=a.length-1;i>=0;i--)if(o.dist(a[i])<t)return!0}else r[e]=[];return r[e].push(o),!1},SymbolBucket.prototype.place=function(e,t){var o=this;this.text=new SymbolBuffers(symbolInterfaces.text,this.layers,this.zoom),this.icon=new SymbolBuffers(symbolInterfaces.icon,this.layers,this.zoom),this.collisionBox=new SymbolBuffers(symbolInterfaces.collisionBox,this.layers,this.zoom),this.placedGlyphArray=new PlacedSymbolArray,this.placedIconArray=new PlacedSymbolArray,this.glyphOffsetArray=new GlyphOffsetArray,this.lineVertexArray=new LineVertexArray;var r=this.layers[0],a=r.layout,i=e.maxScale,n=\"map\"===a[\"text-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"],s=\"map\"===a[\"icon-rotation-alignment\"]&&\"line\"===a[\"symbol-placement\"];if(a[\"text-allow-overlap\"]||a[\"icon-allow-overlap\"]||a[\"text-ignore-placement\"]||a[\"icon-ignore-placement\"]){var l=e.angle,y=Math.sin(l),c=Math.cos(l);this.symbolInstances.sort(function(e,t){return(y*e.anchor.x+c*e.anchor.y|0)-(y*t.anchor.x+c*t.anchor.y|0)||t.featureIndex-e.featureIndex})}for(var u=0,p=o.symbolInstances;u<p.length;u+=1){var x=p[u],m={boxStartIndex:x.textBoxStartIndex,boxEndIndex:x.textBoxEndIndex},h={boxStartIndex:x.iconBoxStartIndex,boxEndIndex:x.iconBoxEndIndex},d=!(x.textBoxStartIndex===x.textBoxEndIndex),f=!(x.iconBoxStartIndex===x.iconBoxEndIndex),g=a[\"text-optional\"]||!d,b=a[\"icon-optional\"]||!f,A=d?e.placeCollisionFeature(m,a[\"text-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale,v=f?e.placeCollisionFeature(h,a[\"icon-allow-overlap\"],a[\"symbol-avoid-edges\"]):e.minScale;if(g||b?!b&&A?A=Math.max(v,A):!g&&v&&(v=Math.max(v,A)):v=A=Math.max(v,A),d||f){for(var S=x.line,I=o.lineVertexArray.length,B=0;B<S.length;B++)o.lineVertexArray.emplaceBack(S[B].x,S[B].y);var z=o.lineVertexArray.length-I;if(d&&(e.insertCollisionFeature(m,A,a[\"text-ignore-placement\"]),A<=i)){var V=getSizeVertexData(r,o.zoom,o.textSizeData.coveringZoomRange,\"text-size\",x.featureProperties);o.addSymbols(o.text,x.glyphQuads,A,V,a[\"text-keep-upright\"],x.textOffset,n,e.angle,x.featureProperties,x.writingModes,x.anchor,I,z,o.placedGlyphArray)}if(f&&(e.insertCollisionFeature(h,v,a[\"icon-ignore-placement\"]),v<=i)){var L=getSizeVertexData(r,o.zoom,o.iconSizeData.coveringZoomRange,\"icon-size\",x.featureProperties);o.addSymbols(o.icon,x.iconQuads,v,L,a[\"icon-keep-upright\"],x.iconOffset,s,e.angle,x.featureProperties,0,x.anchor,I,z,o.placedIconArray)}}}t&&this.addToDebugBuffers(e)},SymbolBucket.prototype.addSymbols=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x){for(var m=this,h=e.indexArray,d=e.layoutVertexArray,f=e.dynamicLayoutVertexArray,g=this.zoom,b=Math.max(Math.log(o)/Math.LN2+g,0),A=this.glyphOffsetArray.length,v=(c.angle+s+2*Math.PI)%(2*Math.PI),S=v>1*Math.PI/4&&v<=3*Math.PI/4||v>5*Math.PI/4&&v<=7*Math.PI/4,I=Boolean(y&WritingMode.vertical)&&S,B=0,z=t;B<z.length;B+=1){var V=z[B];if(!n||!a||V.writingMode===WritingMode.vertical===I){var L=V.tl,T=V.tr,w=V.bl,M=V.br,C=V.tex,_=e.segments.prepareSegment(4,e.layoutVertexArray,e.indexArray),k=_.vertexLength,P=V.glyphOffset[1];addVertex(d,c.x,c.y,L.x,P+L.y,C.x,C.y,r),addVertex(d,c.x,c.y,T.x,P+T.y,C.x+C.w,C.y,r),addVertex(d,c.x,c.y,w.x,P+w.y,C.x,C.y+C.h,r),addVertex(d,c.x,c.y,M.x,P+M.y,C.x+C.w,C.y+C.h,r),addDynamicAttributes(f,c,0,b),h.emplaceBack(k,k+1,k+2),h.emplaceBack(k+1,k+2,k+3),_.vertexLength+=4,_.primitiveLength+=2,m.glyphOffsetArray.emplaceBack(V.glyphOffset[0])}}x.emplaceBack(c.x,c.y,A,this.glyphOffsetArray.length-A,u,p,c.segment,r?r[0]:0,r?r[1]:0,i[0],i[1],b,I),e.programConfigurations.populatePaintArrays(e.layoutVertexArray.length,l)},SymbolBucket.prototype.addToDebugBuffers=function(e){for(var t=this,o=this.collisionBox,r=o.layoutVertexArray,a=o.indexArray,i=-e.angle,n=e.yStretch,s=0,l=t.symbolInstances;s<l.length;s+=1){var y=l[s];y.textCollisionFeature={boxStartIndex:y.textBoxStartIndex,boxEndIndex:y.textBoxEndIndex},y.iconCollisionFeature={boxStartIndex:y.iconBoxStartIndex,boxEndIndex:y.iconBoxEndIndex};for(var c=0;c<2;c++){var u=y[0===c?\"textCollisionFeature\":\"iconCollisionFeature\"];if(u)for(var p=u.boxStartIndex;p<u.boxEndIndex;p++){var x=t.collisionBoxArray.get(p);if(!(1===e.perspectiveRatio&&x.maxScale<1)){var m=x.anchorPoint,h=new Point(x.x1,x.y1*n)._rotate(i),d=new Point(x.x2,x.y1*n)._rotate(i),f=new Point(x.x1,x.y2*n)._rotate(i),g=new Point(x.x2,x.y2*n)._rotate(i),b=Math.max(0,Math.min(25,t.zoom+Math.log(x.maxScale)/Math.LN2)),A=Math.max(0,Math.min(25,t.zoom+Math.log(x.placementScale)/Math.LN2)),v=o.segments.prepareSegment(4,o.layoutVertexArray,o.indexArray),S=v.vertexLength;addCollisionBoxVertex(r,m,y.anchor,h,b,A),addCollisionBoxVertex(r,m,y.anchor,d,b,A),addCollisionBoxVertex(r,m,y.anchor,g,b,A),addCollisionBoxVertex(r,m,y.anchor,f,b,A),a.emplaceBack(S,S+1),a.emplaceBack(S+1,S+2),a.emplaceBack(S+2,S+3),a.emplaceBack(S+3,S),v.vertexLength+=4,v.primitiveLength+=4}}}}},SymbolBucket.prototype.addSymbolInstance=function(e,t,o,r,a,i,n,s,l,y,c,u,p,x,m,h,d,f,g,b,A){var v,S,I=[],B=[];for(var z in o){var V=parseInt(z,10);o[V]&&(B=B.concat(i?getGlyphQuads(e,o[V],a,p,g,b,A):[]),v=new CollisionFeature(n,t,e,s,l,y,o[V],c,u,p,!1))}var L=v?v.boxStartIndex:this.collisionBoxArray.length,T=v?v.boxEndIndex:this.collisionBoxArray.length;r&&(I=i?getIconQuads(e,r,a,d,o[WritingMode.horizontal],g,b):[],S=new CollisionFeature(n,t,e,s,l,y,r,m,h,d,!0));var w=S?S.boxStartIndex:this.collisionBoxArray.length,M=S?S.boxEndIndex:this.collisionBoxArray.length;T>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),M>SymbolBucket.MAX_INSTANCES&&util.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");var C=(o[WritingMode.vertical]?WritingMode.vertical:0)|(o[WritingMode.horizontal]?WritingMode.horizontal:0);this.symbolInstances.push({textBoxStartIndex:L,textBoxEndIndex:T,iconBoxStartIndex:w,iconBoxEndIndex:M,glyphQuads:B,iconQuads:I,textOffset:x,iconOffset:f,anchor:e,line:t,featureIndex:s,featureProperties:b,writingModes:C})},SymbolBucket.programInterfaces=symbolInterfaces,SymbolBucket.MAX_INSTANCES=65535,SymbolBucket.addDynamicAttributes=addDynamicAttributes,module.exports=SymbolBucket;\n},{\"../../gl/index_buffer\":61,\"../../gl/vertex_buffer\":62,\"../../shaders/encode_attribute\":85,\"../../symbol/anchor\":167,\"../../symbol/clip_line\":169,\"../../symbol/collision_feature\":171,\"../../symbol/get_anchors\":173,\"../../symbol/mergelines\":174,\"../../symbol/quads\":176,\"../../symbol/shaping\":177,\"../../symbol/transform_text\":179,\"../../util/classify_rings\":205,\"../../util/find_pole_of_inaccessibility\":211,\"../../util/script_detection\":218,\"../../util/struct_array\":220,\"../../util/token\":222,\"../../util/util\":223,\"../../util/verticalize_punctuation\":225,\"../extent\":48,\"../index_array_type\":50,\"../load_geometry\":51,\"../program_configuration\":53,\"../segment\":55,\"../vertex_array_type\":56,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],48:[function(_dereq_,module,exports){\n\"use strict\";module.exports=8192;\n},{}],49:[function(_dereq_,module,exports){\n\"use strict\";function topDownFeatureComparator(e,r){return r-e}var Point=_dereq_(\"@mapbox/point-geometry\"),loadGeometry=_dereq_(\"./load_geometry\"),EXTENT=_dereq_(\"./extent\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),createStructArrayType=_dereq_(\"../util/struct_array\"),Grid=_dereq_(\"grid-index\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),arraysIntersect=_dereq_(\"../util/util\").arraysIntersect,FeatureIndexArray=createStructArrayType({members:[{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]}),FeatureIndex=function(e,r,t,a){this.coord=e,this.overscaling=r,this.x=e.x,this.y=e.y,this.z=e.z-Math.log(r)/Math.LN2,this.grid=t||new Grid(EXTENT,16,0),this.featureIndexArray=a||new FeatureIndexArray};FeatureIndex.deserialize=function(e,r,t){var a=new FeatureIndex(e.coord,e.overscaling,new Grid(e.grid),new FeatureIndexArray(e.featureIndexArray));return a.rawTileData=r,a.bucketLayerIDs=e.bucketLayerIDs,a.setCollisionTile(t),a},FeatureIndex.prototype.insert=function(e,r,t,a,i){var n=this,o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(t,a,i);for(var s=0;s<r.length;s++){for(var u=r[s],y=[1/0,1/0,-1/0,-1/0],l=0;l<u.length;l++){var d=u[l];y[0]=Math.min(y[0],d.x),y[1]=Math.min(y[1],d.y),y[2]=Math.max(y[2],d.x),y[3]=Math.max(y[3],d.y)}n.grid.insert(o,y[0],y[1],y[2],y[3])}},FeatureIndex.prototype.setCollisionTile=function(e){this.collisionTile=e},FeatureIndex.prototype.serialize=function(e){var r=this.grid.toArrayBuffer();return e&&e.push(r),{coord:this.coord,overscaling:this.overscaling,grid:r,featureIndexArray:this.featureIndexArray.serialize(e),bucketLayerIDs:this.bucketLayerIDs}},FeatureIndex.prototype.query=function(e,r){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers,this.sourceLayerCoder=new DictionaryCoder(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]));for(var t={},a=e.params||{},i=EXTENT/e.tileSize/e.scale,n=featureFilter(a.filter),o=e.queryGeometry,s=e.additionalRadius*i,u=1/0,y=1/0,l=-1/0,d=-1/0,c=0;c<o.length;c++)for(var h=o[c],f=0;f<h.length;f++){var x=h[f];u=Math.min(u,x.x),y=Math.min(y,x.y),l=Math.max(l,x.x),d=Math.max(d,x.y)}var v=this.grid.query(u-s,y-s,l+s,d+s);v.sort(topDownFeatureComparator),this.filterMatching(t,v,this.featureIndexArray,o,n,a.layers,r,e.bearing,i);var I=this.collisionTile.queryRenderedSymbols(o,e.scale);return I.sort(),this.filterMatching(t,I,this.collisionTile.collisionBoxArray,o,n,a.layers,r,e.bearing,i),t},FeatureIndex.prototype.filterMatching=function(e,r,t,a,i,n,o,s,u){for(var y,l=this,d=0;d<r.length;d++){var c=r[d];if(c!==y){y=c;var h=t.get(c),f=l.bucketLayerIDs[h.bucketIndex];if(!n||arraysIntersect(n,f)){var x=l.sourceLayerCoder.decode(h.sourceLayerIndex),v=l.vtLayers[x],I=v.feature(h.featureIndex);if(i(I))for(var p=null,g=0;g<f.length;g++){var m=f[g];if(!(n&&n.indexOf(m)<0)){var F=o[m];if(F&&(\"symbol\"===F.type||(p||(p=loadGeometry(I)),F.queryIntersectsFeature(a,I,p,l.z,s,u)))){var b=new GeoJSONFeature(I,l.z,l.x,l.y);b.layer=F.serialize();var L=e[m];void 0===L&&(L=e[m]=[]),L.push({featureIndex:c,feature:b})}}}}}}},FeatureIndex.prototype.hasLayer=function(e){for(var r=this,t=0,a=r.bucketLayerIDs;t<a.length;t+=1)for(var i=a[t],n=0,o=i;n<o.length;n+=1){var s=o[n];if(e===s)return!0}return!1},module.exports=FeatureIndex;\n},{\"../style-spec/feature_filter\":110,\"../util/dictionary_coder\":207,\"../util/struct_array\":220,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"./extent\":48,\"./load_geometry\":51,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6,\"grid-index\":22,\"pbf\":29}],50:[function(_dereq_,module,exports){\n\"use strict\";function createIndexArrayType(e){return createStructArrayType({members:[{type:\"Uint16\",name:\"vertices\",components:e}]})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports={LineIndexArray:createIndexArrayType(2),TriangleIndexArray:createIndexArrayType(3)};\n},{\"../util/struct_array\":220}],51:[function(_dereq_,module,exports){\n\"use strict\";function createBounds(e){return{min:-1*Math.pow(2,e-1),max:Math.pow(2,e-1)-1}}var util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"./extent\"),bounds=createBounds(16);module.exports=function(e){for(var t=EXTENT/e.extent,r=e.loadGeometry(),n=0;n<r.length;n++)for(var u=r[n],o=0;o<u.length;o++){var a=u[o];a.x=Math.round(a.x*t),a.y=Math.round(a.y*t),(a.x<bounds.min||a.x>bounds.max||a.y<bounds.min||a.y>bounds.max)&&util.warnOnce(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}return r};\n},{\"../util/util\":223,\"./extent\":48}],52:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),PosArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2}]});module.exports=PosArray;\n},{\"../util/struct_array\":220}],53:[function(_dereq_,module,exports){\n\"use strict\";function packColor(r){return[packUint8ToFloat(255*r[0],255*r[1]),packUint8ToFloat(255*r[2],255*r[3])]}var createVertexArrayType=_dereq_(\"./vertex_array_type\"),interpolationFactor=_dereq_(\"../style-spec/function\").interpolationFactor,packUint8ToFloat=_dereq_(\"../shaders/encode_attribute\").packUint8ToFloat,VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),ConstantBinder=function(r,t,o,e){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e};ConstantBinder.prototype.defines=function(){return[\"#define HAS_UNIFORM_u_\"+this.name]},ConstantBinder.prototype.populatePaintArray=function(){},ConstantBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=o.getPaintValue(this.property,{zoom:this.useIntegerZoom?Math.floor(i):i});\"color\"===this.type?r.uniform4fv(t.uniforms[\"u_\"+this.name],n):r.uniform1f(t.uniforms[\"u_\"+this.name],n)};var SourceFunctionBinder=function(r,t,o){this.name=r,this.type=t,this.property=o};SourceFunctionBinder.prototype.defines=function(){return[]},SourceFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,void 0,n);if(\"color\"===this.type)for(var p=packColor(s),u=e;u<i;u++){var f=t.get(u);f[\"a_\"+a.name+\"0\"]=p[0],f[\"a_\"+a.name+\"1\"]=p[1]}else{for(var c=e;c<i;c++){t.get(c)[\"a_\"+a.name]=s}var m=o[this.property];m.max=Math.max(m.max,s)}},SourceFunctionBinder.prototype.setUniforms=function(r,t){r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],0)};var CompositeFunctionBinder=function(r,t,o,e,i){this.name=r,this.type=t,this.property=o,this.useIntegerZoom=e,this.zoom=i};CompositeFunctionBinder.prototype.defines=function(){return[]},CompositeFunctionBinder.prototype.populatePaintArray=function(r,t,o,e,i,n){var a=this,s=r.getPaintValue(this.property,{zoom:this.zoom},n),p=r.getPaintValue(this.property,{zoom:this.zoom+1},n);if(\"color\"===this.type)for(var u=packColor(s),f=packColor(p),c=e;c<i;c++){var m=t.get(c);m[\"a_\"+a.name+\"0\"]=u[0],m[\"a_\"+a.name+\"1\"]=u[1],m[\"a_\"+a.name+\"2\"]=f[0],m[\"a_\"+a.name+\"3\"]=f[1]}else{for(var y=e;y<i;y++){var g=t.get(y);g[\"a_\"+a.name+\"0\"]=s,g[\"a_\"+a.name+\"1\"]=p}var h=o[this.property];h.max=Math.max(h.max,s,p)}},CompositeFunctionBinder.prototype.setUniforms=function(r,t,o,e){var i=e.zoom,n=interpolationFactor(this.useIntegerZoom?Math.floor(i):i,1,this.zoom,this.zoom+1);r.uniform1f(t.uniforms[\"a_\"+this.name+\"_t\"],n)};var ProgramConfiguration=function(){this.binders={},this.cacheKey=\"\"};ProgramConfiguration.createDynamic=function(r,t,o){for(var e=new ProgramConfiguration,i=[],n=0,a=r.paintAttributes||[];n<a.length;n+=1){var s=a[n],p=s.property,u=s.useIntegerZoom||!1,f=s.name||p.replace(t.type+\"-\",\"\").replace(/-/g,\"_\"),c=t._paintSpecifications[p].type;t.isPaintValueFeatureConstant(p)?(e.binders[f]=new ConstantBinder(f,c,p,u),e.cacheKey+=\"/u_\"+f):t.isPaintValueZoomConstant(p)?(e.binders[f]=new SourceFunctionBinder(f,c,p),e.cacheKey+=\"/a_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?2:1})):(e.binders[f]=new CompositeFunctionBinder(f,c,p,u,o),e.cacheKey+=\"/z_\"+f,i.push({name:\"a_\"+f,type:\"Float32\",components:\"color\"===c?4:2}))}return e.PaintVertexArray=createVertexArrayType(i),e.interface=r,e.layer=t,e},ProgramConfiguration.createBasicFill=function(){var r=new ProgramConfiguration;return r.binders.color=new ConstantBinder(\"color\",\"color\",\"fill-color\",!1),r.cacheKey+=\"/u_color\",r.binders.opacity=new ConstantBinder(\"opacity\",\"number\",\"fill-opacity\",!1),r.cacheKey+=\"/u_opacity\",r},ProgramConfiguration.prototype.createPaintPropertyStatistics=function(){var r=this,t={};for(var o in r.binders)t[r.binders[o].property]={max:-1/0};return t},ProgramConfiguration.prototype.populatePaintArray=function(r,t){var o=this,e=this.paintVertexArray;if(0!==e.bytesPerElement){var i=e.length;e.resize(r);for(var n in o.binders)o.binders[n].populatePaintArray(o.layer,e,o.paintPropertyStatistics,i,r,t)}},ProgramConfiguration.prototype.defines=function(){var r=this,t=[];for(var o in r.binders)t.push.apply(t,r.binders[o].defines());return t},ProgramConfiguration.prototype.setUniforms=function(r,t,o,e){var i=this;for(var n in i.binders)i.binders[n].setUniforms(r,t,o,e)},ProgramConfiguration.prototype.serialize=function(r){return 0===this.paintVertexArray.length?null:{array:this.paintVertexArray.serialize(r),type:this.paintVertexArray.constructor.serialize(),statistics:this.paintPropertyStatistics}},ProgramConfiguration.deserialize=function(r,t,o,e){var i=ProgramConfiguration.createDynamic(r,t,o);return e&&(i.PaintVertexArray=createVertexArrayType(e.type.members),i.paintVertexArray=new i.PaintVertexArray(e.array),i.paintPropertyStatistics=e.statistics),i},ProgramConfiguration.prototype.upload=function(r){this.paintVertexArray&&(this.paintVertexBuffer=new VertexBuffer(r,this.paintVertexArray))},ProgramConfiguration.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()};var ProgramConfigurationSet=function(r,t,o,e){var i=this;if(this.programConfigurations={},e)for(var n=0,a=t;n<a.length;n+=1){var s=a[n];i.programConfigurations[s.id]=ProgramConfiguration.deserialize(r,s,o,e[s.id])}else for(var p=0,u=t;p<u.length;p+=1){var f=u[p],c=ProgramConfiguration.createDynamic(r,f,o);c.paintVertexArray=new c.PaintVertexArray,c.paintPropertyStatistics=c.createPaintPropertyStatistics(),i.programConfigurations[f.id]=c}};ProgramConfigurationSet.prototype.populatePaintArrays=function(r,t){var o=this;for(var e in o.programConfigurations)o.programConfigurations[e].populatePaintArray(r,t)},ProgramConfigurationSet.prototype.serialize=function(r){var t=this,o={};for(var e in t.programConfigurations){var i=t.programConfigurations[e].serialize(r);i&&(o[e]=i)}return o},ProgramConfigurationSet.prototype.get=function(r){return this.programConfigurations[r]},ProgramConfigurationSet.prototype.upload=function(r){var t=this;for(var o in t.programConfigurations)t.programConfigurations[o].upload(r)},ProgramConfigurationSet.prototype.destroy=function(){var r=this;for(var t in r.programConfigurations)r.programConfigurations[t].destroy()},module.exports={ProgramConfiguration:ProgramConfiguration,ProgramConfigurationSet:ProgramConfigurationSet};\n},{\"../gl/vertex_buffer\":62,\"../shaders/encode_attribute\":85,\"../style-spec/function\":112,\"./vertex_array_type\":56}],54:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),RasterBoundsArray=createStructArrayType({members:[{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]});module.exports=RasterBoundsArray;\n},{\"../util/struct_array\":220}],55:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/util\"),warnOnce=ref.warnOnce,MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,SegmentVector=function(e){void 0===e&&(e=[]),this.segments=e};SegmentVector.prototype.prepareSegment=function(e,t,r){var n=this.segments[this.segments.length-1];return e>MAX_VERTEX_ARRAY_LENGTH&&warnOnce(\"Max vertices per segment is \"+MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+e),(!n||n.vertexLength+e>module.exports.MAX_VERTEX_ARRAY_LENGTH)&&(n={vertexOffset:t.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},this.segments.push(n)),n},SegmentVector.prototype.get=function(){return this.segments},SegmentVector.prototype.destroy=function(){for(var e=this,t=0,r=e.segments;t<r.length;t+=1){var n=r[t];for(var s in n.vaos)n.vaos[s].destroy()}},module.exports={SegmentVector:SegmentVector,MAX_VERTEX_ARRAY_LENGTH:MAX_VERTEX_ARRAY_LENGTH};\n},{\"../util/util\":223}],56:[function(_dereq_,module,exports){\n\"use strict\";function createVertexArrayType(r){return createStructArrayType({members:r,alignment:4})}var createStructArrayType=_dereq_(\"../util/struct_array\");module.exports=createVertexArrayType;\n},{\"../util/struct_array\":220}],57:[function(_dereq_,module,exports){\n\"use strict\";var Coordinate=function(o,t,n){this.column=o,this.row=t,this.zoom=n};Coordinate.prototype.clone=function(){return new Coordinate(this.column,this.row,this.zoom)},Coordinate.prototype.zoomTo=function(o){return this.clone()._zoomTo(o)},Coordinate.prototype.sub=function(o){return this.clone()._sub(o)},Coordinate.prototype._zoomTo=function(o){var t=Math.pow(2,o-this.zoom);return this.column*=t,this.row*=t,this.zoom=o,this},Coordinate.prototype._sub=function(o){return o=o.zoomTo(this.zoom),this.column-=o.column,this.row-=o.row,this},module.exports=Coordinate;\n},{}],58:[function(_dereq_,module,exports){\n\"use strict\";var wrap=_dereq_(\"../util/util\").wrap,LngLat=function(t,n){if(isNaN(t)||isNaN(n))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+n+\")\");if(this.lng=+t,this.lat=+n,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};LngLat.prototype.wrap=function(){return new LngLat(wrap(this.lng,-180,180),this.lat)},LngLat.prototype.toArray=function(){return[this.lng,this.lat]},LngLat.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},LngLat.prototype.toBounds=function(t){var n=360*t/40075017,r=n/Math.cos(Math.PI/180*this.lat);return new(_dereq_(\"./lng_lat_bounds\"))(new LngLat(this.lng-r,this.lat-n),new LngLat(this.lng+r,this.lat+n))},LngLat.convert=function(t){if(t instanceof LngLat)return t;if(Array.isArray(t)&&2===t.length)return new LngLat(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new LngLat(Number(t.lng),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")},module.exports=LngLat;\n},{\"../util/util\":223,\"./lng_lat_bounds\":59}],59:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),LngLatBounds=function(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};LngLatBounds.prototype.setNorthEast=function(t){return this._ne=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.setSouthWest=function(t){return this._sw=t instanceof LngLat?new LngLat(t.lng,t.lat):LngLat.convert(t),this},LngLatBounds.prototype.extend=function(t){var n,e,s=this._sw,o=this._ne;if(t instanceof LngLat)n=t,e=t;else{if(!(t instanceof LngLatBounds))return Array.isArray(t)?t.every(Array.isArray)?this.extend(LngLatBounds.convert(t)):this.extend(LngLat.convert(t)):this;if(n=t._sw,e=t._ne,!n||!e)return this}return s||o?(s.lng=Math.min(n.lng,s.lng),s.lat=Math.min(n.lat,s.lat),o.lng=Math.max(e.lng,o.lng),o.lat=Math.max(e.lat,o.lat)):(this._sw=new LngLat(n.lng,n.lat),this._ne=new LngLat(e.lng,e.lat)),this},LngLatBounds.prototype.getCenter=function(){return new LngLat((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},LngLatBounds.prototype.getSouthWest=function(){return this._sw},LngLatBounds.prototype.getNorthEast=function(){return this._ne},LngLatBounds.prototype.getNorthWest=function(){return new LngLat(this.getWest(),this.getNorth())},LngLatBounds.prototype.getSouthEast=function(){return new LngLat(this.getEast(),this.getSouth())},LngLatBounds.prototype.getWest=function(){return this._sw.lng},LngLatBounds.prototype.getSouth=function(){return this._sw.lat},LngLatBounds.prototype.getEast=function(){return this._ne.lng},LngLatBounds.prototype.getNorth=function(){return this._ne.lat},LngLatBounds.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},LngLatBounds.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},LngLatBounds.convert=function(t){return!t||t instanceof LngLatBounds?t:new LngLatBounds(t)},module.exports=LngLatBounds;\n},{\"./lng_lat\":58}],60:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"./lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Coordinate=_dereq_(\"./coordinate\"),util=_dereq_(\"../util/util\"),interp=_dereq_(\"../style-spec/util/interpolate\"),TileCoord=_dereq_(\"../source/tile_coord\"),EXTENT=_dereq_(\"../data/extent\"),glmatrix=_dereq_(\"@mapbox/gl-matrix\"),vec4=glmatrix.vec4,mat4=glmatrix.mat4,mat2=glmatrix.mat2,Transform=function(t,o,i){this.tileSize=512,this._renderWorldCopies=void 0===i||i,this._minZoom=t||0,this._maxZoom=o||22,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this._center=new LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0},prototypeAccessors={minZoom:{},maxZoom:{},renderWorldCopies:{},worldSize:{},centerPoint:{},size:{},bearing:{},pitch:{},fov:{},zoom:{},center:{},unmodified:{},x:{},y:{},point:{}};prototypeAccessors.minZoom.get=function(){return this._minZoom},prototypeAccessors.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},prototypeAccessors.maxZoom.get=function(){return this._maxZoom},prototypeAccessors.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},prototypeAccessors.renderWorldCopies.get=function(){return this._renderWorldCopies},prototypeAccessors.worldSize.get=function(){return this.tileSize*this.scale},prototypeAccessors.centerPoint.get=function(){return this.size._div(2)},prototypeAccessors.size.get=function(){return new Point(this.width,this.height)},prototypeAccessors.bearing.get=function(){return-this.angle/Math.PI*180},prototypeAccessors.bearing.set=function(t){var o=-util.wrap(t,-180,180)*Math.PI/180;this.angle!==o&&(this._unmodified=!1,this.angle=o,this._calcMatrices(),this.rotationMatrix=mat2.create(),mat2.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},prototypeAccessors.pitch.get=function(){return this._pitch/Math.PI*180},prototypeAccessors.pitch.set=function(t){var o=util.clamp(t,0,60)/180*Math.PI;this._pitch!==o&&(this._unmodified=!1,this._pitch=o,this._calcMatrices())},prototypeAccessors.fov.get=function(){return this._fov/Math.PI*180},prototypeAccessors.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},prototypeAccessors.zoom.get=function(){return this._zoom},prototypeAccessors.zoom.set=function(t){var o=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==o&&(this._unmodified=!1,this._zoom=o,this.scale=this.zoomScale(o),this.tileZoom=Math.floor(o),this.zoomFraction=o-this.tileZoom,this._constrain(),this._calcMatrices())},prototypeAccessors.center.get=function(){return this._center},prototypeAccessors.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Transform.prototype.coveringZoomLevel=function(t){return(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},Transform.prototype.getVisibleWrappedCoordinates=function(t){for(var o=this.pointCoordinate(new Point(0,0),0),i=this.pointCoordinate(new Point(this.width,0),0),e=Math.floor(o.column),r=Math.floor(i.column),n=[t],s=e;s<=r;s++)0!==s&&n.push(new TileCoord(t.z,t.x,t.y,s));return n},Transform.prototype.coveringTiles=function(t){var o=this.coveringZoomLevel(t),i=o;if(void 0!==t.minzoom&&o<t.minzoom)return[];void 0!==t.maxzoom&&o>t.maxzoom&&(o=t.maxzoom);var e=this.pointCoordinate(this.centerPoint,o),r=new Point(e.column-.5,e.row-.5),n=[this.pointCoordinate(new Point(0,0),o),this.pointCoordinate(new Point(this.width,0),o),this.pointCoordinate(new Point(this.width,this.height),o),this.pointCoordinate(new Point(0,this.height),o)];return TileCoord.cover(o,n,t.reparseOverscaled?i:o,this._renderWorldCopies).sort(function(t,o){return r.dist(t)-r.dist(o)})},Transform.prototype.resize=function(t,o){this.width=t,this.height=o,this.pixelsToGLUnits=[2/t,-2/o],this._constrain(),this._calcMatrices()},prototypeAccessors.unmodified.get=function(){return this._unmodified},Transform.prototype.zoomScale=function(t){return Math.pow(2,t)},Transform.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},Transform.prototype.project=function(t){return new Point(this.lngX(t.lng),this.latY(t.lat))},Transform.prototype.unproject=function(t){return new LngLat(this.xLng(t.x),this.yLat(t.y))},prototypeAccessors.x.get=function(){return this.lngX(this.center.lng)},prototypeAccessors.y.get=function(){return this.latY(this.center.lat)},prototypeAccessors.point.get=function(){return new Point(this.x,this.y)},Transform.prototype.lngX=function(t){return(180+t)*this.worldSize/360},Transform.prototype.latY=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))*this.worldSize/360},Transform.prototype.xLng=function(t){return 360*t/this.worldSize-180},Transform.prototype.yLat=function(t){var o=180-360*t/this.worldSize;return 360/Math.PI*Math.atan(Math.exp(o*Math.PI/180))-90},Transform.prototype.setLocationAtPoint=function(t,o){var i=this.pointCoordinate(o)._sub(this.pointCoordinate(this.centerPoint));this.center=this.coordinateLocation(this.locationCoordinate(t)._sub(i)),this._renderWorldCopies&&(this.center=this.center.wrap())},Transform.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},Transform.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},Transform.prototype.locationCoordinate=function(t){return new Coordinate(this.lngX(t.lng)/this.tileSize,this.latY(t.lat)/this.tileSize,this.zoom).zoomTo(this.tileZoom)},Transform.prototype.coordinateLocation=function(t){var o=t.zoomTo(this.zoom);return new LngLat(this.xLng(o.column*this.tileSize),this.yLat(o.row*this.tileSize))},Transform.prototype.pointCoordinate=function(t,o){void 0===o&&(o=this.tileZoom);var i=[t.x,t.y,0,1],e=[t.x,t.y,1,1];vec4.transformMat4(i,i,this.pixelMatrixInverse),vec4.transformMat4(e,e,this.pixelMatrixInverse);var r=i[3],n=e[3],s=i[0]/r,a=e[0]/n,h=i[1]/r,c=e[1]/n,m=i[2]/r,p=e[2]/n,l=m===p?0:(0-m)/(p-m);return new Coordinate(interp(s,a,l)/this.tileSize,interp(h,c,l)/this.tileSize,this.zoom)._zoomTo(o)},Transform.prototype.coordinatePoint=function(t){var o=t.zoomTo(this.zoom),i=[o.column*this.tileSize,o.row*this.tileSize,0,1];return vec4.transformMat4(i,i,this.pixelMatrix),new Point(i[0]/i[3],i[1]/i[3])},Transform.prototype.calculatePosMatrix=function(t,o){var i=t.toCoordinate(o),e=this.worldSize/this.zoomScale(i.zoom),r=mat4.identity(new Float64Array(16));return mat4.translate(r,r,[i.column*e,i.row*e,0]),mat4.scale(r,r,[e/EXTENT,e/EXTENT,1]),mat4.multiply(r,this.projMatrix,r),new Float32Array(r)},Transform.prototype.cameraToTileDistance=function(t){var o=this.calculatePosMatrix(t.coord,t.sourceMaxZoom),i=[t.tileSize/2,t.tileSize/2,0,1];return vec4.transformMat4(i,i,o),i[3]},Transform.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var t,o,i,e,r=-90,n=90,s=-180,a=180,h=this.size,c=this._unmodified;if(this.latRange){var m=this.latRange;r=this.latY(m[1]),n=this.latY(m[0]),t=n-r<h.y?h.y/(n-r):0}if(this.lngRange){var p=this.lngRange;s=this.lngX(p[0]),a=this.lngX(p[1]),o=a-s<h.x?h.x/(a-s):0}var l=Math.max(o||0,t||0);if(l)return this.center=this.unproject(new Point(o?(a+s)/2:this.x,t?(n+r)/2:this.y)),this.zoom+=this.scaleZoom(l),this._unmodified=c,void(this._constraining=!1);if(this.latRange){var u=this.y,f=h.y/2;u-f<r&&(e=r+f),u+f>n&&(e=n-f)}if(this.lngRange){var d=this.x,g=h.x/2;d-g<s&&(i=s+g),d+g>a&&(i=a-g)}void 0===i&&void 0===e||(this.center=this.unproject(new Point(void 0!==i?i:this.x,void 0!==e?e:this.y))),this._unmodified=c,this._constraining=!1}},Transform.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var t=this._fov/2,o=Math.PI/2+this._pitch,i=Math.sin(t)*this.cameraToCenterDistance/Math.sin(Math.PI-o-t),e=Math.cos(Math.PI/2-this._pitch)*i+this.cameraToCenterDistance,r=1.01*e,n=new Float64Array(16);mat4.perspective(n,this._fov,this.width/this.height,1,r),mat4.scale(n,n,[1,-1,1]),mat4.translate(n,n,[0,0,-this.cameraToCenterDistance]),mat4.rotateX(n,n,this._pitch),mat4.rotateZ(n,n,this.angle),mat4.translate(n,n,[-this.x,-this.y,0]);var s=this.worldSize/(2*Math.PI*6378137*Math.abs(Math.cos(this.center.lat*(Math.PI/180))));if(mat4.scale(n,n,[1,1,s,1]),this.projMatrix=n,n=mat4.create(),mat4.scale(n,n,[this.width/2,-this.height/2,1]),mat4.translate(n,n,[1,-1,0]),this.pixelMatrix=mat4.multiply(new Float64Array(16),n,this.projMatrix),!(n=mat4.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=n}},Object.defineProperties(Transform.prototype,prototypeAccessors),module.exports=Transform;\n},{\"../data/extent\":48,\"../source/tile_coord\":101,\"../style-spec/util/interpolate\":127,\"../util/util\":223,\"./coordinate\":57,\"./lng_lat\":58,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],61:[function(_dereq_,module,exports){\n\"use strict\";var IndexBuffer=function(e,r){this.gl=e,this.buffer=e.createBuffer(),void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\")),e.extVertexArrayObject&&e.extVertexArrayObject.bindVertexArrayOES(null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.buffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,r.arrayBuffer,e.STATIC_DRAW),delete r.arrayBuffer};IndexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.buffer)},IndexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=IndexBuffer;\n},{}],62:[function(_dereq_,module,exports){\n\"use strict\";var AttributeType={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},VertexBuffer=function(t,e,r){this.length=e.length,this.attributes=e.members,this.itemSize=e.bytesPerElement,this.dynamicDraw=r,this.gl=t,this.buffer=t.createBuffer(),this.gl.bindBuffer(t.ARRAY_BUFFER,this.buffer),this.gl.bufferData(t.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?t.DYNAMIC_DRAW:t.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};VertexBuffer.prototype.bind=function(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer)},VertexBuffer.prototype.updateData=function(t){this.bind(),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,t.arrayBuffer)},VertexBuffer.prototype.enableAttributes=function(t,e){for(var r=this,i=0;i<this.attributes.length;i++){var f=r.attributes[i],s=e.attributes[f.name];void 0!==s&&t.enableVertexAttribArray(s)}},VertexBuffer.prototype.setVertexAttribPointers=function(t,e,r){for(var i=this,f=0;f<this.attributes.length;f++){var s=i.attributes[f],u=e.attributes[s.name];void 0!==u&&t.vertexAttribPointer(u,s.components,t[AttributeType[s.type]],!1,i.itemSize,s.offset+i.itemSize*(r||0))}},VertexBuffer.prototype.destroy=function(){this.buffer&&(this.gl.deleteBuffer(this.buffer),delete this.buffer)},module.exports=VertexBuffer;\n},{}],63:[function(_dereq_,module,exports){\n\"use strict\";var supported=_dereq_(\"mapbox-gl-supported\"),browser=_dereq_(\"./util/browser\"),version=_dereq_(\"../package.json\").version,Map=_dereq_(\"./ui/map\"),NavigationControl=_dereq_(\"./ui/control/navigation_control\"),GeolocateControl=_dereq_(\"./ui/control/geolocate_control\"),AttributionControl=_dereq_(\"./ui/control/attribution_control\"),ScaleControl=_dereq_(\"./ui/control/scale_control\"),FullscreenControl=_dereq_(\"./ui/control/fullscreen_control\"),Popup=_dereq_(\"./ui/popup\"),Marker=_dereq_(\"./ui/marker\"),Style=_dereq_(\"./style/style\"),LngLat=_dereq_(\"./geo/lng_lat\"),LngLatBounds=_dereq_(\"./geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"./util/evented\"),config=_dereq_(\"./util/config\"),rtlTextPlugin=_dereq_(\"./source/rtl_text_plugin\");module.exports={version:version,supported:supported,workerCount:Math.max(Math.floor(browser.hardwareConcurrency/2),1),setRTLTextPlugin:rtlTextPlugin.setRTLTextPlugin,Map:Map,NavigationControl:NavigationControl,GeolocateControl:GeolocateControl,AttributionControl:AttributionControl,ScaleControl:ScaleControl,FullscreenControl:FullscreenControl,Popup:Popup,Marker:Marker,Style:Style,LngLat:LngLat,LngLatBounds:LngLatBounds,Point:Point,Evented:Evented,config:config,get accessToken(){return config.ACCESS_TOKEN},set accessToken(o){config.ACCESS_TOKEN=o}};\n},{\"../package.json\":41,\"./geo/lng_lat\":58,\"./geo/lng_lat_bounds\":59,\"./source/rtl_text_plugin\":96,\"./style/style\":156,\"./ui/control/attribution_control\":182,\"./ui/control/fullscreen_control\":183,\"./ui/control/geolocate_control\":184,\"./ui/control/navigation_control\":186,\"./ui/control/scale_control\":187,\"./ui/map\":197,\"./ui/marker\":198,\"./ui/popup\":199,\"./util/browser\":202,\"./util/config\":206,\"./util/evented\":210,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],64:[function(_dereq_,module,exports){\n\"use strict\";function drawBackground(r,t,e){var i=r.gl,a=r.transform,n=a.tileSize,o=e.paint[\"background-color\"],l=e.paint[\"background-pattern\"],u=e.paint[\"background-opacity\"],f=l||1!==o[3]||1!==u?\"translucent\":\"opaque\";if(r.renderPass===f){i.disable(i.STENCIL_TEST),r.setDepthSublayer(0);var s;if(l){if(pattern.isPatternMissing(l,r))return;s=r.useProgram(\"fillPattern\",r.basicFillProgramConfiguration),pattern.prepare(l,r,s),r.tileExtentPatternVAO.bind(i,s,r.tileExtentBuffer)}else s=r.useProgram(\"fill\",r.basicFillProgramConfiguration),i.uniform4fv(s.uniforms.u_color,o),r.tileExtentVAO.bind(i,s,r.tileExtentBuffer);i.uniform1f(s.uniforms.u_opacity,u);for(var c=a.coveringTiles({tileSize:n}),g=0,p=c;g<p.length;g+=1){var d=p[g];l&&pattern.setTile({coord:d,tileSize:n},r,s),i.uniformMatrix4fv(s.uniforms.u_matrix,!1,r.transform.calculatePosMatrix(d)),i.drawArrays(i.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}}}var pattern=_dereq_(\"./pattern\");module.exports=drawBackground;\n},{\"./pattern\":80}],65:[function(_dereq_,module,exports){\n\"use strict\";function drawCircles(r,i,e,t){if(\"translucent\"===r.renderPass){var a=r.gl;r.setDepthSublayer(0),r.depthMask(!1),a.disable(a.STENCIL_TEST);for(var s=0;s<t.length;s++){var o=t[s],n=i.getTile(o),u=n.getBucket(e);if(u){var m=u.programConfigurations.get(e.id),f=r.useProgram(\"circle\",m);if(m.setUniforms(a,f,e,{zoom:r.transform.zoom}),a.uniform1f(f.uniforms.u_camera_to_center_distance,r.transform.cameraToCenterDistance),a.uniform1i(f.uniforms.u_scale_with_map,\"map\"===e.paint[\"circle-pitch-scale\"]?1:0),\"map\"===e.paint[\"circle-pitch-alignment\"]){a.uniform1i(f.uniforms.u_pitch_with_map,1);var l=pixelsToTileUnits(n,1,r.transform.zoom);a.uniform2f(f.uniforms.u_extrude_scale,l,l)}else a.uniform1i(f.uniforms.u_pitch_with_map,0),a.uniform2fv(f.uniforms.u_extrude_scale,r.transform.pixelsToGLUnits);a.uniform1f(f.uniforms.u_devicepixelratio,browser.devicePixelRatio),a.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(o.posMatrix,n,e.paint[\"circle-translate\"],e.paint[\"circle-translate-anchor\"])),f.draw(a,a.TRIANGLES,e.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,m)}}}}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=drawCircles;\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],66:[function(_dereq_,module,exports){\n\"use strict\";function drawCollisionDebug(o,i,r,e){var n=o.gl;n.enable(n.STENCIL_TEST);var t=o.useProgram(\"collisionBox\");n.activeTexture(n.TEXTURE1),o.frameHistory.bind(n),n.uniform1i(t.uniforms.u_fadetexture,1);for(var a=0;a<e.length;a++){var f=e[a],u=i.getTile(f),m=u.getBucket(r);if(m){n.uniformMatrix4fv(t.uniforms.u_matrix,!1,f.posMatrix),o.enableTileClippingMask(f),o.lineWidth(1),n.uniform1f(t.uniforms.u_scale,Math.pow(2,o.transform.zoom-u.coord.z)),n.uniform1f(t.uniforms.u_zoom,10*o.transform.zoom);var s=Math.max(0,Math.min(25,u.coord.z+Math.log(u.collisionTile.maxScale)/Math.LN2));n.uniform1f(t.uniforms.u_maxzoom,10*s),n.uniform1f(t.uniforms.u_collision_y_stretch,u.collisionTile.yStretch),n.uniform1f(t.uniforms.u_pitch,o.transform.pitch/360*2*Math.PI),n.uniform1f(t.uniforms.u_camera_to_center_distance,o.transform.cameraToCenterDistance),t.draw(n,n.LINES,r.id,m.collisionBox.layoutVertexBuffer,m.collisionBox.indexBuffer,m.collisionBox.segments)}}}module.exports=drawCollisionDebug;\n},{}],67:[function(_dereq_,module,exports){\n\"use strict\";function drawDebug(r,e,t){for(var a=0;a<t.length;a++)drawDebugTile(r,e,t[a])}function drawDebugTile(r,e,t){var a=r.gl;a.disable(a.STENCIL_TEST),r.lineWidth(1*browser.devicePixelRatio);var i=t.posMatrix,u=r.useProgram(\"debug\");a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.uniform4f(u.uniforms.u_color,1,0,0,1),r.debugVAO.bind(a,u,r.debugBuffer),a.drawArrays(a.LINE_STRIP,0,r.debugBuffer.length);for(var o=createTextVerticies(t.toString(),50,200,5),n=new PosArray,f=0;f<o.length;f+=2)n.emplaceBack(o[f],o[f+1]);var l=new VertexBuffer(a,n);(new VertexArrayObject).bind(a,u,l),a.uniform4f(u.uniforms.u_color,1,1,1,1);for(var s=e.getTile(t).tileSize,m=EXTENT/(Math.pow(2,r.transform.zoom-t.z)*s),x=[[-1,-1],[-1,1],[1,-1],[1,1]],g=0;g<x.length;g++){var b=x[g];a.uniformMatrix4fv(u.uniforms.u_matrix,!1,mat4.translate([],i,[m*b[0],m*b[1],0])),a.drawArrays(a.LINES,0,l.length)}a.uniform4f(u.uniforms.u_color,0,0,0,1),a.uniformMatrix4fv(u.uniforms.u_matrix,!1,i),a.drawArrays(a.LINES,0,l.length)}function createTextVerticies(r,e,t,a){a=a||1;var i,u,o,n,f,l,s,m,x=[];for(i=0,u=r.length;i<u;i++)if(f=simplexFont[r[i]]){for(m=null,o=0,n=f[1].length;o<n;o+=2)-1===f[1][o]&&-1===f[1][o+1]?m=null:(l=e+f[1][o]*a,s=t-f[1][o+1]*a,m&&x.push(m.x,m.y,l,s),m={x:l,y:s});e+=f[0]*a}return x}var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,EXTENT=_dereq_(\"../data/extent\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\");module.exports=drawDebug;var simplexFont={\" \":[16,[]],\"!\":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'\"':[16,[4,21,4,14,-1,-1,12,21,12,14]],\"#\":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],\"%\":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],\"&\":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],\"'\":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],\"(\":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],\")\":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],\"*\":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],\"+\":[26,[13,18,13,0,-1,-1,4,9,22,9]],\",\":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"-\":[26,[4,9,22,9]],\".\":[10,[5,2,4,1,5,0,6,1,5,2]],\"/\":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],\":\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],\";\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"<\":[24,[20,18,4,9,20,0]],\"=\":[26,[4,12,22,12,-1,-1,4,6,22,6]],\">\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"../util/browser\":202,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],68:[function(_dereq_,module,exports){\n\"use strict\";function drawFill(r,t,e,a){var i=r.gl;i.enable(i.STENCIL_TEST);var l=!e.paint[\"fill-pattern\"]&&e.isPaintValueFeatureConstant(\"fill-color\")&&e.isPaintValueFeatureConstant(\"fill-opacity\")&&1===e.paint[\"fill-color\"][3]&&1===e.paint[\"fill-opacity\"]?\"opaque\":\"translucent\";r.renderPass===l&&(r.setDepthSublayer(1),r.depthMask(\"opaque\"===r.renderPass),drawFillTiles(r,t,e,a,drawFillTile)),\"translucent\"===r.renderPass&&e.paint[\"fill-antialias\"]&&(r.lineWidth(2),r.depthMask(!1),r.setDepthSublayer(e.getPaintProperty(\"fill-outline-color\")?2:0),drawFillTiles(r,t,e,a,drawStrokeTile))}function drawFillTiles(r,t,e,a,i){if(!pattern.isPatternMissing(e.paint[\"fill-pattern\"],r))for(var l=!0,n=0,o=a;n<o.length;n+=1){var s=o[n],f=t.getTile(s),u=f.getBucket(e);u&&(r.enableTileClippingMask(s),i(r,t,e,f,s,u,l),l=!1)}}function drawFillTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id);setFillProgram(\"fill\",e.paint[\"fill-pattern\"],r,s,e,a,i,n).draw(o,o.TRIANGLES,e.id,l.layoutVertexBuffer,l.indexBuffer,l.segments,s)}function drawStrokeTile(r,t,e,a,i,l,n){var o=r.gl,s=l.programConfigurations.get(e.id),f=e.paint[\"fill-pattern\"]&&!e.getPaintProperty(\"fill-outline-color\"),u=setFillProgram(\"fillOutline\",f,r,s,e,a,i,n);o.uniform2f(u.uniforms.u_world,o.drawingBufferWidth,o.drawingBufferHeight),u.draw(o,o.LINES,e.id,l.layoutVertexBuffer,l.indexBuffer2,l.segments2,s)}function setFillProgram(r,t,e,a,i,l,n,o){var s,f=e.currentProgram;return t?(s=e.useProgram(r+\"Pattern\",a),(o||s!==f)&&(a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom}),pattern.prepare(i.paint[\"fill-pattern\"],e,s)),pattern.setTile(l,e,s)):(s=e.useProgram(r,a),(o||s!==f)&&a.setUniforms(e.gl,s,i,{zoom:e.transform.zoom})),e.gl.uniformMatrix4fv(s.uniforms.u_matrix,!1,e.translatePosMatrix(n.posMatrix,l,i.paint[\"fill-translate\"],i.paint[\"fill-translate-anchor\"])),s}var pattern=_dereq_(\"./pattern\");module.exports=drawFill;\n},{\"./pattern\":80}],69:[function(_dereq_,module,exports){\n\"use strict\";function draw(r,t,e,i){if(\"3d\"===r.renderPass){var a=r.gl;a.disable(a.STENCIL_TEST),a.enable(a.DEPTH_TEST),r.clearColor(),r.depthMask(!0);for(var n=0;n<i.length;n++)drawExtrusion(r,t,e,i[n])}else\"translucent\"===r.renderPass&&drawExtrusionTexture(r,e)}function drawExtrusionTexture(r,t){var e=r.prerenderedFrames[t.id];if(e){var i=r.gl,a=r.useProgram(\"extrusionTexture\");i.disable(i.STENCIL_TEST),i.disable(i.DEPTH_TEST),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,e.texture),i.uniform1f(a.uniforms.u_opacity,t.paint[\"fill-extrusion-opacity\"]),i.uniform1i(a.uniforms.u_image,0);var n=mat4.create();mat4.ortho(n,0,r.width,r.height,0,0,1),i.uniformMatrix4fv(a.uniforms.u_matrix,!1,n),i.uniform2f(a.uniforms.u_world,i.drawingBufferWidth,i.drawingBufferHeight),e.vao.bind(i,a,e.buffer),i.drawArrays(i.TRIANGLE_STRIP,0,4),r.viewportFrames.push(e),delete r.prerenderedFrames[t.id]}}function drawExtrusion(r,t,e,i){var a=t.getTile(i),n=a.getBucket(e);if(n){var o=r.gl,u=e.paint[\"fill-extrusion-pattern\"],s=n.programConfigurations.get(e.id),f=r.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",s);if(s.setUniforms(o,f,e,{zoom:r.transform.zoom}),u){if(pattern.isPatternMissing(u,r))return;pattern.prepare(u,r,f),pattern.setTile(a,r,f),o.uniform1f(f.uniforms.u_height_factor,-Math.pow(2,i.z)/a.tileSize/8)}r.gl.uniformMatrix4fv(f.uniforms.u_matrix,!1,r.translatePosMatrix(i.posMatrix,a,e.paint[\"fill-extrusion-translate\"],e.paint[\"fill-extrusion-translate-anchor\"])),setLight(f,r),f.draw(o,o.TRIANGLES,e.id,n.layoutVertexBuffer,n.indexBuffer,n.segments,s)}}function setLight(r,t){var e=t.gl,i=t.style.light,a=i.calculated.position,n=[a.x,a.y,a.z],o=mat3.create();\"viewport\"===i.calculated.anchor&&mat3.fromRotation(o,-t.transform.angle),vec3.transformMat3(n,n,o),e.uniform3fv(r.uniforms.u_lightpos,n),e.uniform1f(r.uniforms.u_lightintensity,i.calculated.intensity),e.uniform3fv(r.uniforms.u_lightcolor,i.calculated.color.slice(0,3))}var glMatrix=_dereq_(\"@mapbox/gl-matrix\"),pattern=_dereq_(\"./pattern\"),mat3=glMatrix.mat3,mat4=glMatrix.mat4,vec3=glMatrix.vec3;module.exports=draw;\n},{\"./pattern\":80,\"@mapbox/gl-matrix\":1}],70:[function(_dereq_,module,exports){\n\"use strict\";function drawLineTile(i,r,e,t,n,a,o,u,f){var s,l,m,_,p=r.gl,g=n.paint[\"line-dasharray\"],d=n.paint[\"line-pattern\"];if(u||f){var x=1/pixelsToTileUnits(e,1,r.transform.tileZoom);if(g){s=r.lineAtlas.getDash(g.from,\"round\"===n.layout[\"line-cap\"]),l=r.lineAtlas.getDash(g.to,\"round\"===n.layout[\"line-cap\"]);var T=s.width*g.fromScale,c=l.width*g.toScale;p.uniform2f(i.uniforms.u_patternscale_a,x/T,-s.height/2),p.uniform2f(i.uniforms.u_patternscale_b,x/c,-l.height/2),p.uniform1f(i.uniforms.u_sdfgamma,r.lineAtlas.width/(256*Math.min(T,c)*browser.devicePixelRatio)/2)}else if(d){if(m=r.imageManager.getPattern(d.from),_=r.imageManager.getPattern(d.to),!m||!_)return;p.uniform2f(i.uniforms.u_pattern_size_a,m.displaySize[0]*d.fromScale/x,_.displaySize[1]),p.uniform2f(i.uniforms.u_pattern_size_b,_.displaySize[0]*d.toScale/x,_.displaySize[1]);var h=r.imageManager.getPixelSize(),v=h.width,b=h.height;p.uniform2fv(i.uniforms.u_texsize,[v,b])}p.uniform2f(i.uniforms.u_gl_units_to_pixels,1/r.transform.pixelsToGLUnits[0],1/r.transform.pixelsToGLUnits[1])}u&&(g?(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.lineAtlas.bind(p),p.uniform1f(i.uniforms.u_tex_y_a,s.y),p.uniform1f(i.uniforms.u_tex_y_b,l.y),p.uniform1f(i.uniforms.u_mix,g.t)):d&&(p.uniform1i(i.uniforms.u_image,0),p.activeTexture(p.TEXTURE0),r.imageManager.bind(p),p.uniform2fv(i.uniforms.u_pattern_tl_a,m.tl),p.uniform2fv(i.uniforms.u_pattern_br_a,m.br),p.uniform2fv(i.uniforms.u_pattern_tl_b,_.tl),p.uniform2fv(i.uniforms.u_pattern_br_b,_.br),p.uniform1f(i.uniforms.u_fade,d.t))),r.enableTileClippingMask(a);var y=r.translatePosMatrix(a.posMatrix,e,n.paint[\"line-translate\"],n.paint[\"line-translate-anchor\"]);p.uniformMatrix4fv(i.uniforms.u_matrix,!1,y),p.uniform1f(i.uniforms.u_ratio,1/pixelsToTileUnits(e,1,r.transform.zoom)),i.draw(p,p.TRIANGLES,n.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,o)}var browser=_dereq_(\"../util/browser\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");module.exports=function(i,r,e,t){if(\"translucent\"===i.renderPass){i.setDepthSublayer(0),i.depthMask(!1);var n=i.gl;if(n.enable(n.STENCIL_TEST),!(e.paint[\"line-width\"]<=0))for(var a,o=e.paint[\"line-dasharray\"]?\"lineSDF\":e.paint[\"line-pattern\"]?\"linePattern\":\"line\",u=!0,f=0,s=t;f<s.length;f+=1){var l=s[f],m=r.getTile(l),_=m.getBucket(e);if(_){var p=_.programConfigurations.get(e.id),g=i.currentProgram,d=i.useProgram(o,p),x=u||d!==g,T=a!==m.coord.z;x&&p.setUniforms(i.gl,d,e,{zoom:i.transform.zoom}),drawLineTile(d,i,m,_,e,l,p,x,T),a=m.coord.z,u=!1}}}};\n},{\"../source/pixels_to_tile_units\":93,\"../util/browser\":202}],71:[function(_dereq_,module,exports){\n\"use strict\";function drawRaster(r,t,e,a){if(\"translucent\"===r.renderPass){var i=r.gl,o=t.getSource(),n=r.useProgram(\"raster\");i.enable(i.DEPTH_TEST),r.depthMask(!0),i.depthFunc(i.LESS),i.disable(i.STENCIL_TEST),i.uniform1f(n.uniforms.u_brightness_low,e.paint[\"raster-brightness-min\"]),i.uniform1f(n.uniforms.u_brightness_high,e.paint[\"raster-brightness-max\"]),i.uniform1f(n.uniforms.u_saturation_factor,saturationFactor(e.paint[\"raster-saturation\"])),i.uniform1f(n.uniforms.u_contrast_factor,contrastFactor(e.paint[\"raster-contrast\"])),i.uniform3fv(n.uniforms.u_spin_weights,spinWeights(e.paint[\"raster-hue-rotate\"])),i.uniform1f(n.uniforms.u_buffer_scale,1),i.uniform1i(n.uniforms.u_image0,0),i.uniform1i(n.uniforms.u_image1,1);for(var u=a.length&&a[0].z,s=0,f=a;s<f.length;s+=1){var m=f[s];r.setDepthSublayer(m.z-u);var d=t.getTile(m),c=r.transform.calculatePosMatrix(m,t.getSource().maxzoom);d.registerFadeDuration(r.style.animationLoop,e.paint[\"raster-fade-duration\"]),i.uniformMatrix4fv(n.uniforms.u_matrix,!1,c);var p=t.findLoadedParent(m,0,{}),_=getFadeValues(d,p,t,e,r.transform),h=void 0,l=void 0;if(i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,d.texture),i.activeTexture(i.TEXTURE1),p?(i.bindTexture(i.TEXTURE_2D,p.texture),h=Math.pow(2,p.coord.z-d.coord.z),l=[d.coord.x*h%1,d.coord.y*h%1]):i.bindTexture(i.TEXTURE_2D,d.texture),i.uniform2fv(n.uniforms.u_tl_parent,l||[0,0]),i.uniform1f(n.uniforms.u_scale_parent,h||1),i.uniform1f(n.uniforms.u_fade_t,_.mix),i.uniform1f(n.uniforms.u_opacity,_.opacity*e.paint[\"raster-opacity\"]),o instanceof ImageSource){var g=o.boundsBuffer;o.boundsVAO.bind(i,n,g),i.drawArrays(i.TRIANGLE_STRIP,0,g.length)}else{var T=r.rasterBoundsBuffer;r.rasterBoundsVAO.bind(i,n,T),i.drawArrays(i.TRIANGLE_STRIP,0,T.length)}}i.depthFunc(i.LEQUAL)}}function spinWeights(r){r*=Math.PI/180;var t=Math.sin(r),e=Math.cos(r);return[(2*e+1)/3,(-Math.sqrt(3)*t-e+1)/3,(Math.sqrt(3)*t-e+1)/3]}function contrastFactor(r){return r>0?1/(1-r):1+r}function saturationFactor(r){return r>0?1-1/(1.001-r):-r}function getFadeValues(r,t,e,a,i){var o=a.paint[\"raster-fade-duration\"];if(o>0){var n=Date.now(),u=(n-r.timeAdded)/o,s=t?(n-t.timeAdded)/o:-1,f=e.getSource(),m=i.coveringZoomLevel({tileSize:f.tileSize,roundZoom:f.roundZoom}),d=!t||Math.abs(t.coord.z-m)>Math.abs(r.coord.z-m),c=d&&r.refreshedUponExpiration?1:util.clamp(d?u:1-s,0,1);return r.refreshedUponExpiration&&u>=1&&(r.refreshedUponExpiration=!1),t?{opacity:1,mix:1-c}:{opacity:c,mix:0}}return{opacity:1,mix:0}}var util=_dereq_(\"../util/util\"),ImageSource=_dereq_(\"../source/image_source\");module.exports=drawRaster;\n},{\"../source/image_source\":91,\"../util/util\":223}],72:[function(_dereq_,module,exports){\n\"use strict\";function drawSymbols(t,i,o,e){if(\"translucent\"===t.renderPass){var a=!(o.layout[\"text-allow-overlap\"]||o.layout[\"icon-allow-overlap\"]||o.layout[\"text-ignore-placement\"]||o.layout[\"icon-ignore-placement\"]),r=t.gl;a?r.disable(r.STENCIL_TEST):r.enable(r.STENCIL_TEST),t.setDepthSublayer(0),t.depthMask(!1),drawLayerSymbols(t,i,o,e,!1,o.paint[\"icon-translate\"],o.paint[\"icon-translate-anchor\"],o.layout[\"icon-rotation-alignment\"],o.layout[\"icon-pitch-alignment\"],o.layout[\"icon-keep-upright\"]),drawLayerSymbols(t,i,o,e,!0,o.paint[\"text-translate\"],o.paint[\"text-translate-anchor\"],o.layout[\"text-rotation-alignment\"],o.layout[\"text-pitch-alignment\"],o.layout[\"text-keep-upright\"]),i.map.showCollisionBoxes&&drawCollisionDebug(t,i,o,e)}}function drawLayerSymbols(t,i,o,e,a,r,n,s,u,l){var m=t.gl,f=t.transform,c=\"map\"===s,_=\"map\"===u,y=c&&\"line\"===o.layout[\"symbol-placement\"],p=c&&!_&&!y,x=_;x?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST);for(var b,d=0,T=e;d<T.length;d+=1){var g=T[d],S=i.getTile(g),h=S.getBucket(o);if(h){var z=a?h.text:h.icon;if(z&&z.segments.get().length){var v=z.programConfigurations.get(o.id),E=a||h.sdfIcons,w=a?h.textSizeData:h.iconSizeData;if(b||(b=t.useProgram(E?\"symbolSDF\":\"symbolIcon\",v),v.setUniforms(m,b,o,{zoom:t.transform.zoom}),setSymbolDrawState(b,t,o,a,p,_,w)),m.activeTexture(m.TEXTURE0),m.uniform1i(b.uniforms.u_texture,0),a)S.glyphAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.glyphAtlasTexture.size);else{var M=!o.isLayoutValueFeatureConstant(\"icon-size\")||!o.isLayoutValueZoomConstant(\"icon-size\")||1!==o.getLayoutValue(\"icon-size\",{zoom:f.zoom})||h.iconsNeedLinear,C=_||0!==f.pitch;S.iconAtlasTexture.bind(E||t.options.rotating||t.options.zooming||M||C?m.LINEAR:m.NEAREST,m.CLAMP_TO_EDGE),m.uniform2fv(b.uniforms.u_texsize,S.iconAtlasTexture.size)}t.enableTileClippingMask(g),m.uniformMatrix4fv(b.uniforms.u_matrix,!1,t.translatePosMatrix(g.posMatrix,S,r,n));var L=pixelsToTileUnits(S,1,t.transform.zoom),P=symbolProjection.getLabelPlaneMatrix(g.posMatrix,_,c,t.transform,L),D=symbolProjection.getGlCoordMatrix(g.posMatrix,_,c,t.transform,L);m.uniformMatrix4fv(b.uniforms.u_gl_coord_matrix,!1,t.translatePosMatrix(D,S,r,n,!0)),y?(m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,identityMat4),symbolProjection.updateLineLabels(h,g.posMatrix,t,a,P,D,_,l,L,o)):m.uniformMatrix4fv(b.uniforms.u_label_plane_matrix,!1,P),m.uniform1f(b.uniforms.u_collision_y_stretch,S.collisionTile.yStretch),drawTileSymbols(b,v,t,o,S,z,a,E,_)}}}x||m.enable(m.DEPTH_TEST)}function setSymbolDrawState(t,i,o,e,a,r,n){var s=i.gl,u=i.transform;s.uniform1i(t.uniforms.u_pitch_with_map,r?1:0),s.uniform1f(t.uniforms.u_is_text,e?1:0),s.activeTexture(s.TEXTURE1),i.frameHistory.bind(s),s.uniform1i(t.uniforms.u_fadetexture,1),s.uniform1f(t.uniforms.u_pitch,u.pitch/360*2*Math.PI),s.uniform1i(t.uniforms.u_is_size_zoom_constant,n.isZoomConstant?1:0),s.uniform1i(t.uniforms.u_is_size_feature_constant,n.isFeatureConstant?1:0),s.uniform1f(t.uniforms.u_camera_to_center_distance,u.cameraToCenterDistance);var l=symbolSize.evaluateSizeForZoom(n,u,o,e);void 0!==l.uSizeT&&s.uniform1f(t.uniforms.u_size_t,l.uSizeT),void 0!==l.uSize&&s.uniform1f(t.uniforms.u_size,l.uSize),s.uniform1f(t.uniforms.u_aspect_ratio,u.width/u.height),s.uniform1i(t.uniforms.u_rotate_symbol,a?1:0)}function drawTileSymbols(t,i,o,e,a,r,n,s,u){var l=o.gl,m=o.transform;if(s){var f=(n?\"text\":\"icon\")+\"-halo-width\",c=!e.isPaintValueFeatureConstant(f)||e.paint[f],_=u?Math.cos(m._pitch)*m.cameraToCenterDistance:1;l.uniform1f(t.uniforms.u_gamma_scale,_),c&&(l.uniform1f(t.uniforms.u_is_halo,1),drawSymbolElements(r,e,l,t)),l.uniform1f(t.uniforms.u_is_halo,0)}drawSymbolElements(r,e,l,t)}function drawSymbolElements(t,i,o,e){e.draw(o,o.TRIANGLES,i.id,t.layoutVertexBuffer,t.indexBuffer,t.segments,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer)}var drawCollisionDebug=_dereq_(\"./draw_collision_debug\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),symbolProjection=_dereq_(\"../symbol/projection\"),symbolSize=_dereq_(\"../symbol/symbol_size\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,identityMat4=mat4.identity(new Float32Array(16));module.exports=drawSymbols;\n},{\"../source/pixels_to_tile_units\":93,\"../symbol/projection\":175,\"../symbol/symbol_size\":178,\"./draw_collision_debug\":66,\"@mapbox/gl-matrix\":1}],73:[function(_dereq_,module,exports){\n\"use strict\";var FrameHistory=function(){this.changeTimes=new Float64Array(256),this.changeOpacities=new Uint8Array(256),this.opacities=new Uint8ClampedArray(256),this.array=new Uint8Array(this.opacities.buffer),this.previousZoom=0,this.firstFrame=!0};FrameHistory.prototype.record=function(e,t,i){var r=this;this.firstFrame&&(e=0,this.firstFrame=!1),t=Math.floor(10*t);var a;if(t<this.previousZoom)for(a=t+1;a<=this.previousZoom;a++)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];else for(a=t;a>this.previousZoom;a--)r.changeTimes[a]=e,r.changeOpacities[a]=r.opacities[a];for(a=0;a<256;a++){var s=e-r.changeTimes[a],o=255*(i?s/i:1);r.opacities[a]=a<=t?r.changeOpacities[a]+o:r.changeOpacities[a]-o}this.changed=!0,this.previousZoom=t},FrameHistory.prototype.isVisible=function(e){return 0!==this.opacities[Math.floor(10*e)]},FrameHistory.prototype.bind=function(e){this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.changed&&(e.texSubImage2D(e.TEXTURE_2D,0,0,0,256,1,e.ALPHA,e.UNSIGNED_BYTE,this.array),this.changed=!1)):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,256,1,0,e.ALPHA,e.UNSIGNED_BYTE,this.array))},module.exports=FrameHistory;\n},{}],74:[function(_dereq_,module,exports){\n\"use strict\";function makeGlyphAtlas(a){var e=AlphaImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var h in a){var p=a[h],r=i[h]={};for(var m in p){var g=p[+m];if(g&&0!==g.bitmap.width&&0!==g.bitmap.height){var l=t.packOne(g.bitmap.width+2*padding,g.bitmap.height+2*padding);AlphaImage.resize(e,{width:t.w,height:t.h}),AlphaImage.copy(g.bitmap,e,{x:0,y:0},{x:l.x+padding,y:l.y+padding},g.bitmap),r[m]={rect:l,metrics:g.metrics}}}}return t.shrink(),AlphaImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,padding=1;module.exports={makeGlyphAtlas:makeGlyphAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],75:[function(_dereq_,module,exports){\n\"use strict\";var loadGlyphRange=_dereq_(\"../style/load_glyph_range\"),TinySDF=_dereq_(\"@mapbox/tiny-sdf\"),isChar=_dereq_(\"../util/is_char_in_unicode_block\"),ref=_dereq_(\"../util/util\"),asyncAll=ref.asyncAll,ref$1=_dereq_(\"../util/image\"),AlphaImage=ref$1.AlphaImage,GlyphManager=function(r,e){this.requestTransform=r,this.localIdeographFontFamily=e,this.entries={}};GlyphManager.prototype.setURL=function(r){this.url=r},GlyphManager.prototype.getGlyphs=function(r,e){var t=this,i=[];for(var a in r)for(var l=0,n=r[a];l<n.length;l+=1){var s=n[l];i.push({stack:a,id:s})}asyncAll(i,function(r,e){var i=r.stack,a=r.id,l=t.entries[i];l||(l=t.entries[i]={glyphs:{},requests:{}});var n=l.glyphs[a];if(void 0!==n)return void e(null,{stack:i,id:a,glyph:n});if(n=t._tinySDF(l,i,a))return void e(null,{stack:i,id:a,glyph:n});var s=Math.floor(a/256);if(256*s>65535)return void e(new Error(\"glyphs > 65535 not supported\"));var o=l.requests[s];o||(o=l.requests[s]=[],loadGlyphRange(i,s,t.url,t.requestTransform,function(r,e){if(e)for(var t in e)l.glyphs[+t]=e[+t];for(var i=0,a=o;i<a.length;i+=1){(0,a[i])(r,e)}delete l.requests[s]})),o.push(function(r,t){r?e(r):t&&e(null,{stack:i,id:a,glyph:t[a]||null})})},function(r,t){if(r)e(r);else if(t){for(var i={},a=0,l=t;a<l.length;a+=1){var n=l[a],s=n.stack,o=n.id,h=n.glyph;(i[s]||(i[s]={}))[o]=h}e(null,i)}})},GlyphManager.prototype._tinySDF=function(r,e,t){var i=this.localIdeographFontFamily;if(i&&(isChar[\"CJK Unified Ideographs\"](t)||isChar[\"Hangul Syllables\"](t))){var a=r.tinySDF;if(!a){var l=\"400\";/bold/i.test(e)?l=\"900\":/medium/i.test(e)?l=\"500\":/light/i.test(e)&&(l=\"200\"),a=r.tinySDF=new TinySDF(24,3,8,.25,i,l)}return{id:t,bitmap:AlphaImage.create({width:30,height:30},a.draw(String.fromCharCode(t))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},module.exports=GlyphManager;\n},{\"../style/load_glyph_range\":152,\"../util/image\":213,\"../util/is_char_in_unicode_block\":215,\"../util/util\":223,\"@mapbox/tiny-sdf\":4}],76:[function(_dereq_,module,exports){\n\"use strict\";function imagePosition(a,e){var i=e.pixelRatio,t={x:a.x+padding,y:a.y+padding,w:a.w-2*padding,h:a.h-2*padding};return{pixelRatio:i,textureRect:t,tl:[t.x,t.y],br:[t.x+t.w,t.y+t.h],displaySize:[t.w/i,t.h/i]}}function makeImageAtlas(a){var e=RGBAImage.create({width:0,height:0}),i={},t=new ShelfPack(0,0,{autoResize:!0});for(var d in a){var g=a[d],n=t.packOne(g.data.width+2*padding,g.data.height+2*padding);RGBAImage.resize(e,{width:t.w,height:t.h}),RGBAImage.copy(g.data,e,{x:0,y:0},{x:n.x+padding,y:n.y+padding},g.data),i[d]=imagePosition(n,g)}return t.shrink(),RGBAImage.resize(e,{width:t.w,height:t.h}),{image:e,positions:i}}var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,padding=1;module.exports={imagePosition:imagePosition,makeImageAtlas:makeImageAtlas};\n},{\"../util/image\":213,\"@mapbox/shelf-pack\":3}],77:[function(_dereq_,module,exports){\n\"use strict\";var ShelfPack=_dereq_(\"@mapbox/shelf-pack\"),ref=_dereq_(\"../util/image\"),RGBAImage=ref.RGBAImage,ref$1=_dereq_(\"./image_atlas\"),imagePosition=ref$1.imagePosition,Texture=_dereq_(\"./texture\"),padding=1,ImageManager=function(){this.images={},this.loaded=!1,this.requestors=[],this.shelfPack=new ShelfPack(64,64,{autoResize:!0}),this.patterns={},this.atlasImage=RGBAImage.create({width:64,height:64}),this.dirty=!0};ImageManager.prototype.isLoaded=function(){return this.loaded},ImageManager.prototype.setLoaded=function(e){var t=this;if(this.loaded!==e&&(this.loaded=e,e)){for(var a=0,i=t.requestors;a<i.length;a+=1){var r=i[a],s=r.ids,h=r.callback;t._notify(s,h)}this.requestors=[]}},ImageManager.prototype.getImage=function(e){return this.images[e]},ImageManager.prototype.addImage=function(e,t){this.images[e]=t},ImageManager.prototype.removeImage=function(e){delete this.images[e];var t=this.patterns[e];t&&(this.shelfPack.unref(t.bin),delete this.patterns[e])},ImageManager.prototype.getImages=function(e,t){var a=this,i=!0;if(!this.isLoaded())for(var r=0,s=e;r<s.length;r+=1){var h=s[r];a.images[h]||(i=!1)}this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t})},ImageManager.prototype._notify=function(e,t){for(var a=this,i={},r=0,s=e;r<s.length;r+=1){var h=s[r],g=a.images[h];g&&(i[h]=g)}t(null,i)},ImageManager.prototype.getPixelSize=function(){return{width:this.shelfPack.w,height:this.shelfPack.h}},ImageManager.prototype.getPattern=function(e){var t=this.patterns[e];if(t)return t.position;var a=this.getImage(e);if(!a)return null;var i=a.data.width+2*padding,r=a.data.height+2*padding,s=this.shelfPack.packOne(i,r);if(!s)return null;RGBAImage.resize(this.atlasImage,this.getPixelSize());var h=a.data,g=this.atlasImage,n=s.x+padding,o=s.y+padding,d=h.width,m=h.height;RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o},{width:d,height:m}),RGBAImage.copy(h,g,{x:0,y:m-1},{x:n,y:o-1},{width:d,height:1}),RGBAImage.copy(h,g,{x:0,y:0},{x:n,y:o+m},{width:d,height:1}),RGBAImage.copy(h,g,{x:d-1,y:0},{x:n-1,y:o},{width:1,height:m}),RGBAImage.copy(h,g,{x:0,y:0},{x:n+d,y:o},{width:1,height:m}),this.dirty=!0;var p=imagePosition(s,a);return this.patterns[e]={bin:s,position:p},p},ImageManager.prototype.bind=function(e){this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Texture(e,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE)},module.exports=ImageManager;\n},{\"../util/image\":213,\"./image_atlas\":76,\"./texture\":83,\"@mapbox/shelf-pack\":3}],78:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),LineAtlas=function(t,i){this.width=t,this.height=i,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={}};LineAtlas.prototype.getDash=function(t,i){var e=t.join(\",\")+String(i);return this.positions[e]||(this.positions[e]=this.addDash(t,i)),this.positions[e]},LineAtlas.prototype.addDash=function(t,i){var e=this,h=i?7:0,s=2*h+1;if(this.nextRow+s>this.height)return util.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,r=0;r<t.length;r++)a+=t[r];for(var n=this.width/a,E=n/2,T=t.length%2==1,o=-h;o<=h;o++)for(var R=e.nextRow+h+o,d=e.width*R,u=T?-t[t.length-1]:0,x=t[0],l=1,_=0;_<this.width;_++){for(;x<_/n;)u=x,x+=t[l],T&&l===t.length-1&&(x+=t[0]),l++;var A=Math.abs(_-u*n),g=Math.abs(_-x*n),w=Math.min(A,g),D=l%2==1,U=void 0;if(i){var f=h?o/h*(E+1):0;if(D){var p=E-Math.abs(f);U=Math.sqrt(w*w+p*p)}else U=E-Math.sqrt(w*w+f*f)}else U=(D?1:-1)*w;e.data[3+4*(d+_)]=Math.max(0,Math.min(255,U+128))}var X={y:(this.nextRow+h+.5)/this.height,height:2*h/this.height,width:a};return this.nextRow+=s,this.dirty=!0,X},LineAtlas.prototype.bind=function(t){this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.RGBA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,this.data))},module.exports=LineAtlas;\n},{\"../util/util\":223}],79:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),mat4=_dereq_(\"@mapbox/gl-matrix\").mat4,FrameHistory=_dereq_(\"./frame_history\"),SourceCache=_dereq_(\"../source/source_cache\"),EXTENT=_dereq_(\"../data/extent\"),pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\"),util=_dereq_(\"../util/util\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),PosArray=_dereq_(\"../data/pos_array\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,shaders=_dereq_(\"../shaders\"),Program=_dereq_(\"./program\"),RenderTexture=_dereq_(\"./render_texture\"),draw={symbol:_dereq_(\"./draw_symbol\"),circle:_dereq_(\"./draw_circle\"),line:_dereq_(\"./draw_line\"),fill:_dereq_(\"./draw_fill\"),\"fill-extrusion\":_dereq_(\"./draw_fill_extrusion\"),raster:_dereq_(\"./draw_raster\"),background:_dereq_(\"./draw_background\"),debug:_dereq_(\"./draw_debug\")},Painter=function(e,r){this.gl=e,this.transform=r,this._tileTextures={},this.prerenderedFrames={},this.viewportFrames=[],this.frameHistory=new FrameHistory,this.setup(),this.numSublayers=SourceCache.maxUnderzooming+SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.lineWidthRange=e.getParameter(e.ALIASED_LINE_WIDTH_RANGE),this.basicFillProgramConfiguration=ProgramConfiguration.createBasicFill(),this.emptyProgramConfiguration=new ProgramConfiguration};Painter.prototype.resize=function(e,r){var t=this,i=this.gl;this.width=e*browser.devicePixelRatio,this.height=r*browser.devicePixelRatio,i.viewport(0,0,this.width,this.height);for(var a=0,s=t.viewportFrames;a<s.length;a+=1){var n=s[a];t.gl.deleteTexture(n.texture),t.gl.deleteFramebuffer(n.fbo)}this.viewportFrames=[],this.depthRbo&&(this.gl.deleteRenderbuffer(this.depthRbo),this.depthRbo=null)},Painter.prototype.setup=function(){var e=this.gl;e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.enable(e.STENCIL_TEST),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),this._depthMask=!1,e.depthMask(!1);var r=new PosArray;r.emplaceBack(0,0),r.emplaceBack(EXTENT,0),r.emplaceBack(0,EXTENT),r.emplaceBack(EXTENT,EXTENT),this.tileExtentBuffer=new VertexBuffer(e,r),this.tileExtentVAO=new VertexArrayObject,this.tileExtentPatternVAO=new VertexArrayObject;var t=new PosArray;t.emplaceBack(0,0),t.emplaceBack(EXTENT,0),t.emplaceBack(EXTENT,EXTENT),t.emplaceBack(0,EXTENT),t.emplaceBack(0,0),this.debugBuffer=new VertexBuffer(e,t),this.debugVAO=new VertexArrayObject;var i=new RasterBoundsArray;i.emplaceBack(0,0,0,0),i.emplaceBack(EXTENT,0,EXTENT,0),i.emplaceBack(0,EXTENT,0,EXTENT),i.emplaceBack(EXTENT,EXTENT,EXTENT,EXTENT),this.rasterBoundsBuffer=new VertexBuffer(e,i),this.rasterBoundsVAO=new VertexArrayObject,this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT))},Painter.prototype.clearColor=function(){var e=this.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},Painter.prototype.clearStencil=function(){var e=this.gl;e.clearStencil(0),e.stencilMask(255),e.clear(e.STENCIL_BUFFER_BIT)},Painter.prototype.clearDepth=function(){var e=this.gl;e.clearDepth(1),this.depthMask(!0),e.clear(e.DEPTH_BUFFER_BIT)},Painter.prototype._renderTileClippingMasks=function(e){var r=this,t=this.gl;t.colorMask(!1,!1,!1,!1),this.depthMask(!1),t.disable(t.DEPTH_TEST),t.enable(t.STENCIL_TEST),t.stencilMask(255),t.stencilOp(t.KEEP,t.KEEP,t.REPLACE);var i=1;this._tileClippingMaskIDs={};for(var a=0,s=e;a<s.length;a+=1){var n=s[a],o=r._tileClippingMaskIDs[n.id]=i++;t.stencilFunc(t.ALWAYS,o,255);var l=r.useProgram(\"fill\",r.basicFillProgramConfiguration);t.uniformMatrix4fv(l.uniforms.u_matrix,!1,n.posMatrix),r.tileExtentVAO.bind(t,l,r.tileExtentBuffer),t.drawArrays(t.TRIANGLE_STRIP,0,r.tileExtentBuffer.length)}t.stencilMask(0),t.colorMask(!0,!0,!0,!0),this.depthMask(!0),t.enable(t.DEPTH_TEST)},Painter.prototype.enableTileClippingMask=function(e){var r=this.gl;r.stencilFunc(r.EQUAL,this._tileClippingMaskIDs[e.id],255)},Painter.prototype.render=function(e,r){var t=this;this.style=e,this.options=r,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.frameHistory.record(Date.now(),this.transform.zoom,e.getTransition().duration);for(var i in t.style.sourceCaches){var a=t.style.sourceCaches[i];a.used&&a.prepare(t.gl)}var s=this.style._order;this.renderPass=\"3d\";for(var n,o=!0,l=[],h=0;h<s.length;h++){var c=t.style._layers[s[h]];if(c.has3DPass()&&!c.isHidden(t.transform.zoom)&&(c.source!==(n&&n.id)&&(n=t.style.sourceCaches[c.source],l=[],n&&(t.clearStencil(),l=n.getVisibleCoordinates()),l.reverse()),l.length)){t._setup3DRenderbuffer();var u=t.viewportFrames.pop()||new RenderTexture(t);u.bindWithDepth(t.depthRbo),o&&(t.clearDepth(),o=!1),t.renderLayer(t,n,c,l),u.unbind(),t.prerenderedFrames[c.id]=u}}this.clearColor(),this.clearDepth(),this.showOverdrawInspector(r.showOverdrawInspector),this.depthRange=(e._order.length+2)*this.numSublayers*this.depthEpsilon,this.renderPass=\"opaque\";var p,d=[];for(this.currentLayer=s.length-1,this._showOverdrawInspector||this.gl.disable(this.gl.BLEND),this.currentLayer;this.currentLayer>=0;this.currentLayer--){var g=t.style._layers[s[t.currentLayer]];g.source!==(p&&p.id)&&(p=t.style.sourceCaches[g.source],d=[],p&&(t.clearStencil(),d=p.getVisibleCoordinates(),p.getSource().isTileClipped&&t._renderTileClippingMasks(d))),t.renderLayer(t,p,g,d)}this.renderPass=\"translucent\";var f,E=[];for(this.gl.enable(this.gl.BLEND),this.currentLayer=0,this.currentLayer;this.currentLayer<s.length;this.currentLayer++){var T=t.style._layers[s[t.currentLayer]];T.source!==(f&&f.id)&&(f=t.style.sourceCaches[T.source],E=[],f&&(t.clearStencil(),E=f.getVisibleCoordinates(),f.getSource().isTileClipped&&t._renderTileClippingMasks(E)),E.reverse()),t.renderLayer(t,f,T,E)}if(this.options.showTileBoundaries){var _=this.style.sourceCaches[Object.keys(this.style.sourceCaches)[0]];_&&draw.debug(this,_,_.getVisibleCoordinates())}},Painter.prototype._setup3DRenderbuffer=function(){if(!this.depthRbo){var e=this.gl;this.depthRbo=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,this.depthRbo),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,this.width,this.height),e.bindRenderbuffer(e.RENDERBUFFER,null)}this.depthRboAttached=!0},Painter.prototype.depthMask=function(e){e!==this._depthMask&&(this._depthMask=e,this.gl.depthMask(e))},Painter.prototype.renderLayer=function(e,r,t,i){t.isHidden(this.transform.zoom)||(\"background\"===t.type||i.length)&&(this.id=t.id,draw[t.type](e,r,t,i))},Painter.prototype.setDepthSublayer=function(e){var r=1-((1+this.currentLayer)*this.numSublayers+e)*this.depthEpsilon,t=r-1+this.depthRange;this.gl.depthRange(t,r)},Painter.prototype.translatePosMatrix=function(e,r,t,i,a){if(!t[0]&&!t[1])return e;var s=a?\"map\"===i?this.transform.angle:0:\"viewport\"===i?-this.transform.angle:0;if(s){var n=Math.sin(s),o=Math.cos(s);t=[t[0]*o-t[1]*n,t[0]*n+t[1]*o]}var l=[a?t[0]:pixelsToTileUnits(r,t[0],this.transform.zoom),a?t[1]:pixelsToTileUnits(r,t[1],this.transform.zoom),0],h=new Float32Array(16);return mat4.translate(h,e,l),h},Painter.prototype.saveTileTexture=function(e){var r=this._tileTextures[e.size];r?r.push(e):this._tileTextures[e.size]=[e]},Painter.prototype.getTileTexture=function(e){var r=this._tileTextures[e];return r&&r.length>0?r.pop():null},Painter.prototype.lineWidth=function(e){this.gl.lineWidth(util.clamp(e,this.lineWidthRange[0],this.lineWidthRange[1]))},Painter.prototype.showOverdrawInspector=function(e){if(e||this._showOverdrawInspector){this._showOverdrawInspector=e;var r=this.gl;if(e){r.blendFunc(r.CONSTANT_COLOR,r.ONE);r.blendColor(1/8,1/8,1/8,0),r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}else r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA)}},Painter.prototype._createProgramCached=function(e,r){this.cache=this.cache||{};var t=\"\"+e+(r.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[t]||(this.cache[t]=new Program(this.gl,shaders[e],r,this._showOverdrawInspector)),this.cache[t]},Painter.prototype.useProgram=function(e,r){var t=this.gl,i=this._createProgramCached(e,r||this.emptyProgramConfiguration);return this.currentProgram!==i&&(t.useProgram(i.program),this.currentProgram=i),i},module.exports=Painter;\n},{\"../data/extent\":48,\"../data/pos_array\":52,\"../data/program_configuration\":53,\"../data/raster_bounds_array\":54,\"../gl/vertex_buffer\":62,\"../shaders\":86,\"../source/pixels_to_tile_units\":93,\"../source/source_cache\":98,\"../util/browser\":202,\"../util/util\":223,\"./draw_background\":64,\"./draw_circle\":65,\"./draw_debug\":67,\"./draw_fill\":68,\"./draw_fill_extrusion\":69,\"./draw_line\":70,\"./draw_raster\":71,\"./draw_symbol\":72,\"./frame_history\":73,\"./program\":81,\"./render_texture\":82,\"./vertex_array_object\":84,\"@mapbox/gl-matrix\":1}],80:[function(_dereq_,module,exports){\n\"use strict\";var pixelsToTileUnits=_dereq_(\"../source/pixels_to_tile_units\");exports.isPatternMissing=function(r,i){if(!r)return!1;var e=i.imageManager.getPattern(r.from),o=i.imageManager.getPattern(r.to);return!e||!o},exports.prepare=function(r,i,e){var o=i.gl,t=i.imageManager.getPattern(r.from),n=i.imageManager.getPattern(r.to);o.uniform1i(e.uniforms.u_image,0),o.uniform2fv(e.uniforms.u_pattern_tl_a,t.tl),o.uniform2fv(e.uniforms.u_pattern_br_a,t.br),o.uniform2fv(e.uniforms.u_pattern_tl_b,n.tl),o.uniform2fv(e.uniforms.u_pattern_br_b,n.br);var u=i.imageManager.getPixelSize(),a=u.width,f=u.height;o.uniform2fv(e.uniforms.u_texsize,[a,f]),o.uniform1f(e.uniforms.u_mix,r.t),o.uniform2fv(e.uniforms.u_pattern_size_a,t.displaySize),o.uniform2fv(e.uniforms.u_pattern_size_b,n.displaySize),o.uniform1f(e.uniforms.u_scale_a,r.fromScale),o.uniform1f(e.uniforms.u_scale_b,r.toScale),o.activeTexture(o.TEXTURE0),i.imageManager.bind(o)},exports.setTile=function(r,i,e){var o=i.gl;o.uniform1f(e.uniforms.u_tile_units_to_pixels,1/pixelsToTileUnits(r,1,i.transform.tileZoom));var t=Math.pow(2,r.coord.z),n=r.tileSize*Math.pow(2,i.transform.tileZoom)/t,u=n*(r.coord.x+r.coord.w*t),a=n*r.coord.y;o.uniform2f(e.uniforms.u_pixel_coord_upper,u>>16,a>>16),o.uniform2f(e.uniforms.u_pixel_coord_lower,65535&u,65535&a)};\n},{\"../source/pixels_to_tile_units\":93}],81:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"../util/browser\"),shaders=_dereq_(\"../shaders\"),ref=_dereq_(\"../data/program_configuration\"),ProgramConfiguration=ref.ProgramConfiguration,VertexArrayObject=_dereq_(\"./vertex_array_object\"),Program=function(r,e,t,a){var o=this;this.gl=r,this.program=r.createProgram();var i=t.defines().concat(\"#define DEVICE_PIXEL_RATIO \"+browser.devicePixelRatio.toFixed(1));a&&i.push(\"#define OVERDRAW_INSPECTOR;\");var n=i.concat(shaders.prelude.fragmentSource,e.fragmentSource).join(\"\\n\"),s=i.concat(shaders.prelude.vertexSource,e.vertexSource).join(\"\\n\"),m=r.createShader(r.FRAGMENT_SHADER);r.shaderSource(m,n),r.compileShader(m),r.attachShader(this.program,m);var g=r.createShader(r.VERTEX_SHADER);r.shaderSource(g,s),r.compileShader(g),r.attachShader(this.program,g);for(var c=t.interface?t.interface.layoutAttributes:[],u=0;u<c.length;u++)r.bindAttribLocation(o.program,u,c[u].name);r.linkProgram(this.program),this.numAttributes=r.getProgramParameter(this.program,r.ACTIVE_ATTRIBUTES),this.attributes={},this.uniforms={};for(var h=0;h<this.numAttributes;h++){var f=r.getActiveAttrib(o.program,h);f&&(o.attributes[f.name]=r.getAttribLocation(o.program,f.name))}for(var d=r.getProgramParameter(this.program,r.ACTIVE_UNIFORMS),p=0;p<d;p++){var v=r.getActiveUniform(o.program,p);v&&(o.uniforms[v.name]=r.getUniformLocation(o.program,v.name))}};Program.prototype.draw=function(r,e,t,a,o,i,n,s){for(var m,g=this,c=(m={},m[r.LINES]=2,m[r.TRIANGLES]=3,m)[e],u=0,h=i.get();u<h.length;u+=1){var f=h[u],d=f.vaos||(f.vaos={});(d[t]||(d[t]=new VertexArrayObject)).bind(r,g,a,o,n&&n.paintVertexBuffer,f.vertexOffset,s),r.drawElements(e,f.primitiveLength*c,r.UNSIGNED_SHORT,f.primitiveOffset*c*2)}},module.exports=Program;\n},{\"../data/program_configuration\":53,\"../shaders\":86,\"../util/browser\":202,\"./vertex_array_object\":84}],82:[function(_dereq_,module,exports){\n\"use strict\";var VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"./vertex_array_object\"),PosArray=_dereq_(\"../data/pos_array\"),RenderTexture=function(e){var r=this.gl=e.gl,t=this.texture=r.createTexture();r.bindTexture(r.TEXTURE_2D,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e.width,e.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.bindTexture(r.TEXTURE_2D,null);var E=this.fbo=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,E),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0);var a=new PosArray;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.buffer=new VertexBuffer(r,a),this.vao=new VertexArrayObject};RenderTexture.prototype.bindWithDepth=function(e){var r=this.gl;r.bindFramebuffer(r.FRAMEBUFFER,this.fbo),this.attachedRbo!==e&&(r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,e),this.attachedRbo=e)},RenderTexture.prototype.unbind=function(){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,null)},module.exports=RenderTexture;\n},{\"../data/pos_array\":52,\"../gl/vertex_buffer\":62,\"./vertex_array_object\":84}],83:[function(_dereq_,module,exports){\n\"use strict\";var Texture=function(t,e,i){this.gl=t;var r=e.width,T=e.height;this.size=[r,T],this.format=i,this.texture=t.createTexture(),this.update(e)};Texture.prototype.update=function(t){var e=t.width,i=t.height,r=t.data;this.size=[e,i];var T=this,E=T.gl;E.bindTexture(E.TEXTURE_2D,this.texture),E.pixelStorei(E.UNPACK_ALIGNMENT,1),this.format===E.RGBA&&E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),E.texImage2D(E.TEXTURE_2D,0,this.format,e,i,0,this.format,E.UNSIGNED_BYTE,r)},Texture.prototype.bind=function(t,e){var i=this,r=i.gl;r.bindTexture(r.TEXTURE_2D,this.texture),t!==this.filter&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,t),this.filter=t),e!==this.wrap&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,e),this.wrap=e)},Texture.prototype.destroy=function(){this.gl.deleteTexture(this.texture),this.texture=null},module.exports=Texture;\n},{}],84:[function(_dereq_,module,exports){\n\"use strict\";var VertexArrayObject=function(){this.boundProgram=null,this.boundVertexBuffer=null,this.boundVertexBuffer2=null,this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};VertexArrayObject.prototype.bind=function(e,t,r,i,n,s,u){void 0===e.extVertexArrayObject&&(e.extVertexArrayObject=e.getExtension(\"OES_vertex_array_object\"));var b=!this.vao||this.boundProgram!==t||this.boundVertexBuffer!==r||this.boundVertexBuffer2!==n||this.boundIndexBuffer!==i||this.boundVertexOffset!==s||this.boundDynamicVertexBuffer!==u;!e.extVertexArrayObject||b?(this.freshBind(e,t,r,i,n,s,u),this.gl=e):(e.extVertexArrayObject.bindVertexArrayOES(this.vao),u&&u.bind())},VertexArrayObject.prototype.freshBind=function(e,t,r,i,n,s,u){var b,o=t.numAttributes;if(e.extVertexArrayObject)this.vao&&this.destroy(),this.vao=e.extVertexArrayObject.createVertexArrayOES(),e.extVertexArrayObject.bindVertexArrayOES(this.vao),b=0,this.boundProgram=t,this.boundVertexBuffer=r,this.boundVertexBuffer2=n,this.boundIndexBuffer=i,this.boundVertexOffset=s,this.boundDynamicVertexBuffer=u;else{b=e.currentNumAttributes||0;for(var x=o;x<b;x++)e.disableVertexAttribArray(x)}r.enableAttributes(e,t),n&&n.enableAttributes(e,t),u&&u.enableAttributes(e,t),r.bind(),r.setVertexAttribPointers(e,t,s),n&&(n.bind(),n.setVertexAttribPointers(e,t,s)),u&&(u.bind(),u.setVertexAttribPointers(e,t,s)),i&&i.bind(),e.currentNumAttributes=o},VertexArrayObject.prototype.destroy=function(){this.vao&&(this.gl.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)},module.exports=VertexArrayObject;\n},{}],85:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\");exports.packUint8ToFloat=function(t,l){return t=util.clamp(Math.floor(t),0,255),l=util.clamp(Math.floor(l),0,255),256*t+l};\n},{\"../util/util\":223}],86:[function(_dereq_,module,exports){\n\"use strict\";var shaders={prelude:{fragmentSource:\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\",vertexSource:\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\\n\\n// Unpack a pair of values that have been packed into a single float.\\n// The packed values are assumed to be 8-bit unsigned integers, and are\\n// packed like so:\\n// packedValue = floor(input[0]) * 256 + input[1],\\nvec2 unpack_float(const float packedValue) {\\n int packedIntValue = int(packedValue);\\n int v0 = packedIntValue / 256;\\n return vec2(v0, packedIntValue - v0 * 256);\\n}\\n\\n\\n// To minimize the number of attributes needed, we encode a 4-component\\n// color into a pair of floats (i.e. a vec2) as follows:\\n// [ floor(color.r * 255) * 256 + color.g * 255,\\n// floor(color.b * 255) * 256 + color.g * 255 ]\\nvec4 decode_color(const vec2 encodedColor) {\\n return vec4(\\n unpack_float(encodedColor[0]) / 255.0,\\n unpack_float(encodedColor[1]) / 255.0\\n );\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nfloat unpack_mix_vec2(const vec2 packedValue, const float t) {\\n return mix(packedValue[0], packedValue[1], t);\\n}\\n\\n// Unpack a pair of paint values and interpolate between them.\\nvec4 unpack_mix_vec4(const vec4 packedColors, const float t) {\\n vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));\\n vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));\\n return mix(minColor, maxColor, t);\\n}\\n\\n// The offset depends on how many pixels are between the world origin and the edge of the tile:\\n// vec2 offset = mod(pixel_coord, size)\\n//\\n// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.\\n// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.\\n//\\n// The pixel_coord is passed in as two 16 bit values:\\n// pixel_coord_upper = floor(pixel_coord / 2^16)\\n// pixel_coord_lower = mod(pixel_coord, 2^16)\\n//\\n// The offset is calculated in a series of steps that should preserve this precision:\\nvec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,\\n const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {\\n\\n vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);\\n return (tile_units_to_pixels * pos + offset) / pattern_size;\\n}\\n\"},circle:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n vec2 extrude = v_data.xy;\\n float extrude_length = length(extrude);\\n\\n lowp float antialiasblur = v_data.z;\\n float antialiased_blur = -max(blur, antialiasblur);\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);\\n\\n float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n extrude_length - radius / (radius + stroke_width)\\n );\\n\\n gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform bool u_scale_with_map;\\nuniform bool u_pitch_with_map;\\nuniform vec2 u_extrude_scale;\\nuniform highp float u_camera_to_center_distance;\\n\\nattribute vec2 a_pos;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\n\\nvarying vec3 v_data;\\n\\nvoid main(void) {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize mediump float radius\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize highp vec4 stroke_color\\n #pragma mapbox: initialize mediump float stroke_width\\n #pragma mapbox: initialize lowp float stroke_opacity\\n\\n // unencode the extrusion vector that we snuck into the a_pos vector\\n vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);\\n\\n // multiply a_pos by 0.5, since we had it * 2 in order to sneak\\n // in extrusion data\\n vec2 circle_center = floor(a_pos * 0.5);\\n if (u_pitch_with_map) {\\n vec2 corner_position = circle_center;\\n if (u_scale_with_map) {\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale;\\n } else {\\n // Pitching the circle with the map effectively scales it with the map\\n // To counteract the effect for pitch-scale: viewport, we rescale the\\n // whole circle based on the pitch scaling effect at its central point\\n vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);\\n corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);\\n }\\n\\n gl_Position = u_matrix * vec4(corner_position, 0, 1);\\n } else {\\n gl_Position = u_matrix * vec4(circle_center, 0, 1);\\n\\n if (u_scale_with_map) {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;\\n } else {\\n gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;\\n }\\n }\\n\\n // This is a minimum blur distance that serves as a faux-antialiasing for\\n // the circle. since blur is a ratio of the circle's size and the intent is\\n // to keep the blur at roughly 1px, the two are inversely related.\\n lowp float antialiasblur = 1.0 / DEVICE_PIXEL_RATIO / (radius + stroke_width);\\n\\n v_data = vec3(extrude.x, extrude.y, antialiasblur);\\n}\\n\"},collisionBox:{fragmentSource:\"uniform float u_zoom;\\n// u_maxzoom is derived from the maximum scale considered by the CollisionTile\\n// Labels with placement zoom greater than this value will not be placed,\\n// regardless of perspective effects.\\nuniform float u_maxzoom;\\nuniform sampler2D u_fadetexture;\\n\\n// v_max_zoom is a collision-box-specific value that controls when line-following\\n// collision boxes are used.\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n\\n float alpha = 0.5;\\n\\n // Green = no collisions, label is showing\\n gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0) * alpha;\\n\\n // Red = collision, label hidden\\n if (texture2D(u_fadetexture, v_fade_tex).a < 1.0) {\\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\\n }\\n\\n // Faded black = this collision box is not used at this zoom (for curved labels)\\n if (u_zoom >= v_max_zoom + v_perspective_zoom_adjust) {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\\n }\\n\\n // Faded blue = the placement scale for this label is beyond the CollisionTile\\n // max scale, so it's impossible for this label to show without collision detection\\n // being run again (the label's glyphs haven't even been added to the symbol bucket)\\n if (v_placement_zoom >= u_maxzoom) {\\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\\n }\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\nattribute vec2 a_anchor_pos;\\nattribute vec2 a_extrude;\\nattribute vec2 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform float u_scale;\\nuniform float u_pitch;\\nuniform float u_collision_y_stretch;\\nuniform float u_camera_to_center_distance;\\n\\nvarying float v_max_zoom;\\nvarying float v_placement_zoom;\\nvarying float v_perspective_zoom_adjust;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n highp float collision_perspective_ratio = 1.0 + 0.5 * ((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n gl_Position = u_matrix * vec4(a_pos + a_extrude * collision_perspective_ratio * collision_adjustment / u_scale, 0.0, 1.0);\\n\\n v_max_zoom = a_data.x;\\n v_placement_zoom = a_data.y;\\n\\n v_perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((v_placement_zoom + v_perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},debug:{fragmentSource:\"uniform highp vec4 u_color;\\n\\nvoid main() {\\n gl_FragColor = u_color;\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\nvoid main() {\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n gl_Position = u_matrix * vec4(a_pos, step(8192.0, a_pos.x), 1);\\n}\\n\"},fill:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_FragColor = color * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n}\\n\"},fillOutline:{fragmentSource:\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n gl_FragColor = outline_color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"attribute vec2 a_pos;\\n\\nuniform mat4 u_matrix;\\nuniform vec2 u_world;\\n\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 outline_color\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillOutlinePattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n // find distance to outline for alpha interpolation\\n\\n float dist = length(v_pos - gl_FragCoord.xy);\\n float alpha = 1.0 - smoothstep(0.0, 1.0, dist);\\n\\n\\n gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec2 v_pos;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n\\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\\n}\\n\"},fillPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n gl_FragColor = mix(color1, color2, u_mix) * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\n\\nattribute vec2 a_pos;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);\\n}\\n\"},fillExtrusion:{fragmentSource:\"varying vec4 v_color;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n gl_FragColor = v_color;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec4 v_color;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\n#pragma mapbox: define highp vec4 color\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n #pragma mapbox: initialize highp vec4 color\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float ed = a_edgedistance; // use each attrib in order to not trip a VAO assert\\n float t = mod(a_normal.x, 2.0);\\n\\n gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);\\n\\n // Relative luminance (how dark/bright is the surface color?)\\n float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\\n\\n v_color = vec4(0.0, 0.0, 0.0, 1.0);\\n\\n // Add slight ambient lighting so no extrusions are totally black\\n vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\\n color += ambientlight;\\n\\n // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\\n float directional = clamp(dot(a_normal / 16384.0, u_lightpos), 0.0, 1.0);\\n\\n // Adjust directional so that\\n // the range of values for highlight/shading is narrower\\n // with lower light intensity\\n // and with lighter/brighter surface colors\\n directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\\n\\n // Add gradient along z axis of side surfaces\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n // Assign final color based on surface + ambient light color, diffuse light directional, and light color\\n // with lower bounds adjusted to hue of light\\n // so that shading is tinted with the complementary (opposite) color to the light color\\n v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\\n v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\\n v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\\n}\\n\"},fillExtrusionPattern:{fragmentSource:\"uniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_mix;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n vec2 imagecoord = mod(v_pos_a, 1.0);\\n vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);\\n vec4 color1 = texture2D(u_image, pos);\\n\\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\\n vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);\\n vec4 color2 = texture2D(u_image, pos2);\\n\\n vec4 mixedColor = mix(color1, color2, u_mix);\\n\\n gl_FragColor = mixedColor * v_lighting;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pixel_coord_upper;\\nuniform vec2 u_pixel_coord_lower;\\nuniform float u_scale_a;\\nuniform float u_scale_b;\\nuniform float u_tile_units_to_pixels;\\nuniform float u_height_factor;\\n\\nuniform vec3 u_lightcolor;\\nuniform lowp vec3 u_lightpos;\\nuniform lowp float u_lightintensity;\\n\\nattribute vec2 a_pos;\\nattribute vec3 a_normal;\\nattribute float a_edgedistance;\\n\\nvarying vec2 v_pos_a;\\nvarying vec2 v_pos_b;\\nvarying vec4 v_lighting;\\nvarying float v_directional;\\n\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float base\\n #pragma mapbox: initialize lowp float height\\n\\n base = max(0.0, base);\\n height = max(0.0, height);\\n\\n float t = mod(a_normal.x, 2.0);\\n float z = t > 0.0 ? height : base;\\n\\n gl_Position = u_matrix * vec4(a_pos, z, 1);\\n\\n vec2 pos = a_normal.x == 1.0 && a_normal.y == 0.0 && a_normal.z == 16384.0\\n ? a_pos // extrusion top\\n : vec2(a_edgedistance, z * u_height_factor); // extrusion side\\n\\n v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, pos);\\n v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, pos);\\n\\n v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\\n float directional = clamp(dot(a_normal / 16383.0, u_lightpos), 0.0, 1.0);\\n directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\\n\\n if (a_normal.y != 0.0) {\\n directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\\n }\\n\\n v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\\n}\\n\"},extrusionTexture:{fragmentSource:\"uniform sampler2D u_image;\\nuniform float u_opacity;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(0.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_world;\\nattribute vec2 a_pos;\\nvarying vec2 v_pos;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);\\n\\n v_pos.x = a_pos.x;\\n v_pos.y = 1.0 - a_pos.y;\\n}\\n\"},line:{fragmentSource:\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_width2;\\nvarying vec2 v_normal;\\nvarying float v_gamma_scale;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\n// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},linePattern:{fragmentSource:\"uniform vec2 u_pattern_size_a;\\nuniform vec2 u_pattern_size_b;\\nuniform vec2 u_pattern_tl_a;\\nuniform vec2 u_pattern_br_a;\\nuniform vec2 u_pattern_tl_b;\\nuniform vec2 u_pattern_br_b;\\nuniform vec2 u_texsize;\\nuniform float u_fade;\\n\\nuniform sampler2D u_image;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\\n float y_a = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_a.y);\\n float y_b = 0.5 + (v_normal.y * v_width2.s / u_pattern_size_b.y);\\n vec2 pos_a = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, vec2(x_a, y_a));\\n vec2 pos_b = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, vec2(x_b, y_b));\\n\\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\\n\\n gl_FragColor = color * alpha * opacity;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying float v_linesofar;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize mediump float width\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist = outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_linesofar = a_linesofar;\\n v_width2 = vec2(outset, inset);\\n}\\n\"},lineSDF:{\nfragmentSource:\"\\nuniform sampler2D u_image;\\nuniform float u_sdfgamma;\\nuniform float u_mix;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n // Calculate the distance of the pixel from the line in pixels.\\n float dist = length(v_normal) * v_width2.s;\\n\\n // Calculate the antialiasing fade factor. This is either when fading in\\n // the line in case of an offset line (v_width2.t) or when fading out\\n // (v_width2.s)\\n float blur2 = (blur + 1.0 / DEVICE_PIXEL_RATIO) * v_gamma_scale;\\n float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);\\n\\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\\n alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"// floor(127 / 2) == 63.0\\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\\n// there are also \\\"special\\\" normals that have a bigger length (of up to 126 in\\n// this case).\\n// #define scale 63.0\\n#define scale 0.015873016\\n\\n// We scale the distance before adding it to the buffers so that we can store\\n// long distances for long segments. Use this value to unscale the distance.\\n#define LINE_DISTANCE_SCALE 2.0\\n\\n// the distance over which the line edge fades out.\\n// Retina devices need a smaller distance to avoid aliasing.\\n#define ANTIALIASING 1.0 / DEVICE_PIXEL_RATIO / 2.0\\n\\nattribute vec4 a_pos_normal;\\nattribute vec4 a_data;\\n\\nuniform mat4 u_matrix;\\nuniform mediump float u_ratio;\\nuniform vec2 u_patternscale_a;\\nuniform float u_tex_y_a;\\nuniform vec2 u_patternscale_b;\\nuniform float u_tex_y_b;\\nuniform vec2 u_gl_units_to_pixels;\\n\\nvarying vec2 v_normal;\\nvarying vec2 v_width2;\\nvarying vec2 v_tex_a;\\nvarying vec2 v_tex_b;\\nvarying float v_gamma_scale;\\n\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 color\\n #pragma mapbox: initialize lowp float blur\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize mediump float gapwidth\\n #pragma mapbox: initialize lowp float offset\\n #pragma mapbox: initialize mediump float width\\n #pragma mapbox: initialize lowp float floorwidth\\n\\n vec2 a_extrude = a_data.xy - 128.0;\\n float a_direction = mod(a_data.z, 4.0) - 1.0;\\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\\n\\n vec2 pos = a_pos_normal.xy;\\n\\n // x is 1 if it's a round cap, 0 otherwise\\n // y is 1 if the normal points up, and -1 if it points down\\n mediump vec2 normal = a_pos_normal.zw;\\n v_normal = normal;\\n\\n // these transformations used to be applied in the JS and native code bases.\\n // moved them into the shader for clarity and simplicity.\\n gapwidth = gapwidth / 2.0;\\n float halfwidth = width / 2.0;\\n offset = -1.0 * offset;\\n\\n float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);\\n float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + ANTIALIASING;\\n\\n // Scale the extrusion vector down to a normal and then up by the line width\\n // of this vertex.\\n mediump vec2 dist =outset * a_extrude * scale;\\n\\n // Calculate the offset when drawing a line that is to the side of the actual line.\\n // We do this by creating a vector that points towards the extrude, but rotate\\n // it when we're drawing round end points (a_direction = -1 or 1) since their\\n // extrude vector points in another direction.\\n mediump float u = 0.5 * a_direction;\\n mediump float t = 1.0 - abs(u);\\n mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\\n\\n vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);\\n gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;\\n\\n // calculate how much the perspective view squishes or stretches the extrude\\n float extrude_length_without_perspective = length(dist);\\n float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_gl_units_to_pixels);\\n v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;\\n\\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);\\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);\\n\\n v_width2 = vec2(outset, inset);\\n}\\n\"},raster:{fragmentSource:\"uniform float u_fade_t;\\nuniform float u_opacity;\\nuniform sampler2D u_image0;\\nuniform sampler2D u_image1;\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nuniform float u_brightness_low;\\nuniform float u_brightness_high;\\n\\nuniform float u_saturation_factor;\\nuniform float u_contrast_factor;\\nuniform vec3 u_spin_weights;\\n\\nvoid main() {\\n\\n // read and cross-fade colors from the main and parent tiles\\n vec4 color0 = texture2D(u_image0, v_pos0);\\n vec4 color1 = texture2D(u_image1, v_pos1);\\n if (color0.a > 0.0) {\\n color0.rgb = color0.rgb / color0.a;\\n }\\n if (color1.a > 0.0) {\\n color1.rgb = color1.rgb / color1.a;\\n }\\n vec4 color = mix(color0, color1, u_fade_t);\\n color.a *= u_opacity;\\n vec3 rgb = color.rgb;\\n\\n // spin\\n rgb = vec3(\\n dot(rgb, u_spin_weights.xyz),\\n dot(rgb, u_spin_weights.zxy),\\n dot(rgb, u_spin_weights.yzx));\\n\\n // saturation\\n float average = (color.r + color.g + color.b) / 3.0;\\n rgb += (average - rgb) * u_saturation_factor;\\n\\n // contrast\\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\\n\\n // brightness\\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\\n\\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"uniform mat4 u_matrix;\\nuniform vec2 u_tl_parent;\\nuniform float u_scale_parent;\\nuniform float u_buffer_scale;\\n\\nattribute vec2 a_pos;\\nattribute vec2 a_texture_pos;\\n\\nvarying vec2 v_pos0;\\nvarying vec2 v_pos1;\\n\\nvoid main() {\\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\\n // We are using Int16 for texture position coordinates to give us enough precision for\\n // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer\\n // as an arbitrarily high number to preserve adequate precision when rendering.\\n // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,\\n // so math for modifying either is consistent.\\n v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;\\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\\n}\\n\"},symbolIcon:{fragmentSource:\"uniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * opacity;\\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_collision_y_stretch;\\n\\n#pragma mapbox: define lowp float opacity\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec2 v_tex;\\nvarying vec2 v_fade_tex;\\n\\nvoid main() {\\n #pragma mapbox: initialize lowp float opacity\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n\\n float size;\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // See comments in symbol_sdf.vertex\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // See comments in symbol_sdf.vertex\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n\\n v_tex = a_tex / u_texsize;\\n // See comments in symbol_sdf.vertex\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n v_fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n}\\n\"},symbolSDF:{fragmentSource:\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\n\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform sampler2D u_texture;\\nuniform sampler2D u_fadetexture;\\nuniform highp float u_gamma_scale;\\nuniform bool u_is_text;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 tex = v_data0.xy;\\n vec2 fade_tex = v_data0.zw;\\n float gamma_scale = v_data1.x;\\n float size = v_data1.y;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n lowp vec4 color = fill_color;\\n highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);\\n lowp float buff = (256.0 - 64.0) / 256.0;\\n if (u_is_halo) {\\n color = halo_color;\\n gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);\\n buff = (6.0 - halo_width / fontScale) / SDF_PX;\\n }\\n\\n lowp float dist = texture2D(u_texture, tex).a;\\n lowp float fade_alpha = texture2D(u_fadetexture, fade_tex).a;\\n highp float gamma_scaled = gamma * gamma_scale;\\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist) * fade_alpha;\\n\\n gl_FragColor = color * (alpha * opacity);\\n\\n#ifdef OVERDRAW_INSPECTOR\\n gl_FragColor = vec4(1.0);\\n#endif\\n}\\n\",vertexSource:\"const float PI = 3.141592653589793;\\n\\nattribute vec4 a_pos_offset;\\nattribute vec4 a_data;\\nattribute vec3 a_projected_pos;\\n\\n// contents of a_size vary based on the type of property value\\n// used for {text,icon}-size.\\n// For constants, a_size is disabled.\\n// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.\\n// For composite functions:\\n// [ text-size(lowerZoomStop, feature),\\n// text-size(upperZoomStop, feature) ]\\nuniform bool u_is_size_zoom_constant;\\nuniform bool u_is_size_feature_constant;\\nuniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function\\nuniform highp float u_size; // used when size is both zoom and feature constant\\n\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\n\\nuniform mat4 u_matrix;\\nuniform mat4 u_label_plane_matrix;\\nuniform mat4 u_gl_coord_matrix;\\n\\nuniform bool u_is_text;\\nuniform bool u_pitch_with_map;\\nuniform highp float u_pitch;\\nuniform bool u_rotate_symbol;\\nuniform highp float u_aspect_ratio;\\nuniform highp float u_camera_to_center_distance;\\nuniform highp float u_collision_y_stretch;\\n\\nuniform vec2 u_texsize;\\n\\nvarying vec4 v_data0;\\nvarying vec2 v_data1;\\n\\nvoid main() {\\n #pragma mapbox: initialize highp vec4 fill_color\\n #pragma mapbox: initialize highp vec4 halo_color\\n #pragma mapbox: initialize lowp float opacity\\n #pragma mapbox: initialize lowp float halo_width\\n #pragma mapbox: initialize lowp float halo_blur\\n\\n vec2 a_pos = a_pos_offset.xy;\\n vec2 a_offset = a_pos_offset.zw;\\n\\n vec2 a_tex = a_data.xy;\\n vec2 a_size = a_data.zw;\\n\\n highp vec2 angle_labelminzoom = unpack_float(a_projected_pos[2]);\\n highp float segment_angle = -angle_labelminzoom[0] / 255.0 * 2.0 * PI;\\n mediump float a_labelminzoom = angle_labelminzoom[1];\\n float size;\\n\\n if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = mix(a_size[0], a_size[1], u_size_t) / 10.0;\\n } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {\\n size = a_size[0] / 10.0;\\n } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {\\n size = u_size;\\n } else {\\n size = u_size;\\n }\\n\\n vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);\\n highp float camera_to_anchor_distance = projectedPoint.w;\\n // If the label is pitched with the map, layout is done in pitched space,\\n // which makes labels in the distance smaller relative to viewport space.\\n // We counteract part of that effect by multiplying by the perspective ratio.\\n // If the label isn't pitched with the map, we do layout in viewport space,\\n // which makes labels in the distance larger relative to the features around\\n // them. We counteract part of that effect by dividing by the perspective ratio.\\n highp float distance_ratio = u_pitch_with_map ?\\n camera_to_anchor_distance / u_camera_to_center_distance :\\n u_camera_to_center_distance / camera_to_anchor_distance;\\n highp float perspective_ratio = 0.5 + 0.5 * distance_ratio;\\n\\n size *= perspective_ratio;\\n\\n float fontScale = u_is_text ? size / 24.0 : size;\\n\\n highp float symbol_rotation = 0.0;\\n if (u_rotate_symbol) {\\n // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units\\n // To figure out that angle in projected space, we draw a short horizontal line in tile\\n // space, project it, and measure its angle in projected space.\\n vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);\\n\\n vec2 a = projectedPoint.xy / projectedPoint.w;\\n vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;\\n\\n symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);\\n }\\n\\n highp float angle_sin = sin(segment_angle + symbol_rotation);\\n highp float angle_cos = cos(segment_angle + symbol_rotation);\\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\\n\\n vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);\\n gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 64.0 * fontScale), 0.0, 1.0);\\n float gamma_scale = gl_Position.w;\\n\\n vec2 tex = a_tex / u_texsize;\\n // incidence_stretch is the ratio of how much y space a label takes up on a tile while drawn perpendicular to the viewport vs\\n // how much space it would take up if it were drawn flat on the tile\\n // Using law of sines, camera_to_anchor/sin(ground_angle) = camera_to_center/sin(incidence_angle)\\n // sin(incidence_angle) = 1/incidence_stretch\\n // Incidence angle 90 -> head on, sin(incidence_angle) = 1, no incidence stretch\\n // Incidence angle 1 -> very oblique, sin(incidence_angle) =~ 0, lots of incidence stretch\\n // ground_angle = u_pitch + PI/2 -> sin(ground_angle) = cos(u_pitch)\\n // This 2D calculation is only exactly correct when gl_Position.x is in the center of the viewport,\\n // but it's a close enough approximation for our purposes\\n highp float incidence_stretch = camera_to_anchor_distance / (u_camera_to_center_distance * cos(u_pitch));\\n // incidence_stretch only applies to the y-axis, but without re-calculating the collision tile, we can't\\n // adjust the size of only one axis. So, we do a crude approximation at placement time to get the aspect ratio\\n // about right, and then do the rest of the adjustment here: there will be some extra padding on the x-axis,\\n // but hopefully not too much.\\n // Never make the adjustment less than 1.0: instead of allowing collisions on the x-axis, be conservative on\\n // the y-axis.\\n highp float collision_adjustment = max(1.0, incidence_stretch / u_collision_y_stretch);\\n\\n // Floor to 1/10th zoom to dodge precision issues that can cause partially hidden labels\\n highp float collision_perspective_ratio = 1.0 + 0.5*((camera_to_anchor_distance / u_camera_to_center_distance) - 1.0);\\n highp float perspective_zoom_adjust = floor(log2(collision_perspective_ratio * collision_adjustment) * 10.0);\\n vec2 fade_tex = vec2((a_labelminzoom + perspective_zoom_adjust) / 255.0, 0.0);\\n\\n v_data0 = vec4(tex.x, tex.y, fade_tex.x, fade_tex.y);\\n v_data1 = vec2(gamma_scale, size);\\n}\\n\"}},re=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,loop=function(e){var n=shaders[e],a={};n.fragmentSource=n.fragmentSource.replace(re,function(e,n,o,t,i){return a[i]=!0,\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"}),n.vertexSource=n.vertexSource.replace(re,function(e,n,o,t,i){var r=\"float\"===t?\"vec2\":\"vec4\";return a[i]?\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\nvarying \"+o+\" \"+t+\" \"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\":\"define\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\nuniform lowp float a_\"+i+\"_t;\\nattribute \"+o+\" \"+r+\" a_\"+i+\";\\n#else\\nuniform \"+o+\" \"+t+\" u_\"+i+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+i+\"\\n \"+o+\" \"+t+\" \"+i+\" = unpack_mix_\"+r+\"(a_\"+i+\", a_\"+i+\"_t);\\n#else\\n \"+o+\" \"+t+\" \"+i+\" = u_\"+i+\";\\n#endif\\n\"})};for(var programName in shaders)loop(programName);module.exports=shaders;\n},{}],87:[function(_dereq_,module,exports){\n\"use strict\";var ImageSource=_dereq_(\"./image_source\"),window=_dereq_(\"../util/window\"),CanvasSource=function(t){function i(i,a,e,s){t.call(this,i,a,e,s),this.options=a,this.animate=void 0===a.animate||a.animate}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.load=function(){this.canvas=this.canvas||window.document.getElementById(this.options.canvas);var t=this.canvas.getContext(this.options.contextType);if(!t)return this.fire(\"error\",new Error(\"Canvas context not found.\"));if(this.context=t,this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions())return this.fire(\"error\",new Error(\"Canvas dimensions cannot be less than or equal to zero.\"));var i;this.play=function(){void 0===i&&(i=this.map.style.animationLoop.set(1/0),this.map._rerender())},this.pause=function(){void 0!==i&&(i=this.map.style.animationLoop.cancel(i))},this._finishLoading()},i.prototype.getCanvas=function(){return this.canvas},i.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},i.prototype.onRemove=function(){this.pause()},i.prototype.readCanvas=function(t){var i=this;if(this.context instanceof CanvasRenderingContext2D)this.canvasData=this.context.getImageData(0,0,this.width,this.height);else if(this.context instanceof WebGLRenderingContext){var a=this.context,e=new Uint8Array(this.width*this.height*4);a.readPixels(0,0,this.width,this.height,a.RGBA,a.UNSIGNED_BYTE,e),this.secondaryContext||(this.secondaryContext=window.document.createElement(\"canvas\").getContext(\"2d\")),this.canvasData&&!t||(this.canvasData=this.secondaryContext.createImageData(this.width,this.height));for(var s=this.height-1,n=0;s>=0;s--,n++)i.canvasData.data.set(e.subarray(s*i.width*4,(s+1)*i.width*4),n*i.width*4)}},i.prototype.prepare=function(){var t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){if((this.animate||!this.canvasData||t)&&this.readCanvas(t),!this.canvasData)return void this.fire(\"error\",new Error(\"Could not read canvas data.\"));this._prepareImage(this.map.painter.gl,this.canvasData,t)}},i.prototype.serialize=function(){return{type:\"canvas\",canvas:this.canvas,coordinates:this.coordinates}},i.prototype._hasInvalidDimensions=function(){for(var t=this,i=0,a=[t.canvas.width,t.canvas.height];i<a.length;i+=1){var e=a[i];if(isNaN(e)||e<=0)return!0}return!1},i}(ImageSource);module.exports=CanvasSource;\n},{\"../util/window\":204,\"./image_source\":91}],88:[function(_dereq_,module,exports){\n\"use strict\";function resolveURL(t){var e=window.document.createElement(\"a\");return e.href=t,e.href}var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),EXTENT=_dereq_(\"../data/extent\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),GeoJSONSource=function(t){function e(e,o,r,i){t.call(this),this.id=e,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this.dispatcher=r,this.setEventedParent(i),this._data=o.data,this._options=util.extend({},o),void 0!==o.maxzoom&&(this.maxzoom=o.maxzoom),o.type&&(this.type=o.type);var a=EXTENT/this.tileSize;this.workerOptions=util.extend({source:this.id,cluster:o.cluster||!1,geojsonVtOptions:{buffer:(void 0!==o.buffer?o.buffer:128)*a,tolerance:(void 0!==o.tolerance?o.tolerance:.375)*a,extent:EXTENT,maxZoom:this.maxzoom},superclusterOptions:{maxZoom:void 0!==o.clusterMaxZoom?Math.min(o.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:EXTENT,radius:(o.clusterRadius||50)*a,log:!1}},o.workerOptions)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.load=function(){var t=this;this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(e){if(e)return void t.fire(\"error\",{error:e});t.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})})},e.prototype.onAdd=function(t){this.map=t,this.load()},e.prototype.setData=function(t){var e=this;return this._data=t,this.fire(\"dataloading\",{dataType:\"source\"}),this._updateWorkerData(function(t){if(t)return e.fire(\"error\",{error:t});e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"})}),this},e.prototype._updateWorkerData=function(t){var e=this,o=util.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?o.request=this.map._transformRequest(resolveURL(r),ResourceType.Source):o.data=JSON.stringify(r),this.workerID=this.dispatcher.send(this.type+\".loadData\",o,function(o){e._loaded=!0,t(o)},this.workerID)},e.prototype.loadTile=function(t,e){var o=this,r=t.workerID&&\"expired\"!==t.state?\"reloadTile\":\"loadTile\",i={type:this.type,uid:t.uid,coord:t.coord,zoom:t.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:t.coord.z>this.maxzoom?Math.pow(2,t.coord.z-this.maxzoom):1,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(t),showCollisionBoxes:this.map.showCollisionBoxes};t.workerID=this.dispatcher.send(r,i,function(r,i){if(t.unloadVectorData(),!t.aborted)return r?e(r):(t.loadVectorData(i,o.map.painter),t.redoWhenDone&&(t.redoWhenDone=!1,t.redoPlacement(o)),e(null))},this.workerID)},e.prototype.abortTile=function(t){t.aborted=!0},e.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},function(){},t.workerID)},e.prototype.onRemove=function(){this.dispatcher.broadcast(\"removeSource\",{type:this.type,source:this.id},function(){})},e.prototype.serialize=function(){return util.extend({},this._options,{type:this.type,data:this._data})},e}(Evented);module.exports=GeoJSONSource;\n},{\"../data/extent\":48,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204}],89:[function(_dereq_,module,exports){\n\"use strict\";function loadGeoJSONTile(e,r){var t=e.source,o=e.coord;if(!this._geoJSONIndexes[t])return r(null,null);var n=this._geoJSONIndexes[t].getTile(Math.min(o.z,e.maxZoom),o.x,o.y);if(!n)return r(null,null);var u=new GeoJSONWrapper(n.features),i=vtpbf(u);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),r(null,{vectorTile:u,rawData:i.buffer})}var ajax=_dereq_(\"../util/ajax\"),rewind=_dereq_(\"geojson-rewind\"),GeoJSONWrapper=_dereq_(\"./geojson_wrapper\"),vtpbf=_dereq_(\"vt-pbf\"),supercluster=_dereq_(\"supercluster\"),geojsonvt=_dereq_(\"geojson-vt\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=function(e){function r(r,t,o){e.call(this,r,t,loadGeoJSONTile),o&&(this.loadGeoJSON=o),this._geoJSONIndexes={}}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,r){var t=this;this.loadGeoJSON(e,function(o,n){if(o||!n)return r(o);if(\"object\"!=typeof n)return r(new Error(\"Input data is not a valid GeoJSON object.\"));rewind(n,!0);try{t._geoJSONIndexes[e.source]=e.cluster?supercluster(e.superclusterOptions).load(n.features):geojsonvt(n,e.geojsonVtOptions)}catch(o){return r(o)}t.loaded[e.source]={},r(null)})},r.prototype.reloadTile=function(r,t){var o=this.loaded[r.source],n=r.uid;return o&&o[n]?e.prototype.reloadTile.call(this,r,t):this.loadTile(r,t)},r.prototype.loadGeoJSON=function(e,r){if(e.request)ajax.getJSON(e.request,r);else{if(\"string\"!=typeof e.data)return r(new Error(\"Input data is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(e.data))}catch(e){return r(new Error(\"Input data is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(e){this._geoJSONIndexes[e.source]&&delete this._geoJSONIndexes[e.source]},r}(VectorTileWorkerSource);module.exports=GeoJSONWorkerSource;\n},{\"../util/ajax\":201,\"./geojson_wrapper\":90,\"./vector_tile_worker_source\":103,\"geojson-rewind\":13,\"geojson-vt\":17,\"supercluster\":32,\"vt-pbf\":37}],90:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),toGeoJSON=_dereq_(\"@mapbox/vector-tile\").VectorTileFeature.prototype.toGeoJSON,EXTENT=_dereq_(\"../data/extent\"),FeatureWrapper=function(e){this._feature=e,this.extent=EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};FeatureWrapper.prototype.loadGeometry=function(){var e=this;if(1===this._feature.type){for(var t=[],r=0,o=e._feature.geometry;r<o.length;r+=1){var a=o[r];t.push([new Point(a[0],a[1])])}return t}for(var i=[],p=0,n=e._feature.geometry;p<n.length;p+=1){for(var s=n[p],u=[],h=0,f=s;h<f.length;h+=1){var l=f[h];u.push(new Point(l[0],l[1]))}i.push(u)}return i},FeatureWrapper.prototype.toGeoJSON=function(e,t,r){return toGeoJSON.call(this,e,t,r)};var GeoJSONWrapper=function(e){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=EXTENT,this.length=e.length,this._features=e};GeoJSONWrapper.prototype.feature=function(e){return new FeatureWrapper(this._features[e])},module.exports=GeoJSONWrapper;\n},{\"../data/extent\":48,\"@mapbox/point-geometry\":2,\"@mapbox/vector-tile\":6}],91:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),TileCoord=_dereq_(\"./tile_coord\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),EXTENT=_dereq_(\"../data/extent\"),RasterBoundsArray=_dereq_(\"../data/raster_bounds_array\"),VertexBuffer=_dereq_(\"../gl/vertex_buffer\"),VertexArrayObject=_dereq_(\"../render/vertex_array_object\"),ImageSource=function(e){function t(t,r,o,i){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(i),this.options=r,this.textureLoaded=!1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),this.url=this.options.url,ajax.getImage(this.map._transformRequest(this.url,ajax.ResourceType.Image),function(t,r){t?e.fire(\"error\",{error:t}):r&&(e.image=browser.getImageData(r),e._finishLoading())})},t.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}))},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.setCoordinates=function(e){this.coordinates=e;var t=this.map,r=e.map(function(e){return t.transform.locationCoordinate(LngLat.convert(e)).zoomTo(0)}),o=this.centerCoord=util.getCoordinatesCenter(r);o.column=Math.floor(o.column),o.row=Math.floor(o.row),this.coord=new TileCoord(o.zoom,o.column,o.row),this.minzoom=this.maxzoom=o.zoom;var i=r.map(function(e){var t=e.zoomTo(o.zoom);return new Point(Math.round((t.column-o.column)*EXTENT),Math.round((t.row-o.row)*EXTENT))});return this._boundsArray=new RasterBoundsArray,this._boundsArray.emplaceBack(i[0].x,i[0].y,0,0),this._boundsArray.emplaceBack(i[1].x,i[1].y,EXTENT,0),this._boundsArray.emplaceBack(i[3].x,i[3].y,0,EXTENT),this._boundsArray.emplaceBack(i[2].x,i[2].y,EXTENT,EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}),this},t.prototype.prepare=function(){0!==Object.keys(this.tiles).length&&this.image&&this._prepareImage(this.map.painter.gl,this.image)},t.prototype._prepareImage=function(e,t,r){var o=this;this.boundsBuffer||(this.boundsBuffer=new VertexBuffer(e,this._boundsArray)),this.boundsVAO||(this.boundsVAO=new VertexArrayObject),this.textureLoaded?r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t):(t instanceof window.HTMLVideoElement||t instanceof window.ImageData)&&(e.bindTexture(e.TEXTURE_2D,this.texture),e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,t)):(this.textureLoaded=!0,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t));for(var i in o.tiles){var a=o.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=o.texture)}},t.prototype.loadTile=function(e,t){this.coord&&this.coord.toString()===e.coord.toString()?(this.tiles[String(e.coord.w)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null))},t.prototype.serialize=function(){return{type:\"image\",url:this.options.url,coordinates:this.coordinates}},t}(Evented);module.exports=ImageSource;\n},{\"../data/extent\":48,\"../data/raster_bounds_array\":54,\"../geo/lng_lat\":58,\"../gl/vertex_buffer\":62,\"../render/vertex_array_object\":84,\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"../util/window\":204,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],92:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeSourceURL;module.exports=function(r,e,o){var u=function(r,e){if(r)return o(r);if(e){var u=util.pick(e,[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\"]);e.vector_layers&&(u.vectorLayers=e.vector_layers,u.vectorLayerIds=u.vectorLayers.map(function(r){return r.id})),o(null,u)}};r.url?ajax.getJSON(e(normalizeURL(r.url),ajax.ResourceType.Source),u):browser.frame(function(){return u(null,r)})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/mapbox\":217,\"../util/util\":223}],93:[function(_dereq_,module,exports){\n\"use strict\";var EXTENT=_dereq_(\"../data/extent\");module.exports=function(e,t,r){return t*(EXTENT/(e.tileSize*Math.pow(2,r-e.coord.z)))};\n},{\"../data/extent\":48}],94:[function(_dereq_,module,exports){\n\"use strict\";function sortTilesIn(e,r){var o=e.coord,t=r.coord;return o.z-t.z||o.y-t.y||o.w-t.w||o.x-t.x}function mergeRenderedFeatureLayers(e){for(var r={},o={},t=0,n=e;t<n.length;t+=1){var u=n[t],a=u.queryResults,d=u.wrappedTileID,s=o[d]=o[d]||{};for(var i in a)for(var l=a[i],c=s[i]=s[i]||{},f=r[i]=r[i]||[],v=0,y=l;v<y.length;v+=1){var p=y[v];c[p.featureIndex]||(c[p.featureIndex]=!0,f.push(p.feature))}}return r}var TileCoord=_dereq_(\"./tile_coord\");exports.rendered=function(e,r,o,t,n,u){var a=e.tilesIn(o);a.sort(sortTilesIn);for(var d=[],s=0,i=a;s<i.length;s+=1){var l=i[s];d.push({wrappedTileID:l.coord.wrapped().id,queryResults:l.tile.queryRenderedFeatures(r,l.queryGeometry,l.scale,t,u)})}return mergeRenderedFeatureLayers(d)},exports.source=function(e,r){for(var o=e.getRenderableIds().map(function(r){return e.getTileByID(r)}),t=[],n={},u=0;u<o.length;u++){var a=o[u],d=new TileCoord(Math.min(a.sourceMaxZoom,a.coord.z),a.coord.x,a.coord.y,0).id;n[d]||(n[d]=!0,a.querySourceFeatures(t,r))}return t};\n},{\"./tile_coord\":101}],95:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),RasterTileSource=function(e){function t(t,i,r,o){e.call(this),this.id=t,this.dispatcher=r,this.setEventedParent(o),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=util.extend({},i),util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"]))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.loadTile=function(e,t){var i=this,r=normalizeURL(e.coord.url(this.tiles,null,this.scheme),this.url,this.tileSize);e.request=ajax.getImage(this.map._transformRequest(r,ajax.ResourceType.Tile),function(r,o){if(delete e.request,e.aborted)i.state=\"unloaded\",t(null);else if(r)i.state=\"errored\",t(r);else if(o){i.map._refreshExpiredTiles&&e.setExpiryData(o),delete o.cacheControl,delete o.expires;var a=i.map.painter.gl;e.texture=i.map.painter.getTileTexture(o.width),e.texture?(a.bindTexture(a.TEXTURE_2D,e.texture),a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,o)):(e.texture=a.createTexture(),a.bindTexture(a.TEXTURE_2D,e.texture),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),i.map.painter.extTextureFilterAnisotropic&&a.texParameterf(a.TEXTURE_2D,i.map.painter.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.map.painter.extTextureFilterAnisotropicMax),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,o),e.texture.size=o.width),a.generateMipmap(a.TEXTURE_2D),e.state=\"loaded\",t(null)}})},t.prototype.abortTile=function(e){e.request&&(e.request.abort(),delete e.request)},t.prototype.unloadTile=function(e){e.texture&&this.map.painter.saveTileTexture(e.texture)},t}(Evented);module.exports=RasterTileSource;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],96:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),Evented=_dereq_(\"../util/evented\"),window=_dereq_(\"../util/window\"),pluginRequested=!1,pluginBlobURL=null;module.exports.evented=new Evented,module.exports.registerForPluginAvailability=function(e){return pluginBlobURL?e({pluginBlobURL:pluginBlobURL,errorCallback:module.exports.errorCallback}):module.exports.evented.once(\"pluginAvailable\",e),e},module.exports.createBlobURL=function(e){return window.URL.createObjectURL(new window.Blob([e.data],{type:\"text/javascript\"}))},module.exports.clearRTLTextPlugin=function(){pluginRequested=!1,pluginBlobURL=null},module.exports.setRTLTextPlugin=function(e,l){if(pluginRequested)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");pluginRequested=!0,module.exports.errorCallback=l,ajax.getArrayBuffer({url:e},function(e,t){e?l(e):t&&(pluginBlobURL=module.exports.createBlobURL(t),module.exports.evented.fire(\"pluginAvailable\",{pluginBlobURL:pluginBlobURL,errorCallback:l}))})},module.exports.applyArabicShaping=null,module.exports.processBidirectionalText=null;\n},{\"../util/ajax\":201,\"../util/evented\":210,\"../util/window\":204}],97:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),sourceTypes={vector:_dereq_(\"../source/vector_tile_source\"),raster:_dereq_(\"../source/raster_tile_source\"),geojson:_dereq_(\"../source/geojson_source\"),video:_dereq_(\"../source/video_source\"),image:_dereq_(\"../source/image_source\"),canvas:_dereq_(\"../source/canvas_source\")};exports.create=function(e,r,o,u){var s=new sourceTypes[r.type](e,r,o,u);if(s.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+s.id);return util.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],s),s},exports.getType=function(e){return sourceTypes[e]},exports.setType=function(e,r){sourceTypes[e]=r};\n},{\"../source/canvas_source\":87,\"../source/geojson_source\":88,\"../source/image_source\":91,\"../source/raster_tile_source\":95,\"../source/vector_tile_source\":102,\"../source/video_source\":104,\"../util/util\":223}],98:[function(_dereq_,module,exports){\n\"use strict\";function coordinateToTilePoint(e,t,o){var i=o.zoomTo(Math.min(e.z,t));return new Point((i.column-(e.x+e.w*Math.pow(2,e.z)))*EXTENT,(i.row-e.y)*EXTENT)}function compareKeyZoom(e,t){return e%32-t%32}function isRasterType(e){return\"raster\"===e||\"image\"===e||\"video\"===e}var createSource=_dereq_(\"./source\").create,Tile=_dereq_(\"./tile\"),Evented=_dereq_(\"../util/evented\"),TileCoord=_dereq_(\"./tile_coord\"),Cache=_dereq_(\"../util/lru_cache\"),Coordinate=_dereq_(\"../geo/coordinate\"),util=_dereq_(\"../util/util\"),EXTENT=_dereq_(\"../data/extent\"),Point=_dereq_(\"@mapbox/point-geometry\"),SourceCache=function(e){function t(t,o,i){var r=this;e.call(this),this.id=t,this.dispatcher=i,this.on(\"data\",function(e){\"source\"===e.dataType&&\"metadata\"===e.sourceDataType&&(r._sourceLoaded=!0),r._sourceLoaded&&!r._paused&&\"source\"===e.dataType&&\"content\"===e.sourceDataType&&(r.reload(),r.transform&&r.update(r.transform))}),this.on(\"error\",function(){r._sourceErrored=!0}),this._source=createSource(t,o,i,this),this._tiles={},this._cache=new Cache(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._isIdRenderable=this._isIdRenderable.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.onAdd=function(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(e)},t.prototype.onRemove=function(e){this._source&&this._source.onRemove&&this._source.onRemove(e)},t.prototype.loaded=function(){var e=this;if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;for(var t in e._tiles){var o=e._tiles[t];if(\"loaded\"!==o.state&&\"errored\"!==o.state)return!1}return!0},t.prototype.getSource=function(){return this._source},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){if(this._paused){var e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}},t.prototype._loadTile=function(e,t){return this._source.loadTile(e,t)},t.prototype._unloadTile=function(e){if(this._source.unloadTile)return this._source.unloadTile(e)},t.prototype._abortTile=function(e){if(this._source.abortTile)return this._source.abortTile(e)},t.prototype.serialize=function(){return this._source.serialize()},t.prototype.prepare=function(e){var t=this;this._source.prepare&&this._source.prepare();for(var o in t._tiles)t._tiles[o].upload(e)},t.prototype.getIds=function(){return Object.keys(this._tiles).map(Number).sort(compareKeyZoom)},t.prototype.getRenderableIds=function(){return this.getIds().filter(this._isIdRenderable)},t.prototype._isIdRenderable=function(e){return this._tiles[e].hasData()&&!this._coveredTiles[e]},t.prototype.reload=function(){var e=this;if(this._paused)return void(this._shouldReloadOnResume=!0);this._cache.reset();for(var t in e._tiles)e._reloadTile(t,\"reloading\")},t.prototype._reloadTile=function(e,t){var o=this._tiles[e];o&&(\"loading\"!==o.state&&(o.state=t),this._loadTile(o,this._tileLoaded.bind(this,o,e,t)))},t.prototype._tileLoaded=function(e,t,o,i){if(i)return e.state=\"errored\",void(404!==i.status?this._source.fire(\"error\",{tile:e,error:i}):this.update(this.transform));e.timeAdded=(new Date).getTime(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),this._source.fire(\"data\",{dataType:\"source\",tile:e,coord:e.coord}),this.map&&(this.map.painter.tileExtentVAO.vao=null)},t.prototype.getTile=function(e){return this.getTileByID(e.id)},t.prototype.getTileByID=function(e){return this._tiles[e]},t.prototype.getZoom=function(e){return e.zoom+e.scaleZoom(e.tileSize/this._source.tileSize)},t.prototype._findLoadedChildren=function(e,t,o){var i=this,r=!1;for(var s in i._tiles){var a=i._tiles[s];if(!(o[s]||!a.hasData()||a.coord.z<=e.z||a.coord.z>t)){var n=Math.pow(2,Math.min(a.coord.z,i._source.maxzoom)-Math.min(e.z,i._source.maxzoom));if(Math.floor(a.coord.x/n)===e.x&&Math.floor(a.coord.y/n)===e.y)for(o[s]=!0,r=!0;a&&a.coord.z-1>e.z;){var d=a.coord.parent(i._source.maxzoom);if(!d)break;a=i._tiles[d.id],a&&a.hasData()&&(delete o[s],o[d.id]=!0)}}}return r},t.prototype.findLoadedParent=function(e,t,o){for(var i=this,r=e.z-1;r>=t;r--){var s=e.parent(i._source.maxzoom);if(!s)return;e=s;var a=String(e.id),n=i._tiles[a];if(n&&n.hasData())return o[a]=!0,n;if(i._cache.has(a))return o[a]=!0,i._cache.getWithoutRemoving(a)}},t.prototype.updateCacheSize=function(e){var t=Math.ceil(e.width/e.tileSize)+1,o=Math.ceil(e.height/e.tileSize)+1,i=t*o,r=Math.floor(5*i),s=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(s)},t.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){this.updateCacheSize(e),this._coveredTiles={};var i;this.used?this._source.coord?i=e.getVisibleWrappedCoordinates(this._source.coord):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(e){return o._source.hasTile(e)}))):i=[];var r=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),s=Math.max(r-t.maxOverzooming,this._source.minzoom),a=Math.max(r+t.maxUnderzooming,this._source.minzoom),n=this._updateRetainedTiles(i,r),d={};if(isRasterType(this._source.type))for(var h=Object.keys(n),u=0;u<h.length;u++){var c=h[u],l=TileCoord.fromID(+c),_=o._tiles[c];if(_&&(void 0===_.fadeEndTime||_.fadeEndTime>=Date.now())){o._findLoadedChildren(l,a,n)&&(n[c]=!0);var m=o.findLoadedParent(l,s,d);m&&o._addTile(m.coord)}}var p;for(p in d)n[p]||(o._coveredTiles[p]=!0);for(p in d)n[p]=!0;for(var f=util.keysDifference(this._tiles,n),T=0;T<f.length;T++)o._removeTile(f[T])}},t.prototype._updateRetainedTiles=function(e,o){var i,r,s,a,n=this,d={},h={},u=Math.max(o-t.maxOverzooming,this._source.minzoom);for(i=0;i<e.length;i++){r=e[i],s=n._addTile(r);var c=!1;if(s.hasData())d[r.id]=!0;else{c=s.wasRequested(),d[r.id]=!0,a=!0;if(o+1>n._source.maxzoom){var l=r.children(n._source.maxzoom)[0],_=n.getTile(l);_&&_.hasData()?d[l.id]=!0:a=!1}else for(var m=r.children(n._source.maxzoom),p=0;p<m.length;p++){var f=m[p],T=f?n.getTile(f):null;T&&T.hasData()?d[f.id]=!0:a=!1}if(!a)for(var v=o-1;v>=u;--v){var y=r.scaledTo(v,n._source.maxzoom);if(h[y.id])break;if(h[y.id]=!0,s=n.getTile(y),!s&&c&&(s=n._addTile(y)),s&&(d[y.id]=!0,c=s.wasRequested(),s.hasData()))break}}}return d},t.prototype._addTile=function(e){var t=this._tiles[e.id];if(t)return t;(t=this._cache.get(e.id))&&(t.redoPlacement(this._source),this._cacheTimers[e.id]&&(clearTimeout(this._cacheTimers[e.id]),delete this._cacheTimers[e.id],this._setTileReloadTimer(e.id,t)));var o=Boolean(t);if(!o){var i=e.z,r=i>this._source.maxzoom?Math.pow(2,i-this._source.maxzoom):1;t=new Tile(e,this._source.tileSize*r,this._source.maxzoom),this._loadTile(t,this._tileLoaded.bind(this,t,e.id,t.state))}return t?(t.uses++,this._tiles[e.id]=t,o||this._source.fire(\"dataloading\",{tile:t,coord:t.coord,dataType:\"source\"}),t):null},t.prototype._setTileReloadTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout(function(){o._reloadTile(e,\"expired\"),delete o._timers[e]},i))},t.prototype._setCacheInvalidationTimer=function(e,t){var o=this,i=t.getExpiryTimeout();i&&(this._cacheTimers[e]=setTimeout(function(){o._cache.remove(e),delete o._cacheTimers[e]},i))},t.prototype._removeTile=function(e){var t=this._tiles[e];if(t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),!(t.uses>0)))if(t.stopPlacementThrottler(),t.hasData()){var o=t.coord.wrapped().id;this._cache.add(o,t),this._setCacheInvalidationTimer(o,t)}else t.aborted=!0,this._abortTile(t),this._unloadTile(t)},t.prototype.clearTiles=function(){var e=this;this._shouldReloadOnResume=!1,this._paused=!1;for(var t in e._tiles)e._removeTile(t);this._cache.reset()},t.prototype.tilesIn=function(e){for(var t=this,o=[],i=this.getIds(),r=1/0,s=1/0,a=-1/0,n=-1/0,d=e[0].zoom,h=0;h<e.length;h++){var u=e[h];r=Math.min(r,u.column),s=Math.min(s,u.row),a=Math.max(a,u.column),n=Math.max(n,u.row)}for(var c=0;c<i.length;c++){var l=t._tiles[i[c]],_=TileCoord.fromID(i[c]),m=[coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(r,s,d)),coordinateToTilePoint(_,l.sourceMaxZoom,new Coordinate(a,n,d))];if(m[0].x<EXTENT&&m[0].y<EXTENT&&m[1].x>=0&&m[1].y>=0){for(var p=[],f=0;f<e.length;f++)p.push(coordinateToTilePoint(_,l.sourceMaxZoom,e[f]));o.push({tile:l,coord:_,queryGeometry:[p],scale:Math.pow(2,t.transform.zoom-l.coord.z)})}}return o},t.prototype.redoPlacement=function(){for(var e=this,t=this.getIds(),o=0;o<t.length;o++){e.getTileByID(t[o]).redoPlacement(e._source)}},t.prototype.getVisibleCoordinates=function(){for(var e=this,t=this.getRenderableIds().map(TileCoord.fromID),o=0,i=t;o<i.length;o+=1){var r=i[o];r.posMatrix=e.transform.calculatePosMatrix(r,e._source.maxzoom)}return t},t}(Evented);SourceCache.maxOverzooming=10,SourceCache.maxUnderzooming=3,module.exports=SourceCache;\n},{\"../data/extent\":48,\"../geo/coordinate\":57,\"../util/evented\":210,\"../util/lru_cache\":216,\"../util/util\":223,\"./source\":97,\"./tile\":99,\"./tile_coord\":101,\"@mapbox/point-geometry\":2}],99:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),deserializeBucket=_dereq_(\"../data/bucket\").deserialize,SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),FeatureIndex=_dereq_(\"../data/feature_index\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),GeoJSONFeature=_dereq_(\"../util/vectortile_to_geojson\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),Throttler=_dereq_(\"../util/throttler\"),Texture=_dereq_(\"../render/texture\"),CLOCK_SKEW_RETRY_TIMEOUT=3e4,Tile=function(e,t,i){this.coord=e,this.uid=util.uniqueId(),this.uses=0,this.tileSize=t,this.sourceMaxZoom=i,this.buckets={},this.expirationTime=null,this.expiredRequestCount=0,this.state=\"loading\",this.placementThrottler=new Throttler(300,this._immediateRedoPlacement.bind(this))};Tile.prototype.registerFadeDuration=function(e,t){var i=t+this.timeAdded;i<Date.now()||this.fadeEndTime&&i<this.fadeEndTime||(this.fadeEndTime=i,e.set(this.fadeEndTime-Date.now()))},Tile.prototype.wasRequested=function(){return\"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},Tile.prototype.loadVectorData=function(e,t){this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e&&(e.rawTileData&&(this.rawTileData=e.rawTileData),this.collisionBoxArray=new CollisionBoxArray(e.collisionBoxArray),this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex=FeatureIndex.deserialize(e.featureIndex,this.rawTileData,this.collisionTile),this.buckets=deserializeBucket(e.buckets,t.style),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage))},Tile.prototype.reloadSymbolData=function(e,t){var i=this;if(\"unloaded\"!==this.state){this.collisionTile=CollisionTile.deserialize(e.collisionTile,this.collisionBoxArray),this.featureIndex&&this.featureIndex.setCollisionTile(this.collisionTile);for(var a in i.buckets){var s=i.buckets[a];s instanceof SymbolBucket&&(s.destroy(),delete i.buckets[a])}util.extend(this.buckets,deserializeBucket(e.buckets,t)),e.iconAtlasImage&&(this.iconAtlasImage=e.iconAtlasImage),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage)}},Tile.prototype.unloadVectorData=function(){var e=this;for(var t in e.buckets)e.buckets[t].destroy();this.buckets={},this.iconAtlasTexture&&this.iconAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.collisionBoxArray=null,this.collisionTile=null,this.featureIndex=null,this.state=\"unloaded\"},Tile.prototype.redoPlacement=function(e){if(\"vector\"===e.type||\"geojson\"===e.type){if(\"loaded\"!==this.state)return void(this.redoWhenDone=!0);if(this.collisionTile){var t=e.map.transform.cameraToTileDistance(this);if(this.angle===e.map.transform.angle&&this.pitch===e.map.transform.pitch&&this.showCollisionBoxes===e.map.showCollisionBoxes){if(this.cameraToTileDistance===t&&this.cameraToCenterDistance===e.map.transform.cameraToCenterDistance)return;if(this.pitch<25)return this.cameraToTileDistance=t,void(this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance)}this.angle=e.map.transform.angle,this.pitch=e.map.transform.pitch,this.cameraToCenterDistance=e.map.transform.cameraToCenterDistance,this.cameraToTileDistance=t,this.showCollisionBoxes=e.map.showCollisionBoxes,this.placementSource=e,this.state=\"reloading\",this.placementThrottler.invoke()}}},Tile.prototype._immediateRedoPlacement=function(){var e=this;this.placementSource.dispatcher.send(\"redoPlacement\",{type:this.placementSource.type,uid:this.uid,source:this.placementSource.id,angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,showCollisionBoxes:this.showCollisionBoxes},function(t,i){\"reloading\"===e.state&&(e.state=\"loaded\",e.reloadSymbolData(i,e.placementSource.map.style),e.placementSource.fire(\"data\",{tile:e,coord:e.coord,dataType:\"source\"}),e.placementSource.map&&(e.placementSource.map.painter.tileExtentVAO.vao=null),e.redoWhenDone&&(e.state=\"reloading\",e.redoWhenDone=!1,e._immediateRedoPlacement()))},this.workerID)},Tile.prototype.getBucket=function(e){return this.buckets[e.id]},Tile.prototype.upload=function(e){var t=this;for(var i in t.buckets){var a=t.buckets[i];a.uploaded||(a.upload(e),a.uploaded=!0)}this.iconAtlasImage&&(this.iconAtlasTexture=new Texture(e,this.iconAtlasImage,e.RGBA),this.iconAtlasImage=null),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Texture(e,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null)},Tile.prototype.queryRenderedFeatures=function(e,t,i,a,s){var o=this;if(!this.featureIndex)return{};var r=0;for(var l in e){var n=o.getBucket(e[l]);n&&(r=Math.max(r,e[l].queryRadius(n)))}return this.featureIndex.query({queryGeometry:t,bearing:s,params:a,scale:i,additionalRadius:r,tileSize:this.tileSize},e)},Tile.prototype.querySourceFeatures=function(e,t){var i=this;if(this.rawTileData){this.vtLayers||(this.vtLayers=new vt.VectorTile(new Protobuf(this.rawTileData)).layers);var a=t?t.sourceLayer:\"\",s=this.vtLayers._geojsonTileLayer||this.vtLayers[a];if(s)for(var o=featureFilter(t&&t.filter),r={z:this.coord.z,x:this.coord.x,y:this.coord.y},l=0;l<s.length;l++){var n=s.feature(l);if(o(n)){var h=new GeoJSONFeature(n,i.coord.z,i.coord.x,i.coord.y);h.tile=r,e.push(h)}}}},Tile.prototype.hasData=function(){return\"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},Tile.prototype.setExpiryData=function(e){var t=this.expirationTime;if(e.cacheControl){var i=util.parseCacheControl(e.cacheControl);i[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*i[\"max-age\"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){var a=Date.now(),s=!1;if(this.expirationTime>a)s=!1;else if(t)if(this.expirationTime<t)s=!0;else{var o=this.expirationTime-t;o?this.expirationTime=a+Math.max(o,CLOCK_SKEW_RETRY_TIMEOUT):s=!0}else s=!0;s?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0}},Tile.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},Tile.prototype.stopPlacementThrottler=function(){this.placementThrottler.stop(),\"reloading\"===this.state&&(this.state=\"loaded\")},module.exports=Tile;\n},{\"../data/bucket\":42,\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/texture\":83,\"../style-spec/feature_filter\":110,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/throttler\":221,\"../util/util\":223,\"../util/vectortile_to_geojson\":224,\"@mapbox/vector-tile\":6,\"pbf\":29}],100:[function(_dereq_,module,exports){\n\"use strict\";var LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),clamp=_dereq_(\"../util/util\").clamp,TileBounds=function(t,n,o){this.bounds=LngLatBounds.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=o||24};TileBounds.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},TileBounds.prototype.contains=function(t,n){var o=n?Math.min(t.z,n):t.z,a={minX:Math.floor(this.lngX(this.bounds.getWest(),o)),minY:Math.floor(this.latY(this.bounds.getNorth(),o)),maxX:Math.ceil(this.lngX(this.bounds.getEast(),o)),maxY:Math.ceil(this.latY(this.bounds.getSouth(),o))};return t.x>=a.minX&&t.x<a.maxX&&t.y>=a.minY&&t.y<a.maxY},TileBounds.prototype.lngX=function(t,n){return(t+180)*(Math.pow(2,n)/360)},TileBounds.prototype.latY=function(t,n){var o=clamp(Math.sin(Math.PI/180*t),-.9999,.9999),a=Math.pow(2,n)/(2*Math.PI);return Math.pow(2,n-1)+.5*Math.log((1+o)/(1-o))*-a},module.exports=TileBounds;\n},{\"../geo/lng_lat_bounds\":59,\"../util/util\":223}],101:[function(_dereq_,module,exports){\n\"use strict\";function edge(t,i){if(t.row>i.row){var o=t;t=i,i=o}return{x0:t.column,y0:t.row,x1:i.column,y1:i.row,dx:i.column-t.column,dy:i.row-t.row}}function scanSpans(t,i,o,r,e){var h=Math.max(o,Math.floor(i.y0)),n=Math.min(r,Math.ceil(i.y1));if(t.x0===i.x0&&t.y0===i.y0?t.x0+i.dy/t.dy*t.dx<i.x1:t.x1-i.dy/t.dy*t.dx<i.x0){var s=t;t=i,i=s}for(var a=t.dx/t.dy,d=i.dx/i.dy,l=t.dx>0,y=i.dx<0,x=h;x<n;x++){var u=a*Math.max(0,Math.min(t.dy,x+l-t.y0))+t.x0,c=d*Math.max(0,Math.min(i.dy,x+y-i.y0))+i.x0;e(Math.floor(c),Math.ceil(u),x)}}function scanTriangle(t,i,o,r,e,h){var n,s=edge(t,i),a=edge(i,o),d=edge(o,t);s.dy>a.dy&&(n=s,s=a,a=n),s.dy>d.dy&&(n=s,s=d,d=n),a.dy>d.dy&&(n=a,a=d,d=n),s.dy&&scanSpans(d,s,r,e,h),a.dy&&scanSpans(d,a,r,e,h)}function getQuadkey(t,i,o){for(var r,e=\"\",h=t;h>0;h--)r=1<<h-1,e+=(i&r?1:0)+(o&r?2:0);return e}var WhooTS=_dereq_(\"@mapbox/whoots-js\"),Coordinate=_dereq_(\"../geo/coordinate\"),TileCoord=function(t,i,o,r){(void 0===r||isNaN(r))&&(r=0),this.z=+t,this.x=+i,this.y=+o,this.w=+r,(r*=2)<0&&(r=-1*r-1);var e=1<<this.z;this.id=32*(e*e*r+e*this.y+this.x)+this.z,this.posMatrix=null};TileCoord.prototype.toString=function(){return this.z+\"/\"+this.x+\"/\"+this.y},TileCoord.prototype.toCoordinate=function(t){var i=Math.min(this.z,void 0===t?this.z:t),o=Math.pow(2,i),r=this.y,e=this.x+o*this.w;return new Coordinate(e,r,i)},TileCoord.prototype.url=function(t,i,o){var r=WhooTS.getTileBBox(this.x,this.y,this.z),e=getQuadkey(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(Math.min(this.z,i||this.z))).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===o?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",e).replace(\"{bbox-epsg-3857}\",r)},TileCoord.prototype.parent=function(t){return 0===this.z?null:this.z>t?new TileCoord(this.z-1,this.x,this.y,this.w):new TileCoord(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)},TileCoord.prototype.wrapped=function(){return new TileCoord(this.z,this.x,this.y,0)},TileCoord.prototype.children=function(t){if(this.z>=t)return[new TileCoord(this.z+1,this.x,this.y,this.w)];var i=this.z+1,o=2*this.x,r=2*this.y;return[new TileCoord(i,o,r,this.w),new TileCoord(i,o+1,r,this.w),new TileCoord(i,o,r+1,this.w),new TileCoord(i,o+1,r+1,this.w)]},TileCoord.prototype.scaledTo=function(t,i){return this.z>i?new TileCoord(t,this.x,this.y,this.w):t<=this.z?new TileCoord(t,this.x>>this.z-t,this.y>>this.z-t,this.w):new TileCoord(t,this.x<<t-this.z,this.y<<t-this.z,this.w)},TileCoord.cover=function(t,i,o,r){function e(t,i,e){var s,a,d,l;if(e>=0&&e<=h)for(s=t;s<i;s++)a=Math.floor(s/h),d=(s%h+h)%h,0!==a&&!0!==r||(l=new TileCoord(o,d,e,a),n[l.id]=l)}void 0===r&&(r=!0);var h=1<<t,n={};return scanTriangle(i[0],i[1],i[2],0,h,e),scanTriangle(i[2],i[3],i[0],0,h,e),Object.keys(n).map(function(t){return n[t]})},TileCoord.fromID=function(t){var i=t%32,o=1<<i,r=(t-i)/32,e=r%o,h=(r-e)/o%o,n=Math.floor(r/(o*o));return n%2!=0&&(n=-1*n-1),n/=2,new TileCoord(i,e,h,n)},module.exports=TileCoord;\n},{\"../geo/coordinate\":57,\"@mapbox/whoots-js\":10}],102:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),util=_dereq_(\"../util/util\"),loadTileJSON=_dereq_(\"./load_tilejson\"),normalizeURL=_dereq_(\"../util/mapbox\").normalizeTileURL,TileBounds=_dereq_(\"./tile_bounds\"),ResourceType=_dereq_(\"../util/ajax\").ResourceType,browser=_dereq_(\"../util/browser\"),VectorTileSource=function(e){function t(t,i,o,r){if(e.call(this),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,util.extend(this,util.pick(i,[\"url\",\"scheme\",\"tileSize\"])),this._options=util.extend({type:\"vector\"},i),512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this;this.fire(\"dataloading\",{dataType:\"source\"}),loadTileJSON(this._options,this.map._transformRequest,function(t,i){t?e.fire(\"error\",t):i&&(util.extend(e,i),i.bounds&&(e.tileBounds=new TileBounds(i.bounds,e.minzoom,e.maxzoom)),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"}),e.fire(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))})},t.prototype.hasTile=function(e){return!this.tileBounds||this.tileBounds.contains(e,this.maxzoom)},t.prototype.onAdd=function(e){this.map=e,this.load()},t.prototype.serialize=function(){return util.extend({},this._options)},t.prototype.loadTile=function(e,t){function i(i,o){if(!e.aborted){if(i)return t(i);this.map._refreshExpiredTiles&&e.setExpiryData(o),e.loadVectorData(o,this.map.painter),e.redoWhenDone&&(e.redoWhenDone=!1,e.redoPlacement(this)),t(null),e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)}}var o=e.coord.z>this.maxzoom?Math.pow(2,e.coord.z-this.maxzoom):1,r=normalizeURL(e.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),s={request:this.map._transformRequest(r,ResourceType.Tile),uid:e.uid,coord:e.coord,zoom:e.coord.z,tileSize:this.tileSize*o,type:this.type,source:this.id,pixelRatio:browser.devicePixelRatio,overscaling:o,angle:this.map.transform.angle,pitch:this.map.transform.pitch,cameraToCenterDistance:this.map.transform.cameraToCenterDistance,cameraToTileDistance:this.map.transform.cameraToTileDistance(e),showCollisionBoxes:this.map.showCollisionBoxes};e.workerID&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=t:this.dispatcher.send(\"reloadTile\",s,i.bind(this),e.workerID):e.workerID=this.dispatcher.send(\"loadTile\",s,i.bind(this))},t.prototype.abortTile=function(e){this.dispatcher.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t.prototype.unloadTile=function(e){e.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id},void 0,e.workerID)},t}(Evented);module.exports=VectorTileSource;\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/evented\":210,\"../util/mapbox\":217,\"../util/util\":223,\"./load_tilejson\":92,\"./tile_bounds\":100}],103:[function(_dereq_,module,exports){\n\"use strict\";function loadVectorTile(e,r){var o=ajax.getArrayBuffer(e.request,function(e,o){e?r(e):o&&r(null,{vectorTile:new vt.VectorTile(new Protobuf(o.data)),rawData:o.data,cacheControl:o.cacheControl,expires:o.expires})});return function(){o.abort()}}var ajax=_dereq_(\"../util/ajax\"),vt=_dereq_(\"@mapbox/vector-tile\"),Protobuf=_dereq_(\"pbf\"),WorkerTile=_dereq_(\"./worker_tile\"),util=_dereq_(\"../util/util\"),VectorTileWorkerSource=function(e,r,o){this.actor=e,this.layerIndex=r,this.loadVectorData=o||loadVectorTile,this.loading={},this.loaded={}};VectorTileWorkerSource.prototype.loadTile=function(e,r){var o=this,t=e.source,a=e.uid;this.loading[t]||(this.loading[t]={});var i=this.loading[t][a]=new WorkerTile(e);i.abort=this.loadVectorData(e,function(e,l){if(delete o.loading[t][a],e||!l)return r(e);var c=l.rawData,n={};l.expires&&(n.expires=l.expires),l.cacheControl&&(n.cacheControl=l.cacheControl),i.vectorTile=l.vectorTile,i.parse(l.vectorTile,o.layerIndex,o.actor,function(e,o,t){if(e||!o)return r(e);r(null,util.extend({rawTileData:c},o,n),t)}),o.loaded[t]=o.loaded[t]||{},o.loaded[t][a]=i})},VectorTileWorkerSource.prototype.reloadTile=function(e,r){function o(e,o){if(this.reloadCallback){var t=this.reloadCallback;delete this.reloadCallback,this.parse(this.vectorTile,i.layerIndex,i.actor,t)}r(e,o)}var t=this.loaded[e.source],a=e.uid,i=this;if(t&&t[a]){var l=t[a];\"parsing\"===l.status?l.reloadCallback=r:\"done\"===l.status&&l.parse(l.vectorTile,this.layerIndex,this.actor,o.bind(l))}},VectorTileWorkerSource.prototype.abortTile=function(e){var r=this.loading[e.source],o=e.uid;r&&r[o]&&r[o].abort&&(r[o].abort(),delete r[o])},VectorTileWorkerSource.prototype.removeTile=function(e){var r=this.loaded[e.source],o=e.uid;r&&r[o]&&delete r[o]},VectorTileWorkerSource.prototype.redoPlacement=function(e,r){var o=this.loaded[e.source],t=this.loading[e.source],a=e.uid;if(o&&o[a]){var i=o[a],l=i.redoPlacement(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,e.showCollisionBoxes);l.result&&r(null,l.result,l.transferables)}else t&&t[a]&&(t[a].angle=e.angle)},module.exports=VectorTileWorkerSource;\n},{\"../util/ajax\":201,\"../util/util\":223,\"./worker_tile\":106,\"@mapbox/vector-tile\":6,\"pbf\":29}],104:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),ImageSource=_dereq_(\"./image_source\"),VideoSource=function(e){function t(t,o,i,r){e.call(this,t,o,i,r),this.roundZoom=!0,this.type=\"video\",this.options=o}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.load=function(){var e=this,t=this.options;this.urls=t.urls,ajax.getVideo(t.urls,function(t,o){if(t)e.fire(\"error\",{error:t});else if(o){e.video=o,e.video.loop=!0;var i;e.video.addEventListener(\"playing\",function(){i=e.map.style.animationLoop.set(1/0),e.map._rerender()}),e.video.addEventListener(\"pause\",function(){e.map.style.animationLoop.cancel(i)}),e.map&&e.video.play(),e._finishLoading()}})},t.prototype.getVideo=function(){return this.video},t.prototype.onAdd=function(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},t.prototype.prepare=function(){0===Object.keys(this.tiles).length||this.video.readyState<2||this._prepareImage(this.map.painter.gl,this.video)},t.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},t}(ImageSource);module.exports=VideoSource;\n},{\"../util/ajax\":201,\"./image_source\":91}],105:[function(_dereq_,module,exports){\n\"use strict\";var Actor=_dereq_(\"../util/actor\"),StyleLayerIndex=_dereq_(\"../style/style_layer_index\"),VectorTileWorkerSource=_dereq_(\"./vector_tile_worker_source\"),GeoJSONWorkerSource=_dereq_(\"./geojson_worker_source\"),globalRTLTextPlugin=_dereq_(\"./rtl_text_plugin\"),Worker=function(e){var r=this;this.self=e,this.actor=new Actor(e,this),this.layerIndexes={},this.workerSourceTypes={vector:VectorTileWorkerSource,geojson:GeoJSONWorkerSource},this.workerSources={},this.self.registerWorkerSource=function(e,o){if(r.workerSourceTypes[e])throw new Error('Worker source with name \"'+e+'\" already registered.');r.workerSourceTypes[e]=o},this.self.registerRTLTextPlugin=function(e){if(globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText)throw new Error(\"RTL text plugin already registered.\");globalRTLTextPlugin.applyArabicShaping=e.applyArabicShaping,globalRTLTextPlugin.processBidirectionalText=e.processBidirectionalText}};Worker.prototype.setLayers=function(e,r){this.getLayerIndex(e).replace(r)},Worker.prototype.updateLayers=function(e,r){this.getLayerIndex(e).update(r.layers,r.removedIds,r.symbolOrder)},Worker.prototype.loadTile=function(e,r,o){this.getWorkerSource(e,r.type).loadTile(r,o)},Worker.prototype.reloadTile=function(e,r,o){this.getWorkerSource(e,r.type).reloadTile(r,o)},Worker.prototype.abortTile=function(e,r){this.getWorkerSource(e,r.type).abortTile(r)},Worker.prototype.removeTile=function(e,r){this.getWorkerSource(e,r.type).removeTile(r)},Worker.prototype.removeSource=function(e,r){var o=this.getWorkerSource(e,r.type);void 0!==o.removeSource&&o.removeSource(r)},Worker.prototype.redoPlacement=function(e,r,o){this.getWorkerSource(e,r.type).redoPlacement(r,o)},Worker.prototype.loadWorkerSource=function(e,r,o){try{this.self.importScripts(r.url),o()}catch(e){o(e)}},Worker.prototype.loadRTLTextPlugin=function(e,r,o){try{globalRTLTextPlugin.applyArabicShaping||globalRTLTextPlugin.processBidirectionalText||(this.self.importScripts(r),globalRTLTextPlugin.applyArabicShaping&&globalRTLTextPlugin.processBidirectionalText||o(new Error(\"RTL Text Plugin failed to import scripts from \"+r)))}catch(e){o(e)}},Worker.prototype.getLayerIndex=function(e){var r=this.layerIndexes[e];return r||(r=this.layerIndexes[e]=new StyleLayerIndex),r},Worker.prototype.getWorkerSource=function(e,r){var o=this;if(this.workerSources[e]||(this.workerSources[e]={}),!this.workerSources[e][r]){var t={send:function(r,t,i,n){o.actor.send(r,t,i,n,e)}};this.workerSources[e][r]=new this.workerSourceTypes[r](t,this.getLayerIndex(e))}return this.workerSources[e][r]},module.exports=function(e){return new Worker(e)};\n},{\"../style/style_layer_index\":164,\"../util/actor\":200,\"./geojson_worker_source\":89,\"./rtl_text_plugin\":96,\"./vector_tile_worker_source\":103}],106:[function(_dereq_,module,exports){\n\"use strict\";function recalculateLayers(e,i){for(var r=0,t=e.layers;r<t.length;r+=1){t[r].recalculate(i)}}function serializeBuckets(e,i){return e.filter(function(e){return!e.isEmpty()}).map(function(e){return e.serialize(i)})}var FeatureIndex=_dereq_(\"../data/feature_index\"),CollisionTile=_dereq_(\"../symbol/collision_tile\"),CollisionBoxArray=_dereq_(\"../symbol/collision_box\"),DictionaryCoder=_dereq_(\"../util/dictionary_coder\"),SymbolBucket=_dereq_(\"../data/bucket/symbol_bucket\"),util=_dereq_(\"../util/util\"),ref=_dereq_(\"../render/image_atlas\"),makeImageAtlas=ref.makeImageAtlas,ref$1=_dereq_(\"../render/glyph_atlas\"),makeGlyphAtlas=ref$1.makeGlyphAtlas,WorkerTile=function(e){this.coord=e.coord,this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=e.overscaling,this.angle=e.angle,this.pitch=e.pitch,this.cameraToCenterDistance=e.cameraToCenterDistance,this.cameraToTileDistance=e.cameraToTileDistance,this.showCollisionBoxes=e.showCollisionBoxes};WorkerTile.prototype.parse=function(e,i,r,t){function a(){var e=this;if(D)return t(D);if(A&&C){for(var i=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),r=makeGlyphAtlas(A),a=makeImageAtlas(C),o=0,s=e.symbolBuckets;o<s.length;o+=1){var c=s[o];recalculateLayers(c,e.zoom),c.prepare(A,r.positions,C,a.positions),c.place(i,e.showCollisionBoxes)}this.status=\"done\";var u=[r.image.data.buffer,a.image.data.buffer];t(null,{buckets:serializeBuckets(util.values(n),u),featureIndex:l.serialize(u),collisionTile:i.serialize(u),collisionBoxArray:this.collisionBoxArray.serialize(),glyphAtlasImage:r.image,iconAtlasImage:a.image},u)}}var o=this;this.status=\"parsing\",this.data=e,this.collisionBoxArray=new CollisionBoxArray;var s=new DictionaryCoder(Object.keys(e.layers).sort()),l=new FeatureIndex(this.coord,this.overscaling);l.bucketLayerIDs=[];var n={},c={featureIndex:l,iconDependencies:{},glyphDependencies:{}},u=i.familiesBySource[this.source];for(var h in u){var m=e.layers[h];if(m){1===m.version&&util.warnOnce('Vector tile source \"'+o.source+'\" layer \"'+h+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var y=s.encode(h),p=[],d=0;d<m.length;d++){var f=m.feature(d);p.push({feature:f,index:d,sourceLayerIndex:y})}for(var g=0,v=u[h];g<v.length;g+=1){var k=v[g],b=k[0];if(!(b.minzoom&&o.zoom<Math.floor(b.minzoom))&&!(b.maxzoom&&o.zoom>=b.maxzoom||b.layout&&\"none\"===b.layout.visibility)){for(var x=0,T=k;x<T.length;x+=1){T[x].recalculate(o.zoom)}(n[b.id]=b.createBucket({index:l.bucketLayerIDs.length,layers:k,zoom:o.zoom,pixelRatio:o.pixelRatio,overscaling:o.overscaling,collisionBoxArray:o.collisionBoxArray})).populate(p,c),l.bucketLayerIDs.push(k.map(function(e){return e.id}))}}}}this.symbolBuckets=[];for(var z=i.symbolOrder.length-1;z>=0;z--){var B=n[i.symbolOrder[z]];B&&o.symbolBuckets.push(B)}var D,A,C,I=util.mapObject(c.glyphDependencies,function(e){return Object.keys(e).map(Number)});Object.keys(I).length?r.send(\"getGlyphs\",{uid:this.uid,stacks:I},function(e,i){D||(D=e,A=i,a.call(o))}):A={};var w=Object.keys(c.iconDependencies);w.length?r.send(\"getImages\",{icons:w},function(e,i){D||(D=e,C=i,a.call(o))}):C={},a.call(this)},WorkerTile.prototype.redoPlacement=function(e,i,r,t,a){var o=this;if(this.angle=e,this.pitch=i,this.cameraToCenterDistance=r,this.cameraToTileDistance=t,\"done\"!==this.status)return{};for(var s=new CollisionTile(this.angle,this.pitch,this.cameraToCenterDistance,this.cameraToTileDistance,this.collisionBoxArray),l=0,n=o.symbolBuckets;l<n.length;l+=1){var c=n[l];recalculateLayers(c,o.zoom),c.place(s,a)}var u=[];return{result:{buckets:serializeBuckets(this.symbolBuckets,u),collisionTile:s.serialize(u)},transferables:u}},module.exports=WorkerTile;\n},{\"../data/bucket/symbol_bucket\":47,\"../data/feature_index\":49,\"../render/glyph_atlas\":74,\"../render/image_atlas\":76,\"../symbol/collision_box\":170,\"../symbol/collision_tile\":172,\"../util/dictionary_coder\":207,\"../util/util\":223}],107:[function(_dereq_,module,exports){\n\"use strict\";function deref(r,e){var f={};for(var t in r)\"ref\"!==t&&(f[t]=r[t]);return refProperties.forEach(function(r){r in e&&(f[r]=e[r])}),f}function derefLayers(r){r=r.slice();for(var e=Object.create(null),f=0;f<r.length;f++)e[r[f].id]=r[f];for(var t=0;t<r.length;t++)\"ref\"in r[t]&&(r[t]=deref(r[t],e[r[t].ref]));return r}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=derefLayers;\n},{\"./util/ref_properties\":129}],108:[function(_dereq_,module,exports){\n\"use strict\";function diffSources(e,r,o,a){e=e||{},r=r||{};var s;for(s in e)e.hasOwnProperty(s)&&(r.hasOwnProperty(s)||(o.push({command:operations.removeSource,args:[s]}),a[s]=!0));for(s in r)r.hasOwnProperty(s)&&(e.hasOwnProperty(s)?isEqual(e[s],r[s])||(o.push({command:operations.removeSource,args:[s]}),o.push({command:operations.addSource,args:[s,r[s]]}),a[s]=!0):o.push({command:operations.addSource,args:[s,r[s]]}))}function diffLayerPropertyChanges(e,r,o,a,s,t){e=e||{},r=r||{};var n;for(n in e)e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}));for(n in r)r.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(isEqual(e[n],r[n])||o.push({command:t,args:[a,n,r[n],s]}))}function pluckId(e){return e.id}function indexById(e,r){return e[r.id]=r,e}function diffLayers(e,r,o){e=e||[],r=r||[];var a,s,t,n,i,p,m,u=e.map(pluckId),l=r.map(pluckId),y=e.reduce(indexById,{}),c=r.reduce(indexById,{}),d=u.slice(),h=Object.create(null);for(a=0,s=0;a<u.length;a++)t=u[a],c.hasOwnProperty(t)?s++:(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.indexOf(t,s),1));for(a=0,s=0;a<l.length;a++)t=l[l.length-1-a],d[d.length-1-a]!==t&&(y.hasOwnProperty(t)?(o.push({command:operations.removeLayer,args:[t]}),d.splice(d.lastIndexOf(t,d.length-s),1)):s++,p=d[d.length-a],o.push({command:operations.addLayer,args:[c[t],p]}),d.splice(d.length-a,0,t),h[t]=!0);for(a=0;a<l.length;a++)if(t=l[a],n=y[t],i=c[t],!h[t]&&!isEqual(n,i))if(isEqual(n.source,i.source)&&isEqual(n[\"source-layer\"],i[\"source-layer\"])&&isEqual(n.type,i.type)){diffLayerPropertyChanges(n.layout,i.layout,o,t,null,operations.setLayoutProperty),diffLayerPropertyChanges(n.paint,i.paint,o,t,null,operations.setPaintProperty),isEqual(n.filter,i.filter)||o.push({command:operations.setFilter,args:[t,i.filter]}),isEqual(n.minzoom,i.minzoom)&&isEqual(n.maxzoom,i.maxzoom)||o.push({command:operations.setLayerZoomRange,args:[t,i.minzoom,i.maxzoom]});for(m in n)n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}));for(m in i)i.hasOwnProperty(m)&&!n.hasOwnProperty(m)&&\"layout\"!==m&&\"paint\"!==m&&\"filter\"!==m&&\"metadata\"!==m&&\"minzoom\"!==m&&\"maxzoom\"!==m&&(0===m.indexOf(\"paint.\")?diffLayerPropertyChanges(n[m],i[m],o,t,m.slice(6),operations.setPaintProperty):isEqual(n[m],i[m])||o.push({command:operations.setLayerProperty,args:[t,m,i[m]]}))}else o.push({command:operations.removeLayer,args:[t]}),p=d[d.lastIndexOf(t)+1],o.push({command:operations.addLayer,args:[i,p]})}function diffStyles(e,r){if(!e)return[{command:operations.setStyle,args:[r]}];var o=[];try{if(!isEqual(e.version,r.version))return[{command:operations.setStyle,args:[r]}];isEqual(e.center,r.center)||o.push({command:operations.setCenter,args:[r.center]}),isEqual(e.zoom,r.zoom)||o.push({command:operations.setZoom,args:[r.zoom]}),isEqual(e.bearing,r.bearing)||o.push({command:operations.setBearing,args:[r.bearing]}),isEqual(e.pitch,r.pitch)||o.push({command:operations.setPitch,args:[r.pitch]}),isEqual(e.sprite,r.sprite)||o.push({command:operations.setSprite,args:[r.sprite]}),isEqual(e.glyphs,r.glyphs)||o.push({command:operations.setGlyphs,args:[r.glyphs]}),isEqual(e.transition,r.transition)||o.push({command:operations.setTransition,args:[r.transition]}),isEqual(e.light,r.light)||o.push({command:operations.setLight,args:[r.light]});var a={},s=[];diffSources(e.sources,r.sources,s,a);var t=[];e.layers&&e.layers.forEach(function(e){a[e.source]?o.push({command:operations.removeLayer,args:[e.id]}):t.push(e)}),o=o.concat(s),diffLayers(t,r.layers,o)}catch(e){console.warn(\"Unable to compute style diff:\",e),o=[{command:operations.setStyle,args:[r]}]}return o}var isEqual=_dereq_(\"lodash.isequal\"),operations={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};module.exports=diffStyles,module.exports.operations=operations;\n},{\"lodash.isequal\":120}],109:[function(_dereq_,module,exports){\n\"use strict\";function ValidationError(r,i){for(var t=[],o=arguments.length-2;o-- >0;)t[o]=arguments[o+2];this.message=(r?r+\": \":\"\")+format.apply(format,t),null!==i&&void 0!==i&&i.__line__&&(this.line=i.__line__)}var format=_dereq_(\"util\").format;module.exports=ValidationError;\n},{\"util\":36}],110:[function(_dereq_,module,exports){\n\"use strict\";function createFilter(e){return new Function(\"f\",\"var p = (f && f.properties || {}); return \"+compile(e))}function compile(e){if(!e)return\"true\";var i=e[0];return e.length<=1?\"any\"===i?\"false\":\"true\":\"(\"+(\"==\"===i?compileComparisonOp(e[1],e[2],\"===\",!1):\"!=\"===i?compileComparisonOp(e[1],e[2],\"!==\",!1):\"<\"===i||\">\"===i||\"<=\"===i||\">=\"===i?compileComparisonOp(e[1],e[2],i,!0):\"any\"===i?compileLogicalOp(e.slice(1),\"||\"):\"all\"===i?compileLogicalOp(e.slice(1),\"&&\"):\"none\"===i?compileNegation(compileLogicalOp(e.slice(1),\"||\")):\"in\"===i?compileInOp(e[1],e.slice(2)):\"!in\"===i?compileNegation(compileInOp(e[1],e.slice(2))):\"has\"===i?compileHasOp(e[1]):\"!has\"===i?compileNegation(compileHasOp(e[1])):\"true\")+\")\"}function compilePropertyReference(e){return\"$type\"===e?\"f.type\":\"$id\"===e?\"f.id\":\"p[\"+JSON.stringify(e)+\"]\"}function compileComparisonOp(e,i,n,o){var r=compilePropertyReference(e),p=\"$type\"===e?types.indexOf(i):JSON.stringify(i);return(o?\"typeof \"+r+\"=== typeof \"+p+\"&&\":\"\")+r+n+p}function compileLogicalOp(e,i){return e.map(compile).join(i)}function compileInOp(e,i){\"$type\"===e&&(i=i.map(function(e){return types.indexOf(e)}));var n=JSON.stringify(i.sort(compare)),o=compilePropertyReference(e);return i.length<=200?n+\".indexOf(\"+o+\") !== -1\":\"function(v, a, i, j) {while (i <= j) { var m = (i + j) >> 1; if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;}return false; }(\"+o+\", \"+n+\",0,\"+(i.length-1)+\")\"}function compileHasOp(e){return\"$id\"===e?'\"id\" in f':JSON.stringify(e)+\" in p\"}function compileNegation(e){return\"!(\"+e+\")\"}function compare(e,i){return e<i?-1:e>i?1:0}module.exports=createFilter;var types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];\n},{}],111:[function(_dereq_,module,exports){\n\"use strict\";function xyz2lab(r){return r>t3?Math.pow(r,1/3):r/t2+t0}function lab2xyz(r){return r>t1?r*r*r:t2*(r-t0)}function xyz2rgb(r){return 255*(r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055)}function rgb2xyz(r){return r/=255,r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function rgbToLab(r){var t=rgb2xyz(r[0]),a=rgb2xyz(r[1]),n=rgb2xyz(r[2]),b=xyz2lab((.4124564*t+.3575761*a+.1804375*n)/Xn),o=xyz2lab((.2126729*t+.7151522*a+.072175*n)/Yn);return[116*o-16,500*(b-o),200*(o-xyz2lab((.0193339*t+.119192*a+.9503041*n)/Zn)),r[3]]}function labToRgb(r){var t=(r[0]+16)/116,a=isNaN(r[1])?t:t+r[1]/500,n=isNaN(r[2])?t:t-r[2]/200;return t=Yn*lab2xyz(t),a=Xn*lab2xyz(a),n=Zn*lab2xyz(n),[xyz2rgb(3.2404542*a-1.5371385*t-.4985314*n),xyz2rgb(-.969266*a+1.8760108*t+.041556*n),xyz2rgb(.0556434*a-.2040259*t+1.0572252*n),r[3]]}function rgbToHcl(r){var t=rgbToLab(r),a=t[0],n=t[1],b=t[2],o=Math.atan2(b,n)*rad2deg;return[o<0?o+360:o,Math.sqrt(n*n+b*b),a,r[3]]}function hclToRgb(r){var t=r[0]*deg2rad,a=r[1];return labToRgb([r[2],Math.cos(t)*a,Math.sin(t)*a,r[3]])}var Xn=.95047,Yn=1,Zn=1.08883,t0=4/29,t1=6/29,t2=3*t1*t1,t3=t1*t1*t1,deg2rad=Math.PI/180,rad2deg=180/Math.PI;module.exports={lab:{forward:rgbToLab,reverse:labToRgb},hcl:{forward:rgbToHcl,reverse:hclToRgb}};\n},{}],112:[function(_dereq_,module,exports){\n\"use strict\";function identityFunction(t){return t}function createFunction(t,e){var o,n=\"color\"===e.type;if(isFunctionDefinition(t)){var r=t.stops&&\"object\"==typeof t.stops[0][0],a=r||void 0!==t.property,i=r||!a,s=t.type||(\"interpolated\"===e.function?\"exponential\":\"interval\");n&&(t=extend({},t),t.stops&&(t.stops=t.stops.map(function(t){return[t[0],parseColor(t[1])]})),t.default?t.default=parseColor(t.default):t.default=parseColor(e.default));var u,p,l;if(\"exponential\"===s)u=evaluateExponentialFunction;else if(\"interval\"===s)u=evaluateIntervalFunction;else if(\"categorical\"===s){u=evaluateCategoricalFunction,p=Object.create(null);for(var c=0,f=t.stops;c<f.length;c+=1){var v=f[c];p[v[0]]=v[1]}l=typeof t.stops[0][0]}else{if(\"identity\"!==s)throw new Error('Unknown function type \"'+s+'\"');u=evaluateIdentityFunction}var d;if(t.colorSpace&&\"rgb\"!==t.colorSpace){if(!colorSpaces[t.colorSpace])throw new Error(\"Unknown color space: \"+t.colorSpace);var y=colorSpaces[t.colorSpace];t=JSON.parse(JSON.stringify(t));for(var F=0;F<t.stops.length;F++)t.stops[F]=[t.stops[F][0],y.forward(t.stops[F][1])];d=y.reverse}else d=identityFunction;if(r){for(var h={},g=[],m=0;m<t.stops.length;m++){var C=t.stops[m],S=C[0].zoom;void 0===h[S]&&(h[S]={zoom:S,type:t.type,property:t.property,default:t.default,stops:[]},g.push(S)),h[S].stops.push([C[0].value,C[1]])}for(var T=[],x=0,b=g;x<b.length;x+=1){var q=b[x];T.push([h[q].zoom,createFunction(h[q],e)])}o=function(o,n){return d(evaluateExponentialFunction({stops:T,base:t.base},e,o)(o,n))},o.isFeatureConstant=!1,o.isZoomConstant=!1}else i?(o=function(o){return d(u(t,e,o,p,l))},o.isFeatureConstant=!0,o.isZoomConstant=!1):(o=function(o,n){var r=n[t.property];return void 0===r?coalesce(t.default,e.default):d(u(t,e,r,p,l))},o.isFeatureConstant=!1,o.isZoomConstant=!0)}else n&&t&&(t=parseColor(t)),o=function(){return t},o.isFeatureConstant=!0,o.isZoomConstant=!0;return o}function coalesce(t,e,o){return void 0!==t?t:void 0!==e?e:void 0!==o?o:void 0}function evaluateCategoricalFunction(t,e,o,n,r){return coalesce(typeof o===r?n[o]:void 0,t.default,e.default)}function evaluateIntervalFunction(t,e,o){if(\"number\"!==getType(o))return coalesce(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[n-1][0])return t.stops[n-1][1];var r=findStopLessThanOrEqualTo(t.stops,o);return t.stops[r][1]}function evaluateExponentialFunction(t,e,o){var n=void 0!==t.base?t.base:1;if(\"number\"!==getType(o))return coalesce(t.default,e.default);var r=t.stops.length;if(1===r)return t.stops[0][1];if(o<=t.stops[0][0])return t.stops[0][1];if(o>=t.stops[r-1][0])return t.stops[r-1][1];var a=findStopLessThanOrEqualTo(t.stops,o),i=interpolationFactor(o,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],p=interpolate[e.type]||identityFunction;return\"function\"==typeof s?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o=s.apply(void 0,t),n=u.apply(void 0,t);if(void 0!==o&&void 0!==n)return p(o,n,i)}:p(s,u,i)}function evaluateIdentityFunction(t,e,o){return\"color\"===e.type?o=parseColor(o):getType(o)===e.type||\"enum\"===e.type&&e.values[o]||(o=void 0),coalesce(o,t.default,e.default)}function findStopLessThanOrEqualTo(t,e){for(var o,n,r=t.length,a=0,i=r-1,s=0;a<=i;){if(s=Math.floor((a+i)/2),o=t[s][0],n=t[s+1][0],e===o||e>o&&e<n)return s;o<e?a=s+1:o>e&&(i=s-1)}return Math.max(s-1,0)}function isFunctionDefinition(t){return\"object\"==typeof t&&(t.stops||\"identity\"===t.type)}function interpolationFactor(t,e,o,n){var r=n-o,a=t-o;return 0===r?0:1===e?a/r:(Math.pow(e,a)-1)/(Math.pow(e,r)-1)}var colorSpaces=_dereq_(\"./color_spaces\"),parseColor=_dereq_(\"../util/parse_color\"),extend=_dereq_(\"../util/extend\"),getType=_dereq_(\"../util/get_type\"),interpolate=_dereq_(\"../util/interpolate\");module.exports=createFunction,module.exports.isFunctionDefinition=isFunctionDefinition,module.exports.interpolationFactor=interpolationFactor,module.exports.findStopLessThanOrEqualTo=findStopLessThanOrEqualTo;\n},{\"../util/extend\":125,\"../util/get_type\":126,\"../util/interpolate\":127,\"../util/parse_color\":128,\"./color_spaces\":111}],113:[function(_dereq_,module,exports){\n\"use strict\";function stringify(r){var t=typeof r;if(\"number\"===t||\"boolean\"===t||\"string\"===t||void 0===r||null===r)return JSON.stringify(r);if(Array.isArray(r)){for(var e=\"[\",i=0,n=r;i<n.length;i+=1){e+=stringify(n[i])+\",\"}return e+\"]\"}for(var o=Object.keys(r).sort(),f=\"{\",u=0;u<o.length;u++)f+=JSON.stringify(o[u])+\":\"+stringify(r[o[u]])+\",\";return f+\"}\"}function getKey(r){for(var t=\"\",e=0,i=refProperties;e<i.length;e+=1){t+=\"/\"+stringify(r[i[e]])}return t}function groupByLayout(r){for(var t={},e=0;e<r.length;e++){var i=getKey(r[e]),n=t[i];n||(n=t[i]=[]),n.push(r[e])}var o=[];for(var f in t)o.push(t[f]);return o}var refProperties=_dereq_(\"./util/ref_properties\");module.exports=groupByLayout;\n},{\"./util/ref_properties\":129}],114:[function(_dereq_,module,exports){\nfunction clamp_css_byte(e){return e=Math.round(e),e<0?0:e>255?255:e}function clamp_css_float(e){return e<0?0:e>1?1:e}function parse_css_int(e){return clamp_css_byte(\"%\"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function parse_css_float(e){return clamp_css_float(\"%\"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function css_hue_to_rgb(e,r,l){return l<0?l+=1:l>1&&(l-=1),6*l<1?e+(r-e)*l*6:2*l<1?r:3*l<2?e+(r-e)*(2/3-l)*6:e}function parseCSSColor(e){var r=e.replace(/ /g,\"\").toLowerCase();if(r in kCSSColorTable)return kCSSColorTable[r].slice();if(\"#\"===r[0]){if(4===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=4095?[(3840&l)>>4|(3840&l)>>8,240&l|(240&l)>>4,15&l|(15&l)<<4,1]:null}if(7===r.length){var l=parseInt(r.substr(1),16);return l>=0&&l<=16777215?[(16711680&l)>>16,(65280&l)>>8,255&l,1]:null}return null}var a=r.indexOf(\"(\"),t=r.indexOf(\")\");if(-1!==a&&t+1===r.length){var n=r.substr(0,a),s=r.substr(a+1,t-(a+1)).split(\",\"),o=1;switch(n){case\"rgba\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"rgb\":return 3!==s.length?null:[parse_css_int(s[0]),parse_css_int(s[1]),parse_css_int(s[2]),o];case\"hsla\":if(4!==s.length)return null;o=parse_css_float(s.pop());case\"hsl\":if(3!==s.length)return null;var i=(parseFloat(s[0])%360+360)%360/360,u=parse_css_float(s[1]),g=parse_css_float(s[2]),d=g<=.5?g*(u+1):g+u-g*u,c=2*g-d;return[clamp_css_byte(255*css_hue_to_rgb(c,d,i+1/3)),clamp_css_byte(255*css_hue_to_rgb(c,d,i)),clamp_css_byte(255*css_hue_to_rgb(c,d,i-1/3)),o];default:return null}}return null}var kCSSColorTable={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{exports.parseCSSColor=parseCSSColor}catch(e){}\n},{}],115:[function(_dereq_,module,exports){\nfunction isObjectLike(r){return!!r&&\"object\"==typeof r}function arraySome(r,e){for(var a=-1,t=r.length;++a<t;)if(e(r[a],a,r))return!0;return!1}function baseIsEqual(r,e,a,t,o,n){return r===e||(null==r||null==e||!isObject(r)&&!isObjectLike(e)?r!==r&&e!==e:baseIsEqualDeep(r,e,baseIsEqual,a,t,o,n))}function baseIsEqualDeep(r,e,a,t,o,n,u){var c=isArray(r),s=isArray(e),i=arrayTag,g=arrayTag;c||(i=objToString.call(r),i==argsTag?i=objectTag:i!=objectTag&&(c=isTypedArray(r))),s||(g=objToString.call(e),g==argsTag?g=objectTag:g!=objectTag&&(s=isTypedArray(e)));var b=i==objectTag,l=g==objectTag,f=i==g;if(f&&!c&&!b)return equalByTag(r,e,i);if(!o){var y=b&&hasOwnProperty.call(r,\"__wrapped__\"),T=l&&hasOwnProperty.call(e,\"__wrapped__\");if(y||T)return a(y?r.value():r,T?e.value():e,t,o,n,u)}if(!f)return!1;n||(n=[]),u||(u=[]);for(var j=n.length;j--;)if(n[j]==r)return u[j]==e;n.push(r),u.push(e);var p=(c?equalArrays:equalObjects)(r,e,a,t,o,n,u);return n.pop(),u.pop(),p}function equalArrays(r,e,a,t,o,n,u){var c=-1,s=r.length,i=e.length;if(s!=i&&!(o&&i>s))return!1;for(;++c<s;){var g=r[c],b=e[c],l=t?t(o?b:g,o?g:b,c):void 0;if(void 0!==l){if(l)continue;return!1}if(o){if(!arraySome(e,function(r){return g===r||a(g,r,t,o,n,u)}))return!1}else if(g!==b&&!a(g,b,t,o,n,u))return!1}return!0}function equalByTag(r,e,a){switch(a){case boolTag:case dateTag:return+r==+e;case errorTag:return r.name==e.name&&r.message==e.message;case numberTag:return r!=+r?e!=+e:r==+e;case regexpTag:case stringTag:return r==e+\"\"}return!1}function equalObjects(r,e,a,t,o,n,u){var c=keys(r),s=c.length;if(s!=keys(e).length&&!o)return!1;for(var i=s;i--;){var g=c[i];if(!(o?g in e:hasOwnProperty.call(e,g)))return!1}for(var b=o;++i<s;){g=c[i];var l=r[g],f=e[g],y=t?t(o?f:l,o?l:f,g):void 0;if(!(void 0===y?a(l,f,t,o,n,u):y))return!1;b||(b=\"constructor\"==g)}if(!b){var T=r.constructor,j=e.constructor;if(T!=j&&\"constructor\"in r&&\"constructor\"in e&&!(\"function\"==typeof T&&T instanceof T&&\"function\"==typeof j&&j instanceof j))return!1}return!0}function isObject(r){var e=typeof r;return!!r&&(\"object\"==e||\"function\"==e)}var isArray=_dereq_(\"lodash.isarray\"),isTypedArray=_dereq_(\"lodash.istypedarray\"),keys=_dereq_(\"lodash.keys\"),argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",stringTag=\"[object String]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString;module.exports=baseIsEqual;\n},{\"lodash.isarray\":119,\"lodash.istypedarray\":121,\"lodash.keys\":122}],116:[function(_dereq_,module,exports){\nfunction bindCallback(n,t,r){if(\"function\"!=typeof n)return identity;if(void 0===t)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,c){return n.call(t,r,e,u,c)};case 5:return function(r,e,u,c,i){return n.call(t,r,e,u,c,i)}}return function(){return n.apply(t,arguments)}}function identity(n){return n}module.exports=bindCallback;\n},{}],117:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,o){var e=null==t?void 0:t[o];return isNative(e)?e:void 0}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var o=typeof t;return!!t&&(\"object\"==o||\"function\"==o)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");module.exports=getNative;\n},{}],118:[function(_dereq_,module,exports){\nfunction isArguments(t){return isArrayLikeObject(t)&&hasOwnProperty.call(t,\"callee\")&&(!propertyIsEnumerable.call(t,\"callee\")||objectToString.call(t)==argsTag)}function isArrayLike(t){return null!=t&&isLength(t.length)&&!isFunction(t)}function isArrayLikeObject(t){return isObjectLike(t)&&isArrayLike(t)}function isFunction(t){var e=isObject(t)?objectToString.call(t):\"\";return e==funcTag||e==genTag}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isObject(t){var e=typeof t;return!!t&&(\"object\"==e||\"function\"==e)}function isObjectLike(t){return!!t&&\"object\"==typeof t}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",funcTag=\"[object Function]\",genTag=\"[object GeneratorFunction]\",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objectToString=objectProto.toString,propertyIsEnumerable=objectProto.propertyIsEnumerable;module.exports=isArguments;\n},{}],119:[function(_dereq_,module,exports){\nfunction isObjectLike(t){return!!t&&\"object\"==typeof t}function getNative(t,r){var e=null==t?void 0:t[r];return isNative(e)?e:void 0}function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=MAX_SAFE_INTEGER}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var r=typeof t;return!!t&&(\"object\"==r||\"function\"==r)}function isNative(t){return null!=t&&(isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t))}var arrayTag=\"[object Array]\",funcTag=\"[object Function]\",reIsHostCtor=/^\\[object .+?Constructor\\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),nativeIsArray=getNative(Array,\"isArray\"),MAX_SAFE_INTEGER=9007199254740991,isArray=nativeIsArray||function(t){return isObjectLike(t)&&isLength(t.length)&&objToString.call(t)==arrayTag};module.exports=isArray;\n},{}],120:[function(_dereq_,module,exports){\nfunction isEqual(a,l,i,e){i=\"function\"==typeof i?bindCallback(i,e,3):void 0;var s=i?i(a,l):void 0;return void 0===s?baseIsEqual(a,l,i):!!s}var baseIsEqual=_dereq_(\"lodash._baseisequal\"),bindCallback=_dereq_(\"lodash._bindcallback\");module.exports=isEqual;\n},{\"lodash._baseisequal\":115,\"lodash._bindcallback\":116}],121:[function(_dereq_,module,exports){\nfunction isLength(a){return\"number\"==typeof a&&a>-1&&a%1==0&&a<=MAX_SAFE_INTEGER}function isObjectLike(a){return!!a&&\"object\"==typeof a}function isTypedArray(a){return isObjectLike(a)&&isLength(a.length)&&!!typedArrayTags[objectToString.call(a)]}var MAX_SAFE_INTEGER=9007199254740991,argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",funcTag=\"[object Function]\",mapTag=\"[object Map]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",setTag=\"[object Set]\",stringTag=\"[object String]\",weakMapTag=\"[object WeakMap]\",arrayBufferTag=\"[object ArrayBuffer]\",dataViewTag=\"[object DataView]\",float32Tag=\"[object Float32Array]\",float64Tag=\"[object Float64Array]\",int8Tag=\"[object Int8Array]\",int16Tag=\"[object Int16Array]\",int32Tag=\"[object Int32Array]\",uint8Tag=\"[object Uint8Array]\",uint8ClampedTag=\"[object Uint8ClampedArray]\",uint16Tag=\"[object Uint16Array]\",uint32Tag=\"[object Uint32Array]\",typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var objectProto=Object.prototype,objectToString=objectProto.toString;module.exports=isTypedArray;\n},{}],122:[function(_dereq_,module,exports){\nfunction baseProperty(e){return function(t){return null==t?void 0:t[e]}}function isArrayLike(e){return null!=e&&isLength(getLength(e))}function isIndex(e,t){return e=\"number\"==typeof e||reIsUint.test(e)?+e:-1,t=null==t?MAX_SAFE_INTEGER:t,e>-1&&e%1==0&&e<t}function isLength(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function shimKeys(e){for(var t=keysIn(e),r=t.length,n=r&&e.length,s=!!n&&isLength(n)&&(isArray(e)||isArguments(e)),o=-1,i=[];++o<r;){var u=t[o];(s&&isIndex(u,n)||hasOwnProperty.call(e,u))&&i.push(u)}return i}function isObject(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function keysIn(e){if(null==e)return[];isObject(e)||(e=Object(e));var t=e.length;t=t&&isLength(t)&&(isArray(e)||isArguments(e))&&t||0;for(var r=e.constructor,n=-1,s=\"function\"==typeof r&&r.prototype===e,o=Array(t),i=t>0;++n<t;)o[n]=n+\"\";for(var u in e)i&&isIndex(u,t)||\"constructor\"==u&&(s||!hasOwnProperty.call(e,u))||o.push(u);return o}var getNative=_dereq_(\"lodash._getnative\"),isArguments=_dereq_(\"lodash.isarguments\"),isArray=_dereq_(\"lodash.isarray\"),reIsUint=/^\\d+$/,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeKeys=getNative(Object,\"keys\"),MAX_SAFE_INTEGER=9007199254740991,getLength=baseProperty(\"length\"),keys=nativeKeys?function(e){var t=null==e?void 0:e.constructor;return\"function\"==typeof t&&t.prototype===e||\"function\"!=typeof e&&isArrayLike(e)?shimKeys(e):isObject(e)?nativeKeys(e):[]}:shimKeys;module.exports=keys;\n},{\"lodash._getnative\":117,\"lodash.isarguments\":118,\"lodash.isarray\":119}],123:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"./v8.json\");\n},{\"./v8.json\":124}],124:[function(_dereq_,module,exports){\nmodule.exports={\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_tile\",\"source_geojson\",\"source_video\",\"source_image\",\"source_canvas\"],\"source_tile\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{},\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.0511,180,85.0511]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_canvas\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"canvas\":{}}},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}},\"animate\":{\"type\":\"boolean\",\"default\":\"true\"},\"canvas\":{\"type\":\"string\",\"required\":true},\"contextType\":{\"required\":true,\"type\":\"enum\",\"values\":{\"2d\":{},\"webgl\":{},\"experimental-webgl\":{},\"webgl2\":{}}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"fill-extrusion\":{},\"raster\":{},\"background\":{}}},\"metadata\":{\"type\":\"*\"},\"ref\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"},\"paint.*\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_background\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_circle\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\"},\"line-join\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"miter\"}]},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[{\"line-join\":\"round\"}]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"point\":{},\"line\":{}},\"default\":\"point\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}]},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false},\"icon-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\"]},\"icon-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",\"text-field\"]},\"icon-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"]},\"icon-text-fit\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"]},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}]},\"icon-image\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"tokens\":true},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"units\":\"degrees\",\"requires\":[\"icon-image\"]},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"icon-image\"]},\"icon-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"]},\"icon-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"]},\"text-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-rotation-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"]},\"text-field\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"default\":\"\",\"tokens\":true},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"]},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-justify\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"]},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\",{\"symbol-placement\":\"line\"}]},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"requires\":[\"text-field\"]},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"function\":\"interpolated\",\"zoom-function\":true,\"requires\":[\"text-field\"]},\"text-keep-upright\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":\"line\"}]},\"text-transform\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"property-function\":true,\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"]},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\"]},\"text-allow-overlap\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-ignore-placement\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\"]},\"text-optional\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":false,\"requires\":[\"text-field\",\"icon-image\"]},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":22,\"value\":[\"number\",\"color\"],\"length\":2},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"transition\":false,\"zoom-function\":true,\"property-function\":false,\"function\":\"piecewise-constant\"},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"transition\":true,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false},\"color\":{\"type\":\"color\",\"default\":\"#ffffff\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true},\"intensity\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"transition\":true}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_background\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"default\":true},\"fill-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}]},\"fill-outline-color\":{\"type\":\"color\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}]},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"]},\"fill-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":false,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}]},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"]},\"fill-extrusion-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"fill-extrusion-height\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true},\"fill-extrusion-base\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":0,\"minimum\":0,\"maximum\":65535,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"]}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}]},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"]},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}]},\"line-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"]},\"circle-pitch-scale\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"icon-image\"]},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"]},\"icon-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"]},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"requires\":[\"text-field\"]},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"property-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"]},\"text-translate-anchor\":{\"type\":\"enum\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"]}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"degrees\"},\"raster-brightness-min\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-brightness-max\":{\"type\":\"number\",\"function\":\"interpolated\",\"zoom-function\":true,\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"units\":\"milliseconds\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}]},\"background-pattern\":{\"type\":\"string\",\"function\":\"piecewise-constant\",\"zoom-function\":true,\"transition\":true},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"function\":\"interpolated\",\"zoom-function\":true,\"transition\":true}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}}}\n},{}],125:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];for(var n=0,o=t;n<o.length;n+=1){var a=o[n];for(var f in a)r[f]=a[f]}return r};\n},{}],126:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number?\"number\":n instanceof String?\"string\":n instanceof Boolean?\"boolean\":Array.isArray(n)?\"array\":null===n?\"null\":typeof n};\n},{}],127:[function(_dereq_,module,exports){\n\"use strict\";function interpolate(t,e,n){return t*(1-n)+e*n}module.exports=interpolate,interpolate.number=interpolate,interpolate.vec2=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n)]},interpolate.color=function(t,e,n){return[interpolate(t[0],e[0],n),interpolate(t[1],e[1],n),interpolate(t[2],e[2],n),interpolate(t[3],e[3],n)]},interpolate.array=function(t,e,n){return t.map(function(t,r){return interpolate(t,e[r],n)})};\n},{}],128:[function(_dereq_,module,exports){\n\"use strict\";var parseColorString=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){if(\"string\"==typeof r){var e=parseColorString(r);if(!e)return;return[e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]]}return Array.isArray(r)?r:void 0};\n},{\"csscolorparser\":114}],129:[function(_dereq_,module,exports){\n\"use strict\";module.exports=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];\n},{}],130:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(n){return n instanceof Number||n instanceof String||n instanceof Boolean?n.valueOf():n};\n},{}],131:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=_dereq_(\"./validate_function\"),t=_dereq_(\"./validate_object\"),i={\"*\":function(){return[]},array:_dereq_(\"./validate_array\"),boolean:_dereq_(\"./validate_boolean\"),number:_dereq_(\"./validate_number\"),color:_dereq_(\"./validate_color\"),constants:_dereq_(\"./validate_constants\"),enum:_dereq_(\"./validate_enum\"),filter:_dereq_(\"./validate_filter\"),function:_dereq_(\"./validate_function\"),layer:_dereq_(\"./validate_layer\"),object:_dereq_(\"./validate_object\"),source:_dereq_(\"./validate_source\"),light:_dereq_(\"./validate_light\"),string:_dereq_(\"./validate_string\")},a=e.value,n=e.valueSpec,u=e.key,o=e.styleSpec,l=e.style;if(\"string\"===getType(a)&&\"@\"===a[0]){if(o.$version>7)return[new ValidationError(u,a,\"constants have been deprecated as of v8\")];if(!(a in l.constants))return[new ValidationError(u,a,'constant \"%s\" not found',a)];e=extend({},e,{value:l.constants[a]})}return n.function&&\"object\"===getType(a)?r(e):n.type&&i[n.type]?i[n.type](e):t(extend({},e,{valueSpec:n.type?o[n.type]:n}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/get_type\":126,\"./validate_array\":132,\"./validate_boolean\":133,\"./validate_color\":134,\"./validate_constants\":135,\"./validate_enum\":136,\"./validate_filter\":137,\"./validate_function\":138,\"./validate_layer\":140,\"./validate_light\":142,\"./validate_number\":143,\"./validate_object\":144,\"./validate_source\":147,\"./validate_string\":148}],132:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,t=e.valueSpec,a=e.style,n=e.styleSpec,l=e.key,i=e.arrayElementValidator||validate;if(\"array\"!==getType(r))return[new ValidationError(l,r,\"array expected, %s found\",getType(r))];if(t.length&&r.length!==t.length)return[new ValidationError(l,r,\"array length %d expected, length %d found\",t.length,r.length)];if(t[\"min-length\"]&&r.length<t[\"min-length\"])return[new ValidationError(l,r,\"array length at least %d expected, length %d found\",t[\"min-length\"],r.length)];var o={type:t.value};n.$version<7&&(o.function=t.function),\"object\"===getType(t.value)&&(o=t.value);for(var u=[],d=0;d<r.length;d++)u=u.concat(i({array:r,arrayIndex:d,value:r[d],valueSpec:o,style:a,styleSpec:n,key:l+\"[\"+d+\"]\"}));return u};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],133:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.value,o=e.key,t=getType(r);return\"boolean\"!==t?[new ValidationError(o,r,\"boolean expected, %s found\",t)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],134:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),parseCSSColor=_dereq_(\"csscolorparser\").parseCSSColor;module.exports=function(r){var e=r.key,o=r.value,t=getType(o);return\"string\"!==t?[new ValidationError(e,o,\"color expected, %s found\",t)]:null===parseCSSColor(o)?[new ValidationError(e,o,'color expected, \"%s\" found',o)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"csscolorparser\":114}],135:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(r){var e=r.key,t=r.value;if(r.styleSpec.$version>7)return t?[new ValidationError(e,t,\"constants have been deprecated as of v8\")]:[];var a=getType(t);if(\"object\"!==a)return[new ValidationError(e,t,\"object expected, %s found\",a)];var o=[];for(var n in t)\"@\"!==n[0]&&o.push(new ValidationError(e+\".\"+n,t[n],'constants must start with \"@\"'));return o};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],136:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){var r=e.key,n=e.value,u=e.valueSpec,o=[];return Array.isArray(u.values)?-1===u.values.indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",u.values.join(\", \"),n)):-1===Object.keys(u.values).indexOf(unbundle(n))&&o.push(new ValidationError(r,n,\"expected one of [%s], %s found\",Object.keys(u.values).join(\", \"),n)),o};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130}],137:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateEnum=_dereq_(\"./validate_enum\"),getType=_dereq_(\"../util/get_type\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function e(r){var t,a=r.value,n=r.key,l=r.styleSpec,s=[];if(\"array\"!==getType(a))return[new ValidationError(n,a,\"array expected, %s found\",getType(a))];if(a.length<1)return[new ValidationError(n,a,\"filter array must have at least 1 element\")];switch(s=s.concat(validateEnum({key:n+\"[0]\",value:a[0],valueSpec:l.filter_operator,style:r.style,styleSpec:r.styleSpec})),unbundle(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&\"$type\"===unbundle(a[1])&&s.push(new ValidationError(n,a,'\"$type\" cannot be use with operator \"%s\"',a[0]));case\"==\":case\"!=\":3!==a.length&&s.push(new ValidationError(n,a,'filter array for operator \"%s\" must have 3 elements',a[0]));case\"in\":case\"!in\":a.length>=2&&\"string\"!==(t=getType(a[1]))&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t));for(var o=2;o<a.length;o++)t=getType(a[o]),\"$type\"===unbundle(a[1])?s=s.concat(validateEnum({key:n+\"[\"+o+\"]\",value:a[o],valueSpec:l.geometry_type,style:r.style,styleSpec:r.styleSpec})):\"string\"!==t&&\"number\"!==t&&\"boolean\"!==t&&s.push(new ValidationError(n+\"[\"+o+\"]\",a[o],\"string, number, or boolean expected, %s found\",t));break;case\"any\":case\"all\":case\"none\":for(var i=1;i<a.length;i++)s=s.concat(e({key:n+\"[\"+i+\"]\",value:a[i],style:r.style,styleSpec:r.styleSpec}));break;case\"has\":case\"!has\":t=getType(a[1]),2!==a.length?s.push(new ValidationError(n,a,'filter array for \"%s\" operator must have 2 elements',a[0])):\"string\"!==t&&s.push(new ValidationError(n+\"[1]\",a[1],\"string expected, %s found\",t))}return s};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136}],138:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\"),validateObject=_dereq_(\"./validate_object\"),validateArray=_dereq_(\"./validate_array\"),validateNumber=_dereq_(\"./validate_number\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\");module.exports=function(e){function t(e){if(\"identity\"===p)return[new ValidationError(e.key,e.value,'identity function may not have a \"stops\" property')];var t=[],a=e.value;return t=t.concat(validateArray({key:e.key,value:a,valueSpec:e.valueSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:r})),\"array\"===getType(a)&&0===a.length&&t.push(new ValidationError(e.key,a,\"array must have at least one stop\")),t}function r(e){var t=[],r=e.value,o=e.key;if(\"array\"!==getType(r))return[new ValidationError(o,r,\"array expected, %s found\",getType(r))];if(2!==r.length)return[new ValidationError(o,r,\"array length %d expected, length %d found\",2,r.length)];if(c){if(\"object\"!==getType(r[0]))return[new ValidationError(o,r,\"object expected, %s found\",getType(r[0]))];if(void 0===r[0].zoom)return[new ValidationError(o,r,\"object stop key must have zoom\")];if(void 0===r[0].value)return[new ValidationError(o,r,\"object stop key must have value\")];if(l&&l>unbundle(r[0].zoom))return[new ValidationError(o,r[0].zoom,\"stop zoom values must appear in ascending order\")];unbundle(r[0].zoom)!==l&&(l=unbundle(r[0].zoom),i=void 0,s={}),t=t.concat(validateObject({key:o+\"[0]\",value:r[0],valueSpec:{zoom:{}},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:validateNumber,value:a}}))}else t=t.concat(a({key:o+\"[0]\",value:r[0],valueSpec:{},style:e.style,styleSpec:e.styleSpec}));return t.concat(validate({key:o+\"[1]\",value:r[1],valueSpec:u,style:e.style,styleSpec:e.styleSpec}))}function a(e){var t=getType(e.value),r=unbundle(e.value);if(n){if(t!==n)return[new ValidationError(e.key,e.value,\"%s stop domain type must match previous stop domain type %s\",t,n)]}else n=t;if(\"number\"!==t&&\"string\"!==t&&\"boolean\"!==t)return[new ValidationError(e.key,e.value,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==t&&\"categorical\"!==p){var a=\"number expected, %s found\";return u[\"property-function\"]&&void 0===p&&(a+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ValidationError(e.key,e.value,a,t)]}return\"categorical\"!==p||\"number\"!==t||isFinite(r)&&Math.floor(r)===r?\"categorical\"!==p&&\"number\"===t&&void 0!==i&&r<i?[new ValidationError(e.key,e.value,\"stop domain values must appear in ascending order\")]:(i=r,\"categorical\"===p&&r in s?[new ValidationError(e.key,e.value,\"stop domain values must be unique\")]:(s[r]=!0,[])):[new ValidationError(e.key,e.value,\"integer expected, found %s\",r)]}function o(e){return validate({key:e.key,value:e.value,valueSpec:u,style:e.style,styleSpec:e.styleSpec})}var n,i,l,u=e.valueSpec,p=unbundle(e.value.type),s={},y=\"categorical\"!==p&&void 0===e.value.property,d=!y,c=\"array\"===getType(e.value.stops)&&\"array\"===getType(e.value.stops[0])&&\"object\"===getType(e.value.stops[0][0]),v=validateObject({key:e.key,value:e.value,valueSpec:e.styleSpec.function,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:t,default:o}});return\"identity\"===p&&y&&v.push(new ValidationError(e.key,e.value,'missing required property \"property\"')),\"identity\"===p||e.value.stops||v.push(new ValidationError(e.key,e.value,'missing required property \"stops\"')),\"exponential\"===p&&\"piecewise-constant\"===e.valueSpec.function&&v.push(new ValidationError(e.key,e.value,\"exponential functions not supported\")),e.styleSpec.$version>=8&&(d&&!e.valueSpec[\"property-function\"]?v.push(new ValidationError(e.key,e.value,\"property functions not supported\")):y&&!e.valueSpec[\"zoom-function\"]&&v.push(new ValidationError(e.key,e.value,\"zoom functions not supported\"))),\"categorical\"!==p&&!c||void 0!==e.value.property||v.push(new ValidationError(e.key,e.value,'\"property\" property is required')),v};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"../util/unbundle_jsonlint\":130,\"./validate\":131,\"./validate_array\":132,\"./validate_number\":143,\"./validate_object\":144}],139:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),validateString=_dereq_(\"./validate_string\");module.exports=function(r){var e=r.value,t=r.key,a=validateString(r);return a.length?a:(-1===e.indexOf(\"{fontstack}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&a.push(new ValidationError(t,e,'\"glyphs\" url must include a \"{range}\" token')),a)};\n},{\"../error/validation_error\":109,\"./validate_string\":148}],140:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateFilter=_dereq_(\"./validate_filter\"),validatePaintProperty=_dereq_(\"./validate_paint_property\"),validateLayoutProperty=_dereq_(\"./validate_layout_property\"),extend=_dereq_(\"../util/extend\");module.exports=function(e){var r=[],t=e.value,a=e.key,i=e.style,l=e.styleSpec;t.type||t.ref||r.push(new ValidationError(a,t,'either \"type\" or \"ref\" is required'));var u=unbundle(t.type),n=unbundle(t.ref);if(t.id)for(var o=unbundle(t.id),s=0;s<e.arrayIndex;s++){var d=i.layers[s];unbundle(d.id)===o&&r.push(new ValidationError(a,t.id,'duplicate layer id \"%s\", previously used at line %d',t.id,d.id.__line__))}if(\"ref\"in t){[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach(function(e){e in t&&r.push(new ValidationError(a,t[e],'\"%s\" is prohibited for ref layers',e))});var y;i.layers.forEach(function(e){unbundle(e.id)===n&&(y=e)}),y?y.ref?r.push(new ValidationError(a,t.ref,\"ref cannot reference another ref layer\")):u=unbundle(y.type):r.push(new ValidationError(a,t.ref,'ref layer \"%s\" not found',n))}else if(\"background\"!==u)if(t.source){var c=i.sources&&i.sources[t.source],p=c&&unbundle(c.type);c?\"vector\"===p&&\"raster\"===u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a raster source',t.id)):\"raster\"===p&&\"raster\"!==u?r.push(new ValidationError(a,t.source,'layer \"%s\" requires a vector source',t.id)):\"vector\"!==p||t[\"source-layer\"]||r.push(new ValidationError(a,t,'layer \"%s\" must specify a \"source-layer\"',t.id)):r.push(new ValidationError(a,t.source,'source \"%s\" not found',t.source))}else r.push(new ValidationError(a,t,'missing required property \"source\"'));return r=r.concat(validateObject({key:a,value:t,valueSpec:l.layer,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(){return[]},filter:validateFilter,layout:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validateLayoutProperty(extend({layerType:u},e))}}})},paint:function(e){return validateObject({layer:t,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{\"*\":function(e){return validatePaintProperty(extend({layerType:u},e))}}})}}}))};\n},{\"../error/validation_error\":109,\"../util/extend\":125,\"../util/unbundle_jsonlint\":130,\"./validate_filter\":137,\"./validate_layout_property\":141,\"./validate_object\":144,\"./validate_paint_property\":145}],141:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"layout\")};\n},{\"./validate_property\":146}],142:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validate=_dereq_(\"./validate\");module.exports=function(e){var t=e.value,r=e.styleSpec,a=r.light,i=e.style,n=[],o=getType(t);if(void 0===t)return n;if(\"object\"!==o)return n=n.concat([new ValidationError(\"light\",t,\"object expected, %s found\",o)]);for(var l in t){var c=l.match(/^(.*)-transition$/);n=c&&a[c[1]]&&a[c[1]].transition?n.concat(validate({key:l,value:t[l],valueSpec:r.transition,style:i,styleSpec:r})):a[l]?n.concat(validate({key:l,value:t[l],valueSpec:a[l],style:i,styleSpec:r})):n.concat([new ValidationError(l,t[l],'unknown property \"%s\"',l)])}return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],143:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(e){var r=e.key,i=e.value,m=e.valueSpec,a=getType(i);return\"number\"!==a?[new ValidationError(r,i,\"number expected, %s found\",a)]:\"minimum\"in m&&i<m.minimum?[new ValidationError(r,i,\"%s is less than the minimum value %s\",i,m.minimum)]:\"maximum\"in m&&i>m.maximum?[new ValidationError(r,i,\"%s is greater than the maximum value %s\",i,m.maximum)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],144:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\"),validateSpec=_dereq_(\"./validate\");module.exports=function(e){var r=e.key,t=e.value,i=e.valueSpec||{},a=e.objectElementValidators||{},o=e.style,l=e.styleSpec,n=[],u=getType(t);if(\"object\"!==u)return[new ValidationError(r,t,\"object expected, %s found\",u)];for(var d in t){var p=d.split(\".\")[0],s=i[p]||i[\"*\"],c=void 0;if(a[p])c=a[p];else if(i[p])c=validateSpec;else if(a[\"*\"])c=a[\"*\"];else{if(!i[\"*\"]){n.push(new ValidationError(r,t[d],'unknown property \"%s\"',d));continue}c=validateSpec}n=n.concat(c({key:(r?r+\".\":r)+d,value:t[d],valueSpec:s,style:o,styleSpec:l,object:t,objectKey:d}))}for(var v in i)i[v].required&&void 0===i[v].default&&void 0===t[v]&&n.push(new ValidationError(r,t,'missing required property \"%s\"',v));return n};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],145:[function(_dereq_,module,exports){\n\"use strict\";var validateProperty=_dereq_(\"./validate_property\");module.exports=function(r){return validateProperty(r,\"paint\")};\n},{\"./validate_property\":146}],146:[function(_dereq_,module,exports){\n\"use strict\";var validate=_dereq_(\"./validate\"),ValidationError=_dereq_(\"../error/validation_error\"),getType=_dereq_(\"../util/get_type\");module.exports=function(e,t){var r=e.key,i=e.style,a=e.styleSpec,n=e.value,o=e.objectKey,l=a[t+\"_\"+e.layerType];if(!l)return[];var y=o.match(/^(.*)-transition$/);if(\"paint\"===t&&y&&l[y[1]]&&l[y[1]].transition)return validate({key:r,value:n,valueSpec:a.transition,style:i,styleSpec:a});var p=e.valueSpec||l[o];if(!p)return[new ValidationError(r,n,'unknown property \"%s\"',o)];var s;if(\"string\"===getType(n)&&p[\"property-function\"]&&!p.tokens&&(s=/^{([^}]+)}$/.exec(n)))return[new ValidationError(r,n,'\"%s\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": %s` }`.',o,JSON.stringify(s[1]))];var u=[];return\"symbol\"===e.layerType&&\"text-field\"===o&&i&&!i.glyphs&&u.push(new ValidationError(r,n,'use of \"text-field\" requires a style \"glyphs\" property')),u.concat(validate({key:e.key,value:n,valueSpec:p,style:i,styleSpec:a}))};\n},{\"../error/validation_error\":109,\"../util/get_type\":126,\"./validate\":131}],147:[function(_dereq_,module,exports){\n\"use strict\";var ValidationError=_dereq_(\"../error/validation_error\"),unbundle=_dereq_(\"../util/unbundle_jsonlint\"),validateObject=_dereq_(\"./validate_object\"),validateEnum=_dereq_(\"./validate_enum\");module.exports=function(e){var a=e.value,t=e.key,r=e.styleSpec,l=e.style;if(!a.type)return[new ValidationError(t,a,'\"type\" is required')];var u=unbundle(a.type),i=[];switch(u){case\"vector\":case\"raster\":if(i=i.concat(validateObject({key:t,value:a,valueSpec:r.source_tile,style:e.style,styleSpec:r})),\"url\"in a)for(var s in a)[\"type\",\"url\",\"tileSize\"].indexOf(s)<0&&i.push(new ValidationError(t+\".\"+s,a[s],'a source with a \"url\" property may not include a \"%s\" property',s));return i;case\"geojson\":return validateObject({key:t,value:a,valueSpec:r.source_geojson,style:l,styleSpec:r});case\"video\":return validateObject({key:t,value:a,valueSpec:r.source_video,style:l,styleSpec:r});case\"image\":return validateObject({key:t,value:a,valueSpec:r.source_image,style:l,styleSpec:r});case\"canvas\":return validateObject({key:t,value:a,valueSpec:r.source_canvas,style:l,styleSpec:r});default:return validateEnum({key:t+\".type\",value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"]},style:l,styleSpec:r})}};\n},{\"../error/validation_error\":109,\"../util/unbundle_jsonlint\":130,\"./validate_enum\":136,\"./validate_object\":144}],148:[function(_dereq_,module,exports){\n\"use strict\";var getType=_dereq_(\"../util/get_type\"),ValidationError=_dereq_(\"../error/validation_error\");module.exports=function(r){var e=r.value,t=r.key,i=getType(e);return\"string\"!==i?[new ValidationError(t,e,\"string expected, %s found\",i)]:[]};\n},{\"../error/validation_error\":109,\"../util/get_type\":126}],149:[function(_dereq_,module,exports){\n\"use strict\";function validateStyleMin(e,a){a=a||latestStyleSpec;var t=[];return t=t.concat(validate({key:\"\",value:e,valueSpec:a.$root,styleSpec:a,style:e,objectElementValidators:{glyphs:validateGlyphsURL,\"*\":function(){return[]}}})),a.$version>7&&e.constants&&(t=t.concat(validateConstants({key:\"constants\",value:e.constants,style:e,styleSpec:a}))),sortErrors(t)}function sortErrors(e){return[].concat(e).sort(function(e,a){return e.line-a.line})}function wrapCleanErrors(e){return function(){return sortErrors(e.apply(this,arguments))}}var validateConstants=_dereq_(\"./validate/validate_constants\"),validate=_dereq_(\"./validate/validate\"),latestStyleSpec=_dereq_(\"./reference/latest\"),validateGlyphsURL=_dereq_(\"./validate/validate_glyphs_url\");validateStyleMin.source=wrapCleanErrors(_dereq_(\"./validate/validate_source\")),validateStyleMin.light=wrapCleanErrors(_dereq_(\"./validate/validate_light\")),validateStyleMin.layer=wrapCleanErrors(_dereq_(\"./validate/validate_layer\")),validateStyleMin.filter=wrapCleanErrors(_dereq_(\"./validate/validate_filter\")),validateStyleMin.paintProperty=wrapCleanErrors(_dereq_(\"./validate/validate_paint_property\")),validateStyleMin.layoutProperty=wrapCleanErrors(_dereq_(\"./validate/validate_layout_property\")),module.exports=validateStyleMin;\n},{\"./reference/latest\":123,\"./validate/validate\":131,\"./validate/validate_constants\":135,\"./validate/validate_filter\":137,\"./validate/validate_glyphs_url\":139,\"./validate/validate_layer\":140,\"./validate/validate_layout_property\":141,\"./validate/validate_light\":142,\"./validate/validate_paint_property\":145,\"./validate/validate_source\":147}],150:[function(_dereq_,module,exports){\n\"use strict\";var AnimationLoop=function(){this.n=0,this.times=[]};AnimationLoop.prototype.stopped=function(){return this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()}),!this.times.length},AnimationLoop.prototype.set=function(t){return this.times.push({id:this.n,time:t+(new Date).getTime()}),this.n++},AnimationLoop.prototype.cancel=function(t){this.times=this.times.filter(function(i){return i.id!==t})},module.exports=AnimationLoop;\n},{}],151:[function(_dereq_,module,exports){\n\"use strict\";var styleSpec=_dereq_(\"../style-spec/reference/latest\"),util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),validateStyle=_dereq_(\"./validate_style\"),StyleDeclaration=_dereq_(\"./style_declaration\"),StyleTransition=_dereq_(\"./style_transition\"),TRANSITION_SUFFIX=\"-transition\",properties=[\"anchor\",\"color\",\"position\",\"intensity\"],specifications=styleSpec.light,Light=function(t){function i(i){t.call(this),this.set(i)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.set=function(t){var i=this;if(!this._validate(validateStyle.light,t)){this._declarations={},this._transitions={},this._transitionOptions={},this.calculated={},t=util.extend({anchor:specifications.anchor.default,color:specifications.color.default,position:specifications.position.default,intensity:specifications.intensity.default},t);for(var e=0,o=properties;e<o.length;e+=1){var n=o[e];i._declarations[n]=new StyleDeclaration(specifications[n],t[n])}return this}},i.prototype.getLight=function(){return{anchor:this.getLightProperty(\"anchor\"),color:this.getLightProperty(\"color\"),position:this.getLightProperty(\"position\"),intensity:this.getLightProperty(\"intensity\")}},i.prototype.getLightProperty=function(t){return util.endsWith(t,TRANSITION_SUFFIX)?this._transitionOptions[t]:this._declarations[t]&&this._declarations[t].value},i.prototype.getLightValue=function(t,i){if(\"position\"===t){var e=this._transitions[t].calculate(i),o=util.sphericalToCartesian(e);return{x:o[0],y:o[1],z:o[2]}}return this._transitions[t].calculate(i)},i.prototype.setLight=function(t){var i=this;if(!this._validate(validateStyle.light,t))for(var e in t){var o=t[e];util.endsWith(e,TRANSITION_SUFFIX)?i._transitionOptions[e]=o:null===o||void 0===o?delete i._declarations[e]:i._declarations[e]=new StyleDeclaration(specifications[e],o)}},i.prototype.recalculate=function(t){var i=this;for(var e in i._declarations)i.calculated[e]=i.getLightValue(e,{zoom:t})},i.prototype._applyLightDeclaration=function(t,i,e,o,n){var r=e.transition?this._transitions[t]:void 0,a=specifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(a,a.default)),!r||r.declaration.json!==i.json){var s=util.extend({duration:300,delay:0},o,this.getLightProperty(t+TRANSITION_SUFFIX)),l=this._transitions[t]=new StyleTransition(a,i,r,s);l.instant()||(l.loopID=n.set(l.endTime-Date.now())),r&&n.cancel(r.loopID)}},i.prototype.updateLightTransitions=function(t,i,e){var o,n=this;for(o in n._declarations)n._applyLightDeclaration(o,n._declarations[o],t,i,e)},i.prototype._validate=function(t,i){return validateStyle.emitErrors(this,t.call(validateStyle,util.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:styleSpec})))},i}(Evented);module.exports=Light;\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./style_declaration\":157,\"./style_transition\":165,\"./validate_style\":166}],152:[function(_dereq_,module,exports){\n\"use strict\";var ref=_dereq_(\"../util/mapbox\"),normalizeGlyphsURL=ref.normalizeGlyphsURL,ajax=_dereq_(\"../util/ajax\"),parseGlyphPBF=_dereq_(\"./parse_glyph_pbf\");module.exports=function(e,r,a,l,p){var i=256*r,s=i+255,t=l(normalizeGlyphsURL(a).replace(\"{fontstack}\",e).replace(\"{range}\",i+\"-\"+s),ajax.ResourceType.Glyphs);ajax.getArrayBuffer(t,function(e,r){if(e)p(e);else if(r){for(var a={},l=0,i=parseGlyphPBF(r.data);l<i.length;l+=1){var s=i[l];a[s.id]=s}p(null,a)}})};\n},{\"../util/ajax\":201,\"../util/mapbox\":217,\"./parse_glyph_pbf\":154}],153:[function(_dereq_,module,exports){\n\"use strict\";var ajax=_dereq_(\"../util/ajax\"),browser=_dereq_(\"../util/browser\"),ref=_dereq_(\"../util/mapbox\"),normalizeSpriteURL=ref.normalizeSpriteURL,ref$1=_dereq_(\"../util/image\"),RGBAImage=ref$1.RGBAImage;module.exports=function(e,r,i){function a(){if(u)i(u);else if(t&&o){var e=browser.getImageData(o),r={};for(var a in t){var n=t[a],l=n.width,g=n.height,x=n.x,f=n.y,m=n.sdf,p=n.pixelRatio,s=RGBAImage.create({width:l,height:g});RGBAImage.copy(e,s,{x:x,y:f},{x:0,y:0},{width:l,height:g}),r[a]={data:s,pixelRatio:p,sdf:m}}i(null,r)}}if(!e)return void i(null,{});var t,o,u,n=browser.devicePixelRatio>1?\"@2x\":\"\";ajax.getJSON(r(normalizeSpriteURL(e,n,\".json\"),ajax.ResourceType.SpriteJSON),function(e,r){u||(u=e,t=r,a())}),ajax.getImage(r(normalizeSpriteURL(e,n,\".png\"),ajax.ResourceType.SpriteImage),function(e,r){u||(u=e,o=r,a())})};\n},{\"../util/ajax\":201,\"../util/browser\":202,\"../util/image\":213,\"../util/mapbox\":217}],154:[function(_dereq_,module,exports){\n\"use strict\";function readFontstacks(e,a,r){1===e&&r.readMessage(readFontstack,a)}function readFontstack(e,a,r){if(3===e){var t=r.readMessage(readGlyph,{}),d=t.id,i=t.bitmap,n=t.width,o=t.height,h=t.left,s=t.top,p=t.advance;a.push({id:d,bitmap:AlphaImage.create({width:n+2*border,height:o+2*border},i),metrics:{width:n,height:o,left:h,top:s,advance:p}})}}function readGlyph(e,a,r){1===e?a.id=r.readVarint():2===e?a.bitmap=r.readBytes():3===e?a.width=r.readVarint():4===e?a.height=r.readVarint():5===e?a.left=r.readSVarint():6===e?a.top=r.readSVarint():7===e&&(a.advance=r.readVarint())}var ref=_dereq_(\"../util/image\"),AlphaImage=ref.AlphaImage,Protobuf=_dereq_(\"pbf\"),border=3;module.exports=function(e){return new Protobuf(e).readFields(readFontstacks,[])},module.exports.GLYPH_PBF_BORDER=border;\n},{\"../util/image\":213,\"pbf\":29}],155:[function(_dereq_,module,exports){\n\"use strict\";function getMaximumPaintValue(t,a,e){return a.isPaintValueFeatureConstant(t)?a.paint[t]:e.programConfigurations.get(a.id).paintPropertyStatistics[t].max}function translateDistance(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function translate(t,a,e,n,r){if(!a[0]&&!a[1])return t;var i=Point.convert(a);\"viewport\"===e&&i._rotate(-n);for(var u=[],s=0;s<t.length;s++){for(var o=t[s],l=[],m=0;m<o.length;m++)l.push(o[m].sub(i._mult(r)));u.push(l)}return u}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports={getMaximumPaintValue:getMaximumPaintValue,translateDistance:translateDistance,translate:translate};\n},{\"@mapbox/point-geometry\":2}],156:[function(_dereq_,module,exports){\n\"use strict\";var Evented=_dereq_(\"../util/evented\"),StyleLayer=_dereq_(\"./style_layer\"),loadSprite=_dereq_(\"./load_sprite\"),ImageManager=_dereq_(\"../render/image_manager\"),GlyphManager=_dereq_(\"../render/glyph_manager\"),Light=_dereq_(\"./light\"),LineAtlas=_dereq_(\"../render/line_atlas\"),util=_dereq_(\"../util/util\"),ajax=_dereq_(\"../util/ajax\"),mapbox=_dereq_(\"../util/mapbox\"),browser=_dereq_(\"../util/browser\"),Dispatcher=_dereq_(\"../util/dispatcher\"),AnimationLoop=_dereq_(\"./animation_loop\"),validateStyle=_dereq_(\"./validate_style\"),getSourceType=_dereq_(\"../source/source\").getType,setSourceType=_dereq_(\"../source/source\").setType,QueryFeatures=_dereq_(\"../source/query_features\"),SourceCache=_dereq_(\"../source/source_cache\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),MapboxGLFunction=_dereq_(\"../style-spec/function\"),getWorkerPool=_dereq_(\"../util/global_worker_pool\"),deref=_dereq_(\"../style-spec/deref\"),diff=_dereq_(\"../style-spec/diff\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),supportedDiffOperations=util.pick(diff.operations,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\"]),ignoredDiffOperations=util.pick(diff.operations,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Style=function(e){function t(t,r,a){var i=this;e.call(this),a=util.extend({validate:\"string\"!=typeof t||!mapbox.isMapboxURL(t)},a);var o=function(e,t){return i.map?i.map._transformRequest(e,t):{url:e}};this.map=r,this.animationLoop=r&&r.animationLoop||new AnimationLoop,this.dispatcher=new Dispatcher(getWorkerPool(),this),this.imageManager=new ImageManager,this.glyphManager=new GlyphManager(o,a.localIdeographFontFamily),this.lineAtlas=new LineAtlas(256,512),this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory={},this._loaded=!1,util.bindAll([\"_redoPlacement\"],this),this._resetUpdates(),this.setEventedParent(r),this.fire(\"dataloading\",{dataType:\"style\"});var s=this;this._rtlTextPluginCallback=rtlTextPlugin.registerForPluginAvailability(function(e){s.dispatcher.broadcast(\"loadRTLTextPlugin\",e.pluginBlobURL,e.errorCallback);for(var t in s.sourceCaches)s.sourceCaches[t].reload()});var n=function(e,t){if(e)i.fire(\"error\",{error:e});else if(t){if(a.validate&&validateStyle.emitErrors(i,validateStyle(t)))return;i._loaded=!0,i.stylesheet=t,i.updateClasses();for(var r in t.sources)i.addSource(r,t.sources[r],a);loadSprite(t.sprite,o,function(e,t){if(e)i.fire(\"error\",e);else if(t)for(var r in t)i.imageManager.addImage(r,t[r]);i.imageManager.setLoaded(!0)}),i.glyphManager.setURL(t.glyphs),i._resolve(),i.fire(\"data\",{dataType:\"style\"}),i.fire(\"style.load\")}};\"string\"==typeof t?ajax.getJSON(o(mapbox.normalizeStyleURL(t),ajax.ResourceType.Style),n):browser.frame(function(){return n(null,t)}),this.on(\"data\",function(e){if(\"source\"===e.dataType&&\"metadata\"===e.sourceDataType){var t=i.sourceCaches[e.sourceId];if(t){var r=t.getSource();if(r&&r.vectorLayerIds)for(var a in i._layers){var o=i._layers[a];o.source===r.id&&i._validateLayer(o)}}}})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype._validateLayer=function(e){var t=this.sourceCaches[e.source];if(t){var r=e.sourceLayer;if(r){var a=t.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(r))&&this.fire(\"error\",{error:new Error('Source layer \"'+r+'\" does not exist on source \"'+a.id+'\" as specified by style layer \"'+e.id+'\"')})}}},t.prototype.loaded=function(){var e=this;if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in e.sourceCaches)if(!e.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},t.prototype._resolve=function(){var e=this,t=deref(this.stylesheet.layers);this._order=t.map(function(e){return e.id}),this._layers={};for(var r=0,a=t;r<a.length;r+=1){var i=a[r];i=StyleLayer.create(i),i.setEventedParent(e,{layer:{id:i.id}}),e._layers[i.id]=i}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new Light(this.stylesheet.light)},t.prototype._serializeLayers=function(e){var t=this;return e.map(function(e){return t._layers[e].serialize()})},t.prototype._applyClasses=function(e,t){var r=this;if(this._loaded){e=e||[],t=t||{transition:!0};var a=this.stylesheet.transition||{},i=this._updatedAllPaintProps?this._layers:this._updatedPaintProps;for(var o in i){var s=r._layers[o],n=r._updatedPaintProps[o];if(r._updatedAllPaintProps||n.all)s.updatePaintTransitions(e,t,a,r.animationLoop,r.zoomHistory);else for(var l in n)r._layers[o].updatePaintTransition(l,e,t,a,r.animationLoop,r.zoomHistory)}this.light.updateLightTransitions(t,a,this.animationLoop)}},t.prototype._recalculate=function(e){var t=this;if(this._loaded){for(var r in t.sourceCaches)t.sourceCaches[r].used=!1;this._updateZoomHistory(e);for(var a=0,i=t._order;a<i.length;a+=1){var o=i[a],s=t._layers[o];s.recalculate(e),!s.isHidden(e)&&s.source&&(t.sourceCaches[s.source].used=!0)}this.light.recalculate(e);Math.floor(this.z)!==Math.floor(e)&&this.animationLoop.set(300),this.z=e}},t.prototype._updateZoomHistory=function(e){var t=this.zoomHistory;void 0===t.lastIntegerZoom&&(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=0,t.lastZoom=e),Math.floor(t.lastZoom)<Math.floor(e)?(t.lastIntegerZoom=Math.floor(e),t.lastIntegerZoomTime=Date.now()):Math.floor(t.lastZoom)>Math.floor(e)&&(t.lastIntegerZoom=Math.floor(e+1),t.lastIntegerZoomTime=Date.now()),t.lastZoom=e},t.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},t.prototype.update=function(e,t){var r=this;if(this._changed){var a=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(a.length||i.length||this._updatedSymbolOrder)&&this._updateWorkerLayers(a,i);for(var o in r._updatedSources){var s=r._updatedSources[o];\"reload\"===s?r._reloadSource(o):\"clear\"===s&&r._clearSource(o)}this._applyClasses(e,t),this._resetUpdates(),this.fire(\"data\",{dataType:\"style\"})}},t.prototype._updateWorkerLayers=function(e,t){var r=this,a=this._updatedSymbolOrder?this._order.filter(function(e){return\"symbol\"===r._layers[e].type}):null;this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t,symbolOrder:a})},t.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSymbolOrder=!1,this._updatedSources={},this._updatedPaintProps={},this._updatedAllPaintProps=!1},t.prototype.setState=function(e){var t=this;if(this._checkLoaded(),validateStyle.emitErrors(this,validateStyle(e)))return!1;e=util.clone(e),e.layers=deref(e.layers);var r=diff(this.serialize(),e).filter(function(e){return!(e.command in ignoredDiffOperations)});if(0===r.length)return!1;var a=r.filter(function(e){return!(e.command in supportedDiffOperations)});if(a.length>0)throw new Error(\"Unimplemented: \"+a.map(function(e){return e.command}).join(\", \")+\".\");return r.forEach(function(e){\"setTransition\"!==e.command&&t[e.command].apply(t,e.args)}),this.stylesheet=e,!0},t.prototype.addImage=function(e,t){if(this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"An image with this name already exists.\")});this.imageManager.addImage(e,t),this.fire(\"data\",{dataType:\"style\"})},t.prototype.removeImage=function(e){if(!this.imageManager.getImage(e))return this.fire(\"error\",{error:new Error(\"No image with this name exists.\")});this.imageManager.removeImage(e),this.fire(\"data\",{dataType:\"style\"})},t.prototype.addSource=function(e,t,r){var a=this;if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!t.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(t).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\",\"canvas\"].indexOf(t.type)>=0&&this._validate(validateStyle.source,\"sources.\"+e,t,null,r))){var i=this.sourceCaches[e]=new SourceCache(e,t,this.dispatcher);i.style=this,i.setEventedParent(this,function(){return{isSourceLoaded:a.loaded(),source:i.serialize(),sourceId:e}}),i.onAdd(this.map),this._changed=!0}},t.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");var t=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],t.fire(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e}),t.setEventedParent(null),t.clearTiles(),t.onRemove&&t.onRemove(this.map),this._changed=!0},t.prototype.getSource=function(e){return this.sourceCaches[e]&&this.sourceCaches[e].getSource()},t.prototype.addLayer=function(e,t,r){this._checkLoaded();var a=e.id;if(\"object\"==typeof e.source&&(this.addSource(a,e.source),e=util.clone(e),e=util.extend(e,{source:a})),!this._validate(validateStyle.layer,\"layers.\"+a,e,{arrayIndex:-1},r)){var i=StyleLayer.create(e);this._validateLayer(i),i.setEventedParent(this,{layer:{id:a}});var o=t?this._order.indexOf(t):this._order.length;if(this._order.splice(o,0,a),this._layers[a]=i,this._removedLayers[a]&&i.source){var s=this._removedLayers[a];delete this._removedLayers[a],s.type!==i.type?this._updatedSources[i.source]=\"clear\":(this._updatedSources[i.source]=\"reload\",this.sourceCaches[i.source].pause())}this._updateLayer(i),\"symbol\"===i.type&&(this._updatedSymbolOrder=!0),this.updateClasses(a)}},t.prototype.moveLayer=function(e,t){this._checkLoaded(),this._changed=!0;var r=this._layers[e];if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")});var a=this._order.indexOf(e);this._order.splice(a,1);var i=t?this._order.indexOf(t):this._order.length;this._order.splice(i,0,e),\"symbol\"===r.type&&(this._updatedSymbolOrder=!0,r.source&&!this._updatedSources[r.source]&&(this._updatedSources[r.source]=\"reload\",this.sourceCaches[r.source].pause()))},t.prototype.removeLayer=function(e){this._checkLoaded();var t=this._layers[e];if(!t)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")});t.setEventedParent(null);var r=this._order.indexOf(e);this._order.splice(r,1),\"symbol\"===t.type&&(this._updatedSymbolOrder=!0),this._changed=!0,this._removedLayers[e]=t,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e]},t.prototype.getLayer=function(e){return this._layers[e]},t.prototype.setLayerZoomRange=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")});a.minzoom===t&&a.maxzoom===r||(null!=t&&(a.minzoom=t),null!=r&&(a.maxzoom=r),this._updateLayer(a))},t.prototype.setFilter=function(e,t){this._checkLoaded();var r=this.getLayer(e);if(!r)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")});null!==t&&void 0!==t&&this._validate(validateStyle.filter,\"layers.\"+r.id+\".filter\",t)||util.deepEqual(r.filter,t)||(r.filter=util.clone(t),this._updateLayer(r))},t.prototype.getFilter=function(e){return util.clone(this.getLayer(e).filter)},t.prototype.setLayoutProperty=function(e,t,r){this._checkLoaded();var a=this.getLayer(e);if(!a)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});util.deepEqual(a.getLayoutProperty(t),r)||(a.setLayoutProperty(t,r),this._updateLayer(a))},t.prototype.getLayoutProperty=function(e,t){return this.getLayer(e).getLayoutProperty(t)},t.prototype.setPaintProperty=function(e,t,r,a){this._checkLoaded();var i=this.getLayer(e);if(!i)return void this.fire(\"error\",{error:new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")});if(!util.deepEqual(i.getPaintProperty(t,a),r)){var o=i.isPaintValueFeatureConstant(t);i.setPaintProperty(t,r,a);!(r&&MapboxGLFunction.isFunctionDefinition(r)&&\"$zoom\"!==r.property&&void 0!==r.property)&&o||this._updateLayer(i),this.updateClasses(e,t)}},t.prototype.getPaintProperty=function(e,t,r){return this.getLayer(e).getPaintProperty(t,r)},t.prototype.getTransition=function(){return util.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},t.prototype.updateClasses=function(e,t){if(this._changed=!0,e){var r=this._updatedPaintProps;r[e]||(r[e]={}),r[e][t||\"all\"]=!0}else this._updatedAllPaintProps=!0},t.prototype.serialize=function(){var e=this;return util.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:util.mapObject(this.sourceCaches,function(e){return e.serialize()}),layers:this._order.map(function(t){return e._layers[t].serialize()})},function(e){return void 0!==e})},t.prototype._updateLayer=function(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&(this._updatedSources[e.source]=\"reload\",this.sourceCaches[e.source].pause()),this._changed=!0},t.prototype._flattenRenderedFeatures=function(e){for(var t=this,r=[],a=this._order.length-1;a>=0;a--)for(var i=t._order[a],o=0,s=e;o<s.length;o+=1){var n=s[o],l=n[i];if(l)for(var u=0,d=l;u<d.length;u+=1){var h=d[u];r.push(h)}}return r},t.prototype.queryRenderedFeatures=function(e,t,r,a){var i=this;t&&t.filter&&this._validate(validateStyle.filter,\"queryRenderedFeatures.filter\",t.filter);var o={};if(t&&t.layers){if(!Array.isArray(t.layers))return this.fire(\"error\",{error:\"parameters.layers must be an Array.\"}),[];for(var s=0,n=t.layers;s<n.length;s+=1){var l=n[s],u=i._layers[l];if(!u)return i.fire(\"error\",{error:\"The layer '\"+l+\"' does not exist in the map's style and cannot be queried for features.\"}),[];o[u.source]=!0}}var d=[];for(var h in i.sourceCaches)if(!t.layers||o[h]){var c=QueryFeatures.rendered(i.sourceCaches[h],i._layers,e,t,r,a);d.push(c)}return this._flattenRenderedFeatures(d)},t.prototype.querySourceFeatures=function(e,t){t&&t.filter&&this._validate(validateStyle.filter,\"querySourceFeatures.filter\",t.filter);var r=this.sourceCaches[e];return r?QueryFeatures.source(r,t):[]},t.prototype.addSourceType=function(e,t,r){return getSourceType(e)?r(new Error('A source type called \"'+e+'\" already exists.')):(setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},r):r(null,null))},t.prototype.getLight=function(){return this.light.getLight()},t.prototype.setLight=function(e,t){this._checkLoaded();var r=this.light.getLight(),a=!1;for(var i in e)if(!util.deepEqual(e[i],r[i])){a=!0;break}if(a){var o=this.stylesheet.transition||{};this.light.setLight(e),this.light.updateLightTransitions(t||{transition:!0},o,this.animationLoop)}},t.prototype._validate=function(e,t,r,a,i){return(!i||!1!==i.validate)&&validateStyle.emitErrors(this,e.call(validateStyle,util.extend({key:t,style:this.serialize(),value:r,styleSpec:styleSpec},a)))},t.prototype._remove=function(){var e=this;rtlTextPlugin.evented.off(\"pluginAvailable\",this._rtlTextPluginCallback);for(var t in e.sourceCaches)e.sourceCaches[t].clearTiles();this.dispatcher.remove()},t.prototype._clearSource=function(e){this.sourceCaches[e].clearTiles()},t.prototype._reloadSource=function(e){this.sourceCaches[e].resume(),this.sourceCaches[e].reload()},t.prototype._updateSources=function(e){var t=this;for(var r in t.sourceCaches)t.sourceCaches[r].update(e)},t.prototype._redoPlacement=function(){var e=this;for(var t in e.sourceCaches)e.sourceCaches[t].redoPlacement()},t.prototype.getImages=function(e,t,r){this.imageManager.getImages(t.icons,r)},t.prototype.getGlyphs=function(e,t,r){this.glyphManager.getGlyphs(t.stacks,r)},t}(Evented);module.exports=Style;\n},{\"../render/glyph_manager\":75,\"../render/image_manager\":77,\"../render/line_atlas\":78,\"../source/query_features\":94,\"../source/rtl_text_plugin\":96,\"../source/source\":97,\"../source/source_cache\":98,\"../style-spec/deref\":107,\"../style-spec/diff\":108,\"../style-spec/function\":112,\"../style-spec/reference/latest\":123,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dispatcher\":208,\"../util/evented\":210,\"../util/global_worker_pool\":212,\"../util/mapbox\":217,\"../util/util\":223,\"./animation_loop\":150,\"./light\":151,\"./load_sprite\":153,\"./style_layer\":158,\"./validate_style\":166}],157:[function(_dereq_,module,exports){\n\"use strict\";var createFunction=_dereq_(\"../style-spec/function\"),util=_dereq_(\"../util/util\"),StyleDeclaration=function(t,i){var o=this;if(this.value=util.clone(i),this.isFunction=createFunction.isFunctionDefinition(i),this.json=JSON.stringify(this.value),this.minimum=t.minimum,this.function=createFunction(this.value,t),this.isFeatureConstant=this.function.isFeatureConstant,this.isZoomConstant=this.function.isZoomConstant,this.isFeatureConstant||this.isZoomConstant){if(!this.isZoomConstant){this.stopZoomLevels=[];for(var n=0,s=o.value.stops;n<s.length;n+=1){var e=s[n];o.stopZoomLevels.indexOf(e[0])<0&&o.stopZoomLevels.push(e[0])}}}else{this.stopZoomLevels=[];for(var a=[],u=0,l=o.value.stops;u<l.length;u+=1){var r=l[u],c=r[0].zoom;o.stopZoomLevels.indexOf(c)<0&&(o.stopZoomLevels.push(c),a.push([c,a.length]))}this._functionInterpolationT=createFunction({type:\"exponential\",stops:a,base:i.base},{type:\"number\"})}};StyleDeclaration.prototype.calculate=function(t,i){var o=this.function(t&&t.zoom,i||{});return void 0!==this.minimum&&o<this.minimum?this.minimum:o},StyleDeclaration.prototype.calculateInterpolationT=function(t){return this.isFeatureConstant||this.isZoomConstant?0:this._functionInterpolationT(t&&t.zoom,{})},module.exports=StyleDeclaration;\n},{\"../style-spec/function\":112,\"../util/util\":223}],158:[function(_dereq_,module,exports){\n\"use strict\";function getDeclarationValue(t){return t.value}var util=_dereq_(\"../util/util\"),StyleTransition=_dereq_(\"./style_transition\"),StyleDeclaration=_dereq_(\"./style_declaration\"),styleSpec=_dereq_(\"../style-spec/reference/latest\"),validateStyle=_dereq_(\"./validate_style\"),parseColor=_dereq_(\"./../style-spec/util/parse_color\"),Evented=_dereq_(\"../util/evented\"),TRANSITION_SUFFIX=\"-transition\",StyleLayer=function(t){function i(i){var e=this;t.call(this),this.id=i.id,this.metadata=i.metadata,this.type=i.type,this.minzoom=i.minzoom,this.maxzoom=i.maxzoom,\"background\"!==i.type&&(this.source=i.source,this.sourceLayer=i[\"source-layer\"],this.filter=i.filter),this.paint={},this.layout={},this._paintSpecifications=styleSpec[\"paint_\"+this.type],this._layoutSpecifications=styleSpec[\"layout_\"+this.type],this._paintTransitions={},this._paintTransitionOptions={},this._paintDeclarations={},this._layoutDeclarations={},this._layoutFunctions={};var a,o,n={validate:!1};for(var r in i){var s=r.match(/^paint(?:\\.(.*))?$/);if(s){var l=s[1]||\"\";for(a in i[r])e.setPaintProperty(a,i[r][a],l,n)}}for(o in i.layout)e.setLayoutProperty(o,i.layout[o],n);for(a in e._paintSpecifications)e.paint[a]=e.getPaintValue(a);for(o in e._layoutSpecifications)e._updateLayoutValue(o)}return t&&(i.__proto__=t),i.prototype=Object.create(t&&t.prototype),i.prototype.constructor=i,i.prototype.setLayoutProperty=function(t,i,e){if(null==i)delete this._layoutDeclarations[t];else{var a=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(validateStyle.layoutProperty,a,t,i,e))return;this._layoutDeclarations[t]=new StyleDeclaration(this._layoutSpecifications[t],i)}this._updateLayoutValue(t)},i.prototype.getLayoutProperty=function(t){return this._layoutDeclarations[t]&&this._layoutDeclarations[t].value},i.prototype.getLayoutValue=function(t,i,e){var a=this._layoutSpecifications[t],o=this._layoutDeclarations[t];return o?o.calculate(i,e):a.default},i.prototype.setPaintProperty=function(t,i,e,a){var o=\"layers.\"+this.id+(e?'[\"paint.'+e+'\"].':\".paint.\")+t;if(util.endsWith(t,TRANSITION_SUFFIX))if(this._paintTransitionOptions[e||\"\"]||(this._paintTransitionOptions[e||\"\"]={}),null===i||void 0===i)delete this._paintTransitionOptions[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintTransitionOptions[e||\"\"][t]=i}else if(this._paintDeclarations[e||\"\"]||(this._paintDeclarations[e||\"\"]={}),null===i||void 0===i)delete this._paintDeclarations[e||\"\"][t];else{if(this._validate(validateStyle.paintProperty,o,t,i,a))return;this._paintDeclarations[e||\"\"][t]=new StyleDeclaration(this._paintSpecifications[t],i)}},i.prototype.getPaintProperty=function(t,i){return i=i||\"\",util.endsWith(t,TRANSITION_SUFFIX)?this._paintTransitionOptions[i]&&this._paintTransitionOptions[i][t]:this._paintDeclarations[i]&&this._paintDeclarations[i][t]&&this._paintDeclarations[i][t].value},i.prototype.getPaintValue=function(t,i,e){var a=this._paintSpecifications[t],o=this._paintTransitions[t];return o?o.calculate(i,e):\"color\"===a.type&&a.default?parseColor(a.default):a.default},i.prototype.getPaintValueStopZoomLevels=function(t){var i=this._paintTransitions[t];return i?i.declaration.stopZoomLevels:[]},i.prototype.getLayoutValueStopZoomLevels=function(t){var i=this._layoutDeclarations[t];return i?i.stopZoomLevels:[]},i.prototype.getPaintInterpolationT=function(t,i){return this._paintTransitions[t].declaration.calculateInterpolationT(i)},i.prototype.getLayoutInterpolationT=function(t,i){return this._layoutDeclarations[t].calculateInterpolationT(i)},i.prototype.isPaintValueFeatureConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isFeatureConstant},i.prototype.isLayoutValueFeatureConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isFeatureConstant},i.prototype.isPaintValueZoomConstant=function(t){var i=this._paintTransitions[t];return!i||i.declaration.isZoomConstant},i.prototype.isLayoutValueZoomConstant=function(t){var i=this._layoutDeclarations[t];return!i||i.isZoomConstant},i.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||(!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.layout.visibility)},i.prototype.updatePaintTransitions=function(t,i,e,a,o){for(var n=this,r=util.extend({},this._paintDeclarations[\"\"]),s=0;s<t.length;s++)util.extend(r,n._paintDeclarations[t[s]]);var l;for(l in r)n._applyPaintDeclaration(l,r[l],i,e,a,o);for(l in n._paintTransitions)l in r||n._applyPaintDeclaration(l,null,i,e,a,o)},i.prototype.updatePaintTransition=function(t,i,e,a,o,n){for(var r=this,s=this._paintDeclarations[\"\"][t],l=0;l<i.length;l++){var u=r._paintDeclarations[i[l]];u&&u[t]&&(s=u[t])}this._applyPaintDeclaration(t,s,e,a,o,n)},i.prototype.recalculate=function(t){var i=this;for(var e in i._paintTransitions)i.paint[e]=i.getPaintValue(e,{zoom:t});for(var a in i._layoutFunctions)i.layout[a]=i.getLayoutValue(a,{zoom:t})},i.prototype.serialize=function(){var t=this,i={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:util.mapObject(this._layoutDeclarations,getDeclarationValue)};for(var e in t._paintDeclarations){i[\"\"===e?\"paint\":\"paint.\"+e]=util.mapObject(t._paintDeclarations[e],getDeclarationValue)}return util.filterObject(i,function(t,i){return void 0!==t&&!(\"layout\"===i&&!Object.keys(t).length)})},i.prototype._applyPaintDeclaration=function(t,i,e,a,o,n){var r=e.transition?this._paintTransitions[t]:void 0,s=this._paintSpecifications[t];if(null!==i&&void 0!==i||(i=new StyleDeclaration(s,s.default)),!r||r.declaration.json!==i.json){var l=util.extend({duration:300,delay:0},a,this.getPaintProperty(t+TRANSITION_SUFFIX)),u=this._paintTransitions[t]=new StyleTransition(s,i,r,l,n);u.instant()||(u.loopID=o.set(u.endTime-Date.now())),r&&o.cancel(r.loopID)}},i.prototype._updateLayoutValue=function(t){var i=this._layoutDeclarations[t];i&&i.isFunction?this._layoutFunctions[t]=!0:(delete this._layoutFunctions[t],this.layout[t]=this.getLayoutValue(t))},i.prototype._validate=function(t,i,e,a,o){return(!o||!1!==o.validate)&&validateStyle.emitErrors(this,t.call(validateStyle,{key:i,layerType:this.type,objectKey:e,value:a,styleSpec:styleSpec,style:{glyphs:!0,sprite:!0}}))},i.prototype.has3DPass=function(){return!1},i}(Evented);module.exports=StyleLayer;var subclasses={circle:_dereq_(\"./style_layer/circle_style_layer\"),fill:_dereq_(\"./style_layer/fill_style_layer\"),\"fill-extrusion\":_dereq_(\"./style_layer/fill_extrusion_style_layer\"),line:_dereq_(\"./style_layer/line_style_layer\"),symbol:_dereq_(\"./style_layer/symbol_style_layer\"),background:StyleLayer,raster:StyleLayer};StyleLayer.create=function(t){return new subclasses[t.type](t)};\n},{\"../style-spec/reference/latest\":123,\"../util/evented\":210,\"../util/util\":223,\"./../style-spec/util/parse_color\":128,\"./style_declaration\":157,\"./style_layer/circle_style_layer\":159,\"./style_layer/fill_extrusion_style_layer\":160,\"./style_layer/fill_style_layer\":161,\"./style_layer/line_style_layer\":162,\"./style_layer/symbol_style_layer\":163,\"./style_transition\":165,\"./validate_style\":166}],159:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),CircleBucket=_dereq_(\"../../data/bucket/circle_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiPoint=ref.multiPolygonIntersectsBufferedMultiPoint,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,CircleStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new CircleBucket(e)},t.prototype.queryRadius=function(e){return getMaximumPaintValue(\"circle-radius\",this,e)+translateDistance(this.paint[\"circle-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,r,i,a,n){var u=translate(e,this.getPaintValue(\"circle-translate\",{zoom:i},t.properties),this.getPaintValue(\"circle-translate-anchor\",{zoom:i},t.properties),a,n),l=this.getPaintValue(\"circle-radius\",{zoom:i},t.properties)*n;return multiPolygonIntersectsBufferedMultiPoint(u,r,l)},t}(StyleLayer);module.exports=CircleStyleLayer;\n},{\"../../data/bucket/circle_bucket\":43,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],160:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillExtrusionBucket=_dereq_(\"../../data/bucket/fill_extrusion_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillExtrusionStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,r,i){var o=t.prototype.getPaintValue.call(this,e,r,i);return\"fill-extrusion-color\"===e&&o&&(o[3]=1),o},e.prototype.createBucket=function(t){return new FillExtrusionBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-extrusion-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,n){var l=translate(t,this.getPaintValue(\"fill-extrusion-translate\",{zoom:i},e.properties),this.getPaintValue(\"fill-extrusion-translate-anchor\",{zoom:i},e.properties),o,n);return multiPolygonIntersectsMultiPolygon(l,r)},e.prototype.has3DPass=function(){return 0!==this.paint[\"fill-extrusion-opacity\"]&&\"none\"!==this.layout.visibility},e}(StyleLayer);module.exports=FillExtrusionStyleLayer;\n},{\"../../data/bucket/fill_extrusion_bucket\":45,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],161:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),FillBucket=_dereq_(\"../../data/bucket/fill_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsMultiPolygon=ref.multiPolygonIntersectsMultiPolygon,ref$1=_dereq_(\"../query_utils\"),translateDistance=ref$1.translateDistance,translate=ref$1.translate,FillStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPaintValue=function(e,o,l){var i=this;if(\"fill-outline-color\"===e){if(void 0===this.getPaintProperty(\"fill-outline-color\"))return t.prototype.getPaintValue.call(this,\"fill-color\",o,l);for(var r=this._paintTransitions[\"fill-outline-color\"];r;){if(!(r&&r.declaration&&r.declaration.value))return t.prototype.getPaintValue.call(i,\"fill-color\",o,l);r=r.oldTransition}}return t.prototype.getPaintValue.call(this,e,o,l)},e.prototype.getPaintValueStopZoomLevels=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintValueStopZoomLevels.call(this,\"fill-color\"):t.prototype.getPaintValueStopZoomLevels.call(this,e)},e.prototype.getPaintInterpolationT=function(e,o){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.getPaintInterpolationT.call(this,\"fill-color\",o):t.prototype.getPaintInterpolationT.call(this,e,o)},e.prototype.isPaintValueFeatureConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueFeatureConstant.call(this,\"fill-color\"):t.prototype.isPaintValueFeatureConstant.call(this,e)},e.prototype.isPaintValueZoomConstant=function(e){return\"fill-outline-color\"===e&&void 0===this.getPaintProperty(\"fill-outline-color\")?t.prototype.isPaintValueZoomConstant.call(this,\"fill-color\"):t.prototype.isPaintValueZoomConstant.call(this,e)},e.prototype.createBucket=function(t){return new FillBucket(t)},e.prototype.queryRadius=function(){return translateDistance(this.paint[\"fill-translate\"])},e.prototype.queryIntersectsFeature=function(t,e,o,l,i,r){var n=translate(t,this.getPaintValue(\"fill-translate\",{zoom:l},e.properties),this.getPaintValue(\"fill-translate-anchor\",{zoom:l},e.properties),i,r);return multiPolygonIntersectsMultiPolygon(n,o)},e}(StyleLayer);module.exports=FillStyleLayer;\n},{\"../../data/bucket/fill_bucket\":44,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158}],162:[function(_dereq_,module,exports){\n\"use strict\";function getLineWidth(e,t){return t>0?t+2*e:e}function offsetLine(e,t){for(var i=[],r=new Point(0,0),n=0;n<e.length;n++){for(var a=e[n],u=[],o=0;o<a.length;o++){var s=a[o-1],l=a[o],p=a[o+1],f=0===o?r:l.sub(s)._unit()._perp(),c=o===a.length-1?r:p.sub(l)._unit()._perp(),y=f._add(c)._unit(),h=y.x*c.x+y.y*c.y;y._mult(1/h),u.push(y._mult(t)._add(l))}i.push(u)}return i}var Point=_dereq_(\"@mapbox/point-geometry\"),StyleLayer=_dereq_(\"../style_layer\"),LineBucket=_dereq_(\"../../data/bucket/line_bucket\"),ref=_dereq_(\"../../util/intersection_tests\"),multiPolygonIntersectsBufferedMultiLine=ref.multiPolygonIntersectsBufferedMultiLine,ref$1=_dereq_(\"../query_utils\"),getMaximumPaintValue=ref$1.getMaximumPaintValue,translateDistance=ref$1.translateDistance,translate=ref$1.translate,LineStyleLayer=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createBucket=function(e){return new LineBucket(e)},t.prototype.queryRadius=function(e){var t=e,i=getLineWidth(getMaximumPaintValue(\"line-width\",this,t),getMaximumPaintValue(\"line-gap-width\",this,t)),r=getMaximumPaintValue(\"line-offset\",this,t);return i/2+Math.abs(r)+translateDistance(this.paint[\"line-translate\"])},t.prototype.queryIntersectsFeature=function(e,t,i,r,n,a){var u=translate(e,this.getPaintValue(\"line-translate\",{zoom:r},t.properties),this.getPaintValue(\"line-translate-anchor\",{zoom:r},t.properties),n,a),o=a/2*getLineWidth(this.getPaintValue(\"line-width\",{zoom:r},t.properties),this.getPaintValue(\"line-gap-width\",{zoom:r},t.properties)),s=this.getPaintValue(\"line-offset\",{zoom:r},t.properties);return s&&(i=offsetLine(i,s*a)),multiPolygonIntersectsBufferedMultiLine(u,i,o)},t}(StyleLayer);module.exports=LineStyleLayer;\n},{\"../../data/bucket/line_bucket\":46,\"../../util/intersection_tests\":214,\"../query_utils\":155,\"../style_layer\":158,\"@mapbox/point-geometry\":2}],163:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"../style_layer\"),SymbolBucket=_dereq_(\"../../data/bucket/symbol_bucket\"),SymbolStyleLayer=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getLayoutValue=function(e,r,o){var n=t.prototype.getLayoutValue.call(this,e,r,o);if(\"auto\"!==n)return n;switch(e){case\"text-rotation-alignment\":case\"icon-rotation-alignment\":return\"line\"===this.getLayoutValue(\"symbol-placement\",r,o)?\"map\":\"viewport\";case\"text-pitch-alignment\":return this.getLayoutValue(\"text-rotation-alignment\",r,o);case\"icon-pitch-alignment\":return this.getLayoutValue(\"icon-rotation-alignment\",r,o);default:return n}},e.prototype.createBucket=function(t){return new SymbolBucket(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e}(StyleLayer);module.exports=SymbolStyleLayer;\n},{\"../../data/bucket/symbol_bucket\":47,\"../style_layer\":158}],164:[function(_dereq_,module,exports){\n\"use strict\";var StyleLayer=_dereq_(\"./style_layer\"),util=_dereq_(\"../util/util\"),featureFilter=_dereq_(\"../style-spec/feature_filter\"),groupByLayout=_dereq_(\"../style-spec/group_by_layout\"),StyleLayerIndex=function(e){e&&this.replace(e)};StyleLayerIndex.prototype.replace=function(e){var r=this;this.symbolOrder=[];for(var t=0,i=e;t<i.length;t+=1){var a=i[t];\"symbol\"===a.type&&r.symbolOrder.push(a.id)}this._layerConfigs={},this._layers={},this.update(e,[])},StyleLayerIndex.prototype.update=function(e,r,t){for(var i=this,a=0,l=e;a<l.length;a+=1){var y=l[a];i._layerConfigs[y.id]=y;var s=i._layers[y.id]=StyleLayer.create(y);s.updatePaintTransitions({},{transition:!1}),s.filter=featureFilter(s.filter)}for(var o=0,u=r;o<u.length;o+=1){var n=u[o];delete i._layerConfigs[n],delete i._layers[n]}t&&(this.symbolOrder=t),this.familiesBySource={};for(var f=groupByLayout(util.values(this._layerConfigs)),p=0,d=f;p<d.length;p+=1){var h=d[p],c=h.map(function(e){return i._layers[e.id]}),v=c[0];if(!v.layout||\"none\"!==v.layout.visibility){var _=v.source||\"\",g=i.familiesBySource[_];g||(g=i.familiesBySource[_]={});var L=v.sourceLayer||\"_geojsonTileLayer\",m=g[L];m||(m=g[L]=[]),m.push(c)}}},module.exports=StyleLayerIndex;\n},{\"../style-spec/feature_filter\":110,\"../style-spec/group_by_layout\":113,\"../util/util\":223,\"./style_layer\":158}],165:[function(_dereq_,module,exports){\n\"use strict\";function interpZoomTransitioned(t,i,e){if(void 0!==t&&void 0!==i)return{from:t.to,fromScale:t.toScale,to:i.to,toScale:i.toScale,t:e}}var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),fakeZoomHistory={lastIntegerZoom:0,lastIntegerZoomTime:0,lastZoom:0},StyleTransition=function(t,i,e,o,a){this.declaration=i,this.startTime=this.endTime=(new Date).getTime(),this.oldTransition=e,this.duration=o.duration||0,this.delay=o.delay||0,this.zoomTransitioned=\"piecewise-constant\"===t.function&&t.transition,this.interp=this.zoomTransitioned?interpZoomTransitioned:interpolate[t.type],this.zoomHistory=a||fakeZoomHistory,this.instant()||(this.endTime=this.startTime+this.duration+this.delay),e&&e.endTime<=this.startTime&&delete e.oldTransition};StyleTransition.prototype.instant=function(){return!this.oldTransition||!this.interp||0===this.duration&&0===this.delay},StyleTransition.prototype.calculate=function(t,i,e){var o=this._calculateTargetValue(t,i);if(this.instant())return o;if((e=e||Date.now())>=this.endTime)return o;var a=this.oldTransition.calculate(t,i,this.startTime),n=util.easeCubicInOut((e-this.startTime-this.delay)/this.duration);return this.interp(a,o,n)},StyleTransition.prototype._calculateTargetValue=function(t,i){if(!this.zoomTransitioned)return this.declaration.calculate(t,i);var e=t.zoom,o=this.zoomHistory.lastIntegerZoom,a=e>o?2:.5,n=this.declaration.calculate({zoom:e>o?e-1:e+1},i),r=this.declaration.calculate({zoom:e},i),s=Math.min((Date.now()-this.zoomHistory.lastIntegerZoomTime)/this.duration,1),l=Math.abs(e-o),u=interpolate(s,1,l);return void 0!==n&&void 0!==r?{from:n,fromScale:a,to:r,toScale:1,t:u}:void 0},module.exports=StyleTransition;\n},{\"../style-spec/util/interpolate\":127,\"../util/util\":223}],166:[function(_dereq_,module,exports){\n\"use strict\";module.exports=_dereq_(\"../style-spec/validate_style.min\"),module.exports.emitErrors=function(r,e){if(e&&e.length){for(var t=0,o=e;t<o.length;t+=1){var s=o[t],i=s.message;r.fire(\"error\",{error:new Error(i)})}return!0}return!1};\n},{\"../style-spec/validate_style.min\":149}],167:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),Anchor=function(t){function o(o,e,n,r){t.call(this,o,e),this.angle=n,void 0!==r&&(this.segment=r)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.clone=function(){return new o(this.x,this.y,this.angle,this.segment)},o}(Point);module.exports=Anchor;\n},{\"@mapbox/point-geometry\":2}],168:[function(_dereq_,module,exports){\n\"use strict\";function checkMaxAngle(e,t,a,r,n){if(void 0===t.segment)return!0;for(var i=t,s=t.segment+1,f=0;f>-a/2;){if(--s<0)return!1;f-=e[s].dist(i),i=e[s]}f+=e[s].dist(e[s+1]),s++;for(var l=[],o=0;f<a/2;){var u=e[s-1],c=e[s],g=e[s+1];if(!g)return!1;var h=u.angleTo(c)-c.angleTo(g);for(h=Math.abs((h+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:f,angleDelta:h}),o+=h;f-l[0].distance>r;)o-=l.shift().angleDelta;if(o>n)return!1;s++,f+=c.dist(g)}return!0}module.exports=checkMaxAngle;\n},{}],169:[function(_dereq_,module,exports){\n\"use strict\";function clipLine(n,x,y,o,e){for(var r=[],t=0;t<n.length;t++)for(var i=n[t],u=void 0,d=0;d<i.length-1;d++){var P=i[d],w=i[d+1];P.x<x&&w.x<x||(P.x<x?P=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round():w.x<x&&(w=new Point(x,P.y+(w.y-P.y)*((x-P.x)/(w.x-P.x)))._round()),P.y<y&&w.y<y||(P.y<y?P=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round():w.y<y&&(w=new Point(P.x+(w.x-P.x)*((y-P.y)/(w.y-P.y)),y)._round()),P.x>=o&&w.x>=o||(P.x>=o?P=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round():w.x>=o&&(w=new Point(o,P.y+(w.y-P.y)*((o-P.x)/(w.x-P.x)))._round()),P.y>=e&&w.y>=e||(P.y>=e?P=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round():w.y>=e&&(w=new Point(P.x+(w.x-P.x)*((e-P.y)/(w.y-P.y)),e)._round()),u&&P.equals(u[u.length-1])||(u=[P],r.push(u)),u.push(w)))))}return r}var Point=_dereq_(\"@mapbox/point-geometry\");module.exports=clipLine;\n},{\"@mapbox/point-geometry\":2}],170:[function(_dereq_,module,exports){\n\"use strict\";var createStructArrayType=_dereq_(\"../util/struct_array\"),Point=_dereq_(\"@mapbox/point-geometry\"),CollisionBoxArray=createStructArrayType({members:[{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"offsetX\"},{type:\"Int16\",name:\"offsetY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Float32\",name:\"unadjustedMaxScale\"},{type:\"Float32\",name:\"maxScale\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"bbox0\"},{type:\"Int16\",name:\"bbox1\"},{type:\"Int16\",name:\"bbox2\"},{type:\"Int16\",name:\"bbox3\"},{type:\"Float32\",name:\"placementScale\"}]});Object.defineProperty(CollisionBoxArray.prototype.StructType.prototype,\"anchorPoint\",{get:function(){return new Point(this.anchorPointX,this.anchorPointY)}}),module.exports=CollisionBoxArray;\n},{\"../util/struct_array\":220,\"@mapbox/point-geometry\":2}],171:[function(_dereq_,module,exports){\n\"use strict\";var CollisionFeature=function(t,e,i,o,a,n,s,l,r,d,u){var h=s.top*l-r,f=s.bottom*l+r,x=s.left*l-r,m=s.right*l+r;if(this.boxStartIndex=t.length,d){var _=f-h,b=m-x;if(_>0)if(_=Math.max(10*l,_),u){var v=e[i.segment+1].sub(e[i.segment])._unit()._mult(b),c=[i.sub(v),i.add(v)];this._addLineCollisionBoxes(t,c,i,0,b,_,o,a,n)}else this._addLineCollisionBoxes(t,e,i,i.segment,b,_,o,a,n)}else t.emplaceBack(i.x,i.y,0,0,x,h,m,f,1/0,1/0,o,a,n,0,0,0,0,0);this.boxEndIndex=t.length};CollisionFeature.prototype._addLineCollisionBoxes=function(t,e,i,o,a,n,s,l,r){var d=n/2,u=Math.floor(a/d),h=Math.floor(u/2),f=-n/2,x=i,m=o+1,_=f,b=-a/2,v=b-a/8;do{if(--m<0){if(_>b)return;m=0;break}_-=e[m].dist(x),x=e[m]}while(_>v);for(var c=e[m].dist(e[m+1]),g=-h;g<u+h;g++){var p=g*d,C=b+p;if(p<0&&(C+=p),p>a&&(C+=p-a),!(C<_)){for(;_+c<C;){if(_+=c,++m+1>=e.length)return;c=e[m].dist(e[m+1])}var M=C-_,y=e[m],B=e[m+1],k=B.sub(y)._unit()._mult(M)._add(y)._round(),F=Math.max(Math.abs(C-f)-d/2,0),L=a/2/F;(g<0||g>=u)&&(L=Math.min(L,.99)),t.emplaceBack(k.x,k.y,k.x-i.x,k.y-i.y,-n/2,-n/2,n/2,n/2,L,L,s,l,r,0,0,0,0,0)}}},module.exports=CollisionFeature;\n},{}],172:[function(_dereq_,module,exports){\n\"use strict\";var Point=_dereq_(\"@mapbox/point-geometry\"),EXTENT=_dereq_(\"../data/extent\"),Grid=_dereq_(\"grid-index\"),intersectionTests=_dereq_(\"../util/intersection_tests\"),CollisionTile=function(e,t,i,a,r,o,n){void 0===o&&(o=new Grid(EXTENT,12,6)),void 0===n&&(n=new Grid(EXTENT,12,0)),this.angle=e,this.pitch=t,this.cameraToCenterDistance=i,this.cameraToTileDistance=a,this.grid=o,this.ignoredGrid=n,this.perspectiveRatio=1+.5*(a/i-1),this.minScale=.5/this.perspectiveRatio,this.maxScale=2/this.perspectiveRatio;var s=Math.sin(this.angle),l=Math.cos(this.angle);this.rotationMatrix=[l,-s,s,l],this.reverseRotationMatrix=[l,s,-s,l],this.yStretch=Math.max(1,a/(i*Math.cos(t/180*Math.PI))),this.collisionBoxArray=r,0===r.length&&(r.emplaceBack(),r.emplaceBack(0,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(EXTENT,0,0,0,0,-EXTENT,0,EXTENT,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,0,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0),r.emplaceBack(0,EXTENT,0,0,-EXTENT,0,EXTENT,0,1/0,1/0,0,0,0,0,0,0,0,0,0)),this.tempCollisionBox=r.get(0),this.edges=[r.get(1),r.get(2),r.get(3),r.get(4)]};CollisionTile.deserialize=function(e,t){return new CollisionTile(e.angle,e.pitch,e.cameraToCenterDistance,e.cameraToTileDistance,t,new Grid(e.grid),new Grid(e.ignoredGrid))},CollisionTile.prototype.serialize=function(e){var t=this.grid.toArrayBuffer(),i=this.ignoredGrid.toArrayBuffer();return e&&(e.push(t),e.push(i)),{angle:this.angle,pitch:this.pitch,cameraToCenterDistance:this.cameraToCenterDistance,cameraToTileDistance:this.cameraToTileDistance,grid:t,ignoredGrid:i}},CollisionTile.prototype.placeCollisionFeature=function(e,t,i){for(var a=this,r=this.collisionBoxArray,o=this.minScale,n=this.rotationMatrix,s=this.yStretch,l=e.boxStartIndex;l<e.boxEndIndex;l++){var c=r.get(l),h=c.anchorPoint._matMult(n),x=h.x,m=h.y,p=x+c.x1*a.perspectiveRatio,y=m+c.y1*s*a.perspectiveRatio,g=x+c.x2*a.perspectiveRatio,d=m+c.y2*s*a.perspectiveRatio;c.bbox0=p,c.bbox1=y,c.bbox2=g,c.bbox3=d;var T=new Point(c.offsetX,c.offsetY)._matMult(n),u=T.x*T.x,v=T.y*T.y,M=v*s*s,f=Math.sqrt((u+M)/(u+v))||1;if(c.maxScale=c.unadjustedMaxScale*f,!t)for(var E=a.grid.query(p,y,g,d),S=0;S<E.length;S++){var P=r.get(E[S]),b=P.anchorPoint._matMult(n);if((o=a.getPlacementScale(o,h,c,b,P))>=a.maxScale)return o}if(i){var N=void 0;if(a.angle){var C=a.reverseRotationMatrix,w=new Point(c.x1,c.y1).matMult(C),X=new Point(c.x2,c.y1).matMult(C),B=new Point(c.x1,c.y2).matMult(C),G=new Point(c.x2,c.y2).matMult(C);N=a.tempCollisionBox,N.anchorPointX=c.anchorPoint.x,N.anchorPointY=c.anchorPoint.y,N.x1=Math.min(w.x,X.x,B.x,G.x),N.y1=Math.min(w.y,X.x,B.x,G.x),N.x2=Math.max(w.x,X.x,B.x,G.x),N.y2=Math.max(w.y,X.x,B.x,G.x),N.maxScale=c.maxScale}else N=c;for(var R=0;R<this.edges.length;R++){var q=a.edges[R];if((o=a.getPlacementScale(o,c.anchorPoint,N,q.anchorPoint,q))>=a.maxScale)return o}}}return o},CollisionTile.prototype.queryRenderedSymbols=function(e,t){var i={},a=[];if(0===e.length||0===this.grid.keys.length&&0===this.ignoredGrid.keys.length)return a;for(var r=this.collisionBoxArray,o=this.rotationMatrix,n=this.yStretch,s=[],l=1/0,c=1/0,h=-1/0,x=-1/0,m=0;m<e.length;m++)for(var p=e[m],y=0;y<p.length;y++){var g=p[y].matMult(o);l=Math.min(l,g.x),c=Math.min(c,g.y),h=Math.max(h,g.x),x=Math.max(x,g.y),s.push(g)}for(var d=this.grid.query(l,c,h,x),T=this.ignoredGrid.query(l,c,h,x),u=0;u<T.length;u++)d.push(T[u]);for(var v=t/this.perspectiveRatio,M=Math.pow(2,Math.ceil(Math.log(v)/Math.LN2*10)/10),f=0;f<d.length;f++){var E=r.get(d[f]),S=E.sourceLayerIndex,P=E.featureIndex;if(void 0===i[S]&&(i[S]={}),!i[S][P]&&!(M<E.placementScale||M>E.maxScale)){var b=E.anchorPoint.matMult(o),N=b.x+E.x1/v,C=b.y+E.y1/v*n,w=b.x+E.x2/v,X=b.y+E.y2/v*n,B=[new Point(N,C),new Point(w,C),new Point(w,X),new Point(N,X)];intersectionTests.polygonIntersectsPolygon(s,B)&&(i[S][P]=!0,a.push(d[f]))}}return a},CollisionTile.prototype.getPlacementScale=function(e,t,i,a,r){var o=t.x-a.x,n=t.y-a.y,s=(r.x1-i.x2)/o,l=(r.x2-i.x1)/o,c=(r.y1-i.y2)*this.yStretch/n,h=(r.y2-i.y1)*this.yStretch/n;(isNaN(s)||isNaN(l))&&(s=l=1),(isNaN(c)||isNaN(h))&&(c=h=1);var x=Math.min(Math.max(s,l),Math.max(c,h)),m=r.maxScale,p=i.maxScale;return x>m&&(x=m),x>p&&(x=p),x>e&&x>=r.placementScale&&(e=x),e},CollisionTile.prototype.insertCollisionFeature=function(e,t,i){for(var a=this,r=i?this.ignoredGrid:this.grid,o=this.collisionBoxArray,n=e.boxStartIndex;n<e.boxEndIndex;n++){var s=o.get(n);s.placementScale=t,t<a.maxScale&&(1===a.perspectiveRatio||s.maxScale>=1)&&r.insert(n,s.bbox0,s.bbox1,s.bbox2,s.bbox3)}},module.exports=CollisionTile;\n},{\"../data/extent\":48,\"../util/intersection_tests\":214,\"@mapbox/point-geometry\":2,\"grid-index\":22}],173:[function(_dereq_,module,exports){\n\"use strict\";function getAnchors(e,r,t,n,a,l,o,i,c){var h=n?.6*l*o:0,s=Math.max(n?n.right-n.left:0,a?a.right-a.left:0),u=0===e[0].x||e[0].x===c||0===e[0].y||e[0].y===c;r-s*o<r/4&&(r=s*o+r/4);var g=2*l;return resample(e,u?r/2*i%r:(s/2+g)*o*i%r,r,h,t,s*o,u,!1,c)}function resample(e,r,t,n,a,l,o,i,c){for(var h=l/2,s=0,u=0;u<e.length-1;u++)s+=e[u].dist(e[u+1]);for(var g=0,p=r-t,x=[],f=0;f<e.length-1;f++){for(var v=e[f],m=e[f+1],y=v.dist(m),A=m.angleTo(v);p+t<g+y;){p+=t;var d=(p-g)/y,k=interpolate(v.x,m.x,d),q=interpolate(v.y,m.y,d);if(k>=0&&k<c&&q>=0&&q<c&&p-h>=0&&p+h<=s){var M=new Anchor(k,q,A,f);M._round(),n&&!checkMaxAngle(e,M,l,n,a)||x.push(M)}}g+=y}return i||x.length||o||(x=resample(e,g/2,t,n,a,l,o,!0,c)),x}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),Anchor=_dereq_(\"../symbol/anchor\"),checkMaxAngle=_dereq_(\"./check_max_angle\");module.exports=getAnchors;\n},{\"../style-spec/util/interpolate\":127,\"../symbol/anchor\":167,\"./check_max_angle\":168}],174:[function(_dereq_,module,exports){\n\"use strict\";module.exports=function(e){function t(t){g.push(e[t]),l++}function r(e,t,r){var n=u[e];return delete u[e],u[t]=n,g[n].geometry[0].pop(),g[n].geometry[0]=g[n].geometry[0].concat(r[0]),n}function n(e,t,r){var n=i[t];return delete i[t],i[e]=n,g[n].geometry[0].shift(),g[n].geometry[0]=r[0].concat(g[n].geometry[0]),n}function o(e,t,r){var n=r?t[0][t[0].length-1]:t[0][0];return e+\":\"+n.x+\":\"+n.y}for(var i={},u={},g=[],l=0,m=0;m<e.length;m++){var y=e[m],c=y.geometry,f=y.text;if(f){var a=o(f,c),s=o(f,c,!0);if(a in u&&s in i&&u[a]!==i[s]){var v=n(a,s,c),d=r(a,s,g[v].geometry);delete i[a],delete u[s],u[o(f,g[d].geometry,!0)]=d,g[v].geometry=null}else a in u?r(a,s,c):s in i?n(a,s,c):(t(m),i[a]=l-1,u[s]=l-1)}else t(m)}return g.filter(function(e){return e.geometry})};\n},{}],175:[function(_dereq_,module,exports){\n\"use strict\";function getLabelPlaneMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.identity(i),mat4.scale(i,i,[1/r,1/r,1]),a||mat4.rotateZ(i,i,n.angle)):(mat4.scale(i,i,[n.width/2,-n.height/2,1]),mat4.translate(i,i,[1,-1,0]),mat4.multiply(i,i,e)),i}function getGlCoordMatrix(e,t,a,n,r){var i=mat4.identity(new Float32Array(16));return t?(mat4.multiply(i,i,e),mat4.scale(i,i,[r,r,1]),a||mat4.rotateZ(i,i,-n.angle)):(mat4.scale(i,i,[1,-1,1]),mat4.translate(i,i,[-1,-1,0]),mat4.scale(i,i,[2/n.width,2/n.height,1])),i}function project(e,t){var a=[e.x,e.y,0,1];vec4.transformMat4(a,a,t);var n=a[3];return{point:new Point(a[0]/n,a[1]/n),signedDistanceFromCamera:n}}function isVisible(e,t,a,n){var r=e[0]/e[3],i=e[1]/e[3];return r>=-a[0]&&r<=a[0]&&i>=-a[1]&&i<=a[1]&&n.frameHistory.isVisible(t)}function updateLineLabels(e,t,a,n,r,i,o,l,s,p){var m=n?e.textSizeData:e.iconSizeData,c=symbolSize.evaluateSizeForZoom(m,a.transform,p,n),u=[256/a.width*2+1,256/a.height*2+1],y=n?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;y.clear();for(var g=e.lineVertexArray,d=n?e.placedGlyphArray:e.placedIconArray,f=0;f<d.length;f++){var h=d.get(f),x=[h.anchorX,h.anchorY,0,1];if(vec4.transformMat4(x,x,t),isVisible(x,h.placementZoom,u,a)){var v=x[3],b=1+.5*(v/a.transform.cameraToCenterDistance-1),L=symbolSize.evaluateSizeForFeature(m,c,h),A=o?L*b:L/b,G=new Point(h.anchorX,h.anchorY),S=project(G,r).point,P={},D=placeGlyphsAlongLine(h,A,!1,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P);(D.notEnoughRoom||D.needsFlipping&&placeGlyphsAlongLine(h,A,!0,l,t,r,i,e.glyphOffsetArray,g,y,S,G,P).notEnoughRoom)&&hideGlyphs(h.numGlyphs,y)}else hideGlyphs(h.numGlyphs,y)}n?e.text.dynamicLayoutVertexBuffer.updateData(y.serialize()):e.icon.dynamicLayoutVertexBuffer.updateData(y.serialize())}function placeGlyphsAlongLine(e,t,a,n,r,i,o,l,s,p,m,c,u){var y,g=t/24,d=e.lineOffsetX*t,f=e.lineOffsetY*t;if(e.numGlyphs>1){var h=e.glyphStartIndex+e.numGlyphs,x=l.get(e.glyphStartIndex).offsetX,v=l.get(h-1).offsetX,b=e.lineStartIndex,L=e.lineStartIndex+e.lineLength,A=placeGlyphAlongLine(g*x,d,f,a,m,c,e.segment,b,L,s,i,u);if(!A)return{notEnoughRoom:!0};var G=placeGlyphAlongLine(g*v,d,f,a,m,c,e.segment,b,L,s,i,u);if(!G)return{notEnoughRoom:!0};var S=project(A.point,o).point,P=project(G.point,o).point;if(n&&!a&&(e.vertical?S.y<P.y:S.x>P.x))return{needsFlipping:!0};y=[A];for(var D=e.glyphStartIndex+1;D<h-1;D++){var I=l.get(D);y.push(placeGlyphAlongLine(g*I.offsetX,d,f,a,m,c,e.segment,b,L,s,i,u))}y.push(G)}else{if(n&&!a){var M=project(c,r).point,j=s.get(e.lineStartIndex+e.segment+1),w=project(j,r),F=w.signedDistanceFromCamera>0?w.point:projectTruncatedLineSegment(c,new Point(j.x,j.y),M,1,r);if(e.vertical?F.y>M.y:F.x<M.x)return{needsFlipping:!0}}var z=l.get(e.glyphStartIndex),_=placeGlyphAlongLine(g*z.offsetX,d,f,a,m,c,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,s,i,u);if(!_)return{notEnoughRoom:!0};y=[_]}for(var V=e.placementZoom,C=0,X=y;C<X.length;C+=1){var E=X[C];addDynamicAttributes(p,E.point,E.angle,V)}return{}}function projectTruncatedLineSegment(e,t,a,n,r){var i=project(e.add(e.sub(t)._unit()),r).point,o=a.sub(i);return a.add(o._mult(n/o.mag()))}function placeGlyphAlongLine(e,t,a,n,r,i,o,l,s,p,m,c){var u=n?e-t:e+t,y=u>0?1:-1,g=0;n&&(y*=-1,g=Math.PI),y<0&&(g+=Math.PI);for(var d=y>0?l+o:l+o+1,f=r,h=r,x=0,v=0,b=Math.abs(u);x+v<=b;){if((d+=y)<l||d>=s)return null;if(h=f,void 0===(f=c[d])){var L=project(p.get(d),m);if(L.signedDistanceFromCamera>0)f=c[d]=L.point;else{f=projectTruncatedLineSegment(0===x?i:new Point(p.get(d-y).x,p.get(d-y).y),new Point(p.get(d).x,p.get(d).y),h,b-x+1,m)}}x+=v,v=h.dist(f)}var A=(b-x)/v,G=f.sub(h),S=G.mult(A)._add(h);return S._add(G._unit()._perp()._mult(a*y)),{point:S,angle:g+Math.atan2(f.y-h.y,f.x-h.x)}}function hideGlyphs(e,t){for(var a=0;a<e;a++)addDynamicAttributes(t,offscreenPoint,0,25)}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"@mapbox/gl-matrix\"),mat4=ref.mat4,vec4=ref.vec4,symbolSize=_dereq_(\"./symbol_size\"),ref$1=_dereq_(\"../data/bucket/symbol_bucket\"),addDynamicAttributes=ref$1.addDynamicAttributes;module.exports={updateLineLabels:updateLineLabels,getLabelPlaneMatrix:getLabelPlaneMatrix,getGlCoordMatrix:getGlCoordMatrix};var offscreenPoint=new Point(-1/0,-1/0);\n},{\"../data/bucket/symbol_bucket\":47,\"./symbol_size\":178,\"@mapbox/gl-matrix\":1,\"@mapbox/point-geometry\":2}],176:[function(_dereq_,module,exports){\n\"use strict\";function getIconQuads(t,e,i,o,n,a,r){var u,l,d,f,c=e.image,h=i.layout,x=e.top-1/c.pixelRatio,g=e.left-1/c.pixelRatio,p=e.bottom+1/c.pixelRatio,s=e.right+1/c.pixelRatio;if(\"none\"!==h[\"icon-text-fit\"]&&n){var P=s-g,_=p-x,w=h[\"text-size\"]/24,m=n.left*w,y=n.right*w,M=n.top*w,v=n.bottom*w,R=y-m,b=v-M,G=h[\"icon-text-fit-padding\"][0],B=h[\"icon-text-fit-padding\"][1],I=h[\"icon-text-fit-padding\"][2],L=h[\"icon-text-fit-padding\"][3],Q=\"width\"===h[\"icon-text-fit\"]?.5*(b-_):0,O=\"height\"===h[\"icon-text-fit\"]?.5*(R-P):0,A=\"width\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?R:P,D=\"height\"===h[\"icon-text-fit\"]||\"both\"===h[\"icon-text-fit\"]?b:_;u=new Point(m+O-L,M+Q-G),l=new Point(m+O+B+A,M+Q-G),d=new Point(m+O+B+A,M+Q+I+D),f=new Point(m+O-L,M+Q+I+D)}else u=new Point(g,x),l=new Point(s,x),d=new Point(s,p),f=new Point(g,p);var E=i.getLayoutValue(\"icon-rotate\",a,r)*Math.PI/180;if(E){var F=Math.sin(E),H=Math.cos(E),V=[H,-F,F,H];u._matMult(V),l._matMult(V),f._matMult(V),d._matMult(V)}return[{tl:u,tr:l,bl:f,br:d,tex:{x:c.textureRect.x-1,y:c.textureRect.y-1,w:c.textureRect.w+2,h:c.textureRect.h+2},writingMode:void 0,glyphOffset:[0,0]}]}function getGlyphQuads(t,e,i,o,n,a,r){for(var u=i.getLayoutValue(\"text-rotate\",n,a)*Math.PI/180,l=i.getLayoutValue(\"text-offset\",n,a).map(function(t){return 24*t}),d=e.positionedGlyphs,f=[],c=0;c<d.length;c++){var h=d[c],x=r[h.glyph];if(x){var g=x.rect;if(g){var p=GLYPH_PBF_BORDER+1,s=x.metrics.advance/2,P=o?[h.x+s,h.y]:[0,0],_=o?[0,0]:[h.x+s+l[0],h.y+l[1]],w=x.metrics.left-p-s+_[0],m=-x.metrics.top-p+_[1],y=w+g.w,M=m+g.h,v=new Point(w,m),R=new Point(y,m),b=new Point(w,M),G=new Point(y,M);if(o&&h.vertical){var B=new Point(-s,s),I=-Math.PI/2,L=new Point(5,0);v._rotateAround(I,B)._add(L),R._rotateAround(I,B)._add(L),b._rotateAround(I,B)._add(L),G._rotateAround(I,B)._add(L)}if(u){var Q=Math.sin(u),O=Math.cos(u),A=[O,-Q,Q,O];v._matMult(A),R._matMult(A),b._matMult(A),G._matMult(A)}f.push({tl:v,tr:R,bl:b,br:G,tex:g,writingMode:e.writingMode,glyphOffset:P})}}}return f}var Point=_dereq_(\"@mapbox/point-geometry\"),ref=_dereq_(\"../style/parse_glyph_pbf\"),GLYPH_PBF_BORDER=ref.GLYPH_PBF_BORDER;module.exports={getIconQuads:getIconQuads,getGlyphQuads:getGlyphQuads};\n},{\"../style/parse_glyph_pbf\":154,\"@mapbox/point-geometry\":2}],177:[function(_dereq_,module,exports){\n\"use strict\";function breakLines(e,t){for(var a=[],r=0,i=0,n=t;i<n.length;i+=1){var l=n[i];a.push(e.substring(r,l)),r=l}return r<e.length&&a.push(e.substring(r,e.length)),a}function shapeText(e,t,a,r,i,n,l,c,o,s){var h=e.trim();s===WritingMode.vertical&&(h=verticalizePunctuation(h));var g,u=[],p={positionedGlyphs:u,text:h,top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:s},b=rtlTextPlugin.processBidirectionalText;return g=b?b(h,determineLineBreaks(h,l,a,t)):breakLines(h,determineLineBreaks(h,l,a,t)),shapeLines(p,t,g,r,i,n,s,l,o),!!u.length&&p}function determineAverageLineWidth(e,t,a,r){for(var i=0,n=0;n<e.length;n++){var l=r[e.charCodeAt(n)];l&&(i+=l.metrics.advance+t)}return i/Math.max(1,Math.ceil(i/a))}function calculateBadness(e,t,a,r){var i=Math.pow(e-t,2);return r?e<t?i/2:2*i:i+Math.abs(a)*a}function calculatePenalty(e,t){var a=0;return 10===e&&(a-=1e4),40!==e&&65288!==e||(a+=50),41!==t&&65289!==t||(a+=50),a}function evaluateBreak(e,t,a,r,i,n){for(var l=null,c=calculateBadness(t,a,i,n),o=0,s=r;o<s.length;o+=1){var h=s[o],g=t-h.x,u=calculateBadness(g,a,i,n)+h.badness;u<=c&&(l=h,c=u)}return{index:e,x:t,priorBreak:l,badness:c}}function leastBadBreaks(e){return e?leastBadBreaks(e.priorBreak).concat(e.index):[]}function determineLineBreaks(e,t,a,r){if(!a)return[];if(!e)return[];for(var i=[],n=determineAverageLineWidth(e,t,a,r),l=0,c=0;c<e.length;c++){var o=e.charCodeAt(c),s=r[o];s&&!whitespace[o]&&(l+=s.metrics.advance+t),c<e.length-1&&(breakable[o]||scriptDetection.charAllowsIdeographicBreaking(o))&&i.push(evaluateBreak(c+1,l,n,i,calculatePenalty(o,e.charCodeAt(c+1)),!1))}return leastBadBreaks(evaluateBreak(e.length,l,n,i,0,!0))}function getAnchorAlignment(e){var t=.5,a=.5;switch(e){case\"right\":case\"top-right\":case\"bottom-right\":t=1;break;case\"left\":case\"top-left\":case\"bottom-left\":t=0}switch(e){case\"bottom\":case\"bottom-right\":case\"bottom-left\":a=1;break;case\"top\":case\"top-right\":case\"top-left\":a=0}return{horizontalAlign:t,verticalAlign:a}}function shapeLines(e,t,a,r,i,n,l,c,o){for(var s=0,h=-17,g=0,u=e.positionedGlyphs,p=\"right\"===n?1:\"left\"===n?0:.5,b=0,v=a;b<v.length;b+=1){var d=v[b];if(d=d.trim(),d.length){for(var f=u.length,k=0;k<d.length;k++){var m=d.charCodeAt(k),x=t[m];x&&(scriptDetection.charHasUprightVerticalOrientation(m)&&l!==WritingMode.horizontal?(u.push({glyph:m,x:s,y:0,vertical:!0}),s+=o+c):(u.push({glyph:m,x:s,y:h,vertical:!1}),s+=x.metrics.advance+c))}if(u.length!==f){var A=s-c;g=Math.max(A,g),justifyLine(u,t,f,u.length-1,p)}s=0,h+=r}else h+=r}var B=getAnchorAlignment(i),y=B.horizontalAlign,w=B.verticalAlign;align(u,p,y,w,g,r,a.length);var z=a.length*r;e.top+=-w*z,e.bottom=e.top+z,e.left+=-y*g,e.right=e.left+g}function justifyLine(e,t,a,r,i){if(i){var n=t[e[r].glyph];if(n)for(var l=n.metrics.advance,c=(e[r].x+l)*i,o=a;o<=r;o++)e[o].x-=c}}function align(e,t,a,r,i,n,l){for(var c=(t-a)*i,o=(-r*l+.5)*n,s=0;s<e.length;s++)e[s].x+=c,e[s].y+=o}function shapeIcon(e,t,a){var r=getAnchorAlignment(a),i=r.horizontalAlign,n=r.verticalAlign,l=t[0],c=t[1],o=l-e.displaySize[0]*i,s=o+e.displaySize[0],h=c-e.displaySize[1]*n;return{image:e,top:h,bottom:h+e.displaySize[1],left:o,right:s}}var scriptDetection=_dereq_(\"../util/script_detection\"),verticalizePunctuation=_dereq_(\"../util/verticalize_punctuation\"),rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\"),WritingMode={horizontal:1,vertical:2};module.exports={shapeText:shapeText,shapeIcon:shapeIcon,WritingMode:WritingMode};var whitespace={};whitespace[9]=!0,whitespace[10]=!0,whitespace[11]=!0,whitespace[12]=!0,whitespace[13]=!0,whitespace[32]=!0;var breakable={};breakable[10]=!0,breakable[32]=!0,breakable[38]=!0,breakable[40]=!0,breakable[41]=!0,breakable[43]=!0,breakable[45]=!0,breakable[47]=!0,breakable[173]=!0,breakable[183]=!0,breakable[8203]=!0,breakable[8208]=!0,breakable[8211]=!0,breakable[8231]=!0;\n},{\"../source/rtl_text_plugin\":96,\"../util/script_detection\":218,\"../util/verticalize_punctuation\":225}],178:[function(_dereq_,module,exports){\n\"use strict\";function evaluateSizeForFeature(e,o,t){var i=o;return e.isFeatureConstant?i.uSize:e.isZoomConstant?t.lowerSize/10:interpolate.number(t.lowerSize/10,t.upperSize/10,i.uSizeT)}function evaluateSizeForZoom(e,o,t,i){var a={};if(e.isZoomConstant||e.isFeatureConstant)if(e.isFeatureConstant&&!e.isZoomConstant){var n;if(\"interval\"===e.functionType)n=t.getLayoutValue(i?\"text-size\":\"icon-size\",{zoom:o.zoom});else{var r=\"interval\"===e.functionType?0:interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]),u=e.coveringStopValues[0],l=e.coveringStopValues[1];n=u+(l-u)*util.clamp(r,0,1)}a.uSize=n}else e.isFeatureConstant&&e.isZoomConstant&&(a.uSize=e.layoutSize);else{var s=interpolationFactor(o.zoom,e.functionBase,e.coveringZoomRange[0],e.coveringZoomRange[1]);a.uSizeT=util.clamp(s,0,1)}return a}var interpolate=_dereq_(\"../style-spec/util/interpolate\"),ref=_dereq_(\"../style-spec/function\"),interpolationFactor=ref.interpolationFactor,util=_dereq_(\"../util/util\");module.exports={evaluateSizeForFeature:evaluateSizeForFeature,evaluateSizeForZoom:evaluateSizeForZoom};\n},{\"../style-spec/function\":112,\"../style-spec/util/interpolate\":127,\"../util/util\":223}],179:[function(_dereq_,module,exports){\n\"use strict\";var rtlTextPlugin=_dereq_(\"../source/rtl_text_plugin\");module.exports=function(e,r,t,a){var l=r.getLayoutValue(\"text-transform\",t,a);return\"uppercase\"===l?e=e.toLocaleUpperCase():\"lowercase\"===l&&(e=e.toLocaleLowerCase()),rtlTextPlugin.applyArabicShaping&&(e=rtlTextPlugin.applyArabicShaping(e)),e};\n},{\"../source/rtl_text_plugin\":96}],180:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),Point=_dereq_(\"@mapbox/point-geometry\"),handlers={scrollZoom:_dereq_(\"./handler/scroll_zoom\"),boxZoom:_dereq_(\"./handler/box_zoom\"),dragRotate:_dereq_(\"./handler/drag_rotate\"),dragPan:_dereq_(\"./handler/drag_pan\"),keyboard:_dereq_(\"./handler/keyboard\"),doubleClickZoom:_dereq_(\"./handler/dblclick_zoom\"),touchZoomRotate:_dereq_(\"./handler/touch_zoom_rotate\")};module.exports=function(e,t){function n(e){h(\"mouseout\",e)}function o(t){e.stop(),L=DOM.mousePos(g,t),h(\"mousedown\",t),E=!0}function r(t){var n=e.dragRotate&&e.dragRotate.isActive();p&&!n&&h(\"contextmenu\",p),p=null,E=!1,h(\"mouseup\",t)}function a(t){if(!(e.dragPan&&e.dragPan.isActive()||e.dragRotate&&e.dragRotate.isActive())){for(var n=t.toElement||t.target;n&&n!==g;)n=n.parentNode;n===g&&h(\"mousemove\",t)}}function u(t){e.stop(),f(\"touchstart\",t),!t.touches||t.touches.length>1||(b?(clearTimeout(b),b=null,h(\"dblclick\",t)):b=setTimeout(l,300))}function i(e){f(\"touchmove\",e)}function c(e){f(\"touchend\",e)}function d(e){f(\"touchcancel\",e)}function l(){b=null}function s(e){DOM.mousePos(g,e).equals(L)&&h(\"click\",e)}function m(e){h(\"dblclick\",e),e.preventDefault()}function v(t){var n=e.dragRotate&&e.dragRotate.isActive();E||n?E&&(p=t):h(\"contextmenu\",t),t.preventDefault()}function h(t,n){var o=DOM.mousePos(g,n);return e.fire(t,{lngLat:e.unproject(o),point:o,originalEvent:n})}function f(t,n){var o=DOM.touchPos(g,n),r=o.reduce(function(e,t,n,o){return e.add(t.div(o.length))},new Point(0,0));return e.fire(t,{lngLat:e.unproject(r),point:r,lngLats:o.map(function(t){return e.unproject(t)},this),points:o,originalEvent:n})}var g=e.getCanvasContainer(),p=null,E=!1,L=null,b=null;for(var q in handlers)e[q]=new handlers[q](e,t),t.interactive&&t[q]&&e[q].enable(t[q]);g.addEventListener(\"mouseout\",n,!1),g.addEventListener(\"mousedown\",o,!1),g.addEventListener(\"mouseup\",r,!1),g.addEventListener(\"mousemove\",a,!1),g.addEventListener(\"touchstart\",u,!1),g.addEventListener(\"touchend\",c,!1),g.addEventListener(\"touchmove\",i,!1),g.addEventListener(\"touchcancel\",d,!1),g.addEventListener(\"click\",s,!1),g.addEventListener(\"dblclick\",m,!1),g.addEventListener(\"contextmenu\",v,!1)};\n},{\"../util/dom\":209,\"./handler/box_zoom\":189,\"./handler/dblclick_zoom\":190,\"./handler/drag_pan\":191,\"./handler/drag_rotate\":192,\"./handler/keyboard\":193,\"./handler/scroll_zoom\":194,\"./handler/touch_zoom_rotate\":195,\"@mapbox/point-geometry\":2}],181:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),interpolate=_dereq_(\"../style-spec/util/interpolate\"),browser=_dereq_(\"../util/browser\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),Evented=_dereq_(\"../util/evented\"),Camera=function(t){function e(e,i){t.call(this),this.moving=!1,this.transform=e,this._bearingSnap=i.bearingSnap}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCenter=function(){return this.transform.center},e.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},e.prototype.panBy=function(t,e,i){return t=Point.convert(t).mult(-1),this.panTo(this.transform.center,util.extend({offset:t},e),i)},e.prototype.panTo=function(t,e,i){return this.easeTo(util.extend({center:t},e),i)},e.prototype.getZoom=function(){return this.transform.zoom},e.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},e.prototype.zoomTo=function(t,e,i){return this.easeTo(util.extend({zoom:t},e),i)},e.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},e.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},e.prototype.getBearing=function(){return this.transform.bearing},e.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},e.prototype.rotateTo=function(t,e,i){return this.easeTo(util.extend({bearing:t},e),i)},e.prototype.resetNorth=function(t,e){return this.rotateTo(0,util.extend({duration:1e3},t),e),this},e.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},e.prototype.getPitch=function(){return this.transform.pitch},e.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},e.prototype.fitBounds=function(t,e,i){if(e=util.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},e),\"number\"==typeof e.padding){var o=e.padding;e.padding={top:o,bottom:o,right:o,left:o}}if(!util.deepEqual(Object.keys(e.padding).sort(function(t,e){return t<e?-1:t>e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"]))return util.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\"),this;t=LngLatBounds.convert(t);var n=[e.padding.left-e.padding.right,e.padding.top-e.padding.bottom],r=Math.min(e.padding.right,e.padding.left),a=Math.min(e.padding.top,e.padding.bottom);e.offset=[e.offset[0]+n[0],e.offset[1]+n[1]];var s=Point.convert(e.offset),h=this.transform,p=h.project(t.getNorthWest()),u=h.project(t.getSouthEast()),c=u.sub(p),m=(h.width-2*r-2*Math.abs(s.x))/c.x,f=(h.height-2*a-2*Math.abs(s.y))/c.y;return f<0||m<0?(util.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\"),this):(e.center=h.unproject(p.add(u).div(2)),e.zoom=Math.min(h.scaleZoom(h.scale*Math.min(m,f)),e.maxZoom),e.bearing=0,e.linear?this.easeTo(e,i):this.flyTo(e,i))},e.prototype.jumpTo=function(t,e){this.stop();var i=this.transform,o=!1,n=!1,r=!1;return\"zoom\"in t&&i.zoom!==+t.zoom&&(o=!0,i.zoom=+t.zoom),void 0!==t.center&&(i.center=LngLat.convert(t.center)),\"bearing\"in t&&i.bearing!==+t.bearing&&(n=!0,i.bearing=+t.bearing),\"pitch\"in t&&i.pitch!==+t.pitch&&(r=!0,i.pitch=+t.pitch),this.fire(\"movestart\",e).fire(\"move\",e),o&&this.fire(\"zoomstart\",e).fire(\"zoom\",e).fire(\"zoomend\",e),n&&this.fire(\"rotate\",e),r&&this.fire(\"pitchstart\",e).fire(\"pitch\",e).fire(\"pitchend\",e),this.fire(\"moveend\",e)},e.prototype.easeTo=function(t,e){var i=this;this.stop(),t=util.extend({offset:[0,0],duration:500,easing:util.ease},t),!1===t.animate&&(t.duration=0),t.smoothEasing&&0!==t.duration&&(t.easing=this._smoothOutEasing(t.duration));var o=this.transform,n=this.getZoom(),r=this.getBearing(),a=this.getPitch(),s=\"zoom\"in t?+t.zoom:n,h=\"bearing\"in t?this._normalizeBearing(t.bearing,r):r,p=\"pitch\"in t?+t.pitch:a,u=o.centerPoint.add(Point.convert(t.offset)),c=o.pointLocation(u),m=LngLat.convert(t.center||c);this._normalizeCenter(m);var f,g,d=o.project(c),l=o.project(m).sub(d),v=o.zoomScale(s-n);return t.around&&(f=LngLat.convert(t.around),g=o.locationPoint(f)),this.zooming=s!==n,this.rotating=r!==h,this.pitching=p!==a,this._prepareEase(e,t.noMoveStart),clearTimeout(this._onEaseEnd),this._ease(function(t){if(this.zooming&&(o.zoom=interpolate(n,s,t)),this.rotating&&(o.bearing=interpolate(r,h,t)),this.pitching&&(o.pitch=interpolate(a,p,t)),f)o.setLocationAtPoint(f,g);else{var i=o.zoomScale(o.zoom-n),c=s>n?Math.min(2,v):Math.max(.5,v),m=Math.pow(c,1-t),b=o.unproject(d.add(l.mult(t*m)).mult(i));o.setLocationAtPoint(o.renderWorldCopies?b.wrap():b,u)}this._fireMoveEvents(e)},function(){t.delayEndEvents?i._onEaseEnd=setTimeout(function(){return i._easeToEnd(e)},t.delayEndEvents):i._easeToEnd(e)},t),this},e.prototype._prepareEase=function(t,e){this.moving=!0,e||this.fire(\"movestart\",t),this.zooming&&this.fire(\"zoomstart\",t),this.pitching&&this.fire(\"pitchstart\",t)},e.prototype._fireMoveEvents=function(t){this.fire(\"move\",t),this.zooming&&this.fire(\"zoom\",t),this.rotating&&this.fire(\"rotate\",t),this.pitching&&this.fire(\"pitch\",t)},e.prototype._easeToEnd=function(t){var e=this.zooming,i=this.pitching;this.moving=!1,this.zooming=!1,this.rotating=!1,this.pitching=!1,e&&this.fire(\"zoomend\",t),i&&this.fire(\"pitchend\",t),this.fire(\"moveend\",t)},e.prototype.flyTo=function(t,e){function i(t){var e=(M*M-z*z+(t?-1:1)*L*L*E*E)/(2*(t?M:z)*L*E);return Math.log(Math.sqrt(e*e+1)-e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function n(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/n(t)}var a=this;this.stop(),t=util.extend({offset:[0,0],speed:1.2,curve:1.42,easing:util.ease},t);var s=this.transform,h=this.getZoom(),p=this.getBearing(),u=this.getPitch(),c=\"zoom\"in t?util.clamp(+t.zoom,s.minZoom,s.maxZoom):h,m=\"bearing\"in t?this._normalizeBearing(t.bearing,p):p,f=\"pitch\"in t?+t.pitch:u,g=s.zoomScale(c-h),d=s.centerPoint.add(Point.convert(t.offset)),l=s.pointLocation(d),v=LngLat.convert(t.center||l);this._normalizeCenter(v);var b=s.project(l),y=s.project(v).sub(b),_=t.curve,z=Math.max(s.width,s.height),M=z/g,E=y.mag();if(\"minZoom\"in t){var T=util.clamp(Math.min(t.minZoom,h,c),s.minZoom,s.maxZoom),x=z/s.zoomScale(T-h);_=Math.sqrt(x/E*2)}var L=_*_,j=i(0),Z=function(t){return n(j)/n(j+_*t)},w=function(t){return z*((n(j)*r(j+_*t)-o(j))/L)/E},P=(i(1)-j)/_;if(Math.abs(E)<1e-6||isNaN(P)){if(Math.abs(z-M)<1e-6)return this.easeTo(t,e);var q=M<z?-1:1;P=Math.abs(Math.log(M/z))/_,w=function(){return 0},Z=function(t){return Math.exp(q*_*t)}}if(\"duration\"in t)t.duration=+t.duration;else{var B=\"screenSpeed\"in t?+t.screenSpeed/_:+t.speed;t.duration=1e3*P/B}return this.zooming=!0,this.rotating=p!==m,this.pitching=f!==u,this._prepareEase(e,!1),this._ease(function(t){var i=t*P,o=1/Z(i);s.zoom=h+s.scaleZoom(o),this.rotating&&(s.bearing=interpolate(p,m,t)),this.pitching&&(s.pitch=interpolate(u,f,t));var n=s.unproject(b.add(y.mult(w(i))).mult(o));s.setLocationAtPoint(s.renderWorldCopies?n.wrap():n,d),this._fireMoveEvents(e)},function(){return a._easeToEnd(e)},t),this},e.prototype.isEasing=function(){return!!this._abortFn},e.prototype.isMoving=function(){return this.moving},e.prototype.stop=function(){return this._abortFn&&(this._abortFn(),this._finishEase()),this},e.prototype._ease=function(t,e,i){this._finishFn=e,this._abortFn=browser.timed(function(e){t.call(this,i.easing(e)),1===e&&this._finishEase()},!1===i.animate?0:i.duration,this)},e.prototype._finishEase=function(){delete this._abortFn;var t=this._finishFn;delete this._finishFn,t.call(this)},e.prototype._normalizeBearing=function(t,e){t=util.wrap(t,-180,180);var i=Math.abs(t-e);return Math.abs(t-360-e)<i&&(t-=360),Math.abs(t+360-e)<i&&(t+=360),t},e.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0}},e.prototype._smoothOutEasing=function(t){var e=util.ease;if(this._prevEase){var i=this._prevEase,o=(Date.now()-i.start)/i.duration,n=i.easing(o+.01)-i.easing(o),r=.27/Math.sqrt(n*n+1e-4)*.01,a=Math.sqrt(.0729-r*r);e=util.bezier(r,a,.25,1)}return this._prevEase={start:(new Date).getTime(),duration:t,easing:e},e},e}(Evented);module.exports=Camera;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../style-spec/util/interpolate\":127,\"../util/browser\":202,\"../util/evented\":210,\"../util/util\":223,\"@mapbox/point-geometry\":2}],182:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),config=_dereq_(\"../../util/config\"),AttributionControl=function(t){this.options=t,util.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};AttributionControl.prototype.getDefaultPosition=function(){return\"bottom-right\"},AttributionControl.prototype.onAdd=function(t){var i=this.options&&this.options.compact;return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),i&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===i&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},AttributionControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0},AttributionControl.prototype._updateEditLink=function(){var t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:config.ACCESS_TOKEN}];if(t){var o=i.reduce(function(t,o,e){return o.value&&(t+=o.key+\"=\"+o.value+(e<i.length-1?\"&\":\"\")),t},\"?\");t.href=\"https://www.mapbox.com/feedback/\"+o+(this._map._hash?this._map._hash.getHashString(!0):\"\")}},AttributionControl.prototype._updateData=function(t){t&&\"metadata\"===t.sourceDataType&&(this._updateAttributions(),this._updateEditLink())},AttributionControl.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this._map.style.stylesheet){var i=this._map.style.stylesheet;this.styleOwner=i.owner,this.styleId=i.id}var o=this._map.style.sourceCaches;for(var e in o){var n=o[e].getSource();n.attribution&&t.indexOf(n.attribution)<0&&t.push(n.attribution)}t.sort(function(t,i){return t.length-i.length}),t=t.filter(function(i,o){for(var e=o+1;e<t.length;e++)if(t[e].indexOf(i)>=0)return!1;return!0}),this._container.innerHTML=t.join(\" | \"),this._editLink=null}},AttributionControl.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")},module.exports=AttributionControl;\n},{\"../../util/config\":206,\"../../util/dom\":209,\"../../util/util\":223}],183:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),FullscreenControl=function(){this._fullscreen=!1,util.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in window.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\"};FullscreenControl.prototype.onAdd=function(e){return this._map=e,this._mapContainer=this._map.getContainer(),this._container=DOM.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._container.style.display=\"none\",util.warnOnce(\"This device does not support fullscreen mode.\")),this._container},FullscreenControl.prototype.onRemove=function(){DOM.remove(this._container),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._checkFullscreenSupport=function(){return!!(window.document.fullscreenEnabled||window.document.mozFullScreenEnabled||window.document.msFullscreenEnabled||window.document.webkitFullscreenEnabled)},FullscreenControl.prototype._setupUI=function(){var e=this._fullscreenButton=DOM.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._container);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._changeIcon)},FullscreenControl.prototype._isFullscreen=function(){return this._fullscreen},FullscreenControl.prototype._changeIcon=function(){(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._mapContainer!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"))},FullscreenControl.prototype._onClickFullscreen=function(){this._isFullscreen()?window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen&&window.document.webkitCancelFullScreen():this._mapContainer.requestFullscreen?this._mapContainer.requestFullscreen():this._mapContainer.mozRequestFullScreen?this._mapContainer.mozRequestFullScreen():this._mapContainer.msRequestFullscreen?this._mapContainer.msRequestFullscreen():this._mapContainer.webkitRequestFullscreen&&this._mapContainer.webkitRequestFullscreen()},module.exports=FullscreenControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],184:[function(_dereq_,module,exports){\n\"use strict\";function checkGeolocationSupport(t){void 0!==supportsGeolocation?t(supportsGeolocation):void 0!==window.navigator.permissions?window.navigator.permissions.query({name:\"geolocation\"}).then(function(o){supportsGeolocation=\"denied\"!==o.state,t(supportsGeolocation)}):(supportsGeolocation=!!window.navigator.geolocation,t(supportsGeolocation))}var Evented=_dereq_(\"../../util/evented\"),DOM=_dereq_(\"../../util/dom\"),window=_dereq_(\"../../util/window\"),util=_dereq_(\"../../util/util\"),LngLat=_dereq_(\"../../geo/lng_lat\"),Marker=_dereq_(\"../marker\"),defaultOptions={positionOptions:{enableHighAccuracy:!1,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0},className=\"mapboxgl-ctrl\",supportsGeolocation,GeolocateControl=function(t){function o(o){t.call(this),this.options=util.extend({},defaultOptions,o),util.bindAll([\"_onSuccess\",\"_onError\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_onClickGeolocate\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",className+\" \"+className+\"-group\"),checkGeolocationSupport(this._setupUI),this._container},o.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker.remove(),DOM.remove(this._container),this._map=void 0},o.prototype._onSuccess=function(t){if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(\"geolocate\",t),this._finish()},o.prototype._updateCamera=function(t){var o=new LngLat(t.coords.longitude,t.coords.latitude),e=t.coords.accuracy;this._map.fitBounds(o.toBounds(e),this.options.fitBoundsOptions,{geolocateSource:!0})},o.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove()},o.prototype._onError=function(t){if(this.options.trackUserLocation)if(1===t.code)this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),void 0!==this._geolocationWatchID&&this._clearWatch();else switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(\"error\",t),this._finish()},o.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},o.prototype._setupUI=function(t){var o=this;!1!==t&&(this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._geolocateButton=DOM.create(\"button\",className+\"-icon \"+className+\"-geolocate\",this._container),this._geolocateButton.type=\"button\",this._geolocateButton.setAttribute(\"aria-label\",\"Geolocate\"),this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=DOM.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Marker(this._dotElement),this.options.trackUserLocation&&(this._watchState=\"OFF\")),this._geolocateButton.addEventListener(\"click\",this._onClickGeolocate.bind(this)),this.options.trackUserLocation&&this._map.on(\"movestart\",function(t){t.geolocateSource||\"ACTIVE_LOCK\"!==o._watchState||(o._watchState=\"BACKGROUND\",o._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),o._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),o.fire(\"trackuserlocationend\"))}))},o.prototype._onClickGeolocate=function(){if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(\"trackuserlocationstart\");break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(\"trackuserlocationend\");break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(\"trackuserlocationstart\")}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions))}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4)},o.prototype._clearWatch=function(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},o}(Evented);module.exports=GeolocateControl;\n},{\"../../geo/lng_lat\":58,\"../../util/dom\":209,\"../../util/evented\":210,\"../../util/util\":223,\"../../util/window\":204,\"../marker\":198}],185:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),LogoControl=function(){util.bindAll([\"_updateLogo\"],this)};LogoControl.prototype.onAdd=function(o){this._map=o,this._container=DOM.create(\"div\",\"mapboxgl-ctrl\");var t=DOM.create(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",\"Mapbox logo\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._container},LogoControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo)},LogoControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},LogoControl.prototype._updateLogo=function(o){o&&\"metadata\"!==o.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},LogoControl.prototype._logoRequired=function(){if(this._map.style){var o=this._map.style.sourceCaches;for(var t in o){if(o[t].getSource().mapbox_logo)return!0}return!1}},module.exports=LogoControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],186:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),DragRotateHandler=_dereq_(\"../handler/drag_rotate\"),NavigationControl=function(){var t=this;util.bindAll([\"_rotateCompassArrow\"],this),this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",function(t){return t.preventDefault()}),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-in\",\"Zoom In\",function(){return t._map.zoomIn()}),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-zoom-out\",\"Zoom Out\",function(){return t._map.zoomOut()}),this._compass=this._createButton(\"mapboxgl-ctrl-icon mapboxgl-ctrl-compass\",\"Reset North\",function(){return t._map.resetNorth()}),this._compassArrow=DOM.create(\"span\",\"mapboxgl-ctrl-compass-arrow\",this._compass)};NavigationControl.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t},NavigationControl.prototype.onAdd=function(t){return this._map=t,this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new DragRotateHandler(t,{button:\"left\",element:this._compass,pitchWithRotate:!1}),this._handler.enable(),this._container},NavigationControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"rotate\",this._rotateCompassArrow),delete this._map,this._handler.disable(),delete this._handler},NavigationControl.prototype._createButton=function(t,o,r){var e=DOM.create(\"button\",t,this._container);return e.type=\"button\",e.setAttribute(\"aria-label\",o),e.addEventListener(\"click\",r),e},module.exports=NavigationControl;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../handler/drag_rotate\":192}],187:[function(_dereq_,module,exports){\n\"use strict\";function updateScale(t,e,o){var n=o&&o.maxWidth||100,i=t._container.clientHeight/2,a=getDistance(t.unproject([0,i]),t.unproject([n,i]));if(o&&\"imperial\"===o.unit){var l=3.2808*a;if(l>5280){setScale(e,n,l/5280,\"mi\")}else setScale(e,n,l,\"ft\")}else if(o&&\"nautical\"===o.unit){var r=a/1852;setScale(e,n,r,\"nm\")}else setScale(e,n,a,\"m\")}function setScale(t,e,o,n){var i=getRoundNum(o),a=i/o;\"m\"===n&&i>=1e3&&(i/=1e3,n=\"km\"),t.style.width=e*a+\"px\",t.innerHTML=i+n}function getDistance(t,e){var o=Math.PI/180,n=t.lat*o,i=e.lat*o,a=Math.sin(n)*Math.sin(i)+Math.cos(n)*Math.cos(i)*Math.cos((e.lng-t.lng)*o);return 6371e3*Math.acos(Math.min(a,1))}function getRoundNum(t){var e=Math.pow(10,(\"\"+Math.floor(t)).length-1),o=t/e;return o=o>=10?10:o>=5?5:o>=3?3:o>=2?2:1,e*o}var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),ScaleControl=function(t){this.options=t,util.bindAll([\"_onMove\"],this)};ScaleControl.prototype.getDefaultPosition=function(){return\"bottom-left\"},ScaleControl.prototype._onMove=function(){updateScale(this._map,this._container,this.options)},ScaleControl.prototype.onAdd=function(t){return this._map=t,this._container=DOM.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},ScaleControl.prototype.onRemove=function(){DOM.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},module.exports=ScaleControl;\n},{\"../../util/dom\":209,\"../../util/util\":223}],188:[function(_dereq_,module,exports){\n\"use strict\";\n},{}],189:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),LngLatBounds=_dereq_(\"../../geo/lng_lat_bounds\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),BoxZoomHandler=function(o){this._map=o,this._el=o.getCanvasContainer(),this._container=o.getContainer(),util.bindAll([\"_onMouseDown\",\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this)};BoxZoomHandler.prototype.isEnabled=function(){return!!this._enabled},BoxZoomHandler.prototype.isActive=function(){return!!this._active},BoxZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.dragPan&&this._map.dragPan.disable(),this._el.addEventListener(\"mousedown\",this._onMouseDown,!1),this._map.dragPan&&this._map.dragPan.enable(),this._enabled=!0)},BoxZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onMouseDown),this._enabled=!1)},BoxZoomHandler.prototype._onMouseDown=function(o){o.shiftKey&&0===o.button&&(window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),window.document.addEventListener(\"keydown\",this._onKeyDown,!1),window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),DOM.disableDrag(),this._startPos=DOM.mousePos(this._el,o),this._active=!0)},BoxZoomHandler.prototype._onMouseMove=function(o){var e=this._startPos,t=DOM.mousePos(this._el,o);this._box||(this._box=DOM.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",o));var n=Math.min(e.x,t.x),i=Math.max(e.x,t.x),s=Math.min(e.y,t.y),a=Math.max(e.y,t.y);DOM.setTransform(this._box,\"translate(\"+n+\"px,\"+s+\"px)\"),this._box.style.width=i-n+\"px\",this._box.style.height=a-s+\"px\"},BoxZoomHandler.prototype._onMouseUp=function(o){if(0===o.button){var e=this._startPos,t=DOM.mousePos(this._el,o),n=(new LngLatBounds).extend(this._map.unproject(e)).extend(this._map.unproject(t));this._finish(),e.x===t.x&&e.y===t.y?this._fireEvent(\"boxzoomcancel\",o):this._map.fitBounds(n,{linear:!0}).fire(\"boxzoomend\",{originalEvent:o,boxZoomBounds:n})}},BoxZoomHandler.prototype._onKeyDown=function(o){27===o.keyCode&&(this._finish(),this._fireEvent(\"boxzoomcancel\",o))},BoxZoomHandler.prototype._finish=function(){this._active=!1,window.document.removeEventListener(\"mousemove\",this._onMouseMove,!1),window.document.removeEventListener(\"keydown\",this._onKeyDown,!1),window.document.removeEventListener(\"mouseup\",this._onMouseUp,!1),this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(DOM.remove(this._box),this._box=null),DOM.enableDrag()},BoxZoomHandler.prototype._fireEvent=function(o,e){return this._map.fire(o,{originalEvent:e})},module.exports=BoxZoomHandler;\n},{\"../../geo/lng_lat_bounds\":59,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],190:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../../util/util\"),DoubleClickZoomHandler=function(l){this._map=l,util.bindAll([\"_onDblClick\"],this)};DoubleClickZoomHandler.prototype.isEnabled=function(){return!!this._enabled},DoubleClickZoomHandler.prototype.enable=function(){this.isEnabled()||(this._map.on(\"dblclick\",this._onDblClick),this._enabled=!0)},DoubleClickZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._map.off(\"dblclick\",this._onDblClick),this._enabled=!1)},DoubleClickZoomHandler.prototype._onDblClick=function(l){this._map.zoomTo(this._map.getZoom()+(l.originalEvent.shiftKey?-1:1),{around:l.lngLat},l)},module.exports=DoubleClickZoomHandler;\n},{\"../../util/util\":223}],191:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.3,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=1400,inertiaDeceleration=2500,DragPanHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\",\"_onTouchEnd\",\"_onMouseUp\"],this)};DragPanHandler.prototype.isEnabled=function(){return!!this._enabled},DragPanHandler.prototype.isActive=function(){return!!this._active},DragPanHandler.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._el.addEventListener(\"mousedown\",this._onDown),this._el.addEventListener(\"touchstart\",this._onDown),this._enabled=!0)},DragPanHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._el.removeEventListener(\"mousedown\",this._onDown),this._el.removeEventListener(\"touchstart\",this._onDown),this._enabled=!1)},DragPanHandler.prototype._onDown=function(t){this._ignoreEvent(t)||this.isActive()||(t.touches?(window.document.addEventListener(\"touchmove\",this._onMove),window.document.addEventListener(\"touchend\",this._onTouchEnd)):(window.document.addEventListener(\"mousemove\",this._onMove),window.document.addEventListener(\"mouseup\",this._onMouseUp)),window.addEventListener(\"blur\",this._onMouseUp),this._active=!1,this._startPos=this._pos=DOM.mousePos(this._el,t),this._inertia=[[Date.now(),this._pos]])},DragPanHandler.prototype._onMove=function(t){if(!this._ignoreEvent(t)){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"dragstart\",t),this._fireEvent(\"movestart\",t));var e=DOM.mousePos(this._el,t),n=this._map;n.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),e]),n.transform.setLocationAtPoint(n.transform.pointLocation(this._pos),e),this._fireEvent(\"drag\",t),this._fireEvent(\"move\",t),this._pos=e,t.preventDefault()}},DragPanHandler.prototype._onUp=function(t){var e=this;if(this.isActive()){this._active=!1,this._fireEvent(\"dragend\",t),this._drainInertiaBuffer();var n=function(){e._map.moving=!1,e._fireEvent(\"moveend\",t)},i=this._inertia;if(i.length<2)return void n();var o=i[i.length-1],r=i[0],a=o[1].sub(r[1]),s=(o[0]-r[0])/1e3;if(0===s||o[1].equals(r[1]))return void n();var u=a.mult(inertiaLinearity/s),d=u.mag();d>inertiaMaxSpeed&&(d=inertiaMaxSpeed,u._unit()._mult(d));var h=d/(inertiaDeceleration*inertiaLinearity),v=u.mult(-h/2);this._map.panBy(v,{duration:1e3*h,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragPanHandler.prototype._onMouseUp=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"mousemove\",this._onMove),window.document.removeEventListener(\"mouseup\",this._onMouseUp),window.removeEventListener(\"blur\",this._onMouseUp))},DragPanHandler.prototype._onTouchEnd=function(t){this._ignoreEvent(t)||(this._onUp(t),window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onTouchEnd))},DragPanHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragPanHandler.prototype._ignoreEvent=function(t){var e=this._map;return!(!e.boxZoom||!e.boxZoom.isActive())||(!(!e.dragRotate||!e.dragRotate.isActive())||(t.touches?t.touches.length>1:!!t.ctrlKey||\"mousemove\"!==t.type&&t.button&&0!==t.button))},DragPanHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragPanHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],192:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.25,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=180,inertiaDeceleration=720,DragRotateHandler=function(t,e){this._map=t,this._el=e.element||t.getCanvasContainer(),this._button=e.button||\"right\",this._bearingSnap=e.bearingSnap||0,this._pitchWithRotate=!1!==e.pitchWithRotate,util.bindAll([\"_onDown\",\"_onMove\",\"_onUp\"],this)};DragRotateHandler.prototype.isEnabled=function(){return!!this._enabled},DragRotateHandler.prototype.isActive=function(){return!!this._active},DragRotateHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"mousedown\",this._onDown),this._enabled=!0)},DragRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"mousedown\",this._onDown),this._enabled=!1)},DragRotateHandler.prototype._onDown=function(t){if(!(this._map.boxZoom&&this._map.boxZoom.isActive()||this._map.dragPan&&this._map.dragPan.isActive()||this.isActive())){if(\"right\"===this._button){var e=t.ctrlKey?0:2,i=t.button;if(void 0!==window.InstallTrigger&&2===t.button&&t.ctrlKey&&window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0&&(i=0),i!==e)return}else if(t.ctrlKey||0!==t.button)return;DOM.disableDrag(),window.document.addEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.addEventListener(\"mouseup\",this._onUp),window.addEventListener(\"blur\",this._onUp),this._active=!1,this._inertia=[[Date.now(),this._map.getBearing()]],this._startPos=this._pos=DOM.mousePos(this._el,t),this._center=this._map.transform.centerPoint,t.preventDefault()}},DragRotateHandler.prototype._onMove=function(t){this.isActive()||(this._active=!0,this._map.moving=!0,this._fireEvent(\"rotatestart\",t),this._fireEvent(\"movestart\",t),this._pitchWithRotate&&this._fireEvent(\"pitchstart\",t));var e=this._map;e.stop();var i=this._pos,n=DOM.mousePos(this._el,t),r=.8*(i.x-n.x),a=-.5*(i.y-n.y),o=e.getBearing()-r,s=e.getPitch()-a,h=this._inertia,_=h[h.length-1];this._drainInertiaBuffer(),h.push([Date.now(),e._normalizeBearing(o,_[1])]),e.transform.bearing=o,this._pitchWithRotate&&(this._fireEvent(\"pitch\",t),e.transform.pitch=s),this._fireEvent(\"rotate\",t),this._fireEvent(\"move\",t),this._pos=n},DragRotateHandler.prototype._onUp=function(t){var e=this;if(window.document.removeEventListener(\"mousemove\",this._onMove,{capture:!0}),window.document.removeEventListener(\"mouseup\",this._onUp),window.removeEventListener(\"blur\",this._onUp),DOM.enableDrag(),this.isActive()){this._active=!1,this._fireEvent(\"rotateend\",t),this._drainInertiaBuffer();var i=this._map,n=i.getBearing(),r=this._inertia,a=function(){Math.abs(n)<e._bearingSnap?i.resetNorth({noMoveStart:!0},{originalEvent:t}):(e._map.moving=!1,e._fireEvent(\"moveend\",t)),e._pitchWithRotate&&e._fireEvent(\"pitchend\",t)};if(r.length<2)return void a();var o=r[0],s=r[r.length-1],h=r[r.length-2],_=i._normalizeBearing(n,h[1]),p=s[1]-o[1],v=p<0?-1:1,d=(s[0]-o[0])/1e3;if(0===p||0===d)return void a();var l=Math.abs(p*(inertiaLinearity/d));l>inertiaMaxSpeed&&(l=inertiaMaxSpeed);var u=l/(inertiaDeceleration*inertiaLinearity);_+=v*l*(u/2),Math.abs(i._normalizeBearing(_,0))<this._bearingSnap&&(_=i._normalizeBearing(0,_)),i.rotateTo(_,{duration:1e3*u,easing:inertiaEasing,noMoveStart:!0},{originalEvent:t})}},DragRotateHandler.prototype._fireEvent=function(t,e){return this._map.fire(t,{originalEvent:e})},DragRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>0&&e-t[0][0]>160;)t.shift()},module.exports=DragRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],193:[function(_dereq_,module,exports){\n\"use strict\";function easeOut(e){return e*(2-e)}var util=_dereq_(\"../../util/util\"),panStep=100,bearingStep=15,pitchStep=10,KeyboardHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onKeyDown\"],this)};KeyboardHandler.prototype.isEnabled=function(){return!!this._enabled},KeyboardHandler.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0)},KeyboardHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1)},KeyboardHandler.prototype._onKeyDown=function(e){if(!(e.altKey||e.ctrlKey||e.metaKey)){var t=0,a=0,n=0,r=0,i=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?a=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?a=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?n=1:(e.preventDefault(),i=-1);break;case 40:e.shiftKey?n=-1:(i=1,e.preventDefault());break;default:return}var s=this._map,o=s.getZoom(),l={duration:300,delayEndEvents:500,easing:easeOut,zoom:t?Math.round(o)+t*(e.shiftKey?2:1):o,bearing:s.getBearing()+a*bearingStep,pitch:s.getPitch()+n*pitchStep,offset:[-r*panStep,-i*panStep],center:s.getCenter()};s.easeTo(l,{originalEvent:e})}},module.exports=KeyboardHandler;\n},{\"../../util/util\":223}],194:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),browser=_dereq_(\"../../util/browser\"),window=_dereq_(\"../../util/window\"),ua=window.navigator.userAgent.toLowerCase(),firefox=-1!==ua.indexOf(\"firefox\"),safari=-1!==ua.indexOf(\"safari\")&&-1===ua.indexOf(\"chrom\"),ScrollZoomHandler=function(e){this._map=e,this._el=e.getCanvasContainer(),util.bindAll([\"_onWheel\",\"_onTimeout\"],this)};ScrollZoomHandler.prototype.isEnabled=function(){return!!this._enabled},ScrollZoomHandler.prototype.enable=function(e){this.isEnabled()||(this._el.addEventListener(\"wheel\",this._onWheel,!1),this._el.addEventListener(\"mousewheel\",this._onWheel,!1),this._enabled=!0,this._aroundCenter=e&&\"center\"===e.around)},ScrollZoomHandler.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"wheel\",this._onWheel),this._el.removeEventListener(\"mousewheel\",this._onWheel),this._enabled=!1)},ScrollZoomHandler.prototype._onWheel=function(e){var t=0;\"wheel\"===e.type?(t=e.deltaY,firefox&&e.deltaMode===window.WheelEvent.DOM_DELTA_PIXEL&&(t/=browser.devicePixelRatio),e.deltaMode===window.WheelEvent.DOM_DELTA_LINE&&(t*=40)):\"mousewheel\"===e.type&&(t=-e.wheelDeltaY,safari&&(t/=3));var o=browser.now(),i=o-(this._time||0);this._pos=DOM.mousePos(this._el,e),this._time=o,0!==t&&t%4.000244140625==0?this._type=\"wheel\":0!==t&&Math.abs(t)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40)):this._type||(this._type=Math.abs(i*t)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&this._zoom(-t,e),e.preventDefault()},ScrollZoomHandler.prototype._onTimeout=function(){this._type=\"wheel\",this._zoom(-this._lastValue)},ScrollZoomHandler.prototype._zoom=function(e,t){if(0!==e){var o=this._map,i=2/(1+Math.exp(-Math.abs(e/100)));e<0&&0!==i&&(i=1/i);var l=o.ease?o.ease.to:o.transform.scale,s=o.transform.scaleZoom(l*i);o.zoomTo(s,{duration:\"wheel\"===this._type?200:0,around:this._aroundCenter?o.getCenter():o.unproject(this._pos),delayEndEvents:200,smoothEasing:!0},{originalEvent:t})}},module.exports=ScrollZoomHandler;\n},{\"../../util/browser\":202,\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],195:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../../util/dom\"),util=_dereq_(\"../../util/util\"),window=_dereq_(\"../../util/window\"),inertiaLinearity=.15,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaDeceleration=12,inertiaMaxSpeed=2.5,significantScaleThreshold=.15,significantRotateThreshold=10,TouchZoomRotateHandler=function(t){this._map=t,this._el=t.getCanvasContainer(),util.bindAll([\"_onStart\",\"_onMove\",\"_onEnd\"],this)};TouchZoomRotateHandler.prototype.isEnabled=function(){return!!this._enabled},TouchZoomRotateHandler.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._el.addEventListener(\"touchstart\",this._onStart,!1),this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},TouchZoomRotateHandler.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._el.removeEventListener(\"touchstart\",this._onStart),this._enabled=!1)},TouchZoomRotateHandler.prototype.disableRotation=function(){this._rotationDisabled=!0},TouchZoomRotateHandler.prototype.enableRotation=function(){this._rotationDisabled=!1},TouchZoomRotateHandler.prototype._onStart=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]);this._startVec=e.sub(o),this._startScale=this._map.transform.scale,this._startBearing=this._map.transform.bearing,this._gestureIntent=void 0,this._inertia=[],window.document.addEventListener(\"touchmove\",this._onMove,!1),window.document.addEventListener(\"touchend\",this._onEnd,!1)}},TouchZoomRotateHandler.prototype._onMove=function(t){if(2===t.touches.length){var e=DOM.mousePos(this._el,t.touches[0]),o=DOM.mousePos(this._el,t.touches[1]),i=e.add(o).div(2),n=e.sub(o),a=n.mag()/this._startVec.mag(),r=this._rotationDisabled?0:180*n.angleWith(this._startVec)/Math.PI,s=this._map;if(this._gestureIntent){var h={duration:0,around:s.unproject(i)};\"rotate\"===this._gestureIntent&&(h.bearing=this._startBearing+r),\"zoom\"!==this._gestureIntent&&\"rotate\"!==this._gestureIntent||(h.zoom=s.transform.scaleZoom(this._startScale*a)),s.stop(),this._drainInertiaBuffer(),this._inertia.push([Date.now(),a,i]),s.easeTo(h,{originalEvent:t})}else{var u=Math.abs(1-a)>significantScaleThreshold;Math.abs(r)>significantRotateThreshold?this._gestureIntent=\"rotate\":u&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._startVec=n,this._startScale=s.transform.scale,this._startBearing=s.transform.bearing)}t.preventDefault()}},TouchZoomRotateHandler.prototype._onEnd=function(t){window.document.removeEventListener(\"touchmove\",this._onMove),window.document.removeEventListener(\"touchend\",this._onEnd),this._drainInertiaBuffer();var e=this._inertia,o=this._map;if(e.length<2)return void o.snapToNorth({},{originalEvent:t});var i=e[e.length-1],n=e[0],a=o.transform.scaleZoom(this._startScale*i[1]),r=o.transform.scaleZoom(this._startScale*n[1]),s=a-r,h=(i[0]-n[0])/1e3,u=i[2];if(0===h||a===r)return void o.snapToNorth({},{originalEvent:t});var l=s*inertiaLinearity/h;Math.abs(l)>inertiaMaxSpeed&&(l=l>0?inertiaMaxSpeed:-inertiaMaxSpeed);var d=1e3*Math.abs(l/(inertiaDeceleration*inertiaLinearity)),c=a+l*d/2e3;c<0&&(c=0),o.easeTo({zoom:c,duration:d,easing:inertiaEasing,around:this._aroundCenter?o.getCenter():o.unproject(u)},{originalEvent:t})},TouchZoomRotateHandler.prototype._drainInertiaBuffer=function(){for(var t=this._inertia,e=Date.now();t.length>2&&e-t[0][0]>160;)t.shift()},module.exports=TouchZoomRotateHandler;\n},{\"../../util/dom\":209,\"../../util/util\":223,\"../../util/window\":204}],196:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"../util/util\"),window=_dereq_(\"../util/window\"),Hash=function(){util.bindAll([\"_onHashChange\",\"_updateHash\"],this)};Hash.prototype.addTo=function(t){return this._map=t,window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},Hash.prototype.remove=function(){return window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),delete this._map,this},Hash.prototype.getHashString=function(t){var a=this._map.getCenter(),h=Math.round(100*this._map.getZoom())/100,e=Math.max(0,Math.ceil(Math.log(h)/Math.LN2)),n=Math.round(a.lng*Math.pow(10,e))/Math.pow(10,e),o=Math.round(a.lat*Math.pow(10,e))/Math.pow(10,e),i=this._map.getBearing(),s=this._map.getPitch(),r=\"\";return r+=t?\"#/\"+n+\"/\"+o+\"/\"+h:\"#\"+h+\"/\"+o+\"/\"+n,(i||s)&&(r+=\"/\"+Math.round(10*i)/10),s&&(r+=\"/\"+Math.round(s)),r},Hash.prototype._onHashChange=function(){var t=window.location.hash.replace(\"#\",\"\").split(\"/\");return t.length>=3&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0),pitch:+(t[4]||0)}),!0)},Hash.prototype._updateHash=function(){var t=this.getHashString();window.history.replaceState(\"\",\"\",t)},module.exports=Hash;\n},{\"../util/util\":223,\"../util/window\":204}],197:[function(_dereq_,module,exports){\n\"use strict\";function removeNode(t){t.parentNode&&t.parentNode.removeChild(t)}var util=_dereq_(\"../util/util\"),browser=_dereq_(\"../util/browser\"),window=_dereq_(\"../util/window\"),ref=_dereq_(\"../util/window\"),HTMLImageElement=ref.HTMLImageElement,DOM=_dereq_(\"../util/dom\"),ajax=_dereq_(\"../util/ajax\"),Style=_dereq_(\"../style/style\"),AnimationLoop=_dereq_(\"../style/animation_loop\"),Painter=_dereq_(\"../render/painter\"),Transform=_dereq_(\"../geo/transform\"),Hash=_dereq_(\"./hash\"),bindHandlers=_dereq_(\"./bind_handlers\"),Camera=_dereq_(\"./camera\"),LngLat=_dereq_(\"../geo/lng_lat\"),LngLatBounds=_dereq_(\"../geo/lng_lat_bounds\"),Point=_dereq_(\"@mapbox/point-geometry\"),AttributionControl=_dereq_(\"./control/attribution_control\"),LogoControl=_dereq_(\"./control/logo_control\"),isSupported=_dereq_(\"mapbox-gl-supported\");_dereq_(\"./events\");var defaultMinZoom=0,defaultMaxZoom=22,defaultOptions={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:defaultMinZoom,maxZoom:defaultMaxZoom,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,transformRequest:null},Map=function(t){function e(e){var o=this;if(e=util.extend({},defaultOptions,e),null!=e.minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var r=new Transform(e.minZoom,e.maxZoom,e.renderWorldCopies);t.call(this,r,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles;var i=e.transformRequest;if(this._transformRequest=i?function(t,e){return i(t,e)||{url:t}}:function(t){return{url:t}},\"string\"==typeof e.container){var s=window.document.getElementById(e.container);if(!s)throw new Error(\"Container '\"+e.container+\"' not found.\");this._container=s}else this._container=e.container;this.animationLoop=new AnimationLoop,e.maxBounds&&this.setMaxBounds(e.maxBounds),util.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\",\"_update\",\"_render\",\"_onData\",\"_onDataLoading\"],this),this._setupContainer(),this._setupPainter(),this.on(\"move\",this._update.bind(this,!1)),this.on(\"zoom\",this._update.bind(this,!0)),this.on(\"moveend\",function(){o.animationLoop.set(300),o._rerender()}),void 0!==window&&(window.addEventListener(\"online\",this._onWindowOnline,!1),window.addEventListener(\"resize\",this._onWindowResize,!1)),bindHandlers(this,e),this._hash=e.hash&&(new Hash).addTo(this),this._hash&&this._hash._onHashChange()||this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),this._classes=[],this.resize(),e.classes&&this.setClasses(e.classes),e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new AttributionControl),this.addControl(new LogoControl,e.logoPosition),this.on(\"style.load\",function(){this.transform.unmodified&&this.jumpTo(this.style.stylesheet),this.style.update(this._classes,{transition:!1})}),this.on(\"data\",this._onData),this.on(\"dataloading\",this._onDataLoading)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var o={showTileBoundaries:{},showCollisionBoxes:{},showOverdrawInspector:{},repaint:{},vertices:{}};return e.prototype.addControl=function(t,e){void 0===e&&t.getDefaultPosition&&(e=t.getDefaultPosition()),void 0===e&&(e=\"top-right\");var o=t.onAdd(this),r=this._controlPositions[e];return-1!==e.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this},e.prototype.removeControl=function(t){return t.onRemove(this),this},e.prototype.addClass=function(t,e){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0||\"\"===t?this:(this._classes.push(t),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.removeClass=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");var o=this._classes.indexOf(t);return o<0||\"\"===t?this:(this._classes.splice(o,1),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0))},e.prototype.setClasses=function(t,e){util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\");for(var o={},r=0;r<t.length;r++)\"\"!==t[r]&&(o[t[r]]=!0);return this._classes=Object.keys(o),this._classOptions=e,this.style&&this.style.updateClasses(),this._update(!0)},e.prototype.hasClass=function(t){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes.indexOf(t)>=0},e.prototype.getClasses=function(){return util.warnOnce(\"Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.\"),this._classes},e.prototype.resize=function(){var t=this._containerDimensions(),e=t[0],o=t[1];return this._resizeCanvas(e,o),this.transform.resize(e,o),this.painter.resize(e,o),this.fire(\"movestart\").fire(\"move\").fire(\"resize\").fire(\"moveend\")},e.prototype.getBounds=function(){var t=new LngLatBounds(this.transform.pointLocation(new Point(0,this.transform.height)),this.transform.pointLocation(new Point(this.transform.width,0)));return(this.transform.angle||this.transform.pitch)&&(t.extend(this.transform.pointLocation(new Point(this.transform.size.x,0))),t.extend(this.transform.pointLocation(new Point(0,this.transform.size.y)))),t},e.prototype.getMaxBounds=function(){return this.transform.latRange&&2===this.transform.latRange.length&&this.transform.lngRange&&2===this.transform.lngRange.length?new LngLatBounds([this.transform.lngRange[0],this.transform.latRange[0]],[this.transform.lngRange[1],this.transform.latRange[1]]):null},e.prototype.setMaxBounds=function(t){if(t){var e=LngLatBounds.convert(t);this.transform.lngRange=[e.getWest(),e.getEast()],this.transform.latRange=[e.getSouth(),e.getNorth()],this.transform._constrain(),this._update()}else null!==t&&void 0!==t||(this.transform.lngRange=null,this.transform.latRange=null,this._update());return this},e.prototype.setMinZoom=function(t){if((t=null===t||void 0===t?defaultMinZoom:t)>=defaultMinZoom&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between \"+defaultMinZoom+\" and the current maxZoom, inclusive\")},e.prototype.getMinZoom=function(){return this.transform.minZoom},e.prototype.setMaxZoom=function(t){if((t=null===t||void 0===t?defaultMaxZoom:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},e.prototype.getMaxZoom=function(){return this.transform.maxZoom},e.prototype.project=function(t){return this.transform.locationPoint(LngLat.convert(t))},e.prototype.unproject=function(t){return this.transform.pointLocation(Point.convert(t))},e.prototype.on=function(e,o,r){var i=this;if(void 0===r)return t.prototype.on.call(this,e,o);var s=function(){if(\"mouseenter\"===e||\"mouseover\"===e){var t=!1;return{layer:o,listener:r,delegates:{mousemove:function(s){var n=i.getLayer(o)?i.queryRenderedFeatures(s.point,{layers:[o]}):[];n.length?t||(t=!0,r.call(i,util.extend({features:n},s,{type:e}))):t=!1},mouseout:function(){t=!1}}}}if(\"mouseleave\"===e||\"mouseout\"===e){var s=!1;return{layer:o,listener:r,delegates:{mousemove:function(t){(i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[]).length?s=!0:s&&(s=!1,r.call(i,util.extend({},t,{type:e})))},mouseout:function(t){s&&(s=!1,r.call(i,util.extend({},t,{type:e})))}}}}var n=function(t){var e=i.getLayer(o)?i.queryRenderedFeatures(t.point,{layers:[o]}):[];e.length&&r.call(i,util.extend({features:e},t))};return{layer:o,listener:r,delegates:(a={},a[e]=n,a)};var a}();this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(s);for(var n in s.delegates)i.on(n,s.delegates[n]);return this},e.prototype.off=function(e,o,r){var i=this;if(void 0===r)return t.prototype.off.call(this,e,o);if(this._delegatedListeners&&this._delegatedListeners[e])for(var s=this._delegatedListeners[e],n=0;n<s.length;n++){var a=s[n];if(a.layer===o&&a.listener===r){for(var h in a.delegates)i.off(h,a.delegates[h]);return s.splice(n,1),i}}return this},e.prototype.queryRenderedFeatures=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var o,r={};return 2===t.length?(o=arguments[0],r=arguments[1]):1===t.length&&function(t){return t instanceof Point||Array.isArray(t)}(t[0])?o=t[0]:1===t.length&&(r=t[0]),this.style?this.style.queryRenderedFeatures(this._makeQueryGeometry(o),r,this.transform.zoom,this.transform.angle):[]},e.prototype._makeQueryGeometry=function(t){var e=this;void 0===t&&(t=[Point.convert([0,0]),Point.convert([this.transform.width,this.transform.height])]);var o;if(t instanceof Point||\"number\"==typeof t[0]){o=[Point.convert(t)]}else{var r=[Point.convert(t[0]),Point.convert(t[1])];o=[r[0],new Point(r[1].x,r[0].y),r[1],new Point(r[0].x,r[1].y),r[0]]}return o=o.map(function(t){return e.transform.pointCoordinate(t)})},e.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},e.prototype.setStyle=function(t,e){if((!e||!1!==e.diff&&!e.localIdeographFontFamily)&&this.style&&t&&!(t instanceof Style)&&\"string\"!=typeof t)try{return this.style.setState(t)&&this._update(!0),this}catch(t){util.warnOnce(\"Unable to perform style diff: \"+(t.message||t.error||t)+\". Rebuilding the style from scratch.\")}return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.off(\"rotate\",this.style._redoPlacement),this.off(\"pitch\",this.style._redoPlacement),this.off(\"move\",this.style._redoPlacement)),t?(this.style=t instanceof Style?t:new Style(t,this,e||{}),this.style.setEventedParent(this,{style:this.style}),this.on(\"rotate\",this.style._redoPlacement),this.on(\"pitch\",this.style._redoPlacement),this.on(\"move\",this.style._redoPlacement),this):(this.style=null,this)},e.prototype.getStyle=function(){if(this.style)return this.style.serialize()},e.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():util.warnOnce(\"There is no style added to the map.\")},e.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0),this},e.prototype.isSourceLoaded=function(t){var e=this.style&&this.style.sourceCaches[t];return void 0===e?void this.fire(\"error\",{error:new Error(\"There is no source with ID '\"+t+\"'\")}):e.loaded()},e.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var o=t[e],r=o._tiles;for(var i in r){var s=r[i];if(\"loaded\"!==s.state&&\"errored\"!==s.state)return!1}}return!0},e.prototype.addSourceType=function(t,e,o){return this.style.addSourceType(t,e,o)},e.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0),this},e.prototype.getSource=function(t){return this.style.getSource(t)},e.prototype.addImage=function(t,e,o){void 0===o&&(o={});var r=o.pixelRatio;void 0===r&&(r=1);var i=o.sdf;if(void 0===i&&(i=!1),e instanceof HTMLImageElement)e=browser.getImageData(e);else if(void 0===e.width||void 0===e.height)return this.fire(\"error\",{error:new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")});this.style.addImage(t,{data:e,pixelRatio:r,sdf:i})},e.prototype.removeImage=function(t){this.style.removeImage(t)},e.prototype.loadImage=function(t,e){ajax.getImage(this._transformRequest(t,ajax.ResourceType.Image),e)},e.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0),this},e.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0),this},e.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0),this},e.prototype.getLayer=function(t){return this.style.getLayer(t)},e.prototype.setFilter=function(t,e){return this.style.setFilter(t,e),this._update(!0),this},e.prototype.setLayerZoomRange=function(t,e,o){return this.style.setLayerZoomRange(t,e,o),this._update(!0),this},e.prototype.getFilter=function(t){return this.style.getFilter(t)},e.prototype.setPaintProperty=function(t,e,o,r){return this.style.setPaintProperty(t,e,o,r),this._update(!0),this},e.prototype.getPaintProperty=function(t,e,o){return this.style.getPaintProperty(t,e,o)},e.prototype.setLayoutProperty=function(t,e,o){return this.style.setLayoutProperty(t,e,o),this._update(!0),this},e.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},e.prototype.setLight=function(t){return this.style.setLight(t),this._update(!0),this},e.prototype.getLight=function(){return this.style.getLight()},e.prototype.getContainer=function(){return this._container},e.prototype.getCanvasContainer=function(){return this._canvasContainer},e.prototype.getCanvas=function(){return this._canvas},e.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.offsetWidth||400,e=this._container.offsetHeight||300),[t,e]},e.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\");var e=this._canvasContainer=DOM.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=DOM.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.style.position=\"absolute\",this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\");var o=this._containerDimensions();this._resizeCanvas(o[0],o[1]);var r=this._controlContainer=DOM.create(\"div\",\"mapboxgl-control-container\",t),i=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(function(t){i[t]=DOM.create(\"div\",\"mapboxgl-ctrl-\"+t,r)})},e.prototype._resizeCanvas=function(t,e){var o=window.devicePixelRatio||1;this._canvas.width=o*t,this._canvas.height=o*e,this._canvas.style.width=t+\"px\",this._canvas.style.height=e+\"px\"},e.prototype._setupPainter=function(){var t=util.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},isSupported.webGLContextAttributes),e=this._canvas.getContext(\"webgl\",t)||this._canvas.getContext(\"experimental-webgl\",t);if(!e)return void this.fire(\"error\",{error:new Error(\"Failed to initialize WebGL\")});this.painter=new Painter(e,this.transform)},e.prototype._contextLost=function(t){t.preventDefault(),this._frameId&&(browser.cancelFrame(this._frameId),this._frameId=null),this.fire(\"webglcontextlost\",{originalEvent:t})},e.prototype._contextRestored=function(t){this._setupPainter(),this.resize(),this._update(),this.fire(\"webglcontextrestored\",{originalEvent:t})},e.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!(!this.style||!this.style.loaded())},e.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this._rerender(),this):this},e.prototype._render=function(){return this.style&&this._styleDirty&&(this._styleDirty=!1,this.style.update(this._classes,this._classOptions),this._classOptions=null,this.style._recalculate(this.transform.zoom)),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.rotating,zooming:this.zooming}),this.fire(\"render\"),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(\"load\")),this._frameId=null,this.animationLoop.stopped()||(this._styleDirty=!0),(this._sourcesDirty||this._repaint||this._styleDirty)&&this._rerender(),this},e.prototype.remove=function(){this._hash&&this._hash.remove(),browser.cancelFrame(this._frameId),this._frameId=null,this.setStyle(null),void 0!==window&&(window.removeEventListener(\"resize\",this._onWindowResize,!1),window.removeEventListener(\"online\",this._onWindowOnline,!1));var t=this.painter.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),removeNode(this._canvasContainer),removeNode(this._controlContainer),this._container.classList.remove(\"mapboxgl-map\"),this.fire(\"remove\")},e.prototype._rerender=function(){this.style&&!this._frameId&&(this._frameId=browser.frame(this._render))},e.prototype._onWindowOnline=function(){this._update()},e.prototype._onWindowResize=function(){this._trackResize&&this.stop().resize()._update()},o.showTileBoundaries.get=function(){return!!this._showTileBoundaries},o.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},o.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},o.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,this.style._redoPlacement())},o.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},o.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},o.repaint.get=function(){return!!this._repaint},o.repaint.set=function(t){this._repaint=t,this._update()},o.vertices.get=function(){return!!this._vertices},o.vertices.set=function(t){this._vertices=t,this._update()},e.prototype._onData=function(t){this._update(\"style\"===t.dataType),this.fire(t.dataType+\"data\",t)},e.prototype._onDataLoading=function(t){this.fire(t.dataType+\"dataloading\",t)},Object.defineProperties(e.prototype,o),e}(Camera);module.exports=Map;\n},{\"../geo/lng_lat\":58,\"../geo/lng_lat_bounds\":59,\"../geo/transform\":60,\"../render/painter\":79,\"../style/animation_loop\":150,\"../style/style\":156,\"../util/ajax\":201,\"../util/browser\":202,\"../util/dom\":209,\"../util/util\":223,\"../util/window\":204,\"./bind_handlers\":180,\"./camera\":181,\"./control/attribution_control\":182,\"./control/logo_control\":185,\"./events\":188,\"./hash\":196,\"@mapbox/point-geometry\":2,\"mapbox-gl-supported\":28}],198:[function(_dereq_,module,exports){\n\"use strict\";var DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),smartWrap=_dereq_(\"../util/smart_wrap\"),ref=_dereq_(\"../util/util\"),bindAll=ref.bindAll,Marker=function(t,e){this._offset=Point.convert(e&&e.offset||[0,0]),bindAll([\"_update\",\"_onMapClick\"],this),t||(t=DOM.create(\"div\")),t.classList.add(\"mapboxgl-marker\"),this._element=t,this._popup=null};Marker.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this._update(),this._map.on(\"click\",this._onMapClick),this},Marker.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),delete this._map),DOM.remove(this._element),this._popup&&this._popup.remove(),this},Marker.prototype.getLngLat=function(){return this._lngLat},Marker.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},Marker.prototype.getElement=function(){return this._element},Marker.prototype.setPopup=function(t){return this._popup&&(this._popup.remove(),this._popup=null),t&&(\"offset\"in t.options||(t.options.offset=this._offset),this._popup=t,this._popup.setLngLat(this._lngLat)),this},Marker.prototype._onMapClick=function(t){var e=t.originalEvent.target,p=this._element;this._popup&&(e===p||p.contains(e))&&this.togglePopup()},Marker.prototype.getPopup=function(){return this._popup},Marker.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},Marker.prototype._update=function(t){this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),DOM.setTransform(this._element,\"translate(-50%, -50%) translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px)\"))},module.exports=Marker;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/smart_wrap\":219,\"../util/util\":223,\"@mapbox/point-geometry\":2}],199:[function(_dereq_,module,exports){\n\"use strict\";function normalizeOffset(t){if(t){if(\"number\"==typeof t){var o=Math.round(Math.sqrt(.5*Math.pow(t,2)));return{top:new Point(0,t),\"top-left\":new Point(o,o),\"top-right\":new Point(-o,o),bottom:new Point(0,-t),\"bottom-left\":new Point(o,-o),\"bottom-right\":new Point(-o,-o),left:new Point(t,0),right:new Point(-t,0)}}if(t instanceof Point||Array.isArray(t)){var e=Point.convert(t);return{top:e,\"top-left\":e,\"top-right\":e,bottom:e,\"bottom-left\":e,\"bottom-right\":e,left:e,right:e}}return{top:Point.convert(t.top||[0,0]),\"top-left\":Point.convert(t[\"top-left\"]||[0,0]),\"top-right\":Point.convert(t[\"top-right\"]||[0,0]),bottom:Point.convert(t.bottom||[0,0]),\"bottom-left\":Point.convert(t[\"bottom-left\"]||[0,0]),\"bottom-right\":Point.convert(t[\"bottom-right\"]||[0,0]),left:Point.convert(t.left||[0,0]),right:Point.convert(t.right||[0,0])}}return normalizeOffset(new Point(0,0))}var util=_dereq_(\"../util/util\"),Evented=_dereq_(\"../util/evented\"),DOM=_dereq_(\"../util/dom\"),LngLat=_dereq_(\"../geo/lng_lat\"),Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"../util/window\"),smartWrap=_dereq_(\"../util/smart_wrap\"),defaultOptions={closeButton:!0,closeOnClick:!0},Popup=function(t){function o(o){t.call(this),this.options=util.extend(Object.create(defaultOptions),o),util.bindAll([\"_update\",\"_onClickClose\"],this)}return t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o,o.prototype.addTo=function(t){return this._map=t,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._update(),this},o.prototype.isOpen=function(){return!!this._map},o.prototype.remove=function(){return this._content&&DOM.remove(this._content),this._container&&(DOM.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),delete this._map),this.fire(\"close\"),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(t){return this._lngLat=LngLat.convert(t),this._pos=null,this._update(),this},o.prototype.setText=function(t){return this.setDOMContent(window.document.createTextNode(t))},o.prototype.setHTML=function(t){var o,e=window.document.createDocumentFragment(),n=window.document.createElement(\"body\");for(n.innerHTML=t;;){if(!(o=n.firstChild))break;e.appendChild(o)}return this.setDOMContent(e)},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype._createContent=function(){this._content&&DOM.remove(this._content),this._content=DOM.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=DOM.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClickClose))},o.prototype._update=function(){if(this._map&&this._lngLat&&this._content){this._container||(this._container=DOM.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=DOM.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content)),this._map.transform.renderWorldCopies&&(this._lngLat=smartWrap(this._lngLat,this._pos,this._map.transform));var t=this._pos=this._map.project(this._lngLat),o=this.options.anchor,e=normalizeOffset(this.options.offset);if(!o){var n=this._container.offsetWidth,i=this._container.offsetHeight;o=t.y+e.bottom.y<i?[\"top\"]:t.y>this._map.transform.height-i?[\"bottom\"]:[],t.x<n/2?o.push(\"left\"):t.x>this._map.transform.width-n/2&&o.push(\"right\"),o=0===o.length?\"bottom\":o.join(\"-\")}var r=t.add(e[o]).round(),s={top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"},p=this._container.classList;for(var a in s)p.remove(\"mapboxgl-popup-anchor-\"+a);p.add(\"mapboxgl-popup-anchor-\"+o),DOM.setTransform(this._container,s[o]+\" translate(\"+r.x+\"px,\"+r.y+\"px)\")}},o.prototype._onClickClose=function(){this.remove()},o}(Evented);module.exports=Popup;\n},{\"../geo/lng_lat\":58,\"../util/dom\":209,\"../util/evented\":210,\"../util/smart_wrap\":219,\"../util/util\":223,\"../util/window\":204,\"@mapbox/point-geometry\":2}],200:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,util.bindAll([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1)};Actor.prototype.send=function(t,e,r,a,i){var s=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[s]=r),this.target.postMessage({targetMapId:i,sourceMapId:this.mapId,type:t,id:String(s),data:e},a)},Actor.prototype.receive=function(t){var e,r=this,a=t.data,i=a.id;if(!a.targetMapId||this.mapId===a.targetMapId){var s=function(t,e,a){r.target.postMessage({sourceMapId:r.mapId,type:\"<response>\",id:String(i),error:t?String(t):null,data:e},a)};if(\"<response>\"===a.type)e=this.callbacks[a.id],delete this.callbacks[a.id],e&&a.error?e(new Error(a.error)):e&&e(null,a.data);else if(void 0!==a.id&&this.parent[a.type])this.parent[a.type](a.sourceMapId,a.data,s);else if(void 0!==a.id&&this.parent.getWorkerSource){var o=a.type.split(\".\"),p=this.parent.getWorkerSource(a.sourceMapId,o[0]);p[o[1]](a.data,s)}else this.parent[a.type](a.data)}},Actor.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1)},module.exports=Actor;\n},{\"./util\":223}],201:[function(_dereq_,module,exports){\n\"use strict\";function makeRequest(e){var t=new window.XMLHttpRequest;t.open(\"GET\",e.url,!0);for(var r in e.headers)t.setRequestHeader(r,e.headers[r]);return t.withCredentials=\"include\"===e.credentials,t}function sameOrigin(e){var t=window.document.createElement(\"a\");return t.href=e,t.protocol===window.document.location.protocol&&t.host===window.document.location.host}var window=_dereq_(\"./window\"),ResourceType={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};exports.ResourceType=ResourceType,\"function\"==typeof Object.freeze&&Object.freeze(ResourceType);var AJAXError=function(e){function t(t,r){e.call(this,t),this.status=r}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(Error);exports.getJSON=function(e,t){var r=makeRequest(e);return r.setRequestHeader(\"Accept\",\"application/json\"),r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){if(r.status>=200&&r.status<300&&r.response){var e;try{e=JSON.parse(r.response)}catch(e){return t(e)}t(null,e)}else t(new AJAXError(r.statusText,r.status))},r.send(),r},exports.getArrayBuffer=function(e,t){var r=makeRequest(e);return r.responseType=\"arraybuffer\",r.onerror=function(){t(new Error(r.statusText))},r.onload=function(){var e=r.response;if(0===e.byteLength&&200===r.status)return t(new Error(\"http status 200 returned without content.\"));r.status>=200&&r.status<300&&r.response?t(null,{data:e,cacheControl:r.getResponseHeader(\"Cache-Control\"),expires:r.getResponseHeader(\"Expires\")}):t(new AJAXError(r.statusText,r.status))},r.send(),r};var transparentPngUrl=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";exports.getImage=function(e,t){return exports.getArrayBuffer(e,function(e,r){if(e)t(e);else if(r){var n=new window.Image,o=window.URL||window.webkitURL;n.onload=function(){t(null,n),o.revokeObjectURL(n.src)};var s=new window.Blob([new Uint8Array(r.data)],{type:\"image/png\"});n.cacheControl=r.cacheControl,n.expires=r.expires,n.src=r.data.byteLength?o.createObjectURL(s):transparentPngUrl}})},exports.getVideo=function(e,t){var r=window.document.createElement(\"video\");r.onloadstart=function(){t(null,r)};for(var n=0;n<e.length;n++){var o=window.document.createElement(\"source\");sameOrigin(e[n])||(r.crossOrigin=\"Anonymous\"),o.src=e[n],r.appendChild(o)}return r};\n},{\"./window\":204}],202:[function(_dereq_,module,exports){\n\"use strict\";var window=_dereq_(\"./window\"),now=window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now.bind(Date),frame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,cancel=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame;module.exports={now:now,frame:function(e){return frame(e)},cancelFrame:function(e){return cancel(e)},timed:function(e,n,t){function a(){if(!i){var r=now();r>=o+n?e.call(t,1):(e.call(t,(r-o)/n),frame(a))}}if(!n)return e.call(t,1),null;var i=!1,o=now();return frame(a),function(){i=!0}},getImageData:function(e){var n=window.document.createElement(\"canvas\"),t=n.getContext(\"2d\");if(!t)throw new Error(\"failed to create canvas 2d context\");return n.width=e.width,n.height=e.height,t.drawImage(e,0,0,e.width,e.height),t.getImageData(0,0,e.width,e.height)},hardwareConcurrency:window.navigator.hardwareConcurrency||4,get devicePixelRatio(){return window.devicePixelRatio},supportsWebp:!1};var webpImgTest=window.document.createElement(\"img\");webpImgTest.onload=function(){module.exports.supportsWebp=!0},webpImgTest.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\";\n},{\"./window\":204}],203:[function(_dereq_,module,exports){\n\"use strict\";var WebWorkify=_dereq_(\"webworkify\"),window=_dereq_(\"../window\"),workerURL=window.URL.createObjectURL(new WebWorkify(_dereq_(\"../../source/worker\"),{bare:!0}));module.exports=function(){return new window.Worker(workerURL)};\n},{\"../../source/worker\":105,\"../window\":204,\"webworkify\":39}],204:[function(_dereq_,module,exports){\n\"use strict\";module.exports=self;\n},{}],205:[function(_dereq_,module,exports){\n\"use strict\";function compareAreas(e,r){return r.area-e.area}var quickselect=_dereq_(\"quickselect\"),calculateSignedArea=_dereq_(\"./util\").calculateSignedArea;module.exports=function(e,r){var a=e.length;if(a<=1)return[e];for(var t,u,c=[],i=0;i<a;i++){var l=calculateSignedArea(e[i]);0!==l&&(e[i].area=Math.abs(l),void 0===u&&(u=l<0),u===l<0?(t&&c.push(t),t=[e[i]]):t.push(e[i]))}if(t&&c.push(t),r>1)for(var n=0;n<c.length;n++)c[n].length<=r||(quickselect(c[n],r,1,c[n].length-1,compareAreas),c[n]=c[n].slice(0,r));return c};\n},{\"./util\":223,\"quickselect\":31}],206:[function(_dereq_,module,exports){\n\"use strict\";var config={API_URL:\"https://api.mapbox.com\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null};module.exports=config;\n},{}],207:[function(_dereq_,module,exports){\n\"use strict\";var DictionaryCoder=function(r){var t=this;this._stringToNumber={},this._numberToString=[];for(var o=0;o<r.length;o++){var i=r[o];t._stringToNumber[i]=o,t._numberToString[o]=i}};DictionaryCoder.prototype.encode=function(r){return this._stringToNumber[r]},DictionaryCoder.prototype.decode=function(r){return this._numberToString[r]},module.exports=DictionaryCoder;\n},{}],208:[function(_dereq_,module,exports){\n\"use strict\";var util=_dereq_(\"./util\"),Actor=_dereq_(\"./actor\"),Dispatcher=function(t,r){var o=this;this.workerPool=t,this.actors=[],this.currentActor=0,this.id=util.uniqueId();for(var i=this.workerPool.acquire(this.id),e=0;e<i.length;e++){var s=i[e],c=new Actor(s,r,o.id);c.name=\"Worker \"+e,o.actors.push(c)}};Dispatcher.prototype.broadcast=function(t,r,o){o=o||function(){},util.asyncAll(this.actors,function(o,i){o.send(t,r,i)},o)},Dispatcher.prototype.send=function(t,r,o,i,e){return(\"number\"!=typeof i||isNaN(i))&&(i=this.currentActor=(this.currentActor+1)%this.actors.length),this.actors[i].send(t,r,o,e),i},Dispatcher.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},module.exports=Dispatcher;\n},{\"./actor\":200,\"./util\":223}],209:[function(_dereq_,module,exports){\n\"use strict\";function testProp(e){for(var t=0;t<e.length;t++)if(e[t]in docStyle)return e[t];return e[0]}var Point=_dereq_(\"@mapbox/point-geometry\"),window=_dereq_(\"./window\");exports.create=function(e,t,o){var n=window.document.createElement(e);return t&&(n.className=t),o&&o.appendChild(n),n};var docStyle=window.document.documentElement.style,selectProp=testProp([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]),userSelect;exports.disableDrag=function(){selectProp&&(userSelect=docStyle[selectProp],docStyle[selectProp]=\"none\")},exports.enableDrag=function(){selectProp&&(docStyle[selectProp]=userSelect)};var transformProp=testProp([\"transform\",\"WebkitTransform\"]);exports.setTransform=function(e,t){e.style[transformProp]=t};var suppressClick=function(e){e.preventDefault(),e.stopPropagation(),window.removeEventListener(\"click\",suppressClick,!0)};exports.suppressClick=function(){window.addEventListener(\"click\",suppressClick,!0),window.setTimeout(function(){window.removeEventListener(\"click\",suppressClick,!0)},0)},exports.mousePos=function(e,t){var o=e.getBoundingClientRect();return t=t.touches?t.touches[0]:t,new Point(t.clientX-o.left-e.clientLeft,t.clientY-o.top-e.clientTop)},exports.touchPos=function(e,t){for(var o=e.getBoundingClientRect(),n=[],r=\"touchend\"===t.type?t.changedTouches:t.touches,s=0;s<r.length;s++)n.push(new Point(r[s].clientX-o.left-e.clientLeft,r[s].clientY-o.top-e.clientTop));return n},exports.remove=function(e){e.parentNode&&e.parentNode.removeChild(e)};\n},{\"./window\":204,\"@mapbox/point-geometry\":2}],210:[function(_dereq_,module,exports){\n\"use strict\";function _addEventListener(e,t,n){n[e]=n[e]||[],n[e].push(t)}function _removeEventListener(e,t,n){if(n&&n[e]){var i=n[e].indexOf(t);-1!==i&&n[e].splice(i,1)}}var util=_dereq_(\"./util\"),Evented=function(){};Evented.prototype.on=function(e,t){return this._listeners=this._listeners||{},_addEventListener(e,t,this._listeners),this},Evented.prototype.off=function(e,t){return _removeEventListener(e,t,this._listeners),_removeEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.once=function(e,t){return this._oneTimeListeners=this._oneTimeListeners||{},_addEventListener(e,t,this._oneTimeListeners),this},Evented.prototype.fire=function(e,t){var n=this;if(this.listens(e)){t=util.extend({},t,{type:e,target:this});for(var i=this._listeners&&this._listeners[e]?this._listeners[e].slice():[],s=0;s<i.length;s++)i[s].call(n,t);for(var r=this._oneTimeListeners&&this._oneTimeListeners[e]?this._oneTimeListeners[e].slice():[],o=0;o<r.length;o++)r[o].call(n,t),_removeEventListener(e,r[o],n._oneTimeListeners);this._eventedParent&&this._eventedParent.fire(e,util.extend({},t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData))}else util.endsWith(e,\"error\")&&console.error(t&&t.error||t||\"Empty error event\");return this},Evented.prototype.listens=function(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)},Evented.prototype.setEventedParent=function(e,t){return this._eventedParent=e,this._eventedParentData=t,this},module.exports=Evented;\n},{\"./util\":223}],211:[function(_dereq_,module,exports){\n\"use strict\";function compareMax(e,t){return t.max-e.max}function Cell(e,t,n,o){this.p=new Point(e,t),this.h=n,this.d=pointToPolygonDist(this.p,o),this.max=this.d+this.h*Math.SQRT2}function pointToPolygonDist(e,t){for(var n=!1,o=1/0,r=0;r<t.length;r++)for(var i=t[r],l=0,u=i.length,a=u-1;l<u;a=l++){var s=i[l],p=i[a];s.y>e.y!=p.y>e.y&&e.x<(p.x-s.x)*(e.y-s.y)/(p.y-s.y)+s.x&&(n=!n),o=Math.min(o,distToSegmentSquared(e,s,p))}return(n?1:-1)*Math.sqrt(o)}function getCentroidCell(e){for(var t=0,n=0,o=0,r=e[0],i=0,l=r.length,u=l-1;i<l;u=i++){var a=r[i],s=r[u],p=a.x*s.y-s.x*a.y;n+=(a.x+s.x)*p,o+=(a.y+s.y)*p,t+=3*p}return new Cell(n/t,o/t,0,e)}var Queue=_dereq_(\"tinyqueue\"),Point=_dereq_(\"@mapbox/point-geometry\"),distToSegmentSquared=_dereq_(\"./intersection_tests\").distToSegmentSquared;module.exports=function(e,t,n){void 0===t&&(t=1),void 0===n&&(n=!1);for(var o=1/0,r=1/0,i=-1/0,l=-1/0,u=e[0],a=0;a<u.length;a++){var s=u[a];(!a||s.x<o)&&(o=s.x),(!a||s.y<r)&&(r=s.y),(!a||s.x>i)&&(i=s.x),(!a||s.y>l)&&(l=s.y)}var p=i-o,h=l-r,d=Math.min(p,h),x=d/2,y=new Queue(null,compareMax);if(0===d)return new Point(o,r);for(var g=o;g<i;g+=d)for(var f=r;f<l;f+=d)y.push(new Cell(g+x,f+x,x,e));for(var m=getCentroidCell(e),v=y.length;y.length;){var c=y.pop();(c.d>m.d||!m.d)&&(m=c,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*c.d)/1e4,v)),c.max-m.d<=t||(x=c.h/2,y.push(new Cell(c.p.x-x,c.p.y-x,x,e)),y.push(new Cell(c.p.x+x,c.p.y-x,x,e)),y.push(new Cell(c.p.x-x,c.p.y+x,x,e)),y.push(new Cell(c.p.x+x,c.p.y+x,x,e)),v+=4)}return n&&(console.log(\"num probes: \"+v),console.log(\"best distance: \"+m.d)),m.p};\n},{\"./intersection_tests\":214,\"@mapbox/point-geometry\":2,\"tinyqueue\":33}],212:[function(_dereq_,module,exports){\n\"use strict\";var WorkerPool=_dereq_(\"./worker_pool\"),globalWorkerPool;module.exports=function(){return globalWorkerPool||(globalWorkerPool=new WorkerPool),globalWorkerPool};\n},{\"./worker_pool\":226}],213:[function(_dereq_,module,exports){\n\"use strict\";function createImage(e,t,i){var h=e.width,a=e.height;if(i){if(i.length!==h*a*t)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(h*a*t);return{width:h,height:a,data:i}}function resizeImage(e,t,i){var h=t.width,a=t.height;if(h===e.width&&a===e.height)return e;var r=createImage({width:h,height:a},i);copyImage(e,r,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,h),height:Math.min(e.height,a)},i),e.width=h,e.height=a,e.data=r.data}function copyImage(e,t,i,h,a,r){if(0===a.width||0===a.height)return t;if(a.width>e.width||a.height>e.height||i.x>e.width-a.width||i.y>e.height-a.height)throw new RangeError(\"out of range source coordinates for image copy\");if(a.width>t.width||a.height>t.height||h.x>t.width-a.width||h.y>t.height-a.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var g=e.data,n=t.data,o=0;o<a.height;o++)for(var m=((i.y+o)*e.width+i.x)*r,c=((h.y+o)*t.width+h.x)*r,d=0;d<a.width*r;d++)n[c+d]=g[m+d];return t}var AlphaImage=function(){};AlphaImage.create=function(e,t){return createImage(e,1,t)},AlphaImage.resize=function(e,t){resizeImage(e,t,1)},AlphaImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,1)};var RGBAImage=function(){};RGBAImage.create=function(e,t){return createImage(e,4,t)},RGBAImage.resize=function(e,t){resizeImage(e,t,4)},RGBAImage.copy=function(e,t,i,h,a){copyImage(e,t,i,h,a,4)},module.exports={AlphaImage:AlphaImage,RGBAImage:RGBAImage};\n},{}],214:[function(_dereq_,module,exports){\n\"use strict\";function polygonIntersectsPolygon(n,t){for(var e=0;e<n.length;e++)if(polygonContainsPoint(t,n[e]))return!0;for(var r=0;r<t.length;r++)if(polygonContainsPoint(n,t[r]))return!0;return!!lineIntersectsLine(n,t)}function multiPolygonIntersectsBufferedMultiPoint(n,t,e){for(var r=0;r<n.length;r++)for(var o=n[r],i=0;i<t.length;i++)for(var l=t[i],u=0;u<l.length;u++){var s=l[u];if(polygonContainsPoint(o,s))return!0;if(pointIntersectsBufferedLine(s,o,e))return!0}return!1}function multiPolygonIntersectsMultiPolygon(n,t){if(1===n.length&&1===n[0].length)return multiPolygonContainsPoint(t,n[0][0]);for(var e=0;e<t.length;e++)for(var r=t[e],o=0;o<r.length;o++)if(multiPolygonContainsPoint(n,r[o]))return!0;for(var i=0;i<n.length;i++){for(var l=n[i],u=0;u<l.length;u++)if(multiPolygonContainsPoint(t,l[u]))return!0;for(var s=0;s<t.length;s++)if(lineIntersectsLine(l,t[s]))return!0}return!1}function multiPolygonIntersectsBufferedMultiLine(n,t,e){for(var r=0;r<t.length;r++)for(var o=t[r],i=0;i<n.length;i++){var l=n[i];if(l.length>=3)for(var u=0;u<o.length;u++)if(polygonContainsPoint(l,o[u]))return!0;if(lineIntersectsBufferedLine(l,o,e))return!0}return!1}function lineIntersectsBufferedLine(n,t,e){if(n.length>1){if(lineIntersectsLine(n,t))return!0;for(var r=0;r<t.length;r++)if(pointIntersectsBufferedLine(t[r],n,e))return!0}for(var o=0;o<n.length;o++)if(pointIntersectsBufferedLine(n[o],t,e))return!0;return!1}function lineIntersectsLine(n,t){if(0===n.length||0===t.length)return!1;for(var e=0;e<n.length-1;e++)for(var r=n[e],o=n[e+1],i=0;i<t.length-1;i++){var l=t[i],u=t[i+1];if(lineSegmentIntersectsLineSegment(r,o,l,u))return!0}return!1}function lineSegmentIntersectsLineSegment(n,t,e,r){return isCounterClockwise(n,e,r)!==isCounterClockwise(t,e,r)&&isCounterClockwise(n,t,e)!==isCounterClockwise(n,t,r)}function pointIntersectsBufferedLine(n,t,e){var r=e*e;if(1===t.length)return n.distSqr(t[0])<r;for(var o=1;o<t.length;o++){if(distToSegmentSquared(n,t[o-1],t[o])<r)return!0}return!1}function distToSegmentSquared(n,t,e){var r=t.distSqr(e);if(0===r)return n.distSqr(t);var o=((n.x-t.x)*(e.x-t.x)+(n.y-t.y)*(e.y-t.y))/r;return o<0?n.distSqr(t):o>1?n.distSqr(e):n.distSqr(e.sub(t)._mult(o)._add(t))}function multiPolygonContainsPoint(n,t){for(var e,r,o,i=!1,l=0;l<n.length;l++){e=n[l];for(var u=0,s=e.length-1;u<e.length;s=u++)r=e[u],o=e[s],r.y>t.y!=o.y>t.y&&t.x<(o.x-r.x)*(t.y-r.y)/(o.y-r.y)+r.x&&(i=!i)}return i}function polygonContainsPoint(n,t){for(var e=!1,r=0,o=n.length-1;r<n.length;o=r++){var i=n[r],l=n[o];i.y>t.y!=l.y>t.y&&t.x<(l.x-i.x)*(t.y-i.y)/(l.y-i.y)+i.x&&(e=!e)}return e}var ref=_dereq_(\"./util\"),isCounterClockwise=ref.isCounterClockwise;module.exports={multiPolygonIntersectsBufferedMultiPoint:multiPolygonIntersectsBufferedMultiPoint,multiPolygonIntersectsMultiPolygon:multiPolygonIntersectsMultiPolygon,multiPolygonIntersectsBufferedMultiLine:multiPolygonIntersectsBufferedMultiLine,polygonIntersectsPolygon:polygonIntersectsPolygon,distToSegmentSquared:distToSegmentSquared};\n},{\"./util\":223}],215:[function(_dereq_,module,exports){\n\"use strict\";var unicodeBlockLookup={\"Latin-1 Supplement\":function(n){return n>=128&&n<=255},Arabic:function(n){return n>=1536&&n<=1791},\"Arabic Supplement\":function(n){return n>=1872&&n<=1919},\"Arabic Extended-A\":function(n){return n>=2208&&n<=2303},\"Hangul Jamo\":function(n){return n>=4352&&n<=4607},\"Unified Canadian Aboriginal Syllabics\":function(n){return n>=5120&&n<=5759},\"Unified Canadian Aboriginal Syllabics Extended\":function(n){return n>=6320&&n<=6399},\"General Punctuation\":function(n){return n>=8192&&n<=8303},\"Letterlike Symbols\":function(n){return n>=8448&&n<=8527},\"Number Forms\":function(n){return n>=8528&&n<=8591},\"Miscellaneous Technical\":function(n){return n>=8960&&n<=9215},\"Control Pictures\":function(n){return n>=9216&&n<=9279},\"Optical Character Recognition\":function(n){return n>=9280&&n<=9311},\"Enclosed Alphanumerics\":function(n){return n>=9312&&n<=9471},\"Geometric Shapes\":function(n){return n>=9632&&n<=9727},\"Miscellaneous Symbols\":function(n){return n>=9728&&n<=9983},\"Miscellaneous Symbols and Arrows\":function(n){return n>=11008&&n<=11263},\"CJK Radicals Supplement\":function(n){return n>=11904&&n<=12031},\"Kangxi Radicals\":function(n){return n>=12032&&n<=12255},\"Ideographic Description Characters\":function(n){return n>=12272&&n<=12287},\"CJK Symbols and Punctuation\":function(n){return n>=12288&&n<=12351},Hiragana:function(n){return n>=12352&&n<=12447},Katakana:function(n){return n>=12448&&n<=12543},Bopomofo:function(n){return n>=12544&&n<=12591},\"Hangul Compatibility Jamo\":function(n){return n>=12592&&n<=12687},Kanbun:function(n){return n>=12688&&n<=12703},\"Bopomofo Extended\":function(n){return n>=12704&&n<=12735},\"CJK Strokes\":function(n){return n>=12736&&n<=12783},\"Katakana Phonetic Extensions\":function(n){return n>=12784&&n<=12799},\"Enclosed CJK Letters and Months\":function(n){return n>=12800&&n<=13055},\"CJK Compatibility\":function(n){return n>=13056&&n<=13311},\"CJK Unified Ideographs Extension A\":function(n){return n>=13312&&n<=19903},\"Yijing Hexagram Symbols\":function(n){return n>=19904&&n<=19967},\"CJK Unified Ideographs\":function(n){return n>=19968&&n<=40959},\"Yi Syllables\":function(n){return n>=40960&&n<=42127},\"Yi Radicals\":function(n){return n>=42128&&n<=42191},\"Hangul Jamo Extended-A\":function(n){return n>=43360&&n<=43391},\"Hangul Syllables\":function(n){return n>=44032&&n<=55215},\"Hangul Jamo Extended-B\":function(n){return n>=55216&&n<=55295},\"Private Use Area\":function(n){return n>=57344&&n<=63743},\"CJK Compatibility Ideographs\":function(n){return n>=63744&&n<=64255},\"Arabic Presentation Forms-A\":function(n){return n>=64336&&n<=65023},\"Vertical Forms\":function(n){return n>=65040&&n<=65055},\"CJK Compatibility Forms\":function(n){return n>=65072&&n<=65103},\"Small Form Variants\":function(n){return n>=65104&&n<=65135},\"Arabic Presentation Forms-B\":function(n){return n>=65136&&n<=65279},\"Halfwidth and Fullwidth Forms\":function(n){return n>=65280&&n<=65519}};module.exports=unicodeBlockLookup;\n},{}],216:[function(_dereq_,module,exports){\n\"use strict\";var LRUCache=function(t,e){this.max=t,this.onRemove=e,this.reset()};LRUCache.prototype.reset=function(){var t=this;for(var e in t.data)t.onRemove(t.data[e]);return this.data={},this.order=[],this},LRUCache.prototype.add=function(t,e){if(this.has(t))this.order.splice(this.order.indexOf(t),1),this.data[t]=e,this.order.push(t);else if(this.data[t]=e,this.order.push(t),this.order.length>this.max){var r=this.get(this.order[0]);r&&this.onRemove(r)}return this},LRUCache.prototype.has=function(t){return t in this.data},LRUCache.prototype.keys=function(){return this.order},LRUCache.prototype.get=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},LRUCache.prototype.getWithoutRemoving=function(t){return this.has(t)?this.data[t]:null},LRUCache.prototype.remove=function(t){if(!this.has(t))return this;var e=this.data[t];return delete this.data[t],this.onRemove(e),this.order.splice(this.order.indexOf(t),1),this},LRUCache.prototype.setMaxSize=function(t){var e=this;for(this.max=t;this.order.length>this.max;){var r=e.get(e.order[0]);r&&e.onRemove(r)}return this},module.exports=LRUCache;\n},{}],217:[function(_dereq_,module,exports){\n\"use strict\";function makeAPIURL(r,e){var t=parseUrl(config.API_URL);if(r.protocol=t.protocol,r.authority=t.authority,\"/\"!==t.path&&(r.path=\"\"+t.path+r.path),!config.REQUIRE_ACCESS_TOKEN)return formatUrl(r);if(!(e=e||config.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+help);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+help);return r.params.push(\"access_token=\"+e),formatUrl(r)}function isMapboxURL(r){return 0===r.indexOf(\"mapbox:\")}function replaceTempAccessToken(r){for(var e=0;e<r.length;e++)0===r[e].indexOf(\"access_token=tk.\")&&(r[e]=\"access_token=\"+(config.ACCESS_TOKEN||\"\"))}function parseUrl(r){var e=r.match(urlRe);if(!e)throw new Error(\"Unable to parse URL object\");return{protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function formatUrl(r){var e=r.params.length?\"?\"+r.params.join(\"&\"):\"\";return r.protocol+\"://\"+r.authority+r.path+e}var config=_dereq_(\"./config\"),browser=_dereq_(\"./browser\"),help=\"See https://www.mapbox.com/api-documentation/#access-tokens\";exports.isMapboxURL=isMapboxURL,exports.normalizeStyleURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/styles/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeGlyphsURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/fonts/v1\"+t.path,makeAPIURL(t,e)},exports.normalizeSourceURL=function(r,e){if(!isMapboxURL(r))return r;var t=parseUrl(r);return t.path=\"/v4/\"+t.authority+\".json\",t.params.push(\"secure\"),makeAPIURL(t,e)},exports.normalizeSpriteURL=function(r,e,t,a){var o=parseUrl(r);return isMapboxURL(r)?(o.path=\"/styles/v1\"+o.path+\"/sprite\"+e+t,makeAPIURL(o,a)):(o.path+=\"\"+e+t,formatUrl(o))};var imageExtensionRe=/(\\.(png|jpg)\\d*)(?=$)/;exports.normalizeTileURL=function(r,e,t){if(!e||!isMapboxURL(e))return r;var a=parseUrl(r),o=browser.devicePixelRatio>=2||512===t?\"@2x\":\"\",p=browser.supportsWebp?\".webp\":\"$1\";return a.path=a.path.replace(imageExtensionRe,\"\"+o+p),replaceTempAccessToken(a.params),formatUrl(a)};var urlRe=/^(\\w+):\\/\\/([^\\/?]*)(\\/[^?]+)?\\??(.+)?/;\n},{\"./browser\":202,\"./config\":206}],218:[function(_dereq_,module,exports){\n\"use strict\";var isChar=_dereq_(\"./is_char_in_unicode_block\");module.exports.allowsIdeographicBreaking=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsIdeographicBreaking(s.charCodeAt(0)))return!1}return!0},module.exports.allowsVerticalWritingMode=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(exports.charHasUprightVerticalOrientation(s.charCodeAt(0)))return!0}return!1},module.exports.allowsLetterSpacing=function(a){for(var i=0,r=a;i<r.length;i+=1){var s=r[i];if(!exports.charAllowsLetterSpacing(s.charCodeAt(0)))return!1}return!0},module.exports.charAllowsLetterSpacing=function(a){return!isChar.Arabic(a)&&(!isChar[\"Arabic Supplement\"](a)&&(!isChar[\"Arabic Extended-A\"](a)&&(!isChar[\"Arabic Presentation Forms-A\"](a)&&!isChar[\"Arabic Presentation Forms-B\"](a))))},module.exports.charAllowsIdeographicBreaking=function(a){return!(a<11904)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yi Radicals\"](a)||!!isChar[\"Yi Syllables\"](a))))))))))))))))))))},exports.charHasUprightVerticalOrientation=function(a){return 746===a||747===a||!(a<4352)&&(!!isChar[\"Bopomofo Extended\"](a)||(!!isChar.Bopomofo(a)||(!(!isChar[\"CJK Compatibility Forms\"](a)||a>=65097&&a<=65103)||(!!isChar[\"CJK Compatibility Ideographs\"](a)||(!!isChar[\"CJK Compatibility\"](a)||(!!isChar[\"CJK Radicals Supplement\"](a)||(!!isChar[\"CJK Strokes\"](a)||(!(!isChar[\"CJK Symbols and Punctuation\"](a)||a>=12296&&a<=12305||a>=12308&&a<=12319||12336===a)||(!!isChar[\"CJK Unified Ideographs Extension A\"](a)||(!!isChar[\"CJK Unified Ideographs\"](a)||(!!isChar[\"Enclosed CJK Letters and Months\"](a)||(!!isChar[\"Hangul Compatibility Jamo\"](a)||(!!isChar[\"Hangul Jamo Extended-A\"](a)||(!!isChar[\"Hangul Jamo Extended-B\"](a)||(!!isChar[\"Hangul Jamo\"](a)||(!!isChar[\"Hangul Syllables\"](a)||(!!isChar.Hiragana(a)||(!!isChar[\"Ideographic Description Characters\"](a)||(!!isChar.Kanbun(a)||(!!isChar[\"Kangxi Radicals\"](a)||(!!isChar[\"Katakana Phonetic Extensions\"](a)||(!(!isChar.Katakana(a)||12540===a)||(!(!isChar[\"Halfwidth and Fullwidth Forms\"](a)||65288===a||65289===a||65293===a||a>=65306&&a<=65310||65339===a||65341===a||65343===a||a>=65371&&a<=65503||65507===a||a>=65512&&a<=65519)||(!(!isChar[\"Small Form Variants\"](a)||a>=65112&&a<=65118||a>=65123&&a<=65126)||(!!isChar[\"Unified Canadian Aboriginal Syllabics\"](a)||(!!isChar[\"Unified Canadian Aboriginal Syllabics Extended\"](a)||(!!isChar[\"Vertical Forms\"](a)||(!!isChar[\"Yijing Hexagram Symbols\"](a)||(!!isChar[\"Yi Syllables\"](a)||!!isChar[\"Yi Radicals\"](a))))))))))))))))))))))))))))))},exports.charHasNeutralVerticalOrientation=function(a){return!(!isChar[\"Latin-1 Supplement\"](a)||167!==a&&169!==a&&174!==a&&177!==a&&188!==a&&189!==a&&190!==a&&215!==a&&247!==a)||(!(!isChar[\"General Punctuation\"](a)||8214!==a&&8224!==a&&8225!==a&&8240!==a&&8241!==a&&8251!==a&&8252!==a&&8258!==a&&8263!==a&&8264!==a&&8265!==a&&8273!==a)||(!!isChar[\"Letterlike Symbols\"](a)||(!!isChar[\"Number Forms\"](a)||(!(!isChar[\"Miscellaneous Technical\"](a)||!(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||9003===a||a>=9085&&a<=9114||a>=9150&&a<=9165||9167===a||a>=9169&&a<=9179||a>=9186&&a<=9215))||(!(!isChar[\"Control Pictures\"](a)||9251===a)||(!!isChar[\"Optical Character Recognition\"](a)||(!!isChar[\"Enclosed Alphanumerics\"](a)||(!!isChar[\"Geometric Shapes\"](a)||(!(!isChar[\"Miscellaneous Symbols\"](a)||a>=9754&&a<=9759)||(!(!isChar[\"Miscellaneous Symbols and Arrows\"](a)||!(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243))||(!!isChar[\"CJK Symbols and Punctuation\"](a)||(!!isChar.Katakana(a)||(!!isChar[\"Private Use Area\"](a)||(!!isChar[\"CJK Compatibility Forms\"](a)||(!!isChar[\"Small Form Variants\"](a)||(!!isChar[\"Halfwidth and Fullwidth Forms\"](a)||(8734===a||8756===a||8757===a||a>=9984&&a<=10087||a>=10102&&a<=10131||65532===a||65533===a)))))))))))))))))},exports.charHasRotatedVerticalOrientation=function(a){return!(exports.charHasUprightVerticalOrientation(a)||exports.charHasNeutralVerticalOrientation(a))};\n},{\"./is_char_in_unicode_block\":215}],219:[function(_dereq_,module,exports){\n\"use strict\";var LngLat=_dereq_(\"../geo/lng_lat\");module.exports=function(n,t,l){if(n=new LngLat(n.lng,n.lat),t){var a=new LngLat(n.lng-360,n.lat),i=new LngLat(n.lng+360,n.lat),o=l.locationPoint(n).distSqr(t);l.locationPoint(a).distSqr(t)<o?n=a:l.locationPoint(i).distSqr(t)<o&&(n=i)}for(;Math.abs(n.lng-l.center.lng)>180;){var e=l.locationPoint(n);if(e.x>=0&&e.y>=0&&e.x<=l.width&&e.y<=l.height)break;n.lng>l.center.lng?n.lng-=360:n.lng+=360}return n};\n},{\"../geo/lng_lat\":58}],220:[function(_dereq_,module,exports){\n\"use strict\";function createStructArrayType(t){var r=JSON.stringify(t);if(structArrayTypeCache[r])return structArrayTypeCache[r];var e=void 0===t.alignment?1:t.alignment,i=0,n=0,a=[\"Uint8\"],s=t.members.map(function(t){a.indexOf(t.type)<0&&a.push(t.type);var r=sizeOf(t.type),s=i=align(i,Math.max(e,r)),o=t.components||1;return n=Math.max(n,r),i+=r*o,{name:t.name,type:t.type,components:o,offset:s}}),o=align(i,Math.max(n,e)),p=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(Struct);p.prototype.alignment=e,p.prototype.size=o;for(var y=0,c=s;y<c.length;y+=1)for(var h=c[y],u=0;u<h.components;u++){var f=h.name;if(h.components>1&&(f+=u),f in p.prototype)throw new Error(f+\" is a reserved name and cannot be used as a member name.\");Object.defineProperty(p.prototype,f,createAccessors(h,u))}var m=function(t){function r(){t.apply(this,arguments)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(StructArray);return m.prototype.members=s,m.prototype.StructType=p,m.prototype.bytesPerElement=o,m.prototype.emplaceBack=createEmplaceBack(s,o),m.prototype._usedTypes=a,structArrayTypeCache[r]=m,m}function align(t,r){return Math.ceil(t/r)*r}function sizeOf(t){return viewTypes[t].BYTES_PER_ELEMENT}function getArrayViewName(t){return t.toLowerCase()}function createEmplaceBack(t,r){for(var e=[],i=[],n=\"var i = this.length;\\nthis.resize(this.length + 1);\\n\",a=0,s=t;a<s.length;a+=1){var o=s[a],p=sizeOf(o.type);e.indexOf(p)<0&&(e.push(p),n+=\"var o\"+p.toFixed(0)+\" = i * \"+(r/p).toFixed(0)+\";\\n\");for(var y=0;y<o.components;y++){var c=\"v\"+i.length,h=\"o\"+p.toFixed(0)+\" + \"+(o.offset/p+y).toFixed(0);n+=\"this.\"+getArrayViewName(o.type)+\"[\"+h+\"] = \"+c+\";\\n\",i.push(c)}}return n+=\"return i;\",new Function(i.toString(),n)}function createMemberComponentString(t,r){var e=\"this._pos\"+sizeOf(t.type).toFixed(0),i=(t.offset/sizeOf(t.type)+r).toFixed(0),n=e+\" + \"+i;return\"this._structArray.\"+getArrayViewName(t.type)+\"[\"+n+\"]\"}function createAccessors(t,r){var e=createMemberComponentString(t,r);return{get:new Function(\"return \"+e+\";\"),set:new Function(\"x\",e+\" = x;\")}}module.exports=createStructArrayType;var viewTypes={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Struct=function(t,r){this._structArray=t,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},DEFAULT_CAPACITY=128,RESIZE_MULTIPLIER=5,StructArray=function(t){this.isTransferred=!1,void 0!==t?(this.arrayBuffer=t.arrayBuffer,this.length=t.length,this.capacity=this.arrayBuffer.byteLength/this.bytesPerElement,this._refreshViews()):(this.capacity=-1,this.resize(0))};StructArray.serialize=function(){return{members:this.prototype.members,alignment:this.prototype.StructType.prototype.alignment}},StructArray.prototype.serialize=function(t){return this._trim(),t&&(this.isTransferred=!0,t.push(this.arrayBuffer)),{length:this.length,arrayBuffer:this.arrayBuffer}},StructArray.prototype.get=function(t){return new this.StructType(this,t)},StructArray.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},StructArray.prototype.clear=function(){this.length=0},StructArray.prototype.resize=function(t){if(this.length=t,t>this.capacity){this.capacity=Math.max(t,Math.floor(this.capacity*RESIZE_MULTIPLIER),DEFAULT_CAPACITY),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}},StructArray.prototype._refreshViews=function(){for(var t=this,r=0,e=t._usedTypes;r<e.length;r+=1){var i=e[r];t[getArrayViewName(i)]=new viewTypes[i](t.arrayBuffer)}},StructArray.prototype.toArray=function(t,r){for(var e=this,i=[],n=t;n<r;n++){var a=e.get(n);i.push(a)}return i};var structArrayTypeCache={};\n},{}],221:[function(_dereq_,module,exports){\n\"use strict\";var browser=_dereq_(\"./browser\"),Throttler=function(t,o){this.frequency=t,this.throttledFunction=o,this.lastInvocation=0};Throttler.prototype.invoke=function(){var t=this;if(!this.pendingInvocation){var o=0===this.lastInvocation?0:this.lastInvocation+this.frequency-browser.now();o<=0?(this.lastInvocation=browser.now(),this.throttledFunction()):this.pendingInvocation=setTimeout(function(){t.pendingInvocation=void 0,t.lastInvocation=browser.now(),t.throttledFunction()},o)}},Throttler.prototype.stop=function(){this.pendingInvocation&&(clearTimeout(this.pendingInvocation),this.pendingInvocation=void 0)},module.exports=Throttler;\n},{\"./browser\":202}],222:[function(_dereq_,module,exports){\n\"use strict\";function resolveTokens(e,n){return n.replace(/{([^{}]+)}/g,function(n,r){return r in e?String(e[r]):\"\"})}module.exports=resolveTokens;\n},{}],223:[function(_dereq_,module,exports){\n\"use strict\";var UnitBezier=_dereq_(\"@mapbox/unitbezier\"),Coordinate=_dereq_(\"../geo/coordinate\"),Point=_dereq_(\"@mapbox/point-geometry\");exports.easeCubicInOut=function(r){if(r<=0)return 0;if(r>=1)return 1;var e=r*r,t=e*r;return 4*(r<.5?t:3*(r-e)+t-.75)},exports.bezier=function(r,e,t,n){var o=new UnitBezier(r,e,t,n);return function(r){return o.solve(r)}},exports.ease=exports.bezier(.25,.1,.25,1),exports.clamp=function(r,e,t){return Math.min(t,Math.max(e,r))},exports.wrap=function(r,e,t){var n=t-e,o=((r-e)%n+n)%n+e;return o===e?t:o},exports.asyncAll=function(r,e,t){if(!r.length)return t(null,[]);var n=r.length,o=new Array(r.length),a=null;r.forEach(function(r,i){e(r,function(r,e){r&&(a=r),o[i]=e,0==--n&&t(a,o)})})},exports.values=function(r){var e=[];for(var t in r)e.push(r[t]);return e},exports.keysDifference=function(r,e){var t=[];for(var n in r)n in e||t.push(n);return t},exports.extend=function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];for(var n=0,o=e;n<o.length;n+=1){var a=o[n];for(var i in a)r[i]=a[i]}return r},exports.pick=function(r,e){for(var t={},n=0;n<e.length;n++){var o=e[n];o in r&&(t[o]=r[o])}return t};var id=1;exports.uniqueId=function(){return id++},exports.bindAll=function(r,e){r.forEach(function(r){e[r]&&(e[r]=e[r].bind(e))})},exports.getCoordinatesCenter=function(r){for(var e=1/0,t=1/0,n=-1/0,o=-1/0,a=0;a<r.length;a++)e=Math.min(e,r[a].column),t=Math.min(t,r[a].row),n=Math.max(n,r[a].column),o=Math.max(o,r[a].row);var i=n-e,u=o-t,s=Math.max(i,u),c=Math.max(0,Math.floor(-Math.log(s)/Math.LN2));return new Coordinate((e+n)/2,(t+o)/2,0).zoomTo(c)},exports.endsWith=function(r,e){return-1!==r.indexOf(e,r.length-e.length)},exports.mapObject=function(r,e,t){var n=this,o={};for(var a in r)o[a]=e.call(t||n,r[a],a,r);return o},exports.filterObject=function(r,e,t){var n=this,o={};for(var a in r)e.call(t||n,r[a],a,r)&&(o[a]=r[a]);return o},exports.deepEqual=function(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(var t=0;t<r.length;t++)if(!exports.deepEqual(r[t],e[t]))return!1;return!0}if(\"object\"==typeof r&&null!==r&&null!==e){if(\"object\"!=typeof e)return!1;if(Object.keys(r).length!==Object.keys(e).length)return!1;for(var n in r)if(!exports.deepEqual(r[n],e[n]))return!1;return!0}return r===e},exports.clone=function(r){return Array.isArray(r)?r.map(exports.clone):\"object\"==typeof r&&r?exports.mapObject(r,exports.clone):r},exports.arraysIntersect=function(r,e){for(var t=0;t<r.length;t++)if(e.indexOf(r[t])>=0)return!0;return!1};var warnOnceHistory={};exports.warnOnce=function(r){warnOnceHistory[r]||(\"undefined\"!=typeof console&&console.warn(r),warnOnceHistory[r]=!0)},exports.isCounterClockwise=function(r,e,t){return(t.y-r.y)*(e.x-r.x)>(e.y-r.y)*(t.x-r.x)},exports.calculateSignedArea=function(r){for(var e=0,t=0,n=r.length,o=n-1,a=void 0,i=void 0;t<n;o=t++)a=r[t],i=r[o],e+=(i.x-a.x)*(a.y+i.y);return e},exports.isClosedPolygon=function(r){if(r.length<4)return!1;var e=r[0],t=r[r.length-1];return!(Math.abs(e.x-t.x)>0||Math.abs(e.y-t.y)>0)&&Math.abs(exports.calculateSignedArea(r))>.01},exports.sphericalToCartesian=function(r){var e=r[0],t=r[1],n=r[2];return t+=90,t*=Math.PI/180,n*=Math.PI/180,[e*Math.cos(t)*Math.sin(n),e*Math.sin(t)*Math.sin(n),e*Math.cos(n)]},exports.parseCacheControl=function(r){var e=/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,t={};if(r.replace(e,function(r,e,n,o){var a=n||o;return t[e]=!a||a.toLowerCase(),\"\"}),t[\"max-age\"]){var n=parseInt(t[\"max-age\"],10);isNaN(n)?delete t[\"max-age\"]:t[\"max-age\"]=n}return t};\n},{\"../geo/coordinate\":57,\"@mapbox/point-geometry\":2,\"@mapbox/unitbezier\":5}],224:[function(_dereq_,module,exports){\n\"use strict\";var Feature=function(e,t,r,o){this.type=\"Feature\",this._vectorTileFeature=e,e._z=t,e._x=r,e._y=o,this.properties=e.properties,null!=e.id&&(this.id=e.id)},prototypeAccessors={geometry:{}};prototypeAccessors.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},prototypeAccessors.geometry.set=function(e){this._geometry=e},Feature.prototype.toJSON=function(){var e=this,t={geometry:this.geometry};for(var r in e)\"_geometry\"!==r&&\"_vectorTileFeature\"!==r&&(t[r]=e[r]);return t},Object.defineProperties(Feature.prototype,prototypeAccessors),module.exports=Feature;\n},{}],225:[function(_dereq_,module,exports){\n\"use strict\";var scriptDetection=_dereq_(\"./script_detection\");module.exports=function(t){for(var o=\"\",e=0;e<t.length;e++){var r=t.charCodeAt(e+1)||null,l=t.charCodeAt(e-1)||null;(!r||!scriptDetection.charHasRotatedVerticalOrientation(r)||module.exports.lookup[t[e+1]])&&(!l||!scriptDetection.charHasRotatedVerticalOrientation(l)||module.exports.lookup[t[e-1]])&&module.exports.lookup[t[e]]?o+=module.exports.lookup[t[e]]:o+=t[e]}return o},module.exports.lookup={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};\n},{\"./script_detection\":218}],226:[function(_dereq_,module,exports){\n\"use strict\";var WebWorker=_dereq_(\"./web_worker\"),WorkerPool=function(){this.active={}};WorkerPool.prototype.acquire=function(r){var e=this;if(!this.workers){var o=_dereq_(\"../\").workerCount;for(this.workers=[];this.workers.length<o;)e.workers.push(new WebWorker)}return this.active[r]=!0,this.workers.slice()},WorkerPool.prototype.release=function(r){delete this.active[r],0===Object.keys(this.active).length&&(this.workers.forEach(function(r){r.terminate()}),this.workers=null)},module.exports=WorkerPool;\n},{\"../\":63,\"./web_worker\":203}]},{},[63])(63)\n});\n\n\n//# sourceMappingURL=mapbox-gl.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/mapbox-gl/dist/mapbox-gl.js\n// module id = 1\n// module chunks = 0","import mapboxgl from 'mapbox-gl';\nimport Vue from 'vue';\nimport Geshem from './Geshem.vue';\n\nmapboxgl.accessToken = 'pk.eyJ1IjoieXV2YWRtIiwiYSI6ImNpcnMxbzBuaTAwZWdoa25oczlzZmkwbHcifQ.UHtLngbKm9O8945pJm23Nw';\n\nvar vm = new Vue({\n el: '#app',\n render: h => h(Geshem)\n});\n\n\n\n// WEBPACK FOOTER //\n// ./geshem.js","/*!\n * Vue.js v2.5.2\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\n/* */\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind, faster than native\n */\nfunction bind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n // record original fn length\n boundFn._length = fn.length;\n return boundFn\n}\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\nvar emptyObject = Object.freeze({});\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.functionalContext = undefined;\n this.functionalOptions = undefined;\n this.functionalScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode, deep) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.isCloned = true;\n if (deep && vnode.children) {\n cloned.children = cloneVNodes(vnode.children);\n }\n return cloned\n}\n\nfunction cloneVNodes (vnodes, deep) {\n var len = vnodes.length;\n var res = new Array(len);\n for (var i = 0; i < len; i++) {\n res[i] = cloneVNode(vnodes[i], deep);\n }\n return res\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);[\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n]\n.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\nvar observerState = {\n shouldConvert: true\n};\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n observerState.shouldConvert &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (hasOwn(target, key)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this) : parentVal\n )\n }\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn.call(this, parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n var lower = key.toLowerCase();\n if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + key\n );\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production' && inject) {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // handle boolean props\n if (isType(Boolean, prop.type)) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldConvert = observerState.shouldConvert;\n observerState.shouldConvert = true;\n observe(value);\n observerState.shouldConvert = prevShouldConvert;\n }\n if (process.env.NODE_ENV !== 'production') {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isType (type, fn) {\n if (!Array.isArray(fn)) {\n return getType(fn) === getType(type)\n }\n for (var i = 0, len = fn.length; i < len; i++) {\n if (getType(fn[i]) === getType(type)) {\n return true\n }\n }\n /* istanbul ignore next */\n return false\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if (inBrowser && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both micro and macro tasks.\n// In < 2.4 we used micro tasks everywhere, but there are some scenarios where\n// micro tasks have too high a priority and fires in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using macro tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use micro task by default, but expose a way to force macro task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) Task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine MicroTask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a Task instead of a MicroTask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' &&\n Proxy.toString().match(/native code/);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (arguments.length === 1) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n var defaultSlot = [];\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.functionalContext === context) &&\n data && data.slot != null\n ) {\n var name = child.data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children);\n } else {\n slot.push(child);\n }\n } else {\n defaultSlot.push(child);\n }\n }\n // ignore whitespace\n if (!defaultSlot.every(isWhitespace)) {\n slots.default = defaultSlot;\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return node.isComment || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n vm._watcher = new Watcher(vm, updateComponent, noop);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = (parentVnode.data && parentVnode.data.attrs) || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n observerState.shouldConvert = false;\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n props[key] = validateProp(key, vm.$options.props, propsData, vm);\n }\n observerState.shouldConvert = true;\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n if (listeners) {\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n }\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options\n) {\n this.vm = vm;\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nvar seenObjects = new _Set();\nfunction traverse (val) {\n seenObjects.clear();\n _traverse(val, seenObjects);\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n observerState.shouldConvert = isRoot;\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n observerState.shouldConvert = true;\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n keyOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(keyOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n observerState.shouldConvert = false;\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n observerState.shouldConvert = true;\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && provideKey in source._provided) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n return scopedSlotFn(props) || fallback\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes && process.env.NODE_ENV !== 'production') {\n slotNodes._rendered && warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n slotNodes._rendered = true;\n }\n return slotNodes || fallback\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInAlias,\n eventKeyName\n) {\n var keyCodes = config.keyCodes[key] || builtInAlias;\n if (keyCodes) {\n if (Array.isArray(keyCodes)) {\n return keyCodes.indexOf(eventKeyCode) === -1\n } else {\n return keyCodes !== eventKeyCode\n }\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n // static trees can be rendered once and cached on the contructor options\n // so every instance shares the same cached trees\n var renderFns = this.$options.staticRenderFns;\n var cached = renderFns.cached || (renderFns.cached = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree by doing a shallow clone.\n if (tree && !isInFor) {\n return Array.isArray(tree)\n ? cloneVNodes(tree)\n : cloneVNode(tree)\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = renderFns[index].call(this._renderProxy, null, this);\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm = Object.create(parent);\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode) {\n vnode.functionalScopeId = options._scopeId;\n vnode.functionalContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n vnode.functionalContext = contextVm;\n vnode.functionalOptions = options;\n if (data.slot) {\n (vnode.data || (vnode.data = {})).slot = data.slot;\n }\n }\n\n return vnode\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n// hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n } else if (vnode.data.keepAlive) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // merge component management hooks onto the placeholder node\n mergeHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var vnodeComponentOptions = vnode.componentOptions;\n var options = {\n _isComponent: true,\n parent: parent,\n propsData: vnodeComponentOptions.propsData,\n _componentTag: vnodeComponentOptions.tag,\n _parentVnode: vnode,\n _parentListeners: vnodeComponentOptions.listeners,\n _renderChildren: vnodeComponentOptions.children,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnodeComponentOptions.Ctor(options)\n}\n\nfunction mergeHooks (data) {\n if (!data.hook) {\n data.hook = {};\n }\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var fromParent = data.hook[key];\n var ours = componentVNodeHooks[key];\n data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n }\n}\n\nfunction mergeHook$1 (one, two) {\n return function (a, b, c, d) {\n one(a, b, c, d);\n two(a, b, c, d);\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (isDef(vnode)) {\n if (ns) { applyNS(vnode, ns); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (vm._isMounted) {\n // if the parent didn't update, the slot nodes will be the ones from\n // last render. They need to be cloned to ensure \"freshness\" for this render.\n for (var key in vm.$slots) {\n var slot = vm.$slots[key];\n if (slot._rendered) {\n vm.$slots[key] = cloneVNodes(slot, true /* deep */);\n }\n }\n }\n\n vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$1 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$1++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n opts.parent = options.parent;\n opts.propsData = options.propsData;\n opts._parentVnode = options._parentVnode;\n opts._parentListeners = options._parentListeners;\n opts._renderChildren = options._renderChildren;\n opts._componentTag = options._componentTag;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue$3 (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue$3)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue$3);\nstateMixin(Vue$3);\neventsMixin(Vue$3);\nlifecycleMixin(Vue$3);\nrenderMixin(Vue$3);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production') {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if (type === 'component' && config.isReservedTag(id)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + id\n );\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && cached$$1 !== current) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n watch: {\n include: function include (val) {\n pruneCache(this, function (name) { return matches(val, name); });\n },\n exclude: function exclude (val) {\n pruneCache(this, function (name) { return !matches(val, name); });\n }\n },\n\n render: function render () {\n var vnode = getFirstComponentChild(this.$slots.default);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n if (name && (\n (this.include && !matches(this.include, name)) ||\n (this.exclude && matches(this.exclude, name))\n )) {\n return vnode\n }\n\n var ref = this;\n var cache = ref.cache;\n var keys = ref.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue$3);\n\nObject.defineProperty(Vue$3.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue$3.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\nVue$3.version = '2.5.2';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setAttribute (node, key, val) {\n node.setAttribute(key, val);\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetAttribute: setAttribute\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!key) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n var inPre = 0;\n function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n inPre++;\n }\n if (\n !inPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(tag)\n : ignore === tag\n })\n ) &&\n config.isUnknownElement(tag)\n ) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n inPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.functionalScopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.functionalContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n } else {\n vnodeToMove = oldCh[idxInOld];\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !vnodeToMove) {\n warn(\n 'It seems there are duplicate keys that is causing an update error. ' +\n 'Make sure each v-for item has a unique key.'\n );\n }\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var bailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue) {\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.elm = elm;\n vnode.isAsyncPlaceholder = true;\n return true\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode)) {\n return false\n }\n }\n vnode.elm = elm;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !bailed\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !bailed\n ) {\n bailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n for (var key in data) {\n if (!isRenderedModule(key)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode) {\n if (isDef(vnode.tag)) {\n return (\n vnode.tag.indexOf('vue-component') === 0 ||\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n if (isDef(vnode.parent)) {\n // component root element replaced.\n // update parent placeholder node element, recursively\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE9 || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + \",\" + args)\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers && modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n // check capture modifier\n if (modifiers && modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers && modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers && modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n var events;\n if (modifiers && modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n var newHandler = { value: value, modifiers: modifiers };\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\n\n\nfunction parseModel (val) {\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + value + \"=$$a.concat([$$v]))}\" +\n \"else{$$i>-1&&(\" + value + \"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isDirty(elm, checkVal) ||\n isInputChanged(elm, checkVal)\n ))\n}\n\nfunction isDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isInputChanged (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers) && modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (isDef(modifiers) && modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n addTransitionClass(el, toClass);\n removeTransitionClass(el, startClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n addTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled && !userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar model$1 = {\n inserted: function inserted (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n if (!isAndroid) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n }\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (value === oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: model$1,\n show: show\n};\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$options._renderChildren;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue$3.config.mustUseProp = mustUseProp;\nVue$3.config.isReservedTag = isReservedTag;\nVue$3.config.isReservedAttr = isReservedAttr;\nVue$3.config.getTagNamespace = getTagNamespace;\nVue$3.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue$3.options.directives, platformDirectives);\nextend(Vue$3.options.components, platformComponents);\n\n// install platform patch function\nVue$3.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nVue$3.nextTick(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue$3);\n } else if (process.env.NODE_ENV !== 'production' && isChrome) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n config.productionTip !== false &&\n inBrowser && typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n}, 0);\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nfunction shouldDecode (content, encoded) {\n var div = document.createElement('div');\n div.innerHTML = \"<div a=\\\"\" + content + \"\\\"/>\";\n return div.innerHTML.indexOf(encoded) > 0\n}\n\n// #3663\n// IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? shouldDecode('\\n', '&#10;') : false;\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push(JSON.stringify(text.slice(lastIndex)));\n }\n return tokens.join('+')\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var expression = parseText(staticClass, options.delimiters);\n if (expression) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var expression = parseText(staticStyle, options.delimiters);\n if (expression) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\nvar comment = /^<!--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd));\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(lastTag, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!--([\\s\\S]*?)-->/g, '$1')\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n attrs[i] = {\n name: args[1],\n value: decodeAttr(\n value,\n options.shouldDecodeNewlines\n )\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /(.*?)\\s+(?:in|of)\\s+(.*)/;\nvar forIteratorRE = /\\((\\{[^}]*\\}|[^,]*),([^,]*)(?:,([^,]*))?\\)/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(he.decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function endPre (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldKeepComment: options.comments,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n // element-scope stuff\n processElement(element, options);\n }\n\n function checkRootConstraints (el) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n endPre(element);\n }\n // apply post-transforms\n for (var i$1 = 0; i$1 < postTransforms.length; i$1++) {\n postTransforms[i$1](element, options);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n endPre(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var expression;\n if (!inVPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: expression,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n },\n comment: function comment (text) {\n currentParent.children.push({\n type: 3,\n text: text,\n isComment: true\n });\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (element, options) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !element.attrsList.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production' && el.tag === 'template') {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) {\n process.env.NODE_ENV !== 'production' && warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n return\n }\n el.for = inMatch[2].trim();\n var alias = inMatch[1].trim();\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n el.alias = iteratorMatch[1].trim();\n el.iterator1 = iteratorMatch[2].trim();\n if (iteratorMatch[3]) {\n el.iterator2 = iteratorMatch[3].trim();\n }\n } else {\n el.alias = alias;\n }\n }\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n el.slotScope = slotScope;\n }\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (!el.slotScope) {\n addAttr(el, 'slot', slotTarget);\n }\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var expression = parseText(value, delimiters);\n if (expression) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\n/**\n * Expand input[v-model] with dyanmic type bindings into v-if-else chains\n * Turn this:\n * <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n * <input v-else :type=\"type\" v-model=\"data[type]\">\n */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (map['v-model'] && (map['v-bind:type'] || map[':type'])) {\n var typeBinding = getBindingAttr(el, 'type');\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nfunction addRawAttr (el, name, value) {\n el.attrsMap[name] = value;\n el.attrsList.push({ name: name, value: value });\n}\n\nvar model$2 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$2\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/;\n\n// keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n var handler = events[name];\n // #5330: warn click.right, since right clicks do not actually fire click events.\n if (process.env.NODE_ENV !== 'production' &&\n name === 'click' &&\n handler && handler.modifiers && handler.modifiers.right\n ) {\n warn(\n \"Use \\\"contextmenu\\\" instead of \\\"click.right\\\" since right clicks \" +\n \"do not actually fire \\\"click\\\" events.\"\n );\n }\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, handler)) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n return isMethodPath || isFunctionExpression\n ? handler.value\n : (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? handler.value + '($event)'\n : isFunctionExpression\n ? (\"(\" + (handler.value) + \")($event)\")\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var code = keyCodes[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(code)) + \",\" +\n \"$event.key)\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data = el.plain ? undefined : genData$2(el, state);\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, state.warn)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n slots,\n state\n) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n return genScopedSlot(key, slots[key], state)\n }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (\n key,\n el,\n state\n) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el, state)\n }\n var fn = \"function(\" + (String(el.slotScope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if\n ? ((el.if) + \"?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n return (\"{key:\" + key + \",fn:\" + fn + \"}\")\n}\n\nfunction genForScopedSlot (\n key,\n el,\n state\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el, state)) +\n '})'\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return (altGenElement || genElement)(el$1, state)\n }\n var normalizationType = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// check valid identifier for v-for\nvar identRE = /[A-Za-z_$][\\w$]*/;\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (ident, type, text, errors) {\n if (typeof ident === 'string' && !identRE.test(ident)) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim())\n );\n } else {\n errors.push(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\"\n );\n }\n }\n}\n\n/* */\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n optimize(ast, options);\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue$3.prototype.$mount;\nVue$3.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue$3.compile = compileToFunctions;\n\nexport default Vue$3;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue/dist/vue.esm.js\n// module id = 3\n// module chunks = 0","var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/timers-browserify/main.js\n// module id = 4\n// module chunks = 0","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/setimmediate/setImmediate.js\n// module id = 5\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 6\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-style-loader!css-loader!./node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7d220ade\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!./node_modules/vue-loader/lib/selector?type=styles&index=0!./Geshem.vue\")\n}\nvar normalizeComponent = require(\"!./node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nimport __vue_script__ from \"!!babel-loader!./node_modules/vue-loader/lib/selector?type=script&index=0!./Geshem.vue\"\n/* template */\nimport __vue_template__ from \"!!./node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7d220ade\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!./node_modules/vue-loader/lib/selector?type=template&index=0!./Geshem.vue\"\n/* template functional */\n var __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Geshem.vue\n// module id = 7\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7d220ade\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Geshem.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!./node_modules/vue-style-loader/lib/addStylesClient.js\")(\"1cc1a7d4\", content, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader!./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7d220ade\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Geshem.vue\n// module id = 8\n// module chunks = 0","exports = module.exports = require(\"./node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \"#geshem #datetime{position:absolute;margin:20px 0 0 20px;color:#fff;font-family:monospace}#geshem #datetime #date{font-size:1.4em}#geshem #datetime #time{font-size:1.8em}#geshem #slider{position:absolute;bottom:8vh;width:30vw;margin-left:35vw}@media only screen and (max-device-width:812px){#geshem #slider{width:80vw;margin-left:8vw}}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7d220ade\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Geshem.vue\n// module id = 9\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 10\n// module chunks = 0","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = require('./listToStyles')\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction) {\n isProduction = _isProduction\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[data-vue-ssr-id~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/addStylesClient.js\n// module id = 11\n// module chunks = 0","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/listToStyles.js\n// module id = 12\n// module chunks = 0","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/component-normalizer.js\n// module id = 13\n// module chunks = 0","<template>\n <div id=\"geshem\">\n <div id=\"datetime\">\n <div id=\"date\">{{ date }}</div>\n <div id=\"time\">{{ time }}</div>\n </div>\n <div id=\"slider\">\n <vue-slider ref=\"slider\" v-model=\"slider\" :min=1 :max=7 :height=20 :dot-size=45 :tooltip=false></vue-slider>\n </div>\n </div>\n</template>\n\n<script>\n import vueSlider from 'vue-slider-component';\n import mapboxgl from 'mapbox-gl';\n export default {\n name: 'geshem',\n components: {\n 'vue-slider': vueSlider\n },\n data: function () {\n return {\n imgs: window.imgs,\n res: 280,\n slider: 7,\n rasterCoords: {\n 140: [\n [33.35317413, 33.27232471],\n [36.32243686, 33.27232471],\n [36.32243686, 30.72293428],\n [33.35317413, 30.72293428]\n ],\n 280: [\n [31.93095218, 34.5156862],\n [37.86644267, 34.5156862],\n [37.86644267, 29.42911589],\n [31.93095218, 29.42911589]\n ]\n },\n map: new mapboxgl.Map({\n container: 'map',\n style: 'mapbox://styles/mapbox/dark-v9',\n container: 'map',\n maxZoom: 10,\n minZoom: 5,\n zoom: 6.3,\n center: [35, 31.9],\n hash: false\n })\n }\n },\n computed: {\n date: function () {\n var d = this.imgs[this.res][7-this.slider].substr(0, 8);\n return `${d.substr(6, 2)}-${d.substr(4, 2)}-${d.substr(0, 4)}`;\n },\n time: function () {\n var t = this.imgs[this.res][7-this.slider].substr(9, 6);\n return `${t.substr(0, 2)}:${t.substr(2, 2)}`;\n },\n curImg: function () {\n return 7 - this.slider;\n }\n },\n created: function () {\n var vm = this;\n this.map.on('style.load', function () {\n var i = 0;\n while (i < vm.imgs['140'].length) {\n vm.addRadarSource('140', i, vm.imgs['140'][i++])\n }\n var i = 0;\n while (i < vm.imgs['280'].length) {\n vm.addRadarSource('280', i, vm.imgs['280'][i++])\n }\n vm.addRadarLayer('280', 0)\n });\n this.map.on('zoom', function () {\n var zoomIn = vm.map.getZoom() > 7;\n var from = zoomIn ? '280' : '140';\n var to = zoomIn ? '140' : '280';\n if (to != vm.res) {\n console.log(`Zoom event from ${from} to ${to}`);\n vm.removeRadarLayer(from, vm.curImg);\n vm.addRadarLayer(to, vm.curImg);\n vm.res = to;\n }\n });\n },\n methods: {\n addRadarSource: function(res, i, url) {\n this.map.addSource(`radar-${res}-${i}`, {\n type: 'image',\n url: '/static/img/' + url,\n coordinates: this.rasterCoords[res]\n })\n },\n addRadarLayer: function(res, i) {\n this.map.addLayer({\n id: `radar-${res}-${i}`,\n source: `radar-${res}-${i}`,\n type: 'raster',\n paint: {\n 'raster-opacity': 0.85\n }\n })\n },\n removeRadarLayer: function(res, i) {\n this.map.removeLayer(`radar-${res}-${i}`)\n }\n },\n watch: {\n slider: function (to, from) {\n this.removeRadarLayer(this.res, 7-from);\n this.addRadarLayer(this.res, 7-to);\n }\n }\n }\n</script>\n\n<style lang=\"scss\">\n #geshem {\n #datetime {\n position: absolute;\n margin: 20px 0px 0px 20px;\n color: white;\n font-family: monospace;\n #date {\n font-size: 1.4em;\n }\n #time {\n font-size: 1.8em;\n }\n }\n #slider {\n position: absolute;\n bottom: 8vh;\n width: 30vw;\n margin-left: 35vw;\n @media only screen and (max-device-width: 812px) {\n width: 80vw;\n margin-left: 8vw;\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// Geshem.vue","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"vue-slider-component\",[],e):\"object\"==typeof exports?exports[\"vue-slider-component\"]=e():t[\"vue-slider-component\"]=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var r=i[s]={i:s,l:!1,exports:{}};return t[s].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=2)}([function(t,e,i){i(7);var s=i(5)(i(1),i(6),null,null);t.exports=s.exports},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={data:function(){return{flag:!1,size:0,currentValue:0,currentSlider:0,dotWidthVal:\"number\"==typeof this.dotWidth?this.dotWidth:this.dotSize,dotHeightVal:\"number\"==typeof this.dotHeight?this.dotHeight:this.dotSize}},props:{width:{type:[Number,String],default:\"auto\"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:\"always\"},eventType:{type:String,default:\"auto\"},direction:{type:String,default:\"horizontal\"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},value:{type:[String,Number,Array],default:0},piecewiseLabel:{type:Boolean,default:!1},sliderStyle:[Array,Object],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object],labelStyle:Object,labelActiveStyle:Object},computed:{flowDirection:function(){return\"vue-slider-\"+this.direction+(this.reverse?\"-reverse\":\"\")},tooltipDirection:function(){var t=this.tooltipDir||(\"vertical\"===this.direction?\"left\":\"top\");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return\"hover\"===this.tooltip&&this.flag?\"vue-slider-always\":this.tooltip?\"vue-slider-\"+this.tooltip:\"\"},tooltipClass:function(){return[\"vue-slider-tooltip-\"+this.tooltipDirection,\"vue-slider-tooltip\"]},isDisabled:function(){return\"none\"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?\"vue-slider-disabled\":\"\"},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),i=this.data.indexOf(t[1]);e>-1&&i>-1&&(this.currentValue=[e,i])}else{var s=this.data.indexOf(t);s>-1&&(this.currentValue=s)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(\"\"+this.interval).split(\".\")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(~~((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&console.error(\"[Vue-slider warn]: Prop[interval] is illegal, Please make sure that the interval can be divisible\"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},wrapStyles:function(){return\"vertical\"===this.direction?{height:\"number\"==typeof this.height?this.height+\"px\":this.height,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}:{width:\"number\"==typeof this.width?this.width+\"px\":this.width,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:\"100%\"}:{height:this.height+\"px\"}},dotStyles:function(){return\"vertical\"===this.direction?{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",left:-(this.dotWidthVal-this.width)/2+\"px\"}:{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",top:-(this.dotHeightVal-this.height)/2+\"px\"}},piecewiseDotStyle:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:this.width+\"px\"}:{width:this.height+\"px\",height:this.height+\"px\"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var i=\"vertical\"===this.direction?{bottom:this.gap*e-this.width/2+\"px\",left:0}:{left:this.gap*e-this.height/2+\"px\",top:0},s=this.reverse?this.total-e:e,r=this.data?this.data[s]:this.spacing*s+this.min;t.push({style:i,label:this.formatter?this.formatting(r):r,inRange:s>=this.indexRange[0]&&s<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},min:function(t){var e=this.limitValue(this.val);!1!==e&&this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})}},methods:{bindEvents:function(){document.addEventListener(\"touchmove\",this.moving,{passive:!1}),document.addEventListener(\"touchend\",this.moveEnd,{passive:!1}),document.addEventListener(\"mousemove\",this.moving),document.addEventListener(\"mouseup\",this.moveEnd),document.addEventListener(\"mouseleave\",this.moveEnd),window.addEventListener(\"resize\",this.refresh)},unbindEvents:function(){window.removeEventListener(\"resize\",this.refresh),document.removeEventListener(\"touchmove\",this.moving),document.removeEventListener(\"touchend\",this.moveEnd),document.removeEventListener(\"mousemove\",this.moving),document.removeEventListener(\"mouseup\",this.moveEnd),document.removeEventListener(\"mouseleave\",this.moveEnd)},formatting:function(t){return\"string\"==typeof this.formatter?this.formatter.replace(/\\{value\\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),\"vertical\"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},wrapClick:function(t){if(this.isDisabled||!this.clickable)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){if(this.isDisabled)return!1;this.isRange&&(this.currentSlider=t),this.flag=!0,this.$emit(\"drag-start\",this)},moving:function(t){if(!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){if(!this.flag)return!1;this.$emit(\"drag-end\",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,this.setPosition()},setValueOnPos:function(t,e){var i=this.isRange?this.limit[this.currentSlider]:this.limit,s=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var r=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(r,e)}else t<i[0]?(this.setTransform(i[0]),this.setCurrentValue(s[0]),1===this.currentSlider&&(this.currentSlider=0)):(this.setTransform(i[1]),this.setCurrentValue(s[1]),0===this.currentSlider&&(this.currentSlider=1))},isDiff:function(t,e){return Object.prototype.toString.call(t)!==Object.prototype.toString.call(e)||(Array.isArray(t)&&t.length===e.length?t.some(function(t,i){return t!==e[i]}):t!==e)},setCurrentValue:function(t,e){if(t<this.minimum||t>this.maximum)return!1;this.isRange?this.isDiff(this.currentValue[this.currentSlider],t)&&(this.currentValue.splice(this.currentSlider,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,i){var s=this;if(this.isDiff(this.val,t)){var r=this.limitValue(t);this.val=!1!==r?this.isRange?r.concat():r:this.isRange?t.concat():t,this.syncValue(e)}this.$nextTick(function(){return s.setPosition(i)})},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.currentSlider=0,this.setTransform(this.position[this.currentSlider]),this.currentSlider=1,this.setTransform(this.position[this.currentSlider])):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t){var e=(\"vertical\"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1),i=\"vertical\"===this.direction?\"translateY(\"+e+\"px)\":\"translateX(\"+e+\"px)\",s=(0===this.currentSlider?this.position[1]-t:t-this.position[0])+\"px\",r=(0===this.currentSlider?t:this.position[0])+\"px\";this.isRange?(this.slider[this.currentSlider].style.transform=i,this.slider[this.currentSlider].style.WebkitTransform=i,this.slider[this.currentSlider].style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=s,this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=r):(this.$refs.process.style.width=s,this.$refs.process.style[this.reverse?\"right\":\"left\"]=r)):(this.slider.style.transform=i,this.slider.style.WebkitTransform=i,this.slider.style.msTransform=i,\"vertical\"===this.direction?(this.$refs.process.style.height=t+\"px\",this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=0):(this.$refs.process.style.width=t+\"px\",this.$refs.process.style[this.reverse?\"right\":\"left\"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;e<this.slider.length;e++)this.slider[e].style.transitionDuration=t+\"s\",this.slider[e].style.WebkitTransitionDuration=t+\"s\";this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"}else this.slider.style.transitionDuration=t+\"s\",this.slider.style.WebkitTransitionDuration=t+\"s\",this.$refs.process.style.transitionDuration=t+\"s\",this.$refs.process.style.WebkitTransitionDuration=t+\"s\"},limitValue:function(t){var e=this;if(this.data)return t;var i=!1;return this.isRange?t=t.map(function(t){return t<e.min?(i=!0,e.min):t>e.max?(i=!0,e.max):t}):t>this.max?(i=!0,t=this.max):t<this.min&&(i=!0,t=this.min),i&&t},syncValue:function(t){t||this.$emit(\"callback\",this.val),this.$emit(\"input\",this.isRange?this.val.concat():this.val)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size=\"vertical\"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset=\"vertical\"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.setPosition())}},mounted:function(){var t=this;\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&this.$nextTick(function(){t.getStaticData(),t.setValue(t.value,!0,0),t.bindEvents()})},beforeDestroy:function(){this.unbindEvents()}}},function(t,e,i){\"use strict\";var s=i(0);t.exports=s},function(t,e,i){e=t.exports=i(4)(),e.push([t.i,'.vue-slider-component{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;-webkit-transition:all 0s;transition:all 0s;z-index:1}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;-webkit-box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);-webkit-transition:all 0s;transition:all 0s;will-change:transform;cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:\"\";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:\"\";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;-webkit-transition:all .3s;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',\"\"])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var i=this[e];i[2]?t.push(\"@media \"+i[2]+\"{\"+i[1]+\"}\"):t.push(i[1])}return t.join(\"\")},t.i=function(e,i){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var s={},r=0;r<this.length;r++){var n=this[r][0];\"number\"==typeof n&&(s[n]=!0)}for(r=0;r<e.length;r++){var o=e[r];\"number\"==typeof o[0]&&s[o[0]]||(i&&!o[2]?o[2]=i:i&&(o[2]=\"(\"+o[2]+\") and (\"+i+\")\"),t.push(o))}},t}},function(t,e){t.exports=function(t,e,i,s){var r,n=t=t||{},o=typeof t.default;\"object\"!==o&&\"function\"!==o||(r=t,n=t.default);var l=\"function\"==typeof n?n.options:n;if(e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns),i&&(l._scopeId=i),s){var a=Object.create(l.computed||null);Object.keys(s).forEach(function(t){var e=s[t];a[t]=function(){return e}}),l.computed=a}return{esModule:r,exports:n,options:l}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.show,expression:\"show\"}],ref:\"wrap\",class:[\"vue-slider-component\",t.flowDirection,t.disabledClass,{\"vue-slider-has-label\":t.piecewiseLabel}],style:t.wrapStyles,on:{click:t.wrapClick}},[i(\"div\",{ref:\"elem\",staticClass:\"vue-slider\",style:[t.elemStyles,t.bgStyle],attrs:{\"aria-hidden\":\"true\"}},[t.isRange?[i(\"div\",{ref:\"dot0\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[0]],on:{mousedown:function(e){t.moveStart(0)},touchstart:function(e){t.moveStart(0)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[0],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[0]},[t._v(t._s(t.formatter?t.formatting(t.val[0]):t.val[0]))])],{value:t.val[0],index:0})],2)]),t._v(\" \"),i(\"div\",{ref:\"dot1\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles[1]],on:{mousedown:function(e){t.moveStart(1)},touchstart:function(e){t.moveStart(1)}}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection[1],\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles[1]},[t._v(t._s(t.formatter?t.formatting(t.val[1]):t.val[1]))])],{value:t.val[1],index:1})],2)])]:[i(\"div\",{ref:\"dot\",class:[t.tooltipStatus,\"vue-slider-dot\"],style:[t.dotStyles,t.sliderStyles],on:{mousedown:t.moveStart,touchstart:t.moveStart}},[i(\"span\",{class:[\"vue-slider-tooltip-\"+t.tooltipDirection,\"vue-slider-tooltip-wrap\"]},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slider-tooltip\",style:t.tooltipStyles},[t._v(t._s(t.formatter?t.formatting(t.val):t.val))])],{value:t.val})],2)])],t._v(\" \"),i(\"ul\",{staticClass:\"vue-slider-piecewise\"},t._l(t.piecewiseDotWrap,function(e,s){return i(\"li\",{key:s,staticClass:\"vue-slider-piecewise-item\",style:[t.piecewiseDotStyle,e.style]},[t._t(\"piecewise\",[t.piecewise?i(\"span\",{staticClass:\"vue-slider-piecewise-dot\",style:[t.piecewiseStyle,e.inRange?t.piecewiseActiveStyle:null]}):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1}),t._v(\" \"),t._t(\"label\",[t.piecewiseLabel?i(\"span\",{staticClass:\"vue-slider-piecewise-label\",style:[t.labelStyle,e.inRange?t.labelActiveStyle:null]},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\"+t._s(e.label)+\"\\n\\t\\t\\t\\t\\t\")]):t._e()],{label:e.label,index:s,first:0===s,last:s===t.piecewiseDotWrap.length-1})],2)})),t._v(\" \"),i(\"div\",{ref:\"process\",staticClass:\"vue-slider-process\",style:t.processStyle})],2),t._v(\" \"),t.isRange||t.data?t._e():i(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.val,expression:\"val\"}],staticClass:\"vue-slider-sr-only\",attrs:{type:\"range\",min:t.min,max:t.max},domProps:{value:t.val},on:{__r:function(e){t.val=e.target.value}}})])},staticRenderFns:[]}},function(t,e,i){var s=i(3);\"string\"==typeof s&&(s=[[t.i,s,\"\"]]),s.locals&&(t.exports=s.locals);i(8)(\"743d98f5\",s,!0)},function(t,e,i){function s(t){for(var e=0;e<t.length;e++){var i=t[e],s=h[i.id];if(s){s.refs++;for(var r=0;r<s.parts.length;r++)s.parts[r](i.parts[r]);for(;r<i.parts.length;r++)s.parts.push(n(i.parts[r]));s.parts.length>i.parts.length&&(s.parts.length=i.parts.length)}else{for(var o=[],r=0;r<i.parts.length;r++)o.push(n(i.parts[r]));h[i.id]={id:i.id,refs:1,parts:o}}}}function r(){var t=document.createElement(\"style\");return t.type=\"text/css\",d.appendChild(t),t}function n(t){var e,i,s=document.querySelector('style[data-vue-ssr-id~=\"'+t.id+'\"]');if(s){if(f)return v;s.parentNode.removeChild(s)}if(m){var n=c++;s=p||(p=r()),e=o.bind(null,s,n,!1),i=o.bind(null,s,n,!0)}else s=r(),e=l.bind(null,s),i=function(){s.parentNode.removeChild(s)};return e(t),function(s){if(s){if(s.css===t.css&&s.media===t.media&&s.sourceMap===t.sourceMap)return;e(t=s)}else i()}}function o(t,e,i,s){var r=i?\"\":s.css;if(t.styleSheet)t.styleSheet.cssText=g(e,r);else{var n=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(n,o[e]):t.appendChild(n)}}function l(t,e){var i=e.css,s=e.media,r=e.sourceMap;if(s&&t.setAttribute(\"media\",s),r&&(i+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",i+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\"),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var a=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!a)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var u=i(9),h={},d=a&&(document.head||document.getElementsByTagName(\"head\")[0]),p=null,c=0,f=!1,v=function(){},m=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,i){f=i;var r=u(t,e);return s(r),function(e){for(var i=[],n=0;n<r.length;n++){var o=r[n],l=h[o.id];l.refs--,i.push(l)}e?(r=u(t,e),s(r)):r=[];for(var n=0;n<i.length;n++){var l=i[n];if(0===l.refs){for(var a=0;a<l.parts.length;a++)l.parts[a]();delete h[l.id]}}}};var g=function(){var t=[];return function(e,i){return t[e]=i,t.filter(Boolean).join(\"\\n\")}}()},function(t,e){t.exports=function(t,e){for(var i=[],s={},r=0;r<e.length;r++){var n=e[r],o=n[0],l=n[1],a=n[2],u=n[3],h={id:t+\":\"+r,css:l,media:a,sourceMap:u};s[o]?s[o].parts.push(h):i.push(s[o]={id:o,parts:[h]})}return i}}])});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-slider-component/dist/index.js\n// module id = 15\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"geshem\"}},[_c('div',{attrs:{\"id\":\"datetime\"}},[_c('div',{attrs:{\"id\":\"date\"}},[_vm._v(_vm._s(_vm.date))]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"time\"}},[_vm._v(_vm._s(_vm.time))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"slider\"}},[_c('vue-slider',{ref:\"slider\",attrs:{\"min\":1,\"max\":7,\"height\":20,\"dot-size\":45,\"tooltip\":false},model:{value:(_vm.slider),callback:function ($$v) {_vm.slider=$$v},expression:\"slider\"}})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7d220ade\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./Geshem.vue\n// module id = 16\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file